Szerző Téma: localPlayer, resourceRoot és egyebek  (Megtekintve 1219 alkalommal)

localPlayer, resourceRoot és egyebek
« Dátum: 2016. November 03. - 12:30:22 »
0 Show voters
Ü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.

localPlayer, resourceRoot és egyebek
« Válasz #1 Dátum: 2016. November 03. - 12:57:42 »
+1 Show voters
Nos akkor megpróbálok én valamennyi támpontot írni, persze vannak azért nálam jóval okosabb és profibb emberek is a fórumon, remélem közülik is fog írni neked valaki azért, mert szinte biztos, hogy még jobban eltudják neked magyarázni majd az egészet. Nos akkor kezdem:


A localPlayer  client oldalon használható, ennek szerveroldali megfelelője a getLocalPlayer() (melyet szintén tudsz clienten használni, ha jól tudom). Source arra vonatkozik, akinél végbemegy a function, tehát, pl ha egy parancsos function-t csináltál, akkor annál fut le, aki beírja a parancsot. A resourceRoot egy OOP deffiniálás, mely a resourcera hat (ha jól tudom, de ezt soha nem használtam még én se). Trigger esetén, ugyebár deffiniálod a function-t amit majd átfogsz küldeni a másik oldalra. Speciel nálad meddig megy el a script azt jó lenne tudni, ilyenkor érdemes debuggolni valamilyen formában, lehet ez outputChatBox-olt szöveg, lehet ez debugscriptbe írt szöveg vagy logba küldöd el, lényeg, hogy megtudd nézni meddig megy el a folyamatod.

localPlayer, resourceRoot és egyebek
« Válasz #2 Dátum: 2016. November 03. - 14:59:30 »
+1 Show voters
Idézetet írta: AlexSwamp date=1478174262\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63494\" data-ipsquote-contentclass=\"forums_Topic
Nos akkor megpróbálok én valamennyi támpontot írni, persze vannak azért nálam jóval okosabb és profibb emberek is a fórumon, remélem közülik is fog írni neked valaki azért, mert szinte biztos, hogy még jobban eltudják neked magyarázni majd az egészet. Nos akkor kezdem:


A localPlayer  client oldalon használható, ennek szerveroldali megfelelője a getLocalPlayer() (melyet szintén tudsz clienten használni, ha jól tudom). Source arra vonatkozik, akinél végbemegy a function, tehát, pl ha egy parancsos function-t csináltál, akkor annál fut le, aki beírja a parancsot. A resourceRoot egy OOP deffiniálás, mely a resourcera hat (ha jól tudom, de ezt soha nem használtam még én se). Trigger esetén, ugyebár deffiniálod a function-t amit majd átfogsz küldeni a másik oldalra. Speciel nálad meddig megy el a script azt jó lenne tudni, ilyenkor érdemes debuggolni valamilyen formában, lehet ez outputChatBox-olt szöveg, lehet ez debugscriptbe írt szöveg vagy logba küldöd el, lényeg, hogy megtudd nézni meddig megy el a folyamatod.
 
Köszönöm sikerült megoldani. Újraértékeltem a dolgokat. De azért nyitva hagyom 1-2 napig hátha valaki még hozzászól.  :)

localPlayer, resourceRoot és egyebek
« Válasz #3 Dátum: 2016. November 03. - 15:12:23 »
+4 Show voters
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.
\"Tre.png\"
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
« Utoljára szerkesztve: 2016. November 03. - 15:14:54 írta dugasz1 »

localPlayer, resourceRoot és egyebek
« Válasz #4 Dátum: 2016. November 03. - 15:23:29 »
0 Show voters
Dugasz1 ezt iszonyat jól összeszedted viszont jár érte a pacsi!  :thumbsup:

localPlayer, resourceRoot és egyebek
« Válasz #5 Dátum: 2016. November 03. - 15:43:26 »
0 Show voters
Gyönyörű magyarázat köszönöm ezt is :) Tényleg jó lett, nyithatnál neki külön témát leírásokhoz.

localPlayer, resourceRoot és egyebek
« Válasz #6 Dátum: 2016. November 03. - 16:01:08 »
0 Show voters
Köszönöm :D
Szerintetek lenne ilyenre igény? Vagy akár videó formájában?

localPlayer, resourceRoot és egyebek
« Válasz #7 Dátum: 2016. November 03. - 16:41:22 »
0 Show voters
Idézetet írta: dugasz1 date=1478185268\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63494\" data-ipsquote-contentclass=\"forums_Topic
Köszönöm :D
Szerintetek lenne ilyenre igény? Vagy akár videó formájában?
 
Nekem szükségem lenne ilyenekre. Jó kis szájbarágós képes tutorialok. :D Amúgy videónak is örülnék :D

localPlayer, resourceRoot és egyebek
« Válasz #8 Dátum: 2016. November 03. - 17:55:48 »
0 Show voters
Dugasz1, igény az biztosan lenne rá, engem érdekelne.

localPlayer, resourceRoot és egyebek
« Válasz #9 Dátum: 2016. November 03. - 18:01:18 »
0 Show voters
Engem is :D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal