• 03 Mai 2025, 20:05:17


Auteur Sujet: [AIDE]Besoin d'aide pour une commande SVP  (Lu 1394 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Este

  • "Titre personnel" C koa sa ? kès ki veut dire ?
  • *
  • PLP <3 plus qu'une team <:
  • Messages: 245
    • Voir le profil
[AIDE]Besoin d'aide pour une commande SVP
« le: 17 Juin 2011, 00:42:06 »
Bonjour, Bonsoir bon voila je veut testé une commande mais je ne sais pas ou la mettre (a quel endroit précis) donc je vien ici en espérant être aider. :laugh
Je veut faire une commande pour qu'un Admin puisse téléporté un joueur a un endroit et comme je débute en PAWN  je sais pas comment faire. :...
mais pour la commandes je pence qu'on peut s'inspiré de la commande "/unjail id"
/* Command /unjail */
else if (!strcmp(cmd, "/unjail", true))
{
new pid, tmpp[256];
tmpp = strtok(cmdtext, idx);
if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREEN, "UTILISE: /unjail [id]");
return 1;
}
pid = strval(tmpp);
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "CE JOUEUR N'EST PAS CONNECTÉ.");
return 1;
}
GetPlayerName(pid, pidName, sizeof(pidName));
format(tmpp, sizeof(tmpp), "Tu as fait sortir %s (ID:%d) de prison.",pidName,pid);
SendClientMessage(playerid, 0xAA3333AA, tmpp);
SetPlayerInterior(pid,0);
SetPlayerPos(pid,1546.2803,-1675.6632,13.5620);
TogglePlayerControllable(pid,1);
GetPlayerName(playerid, AdminName, sizeof(AdminName));
   format(tmpp, sizeof(tmpp), "liberer par %s",AdminName);
GameTextForPlayer(pid, tmpp, 1000,1)

voila le code le morceau de scritp en d'origine (script RAS by R@F)
Mais bien sur je sais aussi qui faut changer la position et la commande.



PS: je n'es pas l’habitude de demander de l'aide donc je m'excuse si je me suis mal exprimé.

++ Este
« Modifié: 17 Juin 2011, 00:46:01 par este_de »



Lapoule est nul. Typo est bo.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [AIDE]Besoin d'aide pour une commande SVP
« Réponse #1 le: 17 Juin 2011, 00:54:34 »
Salut,

Plutôt que d'utiliser strtok, tu devrais utiliser zcmd et sscanf, ce qui est plus simple ^^ (Voir le tuto de FuSion)

Si je comprends bien, tu voudrais une commande /atp [ID] [X] [Y] [Z] ?

Hors ligne Este

  • "Titre personnel" C koa sa ? kès ki veut dire ?
  • *
  • PLP <3 plus qu'une team <:
  • Messages: 245
    • Voir le profil
Re : [AIDE]Besoin d'aide pour une commande SVP
« Réponse #2 le: 17 Juin 2011, 01:06:45 »
Salut,

Ok merci je go voir le tuto de suite :) . :D                  

Double post
Re,    je m'excuse du double post    :(

Oui tu as comprit se que je voulais faire. :D
Tu vas peut être dire que je suis un noob xD. Mais a partir du tuto de FuSion je n'arriverai pas a faire se que j'ai dit xD .
 
Mais par hasard tu n'aurais pas un exemple de commande sous la main :$ . A vrai dire a par du copier coller et modifié a ma guise je sais rien faire d'autre :( .
Ou alors simplement me dire ou je doit mettre la commande si dessus (premier post) dans quel partie.
genre les commandes de téléportation tu les mais la public OnPlayerCommandText(playerid, cmdtext[])
Merci d'avance

++ Este
« Modifié: 17 Juin 2011, 01:30:45 par este_de »



Lapoule est nul. Typo est bo.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [AIDE]Besoin d'aide pour une commande SVP
« Réponse #3 le: 17 Juin 2011, 01:36:23 »
Alors déjà il faut que tu te procures les includes zcmd et sscanf (dans AdminOnDuty par exemple, Sim les a inclus).

Ensuite, tu crée ceci, hors de toute callback (donc pas dans OnPlayerCommandText) :

CMD:ateleport(playerid,params[])
{
     return 
1;
}


Ensuite là dedans, tu créées les variables que l'admin doit utiliser (donc ici, l'id du joueur et sa location X,Y,Z si la commande est /ateleport [id] [X] [Y] [Z])

