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
-
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 : 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.
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
-
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:
-
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..
-
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
-
en meme temps nous ne connaissons pas forcement ton code donc nous ne savons pas a quoi coorespondent les erreures
-
Salut,
si mes souvenirs sont bons, tu peut mettre zcmd dans un de tes scripts et laisser les autres normal....
++Sim++
-
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:
-
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++
-
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 ?
-
Bah s'il n'y en a qu'une c'est simple....
// 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é:
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.
-
Juste une petite précision :
if(!strcmp(cmdtext, "kick", true) == 0)
Dans cette portion,
if(!strcmp(cmdtext, "kick", true))
va te renvoyer 0, or
if(0 == 0)
renvoi 1, et le script ne fait plus ce que tu veux. Donc soit tu fais
if(!strcmp(cmdtext, "kick", true))
ou
if(strcmp(cmdtext, "kick", true) == 0)
mais pas les deux à la fois. ;)
-
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++
-
J'ai suivis ta méthode Infu et lorsque je compile, ça me sort 21Erreurs..
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.
-
Tu n'as pas SSCANF, installes-le et appel le en haut du script :smile:
-
J'ai sscanf2 et je l'ai bien mis en haut du script..
-
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:
-
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)