• 04 Mai 2024, 06:21:35


Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - Kiloutre

Pages: 1 [2] 3
16
Scripting SA-MP [Pawn center] / [TUTO] Les fonctions Str
« le: 06 Septembre 2012, 18:00:50 »
Bonjour a tous et a toutes, j'aimerai vous presenter ce tuto sur le Str ! (Str car toutes les fonctions que je vais cité commencent par "str" donc soyons logique ! :D)

Tous d'abord avant de commencer quoique ce soit, vous devez inclure le code que je vais vous donner dans la fin ou le debut de votre script (Ou dans un coin pas trop visible) ou optionellement en faire une include (Choisisez la 1er option pour les debutants).

Code: (PAWN) [Sélectionner]
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}

new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}

stock strrest(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[128];
while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}

Je vais commencer par le strcmp. Le strcmp sert a comparer (d'ou le "cmp") deux chaine de caractère et voir si un est egal a l'autre, selon certains options a definir.
Voici deux simple exemple :

Code: (PAWN) [Sélectionner]
new texte1[7] = "Salut !";
new texte2[7] = "Salut !";
if(strcmp(texte1, texte2,true)==0)
Ici nous comparons si texte2 est egal a texte1 (Peu importe l'ordre)
Passons aux explications :

Code: (PAWN) [Sélectionner]
strcmp Ca je vous ai deja expliquer, c'est la fonction strcmp, qui va comparer deux texte(Ou variables) avec des options a definir.
Code: (PAWN) [Sélectionner]
texte1, texte2 Les deux 1er parametres, le 1er defini la chaine de caractere de base (Remplacable par une variable), le deuxieme est la chaine de caractere(Aussi remplacable par une variable) qu'on va comparer. En gros, on va verifier si la 2eme chaine de caractere (ou le texte) ressemble a la 1ere. En d'autre termes : Si texte2 vaut texte1, on fait l'action.
Code: (PAWN) [Sélectionner]
true Le 3eme parametre. Si ce parametre est sur true (True = vrai, false = faux) alors nous ne compareront pas les majuscule(Elle seront ignorés). Si il est sur false et que texte1 = "SaLuT !" et texte2 = "salut !" alors la le code ne sera pas executer.

Code: (PAWN) [Sélectionner]
if(strcmp("Hihihi","ihihiH",true)==0)
{
     code...
}
Ce code ne marchera pas, etant donné que "Hihihi" n'est pas egal a "ihihiH"

Code: (Pawn) [Sélectionner]
if(strcmp("Hihihi","hihihi",false)==0)
{
     code...
}
Ce code ne marchera pas non plus, etant donnée que les majuscules ne sont pas ignorés et que "hihihi" n'a pas de majuscule au depart comme le 1er caractere.

Ca n'en a pas l'air mais le strcmp peut beaucoup vous servir. En particulier pour creer des commandes
Exemple :

Code: (PAWN) [Sélectionner]
if(strcmp(cmd,"/macommande",true)==0)
{
   code...
}

Pas besoin d'explications !

Autre utilité impressionante du strcmp : Creer des commandes avec argument (Explications plus bas) et detection de texte (ou plutot comparaison).

Explications :

Une commande avec argument est (pour moi) une commande qui prend en compte le texte apres le "/macommande ICI" .Ca ne se fait pas par magie, pour faire ca il faut remplacer le "cmdtext" de "if(strcmp(cmdtext,"/macommande",true)==0)" et le remplacer par un simple "cmd" que vous devez creer dans la CallBack OnPlayerCommandText et aussi creer un "idx". Je ne peux vous fournir des informations sur le "idx" en raison de mes faibles connaissances. Mais je peux vous dire que "cmd" vaut la 1er chose ecrite (Le "/macommande" si vous preferer). Voici la methode :

Code: (PAWN) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
     new cmd[128], tmp[128],idx;
     cmd = strtok(cmdtext, idx);
     if(strcmp([u][b]cmd[/b][/u],"/macommande",true)==0)
     {
          tmp = strtok(cmdtext, idx); //Le nom est changeable, juste le "tmp", rien d'autre.
          new id = strval(tmp); //Le strval est obligatoire ! Grace a ce code, id vaudra tmp et donc si je tape "/macommande 2" id vaudra 2
          return 1;
     }
     return 0;
}

Code: (PAWN) [Sélectionner]
cmd,"/macommande" Si /macommande est egal a cmd et donc si cmd est egal a ma commande(Et inversement  :D), nous ferons ce qui est prevu de faire(Ici , rien :D).
Code: (PAWN) [Sélectionner]
tmp = strtok(cmdtext, idx); Ici tmp vaudra la 1er chose ecrite apres le "/mycommand ICI"
Donc si je fait "/macommande coucou" tmp vaudra "coucou" et je pourrais le transferer vers une autre variable(ou directement m'en servir grace au strval(tmp) (voir plus bas) :D)

Code: (PAWN) [Sélectionner]
new id = strval(tmp); Ici j'utilise la fonction strval, qui permet de mettre le contenu d'une variable qui recupere le texte apres le "/mycommand ICI" dans une autre variable. Donc ici ci je marque "/mycommande 0" id vaudra 0 ! (info 5 lignes plus bas)



Le strval permet de transferer le contenu d'une variable (pas une simple variable) dans une autre.  Le type de variable doit etre utiliser par le strtok, un simple exemple pris plus haut pour vous expliquer :

Code: (PAWN) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
     new cmd[128], tmp[128],idx; //Je vous conseille fortement de lui laisser 128 caracteres, mais faites comme vous voulez.
     cmd = strtok(cmdtext, idx); //Recupere "/macommande"
     if(strcmp([u][b]cmd[/b][/u],"/macommande",true)==0)
     {
          tmp = strtok(cmdtext, idx); //C'est ce type de variable la, (Cette variable va recuperer le texte apres le "/macommande"
          new id = strval(tmp); //Le strval est obligatoire ! Grace a ce code, id vaudra tmp et donc si je tape "/macommande 2" id vaudra 2
          return 1;
     }
     return 0;
}

Nous parlons de ce type de variable :
Code: (PAWN) [Sélectionner]
tmp = strtok(cmdtext, idx); //C'est ce type de variable la, (Cette variable va recuperer le texte apres le "/macommande"Et nous pouvons l'inserer grace a :
Code: (PAWN) [Sélectionner]
new id;
id = strval(tmp);


Retournons au strcmp, voulez-vous. >:(
Si jamais je veux recuperer la deuxieme chose apres le "/mycommande Blabla ICI" je doit donc faire
Code: (PAWN) [Sélectionner]
new tmp[128];
new variable[128];
tmp = strtok(cmdtext, idx);
variable = strtok(cmdtext, idx);
Tmp vaudra "BlaBla", et variable vaudra "ICI"

Soyons un peu plus precis :
Code: (PAWN) [Sélectionner]
new cmd[128], idx;
cmd = strtok(cmdtext, idx);//Recupere "/macommande"
if(strcmp(cmd,"/macommande",true)==0)
{
new tmp, tmp2, tmp3, tmp4;
tmp = strtok(cmdtext, idx);
tmp2 = strtok(cmdtext, idx);
tmp3 = strtok(cmdtext, idx);
tmp4 = strrest(cmdtext, idx);
return 1;
}

Imaginons que le joueur ecrive "/macommande salut ca va copain ? Hihihi lol"
Alors cmd vaudra "/macommande"
Alors tmp vaudra "salut"
tmp2 vaudra "ca"
tmp3 vaudra "va"
tmp4 vaudra "copain ? Hihihi lol"
En effet le strrest permet de recuperer tous les mots apres la derniere chose recuperer (Ici, la derniere chose est "va") (Et en effet, si rien n'est recuperer au depart il prendra tous, le goinfre !  :D)

Maintenant passons au strfind !




Le strfind comme son nom l'indique permet de "find" (trouver) tous le contenu d'une variable(Ou du texte) dans une autre ! N'est ce pas merveilleux ?
Exemple :
Code: (PAWN) [Sélectionner]
new texte1[11] = "Salut ca va ?";
new texte2[5] = "Salut";
if(strfind(texte1, texte2,true)==0)
Ici si il trouve tous le contenu de texte2 dans un coin de texte1 (peu importe l'endroit ou c'est placer) il fait ce qu'on lui indique. C'est la meme formulation et les meme parametres que strcmp en remplacant "cmp" par "find" ! N'est-ce pas merveilleux ? :D




Le strdel comme son nom l'indique permet de supprimer tous une partie designer. Mais ce n'est pas aussi simple que prevu, voici l'exemple du wiki :
new string[42] = "We will delete everything apart from this";
strdel(string, 0, 37); //La variable "string vaut maintenant "this" vu que il a supprimer tous entre le caractere 0 et 37
(Dites le moi si je me trompe, je n'ai jamais utiliser le strdel)
Explications :
new string[42] = "...";Creer la variable string avec comme contenu le texte plus haut

Code: (PAWN) [Sélectionner]
strdel La fonction strdel
Code: (PAWN) [Sélectionner]
(string, 0, 37) Tous ce qui est entre le caractere 0 et 37 sera supprimer (Les espaces comptent) et donc seul les choses avant le 1er chiffre(ici 0 donc rien) et apres le deuxieme (37) seront epargner.




Le strins permet d'inserer cette fois ci le contenu d'une variable, dans une autre. Ici aussi nous allons prendre l'exemple du wiki !

Code: (PAWN) [Sélectionner]
new pName[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
strins(pName, "[AFK]", 0);
SetPlayerName(playerid, pName);

Pour faire simple et court, le strins va inserer "[AFK]" a l'endroit du caractère 0 du contenu de "pName" (Donc tous au début) et donc si je remplace le 0 par un 1 [AFK] sera placer apres apres le 1er caractere du contenu de pName ce qui donnera si mon pseudo est "GTAONLINE" "G[AFK]TAONLINE" .




Le strlen sert a recuperer le nombre de caractere que contient une variable. Quel utilité me direz vous ? Cela permet de detecter si le joueur a ecrit quelquechose. Exemple :

Code: (PAWN) [Sélectionner]
new tmp[4] = "Hoyo"; //4 Caractere sont present
if(strlen(tmp) == 0) //Si tmp vaut 0 caracteres (En gros si rien est inscrit)

Autre exemple d'utilisation :

new tmp[128] = "test test test test", vartest; //16 caracteres + 4 espaces (Donc 20 caracteres)
vartest = strlen(tmp); //Ici, vartest vaudra 20

Ce tuto n'est pas encore fini (par faute de temps, mais je vais le continuer) et d'autre fonction existent. Si vous voulez tous savoir, le wiki est la pour vous ! ICI




Le strmid permet lui d'extraire une partie de texte, pour peut-ètre la mettre dans une variable.
Exemple :

strmid(string, "Extract 'HELLO' without the !!!!: HELLO!!!!", 34, 39);Exmplications :
strmid La fonction strmid permettant d'extraire du texte.
(string, Le nom de la variable ou va aller le texte extrait.
, 34, 39) Tous ce qui sera entre le caractere 34 et 39 sera extrait.

Autre exemple :

strmid(variable ou sera stocké ce qui sera extrait, Texte/variable qui sera extrait, caractere de commencement, fin, taille maximal);


Le strcat permet lui d'inserer tous le contenu d'une variable ou d'un texte dans la fin d'une variable.
Exemple :

Code: (PAWN) [Sélectionner]
new test[128] = "Salut";
strcat(test, " mon pote!");

test vaut maintenant "Salut mon pote!"
Prenons un autre exemple :
Code: (PAWN) [Sélectionner]
new pName[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
strcat(pName, "[AFK]");
SetPlayerName(playerid, pName);
Le nom du joueur sera maintenant "SONPSEUDO[AFK]" . Si son pseudo est "GTAONLINE" il sera maintenant "GTAONLINE[AFK]"

Les parametres :

(        dest[]                   ,const source[]        ,maxlength=sizeof string    )
(variable ou sera inserer le texte, ce qu'il y a a inserer, Taille Maximum de caractere)

C'est ici que s'acheve ce tutoriel sur les fonctions str, pour avoir plus d'info dessus, faites un tour sur le wiki de samp

17
Scripting SA-MP [Pawn center] / Probleme Dini
« le: 04 Septembre 2012, 10:46:13 »
Bonjour a tous et a toutes, j'aimerai savoir dans dini comment sauter une ligne (Si possible), et separer des partie de textes pour pouvoir par exemple faire des Statistiques.

J'ai bien regardé le tuto de cristab, mais il explique juste les fonctions, et ce n'est pas ce que je cherche.

18
Scripting SA-MP [Pawn center] / Mettre une couleur sur un seul mot
« le: 03 Septembre 2012, 00:55:07 »
Bonjour, j'aimerais mettre une couleur sur un seul mot dans un SendClientMessage, je sais que c'est possible et j'ai deja vu ca. Comment faire ?

19
Bonjour a tous et a toutes, il y a deux jours que j'ai un probleme totalement inconnu, l'erreur 20.
Ce probleme ne survient pas quand je compile, mais lors que je lance le samp.exe.

Le probleme est apparu lorsque que j'ai crée une nouvelle commande dans mon gamemode que je venais de creer deux heures avant, j'ai tenté de supprimer la partie que je venait de creer mais le probleme est toujours present, j'ai supprimé toutes la callback OnPlayerCommandText mais ca ne change toujours rien. J'ai meme été jusqu'a mettre tous mon script en blanc en mettant une include et une callback mais, le probleme reste la.

Voici ce que je vois dans mon samp.exe :

Script[gamemodes/test.amx]: Run time error 20: "Invalid index parameter <bad entry point>"

20
Scripting SA-MP [Pawn center] / Fonction
« le: 24 Août 2012, 03:09:38 »
Bonjour, j'ai recemment tenté de crée une fonction qui combinerai le format avec le sendclientmessage, mais deux erreurs se presente, et je ne comprend rien :

Ici l'erreur "error 035: argument type mismatch (argument 5)"
Code: (PAWN) [Sélectionner]
SendFormatedClientMessage(playerid, PMCOLOR, "PM a [%d]%s : %s", id, cibledplayername, cmdtext[8]);
Ma fonction :

Ici l'erreur "error 029: invalid expression, assumed zero" survient sur la ligne du "format", et je ne comprend pas  :(
Code: (PAWN) [Sélectionner]
SendFormatedClientMessage(playerid, color, text[], variable1, variable2, variable3)
{
new message[128];
format(message, sizeof(message), text[], variable1, variable2, variable3);
SendClientMessage(playerid, color, message);
}

21
Showroom SA:MP / [FS] Keapon 3.0
« le: 23 Août 2012, 02:46:11 »
Bonjour a tous et a toutes, voici la 3eme et avant derniere amelioration de mon FS (destiné au serveur Freeroam/DM) Keapon.
Dans cette version tous est en dialogue, ce qui permettra aux debutant de se documenter la dessus :D

Maintenant, passons au ce qui nous interesse :

/wep Pour arriver dans les catégories des armes
Choissisez une categorie parmi la liste
Choissisez ensuite une arme dans la catégorie choisi

Liste des armes disponible :

Fleur, Poing Américain, Extincteur, Bombe Tag
Couteau, Katana, Pelle, Grenade, 9mm, 9mms (silencieux), Tronconneuse
Desert Eagle, Fusil a pompe, Fusil de combat, Fusil a Canon Scié
MiniUzi, MP5, AK47, M4, Tec9, Fusil Sniper, Cocktail Molotov, Fusil de Campagne
RPG, RPGT (Téléguidé), C4 (+detonateur), Parachute, Minigun, Lance Flamme, Appareil Photo

Les nouveautés de la 3.0: Tous le FS est maintenant constitué de boite de dialogue

Si vous souhaitez que j'apporte une modification ou autre commentez ou envoyez moi un mail a : [email protected]

Lien Pastebin : http://pastebin.com/JBcNe6A1



22
Scripting SA-MP [Pawn center] / Systeme de Recherche
« le: 22 Août 2012, 23:33:31 »
Bonjour j'aimerais crée un systeme de recherche d'arme comme le "/getvid" de Lalu's Stunt et j'aimerais savoir si il existe un "ReturnModelByName" mais pour les armes.

J'ai chercher, beaucoup chercher  :wall

23
Bonjour a tous et a toutes, voila beaucoup de temps que je cherche une solution a un probleme simple : Ma boite de dialogue disparait des que je clique sur quelquechose dans ma liste !

Voici mon bout de code :

public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext,"/wep",true)==0)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Catégories", "Arme de Melee\nPistolet\nMitraillette\nFusil a Pompe\nExplosif\nAutres", "Continuer", "Quitter");
   return 1;
}
return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)
{
     if(dialogid == 1)//Si la personne choisi le dialog numero 1 (Catégories)
     {
        if(listitem == 0)
        {
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST,"Arme de Melee", "Couteau\n Katana\nBatte de Baseball\nPoing Américain\nPelle", "Prendre", "Retour");
}
     }
    
     if(dialogid == 2)
     {
        if(listitem == 0)
        {
GivePlayerWeapon(playerid,4,0);
SendClientMessage(playerid,COLOR_VERT,"Vous venez de recevoir un Couteau");
}
}
}
    return 1;
}

Ici quand je choisi la categorie "Arme de Melee" (Boite de dialogue n°2) ma boite de dialogue disparait, et c'est tous. J'ai meme essayé d'inserer un SendClientMessage quand on arrive dans la categorie pour voir si ca marchais mais non.

J'espere franchement trouvé la solution ca fait tres longtempss que je cherche  :wall

24
bonjour, je cherche a savoir comment faire pour crée une commande dont le texte derriere le "/commande" soit pris en compte
Exemple :

/veh [ID] [COLOR1] [COLOR2]

J'ai beaucoup cherché, mais jamais trouvé.

Et sinon, j'ai une question. Quand on crée une variable avec un [MAX_PLAYERS] je sais que si on recupere sa valeur, ca va recuperer sa valeur par rapport au joueur en question, mais si je la modifie dans un OnPlayerCommandText (ou OnPlayerEnterVehicle, et autre callback) la valeur sera modifié juste pour le joueur concerné ?

25
Votre pseudo : [BTS]KonVict92x
Le serveur : Lalu Stunt
La raison du bannissement : Envoie d'un pm a un admin "Je veux pas te vexer mais je trouve que t'est pas un bon admin. Meme moi je ferais mieux."
La date et heure du bannissement : 2 Aout à 17h30  
Commentaire supplémentaire : Il m'a aussi kick parceque j'ai prononcer le mot "Creve", et je trouve ca scandaleux. Si on joue a Samp c'est pas pour parler comme un "bourge" bien poli et tous.

26
Voila, jai plusieurs probleme et question, donc je poste. En premier,je voudrais crée une commande pour pouvoir afficher le nombre d'arme que les gens ont prise dans un fs a moi, mais rien ne s'affiche lors de la commande. Voici le code :

Define de la variable weaponnumber
new weaponnumber = 0;
Commande pour afficher
if (strcmp("/armesdet", cmdtext, true, 10) == 0 || strcmp("/armedet",cmdtext,true,10) == 0 || strcmp("/wepdet",cmdtext,true,10) == 0)
{
      printf("%d",weaponnumber);
      return 1;
}

Moment ou on ajoute 1 a la variable
if(listitem == 0) //Poing Américain
{
     GivePlayerWeapon(playerid,1,0);
     SendClientMessage(playerid,COLOR_ORANGE,"Vous venez de recevoir un Poing Américain");
     weaponnumber ++;
}

Ensuite, j'aimerais crée une commande, qui aurait plusieurs fonctionnalité grace au texte affiché apres le "/NOMDELACOMMANDE" et je ne sais pas comment faire.

Merci d'avance.

27
Scripting SA-MP [Pawn center] / Probleme de Boite de Dialogue
« le: 18 Juillet 2012, 21:01:13 »
Bonjour, je suis en train de developpé une nouvelle version completement modifié de mon fs "Keapon". J'ai crée des boites de dialogues en suivant les exemples du wiki, mais un probleme survient IG :

Quand je clique sur une catégorie dans ma liste de ma 1ère boite de dialogue, elle disparait ! Je vous laisse regardez mon code (pendant je compilage aucune erreur ne survient ni un warning)

Pastebin : http://pastebin.com/T7h8eRhx

28
Bonjour a tous et a toutes, je cherche un moyen d'empecher quelqun d'executé une commande si elle a deja été executé (peut importe qui). Pour cela j'avais pensé a une variable. Mais le souci est que je ne sait pas comment m'en servir. Si quelqun pouvait m'eclairer.


EDIT : J'ai trouvé ma réponse grace a ca : http://www.gtaonline.fr/forums/index.php/topic,11595.0.html

29
Scripting SA-MP [Pawn center] / Condition de Vehicule
« le: 15 Juillet 2012, 18:56:49 »
Bonjour a tous et a toute, je cherche a crée un fs qui reparerai un vehicule quand il subit des dégats (pratique pour les serveur de stunt) mais pour cela, j'aurais besoin de savoir si il existe une condition  tel que OnVehicleDamage (c'est un exemple que je vient d'inventer) qui executera une action (comme toutes les conditions, d'ailleurs). Si quelqun arrive a comprendre ce que je dit (ca releverai du miracle  :laugh ) ca serait sympa de me repondre.

