Fostro

Raccourcit Commandes

8 messages dans ce sujet

Bonjour à tous,

 

Donc voila je souhaiterais remplacer les commandes d'un GM par des commandes beaucoup plus simples et courtes.

 

Exemple:

 

else if(strcmp(tmp,"plaque",true) == 0)
				{
					new length = strlen(cmdtext);
					while ((idx < length) && (cmdtext[idx] <= ' '))
						{idx++;}
						
					new offset = idx;
					
					while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
						{result[idx - offset] = cmdtext[idx];idx++;}
						
					result[idx - offset] = EOS;
					if(!strlen(result))
						{msg_Client(playerid, COLOR_POLICE, "{A98500}» Usage «{FFFFB2} /p(olice) plaque <nom de la plaque>");return 1;}
						
					var=-1;
					for(new car=1;car<=totalVehicles;car++)
						{var=car; break;}
					if(var == -1 )
					    {msg_Client(playerid,COLOR_POLICE,"{007AFF}» Police «{FFFFFF} Plaque inconnue ...");}
					    
                    msg_Client(playerid, COLOR_CASIER,"______-=Base de données de la Police=-______");
					format(string,sizeof(string),"Plaque: %s",(result));
					msg_Client(playerid,COLOR_WHITE,string);
					format(string,sizeof(string),"Propriétaire: %s",vehicle[var][cOwner]);
					msg_Client(playerid,COLOR_WHITE,string);
					msg_Client(playerid, COLOR_CASIER,"____________________________________________");
					return 1;
				}

Donc comme nous pouvons le voir il faut faire /police plaque <nom de la plaque>. Je voudrais le remplacer par /plaque tout simple, donc j'utilise ZCMD et sscanf2 pour faire les modifications en oubliant pas de rajouter les includes. Donc voici le nouveau code:

 

CMD:plaque(playerid, params[])
				{
					new length = strlen(params);
					while ((idx < length) && (params[idx] <= ' '))
						{idx++;}
						
					new offset = idx;
					
					while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
						{result[idx - offset] = params[idx];idx++;}
						
					result[idx - offset] = EOS;
					if(!strlen(result))
						{msg_Client(playerid, COLOR_POLICE, "{A98500}» Usage «{FFFFB2} /p(olice) plaque <nom de la plaque>");return 1;}
						
					var=-1;
					for(new car=1;car<=totalVehicles;car++)
						{var=car; break;}
					if(var == -1 )
					    {msg_Client(playerid,COLOR_POLICE,"{007AFF}» Police «{FFFFFF} Plaque inconnue ...");}
					    
                    msg_Client(playerid, COLOR_CASIER,"______-=Base de données de la Police=-______");
					format(string,sizeof(string),"Plaque: %s",(result));
					msg_Client(playerid,COLOR_WHITE,string);
					format(string,sizeof(string),"Propriétaire: %s",vehicle[var][cOwner]);
					msg_Client(playerid,COLOR_WHITE,string);
					msg_Client(playerid, COLOR_CASIER,"____________________________________________");
					return 1;
				}

J'ai donc remplacé ceci:

 

else if(strcmp(tmp,"plaque",true) == 0)
CMD:plaque(playerid, params[])

 Et j'ai changé les cmdtext en params.

 

Mais il me ressort toujours des erreurs:

 

D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(21878) : error 029: invalid expression, assumed zero
D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(21878) : error 017: undefined symbol "cmd_plaque"
D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(21878) : error 029: invalid expression, assumed zero
D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(21878) : fatal error 107: too many error messages on one line

Merci à vous et bonne soirée :) 

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as mis tes "CMD:" dans le OnPlayCommandText je suppose ?

Sinon, utilise sscanf2 au lieu de te casser la tête avec l'implémentation de strtok pour chacune de tes commandes.

Modifié par C_far

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 9 heures, C_far a dit :

Tu as mis tes "CMD:" dans le OnPlayCommandText je suppose ?

Sinon, utilise sscanf2 au lieu de te casser la tête avec l'implémentation de strtok pour chacune de tes commandes.

 

Salut C-Far et merci pour la réponse rapide.

 

J'ai placé mes "CMD" en fin de script hors de porté du rappel. C'est possible que cela vienne d'une mauvaise version de ZCMD?

Je viens d'installer sscanf2 en rajoutant bien l'include, je remplace les "strtok" présent par "!Strcmp" ?

 

Merci à toi et bon après midi.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Fostro y a rien de compliqué :

 

