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: Noname20 - 2017. Augusztus 11. - 21:23:31

Cím: getMaxPlayers Kliens oldalon?
Írta: Noname20 - 2017. Augusztus 11. - 21:23:31
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 
Cím: getMaxPlayers Kliens oldalon?
Írta: thegergo02 - 2017. Augusztus 11. - 21:31:29
Szerver oldalra:
 

Eventeknél nincs return, köszi @id100

 
 E: De mielőtt elkezdesz szkriptelni, olvasd át ezt: https://www.lua.org/docs.html
Cím: getMaxPlayers Kliens oldalon?
Írta: id100 - 2017. Augusztus 12. - 00:52:14
De eventeknél nincs return genius
 
Külön változó kell rá, két event (kliens oldalra 1, szerverre 1)
Cím: getMaxPlayers Kliens oldalon?
Írta: MakroBox - 2017. Augusztus 12. - 23:31:08
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.. 
Cím: getMaxPlayers Kliens oldalon?
Írta: Noname20 - 2017. Augusztus 13. - 00:59:19
Köszi mindenkinek :3 
Cím: getMaxPlayers Kliens oldalon?
Írta: Noname20 - 2017. Augusztus 13. - 10:27:58
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? 
Cím: getMaxPlayers Kliens oldalon?
Írta: thegergo02 - 2017. Augusztus 13. - 10:43:39
mi az a \'cucc\'? Létezik az valahol?
Cím: getMaxPlayers Kliens oldalon?
Írta: Noname20 - 2017. Augusztus 13. - 10:46:36

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
Cím: getMaxPlayers Kliens oldalon?
Írta: MakroBox - 2017. Augusztus 13. - 10:47:47
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)
Cím: getMaxPlayers Kliens oldalon?
Írta: thegergo02 - 2017. Augusztus 13. - 10:47:55
onClientPlayerJoin
 
E: Rosszul írtad kliensoldalon.
Cím: getMaxPlayers Kliens oldalon?
Írta: Noname20 - 2017. Augusztus 13. - 10:48:51
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! 
Cím: getMaxPlayers Kliens oldalon?
Írta: MakroBox - 2017. Augusztus 13. - 10:51:47
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.