GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Salif le 31 Mars 2013, 18:33:34
-
Bonjour à tous,
Premièrement, comme précisé dans le titre, je débute en pawn (j'ai en faite commencé il y a longtemps mais pas trop appris, je trouve ça dur), je fais un DM de A à Z juste pour m’entraîner et apprendre, et non pas pour faire un projet. Je ne vais tout de même pas lancer un RP comme certains le font... Je voudrais donc que vous me conseillez un GM DM que je pourrais déchiffrer/modifier, pour que cela m'aide. Je vous informe qu'il me faut un GM un peu poussé quand même, pas un GM qui contient seulement des teams et 3-4 commandes, mon GM contient déjà ça.
Deuxièmement et dernièrement, je veux faire un /sortirdm pour sortir de mon /dm1, et un /changeteam. Je vois à peu près la "logique" du comment cela doit se passer, mais je ne sais pas scripter cela. Pour le /sortirdm, j'imagine qu'il faut qu'une fois que le joueur meurt, si le joueur a fait auparavant /dm1, il respawn à la position aléatoire comme lorsqu'on fait /dm1, c'est bien ça ? Je vous remercie par avance pour votre aide.
-
Essaye d'aller voir sur le Forum SAMP dans GameModes
-
Déjà cherché, je trouves des GM trop trop compliqué pour un débutant, ou au contraire des GM trop vides, ou d'autres avec des commandes IG, mais sans rien dans OnPlayerCommandText (donc à mon avis le GM doit être très poussé..)
-
Même dans les sous-forum de gtaonline dans le script ?
-
Rien, et ceux qui s'y connaissent sont mieux placés que moi pour me proposer un GM je pense.
-
Un petit conseil,fait ton serveur tout doucement avec des FS.
Si tu veux que je t'aide a en trouvé;contacte moi via skype:general59156.
++Ghost.
-
Le but n'est pas de faire le serveur, mais d'apprendre en m'entrainant, je ne pense pas que les FS pourraient m'aider, si oui, quels genre de FS ?
-
Salut, Tu peux prendre le GM Grand Larency disponnible dans ton fichier "Gamemodes" du fichier samp server que tu télécharge sur le site officiel de sa-mp (grandlarc.pwn)
Tu peux aussi apprendre en suivant tout simplement un tutoriel sur le pawn ici (http://www.gtaonline.fr/forums/index.php?topic=11593.0)
En esperant t'avoir aider, bonsoir :smile:
-
Merci, pour le tuto je l'ai déjà suivi.
Deuxièmement et dernièrement, je veux faire un /sortirdm pour sortir de mon /dm1, et un /changeteam. Je vois à peu près la "logique" du comment cela doit se passer, mais je ne sais pas scripter cela. Pour le /sortirdm, j'imagine qu'il faut qu'une fois que le joueur meurt, si le joueur a fait auparavant /dm1, il respawn à la position aléatoire comme lorsqu'on fait /dm1, c'est bien ça ? Je vous remercie par avance pour votre aide.
-
Bonjour,
Si tu es vraiment motivé je te conseillerais d'apprendre le langage C. Il y a des sites (dont un en particulier) qui sont parfaits pour ça. La structure du C et du Pawn étant assez proche ça va grandement t'aider ,surtout si tu es débutant en programmation, en plus de ça tu ne seras pas limité au Pawn si un jour tu t'en lasses.
-
J'ai déjà commencé sur le siteduzero, le soucis c'est que j'ai pas beaucoup de temps à consacrer à ça avec les études etc... Donc j'ai abandonné.
-
Si tu trouves le temps pour le Pawn tu peux en trouver pour le C non ? :ninja:
Mais si tu ne souhaites vraiment te consacrer qu'à Pawn t'es pas vraiment obligé de voir le C (même si ça aide).
-
Le pawn j'y consacre un peu de temps, en modifiant un GM etc. Le C je vais devoir suivre le tuto petit à petit du siteduzero et me concentrer dedans si tu vois ce que je veux dire.
-
si tu souhaite apprendre le pawn, je te conseil d’abord d'apprendre les base avec les trois tutoriels ci-dessous
• [TUTO] Apprenons le Pawn avec Gilux ! [Partie 1 : Les bases] (http://www.gtaonline.fr/forums/index.php?topic=11593.0)
• [TUTO] Apprenons le Pawn avec Gilux ! [Partie 2 : Structures utiles] (http://www.gtaonline.fr/forums/index.php?topic=11595.0)
• [TUTO] Apprenons le Pawn avec Gilux ! [Partie 3 : Conclusion] (http://www.gtaonline.fr/forums/index.php?topic=11688.0)
Tu peut aussi consulter la sectionTutoriels et références SA:MP (http://www.gtaonline.fr/forums/index.php?board=75.0) de notre cher forum.
Et enfin si tu recherche des exemple de code type FS ou GM, je te conseil la section Showroom SA:MP (http://www.gtaonline.fr/forums/index.php?board=74.0) aussi disponible sur le forum.
En espérant que tu y trouve ton bonheur. :bye:
-
Le C ne m'a jamais servi pour apprendre le PAWN personnellement, tu pourrais très bien y arriver sans.
Je te conseil aussi d'essayer de comprendre le fonctionnement des fonctions les plus utilisées dans les gamemodes et les filterscripts.
-
Certes mais si tu souhaites te diriger vers du Lua (MTA:SA) ou du Squirrel (IV:MP) le C te permet d'avoir de bonnes bases (du moins tu comprends plus vite), mais ce n'est effectivement pas essentiel.
-
Les fonctions c'est bon, les conditions, etc sur les tutos de gilux c'est bon aussi. Par contre dans les tutos de Gilux, ce que je ne comprend vraiment pas du tout c'est les arrays et les boucles, incompréhensible pour moi.
-
Une boucle, ce n'est ni plus ni moins qu'une condition répétée. Si tu as cerné les conditions, alors tu as cerné les boucles. Pour les arrays, lis le tutoriel sur le PHP du SiteDuZéro. C'est le même principe. ;)
-
enfaite c'est simple.
un array c'est enfaîte un tableau qui te permet de stocker plusieurs valeur sous un seul nom de variable.
exemple simple tu veux faire une liste des id accepter pour une course tu fais un tableau dans lequel tu met toutes les id que tu veux.
new ListeAutorizedCars[3]; // on spécifie que le tableau sera initialisé avec possibilité de stocker 3 valeurs. A savoir aussi que les slots d'un tableau commence à 0 et fini a 3-1(2) car 0,1,2 ça fait 3 valeurs.
ListeAutorizedCars[0]=411;//dans le slot 0 du tableau on met l'id 411
ListeAutorizedCars[1]=412;//dans le slot 1 du tableau on met l'id 412
ListeAutorizedCars[2]=413;//dans le slot 2 du tableau on met l'id 413
lorsque par exemple quelqu'un veut rejoindre une course il suffira alors de vérifier que l'id du véhicule du joueur est bien une valeur contenu dans ListeAutorizedCars
Les boucles permettent elles d'explorer un tableau (mais pas uniquement c'est une des choses possibles).
exemple
new i;
new sum;
for (i=1; i<=10; i++)
{
sum += i;
}
Donc la boucle va s’exécuter de la manière suivante (traduction française du for)
Pour i égale 1 jusqu’à ce que i soit inférieur ou égale a 10 j'incrémente i de 1 et tant que i est inférieur ou égale a 10 je fait l'instruction suivante j'ajoute a sum la valeur de i.
Donc tu peux imaginer par exemple faire une boucle et lire le contenue de notre tableau précédemment fait pour la comparer a une autre valeur de la manière suivante.
new bool:voitureok=false;
for(i=0;i<2;i++)
{
if(VoitureDuJoeur == ListeAutorizedCars[i])
{
voitureok = true;
}
}
if(voitureok)// test si VoitureOk vaut true
{
//on le fait rejoindre la course
}
Voila en éspérant avoir éclairci la chose plus que l'embrouiller XD.
-
À noter que tu oublies les points-virgules après les instructions. Ça ne compilerait pas. Et VoitureOk devrait être initialisée comme un booléen. C'est qu'un détail. :p
Bon, et puis si vraiment je voudrais faire le chieur, je pourrais te dire que ta condition serait plus rapide sous la forme d'un ternaire...
-
j'ai horreur de lire le ternaire pour un débutant c'est tout simplement imbuvable et de la fausse optimisation.
Car a moins d'avoir une boucle avec au moins 100000 itérations (qui ne ferais que gagnait que quelques secondes) c'est juste selon le gout du scripteur.
Concernant l'écriture ben c'est des morceaux de copier coller sur le wiki du pawn du coup je ne savais plus si y'avait des ; ou non (je rajoute)
Pour la variable voitureok si tu veut vraiment chipoter il faut aussi la déclarer avec un new mais bon
Je corrige les grosses fautes de syntaxe Pour que cela compile.
-
Juste pour t'embêter : t'as oublié le tag bool: lors de la déclaration du booléen. :D
Je sors, je sors...
-
les déclarations en pawn sont étrange tu ne déclare pas un type int mais il faut déclaré un float ou un bool de manière plus que douteuse XD.
Bref je corrige
-
En faite les types n'existe pas en pawn, on utilise des pseudos type bien pourri qu'on appel les tags qui permettent de nous faire chier quand on les utilise pas que la variable a été déclaré avec un tag.
-
Merci ça m'éclairci un peu, surtout pour les tableaux. Maintenant si vous pouviez m'aider pour ça svp :
Deuxièmement et dernièrement, je veux faire un /sortirdm pour sortir de mon /dm1, et un /changeteam. Je vois à peu près la "logique" du comment cela doit se passer, mais je ne sais pas scripter cela. Pour le /sortirdm, j'imagine qu'il faut qu'une fois que le joueur meurt, si le joueur a fait auparavant /dm1, il respawn à la position aléatoire comme lorsqu'on fait /dm1, c'est bien ça ? Je vous remercie par avance pour votre aide.
PS : Si seulement il existait un tuto complet comme ceux du siteduzero mais en 100% Pawn :kiss:
-
PS : Si seulement il existait un tuto complet comme ceux du siteduzero mais en 100% Pawn :kiss:
J'avais il y a quelques mois pour projet de réaliser un gros tutoriel sur ce principe, en partant strictement de zéro, en version vidéo (PowerPoint commenté à l'audio)... Mais je me suis dit que 15 personnes maximum le lirait.
-
16, je le lirais moi. Mon professeur de pawn fait grève ! (hein citron !)
-
SF, LS et LV (T)DM de Cristab sur le showroom.
Plus complexe le SFTDM 2.0 by Pimp.
-
PS : Si seulement il existait un tuto complet comme ceux du siteduzero mais en 100% Pawn :kiss:
Justement, j'étais en train d'en rédiger un avant que le sdz passe en v4.
Donc pour le moment je ne peux pas le continuer, tant que l'éditeur de tuto n'est pas remis.
A titre d'information, il contiendra 5 parties avec une quarantaine de chapitres environ:
- Les bases du Pawn
- Le Pawn appliqué à SA-MP
- Une partie dédié à MySQL avec le plugin de BlueG
- Une partie dédié aux plugins importants tel que le Streamer d'incognito, sscanf2...
- Une partie perfectionnement
Actuellement la partie 1 est terminé, et la 2 à mi-parcours.
Normalement l'éditeur de tuto revient courant avril, et c'est un des projets que je dois rendre pour les cours, donc il sera disponible avant la fin mai pour ce que ça intéresse.
Le plus dur étant qu'il passe la validation.
-
Deuxièmement et dernièrement, je veux faire un /sortirdm pour sortir de mon /dm1, et un /changeteam. Je vois à peu près la "logique" du comment cela doit se passer, mais je ne sais pas scripter cela. Pour le /sortirdm, j'imagine qu'il faut qu'une fois que le joueur meurt, si le joueur a fait auparavant /dm1, il respawn à la position aléatoire comme lorsqu'on fait /dm1, c'est bien ça ? Je vous remercie par avance pour votre aide.
Et bien les variables peuvent t'aider à réaliser ça.
Voici un exemple :
// Tout en haut du code
new bool:dm1[MAX_PLAYERS];
//Dans la callback OnPlayerCommandText
if(!strcmp(cmdtext,"/dm1",true))
{
dm1[playerid]=true;
//Code...
}
//Dans la callback OnPlayerDeath
if(dm1[playerid])
{
SetPlayerPos(...);
//Tu le fais spawner aléatoirement dans le dm1
}
if(!dm1[playerid]) SetPlayerPos(...); //Tu le fais spawner au spawn habituel
Il est important de créer deux conditions car si ton SetPlayerPos aurait été après la condition if(dm1...), il aurait été re-téléporté et donc ça n'aurai servi à rien.
Tu peux aussi mettre la condition après le SetPlayerPos (qui fait spawner normalement) pour qu'il soit téléporté une deuxième fois mais dans le dm cette fois-ci, tu fais comme tu veux
-
PS : Si seulement il existait un tuto complet comme ceux du siteduzero mais en 100% Pawn :kiss:
J'avais il y a quelques mois pour projet de réaliser un gros tutoriel sur ce principe, en partant strictement de zéro, en version vidéo (PowerPoint commenté à l'audio)... Mais je me suis dit que 15 personnes maximum le lirait.
Non je pense vraiment que beaucoup de monde serait intéressé...
PS : Si seulement il existait un tuto complet comme ceux du siteduzero mais en 100% Pawn :kiss:
Justement, j'étais en train d'en rédiger un avant que le sdz passe en v4.
Donc pour le moment je ne peux pas le continuer, tant que l'éditeur de tuto n'est pas remis.
A titre d'information, il contiendra 5 parties avec une quarantaine de chapitres environ:
- Les bases du Pawn
- Le Pawn appliqué à SA-MP
- Une partie dédié à MySQL avec le plugin de BlueG
- Une partie dédié aux plugins importants tel que le Streamer d'incognito, sscanf2...
- Une partie perfectionnement
Actuellement la partie 1 est terminé, et la 2 à mi-parcours.
Normalement l'éditeur de tuto revient courant avril, et c'est un des projets que je dois rendre pour les cours, donc il sera disponible avant la fin mai pour ce que ça intéresse.
Le plus dur étant qu'il passe la validation.
Très intéressant j'ai hâte de voir ça..
Deuxièmement et dernièrement, je veux faire un /sortirdm pour sortir de mon /dm1, et un /changeteam. Je vois à peu près la "logique" du comment cela doit se passer, mais je ne sais pas scripter cela. Pour le /sortirdm, j'imagine qu'il faut qu'une fois que le joueur meurt, si le joueur a fait auparavant /dm1, il respawn à la position aléatoire comme lorsqu'on fait /dm1, c'est bien ça ? Je vous remercie par avance pour votre aide.
Et bien les variables peuvent t'aider à réaliser ça.
Voici un exemple :
// Tout en haut du code
new bool:dm1[MAX_PLAYERS];
//Dans la callback OnPlayerCommandText
if(!strcmp(cmdtext,"/dm1",true))
{
dm1[playerid]=true;
//Code...
}
//Dans la callback OnPlayerDeath
if(dm1[playerid])
{
SetPlayerPos(...);
//Tu le fais spawner aléatoirement dans le dm1
}
if(!dm1[playerid]) SetPlayerPos(...); //Tu le fais spawner au spawn habituel
Il est important de créer deux conditions car si ton SetPlayerPos aurait été après la condition if(dm1...), il aurait été re-téléporté et donc ça n'aurai servi à rien.
Tu peux aussi mettre la condition après le SetPlayerPos (qui fait spawner normalement) pour qu'il soit téléporté une deuxième fois mais dans le dm cette fois-ci, tu fais comme tu veux
Je vais voir ça.