• 24 Avril 2025, 01:41:45


Auteur Sujet: Une commande qui "GMX" à la place du "GMX" lui-même ?  (Lu 2200 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne DJ_Joystick

  • Pawno's Scripteur
  • *
  • Criminel
  • >>>Need For Speed's Fan<<<
  • Messages: 32
    • Voir le profil
Salut,

J'ai un énorme problème : j'ai créer une commande de connexion très simple, normalement sans histoire, compiler... Puis j'essaye de me connecter : le serveur reboot  :bangin. Je comprend pas ce qui fait que la commande reboot le serveur... Voici la commande en question :

dcmd_connexion(playerid, params[])
{
if(!params[0]) return SendClientMessage(playerid, COLORRED, "Usage : /Connexion [Mot De Passe]");
if(pInfo[playerid][pLogger] == 1) return SendClientMessage(playerid, COLORRED, "Erreur : Vous êtes déjà connecté !");
new pN[MAX_PLAYERS],Format[128];
GetPlayerName(playerid,pN,sizeof pN);
format(Format,sizeof(Format),"Users/%s.cfg",pN);
if(!fexist(Format)) return SendClientMessage(playerid, COLORRED, "Erreur : Vous n'êtes pas inscris !");
if(strcmp(params,dini_Get(Format, "Security")) == 0){
pInfo[playerid][pAdmin] = dini_Int(Format, "Admin");
pInfo[playerid][pHeure] = dini_Int(Format, "Heures");
pInfo[playerid][pMinute] = dini_Int(Format, "Minutes");
pInfo[playerid][pOption] = dini_Int(Format, "pOption");
GivePlayerMoney(playerid,dini_Int(Format,"Argent"));
SetPlayerScore(playerid,dini_Int(Format, "Score"));
pInfo[playerid][pLogger] = 1;
TPS = SetTimerEx("Temps", 60000, true, "is", playerid);
  SendClientMessage(playerid, COLORGREEN, "Vous avez été logger avec succé !");
  }else{ SendClientMessage(playerid, COLORRED, "Mot de passe incorrect...");
  }
return 1;
}

Merci d'avance pour vos réponses !

Hors ligne nath425

  • *
  • Tueur
  • Messages: 68
    • Voir le profil
Re : Une commande qui "GMX" à la place du "GMX" lui-même ?
« Réponse #1 le: 06 Juin 2010, 13:35:08 »
As tu un dossier "Users" dans ton dossier "scriptfiles" ?

Hors ligne DJ_Joystick

  • Pawno's Scripteur
  • *
  • Criminel
  • >>>Need For Speed's Fan<<<
  • Messages: 32
    • Voir le profil
Re : Re : Une commande qui "GMX" à la place du "GMX" lui-même ?
« Réponse #2 le: 06 Juin 2010, 13:36:38 »
As tu un dossier "Users" dans ton dossier "scriptfiles" ?

C'est la question qui m'énerve le plus vue que je suis moi même le créateur de ce système et donc...
Mais je vais comme même y répondre : Oui. J'ajoute aussi qu'il n'y a pas de problème pour la commande
"/enregistrement"...

Merci quand même...

Hors ligne nath425

  • *
  • Tueur
  • Messages: 68
    • Voir le profil
Re : Une commande qui "GMX" à la place du "GMX" lui-même ?
« Réponse #3 le: 06 Juin 2010, 13:37:56 »
je sais pas si cela peut être important mais en général les comptes ne sont pas .cfg mais plutôt .ini.

Hors ligne DJ_Joystick

  • Pawno's Scripteur
  • *
  • Criminel
  • >>>Need For Speed's Fan<<<
  • Messages: 32
    • Voir le profil
Re : Re : Une commande qui "GMX" à la place du "GMX" lui-même ?
« Réponse #4 le: 06 Juin 2010, 13:39:33 »
je sais pas si cela peut être important mais en général les comptes ne sont pas .cfg mais plutôt .ini.

D'après moi ça n'as pas d'importance car, pour tout te dire, j'ai déjà fait un autre système d'enregistrement
qui avait le même problème mais avec un autre format (.progres). Je n'est pas osé poster mais là j'en
ai vraiment besoin ! Aussi, si tu veux encore savoir, des sytèmes d'enregistrement utilise de multiples
formats qui n'existe même pas.

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Une commande qui "GMX" à la place du "GMX" lui-même ?
« Réponse #5 le: 06 Juin 2010, 17:13:00 »
Ton serveur reboot certainement à cause de cette ligne :
TPS = SetTimerEx("Temps", 60000, true, "is", playerid);La fonction SetTimerEx attend 2 paramètre, un entier (i) et une chaîne (s) et tu ne lui en passes qu'un.

Comme le compilateur ne connait pas le format de la fonction SetTimerEx, il ne peut pas contrôler que le nombre de paramètres est correct, c'est pour ça qu'il ne met pas d'erreur.
Par contre, la fonction SetTimerEx prendra ce qu'elle trouve comme adresse pour la chaîne de caractères. Et un pointeur non intialisé (même si il n'y en a pas en PAWN, on est quand même dans ce cas ici) est une très mauvaise chose, la plupart des applications n'y survivent pas (c'est le cas de ton serveur).

