GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: madinina972 le 17 Mai 2013, 17:43:49

Titre: zcmd en strcmp , Comment faire?
Posté par: madinina972 le 17 Mai 2013, 17:43:49
Bonjour tout le monde.

Hier j'ai voulue intégré le FS Boombox de D_Malfoy dans mon GM mais le soucis est que ce FS utilise zcmd.
Comment faire pour que je 'convertisse' en strcmp.
J'ai recherché un peu partout et notamment sur le forum sa-mp et je suis tombé sur cela

http://forum.sa-mp.com/showthread.php?t=231496 (http://forum.sa-mp.com/showthread.php?t=231496)

et dans son post il dit :
Citer
So, you need to replace all your "cmdtext" to "params". Example:
Moi je veux faire l'opération inverse donc j'ai remplacé tout les 'params' par 'cmdtext' et quand je compile je me retrouve avec 21erreurs.

Code: (pawn) [Sélectionner]
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(57) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(60) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(62) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(63) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(65) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(67) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(70) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(76) : error 021: symbol already defined: "GetPlayerPos"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(82) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(84) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(91) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(96) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(98) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(100) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(110) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(114) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(116) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(117) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(119) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(121) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(127) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(166) : warning 203: symbol is never used: "Boombox"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(166) : warning 203: symbol is never used: "a"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(166) : warning 203: symbol is never used: "string"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(166) : warning 203: symbol is never used: "x"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(166) : warning 203: symbol is never used: "y"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(166) : warning 203: symbol is never used: "z"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


21 Errors.

Comment faire?
Merci d'avance
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: Infu le 17 Mai 2013, 17:54:28
La meilleure façon, c'est que tu installes ZCMD, ça coûte rien, c'est plus rapide et moins de lignes de code  :thumbup:
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: madinina972 le 17 Mai 2013, 17:58:49
le problème c'est que si je met zcmd, il faut que je refasse toutes les commandes avecc zcmd non ?
Et si c'est le cas, il y aura une multitude de commande à refaire..
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: Infu le 17 Mai 2013, 18:09:48
Moi il me semble qu'il ne faut pas faire de commandes type CMD:macommande(playerid, params[]) dans OnPlayerCommandText c'est tout... Après je sais pas faut voir sur le post de ZCMD
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: cristab le 17 Mai 2013, 18:18:52
en meme temps nous ne connaissons pas forcement ton code donc nous ne savons pas a quoi coorespondent les erreures
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: S!m le 17 Mai 2013, 23:38:27
Salut,

si mes souvenirs sont bons, tu peut mettre zcmd dans un de tes scripts et laisser les autres normal....

++Sim++
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: madinina972 le 19 Mai 2013, 12:28:53
Bah le soucis est que justement j'ai essayé de laisser en zcmd alors que toutes mes autres commandes sont en strcmp mais lorsque j'ai compilé,le compilateur a crash..  :laugh:
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: S!m le 20 Mai 2013, 03:04:28
Salut,

ah j'avais pas vu que tu l'intégrais dans ton gm, je te confirme: dans un même script c'est un ou c'est l'autre!

le mieux c'est de passer tes commandes en zcmd, c'est plus rapide et plus facile à gérer.
et puis, passer
if(strcmp(cmdtext, "/blabla", true) == 0)
en
CMD:blabla(playerid, params[])

c'est moins difficile que l'inverse.

++Sim++
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: madinina972 le 20 Mai 2013, 11:18:59
Je suis d'accord, mais il y a une multitude de commandes .. donc pour tous les passé en zcmd ça va être long..
Et comme le FS du Boombox est en zcmd je me demandais juste comment faire pour le passer en strcmp. Car vaut mieux passer 1commande zcmd en strcmp que 100 commandes strcmp en zcmd, non ?
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: Infu le 20 Mai 2013, 11:41:16
Bah s'il n'y en a qu'une c'est simple....


Code: (pawn) [Sélectionner]
// ZCMD, Commande KICK tirée de mon GM //
CMD:kick(playerid, params[])
{
new id, raison[MAX_TEXT], str[MAX_TEXT], str2[MAX_TEXT];
if(sscanf(params, "is", id, raison)) SendClientMessage(playerid, COLOR_RED, "Usage: /kick <id> <raison>");
else
{
    format(str2, MAX_TEXT, "~w~Vous avez ete kick du serveur ! (~r~Raison: %s~w~)", raison);
    GameTextForPlayer(id, str2, 3000, 4);
    format(str, MAX_TEXT, "* ID %i a été kické du serveur. (Raison: %s)", id, raison);
    SendClientMessageToAll(COLOR_RED, str);
    printf(str);
SetTimerEx("kick1", 1000, false, "d", id);
}
return 1;
}
public kick1(id)
{
Kick(id);
return 1;
}
/////////////////////En STRCMP, ça devient....