CMD:ateleport(playerid,params[])
{
     new 
id;
     new 
Float:X,Float:Y,Float:Z;

     return 
1;
}


Après, tu utilises sscanf qui va vérifier automatiquement si ce que tu as entré correspond bien à "ifff", c'est à dire un entier (l'ID du joueur à téléporter) et 3 flottants (les positions X,Y et Z)

CMD:ateleport(playerid,params[])
{
     new 
id;
     new 
Float:X,Float:Y,Float:Z;
     if(
sscanf(params,"ifff",id,X,Y,Z)) return 0// Ca, c'est si ce que le joueur a entré ne correspond pas (lettres à la place, ou param manquant). Tu peux mettre un SendClientMessage à la place du 0.
     
else
     {
           
SetPlayerPos(id,X,Y,Z); // Au lieu de playerid, on met id (la variable). Sinon c'est le joueur qui a tapé la commande qui sera téléporté.
           
SendClientMessage(playerid,0xFFFFFFFF,"Le joueur a été téléporté");
           
SendClientMessage(id,"Tu as été téléporté");
     }
     return 
1;
}


Donc dans le "else", on met ce qui correspond si ce que le joueur a entré correspond bien à ce qui était attendu par la commande. sscanf et zcmd remplacent tout ce qui est strtok, etc. (Et c'est peut être pas plus mal sachant que le code pour 4 paramètres doit être sacrément long)

EDIT : N'oublie pas de vérifier si le joueur qui tape la commande (playerid) est admin, et que le joueur qui doit être téléporté (id) est bien connecté ! Pour ça, c'est pas très dur alors je te laisse faire.

Je ferai peut être un tuto en .pdf là dessus dans la semaine ^^

++

Hors ligne Este

  • "Titre personnel" C koa sa ? kès ki veut dire ?
  • *
  • PLP <3 plus qu'une team <:
  • Messages: 245
    • Voir le profil
Re : [AIDE]Besoin d'aide pour une commande SVP
« Réponse #4 le: 17 Juin 2011, 01:58:03 »
Voila j'ai essayé mais je n'arrive pas a mettre le screen  :wall

voila j'ai quoi quand je compile
v1.2.pwn(909) : warning 203: symbol is never used: "ateleport"
et voila la commande
CMD:ateleport(playerid,params[])
{
     new id;
     new Float:2910.03417969,Float:-762.74932861,Float:10.65703773;
     if(sscanf(params,"ifff",id,2910.03417969,-762.74932861,10.65703773)) return 0; // Ca, c'est si ce que le joueur a entré ne correspond pas (lettres à la place, ou param manquant). Tu peux mettre un SendClientMessage à la place du 0.
     else
     {
           SetPlayerPos(id,2910.03417969,-762.74932861,10.65703773); // Au lieu de playerid, on met id (la variable). Sinon c'est le joueur qui a tapé la commande qui sera téléporté.
           SendClientMessage(playerid,0xFFFFFFFF,"Le joueur a été téléporté");
           SendClientMessage(id,"Tu as été téléporté par un Admin/Modo.");
     }
     return 1;
}// ici se trouve la ligne 908
voila je n'es pas de ligne 909 je ne comprend pas :S


++ Este
« Modifié: 17 Juin 2011, 02:03:42 par este_de »



Lapoule est nul. Typo est bo.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [AIDE]Besoin d'aide pour une commande SVP
« Réponse #5 le: 17 Juin 2011, 10:37:02 »
new Float:2910.03417969,Float:-762.74932861,Float:10.65703773;
Non, tu dois laisser Float:X, Float:Y, Float:Z, leur valeur sera celle que l'admin va leur donner.

Et ici, laisse X,Y,Z aussi ^^
if(sscanf(params,"ifff",id,X,Y,Z))
++

PS : A moins que tu veux que l'endroit où tu téléportes le joueur soit toujours le même ? ^^

Dans ce cas, tu peux faire ça :

CMD:ateleport(playerid,params[])
{
     new id;
     if(sscanf(params,"i",id)) return 0; // Ca, c'est si ce que le joueur a entré ne correspond pas (lettres à la place, ou param manquant). Tu peux mettre un SendClientMessage à la place du 0.
     else
     {
           SetPlayerPos(id,Coordonnées X,Y,Z du téléport); // Au lieu de playerid, on met id (la variable). Sinon c'est le joueur qui a tapé la commande qui sera téléporté.
           SendClientMessage(playerid,0xFFFFFFFF,"Le joueur a été téléporté");
           SendClientMessage(id,"Tu as été téléporté par un Admin/Modo.");
     }
     return 1;
}// ici se trouve la ligne 908
« Modifié: 17 Juin 2011, 10:38:36 par Gilux »

Hors ligne Este

  • "Titre personnel" C koa sa ? kès ki veut dire ?
  • *
  • PLP <3 plus qu'une team <:
  • Messages: 245
    • Voir le profil
Re : [AIDE]Besoin d'aide pour une commande SVP
« Réponse #6 le: 17 Juin 2011, 14:20:06 »
Ok Mais alors les coordonné de la téléportation je doit les mettre ou ?



++ Este



Lapoule est nul. Typo est bo.

Hors ligne Xolokos

  • PAWN/XHTML/CSS/PHP/SQL/JS
  • *
  • Grand Banditisme
  • What are you waiting for ?
  • Messages: 681
    • Voir le profil
Re : [AIDE]Besoin d'aide pour une commande SVP
« Réponse #7 le: 17 Juin 2011, 15:27:04 »
SetPlayerPos(playerid,Coordonnées X,Les Y,Et Z du téléport);
Tu remplace le X Y et Z par les coordonnées.
Nippah !

Hors ligne Este

  • "Titre personnel" C koa sa ? kès ki veut dire ?
  • *
  • PLP <3 plus qu'une team <:
  • Messages: 245
    • Voir le profil
Re : [AIDE]Besoin d'aide pour une commande SVP
« Réponse #8 le: 17 Juin 2011, 15:56:22 »
alors voila hier j'étais fatigué donc j'arrivé a rien et maintenant j'ai réussi a faire la commande que je voulais :D
/* Command /unjail */
else if (!strcmp(cmd, "/unjail", true))
{
new pid, tmpp[256];
tmpp = strtok(cmdtext, idx);
if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREEN, "UTILISE: /unjail [id]");
return 1;
}
pid = strval(tmpp);
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "CE JOUEUR N'EST PAS CONNECTÉ.");
return 1;
}
GetPlayerName(pid, pidName, sizeof(pidName));
format(tmpp, sizeof(tmpp), "Tu as fait sortir %s (ID:%d) de prison.",pidName,pid);
SendClientMessage(playerid, 0xAA3333AA, tmpp);
SetPlayerInterior(pid,0);
SetPlayerPos(pid,1546.2803,-1675.6632,13.5620);
TogglePlayerControllable(pid,1);
GetPlayerName(playerid, AdminName, sizeof(AdminName));
   format(tmpp, sizeof(tmpp), "liberer par %s",AdminName);
