Triggerelés

Indította ScrepyX, 2016. december 30. - 15:39:30

Előző téma - Következő téma

ScrepyX

Sziasztok! Elég jól haladok a lua-val, viszont egy dolgot még mindig egyeltalán nem értek. A triggerelést. Tudnátok segíteni egy-egy példával?

Hasirama

#1
A triggereléssel szerver oldalról kliens oldalra, valamint fordítva lehet \"közlekedni\". Lehet hülyén fogalmaztam, de így meg lehet érteni:D
 
Kliens oldalon:
 

triggerServerEvent(\"szerverOldaliFunctionNeve\",root, localPlayer, adat1, adat2, adat3)

 
 
 
Ami a \"\" jel között van ugye az lesz a neve szerver oldalon a functionnak. Úgymond ez lesz meghívva, csak kliens oldalról. A root ugye hogy annak a személynek akivel éppen történik. Az adat1, adat2, adat3 pedig az egyéb dolgok(nem tudom hogy lehetne nevezni őket). Pl ha egy klikkelt elemet akarsz átvinni, vagy egy targetPlayer-t, akkor oda írod azokat.
 
Szerver oldalon pedig amikor fogadja:
 

addEvent(\"szerverOldaliFunctionNeve\",true)
addEventHandler(\"szerverOldaliFunctionNeve\",root,function(target, adat1, adat2, adat3)
 ...
end)

 
Itt van a function amire átjöttünk. A function(adat1, adat2, adat3)-nál lehet más megnevezésű a zárójelben lévő, de a darabszámnak meg kell felelni. Én ugyan azt szoktam használni, nem kavarodok bele.
 
 
 
Szerver oldalról kliens oldalra pedig ugyan az a menete, csak triggerelésnél így kell megadni:
 

triggerClientEvent(target,\"clientOldaliFunctionNeve\",getRootElement(), adat1, adat2, adat3)

 
 
 
 
 
Javítsatok ki, ha tévedek, hülyeséget nem akarok írni!:D

ScrepyX

Ezt a targetet és az adat1, adat2, adat3-mat el tudnád részletesebben magyarázni?

ScrepyX

Vagyis ha például kocsit szeretnék lerakni, akkor azt hogyan teszem.

Hasirama

Mondjuk van egy client akkor egy járműboltba veszel egy kocsit. Ugye amit nézegetsz kocsit, az mondjuk legyen = probakocsi.
 
Triggereled kliens oldalról szerver oldalra:
 

probakocsi = createVehicle ( 560, x, y, z, 0, 0, 0 )
model = getElementModel(probakocsi)
szin1, szin2, szin3, szin4 = getVehicleColor(probakocsi)
triggerServerEvent(\"jarmuLetrehozas\",root,localPlayer, probakocsi, model, szin1, szin2, szin3, szin4)

 
 
 
És a szerver oldalon pedig:
 

addEvent(\"jarmuLetrehozas\",true)
addEventHandler(\"jarmuLetrehozas\",root,function(target, model, szin1, szin2, szin3, szin4)
--itt meg a kliens oldalról áthoztad a targetet, amit egyenlő a playerrel(localPlayer), valamint a probakocsit, ami a választott járműved
local penz = tonumber(getElementData(target, \"money\")) or 0
if penz > 500 then
        .....
    end
end)

 
 
 
 
 
Vagy sima parancs, kliens oldalon:
 

function jarmuKeszit(thePlayer, model)
if model then
   triggerServerEvent(\"jarmuKeszites\",root, thePlayer, model)
else
   outputChatBox(\"[HASZNÁLAT] /makeveh [ModelID]\", 255, 255, 255)
end
end
addCommandHandler(\"makeveh\", jarmuKeszit)

 
Szerver oldal:
 

addEvent(\"jarmuKeszites\",true)
addEventHandler(\"jarmuKeszites\",root,function(target, model)
local x, y, z = getElementPosition(target)
local jarmu = createVehicle ( tonumber(model), x, y, z, 0, 0, 0 )
end)

 
 
 
De azt elmondom, hogy ezeket nem teszteltem, úgyhogy nem biztos, hogy működnek!

ScrepyX

Remek! Már csak az a baj, hogy nem tudok beleszálni... :) De működik amit leírtál.

Hasirama


https://wiki.multitheftauto.com/wiki/setVehicleLocked\" style=\"text-decoration:none;color:rgb(0,0,255);background:none;font-weight:700;\" rel=\"external nofollow\">setVehicleLocked ( jarmu, false )

ScrepyX

Szerintem ez nem az amire mi gondoltunk. Megnézem, pillanat

ScrepyX


Hasirama

Akkor hogy nem enged beszállni? Megnyomod az F-et, és semmi sem történik? Debugscript ír valamit?

ustanmufj

Nekem volt régen egy car-shop scriptem, ugyan igy oldaottam meg de most telorol nem tudok sokat mondani (elv mukodnie kéne)

BlackSy

A kocsi spawn-t kliens oldalra írod?

ustanmufj

Lehet bump, ma vettem észre, de klien oldalon létrehozott kocsiba nem lehet beszállni.
 
 

BlackSy

Ez így van, azért kérdeztem. :D