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

Titre: [Tuto]Apprendre a scripter
Posté 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 !
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Azz45 le 04 Janvier 2009, 12:34:25
Nice

GG  ::)
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Nikko™ le 04 Janvier 2009, 13:13:54
beau tuto, surment a completer :)

GG

++
nikko
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Eloctro le 04 Janvier 2009, 13:22:45
Le plus dure c'est de mettre els couleures  :lmao
Titre: Re : [Tuto]Apprendre a scripter
Posté par: » Lukubi™ le 04 Janvier 2009, 14:01:42
Nice coco, c'est un tuto dans ce genre que j'aurai aimer avoir quand j'ai débuté.

++, MisterT.
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Nikko™ le 04 Janvier 2009, 14:03:54
pareil pour moi, ca serai cool si il serai déplacé dans la partie tuto  :)
il est complémentaire a celui de sim  ;)

++
nikko
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Kuroba le 04 Janvier 2009, 14:04:59
Joli tuto :)
Titre: Re : [Tuto]Apprendre a scripter
Posté par: S!m le 04 Janvier 2009, 15:54:26
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++
Titre: Re : [Tuto]Apprendre a scripter
Posté par: [viruz]rider_77 le 04 Janvier 2009, 16:12:09
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 ;)
Titre: Re : [Tuto]Apprendre a scripter
Posté par: iPod_Touch le 05 Janvier 2009, 12:25:01
Bravo, bonn travail tu as du t'amuser à faire les couleurs xD
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Eloctro le 05 Janvier 2009, 19:41:19
Oui lol merci
Titre: Re : [Tuto]Apprendre a scripter
Posté par: jonjon le 06 Janvier 2009, 19:53:39
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
Titre: Re : [Tuto]Apprendre a scripter
Posté par: D0uD0u le 07 Janvier 2009, 18:30:57
Perfect, j'ai compirs les bases maintenant

DD
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Eloctro le 10 Janvier 2009, 13:29:54
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 !
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Nikko™ le 10 Janvier 2009, 13:44:53
bonne idée coco ;)

++
nikko
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Snoop le 10 Juillet 2009, 19:33:06
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.
Titre: Re : [Tuto]Apprendre a scripter
Posté par: ApocKalipsS le 10 Juillet 2009, 22:34:56
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
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Snoop le 11 Juillet 2009, 10:13:40
Oui je sais seulement je n'arrive pas à les trouver.
Titre: Re : [Tuto]Apprendre a scripter
Posté par: ApocKalipsS le 11 Juillet 2009, 10:41:07
Eh bien, les dossiers sont dans le dossier où tu enregistrer tous sur ton serveur.
Titre: Re : [Tuto]Apprendre a scripter
Posté par: zorglue le 11 Juillet 2009, 12:38:26
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
Titre: Re : [Tuto]Apprendre a scripter
Posté par: cristab le 11 Juillet 2009, 13:05:58
c'est celui ci en version imprimable  :boulz
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Snoop le 11 Juillet 2009, 13:17:05
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.
Titre: Re : [Tuto]Apprendre a scripter
Posté par: S!m le 11 Juillet 2009, 16:54:43
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++
Titre: Re : [Tuto]Apprendre a scripter
Posté par: Flow_M4n le 13 Juillet 2009, 16:20:04
Merci COCO ;) ;)