_Haze
Peace Yo!
Wiek: 24 Na forum: 4184 dni Posty: 1648
Nick w MP: Haze
Piwa : 2628
Triggery
Cze??
[you]
w tym poradniku chcia?bym wyja?ni? dzia?anie samych trigger?w, jak zrobi? trigger, jak go poprawnie u?y?.
Do czego nam jest potrzebny trigger i co to jest?
Trigger z angielskiego oznacza wywo?ywacz. W lua triggery wywo?uj? funkcje uprzednio stworzone po jednej ze stron. Triggery ??cz? nam stron? servera z clientem. Posiadaj? one kilkusekundowe op??nienia dlatego cz?sto w skryptach z triggerami dx jest kilkusekundowe ?adowanie. Triggery zwracaj? true je?li si? wykonaj? albo false kiedy si? nie wykonaj?.
Linki Wiki/Sk?adnia
bool triggerClientEvent ( [ table / element sendTo = getRootElement ()], string name , element sourceElement , [ arguments ...] )
Pierwszy argument to element gracza do kt?rego wysy?amy.
Drugi argument to nazwa eventu wykonywanego.
Trzeci argument to sourceElement czyli element kt?ry wysy?a to.
Reszta argument?w opcjonalnie zale??ca od eventu.
bool triggerEvent ( string eventName , element baseElement , [ var argument1 , ... ] )
Pierwszy argument to nazwa eventu.
Drugi to element gracza do kt?rego to wysy?amy.
Reszta argument?w opcjonalnie zale??ca od eventu.
bool triggerServerEvent ( string event , element theElement , [ arguments ...] )
Pierwszy argument to nazwa eventu.
Drugi argument to sourceElement czyli element kt?ry wysy?a to.
Reszta argument?w opcjonalnie zale??ca od eventu.
Więcej informacji znajdziesz w Wikipedii MTA: AddEvent
bool addEvent ( string eventName [, bool allowRemoteTrigger = false ] )
Pierwszy argument to nazwa eventu.
Drugi argument oznacza to czy pozwalamy ?eby inne resource mog?y korzysta? z tego eventu.(client-server te?)
bool triggerLatentClientEvent ( [ table / element sendTo = getRootElement (),] string name , [ int bandwidth = 50000 ,] [ bool persist = false ,] element theElement , [ arguments ...] )
Pierwszy argument to element gracza do kt?rego wysy?amy.
Drugi argument to nazwa eventu wykonywanego.
Trzeci argument to czas wysy?ania eventu.
Czwarty argument oznacza czy po wy??czeniu resource nadal ma kontynuowa? trigger.
Pi?ty argument to sourceElement czyli element kt?ry wysy?a to.
Reszta argument?w opcjonalnie zale??ca od eventu.
bool triggerLatentServerEvent ( string event , [ int bandwidth = 5000 , bool persist = false ,] element theElement , [ arguments ...] )
Pierwszy argument to nazwa eventu wykonywanego.
Drugi argument to czas wysy?ania eventu.
Trzeci argument oznacza czy po wy??czeniu resource nadal ma kontynuowa? trigger.
Czwarty argument to sourceElement czyli element kt?ry wysy?a to.
Reszta argument?w opcjonalnie zale??ca od eventu.
Wi?cej do poczytania o systemie event?w tutaj
Przyk?ad
Client:
addEvent ( "dajpkt" , true )
addEventHandler ( "dajpkt" , root , function( p1 , p2 , t1 , t2 , r1 , g1 , b1 , r3 , g3 , b3 , alive2 )
team1 = t1
team2 = t2
pkt1 = p1
pkt2 = p2
r = r1
g = g1
b = b1
r2 = r3
g2 = g3
b2 = b3
alive = alive2
end )
Server:
setTimer (function()
r3 , g3 , b3 = getTeamColor ( team1 )
r4 , g4 , b4 = getTeamColor ( team2 )
local liczba1 = #getAlivePlayersInTeam(team1)
local liczba2 = #getAlivePlayersInTeam(team2)
alive = kolor ( r3 , g3 , b3 ).. tonumber ( liczba1 ).. " #ffffffvs " .. kolor ( r4 , g4 , b4 ).. tonumber ( liczba2 )
triggerClientEvent ( root , "dajpkt" , root , pkt1 , pkt2 , t1 , t2 , r1 , g1 , b1 , r2 , g2 , b2 , alive )
end , 1000 , 0 )
Zmienne u?yte w cliencie s? draw'?owane(nie znam innego okre?lenia xdxd chodzi o to ?e s? czytane przez dxDrawText jako zmienna) i je?li zmienimy nazw? komend? to po sekundzie timer ustawi to w dx.
Prawid?owe tworzenie eventu
Server
addEvent ( "Cash" , true )-- pozwala na korzystanie tego eventu z innych zasob ? w
addEventHandler ( "Cash" , root , function( interakcja , ilosc )-- dodaje trigger
if tostring ( interakcja ) and tonumber ( ilosc ) then -- ma ? o wa ? ny kod
if interakcja == "take" then -- ma ? o wa ? ny kod
takePlayerMoney ( client , ilosc )-- ma ? o wa ? ny kod
elseif interakcja == "give" then -- ma ? o wa ? ny kod
givePlayerMoney ( client , ilosc )-- ma ? o wa ? ny kod
end
end
end )
Wykonanie triggera:
triggerClientEvent ( elementgracza , "Cash" , elementgracza , "take" , 50 )
Po stronie servera wygl?da?o by to tak:
triggerServerEvent ( "Cash" , elementgracza , "take" , 50 )
(Jest to tylko pokaz argument?w ?eby wykona? event, po tej samej stronie trzeba u?y? triggerEvent)
Czy mo?na u?y? triggera po tej samej stronie?
Jest to cz?ste pytanie dotycz?ce trigger?w. Tak. U?ywamy do tego triggerEvent
W powy?szym przypadku b?dzie to wygl?da?o tak.
triggerEvent ( "Cash" , elementgracza , "give" , 100 )
To na tyle w tym poradniku. Mam nadziej? ?e ten poradnik wam si? spodoba?. Prosz? o zg?aszanie ewentualnych b??d?w.
Ostatnio zmieniony przez _Haze 2016-12-19, 15:46, w całości zmieniany 1 raz