Reklama
Pokazuje wyniki od 1 do 14 z 14

Temat: [8.41][Talkactions&Actions] Black Skull, Addon Doll oraz Infinity Potion

  1. #1
    Avatar Visher
    Data rejestracji
    2009
    Położenie
    Stalowa Wola.
    Posty
    1,253
    Siła reputacji
    16

    Domyślny [8.41][Talkactions&Actions] Black Skull, Addon Doll oraz Infinity Potion

    Witam wszystkich.
    Jest to moja pierwsza publikacja skryptu (ale nie pierwszy skrypt), dlatego liczę na konstruktywną krytykę ;)
    Postanowiłem napisać dla Was trzy przedmioty znane z byłych serwerów Sasira (Elestium itd.) - Black Skull, Addon Doll oraz Infinity Potion.

    Bez zbędnego gadania przedstawiam skrypty:

    ______________
    Item: Addon Doll (ID: 9693)
    Funkcja: Po użyciu komendy "!buyaddon <nazwa addona>" (np. !addon Mage) dodaje nam wszystkie addony z tego setu, po czym usuwa lalkę

    W data/talkactions/talkations.xml dodaj:
    Kod:
    <talkaction words="!addon" event="script" value="addondoll.lua"/>
    W data/talkactions/scripts/addondoll.lua dodaj:
    Kod:
    function onSay(cid, words, param)
        local femaleOutfits = { ["citzen"]={136}, ["hunter"]={137}, ["mage"]={138}, ["knight"]={139}, ["noblewoman"]={140}, ["summoner"]={141}, ["warrior"]={142}, ["barbarian"]={147}, ["druid"]={148}, ["wizard"]={149}, ["oriental"]={150}, ["pirate"]={155}, ["assassin"]={156}, ["beggar"]={157}, ["shaman"]={158}, ["norsewoman"]={252}, ["nightmare"]={269}, ["jester"]={270}, ["brotherhood"]={270}, ["demonhunter"]={288}, ["yalaharian"]={324} }
        local maleOutfits = { ["citzen"]={128}, ["hunter"]={129}, ["mage"]={130}, ["knight"]={131}, ["nobleman"]={132},["summoner"]={133}, ["warrior"]={134}, ["barbarian"]={143}, ["druid"]={144}, ["wizard"]={145}, ["oriental"]={146}, ["pirate"]={151}, ["assassin"]={152}, ["beggar"]={153}, ["shaman"]={154}, ["norsewoman"]={251}, ["nightmare"]={268}, ["jester"]={273}, ["brotherhood"]={278}, ["demonhunter"]={289}, ["yalaharian"]={325} }
        local msg = {"Command requires GOOD param!", "You dont have Addon Doll!", "Bad param!", "Full Addon Set sucesfully added!"}
        local param = string.lower(param) 
    
        if(getPlayerItemCount(cid, 9693) > 0) then
            if(param ~= "" and maleOutfits[param] and femaleOutfits[param]) then
                doPlayerRemoveItem(cid, 9693, 1)
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[4])
                    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS)
                if(getPlayerSex(cid) == 0)then
                  doPlayerAddOutfit(cid, femaleOutfits[param][1], 3)
                else
                  doPlayerAddOutfit(cid, maleOutfits[param][1], 3)
                end
            else
              doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[1])
            end
        else
          doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[2])
        end
    end
    Item: Black Skull (ID: 9969)
    Funkcja: Usuwa wszystkie fragi, po czym zmienia się w zwykłego skulla.

    W data/actions/actions.xml dodaj:
    Kod:
    <action itemid="9969" event="script" value="tools/blackskull.lua"/>
    W data/actions/scripts/tools/blackskull.lua dodaj:
    Kod:
    function onUse(cid, item, fromPosition, itemEx, toPosition)
        if(getPlayerRedSkullTicks(cid) == 0) then
            doCreatureSay(cid, "You dont have any frags!", TALKTYPE_ORANGE_1)
        else
            doCreatureSay(cid, "Frags sucesfully removed.", TALKTYPE_ORANGE_1)
            doPlayerSetRedSkullTicks(cid, -getPlayerRedSkullTicks(cid))
            doTransformItem(item.uid, 2320)
        end
    end
    Item: Infinity Potion (ID: 7488)
    Funkcja: Jako jeden potion dodaje graczowi many w zależności od profesji i poziomu. Moje najlepsze dzieło jak do tej pory.

    W data/actions/actions.xml dodaj:
    Kod:
    <action itemid="7488" event="script" value="liquids/infinitypotion.lua" allowfaruse="1"/>
    W data/actions/scripts/liquids/infinitypotion.lua dodaj:
    Kod:
    local exhaust = createConditionObject(CONDITION_EXHAUST)
    setConditionParam(exhaust, CONDITION_PARAM_TICKS, 1000)
    function onUse(cid, item, fromPosition, itemEx, toPosition)
        local manaAdd = {
        ["Sorcerer"]={math.random(75, 125), math.random(180, 220), math.random(280, 320)}, ["Druid"]={math.random(75, 125), math.random(180, 220), math.random(280, 320)}, ["Paladin"]={math.random(75, 125), math.random(180, 220), math.random(180, 220)}, ["Knight"]={math.random(75, 125), math.random(75, 125), math.random(75, 125)}, 
        ["Master Sorcerer"]={math.random(75, 125), math.random(180, 220), math.random(280, 320)}, ["Elder Druid"]={math.random(75, 125), math.random(180, 220), math.random(280, 320)}, ["Royal Paladin"]={math.random(75, 125), math.random(180, 220), math.random(180, 220)}, ["Elite Knight"]={math.random(75, 125), math.random(75, 125), math.random(75, 125)}
        }
        if(isPlayer(itemEx.uid) == TRUE) then
            if(hasCondition(itemEx.uid, CONDITION_EXHAUST) == FALSE) then
                if(getPlayerLevel(itemEx.uid) < 50) then
                  doCreatureAddMana(itemEx.uid, manaAdd[getPlayerVocationName(itemEx.uid)][1])
                elseif(getPlayerLevel(itemEx.uid) >= 50) and (getPlayerLevel(itemEx.uid) < 80) then
                  doCreatureAddMana(itemEx.uid, manaAdd[getPlayerVocationName(itemEx.uid)][2])
                else
                  doCreatureAddMana(itemEx.uid, manaAdd[getPlayerVocationName(itemEx.uid)][3])
                end
                  doAddCondition(itemEx.uid, exhaust)
                  doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
                  doSendAnimatedText(getCreaturePosition(itemEx.uid), "Aaaah...", TEXTCOLOR_DARKYELLOW)
            else
              doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
              return TRUE
            end
        else
          return FALSE
        end
    end
    To by było na tyle ;)
    Jeżeli spodobały Ci się skrypty lub masz dla mnie jakąś radę - napisz. Będę naprawdę wdzięczny. (chyba, że chcesz od razu przelać kasę na konto ;pp)

    Skrypty są MOJEGO autorstwa. Nie zezwalam na umieszczanie na innych forach bez mojej zgody.
    Dodam jeszcze, że działanie tablic aso~ wyjaśnił mi Tairens, a Ersiu pomógł w ósmej linijce Addon Dolla ;) Pozdro chłopaki.

    edit:
    Bym zapomniał - skrypty pisane pod TFS 0.3.3, były testowane.


    Pozdrawiam, Visher
    Ostatnio zmieniony przez Visher : 13-06-2010, 20:13

  2. #2
    Avatar Sir Rahen
    Data rejestracji
    2006
    Posty
    27
    Siła reputacji
    0

    Domyślny

    Świetne skrypty.
    Grałem na Elestium i widziałem te bajery na własne oczy, i szczerze mówiąc gracze byli zadowoleni.

    Gratuluje ;]
    Be or not to be .. this is a question.

  3. Reklama
  4. #3
    Avatar StaraJaga
    Data rejestracji
    2009
    Położenie
    Bydgoszcz
    Wiek
    30
    Posty
    141
    Siła reputacji
    16

    Domyślny

    Bosko ! Super Extra ! :D ! Dzieki za te skrypty, wsumie potrzebuje tylko addon doll :] Super ! Leci + i tyle !

  5. #4
    Dzejkej!

    Domyślny

    Dzięki wielkie, szukałem od przeszło tyg. addon dolla i nie mogłem znaleść.

  6. #5

    Data rejestracji
    2006
    Posty
    27
    Siła reputacji
    0

    Domyślny

    W końcu udało Ci się coś dobrze napisać ;p
    Chociaż same skrypty wydają się być bzdurne, ale napisane są dobrze ;)

  7. #6
    junior108

    Domyślny

    Na 8.40 bedzie dzialac bez bledow?

  8. #7
    Avatar Visher
    Data rejestracji
    2009
    Położenie
    Stalowa Wola.
    Posty
    1,253
    Siła reputacji
    16

    Domyślny

    Cytuj junior108 napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Na 8.40 bedzie dzialac bez bledow?
    Zakładając, że używasz TFSa 0.3.2 - nie powinno być problemów.
    Skrypt pisałem na TFSie 0.3.3, jednak jak sami dobrze wiecie, elf co relase zmienia nazwy funkcji o tak - kij wie po co. A potem szukanie po skryptach "co jest źle".

    Pozdrawiam, Visher.

  9. #8
    Duda1992

    Domyślny

    Wiem, że to tak nie ładnie.. ale sam chciałeś konstruktywną krytykę ^^


    no więc
    skrypt numer 1 (addon doll)
    Kod:
                if(getPlayerSex(cid) == 0)then
                  doPlayerAddOutfit(cid, femaleOutfits[param][1], 3)
                else
                  doPlayerAddOutfit(cid, maleOutfits[param][1], 3)
                end
    radził bym zamienić to na

    Kod:
     doPlayerAddOutfit(cid, femaleOutfits[param][1], 3)
                  doPlayerAddOutfit(cid, maleOutfits[param][1], 3)
    a dlaczego? bo jak zmienisz płeć.. nie będziesz miał owego addona i będziesz musiał "sms'a" na dolla wysyłać jeszcze raz :P
    a to jest zdzierstwo.. wysyłać 2 smsy ; ] jeden na zmianę płci a drugi na dolla.

    Pozdrawiam,
    Duda1992

  10. #9

    Data rejestracji
    2006
    Położenie
    Zambrów
    Posty
    59
    Siła reputacji
    18

    Domyślny

    Też mam małe powątpiewania co do pierwszego skryptu, który wyszedł ci chyba najgorzej. Oczywiście, całe 3 sztuki są napisane dobrze i są nawet ciekawe, ale moje zastrzeżenie:

    Kod:
    function onSay(cid, words, param)
        local femaleOutfits = { ["citzen"]={136}, ["hunter"]={137}, ["mage"]={138}, ["knight"]={139}, ["noblewoman"]={140}, ["summoner"]={141}, ["warrior"]={142}, ["barbarian"]={147}, ["druid"]={148}, ["wizard"]={149}, ["oriental"]={150}, ["pirate"]={155}, ["assassin"]={156}, ["beggar"]={157}, ["shaman"]={158}, ["norsewoman"]={252}, ["nightmare"]={269}, ["jester"]={270}, ["brotherhood"]={270}, ["demonhunter"]={288}, ["yalaharian"]={324} }
        local maleOutfits = { ["citzen"]={128}, ["hunter"]={129}, ["mage"]={130}, ["knight"]={131}, ["nobleman"]={132},["summoner"]={133}, ["warrior"]={134}, ["barbarian"]={143}, ["druid"]={144}, ["wizard"]={145}, ["oriental"]={146}, ["pirate"]={151}, ["assassin"]={152}, ["beggar"]={153}, ["shaman"]={154}, ["norsewoman"]={251}, ["nightmare"]={268}, ["jester"]={273}, ["brotherhood"]={278}, ["demonhunter"]={289}, ["yalaharian"]={325} }
        local msg = {"Command requires GOOD param!", "You dont have Addon Doll!", "Bad param!", "Full Addon Set sucesfully added!"}
        local param = string.lower(param) 
    
        if(getPlayerItemCount(cid, 9693) > 0) then
            if(param ~= "" and maleOutfits[param] and femaleOutfits[param]) then
                doPlayerRemoveItem(cid, 9693, 1)
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[4])
                    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS)
                if(getPlayerSex(cid) == 0)then
                  doPlayerAddOutfit(cid, femaleOutfits[param][1], 3)
                else
                  doPlayerAddOutfit(cid, maleOutfits[param][1], 3)
                end
            else
              doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[1])
            end
        else
          doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[2])
        end
    end
    Po co dałeś tutaj "Bad param!" do wiadomości, skoro go nigdzie nie używasz? Jeśli to dałeś, więc chyba miałeś zamiar użycia, a jeśli nie - wywal i zmień "msg[4]" na "msg[3]". Biorąc pod uwagę, że gracz może zmieniać sobie płeć - niepoprawne użycie(po co rozbite?) tablic.

    Leatsis.

  11. #10
    Avatar Visher
    Data rejestracji
    2009
    Położenie
    Stalowa Wola.
    Posty
    1,253
    Siła reputacji
    16

    Domyślny

    Cytuj Mosso Jassen napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Też mam małe powątpiewania co do pierwszego skryptu, który wyszedł ci chyba najgorzej. Oczywiście, całe 3 sztuki są napisane dobrze i są nawet ciekawe, ale moje zastrzeżenie:

    Po co dałeś tutaj "Bad param!" do wiadomości, skoro go nigdzie nie używasz? Jeśli to dałeś, więc chyba miałeś zamiar użycia, a jeśli nie - wywal i zmień "msg[4]" na "msg[3]". Biorąc pod uwagę, że gracz może zmieniać sobie płeć - niepoprawne użycie(po co rozbite?) tablic.

    Leatsis.
    Racja. Używałem wcześniej tego 'bad param', jednak po skróceniu skryptu wywaliłem jego użycie, a wpis w tabeli został.
    Połączyłem też dwie tabele w jedną, bo zapomniałem, że można pisać ["xx"] = {1, 2, 3} ;p
    Po poprawkach:
    Kod:
    function onSay(cid, words, param)
        local outfits = {["citzen"]={136, 128}, ["hunter"]={137, 129}, ["mage"]={138, 130}, ["knight"]={139, 131}, ["nobleman"]={140, 132}, ["summoner"]={141, 133}, ["warrior"]={142, {134}, ["barbarian"]={147, 143}, ["druid"]={148, 144}, ["wizard"]={149, 145}, ["oriental"]={150, 146}, ["pirate"]={155, 151}, ["assassin"]={156, 152}, ["beggar"]={157, 153}, ["shaman"]={158, 154}, ["norseman"]={252, 251}, ["nightmare"]={269, 268}, ["jester"]={270, 273}, ["brotherhood"]={270, 278}, ["demonhunter"]={288, 289}}, ["yalaharian"]={325}}
        local msg = {"Command requires GOOD param!", "You dont have Addon Doll!", "Full Addon Set sucesfully added!"}
        local param = string.lower(param) 
    
        if(getPlayerItemCount(cid, 9693) > 0) then
            if(param ~= "" and maleOutfits[param] and femaleOutfits[param]) then
                doPlayerRemoveItem(cid, 9693, 1)
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[4])
                    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS)
                if(getPlayerSex(cid) == 0)then
                  doPlayerAddOutfit(cid, outfits[param][1], 3)
                else
                  doPlayerAddOutfit(cid, outfits[param][2], 3)
                end
            else
              doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[1])
            end
        else
          doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[2])
        end
    end
    Zachęcam do komentarzy, Visher

  12. #11
    axur20

    Domyślny

    na sete sie przyda thx!

  13. #12
    Avatar edek
    Data rejestracji
    2005
    Posty
    11
    Siła reputacji
    0

    Domyślny

    Wszystko super, tylko mam jeden problem, mam silnik 8.42 i nie chce mi chodzić, używam:
    theforgottenserver-v0.2.1-win32console
    mystic spirit

    Czy wie ktoś dlaczego nie może zaskoczyć?

  14. #13

    Data rejestracji
    2007
    Położenie
    Szczecin
    Posty
    2,147
    Siła reputacji
    18

    Domyślny

    @up
    Cytuj Visher napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Zakładając, że używasz TFSa 0.3.2 - nie powinno być problemów.
    Skrypt pisałem na TFSie 0.3.3, jednak jak sami dobrze wiecie, elf co relase zmienia nazwy funkcji o tak - kij wie po co. A potem szukanie po skryptach "co jest źle".

    Pozdrawiam, Visher.
    @top
    Skrypty ładnie napisane... no dobra, nie wiem czy są ładne, bo nie jestem skrypterem, ale w sumie to tylko ten infinity potion jest oryginalny...

  15. #14
    Avatar edek
    Data rejestracji
    2005
    Posty
    11
    Siła reputacji
    0

    Domyślny

    Gdybym miał używać TFSa 0.3.2/0.3.3 to musiał bym zmieniać silnik, ale ja chciałbym od razu pod swojego :D

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Black skull
    Przez aqs w dziale Tibia
    Odpowiedzi: 3
    Ostatni post: 15-07-2011, 22:55
  2. Mana potion vs health potion
    Przez gompek w dziale Tibia
    Odpowiedzi: 10
    Ostatni post: 02-09-2010, 20:48
  3. black skull na rl
    Przez Tymek3310 w dziale Tibia
    Odpowiedzi: 1
    Ostatni post: 28-07-2010, 17:00
  4. Odpowiedzi: 72
    Ostatni post: 07-05-2009, 20:47

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •