GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Dark4ng3L le 02 Décembre 2009, 13:08:23
-
Hellow !
j'essaye de passé mon système de compte en SQL (en me basant sur Radmin)
donc voili voilou ca marche pas
Code :
<?php // pour metre les couleurs
public OnPlayerRegister(playerid, password[])
{
if(IsPlayerNPC(playerid)){ return 1; }
if(IsPlayerConnected(playerid))
{
new PlayerName[256];
new RPassword[60];
new string[256];
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
samp_mysql_real_escape_string(password[], RPassword);
if(MySQLCheckUserExistance(playerid))
{
format(string, sizeof(string), "ERREUR: le compte %s existe déjà. faites /login [password]", PlayerName);
SendClientMessage(playerid, COLOR_RED, string);
return 1;
}
format(query, sizeof(query), "INSERT INTO `users` (reg_id, Nom, Key, Level, AdminLevel, DonateRank, UpgradePoints, ConnectedTime, Registered, Sex, Age, Origin, CK, Muted, Respect, Money, Bank, Crimes, Kills, Deaths, Arrested, WantedDeaths, Phonebook, LottoNr, Fishes, BiggestFish, Job, Paycheck, HeadValue, Jailed, JailTime, Materials, Drugs, Leader, Member, FMember, Rank, Char, ContractTime, DetSkill, SexSkill, LawSkill, MechSkill, JackSkill, CarSkill, DrugsSkill, CookSkill, FishSkill, pSHealth) VALUES(0, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", 750, 10000, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", 50.0)",
PlayerName, RPassword,PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][gPupgrade],PlayerInfo[playerid][pConnectTime],
PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pOrigin],PlayerInfo[playerid][pCK],PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],
PlayerInfo[playerid][pCrimes],PlayerInfo[playerid][pKills],PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pArrested],PlayerInfo[playerid][pWantedDeaths],PlayerInfo[playerid][pPhoneBook],
PlayerInfo[playerid][pLottoNr],PlayerInfo[playerid][pFishes],PlayerInfo[playerid][pBiggestFish],PlayerInfo[playerid][pJob],PlayerInfo[playerid][pPayCheck],PlayerInfo[playerid][pHeadValue],
PlayerInfo[playerid][pJailed],PlayerInfo[playerid][pJailTime],PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrugs],PlayerInfo[playerid][pLeader],PlayerInfo[playerid][pMember],
PlayerInfo[playerid][pFMember],PlayerInfo[playerid][pRank],PlayerInfo[playerid][pChar],PlayerInfo[playerid][pContractTime],PlayerInfo[playerid][pDetSkill],PlayerInfo[playerid][pSexSkill],
PlayerInfo[playerid][pBoxSkill],PlayerInfo[playerid][pLawSkill],PlayerInfo[playerid][pMechSkill],PlayerInfo[playerid][pJackSkill],PlayerInfo[playerid][pCarSkill],PlayerInfo[playerid][pDrugsSkill],
PlayerInfo[playerid][pCookSkill],PlayerInfo[playerid][pFishSkill]
);
samp_mysql_query(query);
format(query, sizeof(query), "SELECT `reg_id` FROM `users` WHERE `name` = '%s'", PlayerName);
samp_mysql_query(query);
samp_mysql_store_result();
SendClientMessage(playerid, COLOR_YELLOW, "Compte crée , merci à vous, vous pouvez désormais vous loggué (/login [password]).");
}
return 1;
}
Erreurs:
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10823) : error 029: invalid expression, assumed zero
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10829) : error 075: input line too long (after substitutions)
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10830) : error 037: invalid string (possibly non-terminated string)
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10830) : error 017: undefined symbol "INSERT"
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10830) : error 029: invalid expression, assumed zero
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10830) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
6 Errors.
voila j'espert qu'on pourra m'aider !
++D4++
-
Je te conseille de te baser du Modern Tropia ( Un truc du genre ) C'est aussi un RPG donc tu devrais pas avoir beaucoup de probleme de verifier ce qui louche ;)
-
Sauf que j'les pas xD
j'vais essayer
-
Il es en libre téléchargement sur le forum SA-MP c'est pas 1.7 mo qui va te causer un probleme je pense :closedeyes
-
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10823) : error 029: invalid expression, assumed zero
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10829) : error 075: input line too long (after substitutions)
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 037: invalid string (possibly non-terminated string)
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 017: undefined symbol "INSERT"
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 029: invalid expression, assumed zero
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
6 Errors.
Petite Aide. Regarde ici : C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830)
Va sur Ton GM. Et regarde cette ligne la 10830 Regarde la Ligne et dit le texte qu'il y a.
Double post
Modern Topia: http://forum.sa-mp.com/index.php?topic=40077.0 (http://forum.sa-mp.com/index.php?topic=40077.0)
-
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10823) : error 029: invalid expression, assumed zero
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10829) : error 075: input line too long (after substitutions)
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 037: invalid string (possibly non-terminated string)
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 017: undefined symbol "INSERT"
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 029: invalid expression, assumed zero
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
6 Errors.
Petite Aide. Regarde ici : C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830)
Va sur Ton GM. Et regarde cette ligne la 10830 Regarde la Ligne et dit le texte qu'il y a.
Il a mit son code sur son post, ton post ne sert pas a grand chose, mais tu a la volonté d'aider les autre c'est déjà sa (:
-
yop merci de vôtre aide (en espérant que r@f passera par la )
voila la ligne 10823
format(query, sizeof(query), "INSERT INTO `users` (reg_id, Nom, Key, Level, AdminLevel, DonateRank, UpgradePoints, ConnectedTime, Registered, Sex, Age, Origin, CK, Muted, Respect, Money, Bank, Crimes, Kills, Deaths, Arrested, WantedDeaths, Phonebook, LottoNr, Fishes, BiggestFish, Job, Paycheck, HeadValue, Jailed, JailTime, Materials, Drugs, Leader, Member, FMember, Rank, Char, ContractTime, DetSkill, SexSkill, LawSkill, MechSkill, JackSkill, CarSkill, DrugsSkill, CookSkill, FishSkill, pSHealth) VALUES(0, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", 750, 10000, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", 50.0)",
++ D4 ++
-
Une question un peu bête: Tu as le plugin MySQL ?
-
oui xD
mais quand on compile on a pas besoin du plugin juste de l'inc :-\
-
Question conne mais bon avec la taille de ta requete t'est sur que ton new query est sufisament gros pour acceuilir une si longue chaine ::)
-
oui XD
new query[10000];
j'pense que c'es assé :lmfao
-
Bon, il faudrait que je fasse un tuto SQL mais je n'ai pas trop le temps.
Premièrement, ton erreur "input line too long (after substitutions)" indique qu'une de tes lignes de code est trop longue.
Çà n'a rien à voir avec la taille des variables, juste la ligne elle même (qui fait quand même 896 caractères de long !!) que le compilateur n'arrive pas a traiter en une fois. Je pense qu'une ligne de code ne doit pas excéder 512 caractères (mais je n'en suis pas sur, juste que j'ai une ligne de 498 caractères dans le mode Lalu's Stunt et le compilo ne dit rien)
La solution, c'est de réduire la taille de ta ligne en enlevant des caractère ou en coupant la ligne en morceau pour la répartir sur plusieurs lignes.
Tout d'abord, tu peux sauter une ligne après chaque , (virgule) séparant les paramètres (Attention, tu ne peux pas faire ça dans le chaîne qui contient la requête SQL, c'est une chaîne de caractères).
Ensuite, il faut revoir la ta chaîne de requête.
Il est possible de découper une chaîne pour la faire tenir sur plusieurs ligne en utilisant le caractère \ mais je ne suis pas sur que ça marche.
Concernant la requête elle-même, tu peux très avantageusement remplacer tous les \" par des ' car SQL est très permissif.
Ce qui donnerais (je ne mets qu'un morceau de ta requête) :
VALUES(0, '%s', '%s', '%s', '%s', '%s', '%%s', .......De plus, tous ces \" sont source d'erreur, si tu en oublies un, tu auras des erreurs de compilation et elles risquent d'être difficile à trouver.
Sinon, là où tu pourrais gagner beaucoup, c'est en supprimant les noms des champs de la table. Mais pour faire ça, il est impératif que tous les champs de la table soit présent dans VALUE.
J'explique :
Si on prend la table Toto contentant les champs suivants :
Champ1
Champ2
Champ3
Champ4.
Si je veux insérer une ligne dans cette table en fixant la valeur de tous les champs, je peux exécuter la requête
Syntaxe 1 :
INSERT INTO Toto VALUES (1, 2, 3, 4);
Par contre, si je ne veux initialiser que Champ2 et Champ3, il faut que je le dise.
Syntaxe 2 (c'est celle que tu utilise) :
INSERT INTO Toto (Champ2, Champ3) VALUES (2, 3);
Donc si ton INSERT porte sur tous les champs de ta table, tu peux utiliser la syntaxe 1. Ceci diminuera grandement la taille de la ligne de code.
Voici ce que ça donne en appliquant toutes les réductions dont je parle.
format(query, sizeof(query),
"INSERT INTO users VALUES(0, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 750, 10000, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 50.0)",
PlayerName, RPassword,PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][gPupgrade],PlayerInfo[playerid][pConnectTime],
PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pOrigin],PlayerInfo[playerid][pCK],PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],
PlayerInfo[playerid][pCrimes],PlayerInfo[playerid][pKills],PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pArrested],PlayerInfo[playerid][pWantedDeaths],PlayerInfo[playerid][pPhoneBook],
PlayerInfo[playerid][pLottoNr],PlayerInfo[playerid][pFishes],PlayerInfo[playerid][pBiggestFish],PlayerInfo[playerid][pJob],PlayerInfo[playerid][pPayCheck],PlayerInfo[playerid][pHeadValue],
PlayerInfo[playerid][pJailed],PlayerInfo[playerid][pJailTime],PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrugs],PlayerInfo[playerid][pLeader],PlayerInfo[playerid][pMember],
PlayerInfo[playerid][pFMember],PlayerInfo[playerid][pRank],PlayerInfo[playerid][pChar],PlayerInfo[playerid][pContractTime],PlayerInfo[playerid][pDetSkill],PlayerInfo[playerid][pSexSkill],
PlayerInfo[playerid][pBoxSkill],PlayerInfo[playerid][pLawSkill],PlayerInfo[playerid][pMechSkill],PlayerInfo[playerid][pJackSkill],PlayerInfo[playerid][pCarSkill],PlayerInfo[playerid][pDrugsSkill],
PlayerInfo[playerid][pCookSkill],PlayerInfo[playerid][pFishSkill]);Cette ligne devrait compiler sans problème à condition que TOUS les champs de la table soient présents dans la requête. Si ce n'est pas le cas, tu auras une erreur SQL lors de l'exécution de la requête.
++
Syg
-
OMG c' est trop meme baisse un petit peu la taille a environ 256 ou encore 512
EDIT: Arg syg a poster avant moi ^^
-
merci beaucoup syg de ta grande aide !
je vais essayer ca Dessuite j'vous redit des nouvelles !!
merci encore
++ D4 ++