ďťż

[TFS 0.3.4+] Zmiana celu potworów.

PRzeSteR

[TFS 0.3.4+] Zmiana celu potworów.
  Witam. To kolejny skrypt z cyklu: Gelio owni konkurs skryperski (tytuł wymyślił Kleksu, za co dziękuję). Ten skrypt to zmiana celu potworów. Na czym to polega? Używamy specjalnej runy najpierw na potworze, który ma mieć zmieniony cel, a następnie na tym celu. Po każdym zmienieniu celu usuwa się jedno użycie runy. Runę można używać na odległość (czyt. nie musisz stać obok żadnego z potworów). W konfiguracji można ustawić czy można zmieniać cel potworów na graczy. Nie można zmieniać celu summonów, tylko ich władcy. Myślę, że wszystko zrozumieliście. W razie czego pytajcie.

Bardziej rzeczowo: runa może zmienić cel normalnego potwora, który nie jest summonem na innego potwora (lub gracza, jeżeli tak ustawimy), który jest summonem.

ZdjęciaTeraz nie dam filmu, dam zdjęcia.
1. Troll oraz rat (normalne potwory) atakują mojego summona Demona. Mój drugi summon - Cave Rat - stoi obok i nic nie robi:
[Tylko pełnoprawni użytkownicy (z aktywacją e-mailem) mogą widzieć linki.] Kliknij tutaj, aby się zarejestrować.
2. Używam runy na wrogim szczurze:
[Tylko pełnoprawni użytkownicy (z aktywacją e-mailem) mogą widzieć linki.] Kliknij tutaj, aby się zarejestrować.
3. Używam runy na moim Cave Racie. Wrogi Rat zmienia cel:
[Tylko pełnoprawni użytkownicy (z aktywacją e-mailem) mogą widzieć linki.] Kliknij tutaj, aby się zarejestrować.
Każdy ładunek runy znika po zmienieniu celu. Mam nadzieję, że wszystko widać na zdjęciach.

SkryptyTworzymy plik o nazwie target changer.lua w folderze data/actions/scripts/ i wklejamy do niego:
Kod: -- Kolejny skrypt z cyklu: Gelio owni konkurs skrypterski
-- Temat: zmiana celu potwora
local zmianaNaGraczy = "nie"  -- Czy można zmieniać cel potworów na graczy, czy tylko na inne potwory
local zabronionePotwory = {"Orshabaal", "Ghazbaran"}  -- Nicki potworów, którym nie można zmienić celu.
local mowienieCelu = "tak"    -- Czy potwór, który zmienił cel mówi o zmianie celu i mówi jaki cel atakuje aktualnie.
local storage = 3601    -- Storage value. Jeżeli nie działa zmienić.
local maxDistance = 5  -- Ile kratek dalej od gracza może stać każda z kreatur
local kolorWiadomosci = (TALKTYPE_MONSTER ~= nil and TALKTYPE_MONSTER or TALKTYPE_ORANGE_1) -- Jeżeli masz

zmianaNaGraczy = (zmianaNaGraczy == "tak" and true or false)
mowienieCelu = (mowienieCelu == "tak" and true or false)
function onUse(cid, item, frompos, item2, topos)
if(cid == item2.uid) then
        doPlayerSendCancel(cid,"Nie mozesz tego uzyc na sobie.")
        return TRUE
end

if(isCreature(getPlayerStorageValue(cid,storage)) == FALSE) then
        -- Ustawianie potwora
        if(isMonster(item2.uid) == FALSE) then
                doPlayerSendCancel(cid,"Mozesz zmieniac cel tylko potworom.")
                return TRUE
        end
       
        if(getCreatureMaster(item2.uid) ~= item2.uid) then
                doPlayerSendCancel(cid,"Nie mozesz zmieniac celu summonom.")
                return TRUE
        end
       
        local name = getCreatureName(item2.uid)
        if(isInArray(zabronionePotwory, name) == TRUE) then
                doPlayerSendCancel(cid,"Nie mozesz zmienic celu temu potworowi.")
                return TRUE
        end
       
        if(getDistanceBetween(getCreaturePosition(cid), getCreaturePosition(item2.uid)) > maxDistance) then
                doPlayerSendCancel(cid,"Potwor stoi za daleko.")
                return TRUE
        end
       
        setPlayerStorageValue(cid,storage,item2.uid)
        doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Teraz wybierz cel, ktory ma atakowac ten potwor.")
        return TRUE