Donc, soit tu rajoutes un paramètre derrière playerid, soit tu mets "i" à la place de "is" mais cela dépend de la fonction Temps().

++
Syg
Courtesy of GtaManiac

Hors ligne DJ_Joystick

  • Pawno's Scripteur
  • *
  • Criminel
  • >>>Need For Speed's Fan<<<
  • Messages: 32
    • Voir le profil
Re : Une commande qui "GMX" à la place du "GMX" lui-même ?
« Réponse #6 le: 06 Juin 2010, 18:35:42 »
Merci, ça fonctionne parfaitement  :)

[Edit] : Encore un autre problème :

Avec ce code : KMH = floatsqroot(floatpower(floatabs(floatsub(Xa,Xb[i])),2)+floatpower(floatabs(floatsub(Ya,Yb[i])),2)+floatpower(floatabs(floatsub(Za,Zb[i])),2));, J'ai un Warning me disant : warning 213: tag mismatch... J'ai bien peur que mon compteur ne puisse fonctionner avec ce Warning  ;D.

Merci d'avance
« Modifié: 06 Juin 2010, 20:08:12 par DJ_Joystick »

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Une commande qui "GMX" à la place du "GMX" lui-même ?
« Réponse #7 le: 07 Juin 2010, 09:45:56 »
Toutes les variables suivantes doivent être de type Float :
KMH, Xa, Ya, Za, Xb, Yb et Zb.

Le "tag mismatch" veut simplement dire que tu as utilisé une variable avec le mauvais type.

Normalement, ça n'a pas beaucoup de conséquence mais ça peut arriver.
Au pire, ton compteur sera complètement faux.

Sinon, je reviens sur ta formule qui me semble bien compliquée pour pas grand chose.
Premièrement, je ne vois pas l'intérêt de prendre la valeur absolue d'un nombre que l'on va élever au carré, ça n'a aucune utilité.
Et puis tous ces appels à des fonctions float**, ça alourdi la lecture.

Donc, pourquoi ne pas faire simple :
KMH = floatsqroot ((Xa-Xb[i])*(Xa-Xb[i]) + (Ya-Yb[i])*(Ya-Yb[i]) + (Za-Zb[i])*(Za-Zb[i]));
++
Syg
« Modifié: 07 Juin 2010, 09:50:02 par Syg »
Courtesy of GtaManiac

Hors ligne DJ_Joystick

  • Pawno's Scripteur
  • *
  • Criminel
  • >>>Need For Speed's Fan<<<
  • Messages: 32
    • Voir le profil
Re : Une commande qui "GMX" à la place du "GMX" lui-même ?
« Réponse #8 le: 07 Juin 2010, 12:19:05 »
Merci encore, cela fonctionne parfaitement  :)