GameTextForPlayer(pid, tmpp, 1000,1);
return 1;
}
voila la commande d'origine.

et maintenant voila la commande modifié testé et qui fonctionne :D/* Command /atplv */
else if (!strcmp(cmd, "/atplv", true))
{
new pid, tmpp[256];
tmpp = strtok(cmdtext, idx);
if (!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREEN, "UTILISE: /atplv [id]");
return 1;
}
pid = strval(tmpp);
if (!(IsPlayerConnected(pid)))
{
SendClientMessage(playerid, COLOR_RED, "CE JOUEUR N'EST PAS CONNECTÉ.");
return 1;
}
GetPlayerName(pid, pidName, sizeof(pidName));
format(tmpp, sizeof(tmpp), "Tu as téléporté %s (ID:%d).",pidName,pid);
SendClientMessage(playerid, 0xAA3333AA, tmpp);
SetPlayerInterior(pid,0);
SetPlayerPos(pid,2024.06896973,1342.97998047,10.53162193);
TogglePlayerControllable(pid,1);
GetPlayerName(playerid, AdminName, sizeof(AdminName));
   format(tmpp, sizeof(tmpp), "téléporté pas un Admin ou un Modo",AdminName);
GameTextForPlayer(pid, tmpp, 1000,1);
return 1;
}

Donc voila Gilux excuse moi de t'avoir dérangé si c'est le cas


++ Este
« Modifié: 17 Juin 2011, 15:59:05 par este_de »



Lapoule est nul. Typo est bo.

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [AIDE]Besoin d'aide pour une commande SVP
« Réponse #9 le: 17 Juin 2011, 18:51:25 »
Pas de soucis ;)