• 06 Juillet 2025, 04:59:54


Auteur Sujet: Aide GUI  (Lu 6071 fois)

0 Membres et 2 Invités sur ce sujet

Hors ligne Heisenberg

  • *
  • Tueur
  • Messages: 50
    • Voir le profil
Aide GUI
« le: 10 Septembre 2011, 01:35:06 »
Bonjour à tous,

Dans la création de mon serveur, j'ai crée une GUI de connection, elle comporte deux choix différents, s'enregistrer et de connecter (quand on a déjà un compte). Bref, quand la personne clique sur "Enregistrement" voilà c'qu'il se passe:

function onButtonClick(btnName, bState)
{
    if(btnName == GUI1.button.getName())
    {
        addChatMessage("Tu ne peux pas t'enregistrer directement, il te faudra passer par notre forum : *******.net. BONNE CHANCE!", 0xFF0000AA);
        GUI1.window.setVisible(false);
        GUI1.windowshown = false;
        guiToggleCursor(false);
    }

etc...

Seulement voilà, j'aimerais également que la personne soit kickée automatiquement, puisqu'elle a été redirigée sur le forum. Mais je sais pas du tout comment faire, puisque les GUI sont sur le Clientscript, il faut donc que je relie les GUI ( présente dans le clientscript ) avec mon GM ( présent dans les scrits ).
Le problème est que je ne sais pas du tout comment faire, voilà si vous pouviez me filer quelques tuyaux à ce sujet ça serait super, merci beaucoup !

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Aide GUI
« Réponse #1 le: 10 Septembre 2011, 13:06:50 »
Pour ça, il faut que tu appelles un event dans le côté serveur :

Sur ton GM (serverside) :

addEvent("kickPlayerFromClientSide", function(playerid) {
     kickPlayer(playerid, false);
});

Sur ton script client :

triggerServerEvent("kickPlayerFromClientSide");
Et c'est tout.

Hors ligne Heisenberg

  • *
  • Tueur
  • Messages: 50
    • Voir le profil
Re : Aide GUI
« Réponse #2 le: 10 Septembre 2011, 19:19:22 »
Super merci ApokalypsS, et j'dois procéder de la même façon pour le login ? Puisque j'ai mis également un bouton pour se login etc...
Pour le nom de l'event je choisis ou il y a un event prévu à cet effet du genre : logPlayerClientSide ?

Et sinon pour ton event que t'as donné, la fonction je l'appelle comment ? onkickPlayerFromClientSide ?
« Modifié: 10 Septembre 2011, 19:33:45 par Heisenberg »

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Aide GUI
« Réponse #3 le: 10 Septembre 2011, 19:39:21 »
Tu peux appeler les event comme tu veux.

Hors ligne Heisenberg

  • *
  • Tueur
  • Messages: 50
    • Voir le profil
Re : Aide GUI
« Réponse #4 le: 10 Septembre 2011, 19:46:17 »
Nickel j'ai enfin compris. Merci beaucoup.

Sinon, j'ai mis en place une login box, avec le pseudo ID, le mdp, puis le bouton login. Je veux en fait que quand le joueur appui sur le bouton "Login", cela effectue la fonction /login que j'ai déjà dans mon GM et que je voudrais remplacer par la GUI.
J'ai cherché un peu et j'ai trouvé ça :

// get user and password from some GUI login box
 
triggerServerEvent("login", username, password);
 
// ...
A mettre dans le client.

function loginHandler(playerid, username, password)
{
    // Check if username and password are valid
    // ...
}
addEvent("login", loginHandler);
A mettre dans le script.

Voici mon script dans mon GM :

function loginHandler(playerid, username, password)
{
    if(!ini.keyExists("PlayerInfo", "password"))
return sendPlayerMessage(playerid, "Tu n'es pas enregistré!", COLOR_RED, false);
kickPlayer(playerid, false);

if (md5(cmd[1]) != ini.getKey("PlayerInfo", "password"))
return sendPlayerMessage(playerid, "Mot de passe incorrect!", COLOR_RED, false);

sendPlayerMessage(playerid, "Tu as été logué avec succès!", COLOR_GRAYBLUE, false);
setPlayerModel(playerid, ini.getKey("PlayerInfo", "skin").tointeger());
setPlayerMoney(playerid, ini.getKey("PlayerInfo", "money").tointeger());
Admin[playerid] = ini.getKey("PlayerInfo", "level").tointeger();
Logged[playerid] = 1;
togglePlayerControls(playerid, true)
ini.setKey("PlayerInfo", "ip", md5(getPlayerIp(playerid).tostring()));
ini.saveData();

if (Admin[playerid] == 0)
return log("[C'ADMIN]"+getPlayerName(playerid)+" was auto logged in!");

sendPlayerMessage(playerid, "Admin level: " + Admin[playerid] + "!", COLOR_GRAYBLUE, false);
log("[C'ADMIN]" + getPlayerName(playerid)+" was auto logged in with Admin level "+Admin[playerid]+"!");
return 1;
}
addEvent("login", loginHandler);

Ca ne marche pas, je cale encore, désolé de te harceler ApoKalypsS, mais t'es l'un des seuls à pourvoir m'aider lol
« Modifié: 11 Septembre 2011, 21:33:33 par Heisenberg »

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Aide GUI
« Réponse #5 le: 12 Septembre 2011, 19:02:59 »
triggerServerEvent("login", username, password);
Ici, dans le client, utilise .getText() pour récupérer la valeur d'une EditBox :

local username = GUIEditBox();
local password= GUIEditBox();
...

triggerServerEvent("login", username.getText(), password.getText());

 ;)

