Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
Connexion avec identifiant, mot de passe et durée de la session

 
avancée

254724 Messages dans 14037 Fils de discussion- par 6622 Membres - Dernier membre: lauraline72

24 Mai 2012 à 01:48:58
GTAOnline.frSan Andreas MultiplayerScripting SA-MP [Pawn center] (Modérateurs: S!m, Xartrick)Expliquation de code
Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: Expliquation de code  (Lu 515 fois)
0 Membres et 2 Invités sur ce fil de discussion.
vincentdu90
Hors ligne Hors ligne


GTAOnline Big Member
*

Lua , Php/MySQL & Html/Css

Messages: 507


« 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.

Code:
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;
}
Journalisée

ghettoman94
Hors ligne Hors ligne


Tueur en série
*

Messages: 158


« Répondre #1 le: 01 Novembre 2008 à 18:46:31 »

En gros sa permet de mettre quelqu'un en prison grâce a son id.

++ gm94
Journalisée



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


GTAOnline Fan Boy
*

Messages: 2115


« Répondre #2 le: 01 Novembre 2008 à 18:55:08 »

Code:
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é ^^
Clin d'oeil

++
nikko
Journalisée
S!m
Hors ligne Hors ligne


Moderateur
GTAOnline Fan Boy
*

Messages: 2260


« Répondre #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 :
Code:
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:

Code:
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
Code:
pid = strval(tmpp);//?
si le joueur que l'on veut mettre en prison n'est pas connecté, il envoie un autre message d'erreur:

Code:
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++
Journalisée





ghettoman94
Hors ligne Hors ligne


Tueur en série
*

Messages: 158


« Répondre #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.
Journalisée



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


GTAOnline Big Member
*

Lua , Php/MySQL & Html/Css

Messages: 507


« Répondre #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  Triste, 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

Code:
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

Code:
pid = strval(tmpp);// on défini le joueur
Journalisée

S!m
Hors ligne Hors ligne


Moderateur
GTAOnline Fan Boy
*

Messages: 2260


« Répondre #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:

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++
Journalisée





vincentdu90
Hors ligne Hors ligne


GTAOnline Big Member
*

Lua , Php/MySQL & Html/Css

Messages: 507


« Répondre #7 le: 01 Novembre 2008 à 20:38:03 »

Ok merci je crois que j'ai a peu près compris .

Merci
Journalisée

Dark_revan
Serveur RPG : *¤REAL DREAM¤*
Hors ligne Hors ligne


GTAOnline Big Member
*

Script Serveur RolePlay.

Messages: 338


« Répondre #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  Clin d'oeil

++
Journalisée

S!m
Hors ligne Hors ligne


Moderateur
GTAOnline Fan Boy
*

Messages: 2260


« Répondre #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++
Journalisée





ghettoman94
Hors ligne Hors ligne


Tueur en série
*

Messages: 158


« Répondre #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. Sourire
Journalisée



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


GTAOnline Big Member
*

Lua , Php/MySQL & Html/Css

Messages: 507


« Répondre #11 le: 03 Novembre 2008 à 09:07:39 »

Raa , donc le c/c++ aide beaucoup pour le pawn , je devrais m'y remettre .
Journalisée

Syg
Expert programmeur C/C++/PAWN
Hors ligne Hors ligne


Administrateur
GTAOnline Legend
*

The GTAOnline Jesus

Messages: 3760


« Répondre #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
Journalisée

Courtesy of GtaManiac
[StAfF]MaN
[StAfF] forever ^^
Hors ligne Hors ligne


GTAOnline Addict
*

[StAfF] un jour, [StAfF] toujours ^^ !!!

Messages: 1038


WWW
« Répondre #13 le: 03 Novembre 2008 à 15:20:41 »

C'est sur que ça on peut pas l'inventer  laugh
Journalisée

^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|
ghettoman94
Hors ligne Hors ligne


Tueur en série
*

Messages: 158


« Répondre #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.
Journalisée



[TUTO POUR INSTALLER MTA]http://ghmsoftware.e3b.org/tutoriel.php?id=2
Pages: [1]   Haut de page
Imprimer
Aller à:  

Theme créé par padexx et modifié par GTAOnline.fr
Page générée en 0.138 secondes avec 22 requêtes.
Forum GTAOnline.fr 2.0 | Design par : Lalu et GtaManiac
Merci a toute la communaute pour son support !
Copyright © 2004-2012 - GTAOnline.fr | GTAPro.com | Contact