GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: doun le 20 Juin 2006, 14:17:55
-
Salut j'ai un probleme avec la commande "OnPlayerCommandText"
Quand je met plusieur commande, une fois dans le jeu quand on tape nimporte quel commande c'est toujour la 1ère qui s'execute pourtant j'ai pris exemple sur le "landgrab" j'ai même vérifié sur des autre mod.
Qqn pourait me dire je il n'y a pas des propriété a definire ou si j'ai oublié quelque chose?
Mon code:
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
if(strcmp(cmd, "/healme", true) == 0) {
SetPlayerHealth(playerid, 100);
SendClientMessage(playerid, COLOR_BLUE, "Ta vie a été restoré");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Your heal as been regenerated");
return 1;
}
if(strcmp(cmd, "/test", true) == 0) {
SendClientMessage(playerid, COLOR_GREEN, "test");
return 1;
}
return 0;
}
-
il manque pas un strtok ?
-
Ba quand je met strtok jarrive pas a compiler il me dit error je croit que c parcequ'il faut que je le definit.
-
Ajouter des commandes
En premier lieu, ajouter ce code dans le bas du script :
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index <length> ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
Ensuite, en dessous de ce code, ajoutez (Les commandes de ce script sont des exemples, n'hésitez pas à les modifier à votre guise) :
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/aide", true) == 0) {
SendClientMessage(playerid, COLOR_LIGHTBLUE, "FsK Assault, codé par Laloutre (www.gta-online.fr).");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Taper: /but : pour voir le but de ce mode de jeu.");
return 1;
}
if(strcmp(cmd, "/but", true) == 0) {
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour les terroristes : Attaquer la base des Anti-Terroristes;");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour les Anti-Terroristes : Defendre la base.");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Ce mode de jeu est prévu pour les matchs.");
return 1;
}
if(strcmp(cmd, "/go", true) == 0) {
GameTextForAll("GO GO GO !!!", 1000, 5);
return 1;
}
if(strcmp(cmd, "/glhf", true) == 0) {
GameTextForAll("~y~Good Luck and Have Fun", 1000, 5);
return 1;
}
// PROCESS OTHER COMMANDS
return 0;
}
-
J'ai mis ce que tu ma donner, avec tes commands mais quand j'ecri /help ya bien l'aide mais après quand j'ecris /but il me ressort l'aide.
J'ai même ecris nimporte quoi du style: /sdfsdg et ca ma sortit l'aide
-
Je répete ...
EN PREMIER LIEU, RAJOUTEZ CECI
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index <length> ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
-
bon, le copier coller, c'est bien mais ca marche pas à tous les coups...
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/healme", true)==0){
SendClientMessage(playerid, COLOR_BLUE, "Ta vie a été restoré");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Your heal as been regenerated");
SetPlayerHealth(playerid, 100);
return 1;
}
if(strcmp(cmdtext, "/test", true) == 0) {
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Test");
return 1;
}
Essais ca, je l'ait tirer d'un de mes modes ^^
Sinon c'est possible que ton setplayerhealth fasse foirer.
-
Oui lalu c'est ce que j'ai fait
Sinon spyker je ne voit pas ce que tu as changer, tu as enlever "new cmd[256];" mais sans ca c impossible de compiler.
-
Waw ca marche mais quand je compile il me dit: warning 203: symbol is never used: "strtok"
J'arrive a compiler mais ca risque pas de planter defois?
Edit: voila j'arrive a compiler sans le warnig j'ai enlever:
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index <length> ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
Mais dit moi Spykerc8 ta juste enlever "new cmd [256];" ????
Parce que avant sans ca j'arrive pas a compiler et la j'arrive.
RE-edit: ha non c'est bon j'ai vu ce que tu as changer tu as mit cmdtext au lieu de cmd. GOOD-GAME :D
Ps: je fait des edit a chaque fois au lieu de refere des post (ca polue moin) mais si ca vous gêne dites le moi.
-
à la base sa-mp marche avec "cmdtext" y a pas de raison de changer pour ce type de commandes...
enfin, tant que ca marche et qu'on a pu aider ;)