else
        -- Ustawiony potwór. Zmienianie celu.
        if(isCreature(item2.uid) == FALSE) then
                doPlayerSendCancel(cid,"Mozesz zmienic cel tylko na kreatury.")
                return TRUE
        end
       
        if(not zmianaNaGraczy and isPlayer(item2.uid) == TRUE) then
                doPlayerSendCancel(cid,"Nie mozesz zmienic celu na gracza.")
                return TRUE
        end
       
        local monster = getPlayerStorageValue(cid,storage)
        if(isMonster(monster) == FALSE) then
                doPlayerSendCancel(cid,"Zly potwor. Wybierz potwora jeszcze raz.")
                setPlayerStorageValue(cid,storage,0)
                return TRUE
        end
       
        if(getDistanceBetween(getCreaturePosition(cid), getCreaturePosition(monster)) > maxDistance) then
                doPlayerSendCancel(cid,"Potwor stoi za daleko. Wybierz potwora jeszcze raz.")
                setPlayerStorageValue(cid,storage,0)
                return TRUE
        end
       
        if(getDistanceBetween(getCreaturePosition(cid), getCreaturePosition(item2.uid)) > maxDistance) then
                doPlayerSendCancel(cid,"Cel stoi za daleko. Wybierz cel jeszcze raz.")
                return TRUE
        end

        doMonsterSetTarget(monster,item2.uid)
        doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Cel potwora ".. getCreatureName(monster) .." zostal zmieniony na ".. getCreatureName(item2.uid) ..".")
        setPlayerStorageValue(cid,storage,0)
        if(item.type > 1) then
                doChangeTypeItem(item.uid,item.type-1)
        else
                doRemoveItem(item.uid,1)
        end
        if(mowienieCelu) then
                doCreatureSay(monster,"Target changed: ".. getCreatureName(item2.uid),kolorWiadomosci)
        end
end
return TRUE
end A następnie konfigurujemy według własnych upodobań. Konfiguracja na górze skryptu. Teraz otwieramy plik actions.xml znajdujący się w folderze data/actions/ i dodajemy do niego:
Kod: <action itemid="2264" allowfaruse="1" event="script" value="target changer.lua"/> Następnie wszystko zapisujemy. ID runy, która zmienia cel potworom to 2264. Jest to nieużywana runa. Skrypt ma zabezpieczenia przed używaniem na graczach, summonach i wiele innych.

Mam nadzieję, że skrypt Wam się podoba i przyda.
Pozdrawiam,
Gelio

@edit
Strzeżcie się następnego tematu, [mroczny śmiech]muahahahaha[/mroczny śmiech].

@dinots
Około półtora.



  Haha, nawet ja w poście i znów jestem pierwszy :D świetne, nie kumałem tego zbytnio na początku, ale teraz wszystko jest jasne, screeny się przydały bo ładnie objaśniają. Bardzo ładny skrypt. Sprawdziłem, działa.
__________________
[Tylko pełnoprawni użytkownicy (z aktywacją e-mailem) mogą widzieć linki.] Kliknij tutaj, aby się zarejestrować.
Zapraszam na [Tylko pełnoprawni użytkownicy (z aktywacją e-mailem) mogą widzieć linki.] Kliknij tutaj, aby się zarejestrować.!
Zajrzyj na nowe open tibia forum z własną ot listą [Tylko pełnoprawni użytkownicy (z aktywacją e-mailem) mogą widzieć linki.] Kliknij tutaj, aby się zarejestrować.!

  Powiem jedno, jesteś zaje.. wielki thx ^^ Użyje go na ots :P A i mam pytanie do ciebie:P Ile lat siedzisz w skryptach??

  Heh... Skrypt bardzo fajny, lecz użyteczność taka średnia... Za pomysł 5/10 :)



  Tak się zastanawiam, czy jest możliwość wywołania skryptem "wojny ras", tzn. mob nie będący summonem zawsze atakuje innego moba o danej nazwie (np. na danym terenie są wojny między krasnoludami oraz elfami).

Na 95% to edycja silnika oraz dodanie nowej wartości w pliku xml moba, ale warto spytać, może się mylę :)

PS: Tak wiem za dużo grałem w Ultime Online :)

  Gelio, czy jest mozliwy taki manwer ze potwor Cie zaatakuje dopiero wtedy gdy ty go zatakujesz ? jak tak to mozesz napisac jak to zrobic ^^

  Witam!
Powiem jedno, jesteś super skrypter'em! Użyje go na ots :P

10/10

pozdrawiam Gream :up:

  Skrypt pomysłowy. Kiedyś na pewno go wykorzystam. Dopatrzyłem się jednego małego błędu.

Cytat:
-- Nicki potworów, którym nie można zmienić celu. Raczej nazwy potworów ^^.

  Idealne na servery rpg:)

  Eee.yyy.ee..yyy to jest bardzo fajne :).Super skrypt godny uwagi i dołączenia go do swojego servera.Jednak gdy umieszcza się skrypt lepiej zrobić filmik niż ss'y.

Pozdrawiam, Xkono

  Naprawde super skrypt! 11/10

  Odwrotnośc Exeta Res xD Skrypt fajny ale można jeszcze zrobic że twój summon atakuje kogoś innego a ty kogoś innego

10/10
Copyright (c) 2009 PRzeSteR | Powered by Wordpress. Fresh News Theme by WooThemes - Premium Wordpress Themes.