Warnings/Errors list
#1

Salut а tous, je vous propose un tutoriel fait par Jochemd: [URL="https://sampforum.blast.hk/showthread.php?tid=274028"]l'original[/URL]
Ceci est une traduction en franзais.

[SIZE="7"][CENTER][COLOR="Grey"]Warning and Error List[/COLOR][/CENTER][/SIZE]
[CENTER][SIZE="6"]by Jochemd[/SIZE]


[SIZE="5"][COLOR="SeaGreen"]Warnings[/COLOR][/SIZE][/CENTER]


[SIZE="4"][COLOR="Red"]- Loose Indentation[/COLOR][/SIZE]
  • Cause: Vous avez un code mal identй
[pawn]public OnPlayerLeaveCheckpoint(playerid)
{
SendClientMessage(playerid,-1,"Vous avez quittй le checkpoint.");
print("Quelqu'un a quittй le checkpoint");
return 1;
}[/pawn]
  • Rйparer: Assurez vous que le code est bien identй
[pawn]public OnPlayerLeaveCheckpoint(playerid)
{
SendClientMessage(playerid,-1,"Vous avez quittй le checkpoint.");
print("Quelqu'un a quittй le checkpoint");
return 1;
}[/pawn]

[SIZE="4"][COLOR="Red"]- Unreachable code[/COLOR][/SIZE]
  • Cause: Intervient si le code est inaccessible pour le compilateur (return mal placйs).
[pawn]public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(vehicleid == 520) // Juste un ID alйatoire
{
SendClientMessage(playerid,-1,"Vous кtes entrй dans le vйhicule contenant l'ID 520.");
return 1;
}
else return 0;
return 1;
}[/pawn]
  • Rйparer: Assurez vous que le code est bien accessible, il doit toujours retourner une valeur
[pawn]public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(vehicleid == 520) Juste un ID alйatoire
{
SendClientMessage(playerid,-1,"Vous кtes entrй dans le vйhicule contenant l'ID 520.");
return 1;
}
return 1;
}[/pawn]
[SIZE="4"][COLOR="RED"]- Nested comment[/COLOR][/SIZE]
  • Cause: Un warning pas du tout important. Vous avez placй un commentaire а l'intйrieur d'un autre commentaire
[pawn]public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
/* if(vehicleid == 520)
{
if(playerid == 0)
{
/* if(ispassenger)
{
print("Ohai!");
return 1;
}
}
} */
return 1;
}[/pawn]
  • Rйparer: Supprimer un commentaire
[pawn]public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
/* if(vehicleid == 520)
{
if(playerid == 0)
{
if(ispassenger)
{
print("Ohai!");
return 1;
}
}
} */
return 1;
}[/pawn]

[SIZE="4"][COLOR="RED"]- Number of arguments does not match definition[/COLOR][/SIZE]
  • Cause: Vous avez mis trop (ou pas assez) "d'argument" dans la fonction
[pawn]CMD:centermap(playerid,params[])
{
#pragma unused params
SetPlayerPos(playerid,0.0,0.0,3.0,90.0); // Vous avez mis l'angle accidentellement
SendClientMessage(playerid,-1,"Vous avez bien йtй envoyй dans le centre de Blue Berry.");
return 1;
}[/pawn]
  • Rйparer: Regardez le nombre de paramиtres que prend la fonction utilisй. Le wiki SAMPdit que la fonction SetPlayerPos contient seulement 4 paramиtres: playerid, X, Y, Z. L'angle ne doit pas se trouver dans la fonction
[pawn]CMD:centermap(playerid,params[])
{
#pragma unused params
SetPlayerPos(playerid,0.0,0.0,3.0);
SetPlayerFacingAngle(playerid,90.0); // L'angle se met dans cette fonction
SendClientMessage(playerid,-1,"Vous avez bien йtй envoyй dans le centre de Blue Berry.");
return 1;
}[/pawn]

[SIZE="4"][COLOR="RED"]- Symbol is never used 'symbol'[/COLOR][/SIZE]
  • Cause: Vous avez crйe une variable mais vous ne l'avez pas utilisй.
[pawn]CMD:skydive(playerid,params[])
{
#pragma unused params
new Float:Pos[3],string[128]; // string ne sera pas utilisй dans la commande, il provoque donc le warning
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
SetPlayerPos(playerid,Pos[0],Pos[1],Pos[2] + 200);
SendClientMessage(playerid,-1,"Vous avez йtй envoyй haut dans le ciel");
GivePlayerWeapon(playerid,46,1);
return 1;
}[/pawn]
  • Rйparer: Retirez simplement la variable inutile.
[pawn]CMD:skydive(playerid,params[])
{
#pragma unused params
new Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
SetPlayerPos(playerid,Pos[0],Pos[1],Pos[2] + 200);
SendClientMessage(playerid,-1,"You have been sent high in the sky.");
GivePlayerWeapon(playerid,46,1);
return 1;
}[/pawn]

