• 05 Juin 2026, 18:37:53


Auteur Sujet: LePtitClown : différentes questions  (Lu 29744 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #135 le: 03 Décembre 2009, 16:09:19 »
Salut,

non, c'est bon, suffit de tester et tu verra, c'est en quelque sorte une compression de :

level = GetPlayerWantedLevel(i);
if(level)
{
}

Le code
if(level = GetPlayerWantedLevel(i))causera un warning (ou une erreur je ne suis pas certains) indiquant que tu n'utilise pas le = dans un endroit approprié..il suffit d'ajouter un () pour contourner ce problème.

le problème vient du format, une simple erreur de frappe, cherche un peu et tu trouvera, d'ailleurs le simple fait que tu n'ai pas trouvé par toi-même montre que tu ne met pas beaucoup d'efforts à arranger tes problèmes seul... :(

++Sim++





Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #136 le: 03 Décembre 2009, 20:31:17 »
Slt

Si si j'ai cherché, je me suis même inspiré du RAS mais sans succès d'où ma demande d'aide. Malgré vos propositions les 4 erreurs persistent
format(tmp, sizeof(tmp), "Le joueur d'ID %d est recherché (niv: %d)" i, level);

Dsl en réécrivant la ligne j'ai réussi à corriger les dernières erreurs restantes. La forme de ce message pourra être bénéfique à d'autres joueurs, je l'espère
Il y a juste une ligne que je ne comprend pas dans ce que vous m'avez montré. new level = 0; . A quoi sert ce 0 ? Moi j'aurai plutôt mis new level;
Je demande ça car en jeu, la commande recherche ne trouve aucun joueur recherché

A+ :)
« Modifié: 03 Décembre 2009, 20:41:56 par LePtitClown »

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #137 le: 03 Décembre 2009, 21:52:36 »
Il manque une virgule avant la variable i dans ton format :
format(tmp, sizeof(tmp), "Le joueur d'ID %d est recherché (niv: %d)", i, level);

C'est ça qui cause toutes les erreurs que tu as.

Cristab, les doubles parenthèses c'est juste pour éviter un warning du compilateur.

++
Syg
Courtesy of GtaManiac

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #138 le: 03 Décembre 2009, 21:58:43 »
ah mais ok lol je juste de comprendre sa condition  :lmfao

mais euh enfaite j'en voit pas l'utilité

if(level == GetPlayerWantedLevel(i))

la on a le meme resultat que sa

if((level = GetPlayerWantedLevel(i)))

bizard je trouve pas sa tres claire enfaite

Comme je dit toujours si je trouve pas tres claire j'imagine meme pas le compilo

enfin si sa fonctionne c'est deja sa :)

pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #139 le: 03 Décembre 2009, 22:55:25 »
Salut,

il y a une grande différence dans le fonctionnement, le code suivant:
if(level == GetPlayerWantedLevel(playerid))ne fait que tester si level est égal à la valeur retournée par la fonction GetPlayerWantedLevel

tandis que le code suivant:
if((level = GetPlayerWantedLevel(playerid)))modifie la valeur de la variable level, lui donne la valeur retournée par la fonction PUIS teste la valeur en question (grâce à la  parenthèse supplémentaire le compilo comprend que c'est la valeur en question qui est testé et non pas si l'expression est égale)
bref, ce code est équivalent à celui ci:
level = GetPlayerWantedLevel(i);//on assigne la valeur à level
if(level)//on test la valeur en question
{
}

j'espère que c'est clair ;)

++Sim++





Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #140 le: 03 Décembre 2009, 23:19:51 »
Citer
level = GetPlayerWantedLevel(i);//on assigne la valeur à level
if(level)//on test la valeur en question
{
}

sa c'est plus claire deja pour moi :)
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #141 le: 04 Décembre 2009, 09:34:04 »
Il est plus prudent de décomposer ce test en 2 lignes.

Si on garde la ligne
if((level = GetPlayerWantedLevel(playerid)))on risque de se poser des questions si on revient dessus dans quelques semaines et on risque de corriger (en remplaçant le = par ==), ce qui fera que le code ne fonctionnera plus comme il doit.

++
Syg
Courtesy of GtaManiac

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #142 le: 04 Décembre 2009, 18:47:49 »
Slt

Bien dit Syg vu que j'ai fais l'erreur
Pour la virgule, je l'avais mise. Je vais tester comme ça et je vous redis

A+ :D

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #143 le: 18 Janvier 2010, 19:32:54 »
Slt

Je viens vous exposer un nouveau problème que je n'arrive pas à résoudre ( je ne sais même pas si c'est possible sur samp )
Comment puis je vérifier qu'une remorque est bien attachée à un linerunner ?
J'arrive à vérifier que le linerunner est sur le checkpoint mais pour la remorque, vu qu'on ne la conduit pas, je ne vois pas comment on peut vérifier qu'elles est bien présente sur le chekpoint en même temps que le linerunner.
Merci d'avance pour vos réponses est vos explications

A+ ;)

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #144 le: 18 Janvier 2010, 20:37:39 »
mmm a la base ce n'est pas possible mais tu peu recupere le carid des remorque et voir si la remarque est pas loin du playerid
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #145 le: 18 Janvier 2010, 20:41:36 »
Re:

Merci pour ta réponse rapide.
J'y avais pensé mais je voulais être sur qu'il n'y avait pas plus simple.
Donc plus qu'à me lancer sur cette technique
Merci :D

A+

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #146 le: 18 Janvier 2010, 21:23:25 »
Salut,

probablement qu'en combinant IsTrailerAttachedToVehicle et GetVehicleTrailer tu devrais obtenir un bon résultat

++Sim++





Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #147 le: 19 Janvier 2010, 20:34:01 »
Slt

Jamais entendu parler de cette fonction, peut être nouvelle avec samp 0.3 ???
Mais je vais aller voir tout ça.
Merci à vous deux

RE:
Alors j'ai utiliser la petite fonction sans problème. J'ai bien défini mes véhicules du type new rr1; en haut et dans onegamemodeinit rr1 = addstatic.......
Mais le probème c'est que la remorque n'est pas reconnue une fois dans le jeu.
Voilà la condition que j'ai utilisé:
if(IsTrailerAttachedToVehicle(rr1 || rr2 || rr3 || rr4 || rr5 || rr6 || rr7 || rr8 || rr9 || rr10 || rr11))
{
Les rr étant toutes des remorques comme rr1 et j ai bien mis un vehicleid = GetPlayerVehicleID(playerid) au dessus de ma condition
Donc encore quelques soucis ???


A+ ;)
« Modifié: 19 Janvier 2010, 20:47:00 par LePtitClown »

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #148 le: 19 Janvier 2010, 20:50:48 »
Salut,

ta condition devrait ressembler à ceci:

if(IsTrailerAttachedToVehicle(rr1) || IsTrailerAttachedToVehicle(rr2) || IsTrailerAttachedToVehicle(rr3)....)
;)
fais attention, cette fonction ne fait que vérifier qu'une remorque, peu importe laquelle, est attachée au véhicule rr1 (ou rr2 etc...)

++Sim++





Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : LePtitClown : différentes questions
« Réponse #149 le: 19 Janvier 2010, 20:53:32 »
Merci ça marche parfaitement, tout simplement ce que je voulais :D

J'ai une autre question mais ce serait plutôt du côté protection serveur.
En effet les doubles compte comme vous le savez ce n'est pas très facile à reperer etc.
Donc je voudrai intégrer un système vérifiant le rang du joueur ex 25.58.**.** pour vérifier si une ip ayant crée un compte existe déjà.

Mais 3 problèmes se posent:

le 1er: Comment faire pour comparer l'ip d'un joueur enregistré à un joueur non enregistré.

le 2ème: Mes fichiers sauvegarde sont enregistrés en .dudb avec mdp hach, argent et score docn je voudrai savoir comment  y intégrer l'ip du joueur

le 3ème: il faudra que j'enregistre les ips des joueurs ayant déjà un compte durant la commande /login

Mais j'ai du mal pour sauvegarder des données dans un fichier comme ici .dudb donc j'aimerai que vous me donniez quelques renseignements. Voici quelesques données pour que vous puissez m'aider

Ex de fichier .dudb d'une save de compte:
password_hash=54564813
Money=3745719
Score=3745719
Kills=-1812395550
Deaths=41529779
PS: les kills bug mais ne faites pas attention à ça :lmfao

Mes commandes login et register:
 dcmd_register(playerid,params[]) {
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Vous êtes déjà logué.");
    if (udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Ce compte existe déjà '/login mot de passe'.");
    if (strlen(params)==0) return SystemMsg(playerid,"Usage correct: '/register mot de passe'");
    if (udb_Create(PlayerName(playerid),params)) return SystemMsg(playerid,"Compte crée '/login mot de passe.");
    return true;

 }

  dcmd_login(playerid,params[]) {
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Vous êtes déjà logué.");
    if (!udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Ce compte n'existe pas '/register mot de passe'.");
    if (strlen(params)==0) return SystemMsg(playerid,"Tapez '/login mot de passe'");
    if (udb_CheckLogin(PlayerName(playerid),params)) {
       // Status
       GivePlayerCash(playerid,dUserINT(PlayerName(playerid)).("money")+GetPlayerMoney(playerid));
       SetPlayerScore(playerid,dUserINT(PlayerName(playerid)).("Score")+GetPlayerScore(playerid));
       pkills[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Kills")+pkills[playerid]);
       pdeaths[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Deaths")+pdeaths[playerid]);
       PLAYERLIST_authed[playerid]=true;
       KillTimer(protectionOK[playerid]);//protection
       logged[playerid] = 1;
       return SystemMsg(playerid,"Vous êtes logué avec succès!");
    }


Merci d'avance pour votre aide  ;)

A+ ;)
« Modifié: 19 Janvier 2010, 21:20:37 par LePtitClown »