Hors ligne Heisenberg

  • *
  • Tueur
  • Messages: 50
    • Voir le profil
Re : Aide GUI
« Réponse #6 le: 12 Septembre 2011, 19:22:28 »
Merci beaucoup, encore quelques questions :
Tout ça est à mettre dans le client alors ?

Sinon pour cette ligne du script qui vérifie si le password est bon :

if (md5(cmd[1]) != ini.getKey("PlayerInfo", "password"))
Comment je fais pour l'adapter du coup, puisque je tape plus /login mdp, donc cmd[1] n'existe plus.

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Aide GUI
« Réponse #7 le: 12 Septembre 2011, 20:22:02 »
Ton paramètre est password, donc remplace cmd[1] par password.
Sinon, pas besoin de mettre en md5, on peut le décrypter, donc autant se créer un crypt soi-même.

Hors ligne Heisenberg

  • *
  • Tueur
  • Messages: 50
    • Voir le profil
Re : Aide GUI
« Réponse #8 le: 12 Septembre 2011, 22:05:41 »
Super merci de ton conseil, ça va déjà mieux MAIS :
Voici le code sur mon GM :

addEvent("login", function(playerid) {
function loginHandler(playerid, username, password)
{
    if(!ini.keyExists("PlayerInfo", "password"))
return sendPlayerMessage(playerid, "Tu n'es pas enregistré!", COLOR_RED, false);
kickPlayer(playerid, false);

if (password != ini.getKey("PlayerInfo", "password"))
return sendPlayerMessage(playerid, "Mot de passe incorrect!", COLOR_RED, false);

sendPlayerMessage(playerid, "Tu as été logué avec succès!", COLOR_GRAYBLUE, false);
setPlayerModel(playerid, ini.getKey("PlayerInfo", "skin").tointeger());
setPlayerMoney(playerid, ini.getKey("PlayerInfo", "money").tointeger());
Admin[playerid] = ini.getKey("PlayerInfo", "level").tointeger();
Logged[playerid] = 1;
togglePlayerControls(playerid, true)
ini.setKey("PlayerInfo", "ip", md5(getPlayerIp(playerid).tostring()));
ini.saveData();

if (Admin[playerid] == 0)
return log("[C'ADMIN]"+getPlayerName(playerid)+" was auto logged in!");

sendPlayerMessage(playerid, "Admin level: " + Admin[playerid] + "!", COLOR_GRAYBLUE, false);
log("[C'ADMIN]" + getPlayerName(playerid)+" was auto logged in with Admin level "+Admin[playerid]+"!");
return 1;
}
addEvent("login", loginHandler);
});

Le script client :

local username = GUIEditBox();
local password = GUIEditBox();

function onButtonClick(btnName, bState)
{
if(btnName == GUI2.button2.getName())
    {
        triggerServerEvent("login", username.getText(), password.getText());  
    }
}
addEvent("buttonClick", onButtonClick);

J'obtient cette erreur à la ***, que j'ai jamais croisé  :wall

[2011-09-12 21:56:12] AN ERROR HAS OCCURED [wrong number of parameters]
[2011-09-12 21:56:12] CALLSTACK
[2011-09-12 21:56:12] LOCALS

« Modifié: 12 Septembre 2011, 22:21:46 par Heisenberg »

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Aide GUI
« Réponse #9 le: 13 Septembre 2011, 12:15:33 »
Toujours regarder la ligne et comprendre l'erreur...

Hors ligne Heisenberg

  • *
  • Tueur
  • Messages: 50
    • Voir le profil
