• 10 Juillet 2025, 01:30:10


Auteur Sujet: Expliquation de code  (Lu 1792 fois)

0 Membres et 1 Invité sur ce sujet

vincentdu90

  • Invité
Expliquation de code
« le: 01 Novembre 2008, 18:43:47 »
Bonjour,
Voila j'apprend le pawn en regardant des script en essayant de scripter mais il y a des code que je ne comprend pas .
Pouvez vous m'expliquer celui-ci , qui est extrait du raf admin script .

Je met des commentaires pour ce que je comprend.

else if (!strcmp(cmd, "/jail", true)) //
{
new pid, tmpp[256]; // ?
tmpp = strtok(cmdtext, idx); //?
if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREEN, "USAGE: /jail [playerid]"); //envoie un message au joueur
return 1;
}
pid = strval(tmpp);//?
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "THAT PLAYER IS NOT CONNECTED!"); //idem
return 1;
}
GetPlayerName(pid, pidName, sizeof(pidName));
format(tmpp, sizeof(tmpp), "[RAS]You have jailed %s (ID:%d)",pidName,pid);
SendClientMessage(playerid, 0xAA3333AA, tmpp);
SetPlayerInterior(pid,3); //donne un interieur au joueur
SetPlayerPos(pid,197.6661,173.8179,1003.0234); //teleporte le joueur
SetPlayerArmour(pid,0); //enleve l'armure du joueur
TogglePlayerControllable(pid,0); //freeze le joueur
ResetPlayerWeapons(pid); //enleve les armes du joueur
GetPlayerName(playerid, AdminName, sizeof(AdminName)); // ?
    format(tmpp, sizeof(tmpp), "jailed by %s",AdminName);
GameTextForPlayer(pid, tmpp, 1000,1);
return 1;
}

Hors ligne ghettoman94

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Expliquation de code
« Réponse #1 le: 01 Novembre 2008, 18:46:31 »
En gros sa permet de mettre quelqu'un en prison grâce a son id.

++ gm94


[TUTO POUR INSTALLER MTA]http://ghmsoftware.e3b.org/tutoriel.php?id=2

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : Expliquation de code
« Réponse #2 le: 01 Novembre 2008, 18:55:08 »
else if (!strcmp(cmd, "/jail", true)) // on Execute la commande
{
new pid, tmpp[256]; // on met en place les variables
tmpp = strtok(cmdtext, idx); //
if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREEN, "USAGE: /jail [playerid]"); //envoie un message au joueur
return 1;
}
pid = strval(tmpp);// on défini le joueur
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "THAT PLAYER IS NOT CONNECTED!"); //idem
return 1;
}
GetPlayerName(pid, pidName, sizeof(pidName)); //on récupere le nom du joueur
format(tmpp, sizeof(tmpp), "[RAS]You have jailed %s (ID:%d)",pidName,pid); // on envoie le message
SendClientMessage(playerid, 0xAA3333AA, tmpp); // definirtion de la couleur
SetPlayerInterior(pid,3); //donne un interieur au joueur
SetPlayerPos(pid,197.6661,173.8179,1003.0234); //teleporte le joueur
SetPlayerArmour(pid,0); //enleve l'armure du joueur
TogglePlayerControllable(pid,0); //freeze le joueur
ResetPlayerWeapons(pid); //enleve les armes du joueur
GetPlayerName(playerid, AdminName, sizeof(AdminName)); // On récupere le nom de l'admin
    format(tmpp, sizeof(tmpp), "jailed by %s",AdminName); // on envoi le message ...
GameTextForPlayer(pid, tmpp, 1000,1); // ... dans un Game text
return 1; // on ferme la commande.
}

Jpeu pas plus t'aider, je t'ai tout écrit a coté ^^
;)

++
nikko

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Expliquation de code
« Réponse #3 le: 01 Novembre 2008, 19:03:54 »
salut,

d'abord, comme tu le sais surement, le strcmp sert a vérifier si deux strings sont égaux, plus petits, ou plus grand l'un de l'autre,

ensuite il initialise deux variables dont un string

le strtok sert a stocker les informations tapé après l'espace (ex: /jail 45) très important, tu dois utilisé le cmd et non pas le cmdtext, car la cmd utilise le strtok et indique au strtok que tu utilise ici quel " " il utilise, dans ce cas le 1 :
tmpp = strtok(cmdtext, idx); //?
puis il vérifie la longueur des données entrées à la suite de l'espace, s'il n'y en a pas, on retourne un message d'erreur:

if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREEN, "USAGE: /jail [playerid]"); //envoie un message au joueur
return 1;
}
puis il transforme le nombre que l'on tape, le 45 dans l'exemple qui serait : tmp[0] = 4 et [tmp[1] = 5;
donc cette fonction permet de trouver la valuer 45
pid = strval(tmpp);//?
si le joueur que l'on veut mettre en prison n'est pas connecté, il envoie un autre message d'erreur:

if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "THAT PLAYER IS NOT CONNECTED!"); //idem
return 1;
}

puis il stocke le nom du joueur et envoie un message à l'admin,

puis met le joueur en prison et enfin il recueil le nom de l'admin afin de dire au joueur mis en prison qui l'as mit en prison

et voila, en espérant que ce soit clair

++Sim++





Hors ligne ghettoman94

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Expliquation de code
« Réponse #4 le: 01 Novembre 2008, 19:07:55 »
Ben voila en fait c'est surtout sa que je n'était pas capable d'expliquer alors que j'utilise se systeme.
Merci Sim tu m'a appris des chose.


[TUTO POUR INSTALLER MTA]http://ghmsoftware.e3b.org/tutoriel.php?id=2

vincentdu90

  • Invité
Re : Expliquation de code
« Réponse #5 le: 01 Novembre 2008, 19:44:06 »
Merci beaucoup de ton aide je comprend un peut mieux mais pas encore (je sais ce que c'est un string  :(, mais je sais ce qu'est une variable)

Pourrais tu m'expliquer plus en details cette partie
Je met ce que j'ai compris , enfin ce que j'ai peut etre compris

new pid, tmpp[256]; // pid est une variable , qui veut dire a mon avis player id,
tmpp = strtok(cmdtext, idx); // strtrok c'est ce qui recupere ce qu'on tape (commande et id recuperer)
if (!strlen(tmpp)) // tmpp je comprend pas trop et strlen

et ça aussi

pid = strval(tmpp);// on défini le joueur

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Expliquation de code
« Réponse #6 le: 01 Novembre 2008, 20:21:20 »
salut,

la fonction strval sert a obtenir la nombre que contient un string(texte),

alors lorsque l'on tape un chiffre dans la console et qu'on le stock dans un variable (string, pas le choix, c'est un texte) il est enregistrer comme suit:

Tu tape: 4586
 et tu as le code:

OnPlayerText(playerid,text[])
{
    new tmp[256],nb;
    tmp = text;
    nb = strval(tmp);
    format(tmp,sizeof(tmp),"Tu as tapé le nombre %d",nb);
    SendClientMessage(playerid,COLOR_GREEN,tmp);
}

eh bien dans le tmp ( que j'aurais aussi bien pu ne pas mettre et travailler directement dans le text[]) , le nombre est stocker ainsi

tmp[0] = 4;
tmp[1] = 5;
tmp[2] = 8;
tmp[3] = 6;

donc, ce nombre est plutôt difficile a utiliser, et la fonction strval va tous les placer ensembles, concaténer comme on dit, afin d'avoir un nombre entier

strfloat fais l'équivalent avec les nombres à virgules

effectivement, dans ce cas pid est la variable dans laquelle on stock le numéro d'identification du joueur que l'on veut mettre en prison

à l'aide du strtok, on stock ce que le joueur (admin dans ce cas) à tapé après l'espace, qui lui sert de séparation, de la même façon que pour le nombre
et comme un string se termine toujours pas un symbole spéciale qui en annonce la fin, '\n' je crois, et bien la fonction strlen peut déterminer le nombre de caractères qui sont entrés dans le string, dans ce cas on fait le text si cette longueur est 0 (il n'a rien écrit) on lui dit de mettre quelque chose

++Sim++





vincentdu90

  • Invité
Re : Expliquation de code
« Réponse #7 le: 01 Novembre 2008, 20:38:03 »
Ok merci je crois que j'ai a peu près compris .

Merci

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : Expliquation de code
« Réponse #8 le: 02 Novembre 2008, 11:52:27 »
Sa fait du bien d'avoir un petit cour de pawno mais si je savait l'utiliser je ne comprennait pas tout exactement les strellen ect...
Merci  ;)

++

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Expliquation de code
« Réponse #9 le: 02 Novembre 2008, 14:54:48 »
salut,

moi je les ai deviné pour la plupart, je trouve ça un peu évident XD

++Sim++





Hors ligne ghettoman94

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Expliquation de code
« Réponse #10 le: 02 Novembre 2008, 16:38:16 »
Moi c'est juste le strtok que je comprenais pas.Pour le reste je savais grace au C/C++.
Merci encore Sim. :)


[TUTO POUR INSTALLER MTA]http://ghmsoftware.e3b.org/tutoriel.php?id=2

vincentdu90

  • Invité
Re : Expliquation de code
« Réponse #11 le: 03 Novembre 2008, 09:07:39 »
Raa , donc le c/c++ aide beaucoup pour le pawn , je devrais m'y remettre .

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Re : Expliquation de code
« Réponse #12 le: 03 Novembre 2008, 10:06:34 »
Avoir de bonnes connaissances en anglais aide beaucoup aussi, ça permet de comprendre plus facilement le nom des fonctions et surtout de les retenir.
Ex : strlen -> STRing LENgth (longueur de chaîne).

++
Syg
Courtesy of GtaManiac

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Expliquation de code
« Réponse #13 le: 03 Novembre 2008, 15:20:41 »
C'est sur que ça on peut pas l'inventer  :laugh
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne ghettoman94

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Expliquation de code
« Réponse #14 le: 03 Novembre 2008, 16:47:28 »
Moi il y a que le strtok que j avais jamais vue en C.Sinon c'est vrai que si on connait l'anglais sa facilite beaucoup la tache.


[TUTO POUR INSTALLER MTA]http://ghmsoftware.e3b.org/tutoriel.php?id=2