#include <a_samp>
#include <zcmd>
#include <sscanf2>

main()
{

}

public OnGameModeInit()
{
	return true;
}

CMD:example(playerid, params[])
{
	new 
		value1,
		value2;

	if(sscanf(params, "dd", value1, value2)) return SendClientMessage(playerid, -1, "/example <Value1> <Value2>");

	new 
		str[16];

	format(str, sizeof(str), "%d:%d|%d", playerid, value1, value2);
	SendClientMessage(playerid, -1, str);

	return true;
}

 

Modifié par C_far

Partager ce message


Lien à poster
Partager sur d’autres sites

Donc j'ai essayé de placer ton morceau de code dans le GM et j'ai compilé pour voir si c'est bien placé, c'est niquel il compile.

 

Du coup maintenant je dois introduire ceci dans le code que tu ma donné en convertissant au bon format?

 

{
					new length = strlen(cmdtext);
					while ((idx < length) && (cmdtext[idx] <= ' '))
						{idx++;}
						
					new offset = idx;
					
					while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
						{result[idx - offset] = cmdtext[idx];idx++;}
						
					result[idx - offset] = EOS;
					if(!strlen(result))
						{msg_Client(playerid, COLOR_POLICE, "{A98500}» Usage «{FFFFB2} /p(olice) plaque <nom de la plaque>");return 1;}
						
					var=-1;
					for(new car=1;car<=totalVehicles;car++)
						{var=car; break;}
					if(var == -1 )
					    {msg_Client(playerid,COLOR_POLICE,"{007AFF}» Police «{FFFFFF} Plaque inconnue ...");}
					    
                    msg_Client(playerid, COLOR_CASIER,"______-=Base de données de la Police=-______");
					format(string,sizeof(string),"Plaque: %s",(result));
					msg_Client(playerid,COLOR_WHITE,string);
					format(string,sizeof(string),"Propriétaire: %s",vehicle[var][cOwner]);
					msg_Client(playerid,COLOR_WHITE,string);
					msg_Client(playerid, COLOR_CASIER,"____________________________________________");
					return 1;
				}

 

Donc voici la commande que j'ai changé en suivant tes instructions:

 

CMD:plaque(playerid, params[])
{
                    new str[16];
					new length = strlen(params);
					while ((idx < length) && (cmd[idx] <= ' '))
						{idx++;}

					new offset = idx;

					while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
						{result[idx - offset] = cmd[idx];idx++;}

					result[idx - offset] = EOS;
					if(!strlen(result))
						{msg_Client(playerid, COLOR_POLICE, "{A98500}» Usage «{FFFFB2} /p(olice) plaque <nom de la plaque>");return 1;}

					var=-1;
					for(new car=1;car<=totalVehicles;car++)
						{var=car; break;}
					if(var == -1 )
					    {msg_Client(playerid,COLOR_POLICE,"{007AFF}» Police «{FFFFFF} Plaque inconnue ...");}

                    msg_Client(playerid, COLOR_CASIER,"______-=Base de données de la Police=-______");
					format(string,sizeof(string),"Plaque: %s",(result));
					msg_Client(playerid,COLOR_WHITE,string);
					format(string,sizeof(string),"Propriétaire: %s",vehicle[var][cOwner]);
					msg_Client(playerid,COLOR_WHITE,string);
					msg_Client(playerid, COLOR_CASIER,"____________________________________________");
					return 1;
				}

Il me ressort ses erreurs:

 

Citation

D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(12570) : error 017: undefined symbol "idx"
D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(12570) : error 029: invalid expression, assumed zero
D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(12570) : error 029: invalid expression, assumed zero
D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(12570) : fatal error 107: too many error messages on one line
 

 

Sur cette ligne:

 

	while ((idx < length) && (cmd[idx] <= ' '))

 

Modifié par Fostro

Partager ce message


Lien à poster
Partager sur d’autres sites
new idx;

 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 51 minutes, vitespirite a dit :

new idx;

 

 

Effectivement merci à toi :) Par contre il reste toujours ses erreurs persistantes.

 

Citation

D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(12571) : error 017: undefined symbol "cmd"
D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(12571) : error 029: invalid expression, assumed zero
D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(12571) : error 029: invalid expression, assumed zero
D:\Users\Fostro\Desktop\Projet\gamemodes\Save\LVRP.pwn(12571) : fatal error 107: too many error messages on one line

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ta ligne 12571 c'est quoi ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant