Szerző Téma: Hogyan tudok szerver oldalról átvinni egy változót kliens oldalra mjd hasznalni?  (Megtekintve 1761 alkalommal)

Nem elérhető peter1234

  • 0
  • Discord: Péter#5675
    • Profil megtekintése
    • heteromta
Sziasztok! Hogyan tudok szerver oldalon mysql adatbázishoz csatlakozni, majd kiválasztani onnan egy adatot, változóba helyezni és azt a változót átvinni kliens oldalra? A változót kliens oldalon szeretném használni. Előre is köszönöm a segitségeteket!
« Utoljára szerkesztve: 2020. Április 19. - 14:31:09 írta peter1234 »

Nem elérhető KrisT

  • 106
    • Profil megtekintése
Re:Hogyan tudok szerver oldalról átvinni egy változót kliens oldalra mjd hasznalni?
« Válasz #1 Dátum: 2020. Augusztus 16. - 12:22:06 »
0
Szia! Van egy olyan függvény, hogy https://wiki.multitheftauto.com/wiki/DbConnect. Ezzel tudsz csatlakozni. Ezt a csatlakozást mentsd le egy változóba:

-- SZERVER OLDAL --
local conenction = dbConnect([...])
aztán jön az adatbázisból lekérdezés., Ehhez ezt a függvényt használjuk: https://wiki.multitheftauto.com/wiki/DbQuery
Ha például van egy "characters" táblád, és abból le akarod kérdezni az XY serialhoz tartozó adatokat, például az "admin" értékét, akkor azt ígcs csinálod meg:

function queryFunction(player,cmd,serial) -- a funkció fusson le, és a "player" változóba mentse le azt az játékost, aki beírta a parancsot, a "cmd" változóba a parancs nevét, amit beírt, a "serial" ba a parancs beírása utáni első argumentumot, ami a mi esetnkben a keresett játékos serialja lesz
local qh = dbQuery(connection,"SELECT * FROM adatok WHERE serial=?",serial) -- létrehozol egy változót, a qh-t, mint queryHandler, majd abba lekérdezel egy táblát. Az idézőjelek közözzi részleg azt jelenti rendre: jelölj ki mindent az adatok táblából, ahol a serial=?. Itt a következő argumentum kerül az első kérdőjel helyére, azaz az serial.

local res = dbPoll(qh,500) -- itt a dbPoll kicsomagolja a táblát a res (mint response) változóba, amit kaptál, a qh-ba lementett táblát. Ha a szerver nem válaszol, 500 miliszekundum után megszakítja a folyamatot.
if res then -- ha létezik a tábla
     if (#res > 0) -- ha a tábla soarinak száma (#res) nagyobb mint nulla
          for i, value in ipairs(res) do -- menejn végig for ciklussal ennek a táblának a sorain
               if (value["admin"] >= 1) then -- ha a "value" sornak az "admin" oszlopának az értéke nagyobb, vagy egyenlő mint nulla
                    triggerClientEvent("infoFromServer",root,value["admin"],player) -- triggerelünk egy kliens oldali eventet, aminek most meg kellene hívódnia. a root-ra, azaz minden elementre meghívjuk ezt a triggerelést. Első paraméternek megadjuk neki a "value["admin"]"-t, másodiknak pedig a játékost, aki beírta a parancsot: "player". Most nézzük meg a kliens oldalt.
               end
          end
     end
     dbFree(qh) -- elengedjük a táblát, már nincs ránk szükségünk rá, ne fogyassza a memóriát
end
addCommandHandler("query",queryFunction) -- létrehozunk egy parancsot "query" névvel, majd megadjuk, hogy a "queryFunction" függvény fusson le ennek a parancsnak a beírásakor

-- KLIENS OLDAL --
addEvent("infoFromServer",true) -- itt létrehozzuk az eventet, amit megtriggereltünk szerveroldalról
function infoFromServerHandler (adminLVL, player) -- ugye ráküldtük a functionra triggerelésnél elsőnek az adminszintet, másodjára azt a játékost, aki beírta  a parancsot.
     if localPlayer == player then -- ha a kliens oldali helyi játékos (localplayer) az az a játékos, aki beírta szerver oldalon a parancsot (player). Erre azért van szükség, mert az összes játékosnak meghívódik ez a kliens oldali event, mivel root-tal triggereltünk, vagy például az event root-tal van hozzáadva.
          -- és itt már tudod használni a változót, amit áthoztunk, például ki tudod írni a chatbe:
          outputChatBox("A kiválasztott játékos adminszintje:" ..tostring(adminLVL).."!")
     end

addEventHandler("infoFromServer",root,infoFromServerHandler) -- itt hozzáadjuk az infoFromServer eventet. Ez fusson le a "root", azaz összes elementnek, majd hívódjon meg ezen event meghívódásakor a infoFromServerHandler function.

Remélem tudtam segíteni.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal