• 10 Juin 2024, 20:35:51


Auteur Sujet: Probleme fonction  (Lu 2008 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Probleme fonction
« le: 30 Août 2011, 16:50:01 »
Bonjour a tous,

Voila j'ai un petit probleme avec cette fonction de samp mysql :

samp_mysql_fetch_row

Voila le morceaux de code :

Code:

new query[64];
format(query, sizeof(query), "SELECT %s FROM joueurs WHERE id = %d LIMIT 1", sqlvalname, sqlplayerid);
samp_mysql_query(query);
samp_mysql_store_result();
if(samp_mysql_fetch_row(sqlresult)==1)
{
return 1;
}

Le serveur crash après l'utilisation de la fonction, si vous pourriez m'aidez a réglé ce légé problème.
Merci d'avance Très souriant

PS: excusez moi d'avoir poster dans la mauvaise section la premiere fois.
« Modifié: 30 Août 2011, 16:56:52 par Dark_revan »

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : Probleme fonction
« Réponse #2 le: 30 Août 2011, 21:49:33 »
J'ai edit mon message pour le code.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Probleme fonction
« Réponse #3 le: 31 Août 2011, 06:53:15 »
D'où sort la variable sqlresult ?

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : Probleme fonction
« Réponse #4 le: 31 Août 2011, 09:20:57 »
La variable sqlresult provien de la fonction dans ce cas précis elle égal PlayerInfo[playerid][pPassword]

Enfaite le but de ce code est de voir si le password de la variable PlayerInfo[playerid][pPassword] et le password dans la BD est le même.

Je me suis inspirer de modern topia pour ce code. Vu que je suis débutant en mysql.
« Modifié: 31 Août 2011, 09:23:33 par Dark_revan »

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Probleme fonction
« Réponse #5 le: 31 Août 2011, 13:52:40 »
C'est simplement que tu ne comprend pas réellement l'utilité des fonctions.
La fonction mysql_fetch_row permet de parcourir les résultats renvoyés par la requête faite précédemment (mysql_query).


new sQuery[64];

format(sQuery, sizeof(sQuery), "SELECT \"%s\" FROM joueurs WHERE id = %d LIMIT 1", sqlvalname, sqlplayerid);
samp_mysql_query(sQuery);
samp_mysql_store_result();

if(samp_mysql_num_rows() == 1)
{
return 1;
}

samp_mysql_free_result();

Et un conseil, change de plugin pour utiliser MySQL ;).
Un second conseil, utilise des guillemets pour encadrer une chaîne de caractères si tu ne veux pas avoir de mauvaise surprise.

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : Probleme fonction
« Réponse #6 le: 31 Août 2011, 13:58:12 »
Merci pour tes conseils, je les est appliquer et j'ai pris le plugin de G-Style (Mysql.dll)
Le problème avec ce plugin c'est que j'arrive pas a save mes données avec le onplayerupdate.
Pour le moment j'utilise le système de mordern topia qui est assez complexe je trouve pour le Onplayerupdate.

Voila mon morceaux de code :

Onplayerupdate

if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 1)
{
MySQLCheckConnection();
new query[MAX_STRING];
format(query, MAX_STRING, "UPDATE players SET ");
MySQLUpdatePlayerStr(query, PlayerInfo[playerid][pSQLID], "Password", PlayerInfo[playerid][pKey]);
MySQLUpdatePlayerInt(query, PlayerInfo[playerid][pSQLID], "Tut", PlayerInfo[playerid][pTut]);
MySQLUpdatePlayerInt(query, PlayerInfo[playerid][pSQLID], "Faction", PlayerInfo[playerid][pFaction]);
MySQLUpdatePlayerInt(query, PlayerInfo[playerid][pSQLID], "Race", PlayerInfo[playerid][pRace]);
MySQLUpdatePlayerInt(query, PlayerInfo[playerid][pSQLID], "Sexe", PlayerInfo[playerid][pSex]);
MySQLUpdateFinish(query, PlayerInfo[playerid][pSQLID]);
}
}

Fonction :

public MySQLUpdateFinish(query[], sqlplayerid) // by Luk0r
{
if (strcmp(query, "WHERE id=", false) == 0) mysql_query(query);
else
{
new whereclause[32];
format(whereclause, sizeof(whereclause), " WHERE id=%d", sqlplayerid);
strcat(query, whereclause, MAX_STRING);
mysql_query(query);
format(query, MAX_STRING, "UPDATE joueurs SET ");
}
return 1;
}

public MySQLUpdatePlayerInt(query[], sqlplayerid, sqlvalname[], sqlupdateint) // by Luk0r
{
MySQLUpdateBuild(query, sqlplayerid);
new updval[64];
format(updval, sizeof(updval), "%s=%d", sqlvalname, sqlupdateint);
strcat(query, updval, MAX_STRING);
return 1;
}

public MySQLUpdatePlayerFlo(query[], sqlplayerid, sqlvalname[], Float:sqlupdateflo) // by Luk0r
{
/* new query[128];
format(query, sizeof(query), "UPDATE players SET %s=%f WHERE id=%d", sqlvalname, sqlupdateflo, sqlplayerid);
mysql_query(query);*/
new flotostr[32];
format(flotostr, sizeof(flotostr), "%f", sqlupdateflo);
MySQLUpdatePlayerStr(query, sqlplayerid, sqlvalname, flotostr);
return 1;
}

public MySQLUpdatePlayerStr(query[], sqlplayerid, sqlvalname[], sqlupdatestr[]) // by Luk0r
{
MySQLUpdateBuild(query, sqlplayerid);
new escstr[128];
new updval[128];
mysql_real_escape_string(sqlupdatestr, escstr);
format(updval, sizeof(updval), "%s='%s'", sqlvalname, escstr);
strcat(query, updval, MAX_STRING);
return 1;
}

Si vous voyez l'erreur dans la sauvegarde faite le moi savoir :D, De mon coté si je trouve j'indiquerai mon erreur.

Merci,
« Modifié: 31 Août 2011, 14:01:40 par Dark_revan »

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Probleme fonction
« Réponse #7 le: 31 Août 2011, 14:48:15 »
Évite d'utiliser la fonction évènementielle OnPlayerUpdate pour sauvegarder tes données.
Pour commencer, l'utilisation de MySQL est assez lourde et que en plus de ça, tu l'utilise PLUSIEURS FOIS PAR SECONDE.

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : Probleme fonction
« Réponse #8 le: 31 Août 2011, 15:26:13 »
Tu devrai genre enregistrer le nombre de mort a la mort du joueur uniquement, son password juste au register et au changement de pass, je pense pas qu'un joueur change de sexe donc pas besoin de l'enregistrer apres l'enregistrement du debut

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : Probleme fonction
« Réponse #9 le: 31 Août 2011, 16:06:45 »
Ok je vais pas mettre le save dans onplayerupdate mais le soucis enfaite. C'est que sa sauvegarde toujours pas. le code est certainement mauvais dans mon onplayerupdate.
Enfaite il faut que je trouve l'equivalent de cette fonction samp_mysql_strtok avec le nouveau plugin mysql.
Car onplayerlogin ne marche pas aussi, il ne charge pas les données.

Voici le code d'origine :

samp_mysql_strtok(Fields, "|", Data);
while (samp_mysql_strtok(Fields, "|", "")==1)
{

Pour remplacer ce code j'ai fait :

while(mysql_fetch_row(Data)==1)
{

Je sait que sait foireux mais je sait pas comment remplacer cette fonction qui n'est plus sur le nouveau plugin

Au pire si quelqu'un peut m'aider par msn ou autre sa serai sympa :D.

Ou alors si vous avez un autre système de sauvegarde joueur par sql je suis prenant (mis a part Modern Topia)

Merci pour vos aides.


EDIT : Probleme résolut a lock,

Le problème venait de l'ancien système de modern topia.
J'ai refait le système de save et load entierement et sa a marcher je me suis appuyer de plusieur exemple de script SQL tel que Radmin et d'autre.

Merci a tous ceux qui m'ont répondu et donner des conseils.

++ Darkrevan
« Modifié: 31 Août 2011, 16:44:36 par Dark_revan »

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Probleme fonction
« Réponse #10 le: 31 Août 2011, 18:03:52 »
Et voilà un code vite fait, MAL fait ... avec plein de petit bout de code ... VOLÉ à droite, à gauche.

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : Probleme fonction
« Réponse #11 le: 01 Septembre 2011, 12:14:09 »
Hum hum ce code si tu l'aurai lu a était refait entièrement, et si tu m'aurai un peu plus aidé j'aurai peut être fait mieux...
Je te signale aussi que c'était le gros foutoirs pendant que j'essaye plusieurs truc en même donc normal que sa te paraissent mal fait.

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Probleme fonction
« Réponse #12 le: 01 Septembre 2011, 13:18:04 »
À partir du moment où tu prends à gauche à droite, tu n'as pas tous refait.
Et selon ton raisonnement, si tu serais seul, tu ne pourrait RIEN faire ?
Apprend à vraiment programmer ou change d'objectif, car tu n'es pas fait pour ça si c'est ta vision des choses.

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Probleme fonction
« Réponse #13 le: 01 Septembre 2011, 13:47:42 »
Le problème est résolu ? si oui on stop le HS ;)



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : Probleme fonction
« Réponse #14 le: 03 Septembre 2011, 13:59:40 »
J'ai dit que je l'est refait, donc un système sql que j'ai fait moi même pas en piquant un bout a gauche ou a droite, J'ai réussit a bien comprendre le SQL pour refaire mon propre système enregistrement et de chargement de donnée.

Bref vous pouvez lock.