[SIZE="4"][COLOR="RED"]- Tag mismatch[/COLOR][/SIZE]
  • Cause: Vous avez assignй un mauvais "label" pour votre variable (bool, float, ...).
[pawn]CMD:mypos(playerid,params[])
{
#pragma unused params
new Pos[3]; // La variable Pos n'a pas de "label" Float (une position est une valeur dйcimal et dois кtre avec Float!)
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
printf("Votre position: X: %f || Y: %f || Z: %f",Pos[0],Pos[1],Pos[2]);
return 1;
}[/pawn]
  • Rйparer: Trouvez le bon label, pour le cas d'un textdraw: "Text", pour le cas d'un texte 3D: "Text3D", etc.
[pawn]CMD:mypos(playerid,params[])
{
#pragma unused params
new Float:Pos[3]; // La variable а le label Float, le warning disparait.
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
printf("Your position: X: %f || Y: %f || Z: %f",Pos[0],Pos[1],Pos[2]);
return 1;
}[/pawn]

[SIZE="4"][COLOR="RED"]- Unknown parameter in substitution[/COLOR][/SIZE] (suggested by iggy1)
  • Cause: Vous avez utilisй un #define mais une valeur n'est pas reconnu
[pawn]#define PutPos(%1,%2,%3,%4); SetPlayerPos(%9,%2,%3,%4); // %9 n'est pas dйfini dans PutPos.[/pawn]
  • Rйparer: Utilisez les bonnes valeurs, assurez vous qu'ils sont bien identique а gauche comme а droite.
[pawn]#define PutPos(%1,%2,%3,%4); SetPlayerPos(%1,%2,%3,%4);[/pawn]

Il y a surement d'autre Warning, mais.. je ne les connais pas tous ^^ Contactez Jochemd pour зa :)


[CENTER][SIZE="5"][COLOR="Red"]Erreurs[/COLOR][/SIZE][/CENTER]
[SIZE="4"][COLOR="RED"]- Undefined symbol 'symbol'[/COLOR][/SIZE]
  • Cause: Le contraire de "symbol never used". Vous avez appelй une variable sans la crйer.
[pawn]CMD:myname(playerid,params[])
{
#pragma unused params
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}[/pawn]
  • Rйparer: Crйer la variable manquante.
[pawn]CMD:myname(playerid,params[])
{
#pragma unused params
new Playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}[/pawn]
[SIZE="4"][COLOR="RED"]- Expected token: ")", but found "["[/COLOR][/SIZE]
  • Dйfinition: Il s'attend а trouver ")", mais il trouve le signe "["
  • Cause: Vous cherchez un tableau qui n'existe pas
[pawn]if(PlayerInfos[playerid][pNum] != 0) { //PlayerInfos n'a jamais йtй crйe avant
SendClientMessage(playerid, COLOR_RED, "Vous avez dйjа un tйlйphone");
return 1;
}[/pawn]
  • Rйparer: Crйez le tableau correspondant (ou modifiez le nom du tableau utilisй si faute de frappe)
[pawn]enum { pass, weapon, pNum }
new PlayerInfos[MAX_PLAYERS][pinfo]
if(PlayerInfos[playerid][pNum] != 0) { //PlayerInfos n'a jamais йtй crйe avant
SendClientMessage(playerid, COLOR_RED, "Vous avez dйjа un tйlйphone");
return 1;
}[/pawn]

[SIZE="4"][COLOR="RED"]- Symbol already defined 'symbol'[/COLOR][/SIZE]
  • Cause: Vous avez crйe deux fois la mкme variable.
[pawn]CMD:myname(playerid,params[])
{
new Playername[MAX_PLAYER_NAME];
#pragma unused params
new Playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}[/pawn]
  • Rйparer: Supprimer une des deux variables.
[pawn]CMD:myname(playerid,params[])
{
#pragma unused params
new Playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}[/pawn]

[SIZE="4"][COLOR="RED"]- Expression has no effect[/COLOR][/SIZE]
  • Cause: Je ne suis pas sur pour celui lа. Je pense que c'est quand un symbole n'est pas bien placй ou qu'il n'a rien а faire lа.
[pawn]CMD:parachute(playerid,params[])
{
#pragma unused params
GivePlayerWeapon(playerid,46,1);k // Le k gиne
SendClientMessage(playerid,-1,"Tu as un parachute");
return 1;
}[/pawn]
  • Rйparer: Supprimer ce symbole.
[pawn]CMD:parachute(playerid,params[])
{
#pragma unused params
GivePlayerWeapon(playerid,46,1);
SendClientMessage(playerid,-1,"Tu as un parachute");
return 1;
}[/pawn]

[SIZE="4"][COLOR="RED"]Empty statement[/COLOR][/SIZE]
  • Cause: Vous avez mis deux fois le point virgule ";".
