GTA Közösség - A magyar GTA fórum

Multi Theft Auto (MTA) => MTA: Szerverfejlesztés => Segítségkérés => A témát indította: Lorain - 2016. Szeptember 12. - 10:02:47

Cím: Mi a különbség addEventHandler....
Írta: Lorain - 2016. Szeptember 12. - 10:02:47
Mi a különbség a kettő között?!
Melyiket célszerűbb használni?!
1.
 
function replaceModel()
    dff = engineLoadDFF(\"files/wheel_lr1.dff\", 1077)
    engineReplaceModel(dff, 1077)
end
addEventHandler ( \"onClientResourceStart\", getResourceRootElement(getThisResource()), replaceModel)

 
2.
 
addEventHandler(\"onClientResourceStart\", resourceRoot, function()
    dff = engineLoadDFF(\"files/wheel_lr1.dff\", 1077)
    engineReplaceModel(dff, 1077)
end)
Cím: Mi a különbség addEventHandler....
Írta: impreZZa - 2016. Szeptember 12. - 10:31:43
Az elsőt tudod később remove-olni. (mármint nekem ennyi haszna van, de lehet van más is.)
Cím: Mi a különbség addEventHandler....
Írta: Legend - 2016. Szeptember 12. - 12:54:55
Idézetet írta: impreZZa date=1473669103\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63031\" data-ipsquote-contentclass=\"forums_Topic
Az elsőt tudod később remove-olni. (mármint nekem ennyi haszna van, de lehet van más is.)
 
Vagy meg lehet hívni máshol.
Cím: Mi a különbség addEventHandler....
Írta: id100 - 2016. Szeptember 12. - 17:14:24
Egyébként azzal mi a gond ha simán a scriptbe írod és nem resource starta?  >:D
Eddig működött, bár énis eventhandlerrel használom.
Cím: Mi a különbség addEventHandler....
Írta: Robika1 - 2016. Szeptember 12. - 19:16:26
Az elsőt később is megtudod hívni, a második meg csak script startkor fut le egyszer és kész.
 
Egyébként azzal mi a gond ha simán a scriptbe írod és nem resource starta?  >:D[/quote]
Ha simán scriptbe írod, simán lefut, és nem tudod majd újra meghívni.
Robika1
Cím: Mi a különbség addEventHandler....
Írta: golyoka1 - 2016. Szeptember 13. - 15:26:24
Nem csak eventhandlernél lehet ilyen formával megadni a dolgokat, hanem commandhandlernél is igazából ez csak olyan névtelen funkciót csinál.(bevallom én sokszor szoktam csinálni commandoknál :D, és ritkán eventeknél pl(onClientRender,onClientKey...etc))

Dupla hozzászólás automatikusan összefûzve. ( 2016. Szeptember 13. - 15:30:07 )

Idézetet írta: Legend date=1473677695\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63031\" data-ipsquote-contentclass=\"forums_Topic


Az elsőt tudod később remove-olni. (mármint nekem ennyi haszna van, de lehet van más is.)
 
Vagy meg lehet hívni máshol.
 
[/quote]
Meghívni máshol csak is a script keretein belül.
Gondolom hogy tudod csak mondom leírom hogy tudja a gyerek is. :)
Egy szóval nem tudod másik resourceben meghívni az eventet kivéve ha nem triggerEventezel(ezt nem használtam még, de hallotam/láttam hogy lehet elvileg.)
Cím: Mi a különbség addEventHandler....
Írta: Xistance - 2016. Szeptember 13. - 18:23:32
Idézetet írta: Lorain date=1473667367\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63031\" data-ipsquote-contentclass=\"forums_Topic
Mi a különbség a kettő között?!
Melyiket célszerűbb használni?!
1.
 
function replaceModel()
    dff = engineLoadDFF(\"files/wheel_lr1.dff\", 1077)
    engineReplaceModel(dff, 1077)
end
addEventHandler ( \"onClientResourceStart\", getResourceRootElement(getThisResource()), replaceModel)

 
2.
 
addEventHandler(\"onClientResourceStart\", resourceRoot, function()
    dff = engineLoadDFF(\"files/wheel_lr1.dff\", 1077)
    engineReplaceModel(dff, 1077)
end)

 

Elsőt használd mindig. Jog adásnak a getresourcerootelementet használd mindig. Mondhatjuk felesleges baromságnak a második lehetőséget.
Cím: Mi a különbség addEventHandler....
Írta: DrAkE - 2016. Szeptember 13. - 21:39:23
Idézetet írta: Xistance date=1473783812\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63031\" data-ipsquote-contentclass=\"forums_Topic


Mi a különbség a kettő között?!
Melyiket célszerűbb használni?!
1.
 
function replaceModel()
    dff = engineLoadDFF(\"files/wheel_lr1.dff\", 1077)
    engineReplaceModel(dff, 1077)
end
addEventHandler ( \"onClientResourceStart\", getResourceRootElement(getThisResource()), replaceModel)

 
2.
 
addEventHandler(\"onClientResourceStart\", resourceRoot, function()
    dff = engineLoadDFF(\"files/wheel_lr1.dff\", 1077)
    engineReplaceModel(dff, 1077)
end)

 

Elsőt használd mindig. Jog adásnak a getresourcerootelementet használd mindig. Mondhatjuk felesleges baromságnak a második lehetőséget.
 
[/quote]
Tévedsz.
Az elsőt akkor ajánlatos használni, ha:
- jobban átakarod látni a scriptet
- későbbiek folyamán törölni akarod az eventhez tartozó funkciót.
- esetleg más eventhez is hozzáakarod kötni a funkciót.
A második lehetőség pedig nem baromság, hanem lambda funkciónak nevezik (C++-ban is most vezették be). Praktikusnak mondhatóak hiszen nem kell külön funkciót létrehozni.
getResourceRootElement helyett pedig használhatod az MTA által előre definiált resourceRoot változó értékét, hiszen ez ugyan úgy megegyezik az előbb említett funkcióval (ezt minden egyes resourcnál létrehozza).
Lásd: https://github.com/multitheftauto/mtasa-blue/blob/c0cc8f76b6806ee1279e77727cc440371dc63d07/Client/mods/deathmatch/logic/lua/CLuaMain.cpp#L169
Cím: Mi a különbség addEventHandler....
Írta: Xistance - 2016. Szeptember 13. - 22:39:35
Idézetet írta: DrAkE date=1473795563\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63031\" data-ipsquote-contentclass=\"forums_Topic


 

Mi a különbség a kettő között?!
Melyiket célszerűbb használni?!
1.
 
function replaceModel()
    dff = engineLoadDFF(\"files/wheel_lr1.dff\", 1077)
    engineReplaceModel(dff, 1077)
end
addEventHandler ( \"onClientResourceStart\", getResourceRootElement(getThisResource()), replaceModel)

 
2.
 
addEventHandler(\"onClientResourceStart\", resourceRoot, function()
    dff = engineLoadDFF(\"files/wheel_lr1.dff\", 1077)
    engineReplaceModel(dff, 1077)
end)

 

Elsőt használd mindig. Jog adásnak a getresourcerootelementet használd mindig. Mondhatjuk felesleges baromságnak a második lehetőséget.
 
[/quote]
Tévedsz.
Az elsőt akkor ajánlatos használni, ha:
- jobban átakarod látni a scriptet
- későbbiek folyamán törölni akarod az eventhez tartozó funkciót.
- esetleg más eventhez is hozzáakarod kötni a funkciót.
A második lehetőség pedig nem baromság, hanem lambda funkciónak nevezik (C++-ban is most vezették be). Praktikusnak mondhatóak hiszen nem kell külön funkciót létrehozni.
getResourceRootElement helyett pedig használhatod az MTA által előre definiált resourceRoot változó értékét, hiszen ez ugyan úgy megegyezik az előbb említett funkcióval (ezt minden egyes resourcnál létrehozza).
Lásd: https://github.com/multitheftauto/mtasa-blue/blob/c0cc8f76b6806ee1279e77727cc440371dc63d07/Client/mods/deathmatch/logic/lua/CLuaMain.cpp#L169
 
[/quote]
A kezelőben létrehozott (2.eset) funkció nem külön funkció? De, tehát hülyeség az elv :)
Nem kell mindenképpen megmagyarázni, hogy nem nekem van igazam, mert a végén te jöhetsz ki rosszul :)
Cím: Mi a különbség addEventHandler....
Írta: Memphis - 2016. Szeptember 13. - 23:00:25
A kezelőben létrehozott (2.eset) funkció nem külön funkció? De, tehát hülyeség az elv :)
Nem kell mindenképpen megmagyarázni, hogy nem nekem van igazam, mert a végén te jöhetsz ki rosszul :)
[/quote]
Nem igen ismertelek, de már megvan rólad az első benyomáson a fórum kommenteid illetve a többiek véleményéből adódóan, levontam a következtetést. Nem rossz hogy téged mindenki utál és te nem teszel ellene ? Mindenkinek beszólogatsz, kijavítod a nálad tapasztaltabb embereket. Wanna be scripter.
Valószínűleg Drake-nek van igaza. (Nem vagyok MTA-s.)
 :angel:
Cím: Mi a különbség addEventHandler....
Írta: AnthonyGates - 2016. Szeptember 13. - 23:08:40
Gáz, hogy amint nem ért néhány szót, egyből elkezdi szapulni a másikat a nagy hozzáértő.
Ugyan ez az eset, az \"OOP\" és a \"Procedurális\" módszereknél más nyelvekben. Szokj hozzá, többféle képpen meg lehet oldani problémákat.
Egyik sem rosszabb, mint a másik, mindkettőnek vannak előnyei, és hátrányai. Ezeket már leírták fenn. Ne próbálj okosabbnak tűnni, mint ami vagy.
PRO TIP: nézzél már utána a \"public\", \"private\" vagy a \"globális\", illetve \"lokális\" szavak jelentésnek, főleg a programnyelvekben. A szintjénél nem jut feljebb egy eseményhez csatolt funkció, ám ha az eseményen kívül hozod létre, akkor máskor is ott lesz.
Pszeudo:
1.
funkció létrehozás
esemény trigger
paraméter lekérdezése
funkció meghívása, paraméter átadása
funkció lefut, visszaad egy értéket
esemény vége
2.
Esemény trigger
paraméter lekérése
Funkció létrehozás, paraméter átadása
funkció lefut, visszaad egy értéket
funkció \"törlődik\".
Esemény vége.
Cím: Mi a különbség addEventHandler....
Írta: DrAkE - 2016. Szeptember 13. - 23:11:00
Idézetet írta: Xistance date=1473799175\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63031\" data-ipsquote-contentclass=\"forums_Topic


 

 

Mi a különbség a kettő között?!
Melyiket célszerűbb használni?!
1.
 
function replaceModel()
    dff = engineLoadDFF(\"files/wheel_lr1.dff\", 1077)
    engineReplaceModel(dff, 1077)
end
addEventHandler ( \"onClientResourceStart\", getResourceRootElement(getThisResource()), replaceModel)

 
2.
 
addEventHandler(\"onClientResourceStart\", resourceRoot, function()
    dff = engineLoadDFF(\"files/wheel_lr1.dff\", 1077)
    engineReplaceModel(dff, 1077)
end)

 

Elsőt használd mindig. Jog adásnak a getresourcerootelementet használd mindig. Mondhatjuk felesleges baromságnak a második lehetőséget.
 
[/quote]
Tévedsz.
Az elsőt akkor ajánlatos használni, ha:
- jobban átakarod látni a scriptet
- későbbiek folyamán törölni akarod az eventhez tartozó funkciót.
- esetleg más eventhez is hozzáakarod kötni a funkciót.
A második lehetőség pedig nem baromság, hanem lambda funkciónak nevezik (C++-ban is most vezették be). Praktikusnak mondhatóak hiszen nem kell külön funkciót létrehozni.
getResourceRootElement helyett pedig használhatod az MTA által előre definiált resourceRoot változó értékét, hiszen ez ugyan úgy megegyezik az előbb említett funkcióval (ezt minden egyes resourcnál létrehozza).
Lásd: https://github.com/multitheftauto/mtasa-blue/blob/c0cc8f76b6806ee1279e77727cc440371dc63d07/Client/mods/deathmatch/logic/lua/CLuaMain.cpp#L169
 
[/quote]
A kezelőben létrehozott (2.eset) funkció nem külön funkció? De, tehát hülyeség az elv :)
Nem kell mindenképpen megmagyarázni, hogy nem nekem van igazam, mert a végén te jöhetsz ki rosszul :)
 
[/quote]
Mivel a nevében benne van, hogy lambda funkció (Luaban anonymous funkció), ezért funkciónak számít annyi különbséggel, hogy a funkciónak a memória címét nem tudod lekérni (ezért máris nem tudod meghívni a blokkon kívül egy másik helyen), ellenben az elnevezett funkciókkal. :) Illetve mikor elnevezett funkciókról beszélünk, azok igazság szerint csak egy változók, amik memória címet tárolnak el az adott funkcióhoz :)
És logikai alapodból kiindulva az elnevezett funkciók meg csak sima változók és nem funkciók :D
Ahhoz meg, hogy ki jött ki szarabbul nem mondanék semmit :D
Cím: Mi a különbség addEventHandler....
Írta: Xenius - 2016. Szeptember 14. - 19:18:36
Xistance[/member]
resourceRoot = getResourceRootElement(getThisResoure())
ez egy előre definiált változó, olvass utána.
Amúgy nincs szinte semmi különbség, az elsőt viszont meg tudod hívni akár máshol is, míg a másodikat nem.

Dupla hozzászólás automatikusan összefûzve. ( 2016. Szeptember 14. - 19:23:39 )

\"child_rockinghorse.gif\"
Amúgy itt leírtam:
https://sampforum.hu/index.php?topic=60678.0
Cím: Mi a különbség addEventHandler....
Írta: AlexSwamp - 2016. Szeptember 15. - 09:54:15
Nem tudom mit vártok eleve egy olyan embertől, aki csak szavakkal dobálózik és közben azt se tudja mit jelent. Facebook csoportok nagy részéből kirakták már, nem véletlen. :D Mellesleg vicces, mikor elkezdi, hogy optimalizál meg ilyesmi, aztán közben nála ez annyit jelent, hogy dxDrawRectangle minden, holott ez közel sem optimalizálás.... :D
 
\"9a8314b80d654f579e5a76239fe2fd23.png\"