GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Eloctro le 04 Janvier 2009, 12:20:37
-
TUTO Debut Script :
Au Menu :
1.Utiliser Pawno
2.Comprendre des fonctions et les lignes
3.Les erreurs et Warning et l'indentation
Partie 1:
Nous allons ouvrir Pawno et cliquer dans le logiciel sur l'icône (http://i50.servimg.com/u/f50/11/90/96/44/1feuil10.jpg)Nous allons voir plein de texte que vous ne comprenez rien mais nous les verrons dans la parti 2 nous allons compilé avec le bouton (http://i50.servimg.com/u/f50/11/90/96/44/compil10.jpg)il va vous demandez de l'enregistrer a un endroit précis enregistrer le dans GameMode si la parti principale ou FilterScript si ses juste un ajout au serveur ensuite mettez un Nom et cliquez sur Enregistrer la compilation démarre sa peut prendre du temps et pas en prendre sa dépend du nombre de ligne et de fonction voila vous allez voire la ligne suivante :
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
La compilation est terminé vous allez trouver dans le chemin enregistré un ficher PWM et AMX vous pouvez fermer Pawno et le redémarrer nous allons revenir a une page blanche mais cette foi on va ouvrir notre projet avec l'icône (http://i50.servimg.com/u/f50/11/90/96/44/ouvrir10.jpg) prenez le projet que vous avez enregistrer vous voyez alors le projet de tous ta l'heur !
Mes vous vous posez une question comment se retrouver dans 50 000 lignes ?
Ces très simple nous allons recherché une fonction celle ci : OnPlayerText avec l'icône (http://i50.servimg.com/u/f50/11/90/96/44/recher10.jpg) vous allez avoirs une fenêtre dans la fenêtre rajouter la fonction que vous chercher exemple : OnPlayerText
Cliquez sur OK et vous allez avoir la fonction surbrillér ses pas beau le progrès !
Bonne nouvelle vous savez contrôler Pawno !
Partie 2 :
Vous pouvez parler dans votre script sans que le serveur balance ^^
//Text que vous voulez dire
Sa sert a rien enfin oui a expliquer pour vous et vos repère !
La-Ligne//Ta déscription
aussi /*Texte*/ comme les guillemet[ ouverture des guillemet /* > fermeture des guillemet */ ]
On peut aussi sauter des lignes :
/*Ligne 1
Ligne 2
Ligne 3
*/
On ferme les guillemet .
Vous pouvez retrouver les lignes et leur définition sur la page principale du support .
On va voire les fonction dans notre script :
#include <a_samp>//Include un morceau de script qui se trouve Pawno/Include
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#if defined FILTERSCRIPT//Si ses un FilterScript retirer si ses un GameMode
public OnFilterScriptInit()//Quand vous méttez la console Samp-server en route
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()//Quand vous fermer le serveurs
{
return 1;
}
#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
#endif
public OnGameModeInit()//Ou se trouve les vehicules ,Objet,Spawn Joueur,ect...
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()//Fermeture du GameMode
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)//Position du joueur ,Camera
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerRequestSpawn(playerid)//Postion du jouer , camera (par default)
{
return 1;
}
public OnPlayerConnect(playerid)//Quand un joueur ce connecte
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)//Quand un joueur ce déconnecte
{
return 1;
}
public OnPlayerSpawn(playerid)//Quand un joueur a choisi le skin et est spawmer
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)//Quand un joueur est mort
{
return 1;
}
public OnVehicleSpawn(vehicleid)//Quand un vehicule est spawmé
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)//Quand un vehicule a exploser
{
return 1;
}
public OnPlayerText(playerid, text[])//Quand un joueur écris un message
{
return 1;
}
public OnPlayerPrivmsg(playerid, recieverid, text[])//Quand on fait un /pm
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])//Les commandes serveurs
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
//On verras plus tard
return 1;
}
return 0;
}
public OnPlayerInfoChange(playerid)//Pour changer les informations du joueur
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)/*Quand on entre dans un vehicule*/
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)//Quand on sort d'un vehicule
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)/*Pour changer les stats d'un joueur*/
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)/*Quand un joueur entre dans un checkpoint*/
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)//Quand un joueur quittele chekpoint
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)/*Quand un joueur rentre dans un checkpoint type Race*/
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)/*Quand un joueurquitte un checkpoint type Race*/
{
return 1;
}
public OnRconCommand(cmd[])//Les commands de la console RCON
{
return 1;
}
public OnObjectMoved(objectid)//Pour les objet en mouvement
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)//Quand un joueur bouge un objet
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)//Pour les pickup
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)//Pour les menus
{
return 1;
}
public OnPlayerExitedMenu(playerid)//Quand on sort d'un menu
{
return 1;
}
Partie 3 :
Les erreur et Warning c'est quoi ?
Les erreurs bas comme le nom l'indique ses quand vous faites des erreur !
Lors de la compilation des erreurs peuvent arrivé exemple :
C:\Documents and Settings\HP_Administrateur\Mes documents\Coco Games\rpg-force\gamemodes\Untitled.pwn(112) : error 001: expected token: ";", but found "}"
Celle ci est la plus connus !
Comme vous voyez il y à un 112 entre paranthé ses le numéros de la ligne ou se trouve l'erreur on y va et on y trouve :
}
Et faut faire quoi et bas certeint vont pensée a sa :
};
Nan on doit regarder la fonction entière :
public OnPlayerInfoChange(playerid)
{
return 1
}
Et la quand in regarde une autre fonction :
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
Le resultat nous saute a la tête il fallait mettre ; apres return1 qui donne :
public OnPlayerInfoChange(playerid)
{
return 1;
}
La on compile et tous est bien !
Mainteant les Wanings il peuve être et génant et ne pas l'être :
C:\Documents and Settings\HP_Administrateur\Mes documents\Coco Games\rpg-force\gamemodes\Untitled.pwn(106) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Warning.
Nous pouvons donc en déduire que ces la ligne 106 !
On prend la fonction complète :
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;//106
}
Nous avons un problème d'indentation car la ligne :
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
Est male placée les doit être aligné :
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;//106
}
Je est fait un shéma pour comprendre l'indentation (j'ai relier par les trait rouge) :
(http://i50.servimg.com/u/f50/11/90/96/44/exempl10.jpg)
Voila un exemple que une action s'active dans une fonction !
public Fonction()
{//Ouverture d el'indentation
//L'action
return1;
}//Fermeture de l'indentation
REMARQUE : Il peut avoire une fonction a l'interrieur d'une fonction !
-
Nice
GG ::)
-
beau tuto, surment a completer :)
GG
++
nikko
-
Le plus dure c'est de mettre els couleures :lmao
-
Nice coco, c'est un tuto dans ce genre que j'aurai aimer avoir quand j'ai débuté.
++, MisterT.
-
pareil pour moi, ca serai cool si il serai déplacé dans la partie tuto :)
il est complémentaire a celui de sim ;)
++
nikko
-
Joli tuto :)
-
salut,
très beau tuto, j'aurais par contre une petite suggestion pour la lisibilité, ajoute les [ code] et [/code ] afin que l'on ait une plus grande facilité à lire les codes
:D :D Beau travail Coco :cheers
++Sim++
-
Tuto assez complet :D
Il commence à avoir plusieurs bon petits tutos pour le Pawn :king
Les débutants n'auront pas de mal à bien commencer.
Bravo coco ;)
-
Bravo, bonn travail tu as du t'amuser à faire les couleurs xD
-
Oui lol merci
-
Jolie tutoriel, il reste plus qu'à corriger les fautes de frappes que tu as fait et se sera un tuto propre et nickel ;)
Cordialement, metrakit
-
Perfect, j'ai compirs les bases maintenant
DD
-
Voila j'ai corrigé les fautes de frappes et je suis entrain de construite une page Web qui aide à ajouter le serveur en ligne enfaite pour le faire j'aide des personnes a trouver en demandent des screens de leurs routeurs et autre !
-
bonne idée coco ;)
++
nikko
-
Moi je n'ai pas reussi a enregistrer au debut, comment faire ? Car tu dis enregistrer dans filterscript ou gamemode seulement quand je veux enregistrer je ne les trouve pas.
-
FilterScripts et GameMode sont des dossiers, donc t'es fichier tu les enregistre dedans ;)
PS : Beau tuto, par contre, les 3 mots "Partie" sont tous différents :laugh
-
Oui je sais seulement je n'arrive pas à les trouver.
-
Eh bien, les dossiers sont dans le dossier où tu enregistrer tous sur ton serveur.
-
merci super tuto , mais je le connais déjà :laugh http://www.gtaonline.fr/forums/index.php?action=printpage;topic=6229.0 (http://www.gtaonline.fr/forums/index.php?action=printpage;topic=6229.0) :lmfao
-
c'est celui ci en version imprimable :boulz
-
Mais je sais pas comment expilquer, je sais ou sont le fichiers Gamemode et Filterscripte seulement quand je veux enregistrer, je ne les trouve pas.
-
Salut,
il est possible que tu ait plusieurs fois le serveur d'enregistrer sur ton Disque Dur, vérifie bien que tu sauvegarde à la bonne place,
sinon si tu es sous vista tu n'as peut-être pas les droits pour enregistrer à cet endroit...(merci mircosoft...)
++Sim++
-
Merci COCO ;) ;)