Re : Aide GUI
« Réponse #10 le: 13 Septembre 2011, 12:33:58 »
Justement, le problème c'est qu'il ne m'indique aucune lligne :boulz

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Aide GUI
« Réponse #11 le: 13 Septembre 2011, 17:48:20 »
Il y a plusieurs problèmes :

addEvent("login", function(playerid) {
function loginHandler(playerid, username, password)
{
    if(!ini.keyExists("PlayerInfo", "password")) // ici tu ne met pas d'accolades + tu fais un retour juste après, donc tu kick le joueur direct même si le pass est bon
return sendPlayerMessage(playerid, "Tu n'es pas enregistré!", COLOR_RED, false);
kickPlayer(playerid, false);

if (password != ini.getKey("PlayerInfo", "password"))
return sendPlayerMessage(playerid, "Mot de passe incorrect!", COLOR_RED, false);

sendPlayerMessage(playerid, "Tu as été logué avec succès!", COLOR_GRAYBLUE, false);
setPlayerModel(playerid, ini.getKey("PlayerInfo", "skin").tointeger());
setPlayerMoney(playerid, ini.getKey("PlayerInfo", "money").tointeger());
Admin[playerid] = ini.getKey("PlayerInfo", "level").tointeger();
Logged[playerid] = 1;
togglePlayerControls(playerid, true)
ini.setKey("PlayerInfo", "ip", md5(getPlayerIp(playerid).tostring()));
ini.saveData();

if (Admin[playerid] == 0)
return log("[C'ADMIN]"+getPlayerName(playerid)+" was auto logged in!");

sendPlayerMessage(playerid, "Admin level: " + Admin[playerid] + "!", COLOR_GRAYBLUE, false);
log("[C'ADMIN]" + getPlayerName(playerid)+" was auto logged in with Admin level "+Admin[playerid]+"!");
return 1;
}// ici tu ne fermes pas ta fonction addEvent();
addEvent("login", loginHandler); // tu ajoute la fonction dans ton event
});//tu fermer ton event trop tard
En fait, voilà comment ça marche :

addEvent("string",fonction);

Tu peux remplacer fonction par une fonction, ça revient au même :

addEvent("string", function (x) { });
ou

addEvent("string", x);
function x () { }

Idem pour les timers, et autre fonctions qui appellent une fonction.

Hors ligne Heisenberg

  • *
  • Tueur
  • Messages: 50
    • Voir le profil
Re : Aide GUI
« Réponse #12 le: 21 Septembre 2011, 20:36:55 »
Salut ApokalypsS, j'ai mis du temps à repondre désolé. Merci de tes infos, mais je doute de tout cerner  ;D

J'ai suivis le model que tu m'as donné pour ma fonction :

Citer
addEvent("string", x);
function x () { }

Sur mon script, ça devrait donner ça :

addEvent("login", function(playerid, username, password) {

    if(!ini.keyExists("PlayerInfo", "password"))
return sendPlayerMessage(playerid, "Tu n'es pas enregistré!", COLOR_RED, false);
kickPlayer(playerid, false);

if (password != ini.getKey("PlayerInfo", "password"))
return sendPlayerMessage(playerid, "Mot de passe incorrect!", COLOR_RED, false);

sendPlayerMessage(playerid, "Tu as été logué avec succès!", COLOR_GRAYBLUE, false);
setPlayerModel(playerid, ini.getKey("PlayerInfo", "skin").tointeger());
setPlayerMoney(playerid, ini.getKey("PlayerInfo", "money").tointeger());
Admin[playerid] = ini.getKey("PlayerInfo", "level").tointeger();
Logged[playerid] = 1;
togglePlayerControls(playerid, true)
ini.setKey("PlayerInfo", "ip", md5(getPlayerIp(playerid).tostring()));
ini.saveData();

if (Admin[playerid] == 0)
return log("[C'ADMIN]"+getPlayerName(playerid)+" was auto logged in!");

sendPlayerMessage(playerid, "Admin level: " + Admin[playerid] + "!", COLOR_GRAYBLUE, false);
log("[C'ADMIN]" + getPlayerName(playerid)+" was auto logged in with Admin level "+Admin[playerid]+"!");
return 1;
});

J'ai du me tromper quelque parce que ça donne rien.  HELP  :(

« Modifié: 21 Septembre 2011, 20:48:26 par Heisenberg »

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Aide GUI
« Réponse #13 le: 21 Septembre 2011, 23:10:31 »
Fais attention à tes accolades quand tu vérifies si le joueur est enregistré et regarde les commentaires que j'ai mit sur le code en dessous.