[pawn]CMD:parachute(playerid,params[])
{
#pragma unused params
GivePlayerWeapon(playerid,46,1);; // Cette ligne donne l'erreur
SendClientMessage(playerid,-1,"You got a parachute");
return 1;
}[/pawn]
  • Rйparer: Trouvez le double ; et supprimez le.
[pawn]CMD:parachute(playerid,params[])
{
#pragma unused params
GivePlayerWeapon(playerid,46,1);
SendClientMessage(playerid,-1,"You got a parachute");
return 1;
}[/pawn]

[SIZE="4"][COLOR="RED"]Function "function" is not implemented[/COLOR][/SIZE]
  • 1иre cause: Vous avez appelй une fonction qui n'est pas ajoutй en stock.
  • 2nde cause: Vous avez oubliй un }.
[pawn]CMD:stats(playerid,params[])
{
SendFormatMessage(playerid,-1,"Cash: %d ... Score: %d",GetPlayerMoney(playerid),GetPlayerScore(playerid)); // La fonction SendFormatMessage n'est pas compris par le compilateur
return 1;
}[/pawn]
  • 1: Ajoutez le stock de la fonction.
  • 2: Trouvez l'accolade manquante et ajoutez lа.
[pawn]new str[128];
#define SendFormatMessage(%0,%1,%2,%3) format(str, sizeof(str),%2,%3) && SendClientMessage(%0, %1, str)
[/pawn]

[SIZE="4"][COLOR="RED"][Fatal Error]- Cannot read from file 'file'[/COLOR][/SIZE]
  • Cause: Vous avez ajoutй un include au gamemode mais il n'est pas dans le dossier '/pawno/includes'.
  • Rйparer: Placez l'include dans le dossier '/pawno/includes/' de votre serveur, si vous avez deux pawno ouvrez d'abord pawno.exe et faites ouvrir > votre gamemode.
Jochem


Si j'ai fait une erreur de traduction ou un oubli dоtes le moi ;)
Je n'ai pas utilisй de traducteur en ligne, et j'ai trouvй sympa de faire un tuto en partie franзaise, зa йvitera peut кtre les questions pour un warning :)

RAJOUT:

[SIZE="4"][COLOR="RED"]Run time error 20[/COLOR][/SIZE]
Vous avez cette erreur dans la console: Run time error 20: Invalid index parameter (bad entry point)
  • Cause: Il vous manque une "entrйe", un point de repиre pour le serveur.
  • Rйparer: Placez le code si dessous au dessus de OnGameModeInit() dans votre Gamemode:
[pawn]main()
{

}
[/pawn]
Reply
#2

Dйsolй du up, mais j'aime vraiment ce tutoriels franchement bien jouй ;').
Reply
#3

Ce tutoriel explique correctement les erreurs et warnings du Pawn !
GG а son crйateur :)
Reply
#4

Merci ;)
Remerciez plutфt Jochem, il a tout crйe moi j'ai juste re-traduis :D
Reply
#5

et pour invalid function or declaration
Reply
#6

Je vais probablement le mettre ;)

EDIT: En fait non, j'en sais rien :)
Demandez au crйateur! Et n'hйsitez pas а me dire si il a ajouter des Warnings/Errors dans son topic original.
Reply
#7

Je tiens a ajoutй зa a ton thread, si jamais lorsque vous lancez votre script vous obtenez cette йrreur sachez qu'elle proviens de votre script, car vous avez oubliez/supprimez зa :

[CENTER][CENTER][Image: 233304suckme.PNG][/CENTER][/CENTER]

[PAWN]
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
[/PAWN]
Reply
#8

bon tuto,
si seulement un admin passe par ici pour modifier le sujet, l'erreur Lose indentation peut facilement кtre rйglй autrement sans vйrifier a chaque fois son code, il s'agit juste de mettre en haut du GM cette ligne :

PHP Code:
#pragma tabsize 0 

et sa ne prend plus en compte l'organisation des lignes...etc.
Reply
#9

Pas forcйment dйgueulasse Shidony.

Les warnings font parfois peur aux dйbutants, mais ce warning lа faut avouer qu'il est useless car il s'affiche si t'as appuyй une fois de trop ou une fois de moins sur tab (surtout sur pawno.exe).

Depuis que je suis sur Sublime Text, j'ai plus ce problиme perso vu que le tabsize est automatique et trиs fluide.

Sinon, tu devrais rajouter pour ceux qui ont

Code:
Error : Function "nomDeMaFonction" is not implemented.

Ca vient soit du fait que la fonction est pas crййe, soit du fait qu'il manque un } quelque part.

Et y'a le problиme inverse aussi : si vous mettez un } en trop (plus rare), зa fait planter le compilateur.
Reply
#10

Merci pour le tuto il ma beaucoup aidй +1 pour toi ;)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)