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

Titre: Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté 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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Warlem le 31 Mars 2013, 19:33:46
Essaye d'aller voir sur le Forum SAMP dans GameModes
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Salif le 31 Mars 2013, 19:37:05
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é..)
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Warlem le 31 Mars 2013, 19:43:11
Même dans les sous-forum de gtaonline dans le script ?
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Salif le 31 Mars 2013, 20:48:43
Rien, et ceux qui s'y connaissent sont mieux placés que moi pour me proposer un GM je pense.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Warlem le 31 Mars 2013, 20:56:06
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.

Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Salif le 31 Mars 2013, 21:13:34
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 ?
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: VendetacK le 01 Avril 2013, 01:32:28
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:
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Salif le 01 Avril 2013, 12:05:40
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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: vincentdu90 le 01 Avril 2013, 12:14:08
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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Salif le 01 Avril 2013, 12:17:19
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é.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: vincentdu90 le 01 Avril 2013, 12:25:33
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).
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Salif le 01 Avril 2013, 12:32:18
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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: » Lukubi™ le 01 Avril 2013, 23:31:54
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:
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Kiloutre le 02 Avril 2013, 11:34:08
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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: vincentdu90 le 02 Avril 2013, 11:48:47
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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Salif le 02 Avril 2013, 18:20:03
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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Gzsume le 02 Avril 2013, 18:44:12
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. ;)
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: rafffel le 02 Avril 2013, 18:48:57
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.
Code: (pawn) [Sélectionner]
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

Code: (pawn) [Sélectionner]
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.
Code: (pawn) [Sélectionner]
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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Gzsume le 02 Avril 2013, 20:05:19
À 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...
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: rafffel le 02 Avril 2013, 20:28:10
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.

Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Gzsume le 02 Avril 2013, 21:41:08
Juste pour t'embêter : t'as oublié le tag bool: lors de la déclaration du booléen. :D
Je sors, je sors...
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: rafffel le 02 Avril 2013, 21:54:16
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
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Ssk le 02 Avril 2013, 22:25:45
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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Salif le 03 Avril 2013, 20:05:52
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:
Titre: Re : Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Gzsume le 03 Avril 2013, 21:00:25
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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Infu le 03 Avril 2013, 21:03:29
16, je le lirais moi. Mon professeur de pawn fait grève ! (hein citron !)
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: ShaDowxx™ le 05 Avril 2013, 06:34:59
SF, LS et LV (T)DM de Cristab sur le showroom.

Plus complexe le SFTDM 2.0 by Pimp.
Titre: Re : Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: steve76 le 05 Avril 2013, 07:29:45
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:

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.
Titre: Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Kiloutre le 05 Avril 2013, 12:07:31
Citer
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
Titre: Re : Re : Re : Débutant en pawn, je souhaiterais apprendre via un GM DM pas trop poussé
Posté par: Salif le 05 Avril 2013, 22:56:08
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..

Citer
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.