Aller au contenu
San Andreas Multiplayer

Messages recommandés

Je débute en pawn et je ne sais pas comment on peut faire pour mettre un mod superman. 

 

 

 

Voici ce que j'ai fais pour le moment (c'est vide) : 

 

if (strcmp("/superman", cmdtext, true, 9) == 0)
	{
		// On fait les instructions pour que la commande superman fonctionne
		return 1;
	}

Ce que je sais déjà, c'est qu'il va falloir : 

 

forward vole // quand le playerid s'envole 

forward ausol // quand le joueur arrête de voler

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci d'avoir proposé ton aide C_far, donc je me suis lancé sur cette commande dont voici le code (j'ai fais quelques recherches xD ) : 

(ligne 158) if(strcmp("/sauter", cmdtext, true, 5) == 0)
(ligne 159)	{
(ligne 160)		new Float : velo_x, 
(ligne 161)        new Float : velo_y, 
(ligne 162)        new Float : velo_z, 
(ligne 163)		GetPlayerVelocity(playerid, velo_x, velo_y, velo_z);
(ligne 164)		SetPlayerVelocity(playerid, velo_x +  0.5, velo_y -  0.7, velo_z +  0.5);
(ligne 165)		return 1;
(ligne 166)	}

 

La console m'indique plusieurs erreurs :

 

(ligne 160) error 001: expected token: ";", but found ":"
(ligne 160) error 029: invalid expression, assumed zero
(ligne 160-161) error 029: invalid expression, assumed zero
(ligne 160-161) fatal error 107: too many error messages on one line

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Les instructions se finissent toujours par un point-virgule et on ne décolle pas les ':' du tag le précédant.

Partager ce message


Lien à poster
Partager sur d’autres sites

(ligne 162) if(strcmp("/sauter", cmdtext, true, 5) == 0)
(ligne 163)    {
(ligne 164)        new Float: velo_x;  // C'est bon j'ai modifié le point virgule pour les variables et j'ai collé les ':'
(ligne 165)        new Float: velo_y; 
(ligne 166)        new Float: velo_z; 
(ligne 167)        GetPlayerVelocity(playerid, velo_x, velo_y, velo_z);
(ligne 168)        SetPlayerVelocity(playerid, velo_x +  0.5, velo_y -  0.7, velo_z +  0.5);
(ligne 169)        return 1;
(ligne 170)    }

 

 

Voici les erreurs que ça me rajoutent : 

(164)error 001: expected token: "-identifier-", but found ";"
(165)error 001: expected token: "-identifier-", but found ";"
(166)error 001: expected token: "-identifier-", but found ";"
(167)error 029: invalid expression, assumed zero
(167)error 035: argument type mismatch (argument 3)
(168)error 029: invalid expression, assumed zero
(168)warning 215: expression has no effect
(168)warning 215: expression has no effect
(168) : error 029: invalid expression, assumed zero
(168) : warning 215: expression has no effect
(168) : error 001: expected token: ";", but found ")"
(168) : fatal error 107: too many error messages on one line

 

Modifié par Joo

Partager ce message


Lien à poster
Partager sur d’autres sites

Ton code est correct et compilera, sauf que tu as un petit soucis avec le quatrième argument passé à strcmp

Partager ce message


Lien à poster
Partager sur d’autres sites

Eh bien je dis si c'est équivalent à 0 alors la commande s'éxécute parceque enfaite je vois pas où est le soucis avec le quatrième argument. 

Modifié par Joo

Partager ce message


Lien à poster
Partager sur d’autres sites

Je parle du quatrième argument de strcmp : 

strcmp("/sauter", cmdtext, true, 5)

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah oui comme dans la cell il y a /sauter contenant 7 caractères alors il faut que je remplaçe par 7.

 

Sauf que j'ai encore les erreurs. 

Modifié par Joo

Partager ce message


Lien à poster
Partager sur d’autres sites

As-tu enregistré ton code avant de le compiler ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce code compile parfaitement : 

#include <a_samp>

main(){

}

public OnPlayerCommandText(playerid, cmdtext[]){
	if(strcmp("/sauter", cmdtext, true, 7) == 0) {
		new Float: velo_x;  // C'est bon j'ai modifié le point virgule pour les variables et j'ai collé les ':'
		new Float: velo_y; 
		new Float: velo_z; 
		GetPlayerVelocity(playerid, velo_x, velo_y, velo_z);
		SetPlayerVelocity(playerid, velo_x +  0.5, velo_y -  0.7, velo_z +  0.5);
		
		return 1;
	}

	return 0;
}

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui effectivement, j'ai trouvé mon erreur.

 

#define velo_x
#define velo_y
#define velo_z

C'est vrai si je fais des defines alors que j'ai déjà des variables là il y a un soucis xD. 

Merci pour ton aide. 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce ne sont pas des variables mais des constantes pré-processeurs

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

×