Szerző Téma: triggerServerEvent és a szerver oldal  (Megtekintve 1688 alkalommal)

triggerServerEvent és a szerver oldal
« Dátum: 2014. június 22. - 20:04:48 »
0 Show voters
Sziasztok! Lenne egy kis problémám amit nem tudok megoldani. Már mindenhogy próbáltam megnevezni a játékost akitől kéne a /me parancsot küldeni, mint úgy hogy source, mint úgy hogy thePlayer, mint úgy hogy client, mindenféleképpen próbáltam, és kliens oldalon is már próbáltam a thePlayer-t és a localPlayer-t, de nem működik. Mi lehet a gond?
Szerver oldal:
 

function sendPostaRP(thePlayer)
setTimer ( function()
exports.global:sendLocalMeAction(thePlayer, \"elkezdi keresgélni a levelet.\")
end, 1200, 1 )
setTimer ( function()
exports.global:sendLocalMeAction(thePlayer, \"kiszáll a kocsiból és berakja a postaládába a címzettnek szánt levelet.\")
end, 2400, 1 )
setTimer ( function()
exports.global:sendLocalMeAction(thePlayer, \"visszaül a járműbe.\")
end, 4800, 1 )
end
addEvent(\"sendPostaRP\", true)
addEventHandler(\"sendPostaRP\", getRootElement(), sendPostaRP)

 
Kliens oldal:
 

function varasPostaMarker(thePlayer)
local vehicle = getPedOccupiedVehicle(localPlayer)
if thePlayer == localPlayer and vehicle and getVehicleController(vehicle) == localPlayer and PostaM[getElementModel(vehicle)] then
deliveryStopTimer = setTimer(kovetkezoPostaMarker, 5200, 1)
outputChatBox(\"várj\")
triggerServerEvent(\"postaRP\", localPlayer)
addEventHandler(\"onClientMarkerLeave\", marker, postaMarkerCsekkolas)
--end
end
end

 
Előre is köszönöm a segítséget!

Carlos

  • Vendég
triggerServerEvent és a szerver oldal
« Válasz #1 Dátum: 2014. június 22. - 20:11:18 »
0 Show voters
Próbáld meg így:
 
function sendPostaRP()
setTimer ( function()
exports.global:sendLocalMeAction(source, \"elkezdi keresgélni a levelet.\")
end, 1200, 1 )
setTimer ( function()
exports.global:sendLocalMeAction(source, \"kiszáll a kocsiból és berakja a postaládába a címzettnek szánt levelet.\")
end, 2400, 1 )
setTimer ( function()
exports.global:sendLocalMeAction(source, \"visszaül a járműbe.\")
end, 4800, 1 )
end
addEvent(\"sendPostaRP\", true)
addEventHandler(\"sendPostaRP\", getRootElement(), sendPostaRP)

 

function varasPostaMarker(thePlayer)
local vehicle = getPedOccupiedVehicle(localPlayer)
if thePlayer == localPlayer and vehicle and getVehicleController(vehicle) == localPlayer and PostaM[getElementModel(vehicle)] then
deliveryStopTimer = setTimer(kovetkezoPostaMarker, 5200, 1)
outputChatBox(\"várj\")
triggerServerEvent(\"postaRP\", localPlayer)
addEventHandler(\"onClientMarkerLeave\", marker, postaMarkerCsekkolas)
--end
end
end

triggerServerEvent és a szerver oldal
« Válasz #2 Dátum: 2014. június 22. - 20:15:25 »
0 Show voters
Így is próbáltam már, de sajnos így sem működik.

Carlos

  • Vendég
triggerServerEvent és a szerver oldal
« Válasz #3 Dátum: 2014. június 22. - 20:29:51 »
0 Show voters
Próbáld meg a kliens oldalba lévő funkcióból kitörölni mindent kivéve a triggert és ha akkor se futtatja le a szerver oldalt akkor biztos nem kliens oldalon van a probléma

triggerServerEvent és a szerver oldal
« Válasz #4 Dátum: 2014. június 22. - 22:25:03 »
0 Show voters
Még mindig nem működik, megpróbáltam de nem jó. Lehet hogy a megnevezés rossz? Van egy olyan érzésem hogy a triggerServerEvent-nél írtam valamit rosszul, de nem értem hogy mit.
 

triggerServerEvent(\"sendPostaRP\", thePlayer)

 
Jelenleg most így van, ugyanis a funkciónál a thePlayer is meg van nevezve a zárójelen belül. Nem lehet hogy kétszer kell megnevezni a triggerelésnél a játékost? Szóval így:
 

triggerServerEvent(\"sendPostaRP\", thePlayer, localPlayer)

 
Erre tippelnék, bár lehet hogy hülyeség és nincs értelme. Viszont nem tudok rájönni hogy mi lehet a probléma.

Carlos

  • Vendég
triggerServerEvent és a szerver oldal
« Válasz #5 Dátum: 2014. június 22. - 22:33:27 »
0 Show voters
Kicsit megzavarodtam már, hogy mit is akarsz de szerintem ez az orvosság:
 
triggerServerEvent(thePlayer, \"sendPostaRP\", thePlayer)

triggerServerEvent és a szerver oldal
« Válasz #6 Dátum: 2014. június 22. - 23:15:05 »
0 Show voters
Ez ugyan úgy nem fog működni, az event neve elé nem kell beírni a játékost, legalábbis a wiki példája szerint.
 

bool triggerServerEvent ( string event, element theElement, [arguments...] )

 
Viszont írtad hogy megzavarodtál és hogy nem értesz. Az a probléma hogy szerver oldalon ugye ott van időzítőkkel megírva a /me parancs, és ezt szeretném kliens oldalra vinni hogy akkor lépjen érvénybe amikor a kliens oldali funkció. De az a baj hogy valamiért nem küldi a /me-s parancsokat, azaz nem sikerül kliens oldalra átküldeni a szerver oldali funkciót és nem tudom hogy mi lehet a gond.

Dupla üzenet összevonva ekkor: [time]2014. június 23. - 04:45:23[/time]

A problémát megoldottam, kliens oldalon használtam a funkciót a következő képpen:
 

                setTimer ( function()
   triggerServerEvent(\"sendLocalMeAction\", localPlayer, localPlayer, \"elkezdi keresgélni a levelet.\")
end, 1200, 1 )
setTimer ( function()
   triggerServerEvent(\"sendLocalMeAction\", localPlayer, localPlayer, \"kiszáll a kocsiból és berakja a postaládába a címzettnek szánt levelet.\")
end, 2400, 1 )
setTimer ( function()
   triggerServerEvent(\"sendLocalMeAction\", localPlayer, localPlayer, \"visszaül a járművébe.\")
end, 4800, 1 )

 
Ezen a módon kliens oldalon is lehet használni azt amit exports-al csak szerver oldalon lehet (ha esetleg valaki olyan problémába ütközne mint amilyenbe én is akkor ezzel a megoldással sokkal egyszerűbb). Remélem segítettem másoknak is és én is köszönöm a segítséget!
« Utoljára szerkesztve: 2014. június 23. - 04:46:30 írta Dzsozi »

Nem elérhető Xenius

  • 668
    • Profil megtekintése
triggerServerEvent és a szerver oldal
« Válasz #7 Dátum: 2014. június 23. - 17:11:56 »
0 Show voters
function sendPostaRP(player)
setTimer ( function(player)
exports.global:sendLocalMeAction(player, \"elkezdi keresgélni a levelet.\")
setTimer ( function(player)
   exports.global:sendLocalMeAction(player, \"kiszáll a kocsiból és berakja a postaládába a címzettnek szánt levelet.\")
      setTimer ( function(player)
         exports.global:sendLocalMeAction(player, \"visszaül a járműbe.\")
      end, 1200, 1, player )
end, 1200, 1, player )
end, 1200, 1, player )
end
addEvent(\"sendPostaRP\", true)
addEventHandler(\"sendPostaRP\", getRootElement(), sendPostaRP)

 

function varasPostaMarker(thePlayer)
local vehicle = getPedOccupiedVehicle(localPlayer)
if thePlayer == localPlayer and vehicle and getVehicleController(vehicle) == localPlayer and PostaM[getElementModel(vehicle)] then
deliveryStopTimer = setTimer(kovetkezoPostaMarker, 5200, 1)
outputChatBox(\"várj\")
triggerServerEvent(\"postaRP\", localPlayer, localPlayer)
addEventHandler(\"onClientMarkerLeave\", marker, postaMarkerCsekkolas)
end
end

 
Ennyi ...

Dupla üzenet összevonva ekkor: 2014. június 23. - 17:17:02

De egy okosabb ezt másképp oldaná meg.
 
local timers = {}
local done = {}
addEvent(\"sendPostaRP\", true)
addEventHandler(\"sendPostaRP\", getRootElement(), function(player)
if isTimer(timers[player]) then
killTimer(timers[player])
done[player] = 0
end
done[player] = 0
timers[player] = setTimer(function(player)
if done[player] == 0 then
   exports.global:sendLocalMeAction(player, \"elkezdi keresgélni a levelet.\")
   done[player] = 1
elseif done[player] == 1 then
   exports.global:sendLocalMeAction(player, \"kiszáll a kocsiból és berakja a postaládába a címzettnek szánt levelet.\")
   done[player] = 2
elseif done[player] == 2 then
   exports.global:sendLocalMeAction(player, \"visszaül a járműbe.\")
   done[player] = 0
   --- kész cuccos
end
end, 1200, 3, player)
end)

 
Boldog karácsonyt.
« Utoljára szerkesztve: 2014. június 23. - 17:17:02 írta Xenius »

Nem elérhető Legend

  • Adminisztrátor
  • 1830
    • Profil megtekintése
triggerServerEvent és a szerver oldal
« Válasz #8 Dátum: 2014. július 02. - 14:23:22 »
0 Show voters
[gmod]Zárok.[/gmod]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal