GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Lychaos le 14 Novembre 2009, 22:13:47
-
Bonsoir a tous,
Voila plusieurs mois que j'essaie d'apprendre le PAWN, mais sans grand succè, étant un mec plutôt théorique, j'arrive pas a me forger en travaillant seul. Je suis donc a la rechercher de "tutos" , ou un tuteur qui me ferait des sortes de cours
Je suis près a y passer beaucoup de temps, mais étant seul, j'arrive seulement a modifier une commande, je comprend la plupart des choses, mais je ne sais pas comment les utiliser (string , variable, ect)
Donc je chercherais quelqu'un qui serait près a me les apprendre.
Je vous remercie
Bonne soirée , +Lychaos++Ster+
-
ben explique sur ce que tu buche et je pense qu'on pourras t'expliquer au plus simple ;)
-
Le truck, c'est que j'aimerais savoir crée sans avoir besoin de beaucoup d'aide, par exemple, je ne sais meme pas comment appliquer une couleur a une team , je sais a peine faire des spawn different (et encore)
Je pense que j'aurais du apprendre le C avant ce langage sa m'aurait aider ... ( pourquoi j'ai prit se satané xHTML :wall ))
=============EDIT============
J'avais entendu parlez d'un tuto qui permettais d'editer un DM, sa pourrait etre bien pour debuter?
Si vous avez un lien, je suis preneur ^^
-
personnelement je ne connait pas le C ^^
je suis plus php html et pawn appris par mes propres moyen en regardant les autre GM FS :)
pour appliquer une team
commence par declarer tes team
new Team[MAX_PLAYERS];
dans le onplayerconnecte qui est la callback appeler quand un joueur ce connect ajoute ceci
Team[playerid] = 0;
ensuie dans la callback OnPlayerRequestClass qui est appeler quand un joueur choisit sont personnage
if(classid == 0)
{
Team[playerid] = 1;
}
else if(classid == 1)
{
Team[playerid] = 2;
}
ensuite dans la callback OnPlayerSpawn qui est appeler au moment ou le joueur spawn
if(Team[playerid] == 1)
{
SetPlayerColor(playerid,couleur1);
}
else if(Team[playerid] == 2)
{
SetPlayerColor(playerid,couleur2);
}
Voila par toi meme tu purras optimiser ceci un peu plus tard :)
-
Merci , sa fait plaisir que tu t'investisse pour moi ^^
Sinon il y le truk que j'ai jamais piger
c'est une sort de new xxx[256]
ou sting[256]
Je voudrais savoir ce que cela signifie.
-
enfaite la il faut savoir que si c'est pour un text le
new String[256]; ne sert pas a grand chose il est preferable d'utiliser 128 a la place
en gros sa va etre le nombre de caractere que l'on aimerais stocker dans la variable
par exemple
new string[5];
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
format(string, sizeof(string)," la maison verte de %s est jolie", pName);
SendClientMessageToAll(COLOR_ORANGE, string);
afficheras seulement
la ma
tans dis que si on passe le string a 128
new string[128];
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
format(string, sizeof(string)," la maison verte de %s est jolie", pName);
SendClientMessageToAll(COLOR_ORANGE, string);
il afficheras
la maison verte de Lychaos est jolie
Voila je ne sais pas si j'ai etait assez claire en faite
-
Si tres ^^
Et sa se met a chaque fin de var? Enfin, a chaque debut de fonction qui renvoit un texte?
-
des que tu as besoin de faire un format
-
Salut.
Tout le monde débute quelque part dans quelque chose et tout le monde a des façons d'apprendre différentes (certains ont besoin de cours approfondies, d'autres un prof particulier, d'autres apprennent sur le tas (en essayant), et autres). Il n'y a pas de mauvaises façon d'apprendre et dans tous les cas tu seras obliger de passer à la pratique.
Ici il y a des Tutos qui sont relativement simple et bien expliqué et si tu as besoin d'aide, tu peux toujours demander et on te répondra (du moins, s'il n'y a pas eu de recherche et que la solution est déjà écrite plusieurs fois, tu risques d'attendre :p ) ;) .
-
Oui, j'ai utiliser la fonction recherche de mainte fois x).
Sinon, disons que je marche sur la logique, et j'arrive pas a m'y mettre tout seul ^^
Si tu a des lien de tuto (francais de preference, sinon je me debrouillerais)
Merci beaucoup ;)
+Lychaos++Ster+
-
http://www.gtaonline.fr/forums/index.php/board,75.0.html (http://www.gtaonline.fr/forums/index.php/board,75.0.html)
voila :)
commence par les anciens tuto et je regarde si j'ai le temps d'expliquer chaque callback
-
Merci, je suis en train de lire les Tuto ^^
Sinon j'aimerais savoir si y'a un lien qui permet de savoir ce qu'on doit mettre habituelement dans les OnPlayerSpawn (quand le joueurs a choisis sa classe) OnPlayerConnect(quand il se connecte)
Ce qu'on doit placer, et comment le savoir.
Par exemple je lis "Dans le OnGameModInit
tunning= blablable
<-->
Ici on doit mettre tout les new?
<-->
et ensuite crée une public
public OnPlayerSelectedMenuRow(playerid, row) (Deja sa, comment on sait qu'on doit ecrire tout sa lol)
En bref, une expliquation de ces choses la me serait bien utile ^^ :laugh
-
dans le OnGameModeInit tu doit retrouver ceci
*tes option du genre (SetGameModeText("nom du GM");ShowNameTags(1);ShowPlayerMarkers(1);AllowInteriorWeapons(1);)
*les timers pour certaine fonction du GM (anticheat,payday,...)
*tes personnages (addplayerclass)
*tes vehicule (addstaticvehicle ou creatvehicle)
*tes variable que ton GM a besoin (seulement le GM )
*ensuite tu ajoute tes menu si il y a
pour ta callback OnPlayerSpawn sa depent ce que tu aimerais quelle fasse ^^
/!\ a savoir les variable concernant un seul joueur tu peu les remarquer en haut du gm avec ceci a la fin [MAX_PLAYERS] tu doit mettre tout les variable a 0 lors de la conection dans la callback OnPlayerConnect
-
Merci ^^
Mettre les variable a zero au debut sa veux dire quoi?
a chaque new xxx je dois mettre = 0?
Et sinon, comment savoir les ID de chaque chose, je connais Skin, vehicule, mais les ajout tunning par exemple, il y a un site? ou une librairie?
-
tout a fait il y a un wiki officiel a samp http://wiki.sa-mp.com/wiki/Main_Page_FR (http://wiki.sa-mp.com/wiki/Main_Page_FR) par contre juste la page d'acceuil est en français tout le reste est en anglais
-
Merci encore
Sinon je lisais ce tuto la (http://www.gtaonline.fr/forums/index.php/topic,4289.0.html (http://www.gtaonline.fr/forums/index.php/topic,4289.0.html)) Concernant le MoveObject, il y a une chose que je ne comprend pas
On doit ecrire le commande donc le cmdtp(jsais pus comment sa s'ecrit) =/fermer
ensuite le SetTimer(Nomdutimer,7000,0) // pour 7 sg
MAIS, le Timer en question n'est dit qu'a la FIN du scripte, il risque pas d'y avoir un "Nomdutimer n'est pas déclarer" ?
=================Edit==============
J'aimerais aussi savoir les type de variable et a quoi sa correspond, car je voit beaucoup de "i" et je me demandais... ???
-
Bonjour a tous
Je suis en train d'apprendre le pawn et j'en etait a crée un moveobject, mais la commande seulement dans une zone, j'ai donc mit IsPlayerInArea, mais j'ai toujours "Udefined sybol "Getplayerpos"
erreur :
C:\SERVEUR SAMP\gamemodes\mytdm.pwn(33) : error 017: undefined symbol "GetPlayerPos"
C:\SERVEUR SAMP\gamemodes\mytdm.pwn(33) : warning 215: expression has no effect
C:\SERVEUR SAMP\gamemodes\mytdm.pwn(33) : warning 215: expression has no effect
C:\SERVEUR SAMP\gamemodes\mytdm.pwn(33) : warning 215: expression has no effect
C:\SERVEUR SAMP\gamemodes\mytdm.pwn(33) : warning 215: expression has no effect
C:\SERVEUR SAMP\gamemodes\mytdm.pwn(33) : error 001: expected token: ";", but found ")"
C:\SERVEUR SAMP\gamemodes\mytdm.pwn(33) : error 029: invalid expression, assumed zero
C:\SERVEUR SAMP\gamemodes\mytdm.pwn(33) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Pastebin de mon script: http://pastebin.com/m6d0943c3 (http://pastebin.com/m6d0943c3)
-
tu as mis #include <a_samp> tout en haut ??
-
EDIT : Haaaann C'est regler, je devais encore avoir une confusion de PAWNO
Sa m'arrive pleins de fois sa, quand j'en ouvre plusieurs en meme temps, il a pus la bonne version, et fait bugguer tout mon script ;) (toute une aprem pour sa xd)
-
Salut a vous,
J'ai esseyer de crée des menu pour qu'on selectionne ses arme, mais j'ai un little soucis, quand on va sur le premier menu, on a tout, et sur les 2 autre, le menu apparait, mais vide :s
voici mes code
new Menu:gun;
new Menu:gun1;
new Menu:gun2;
gun = CreateMenu("~r~Pistol ~w~selection",1,125,150,300); //création du menu
if(IsValidMenu(gun))
{
SetMenuColumnHeader(gun, 0, "Choisissez votre pistolet:");
AddMenuItem(gun ,0,"Eagle");
AddMenuItem(gun ,0,"9mm");
AddMenuItem(gun ,0,"Silentieux");
}
//----------------------
gun1 = CreateMenu("~r~Mitraill. ~w~selection",1,125,150,300); //création du menu
if(IsValidMenu(gun1))
{
SetMenuColumnHeader(gun1, 0, "Choisissez votre mitraillette legere et lourde:");
AddMenuItem(gun ,0,"AK47");
AddMenuItem(gun ,0,"M4");
AddMenuItem(gun ,0,"MP5");
AddMenuItem(gun ,0,"Tec9");
AddMenuItem(gun ,0,"Micro-MP5");
}
//-------------------------------
gun2 = CreateMenu("~r~Letal ~w~selection",1,125,150,300); // création du menu
if(IsValidMenu(gun2))
{
SetMenuColumnHeader(gun2, 0, "Choisissez votre arme letal:");
AddMenuItem(gun ,0,"Batte");
AddMenuItem(gun ,0,"Couteau");
AddMenuItem(gun ,0,"Gods");
AddMenuItem(gun ,0,"Pelle");
}
if (strcmp("/gun", cmdtext, true, 10) == 0)
{
if(PlayerToPoint(playerid, 3, 1883.069336, 1284.791626, 11.357388) || PlayerToPoint(playerid, 3, 1949.034790, 1444.481201, 11.357388))
{
ShowMenuForPlayer(gun,playerid);
TogglePlayerControllable(playerid,0);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Vous n'etes pas sur la bonne etoile");
}
return 1;
}
//FIN CMD
// Debut CMD
if(strcmp("/mgun", cmdtext, true, 10) == 0)
{
if(PlayerToPoint(playerid, 3, 11886.490967, 1284.813599, 11.357388) || PlayerToPoint(playerid, 3, 1945.264282, 1444.519043, 11.357388 ))
{
ShowMenuForPlayer(gun1,playerid);
TogglePlayerControllable(playerid,0);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Vous n'etes pas sur la bonne etoile");
}
return 1;
}
// Fin cmd
// debut cmd
if(strcmp("/lgun", cmdtext, true, 10) == 0)
{
if(PlayerToPoint(playerid, 3, 1890.087891, 1284.888672, 11.357388) || PlayerToPoint(playerid, 3, 1941.252930, 1444.630737, 11.357388 ))
{
ShowMenuForPlayer(gun2,playerid);
TogglePlayerControllable(playerid,0);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Vous n'etes pas sur la bonne etoile");
}
return 1;
}
// FIN DES COMMANDE DE MENU
public OnPlayerSelectedMenuRow(playerid, row)
{
new Menu:Current = GetPlayerMenu(playerid);
if(Current == gun)
{
if(row == 0)
{
GivePlayerWeapon(playerid, 24, 100);
}
if(row == 1)
{
GivePlayerWeapon(playerid, 22, 100);
}
if(row == 2)
{
GivePlayerWeapon(playerid, 23, 100);
}
TogglePlayerControllable(playerid,1); //on defreeze
}
if(Current == gun1)
{
if(row == 0)
{
GivePlayerWeapon(playerid, 30, 500);
}
if(row == 1)
{
GivePlayerWeapon(playerid, 31, 500);
}
if(row == 2)
{
GivePlayerWeapon(playerid, 28, 500);
}
if(row == 3)
{
GivePlayerWeapon(playerid, 29, 500);
}
if(row == 4)
{
GivePlayerWeapon(playerid, 32, 500);
}
TogglePlayerControllable(playerid,1); //on defreeze
}
if(Current == gun2)
{
if(row == 0)
{
GivePlayerWeapon(playerid, 2, 0);
}
if(row == 1)
{
GivePlayerWeapon(playerid, 4, 0);
}
if(row == 2)
{
GivePlayerWeapon(playerid, 10, 0);
}
if(row == 3)
{
GivePlayerWeapon(playerid, 6, 0);
}
TogglePlayerControllable(playerid,1); //on defreeze
}
return 1;
}
J'ai pourtant suivit le tuto, verifier sur le wiki samp mais je voit :s
Merci de votre aide
-
if(IsValidMenu(gun))
{
SetMenuColumnHeader(gun, 0, "Choisissez votre pistolet:");
AddMenuItem(gun ,0,"Eagle");
AddMenuItem(gun ,0,"9mm");
AddMenuItem(gun ,0,"Silentieux");
}
//----------------------
gun1 = CreateMenu("~r~Mitraill. ~w~selection",1,125,150,300); //création du menu
if(IsValidMenu(gun1))
{
SetMenuColumnHeader(gun1, 0, "Choisissez votre mitraillette legere et lourde:");
AddMenuItem(gun1 ,0,"AK47");
AddMenuItem(gun1 ,0,"M4");
AddMenuItem(gun1 ,0,"MP5");
AddMenuItem(gun1 ,0,"Tec9");
AddMenuItem(gun1 ,0,"Micro-MP5");
}
//-------------------------------
gun2 = CreateMenu("~r~Letal ~w~selection",1,125,150,300); // création du menu
if(IsValidMenu(gun2))
{
SetMenuColumnHeader(gun2, 0, "Choisissez votre arme letal:");
AddMenuItem(gun2 ,0,"Batte");
AddMenuItem(gun2 ,0,"Couteau");
AddMenuItem(gun2 ,0,"Gods");
AddMenuItem(gun2 ,0,"Pelle");
}
;)
-
Ahhh ouai :D, merci beaucoup, sa m'etait meme pas venu a l'esprit :dry
Faut que je sois plus concentrer, ou jvais galerer lool
-
Bonjour, j'essais de crée une sorte de job d'eboueur où il faut aller de checkpoint en checkpoint, les coordonner se font de maniere aleatoire, mais j'ai un soucis, c'est que quand je rentre sur un seul point, il active tout le reste en meme temps, et je sais pus comment m'y prendre ...
Voici mes code :
new eboueur[MAX_PLAYERS];
new ceboueur[MAX_PLAYERS];
new Float:PoubellePoints[3][3]={
{2036.697143,1163.087524,10.471667},
{2036.946044,1044.111206,10.470774},
{2037.472290,909.212158, 8.086796}
};
// DEBUT CMD
if(strcmp("/eboueur", cmdtext, true, 10) ==0)
{
eboueur[playerid] = 1;
SendClientMessage(playerid,COLOR_RED,"Vous etes désormais Eboueur");
return 1;
}
// FIN CMD
// debut cmd
if(eboueur[playerid] == 1)
{
if(strcmp("/rampoubelle", cmdtext, true, 10) == 0)
{
ceboueur[playerid] = 1;
SendClientMessage(playerid,COLOR_YELLOW,"Suivez les checkpoint pour faire votre tourné");
new randomize;
randomize = random(sizeof(PoubellePoints));
SetPlayerCheckpoint(playerid, PoubellePoints[randomize][0], PoubellePoints[randomize][1], PoubellePoints[randomize][2],5);
return 1;
}
return 0;
}
//fin cmd
public OnPlayerEnterCheckpoint(playerid)
{
if(ceboueur[playerid] == 1)
{
SendClientMessage(playerid,COLOR_YELLOW,"Vous avez ramasser votre premiere poubelle.(2restantes)");
GivePlayerMoney(playerid,150);
new randomize;
randomize = random(sizeof(PoubellePoints));
SetPlayerCheckpoint(playerid, PoubellePoints[randomize][0], PoubellePoints[randomize][1], PoubellePoints[randomize][2], 5.0);
ceboueur[playerid] = 2;
}
else if(ceboueur[playerid] == 2)
{
SendClientMessage(playerid,COLOR_YELLOW,"Vous avez ramasser votre deuxieme poubelle.(1restantes)");
GivePlayerMoney(playerid,150);
new randomize;
randomize = random(sizeof(PoubellePoints));
SetPlayerCheckpoint(playerid, PoubellePoints[randomize][0], PoubellePoints[randomize][1], PoubellePoints[randomize][2], 5.0);
ceboueur[playerid] = 3;
}
else if(ceboueur[playerid] == 3)
{
SendClientMessage(playerid,COLOR_YELLOW,"Vous avez ramasser votre troisieme poubelle.");
GivePlayerMoney(playerid,500);
SendClientMessage(playerid,COLOR_YELLOW,"Vous avez finit votre tourné!");
ceboueur[playerid] = 1;
}
return 1;
}
La, quand je rentre sur le premier point sa fait " Vous avez ramasser votre premiere poubelle" le cp reste au meme endroit, et si je re-rentre j'ai les 3 autre messages e le cp change d'endroit...
J'ai pour le moment 3 coordonné, mais il y en auras beaucoup .
Si vous savez comment je dois m'y prendre sa m'aiderais beaucoup...
-
pense a killer le CP dans le quelle tu entre
-
Haaaan sa marche merci...
Je l'avais mit mais j'ai recommencer le systeme et je les ai oublier :-\
Bon en tout cas je suis content, apres 4h a etre passer dessus :lmfao
Edit: Maintenant j'aimerais savoir comment faire qu'un vehicule sois reserver a un job
|--> Le trashcar m'interresserais particulierement...
-
Bonjour, j'etais en train de voir pour utiliser des animation et nottament une anim quand on parle, et qu'au bout de 3-4 secondes, l'anim s'arrete.
J'ai donc mit sa
if(!IsPlayerInAnyVehicle(playerid))
{
if(PlayerInfo[playerid][pMaskuse] == 1)
{
ApplyAnimation(playerid,"PED","IDLE_CHAT",4.1,1,1,1,1,1);
SetTimer("parler",3000,0);
format(string, sizeof(string), "Etrangé dit: %s", result);
ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
}
else
{
ApplyAnimation(playerid,"PED","IDLE_CHAT",4.1,1,1,1,1,1);
SetTimer("parler",3000,0);
format(string, sizeof(string), "%s dit: %s", sendername, result);
ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
}
}
Le soucis c'est que, le timer se repete en boucle, et l'anim viens jamais :/
Mon deuxieme soucis vient du fait que je veux placer un train pour l'enregistrer en temps que bot, mais il ne se spawn pas avec le debug, quand je l'ajoute sur le script, il ne se crée pas...
Y a t-il une fonction particuliere pour que le train sois crée?
+Lychaos++Ster+
-
pour le timer essaye avec SettimerEx
pour le train verifie bien qu'il soit en AddStaticVehicle et non en createVehicle
-
Oui effectivement, le train marche maintenant ;)
Mais l'animation quand on parle.... Non, je parle, il ne se passe rien sauf le timer en boucle tout les 4 seconde, je vais esseyer avec un SetTImerEx.
Mais pour l'anim, vous savez pourquoi elle ne s'affiche pas?