GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Jawitt le 26 Juin 2011, 19:37:42
-
Bonsoir,
Je suis en train de faire un GM en SQL pour ma première fois (pour le sql), et donc tout marche bien.. SAUF le système admin que j'essaye de créer..
En haut de mon GM, j'ai mis ça :
enum PlayerData
{
pUsername[24],
pPassword[24],
pKills[11],
pDeaths[11],
pScore[11],
pMoney[11],
pNiveauAdmin,
pIP[50]
};
new pStats[MAX_PLAYERS][PlayerData];
Dans mon OnDialogResponse, j'ai mis ça (dans l'inscription) :
format(Query, sizeof(Query), "INSERT INTO `playerinfo` (`user`, `password`, `kills`, `deaths`, `score`, `money`, `NiveauAdmin`, IP) VALUES ('%s', '%s', %s, %s, %s, %d, '%s')", escpname, escpass, pStats[playerid][pKills], pStats[playerid][pDeaths], pStats[playerid][pScore], pStats[playerid][pMoney], pStats[playerid][pNiveauAdmin], PIP);
mysql_query(Query);
Je précise aussi que j'ai mis la valeur à 5 dans AdminNiveau dans la BDD.
Puis j'ai créer une commande permettant de voir si le système marchait :
if (strcmp("/testadmin", cmdtext, true, 10) == 0)
{
if(pStats[playerid][pNiveauAdmin] >= 1)
{
SendClientMessage(playerid, COULEUR_ROUGE, "Le système d'administrateur fonctionne parfaitement !");
}
else
{
SendClientMessage(playerid, COULEUR_ROUGE, "Vous n'êtes pas un administrateur !");
}
return 1;
}
Je précise que j'ai bien une colonne se nommant NiveauAdmin dans ma table playerinfo..
Merci d'avance, cordialement.
-
Dans ce que tu montres, je ne vois pas l'endroit où tu vas lire les données dans la table 'playerinfo' (QUERY).
Ton problème vient certainement de là.
++
Syg
-
Dans ce que tu montres, je ne vois pas l'endroit où tu vas lire les données dans la table 'playerinfo' (QUERY).
Ton problème vient certainement de là.
++
Syg
Comment dois-je faire ?
J'avais pensé à mettre ça dans mon OnPlayerConnect :
format(Query, sizeof(Query), "SELECT * FROM `playerinfo` WHERE `NiveauAdmin` = '%d'", pStats[playerid][pNiveauAdmin]);
mysql_query(Query);
Mais ça ne marche toujours pas...
-
C'est bien de faire une requête, mais c'est mieux d'en récupérer le retour ;).
-
Bah j'ai regardé mais je ne trouve pas comment je pourrais faire, pourrais-tu m'éclaircir ? merci !
-
Pour la requête INSERT INTO, tu n'as rien d'intéressant à récupérer, si tous est bien configuré, les données transmissent devraient être ajouté à la base de donnée.
format(Query, sizeof(Query), "SELECT * FROM `playerinfo` WHERE `NiveauAdmin` = '%d'", pStats[playerid][pNiveauAdmin]);
mysql_query(Query);
Pourquoi pas, mais comment tu récupère la valeur de NiveauAdmin, tu ne peux pas mettre une valeur aléatoire ;).
Pour récupérer les données de ton joueur, il faut stocker ces données correctement, à l'aide de son pseudo et pourquoi pas, d'un mot de passe.
public AFunction()
{
new query[256] = "";
new result[256] = "";
new field[8][256];
query = "SELECT `user`, `password`, `kills`, `deaths`, `score`, `money`, `NiveauAdmin`, `IP` FROM `playerinfo` WHERE `user` = 'Jawitt' ORDER BY `id` DESC LIMIT 1;";
mysql_query(query);
mysql_store_result(handle);
mysql_fetch_row(result, "*", handle);
xSplit(result, field, '*');
printf("Information: %s - %s - %s", field[0], field[1], field[2], field[3], field[4], field[5], field[6], field[7]);
}
stock xSplit(const strsrc[], strdest[][], delimiter)
{
new i, li, aNum, len;
while(i <= strlen(strsrc))
{
if(strsrc[i] == delimiter || i == strlen(strsrc))
{
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i + 1;
aNum++;
}
i++;
}
return 1;
}
-
Tout d'abord, merci de m'accorder de ton temps.
Ensuite, je crois avoir compris la fonction, par contre ce que je voudrais comprendre, c'est que exemple : je met une ligne du genre
Afunction(playerid);
Et pour la compilation, undefined symbol "handle" je met simplement new handle; ??
Par la suite, j'aimerais simplement savoir comment faire appel à ta fonction, c'est vrai que je pose beaucoup de question, mais je débute dans le script MySQL, même si j'ai fais des recherches sur internet, je ne trouve pas réponse à tout.
Merci bien :)
-
handle est une variable qui contient le retour de la fonction mysql_connect.
Pour faire appel à la fonction, tu fais comme ceci:
AFunction();
-
D'accord, ne serait-ce pas ça à mettre par tout hasard :
new handle = 0;
Est-ce que c'est bon comme ça ? (je suis pas sûr moi ^^)
Merci :)
-
Je t'ai dit quelle doit contenir la valeur de retour de la fonction mysql_connect.
-
Ok... bon je vais chercher de mon côté.
Bon, si je fais un script du genre :
stock GNVA(playerid)
{
new query[100];
format(query,sizeof(query),"SELECT `*****` FROM `*****` WHERE `****`='%s'",GetName(playerid));
mysql_query(query);
mysql_store_result();
mysql_free_result();
return strval(query);
}
Y'a possibilité que ça marche ? en le modifiant bien sûr..
-
J'ai oublié de te demander, quelle plugin utilise-tu ?
-
SA-MP MySQL plugin R5
Copyright (c) 2008-2010, G-sTyLeZzZ