Üdv!
Pár év samp szerver fejlesztés után úgy döntöttem megtanulom az MTA-s dolgokat is.
Elkezdtem egy szervert 0-ról építeni, a lua nyelv maga nem nehéz, viszont ez a szerver és kliens oldali szkriptes resourceos dolgok kikészítenek.
Vannak ezek az előre létrehozott változók pl localPlayer, resourceRoot, source meg ilyenek és nem tudom mikor melyiket kell használni.
Az lenne a lényeg, hogy a kliens csatlakozáskor küld egy triggerServerEvent-et, majd a szerver válaszol csak a játékosnak.
Hát ez nem így történik, a kliens elküldi a dolgokat, majd a szerver válaszol mindenkinek.
--Kliens hívás:
triggerServerEvent(\"onPlayerPressButton\",resourceRoot,localPlayer,false,name,pass)--Sikeresen megkapja a kliens, authorizáció megtörténik
--Szerver válasz:
triggerClientEvent (\"onLoginSuccess\", source, true)--Ezt pedig minden kliens megkapja, pedig csak annak kellene aki küldte
Jó lenne egy leírás, útmutató lehetőleg magyarul, hogy mikor melyiket kell használni. Köszönöm.
Ha valamit rosszul mondanék elnézést, én eddig így tudtam kérlek akkor javítsatok ki:
Amiket írtál, azok előre definiált változók, melyeket bármely resourceben elérsz. (Persze attól függön kliens,szerver vagy mindkettőn létezik)
Csak Kliens:
localPlayer = getLocalPlayer() | Ugyan az a kettő, visszadja azt a játékost aki éppen játszik
resourceRoot = getResourceRootElment() | Itt is ugyan az a kettő visszadaja a resource root elementjét
Kliens és szerver:
source | Ez mindig más. De ilyenek szoktak lenni:
Az aki meghívta a function-t vagy kiváltotta vagy rajta hatódik
pl.: ha egy exportált függvényt hívsz meg akkor a meghívó resource lesz a source-ed.
pl.: onClientPlayerDamage eventnél a source az a player lesz aki kapta a sebzést.
Van itt még pár
Mindegy melyiket használod localPlayer vagy getLocalPlayer() mindkettő ugyan az.
Azt még ezek mellé tudni kell mi az az element,event,trigger.
Az egész MTA scriptelés esemény irányított. Tehát történik valami te arra írsz valamit mi legyen akkor.
Van pár alap Event(esemény) és te is készíthetsz ha akarsz.
Alap eventek trigger-jét(kiváltását) az MTA kezeli te pedig elkapod őket eventHandlerek-kel (lekezeled őket).
De ha te írsz te váltod ki a triggert is. És itt jönnek be az elementek. triggerek csak elmenteken terjednek eventhandlert is csak elementre tudsz csatolni.

Ezeknek az elementek pedig ilyene fa szerűen épülnek fel. Mindegyiknek van egy szülője (aki létrehozta) és lehet gyerekük (akit ő hozott létre)
pl.: Ha van egy resourced ami lespawnol egy kocsit akkor a resourced nak a gyereke a kocsi. (Ha törölsz egy element-et törlődnek a gyerekei is. Ezesetben ha leállítod a resourcet törlődik a kocsi)
A triggerek pedig ezen a fán úgy terjednek, hogy ahova a trigger lett attacholva onnan terjed a szülője és a gyerekei felé.
Jelen esetedben, azért kapja meg mindenki az üzenetet mert:
bool triggerClientEvent ( [table/element sendTo=getRootElement()], string name, element sourceElement, [arguments...] )
Az első argument egy opcionális argument amit ha nem adsz meg akkor a root elementre triggerelsz, így a trigger leterjed minden playerre.
Nem tudom mennyire tudtam elmagyarázni videóban könyebb lenne, mint írva :D
Edit: Mindig akkora komentelek mikor már megvan a megoldás :D