Merci d'avance.

30
Showroom SA:MP / [FS] Keapon 2.0
« le: 14 Juillet 2012, 22:42:32 »
Bonjour, je vous présente la deuxieme version de mon tous premier FS : Keapon
Ce fs codé en 1h vous permettra d'obtenir des armes partout a n'importe quel moment, grace a la commande "/arme", "/armes" ou encore "/wep".

Utilisation :

/armes pour avoir la liste des armes
Choissisez une arme parmis la liste.
Exemple : Si vous choisissez "Grenade" faites /grenade

Attention ! Il ne faut pas marquer les espaces, mais juste le nom des armes rajouté d'un "/" avant !

Exemple : Si vous choisissez "Desert Eagle" faites /deserteagle

Liste des armes disponible :

Fleur, God1, God2, Vibro1, Vibro2, Poing Américain, Extincteur, Bombe Tag
Couteau, Katana, Pelle, Grenade, 9mm, 9mms (silencieux)
Desert Eagle, Fusil a pompe, Fusil de combat
MiniUzi, MP5, AK47, M4, Tec9, Fusil Sniper, Cocktail Molotov
RPG, RPGT (Téléguidé), C4 (+detonateur), Parachute, Minigun, Lance Flamme

Si vous souhaitez que j'apporte une modification ou autre commentez ou envoyez moi un mail a : [email protected]

Lien Pastebin : http://pastebin.com/M3CMnRbw
Lien Mediafire (RAR) : http://www.mediafire.com/?zoyzezhgx2brilz

Je compte aussi en crée un pareil uniquement pour les admins, dites le moi si ca interesse quelqun.

Le Problème qui affichait que la commande ne s'executais pas a été résolu ,et j'ai mit un lien Mediafire.

Voici une liste des changements apporté :

-Ajout de la commande /deagle
-Ajout de la commande /uzi
-Ajout de la commande /wep
-Ajout de nouvelles armes (pelle, cocktail molotov)
-Define SCM Supprimé
-Define GPW Supprimé
-Ajout de nouvelles armes
-Ajout de la commande /molotov
-Ajout de la Fleur
-Ajout des deux Gods et des deux Vibromasseur
-Ajout de l'Extincteur
-Ajout de la Bombe a Tag
-Ajout de la commande /shotgun
-Ajout de la commande /warshotgun
-Ajout de la commande /para
-Ajout de la commande /tag
-Ajout de la Batte de BaseBall
-Ajout de la commande /batte

Pages: 1 [2] 3