if(!strcmp(cmdtext, "kick", true) == 0)
{
    new id, raison[MAX_TEXT], str[MAX_TEXT], str2[MAX_TEXT];
    if(sscanf(cmdtext, "is", id, raison)) SendClientMessage(playerid, COLOR_RED, "Usage: /kick <id> <raison>");
    else
    {
format(str2, MAX_TEXT, "~w~Vous avez ete kick du serveur ! (~r~Raison: %s~w~)", raison);
GameTextForPlayer(id, str2, 3000, 4);
format(str, MAX_TEXT, "* ID %i a été kické du serveur. (Raison: %s)", id, raison);
SendClientMessageToAll(COLOR_RED, str);
printf(str);
SetTimerEx("kick1", 1000, false, "d", id);
    }
    return 1;
}
public kick1(id)
{
Kick(id);
return 1;
}

J'ai juste changé:

Code: (pawn) [Sélectionner]
CMD:kick(playerid, params[])
/* par */
if(!strcmp(cmdtext, "kick", true) == 0)

/* et */
if(sscanf(params, "is", id, raison))

/* par */
if(sscanf(cmdtext, "is", id, raison))

Et pour ceux qui se posent la question "Pourquoi il utilise un timer pour kick la personne"? Car quand on kick une personne, la personne kické ne voit pas la raison. Alors que là, je lance le timer de 1 seconde et bim, kick.
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: Gzsume le 20 Mai 2013, 16:41:28
Juste une petite précision :

Code: (pawn) [Sélectionner]
if(!strcmp(cmdtext, "kick", true) == 0)
Dans cette portion,

Code: (pawn) [Sélectionner]
if(!strcmp(cmdtext, "kick", true))
va te renvoyer 0, or

Code: (pawn) [Sélectionner]
if(0 == 0)
renvoi 1, et le script ne fait plus ce que tu veux. Donc soit tu fais

Code: (pawn) [Sélectionner]
if(!strcmp(cmdtext, "kick", true))
ou

Code: (pawn) [Sélectionner]
if(strcmp(cmdtext, "kick", true) == 0)
mais pas les deux à la fois. ;)
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: S!m le 20 Mai 2013, 16:44:41
Salut,

pour le kick avec délai, tu serais mieux d'utiliser une fonction qui fait elle le timer, ça évitera que tu fasse une erreur dans le timer puisque ça ne marchera jamais si ce n'est pas correct.

stock KickEx(playerid, time)
{
SetTimerEx("Kick1", time*1000, false, "i", playerid);
return 1;
}

tu peut même ajouter un test si le joueur est connecté et la raison:

stock KickEx(playerid, time, reason[])
{
new return_val = 0;
if(IsPlayerConnected(playerid))
{
SendClientMessageToAll(0xFF0000FF, reason); // en rouge
SetTimerEx("Kick1", time*1000, false, "i", playerid);
return_val = 1;
}
return return_val;
}

Voilà, bonne chance

++Sim++
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: madinina972 le 20 Mai 2013, 19:08:09
J'ai suivis ta méthode Infu et lorsque je compile, ça me sort 21Erreurs..

Code: (pawn) [Sélectionner]
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(45) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(48) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(50) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(51) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(53) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(55) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(58) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(64) : error 021: symbol already defined: "GetPlayerPos"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(70) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(72) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(79) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(84) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(86) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(88) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(98) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(102) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(106) : error 021: symbol already defined: "SendClientMessage"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(107) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(109) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(111) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(117) : error 010: invalid function or declaration
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(156) : warning 203: symbol is never used: "a"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(156) : warning 203: symbol is never used: "string"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(156) : warning 203: symbol is never used: "x"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(156) : warning 203: symbol is never used: "y"
C:\Users\Clément\Desktop\samp serv\filterscripts\UBB.pwn(156) : warning 203: symbol is never used: "z"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


21 Errors.
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: Infu le 20 Mai 2013, 19:50:18
Tu n'as pas SSCANF, installes-le  et appel le en haut du script :smile:
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: madinina972 le 21 Mai 2013, 11:28:25
J'ai sscanf2 et je l'ai bien mis en haut du script..
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: Infu le 21 Mai 2013, 20:12:45
Et si on avait un bout de code???? Ca pourrait nous aider non? Avec de préférence l'erreur obtenu dans la ligne.


 :bye:
Titre: Re : zcmd en strcmp , Comment faire?
Posté par: madinina972 le 22 Mai 2013, 17:24:06
Voilà le code entier. a la base toutes les commandes étaient en zcmd et j'ai essayé de les mettre en strcmp mais bon..

http://pastebin.com/rrsxnU4T (http://pastebin.com/rrsxnU4T)