Strona Główna Belxena 8.4 RPG

Forum poświęcone powstawaniu Belxena OTS


#1 2009-05-02 10:02:38

Wiesiu

Administrator

Zarejestrowany: 2009-04-03
Posty: 59
Punktów :   

Quest z zabiciem potworków

Witam. Mam dla was do zaprezentowania skrypt, a właściwie skrzynkę questową. Quest polega na tym, że gdy pierwszy raz używamy skrzynki w wyznaczonych miejscach pojawiają się wyznaczone potwory. W skrypcie ustawiamy rogi pomieszczenia. Gdy użyjemy skrzynki drugi raz skrypt sprawdza, czy w tym pokoju, a właściwie obszarze wokół rogami jest jakiś potwór. Jeżeli jest, to wyświetla wiadomość ile potworów jeszcze musimy zabić, żeby wziąść nagrodę. Jeżeli wszystkie są wybite to dostajemy wyznaczoną przez nas nagrodę.

No więc przejdźmy do skryptu:
W data/actions/scripts robimy plik chest with kill.lua, a w nim dodajemy taki kod:
Kod:

function onUse(cid, item, frompos, item2, topos)
local nagroda = 2160   -- ID itemu nagrody
local ile = 1   -- Tylko dla itemow, ktore sie da zbeirac. Jezeli to jest normalny item (bron, armor itp.) to wstaw 1
local monsters = {"Demon", "Demon", "Demon"}
local positions = {{x=xxx, y=yyy, z=z}, {x=xxx, y=yyy, z=z}, {x=xxx, y=yyy, z=z}}
local lewy_gorny = {x=xxx, y=yyy, z=z}  -- Pozycja lewego gornego rogu pomieszczenia
local prawy_dolny = {x=xxx, y=yyy, z=z}  -- Pozycja prawego dolnego rogu pomieszczenia
ile_monsterow = 0   -- Tego nie ruszac
local storage = getPlayerStorageValue(cid, 6555)
if (storage == -1) then
    for i=1, #monsters do
    doSummonCreature(monsters[i], positions[i])
    end
    setPlayerStorageValue(cid,6555,1)
elseif (storage == 1) then
    for x=lewy_gorny.x, prawy_dolny.x do
        for y=lewy_gorny.y, prawy_dolny.y do
            local monsterpos = {x=x, y=y, z=lewy_gorny.z}
            local monster = getThingfromPos(monsterpos)
            if (monster.uid > 0) then
            if (isPlayer(monster) == FALSE) then
                ile_monsterow = ile_monsterow+1
            end
            end
        end
    end
    if (ile_monsterow == 0) then
        doPlayerAddItem(cid,nagroda,ile)
        setPlayerStorageValue(cid,6555,2)
        doPlayerSendTextMessage(cid,22,"Pokonales juz wszystkie potwory. W nagrode dostajesz ".. ile .." nazwa itemu.")
    else
        doPlayerSendTextMessage(cid,22,"Musisz pokonac jeszcze ".. ile_monsterow .." potworow.")
    end
elseif (storage == 2) then
    doPlayerSendTextMessage(cid,22,"To jest puste.")
end
end

Na górze jest konfiguracja, którą trzeba ustawić. Potwór odpowiada pozycji odpowiadającej mu. Zaznaczyłem czerwonym kolorem pierwszego "Demon" i pierwszą pozycje. Wtedy demon pojawi się na pozycji, która mu odpowiada. Chyba rozumiecie.

Jeżeli używacie TFS to spróbujcie tego kodu jak wam nie działa ten na górze:
Kod:

function onUse(cid, item, frompos, item2, topos)
local nagroda = 2160   -- ID itemu nagrody
local ile = 1   -- Tylko dla itemow, ktore sie da zbeirac. Jezeli to jest normalny item (bron, armor itp.) to wstaw 1
local monsters = {"Demon", "Demon", "Demon"}
local positions = {{x=xxx, y=yyy, z=z}, {x=xxx, y=yyy, z=z}, {x=xxx, y=yyy, z=z}}
local lewy_gorny = {x=xxx, y=yyy, z=z}  -- Pozycja lewego gornego rogu pomieszczenia
local prawy_dolny = {x=xxx, y=yyy, z=z}  -- Pozycja prawego dolnego rogu pomieszczenia
ile_monsterow = 0   -- Tego nie ruszac
local storage = getPlayerStorageValue(cid, 6555)
if (storage == -1) then
    for i=1, #monsters do
    doSummonCreature(monsters[i], positions[i])
    end
    setPlayerStorageValue(cid,6555,1)
elseif (storage == 1) then
    for x=lewy_gorny.x, prawy_dolny.x do
        for y=lewy_gorny.y, prawy_dolny.y do
            local monsterpos = {x=x, y=y, z=lewy_gorny.z}
            local monster = getThingfromPos(monsterpos)
            if (monster.uid ~= 0) then
            if (isPlayer(monster) == FALSE) then
                ile_monsterow = ile_monsterow+1
            end
            end
        end
    end
    if (ile_monsterow == 0) then
        doPlayerAddItem(cid,nagroda,ile)
        setPlayerStorageValue(cid,6555,2)
        doPlayerSendTextMessage(cid,22,"Pokonales juz wszystkie potwory. W nagrode dostajesz ".. ile .." nazwa itemu.")
    else
        doPlayerSendTextMessage(cid,22,"Musisz pokonac jeszcze ".. ile_monsterow .." potworow.")
    end
elseif (storage == 2) then
    doPlayerSendTextMessage(cid,22,"To jest puste.")
end
end

Potem do actions.xml dodajemy:
Kod:

<action uniqueid="tutaj uniueid skrzyni" script="chest with kill.lua" />

Uzupełniamy pole zaznaczone na czerwono. Wpisujemy w nim unique id skrzyni. Potem tylko na mapie robimy skrzynie. Ustawiamy jej taki unique id jaki daliśmy w actions.xml. Jeżeli zrobiliście wszystko tak jak opisałem tutaj będzie działać.


http://images.net.pl/file/u6iur6fo6sojbxta16uv.jpg

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.ogt.pun.pl www.promotyle.pun.pl www.realnet.pun.pl www.vspolmiedztrans.pun.pl www.zspjasliska.pun.pl