GTAOnline.net

Multi Theft Auto (mta) => Scripting MTA [Lua Center] => Discussion démarrée par: ~CG~FatalTerror le 08 Avril 2011, 21:22:02

Titre: Transferer des données du coté server vers client
Posté par: ~CG~FatalTerror le 08 Avril 2011, 21:22:02
Bonjours les amis !  :D

Voila, j'ai un nouveau problème :wall.
Tout a l'heure je fesait mes petits scripts pour mon serveur RPG.

C'est une barre d'information sur l'etat du joueur faites avec des images et des labels  :-* ( Trop beau )
(http://nsa26.casimages.com/img/2011/04/08/110408094639960597.jpg)
Dont j'ai reussi a la faire fonctionner, le script récupere bien les informations du joueur sur le mode RPG  :laugh

Mais j'ai eu la merveilleuse idée de mettre ce script aussi sur mon serveur Race  :angelnot .
Donc tout marche SAUF l'argent   :blink

J'utilise une base de donnée SQL pour stocker l'argent du joueur, donc je doit récupérer l'argent comme sa:


...
local serial = getPlayerSerial(source)
local nick = getPlayerName(source)
local Money = executeSQLSelect ( "MoneyB", "Money","serial = '" .. serial .. "'")
guiSetText ( labelcash ,tonumber(Money[1]["Money"]).."$" )
...

Mais j'ai vu sur wiki.mtasa.com que executeSQLSelect etait du coté serveur seulement   :blink
Mon panel et les guiSetText sont du coté client, dont je me demande bien comment je vais faire pour monter l'argent  :bangin

Si je met
local serial = getPlayerSerial(source)
local nick = getPlayerName(source)
local Money = executeSQLSelect ( "MoneyB", "Money","serial = '" .. serial .. "'")
guiSetText ( labelcash ,tonumber(Money[1]["Money"]).."$" )
du coté serveur sa va pas aller car (je crois) guiSetText ne fonctionne que en client  :boulet

Alors sil vous plait aidez moi  :wall

Merci, FatalTerror
Titre: Re : Transferer des données du coté server vers client
Posté par: Ssk le 08 Avril 2011, 22:34:20
Tu peut envoyer la valeur de l'argent avec un TriggerEvent ^^
Titre: Re : Transferer des données du coté server vers client
Posté par: Citizen le 09 Avril 2011, 12:01:55
Salut FatalTerror,
Alors voici comment tu peux faire:
Server:
Code: (lua) [Sélectionner]
addEvent("sendMoneyData", true )
function sendMoneyData()
local serial = getPlayerSerial(source)
local nick = getPlayerName(source)
local Money = executeSQLSelect ( "MoneyB", "Money","serial = '" .. serial .. "'")
triggerClientEvent( source, "changeMoneyLabel", getRootElement(), Money[1]["Money"] )
end
addEventHandler("sendMoneyData", getRootElement(), sendMoneyData )

Client:
Code: (lua) [Sélectionner]
function recupTheMoney() -- appelle cette fonction n'importe où dans la partie client pour rafraîchir l'argent ( a condition que le label soit déjà créé )
triggerServerEvent("sendMoneyData", getLocalPlayer() )
end

addEvent("changeMoneyLabel", true )
function changeMoneyLabel(Money)
guiSetText ( labelcash ,tostring(Money).."$" )
end
addEventHandler("changeMoneyLabel", getLocalPlayer(), changeMoneyLabel )

Voilà je pense que sa fonctionne.
Titre: Re : Transferer des données du coté server vers client
Posté par: ~CG~FatalTerror le 09 Avril 2011, 17:27:18
Grand merci les dieux du LUA  :-*