Szerző Téma: getMaxPlayers Kliens oldalon?  (Megtekintve 1430 alkalommal)

getMaxPlayers Kliens oldalon?
« Dátum: 2017. Augusztus 11. - 21:23:31 »
0
Noos, az lenne a problémám, hogy kliens oldalon valahogy dxDrawText el ki szeretném írni a maximális játékos számot, de ugye ez egy szerver oldali funkció, és sehogysem sikerül megcsinálnom. Próbáltam szerver oldalon létrehozni egy \"lekérős\" cuccot 
 

function maxplayer()
getMaxPlayers()
end
addEvent(\"maxPlayers\", true)
addEventHandler(\"maxPlayers\", root, maxplayer)

 
Ami szép és jó elvileg működik. 
 
Kliens oldali része : 
 

function maxp()
    local maxp = triggerServerEvent(\"maxPlayers\", root)
    outputChatBox(\"maxPlayers: \" ..maxp)
end
addCommandHandler(\"tesztike\", maxp)

 
Itt már valami nemjó, de nem tudok rájönni micsoda. 
 
Error: attempt to concatenate local \'maxp\' (a boolean value) 
 
Segítene valaki? :D Előre is köszi 

getMaxPlayers Kliens oldalon?
« Válasz #1 Dátum: 2017. Augusztus 11. - 21:31:29 »
+1
Szerver oldalra:
 

Eventeknél nincs return, köszi @id100

 
 E: De mielőtt elkezdesz szkriptelni, olvasd át ezt: https://www.lua.org/docs.html
« Utoljára szerkesztve: 2017. Augusztus 13. - 09:34:09 írta thegergo02 »

Nem elérhető id100

  • 903
    • Profil megtekintése
getMaxPlayers Kliens oldalon?
« Válasz #2 Dátum: 2017. Augusztus 12. - 00:52:14 »
+2
De eventeknél nincs return genius
 
Külön változó kell rá, két event (kliens oldalra 1, szerverre 1)

getMaxPlayers Kliens oldalon?
« Válasz #3 Dátum: 2017. Augusztus 12. - 23:31:08 »
+1
Esetleg, ha még kezdőbb vagy a fejlesztésben, ajánlom, hogy amikor egy player felcsatlakozik, akkor állítsd be egy elementData-ba a max playerszámot szerveroldalon, és kliensoldalon egyszerűen le is tudod kérni.
 
(Szerveroldal: addEventHandler(\'onPlayerJoin\', root, function() setElementData(source, \'server:maxp\', getMaxPlayers()) end) || Kliensoldal: getElementData(localPlayer, \'server:maxp\'))
 
Ha @id100 megoldását választod, akkor setTimer()-rel frissítsd a max playerszámot, nehogy betedd onClientRender-be, mert szétfagy a szerver.. 
« Utoljára szerkesztve: 2017. Augusztus 12. - 23:31:39 írta MakroBox »

getMaxPlayers Kliens oldalon?
« Válasz #4 Dátum: 2017. Augusztus 13. - 00:59:19 »
0
Köszi mindenkinek :3 

getMaxPlayers Kliens oldalon?
« Válasz #5 Dátum: 2017. Augusztus 13. - 10:27:58 »
0
Idézetet írta: MakroBox date=1502573468


   
      Esetleg, ha még kezdőbb vagy a fejlesztésben, ajánlom, hogy amikor egy player felcsatlakozik, akkor állítsd be egy elementData-ba a max playerszámot szerveroldalon, és kliensoldalon egyszerűen le is tudod kérni.
   
   
      (Szerveroldal: addEventHandler(\'onPlayerJoin\', root, function() setElementData(source, \'server:maxp\', getMaxPlayers()) end) || Kliensoldal: getElementData(localPlayer, \'server:maxp\'))
   
   
      Ha @id100 megoldását választod, akkor setTimer()-rel frissítsd a max playerszámot, nehogy betedd onClientRender-be, mert szétfagy a szerver.. 


dxDrawText(\"Online Játékos: \"..tostring(cucc)  \" / \"..onlineplayer, sx-770, sy-260, _, _, tocolor(255, 255, 255, 255), 1, dxfont)
 
Error : \'attempt to call string value\' ha pedig a tostringet leszedem róla akkor \'attempt to call number value\' ha pedig csak simán a local cucc ot hívom meg amiben benne van a getElementData akkor pedig \'attempt to call local cucc (boolean value). De ha egy külön funkcióban outputchatboxosan íratom ki vele akkor működik. Mi lehet a baja, és hogyan lehet megcsinálni? 
« Utoljára szerkesztve: 2017. Augusztus 13. - 10:42:25 írta Noname20 »

getMaxPlayers Kliens oldalon?
« Válasz #6 Dátum: 2017. Augusztus 13. - 10:43:39 »
+1
mi az a \'cucc\'? Létezik az valahol?

getMaxPlayers Kliens oldalon?
« Válasz #7 Dátum: 2017. Augusztus 13. - 10:46:36 »
0

function teszt()
    local cucc = getElementData(localPlayer, \'server:maxp\')
    outputChatBox(\"maxjatekos: \" ..cucc)
end
addCommandHandler(\"teszt\", teszt)
 
function szerveroldal()
    triggerServerEvent(\"maxjatekos\", localPlayer)
end
addEventHandler(\'onClientJoin\', getRootElement(), szerveroldal)
local cucc = getElementData(localPlayer, \'server:maxp\')
-- Szerver oldal
 
addEventHandler(\'onPlayerJoin\', root, function() setElementData(source, \'server:maxp\', getMaxPlayers()) end)
function maxPlayer()
setElementData(source, \'server:maxp\', getMaxPlayers())
end
addEventHandler(\"onPlayerJoin\", root, maxPlayer)
addEvent(\"maxjatekos\", true)
addEventHandler(\"maxjatekos\", root, maxPlayer)

 
És a funkción belül is megadtam neki local változónak
« Utoljára szerkesztve: 2017. Augusztus 13. - 10:46:59 írta Noname20 »

getMaxPlayers Kliens oldalon?
« Válasz #8 Dátum: 2017. Augusztus 13. - 10:47:47 »
+1
Idézetet írta: Noname20 date=1502612878


   
      dxDrawText(\"Online Játékos: \"..tostring(cucc)  \" / \"..onlineplayer, sx-770, sy-260, _, _, tocolor(255, 255, 255, 255), 1, dxfont)
   


Szerintem egy .. kimaradt, próbáld meg így:
 
dxDrawText(\"Online Játékos: \"..tostring(cucc)..  \" / \"..onlineplayer, sx-770, sy-260, _, _, tocolor(255, 255, 255, 255), 1, dxfont)

getMaxPlayers Kliens oldalon?
« Válasz #9 Dátum: 2017. Augusztus 13. - 10:47:55 »
+1
onClientPlayerJoin
 
E: Rosszul írtad kliensoldalon.
« Utoljára szerkesztve: 2017. Augusztus 13. - 10:48:29 írta thegergo02 »

getMaxPlayers Kliens oldalon?
« Válasz #10 Dátum: 2017. Augusztus 13. - 10:48:51 »
+1
Idézetet írta: MakroBox date=1502614067


   
      Szerintem egy .. kimaradt, próbáld meg így:
   
   
      dxDrawText(\"Online Játékos: \"..tostring(cucc)..  \" / \"..onlineplayer, sx-770, sy-260, _, _, tocolor(255, 255, 255, 255), 1, dxfont)
   


És tényleg lool :D Köszönöm szépen mindenkinek a segítséget! 

getMaxPlayers Kliens oldalon?
« Válasz #11 Dátum: 2017. Augusztus 13. - 10:51:47 »
+1
Idézetet írta: thegergo02 date=1502614075


   
      onClientPlayerJoin
   
   
      E: Rosszul írtad kliensoldalon.
   


És ahogy mondja @thegergo02, rosszul írtad az addEventHandler-t. De azt töröld is ki, szerveroldalon elég az onPlayerJoin, nem kell kliensoldalról egy triggerServerEventtel meghívni. 

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal