Bonsoir, j'apprends depuis 1 semaine environ les bases du Pawn je commence à me débrouiller un petit peu pour des choses simples à faire Cmd Anim, Menu D'armes etc pas grand chose de compliqué
Mais le probleme est que je bloque sur certaine façon d'utiliser ce langage et vu que le but est un peu de le comprendre et pas copier comme un con les tuto je passe par ici encore une fois si on peut m'aider ^^
Alors avec ce tuto
http://www.gtaonline.fr/forums/index.php/topic,9841.0.htmlQui explique si j'ai bien compris que le strtok est compliqué et pas assez lisible mais je veux tout de même comprendre au cas ou j'aurais à modifier un script ou autre
public OnPlayerCommandText(playerid, cmdtext[])
{
new idx, cmd[20];
cmd = strtok(cmdtext, idx);
if (strcmp(cmd, "/kick", true) == 0)
{
new tmp[20],id;
tmp = strtok(cmdtext, idx);
if (strlen(tmp))
{
id = strval(tmp);
if (IsPlayerConnected(id))
{
Kick(id);
SendClientMessage(playerid, 0x00FF00AA, "Le joueur fut kické(e)");
}
}
return 1;
}
return 0;
}
voici l'exemple donné pour commencer lorsque que il fait
new idx, cmd[20];
cmd = strtok(cmdtext, idx);
Donc en gros la fonction new si je me trompe pas c'est pour créer un genre de tableau, donc ici le tableau est de 20 cases? pourquoi utiliser 20 et pas un autre chiffre? ce que j'aimerais savoir quelques fois ils utilisent 127 d'autres moins enfin bref je comprends pas pourquoi
Ensuite il définit le "cmd" mais que veut dire strtok? et quelle est la valeur de idx ? je comprends qu'il y a 20 cases mais sinon je comprends plus grand chose désolé mais je débute vraiment je demande peut être un peu beaucoup ^^
if (strlen(tmp))
{
id = strval(tmp);
Dans cet partie je comprends pas le "strlen" sachant que le "tmp" est défini juste avant de la même façon que précédemment
Ensuite le "strval" de même je ne comprends pas sa fonction
Ensuite dans le tuto il parle du DCMD
alors il parle apres l'explique qu'il faut déclaré la fonction DCMD
#define dcmd(%1,%2,%3) if ((strcmp(%3, "/%1", true, %2+1) == 0)&&(((%3[%2+1]==0)&&(dcmd_%1(playerid,"")))||((%3[%2+1]==32)&&(dcmd_%1(playerid,%3[%2+2]))))) return 1;
Là c'est le flou total je sais que les % représente des paramètres comme on m'avait dit mais le reste franchement je sais pas si c'est nécessaire à savoir mais si possible de savoir ^^
{
dcmd(kick, 4, cmdtext);
return 0;
}
dcmd_kick(playerid, params[])
{
if (strlen(params))
{
id = strval(params);
if (IsPlayerConnected(id))
Ici apparemment sa veut définir la fonction "kick" mais pourquoi ce chiffre 4? je comprends pas
On revoit les fonctions strlen et strval que je connais pas du tout et params qui je pense veut dire "paramétrer" mais reste à voir
pour finir
if (sscanf(params, "d", id)) SendClientMessage(playerid, 0xFF0000AA, "Usage: /kick <ID>");
Donc le "d" définit une décimal mais pourquoi définir une décimal ici? si possible de m'expliquer
Sa fait beaucoup de question je sais peut etre un peu conne pour vous mais je veux apprendre et comprendre et non copié coller merci à ceux qui auront la motivation de répondre