What's new

Skrypty & Kody addEvent Pytanie

Status
Not open for further replies.

xxnarutoxx

User
Joined
Apr 20, 2013
Messages
19
Reaction score
0
Witam
Potrafi?by mi kto? wyja?ni? jak u?ywa? tej funkcji?

-Chodzi mi o takie rzeczy jak np.zabieranie hp osobie stoj?cej na danej kratce 10 hp/sec.Gl?wnie chodzi mi o cze?? z addEvent {nie caly skrypt}


-Jak uzyska? dzi?ki tej funkcji bonus czasowy.Pro?ciej m?wiac dla przyk?adu dostajemy hp i chce ?eby ten bonus zosta? odebrany np po 2h.
 

iSanto

Demetri-World.net
Joined
Jan 8, 2011
Messages
922
Reaction score
87
Odp: addEvent Pytanie

Og?lne dzia?anie addEventa to:
addEvent(funkcja, czas, parametr1, parametr2, parametr3, ...)

np. chcemy doda? graczu 100 gp, ale po 20 sekundach. (Funkcja na dodawanie kasy: doPlayerAddMoney(cid, money)) Sktypt wygl?da?by nast?puj?co:
[lua]addEvent(doPlayerAddMoney, 20*1000, cid, 100)[/lua]
20*1000 - jest to czas w milisekundach, czyli 20 sekund.

Twoje odbieranie hp. Nale?y stworzy? funkcje now?:
[lua]function addPlayerHealthPerTime(cid)
if not isPlayer(cid) then --Je?eli nie ma gracza, nie ma komu odjemowa? hp
return true --ko?czymy skrypt w takim razie
end
doCreatureAddHealth(cid, -10) --odejmujemy hp
return addEvent(addPlayerHealthPerTime, 1000, cid) --wykonujemy ponownie t? funkcje po okre?lonym czasie
end
--Skrypt b?dzie wykonywa? si? dop?ki gracz nie zginie lub nie wyloguje si?.[/lua]

oraz wywo?a? j? w skrypcie: [lua]addPlayerHealthPerTime(cid)[/lua]

Mo?na zrobi? to r?wnie? innym sposobem, jednak ten wydaje mi si?, ?e jest najbardziej czytelny. Je?eli mia?e? na informatyce lub matematyce rekurencj?, to w?asnie ona zosta?a u?yta w tym skrypcie.
 

DanJ93

ElfBot Helper
Joined
Jan 18, 2009
Messages
2,631
Reaction score
200
Odp: addEvent Pytanie

Je?li si? nie myl?, to co? takiego:
[lua]function addPlayerHealthPerTime(cid, zycie, czas)
if not isPlayer(cid) then --Je?eli nie ma gracza, nie ma komu odjemowa? hp
return true --ko?czymy skrypt w takim razie
end
doCreatureAddHealth(cid, zycie) --odejmujemy hp
if os.time() < getPlayerStorageValue(cid, 2550) then
setPlayerStorageValue(cid, 2550, czas * 60)
return addEvent(addPlayerHealthPerTime, 1000, cid) --wykonujemy ponownie t? funkcje po okre?lonym czasie
end
end[/lua]
i zeby odejmowalo 10hp przez 2h to u?ywasz tej funkcji tak:
[lua]addPlayerHealthPerTime(cid, -10, 120)[/lua]
-10 - tyle ?ycia odejmuje
120 minut = 2h
 

Dantez

Moim sekretem jest ciasto
Joined
May 22, 2008
Messages
1,206
Reaction score
202
Odp: addEvent Pytanie

i zeby odejmowalo 10hp przez 2h to u?ywasz tej funkcji tak:
[lua]addPlayerHealthPerTime(cid, -10, 120)[/lua]

Chcia?e? powiedzie? 7.2 sec, a nie 2h. Do tego por?wnujesz os.time z liczb?, kt?ra nigdy nie b?dzie wi?ksza - trzeba do niej doda? os.time, ?eby to mia?o jaki? sens i sprawdza?, czy nie jest r?wna -1 w przypadku pustego storage. Nie m?wi?c o tym, ?e je?li zmusi?by? warunek do dzia?ania to ju? po sekundzie nie b?dzie dzia?a?, bo nie przekazujesz dalej 'czas' i 'zycie'.
 
Last edited:

DanJ93

ElfBot Helper
Joined
Jan 18, 2009
Messages
2,631
Reaction score
200
Odp: addEvent Pytanie

Pisa?em to na szybkiego, nie zwraca?em uwagi na wszystko.
Przekazuje dalej ?ycie i czas, bo on t? funkcj? mia? wrzuci? do funkcji i u?ywa? tylko tym kawa?kiem kodu.
Teraz nie mam g?owy do my?lenia
 
Last edited:
Status
Not open for further replies.
Top