IL VOUS EST INTERDIT DE REPARTAGER CE TUTO SANS MA PERMISSION!
Bonjour tout le monde, voici mon premier tuto Officiel, en espйrant que vous aimerez.
Ce tutorial est destinй aux nouveaux qui souhaite apprendre le Pawn. Avant toute chose, je ne vous montre en aucun cas comment scripter, je ne fait que vous montrer comment apprendre.
N.B. Si vous кtes nouveau et n'avez jamais scripter, il est fortement dйconseillй de vous lancer dans un RP en utilisant une base, le code est trop complexe pour votre niveau et cela ne vous mиnera а rien. Suivez ce petit tuto et vous saurez comment bien apprendre
__________________________________________________ _______________________________________________
Armons-nous!
Premiиrement, nous allons tйlйcharger les fichiers nйcessaires pour votre apprentissage.
Rendez vous sur cette page
http://sa-mp.com/download.php et tout en bas de la page, se trouve les fichiers serveur, si vous кtes sous Windows prenez windows et si vous кtes sous Linux, prenez Linux.
Maintenant que les fichiers nйcessaires sont installй, nous allons maintenant ouvrir le fichier .rar. De prйfйrence, crйer un dossier а l'emplacement de votre choix et extrayez les fichiers dedans, dиs que cela est fait, nous pouvons maintenant fermer l'archive.
__________________________________________________ _______________________________________________
C'est quoi tout ces dossiers et fichiers?
Nous voila avec des dossiers et des fichiers. Pour l'instant cela ne vous dit absolument rien, mais je vait tout de suite vous expliquer le role et le fonctionnement de chaque dossier.
Les dossiers :
Filterscript - Il s'agit de script que l'on rajoute sans pour autant l'ajouter au gamemode (nous verrons la dйfinition plus tard). Il faudra placer les FS (FilterScripts) а l'intйrieur de ce dossier et ensuite l'inscrire dans server.cfg ( on verra sa plus tard aussi ).
Gamemodes - C'est le dossiers dans laquel les gamemodes se trouve, on trouve les GM (GameModes) par dйfaut de SAMP : grand larceny, LVDM, barron et rivershell. Il n'est pas nйcessaire de les garder mais ils peuvent vous servir, on sait jamais.
Include - Ce dossier n'est pas vraiment utile en gйnйral, mais si vous modifier le Gamemode de Grand Larceny ou utiliser les includes qui s'y trouve, il est quand mкme prйfйrable de le garder, au cas ou.
npcmode - C'est le dossier ou sont les scripts compilйs de vos bots, pour crйer un bot, il faut crйer un script (et oui ) et pour crйer ce script, il faut d'abord "record" (enregistrer pour les non anglophones) ce bot. (Merci a Shidony). Une partie sera rйservй pour les NPC.
pawno - Ce dossier йtrange est TRИS IMPORTANT AU DЙVELOPPEMENT DE SCRIPT. C'est le IDE (L'environnement de dйveloppement) une partie sera attardй a pawno.
plugins - Les plugins permettent une meilleure compatibilitй avec votre serveur comme par exemple, utiliser un streamer ou autre. Il est prйfйrable de mettre un streamer sur votre serveur.
scriptfiles - Ici seront stockй les fichiers utilisй dans votre Gamemode ou vos Filterscripts, Par exemple, si vous crйer un systиme d'enregistrement avec un include comme Dini ou YSI, les fichiers seront stockй ici avec l'emplacement que vous aurez choisie.
Les fichiers :
announce.exe - Il est utilisй par samp-server, si vous l'ouvrez, il fermera automatiquement
samp-license.txt - La license de SAMP, si vous voulez le lire, bonne lecture :P
samp-npc - Il est utilisй pour les NPC par samp-server.
samp-server - c'est LE fichier important, il est utilisй pour lancer votre serveur. Quand vous l'ouvrez, votre serveur sera on par contre si vous le fermez il sera off.
server.cfg - c'est le fichier de configuration pour votre serveur, je vous expliquerai son fonctionnement.
__________________________________________________ _______________________________________________
Je script comment?
Maintenant que vous avez les fichiers nйcessaires et savez l'utilitй de chaque dossier et fichier, on peut se lancer dans le vif du sujet.
Je vous invite maintenant a lire les tutorials de Gilux afin de bien comprendre le fonctionnement et les diffйrentes fonctions. Prenez le temps de bien lire et de comprendre ce tutorial, il vous sera trиs utile!
Tuto Gilux :
Partie 1:
http://www.gtaonline.fr/forums/index.php?topic=11593.0
Partie 2:
http://www.gtaonline.fr/forums/index.php?topic=11595.0
Partie 3:
http://www.gtaonline.fr/forums/index...c,11688.0.html
__________________________________________________ _______________________________________________
Server.cfg
Dиs que vous avez terminй de lire le tuto de gilux et кtes sur de bien comprendre, il est temps de vous expliquer le server.cfg
Pour l'ouvrir nous allons utiliser Bloc-Note
Voici ce que vous avez par dйfaut
Quote:
echo Executing Server Config...
lanmode 0
rcon_password changeme
maxplayers 500
port 7777
hostname SA-MP 0.3 Server
gamemode0 grandlarc 1
filterscripts gl_actions gl_property gl_realtime gl_mapicon ls_elevator test_cmds ls_mall attachments
announce 0
query 1
weburl www.sa-mp.com
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
maxnpc 10
logtimeformat [%H:%M:%S]
|
Passont aux explications!
Quote:
echo Executing Server Config...
|
~Ne toucher pas a sa, si vous comprenez le batch, vous comprendrez bien cette ligne mais ne la changer pas
active ou dйsactive le "mode lan" permettant une plus grande fluiditй en jeu mais conssomant beaucoup plus de bande passante. A n'activer donc que pour jouer avec quelques amis chez-vous (ou en tout cas tout reliйs а la mкme Box). (Merci a Pseudonyme)
Le mot de passe utilisй pour la rcon, il faut obligatoirement le changer sinon samp-server ne se lancera pas. Pour se connecter en RCON il vous faudra faire : /rcon login votremdp
Le nombre de joueurs maximum
Le port utilisй, changer le si vous voulez mais il est important de le mettre au bon port si vous avez un hйbergement SAMP.
Quote:
hostname SA-MP 0.3 Server
|
Le nom qui sera affichй dans le client SAMP
Le gamemode a chargй, pour lancй un gamemode, il faudra obligatoirement que le fichier .pwn soit compilй sans erreurs pour obtenir le fichier .amx
Je vous conseille quand mкme de laisser le 1 aprиs le nom du gamemode
Quote:
filterscripts gl_actions gl_property gl_realtime gl_mapicon ls_elevator
test_cmds ls_mall attachments
|
Les filterscripts а chargй, mкme principe que le gamemode sauf que nous n'avont pas besoin de redйmarrer le serveur pour le lancer. Pour le lancer quand le serveur est on, vous pouvez via la console avec loadfs [nomdufs] ou bien avec la rcon /rcon loadfs [nom]. Unloadfs et Reloadfs sont disponible
Indique si leserveur doit кtre prйsent dans la liste des serveurs sur le client sa:mp (1 pour activer, 0 pour dйsactiver). (merci a Pseudonyme).
Active ou dйsactive le "RCON". Si vous utilisez un systeme d'administration entiйremet scriptй avec inscription et rangs admin', il peut кtre judicieux de dйsactiver le RCON. (Merci a Pseudonyme)
L'URL de votre site, changer le, il sera affichй dans le client samp en bas a droite, prиs de la boite en bas de la boite avec les joueurs connectй.
Quote:
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
|
De prйfйrence, on laisse sa comme sa
Le nombre maximum de NPC, changez le si vous le voulez.
Le format du chatlog, on laisse comme sa de prйfйrence.
__________________________________________________ _______________________________________________
Et maintenant...?
J'ai reзu une question de Jean-Kevin Delaforge qui me demande ceci
"Maintenant que je sait sa, je peut crйer un RP?"
Absolument pas monsieur Delaforge, il vous faudra bien vous habituer aux fonctions, aux conditions, aux boucles et tout ce qu'il faut.
Maintenant que vous savez ceci que faut t'il faire allors? Plusieurs solutions s'offre а vous, je vous en propose 2 en commencant par celle que j'ai fait! Si vous voulez proposer votre option, n'hйsiter pas et je la rajouterai!
Option 1 :
-Apprendre les fonctions avec wiki.sa-mp.com et en essayant des trucs con.
-Faire des petits Filterscript simpliste mais utile
-Crйer un Teamdeathmatch sans base et sans C/c
-Se pratiquer et continuer de scripter
Option 2:
-Apprendre les fonctions avec wiki.sa-mp.com et en essayant des trucs con.
-Traduire un gamemode (PAS UN RP) et le modifier
-Faire des Filterscripts
-Pratique
__________________________________________________ _______________________________________________
Les NPC (Rйdigй par Shidony)
C'est trиs simple, il vous suffit de vous connecter а votre serveur puis de vous connecter en admin rcon avec la commande /rcon login motdepasse puis de vous mettre dans un vйhicule par exemple et de taper la commande correspondant а votre type de record. Je m'explique:
Il y a deux type de record:
Le record а pied
Le record en vйhicule
Si vous dйsirez donc record un bot qui marchera ou mкme un bot qui restera а sa position, vous devez utiliser la commande /ofrecord nom et pour record un bot qui sera dans un vйhicule, c'est la commande /vrecord nom puis une fois le record terminй, utilisez la commande /stoprecord.
Une fois le record terminй, rendez vous dans le dossier scriptfiles et vous verrez un fichier qui s'appelle nom.rec (nom йtant le nom que vous avez tapй dans la commande sur le serveur), prenez ce fichier et mettez le dans npcmodes/recordings.
Une fois ceci fait, ouvrez pawno, et crйez le fichier de votre bot. Allez je suis gentil, voici un script basique qu'il ne vous reste plus qu'а modifier
pawn Code:
#define RECORDING "mynpc" //Mettez ici le nom de votre record
#define TYPE_RECORD 1 //comme je vous le disais, le type du record (1 pour en vйhicule / 2 pour а pied)
#include <a_npc>
main(){}
public OnRecordingPlaybackEnd() StartRecordingPlayback(TYPE_RECORD, RECORDING);
#if RECORDING_TYPE == 1
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(TYPE_RECORD, RECORDING);
public OnNPCExitVehicle() StopRecordingPlayback();
#else
public OnNPCSpawn() StartRecordingPlayback(TYPE_RECORD, RECORDING);
#endif
A vous de l'adapter par la suite comme bon vous semble
Choisissez un nom et compilez.
Et donc pour finir, une fois ce script fait, vous n'avez plus qu'а connecter votre bot dans votre GM avec la fonction
pawn Code:
pawn Code:
ConnectNPC("nom de votre bot","nom du script du bot");
.
__________________________________________________ _______________________________________________
Comment avoir de l'aide?
"Oui mais si j'ai des questions? Comment je fait?"
Trиs bonne question! Voici une marche a suivre pour obtenir de l'aide si vous avez un problиme.
Premiиre йtape : Relisez bien le message d'erreur, parfois, la solution est a portйe de main. Sinon, passez a la deuxiиme йtape.
Deuxiиme йtape : Faite un recherche google sur le message d'erreur et essayez de trouver une solution. Sinon, passez a la troisiиme йtape.
Troisiиme йtape : Si aucune solution n'a йtй trouvй, poster un sujet dans la section francaise tout en restant poli, courtois, mature et en йcrivant bien. Le language SMS est fortement dйconseillй, faite un effort! Voici une forme recommandй.
Quote:
Titre du sujet : [Aide] Erreur a la compilation, [[MESSAGE D'ERREUR]]
|
Quote:
Bonjour,
En voulant compiler mon script, j'obtient cette erreur XXXXXXXXX
Je n'ai pas trouvй la solution sur google, voici le code,
~*En mettant dans la balise pawn, mettez les lignes qui sont buggй ou la commande ~
Merзi d'avance!
Au revoir.
|
Ce n'est qu'une proposition, mais en espйrant que vous ayez comprit le principe, nous sommes pas des robots donc si sa prend un peu de temps, ne paniquer pas et attender un peu.
__________________________________________________ _______________________________________________
Erreur et warnings (Traduction de XDamienX007, Original : Jochemd)
Warning and Error List
by Jochemd
Warnings
- Loose Indentation- Cause: Vous avez un code mal identй
pawn Code:
public OnPlayerLeaveCheckpoint(playerid)
{
SendClientMessage(playerid,-1,"Vous avez quittй le checkpoint.");
print("Quelqu'un a quittй le checkpoint");
return 1;
}
- Rйparer: Assurez vous que le code est bien identй
pawn Code:
public OnPlayerLeaveCheckpoint(playerid)
{
SendClientMessage(playerid,-1,"Vous avez quittй le checkpoint.");
print("Quelqu'un a quittй le checkpoint");
return 1;
}
- Unreachable code- Cause: Intervient si le code est inaccessible pour le compilateur (return mal placйs).
pawn Code:
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;
}
- Rйparer: Assurez vous que le code est bien accessible, il doit toujours retourner une valeur
pawn Code:
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;
}
- Nested comment- Cause: Un warning pas du tout important. Vous avez placй un commentaire а l'intйrieur d'un autre commentaire
pawn Code:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
/* if(vehicleid == 520)
{
if(playerid == 0)
{
/* if(ispassenger)
{
print("Ohai!");
return 1;
}
}
} */
return 1;
}
- Rйparer: Supprimer un commentaire
pawn Code:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
/* if(vehicleid == 520)
{
if(playerid == 0)
{
if(ispassenger)
{
print("Ohai!");
return 1;
}
}
} */
return 1;
}
- Number of arguments does not match definition- Cause: Vous avez mis trop (ou pas assez) "d'argument" dans la fonction
pawn Code:
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;
}
- 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 Code:
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;
}
- Symbol is never used 'symbol'- Cause: Vous avez crйe une variable mais vous ne l'avez pas utilisй.
pawn Code:
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;
}
- Rйparer: Retirez simplement la variable inutile.
pawn Code:
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;
}
- Tag mismatch- Cause: Vous avez assignй un mauvais "label" pour votre variable (bool, float, ...).
pawn Code:
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;
}
- Rйparer: Trouvez le bon label, pour le cas d'un textdraw: "Text", pour le cas d'un texte 3D: "Text3D", etc.
pawn Code:
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;
}
- Unknown parameter in substitution (suggested by iggy1)
- Cause: Vous avez utilisй un #define mais une valeur n'est pas reconnu
pawn Code:
#define PutPos(%1,%2,%3,%4); SetPlayerPos(%9,%2,%3,%4); // %9 n'est pas dйfini dans PutPos.
- Rйparer: Use the right parameters, and make sure they're defined before.
pawn Code:
#define PutPos(%1,%2,%3,%4); SetPlayerPos(%1,%2,%3,%4);
Il y a surement d'autre Warning, mais.. je ne les connais pas tous ^^ Contactez Jochemd pour зa
Erreurs
- Undefined symbol 'symbol'- Cause: Le contraire de "symbol never used". Vous avez appelй une variable sans la crйer.
pawn Code:
CMD:myname(playerid,params[])
{
#pragma unused params
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}
- Rйparer: Crйer la variable manquante.
pawn Code:
CMD:myname(playerid,params[])
{
#pragma unused params
new Playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}
- Symbol already defined 'symbol'- Cause: Vous avez crйe deux fois la mкme variable.
pawn Code:
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;
}
- Rйparer: Supprimer une des deux variables.
pawn Code:
CMD:myname(playerid,params[])
{
#pragma unused params
new Playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}
- Expression has no effect- 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 Code:
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;
}
- Rйparer: Supprimer ce symbole.
pawn Code:
CMD:parachute(playerid,params[])
{
#pragma unused params
GivePlayerWeapon(playerid,46,1);
SendClientMessage(playerid,-1,"Tu as un parachute");
return 1;
}
Empty statement- Cause: Vous avez mis deux fois le point virgule ";".
pawn Code:
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;
}
- Rйparer: Trouvez le double ; et supprimez le.
pawn Code:
CMD:parachute(playerid,params[])
{
#pragma unused params
GivePlayerWeapon(playerid,46,1);
SendClientMessage(playerid,-1,"You got a parachute");
return 1;
}
Function "function" is not implemented- 1иre cause: Vous avez appelй une fonction qui n'est pas ajoutй en stock.
- 2nde cause: Vous avez oubliй un }.
pawn Code:
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;
}
- 1: Ajoutez le stock de la fonction.
- 2: Trouvez l'accolade manquante et ajoutez lа.
pawn Code:
new str[128];
#define SendFormatMessage(%0,%1,%2,%3) format(str, sizeof(str),%2,%3) && SendClientMessage(%0, %1, str)
[Fatal Error]- Cannot read from file 'file'- 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
__________________________________________________ _______________________________________________
Quelques tutorial Utile
N'hйsitez pas a proposer des tutorials aussi bien anglais que franзais!
Crйer un systиme d'enregistrement en YSI (anglais) :
https://sampforum.blast.hk/showthread.php?tid=273088
Crйer un systиme d'enregistrement en YSI (francais) :
https://sampforum.blast.hk/showthread.php?tid=360919
Crйer un systиme MySQL (anglais) :
https://sampforum.blast.hk/showthread.php?tid=159785
Crйer des йquipes pour un TDM (anglais) :
https://sampforum.blast.hk/showthread.php?tid=107762
__________________________________________________ _______________________________________________
Question/Rйponse
Ici seront mit les diffйrentes question posй par les nouveaux afin d'aider les autres!
__________________________________________________ _______________________________________________
Conclusion
Voila, si vous avez des questions n'hйsitez pas a me contacter via ce topic ou par MP.. Il me fera plaisir de vous rйpondre et de mettre votre question dans la section Question/Rйponse de ce topic afin d'aider les autres.
Bonne fin de journйe/soirйe et bon apprentissage!
Vous avez aimй? Un petit merci et/ou un point de rйput est la bienvenue!
Voilа un tutoriel intйressant et enfin а l'image que devrait avoir la communautй sa:mp franзaise, tu remonte ton niveau
Quand il sera finit s'il est vraiment bien prйsentй tu aura peut кtre un petit point de rйput'
Merci Shidony, je pense faire un tuto vidйo aussi.
Avec ce que Jujuv a dit hier, j'ai comprit que j'йtait vraiment lourd avec les nouveayx. Au moins, je vait pouvoir dire : go voir mon tuto
Bah voilа tu vois quand tu veut ^^. Bon allez, je te laisse finir ton tuto tranquillement et fais nous зa soigneusement hein
Evite les textes en gras et avec une taille йnorme, c'est chiant.
Annouce: indique si ton serveur doit кtre prйsent dans la liste des serveurs sur le client sa:mp (1 pour activer, 0 pour dйsactiver).
Lanmode: active ou dйsactive le "mode lan" permettant une plus grande fluiditй en jeu mais conssomant beaucoup plus de bande passante. A n'activer donc que pour jouer avec quelques amis chez-vous (ou en tout cas tout reliйs а la mкme Box).
Querry: Active ou dйsactive le "RCON". Si vous utilisez un systeme d'administration entiйremet scriptй avec inscription et rangs admin', il peut кtre judicieux de dйsactiver le RCON.
tu mйrite bien ton petit point de rйput'. Continue ainsi ne redeviens pas le vilain raphy que tu йtais ^^.