GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Falcon le 29 Juin 2009, 14:57:45
-
Bonjour scripteurs.
Voilà que je me remets à SA:MP et, par la même occasion, aux joies du scripting.
En effet, je souhaiterai créer un Filterscript "Mission", dans laquelle 2 équipes s'affronteraient. L'équipe perd dés que tous ses membres sont tués. L'idée est plutôt simple, seulement, voilà :
Ce que j'arrive à faire :
- Quand un joueur tape la commande /mission, le joueur est inscrit (Joueurinscrit = true) et le nombre de participants augmente (NombreParticipants++)
Ce que je n'arrive pas à faire :
- Quand un joueur inscrit tape la commande /start, TOUS les joueurs inscrits sont téléportés vers une zone, et freezés jusqu'à ce que le compte à rebours soit écoulé.
Vous l'aurez compris, ce qui m'est difficile est de faire en sorte que TOUS les joueurs INSCRITS soient téléportés.
J'attends votre aide avec impatience, merci de me répondre.
Falcon.
-
Tu mets une variable quand le joueur s'inscrit. Quand tu lances le combat tu fais une boucle avec une condition correspondant à ta variable.
++
-
Merci de me répondre aussi rapidement,
Je comprends bien qu'il faut mettre une variable quand le joueur s'inscrit dans le /mission et la faire correspondre dans le /start mais je ne comprends pas comment on défini cette variable...
Concrétement, il faut remplacer le playerid n'est ce pas? (par exemple pour la fonction SetPlayerPosition). Mais que mettre à la place et comment définir que ce que tu mets à la place corresponds aux joueurs ayant entré la commande /mission?
Si tu pouvais m'expliquer un petit peu plus en détail, ce serait niquel. Merci.
-
un exemple
new missionok[MAX_PLAYERS]dans la commande de la mission
missionok[playerid]=1;puis dans la parti ou tout le monde doit etre teleporter
for(new i = 0; i <MAX_PLAYERS; i++)
{
if(missionok[i]==1)
{
SetPlayerPos(i,X,Y,Z);
}
}
voila a peu pret comme ceci
-
Merci beaucoup de ta réponse, c'est maintenant beaucoup plus clair. :D
Mais bon, à y être, je me permets d'abuser : si tu définis 2 équipes (par exemple Anglais et Allemands), et que tu veux que chaque équipe apparaisse à un endroit différent, faut-il définir 2 "i"?
PS : En tant que débutant, je ne suis sur de rien, mais il me semble que ce n'est pas " if(missionok==1) " mais " if(missionok=1) " . Non?
Merci encore de ta patience.
Falcon.
-
Merci beaucoup de ta réponse, c'est maintenant beaucoup plus clair. :D
Mais bon, à y être, je me permets d'abuser : si tu définis 2 équipes (par exemple Anglais et Allemands), et que tu veux que chaque équipe apparaisse à un endroit différent, faut-il définir 2 "i"?
dans ce cas soit tu peu refaire le meme code avec missionok2
PS : En tant que débutant, je ne suis sur de rien, mais il me semble que ce n'est pas " if(missionok==1) " mais " if(missionok=1) " . Non?
non car la sa dit si missionok est egal a 1 donc ==
si tu veut le = cest pour mettre la variable sur 1 pour le joueur qui tape la commande ce n'est pas la meme chose
-
Ah, ok.
Merci de m'avoir éclairé sur certain points.
Je vais essayer de progresser à nouveau et si je bloque, je laisse un post. ;)
A+
-
Salut,
si tu veut connaitre les "opérateurs" (comme == et = ), regarde dans ma signature, j'en ai fais une liste avec leur utilisation
++Sim++
-
Salut,
Ah, merci, c'est niquel, parce que j'admets avoir un peu du mal à comprendre la différence entre "==" et "=". Je regarderai à l'occasion.
Ceci étant dit, voilà que j'ai un autre problème avec ma mission.
Quand un joueur s'inscrit, soit il s'inscrit en 1er, 3eme, 5eme, ... et il est allemand soit il s'inscrit en 2nd, 4eme, 6eme, ... et il est anglais. Donc je définis : Anglais[playerid] = true; ou Allemand[playerid] = true;
Puis je définis en haut :
IsPlayerAllemand(playerid)
{
Allemand[playerid] = true;
return 0;
}
et de même pour anglais.
Quand ensuite, un joueur tape /go, la mission doit démarrer, donc je dis
if(IsPlayerAllemand(playerid) || IsPlayerAnglais(playerid))
{
OK
}
else(!IsPlayerAllemand(playerid) && !IsPlayerAnglais(playerid))
{
ERREUR
}
L'inscription marche niquel mais dés qu'un joueur (inscrit) entre la commande /go, le message d'erreur apparait.
Pouvez-vous m'aider s'il vous plaît?
Falcon
En définitive, j'ai réussi. Il ne fallait pas définir de IsPlayerAllemand et IsPlayerAnglais et ça fonctionne.
-
Scripteurs, bonjour.
Après pas mal de temps passé à essayer de scripter la mission pour laquelle vous m'aviez aidé, je l'ai hier essayé, et le verdict est tombé : elle ne fonctionne pas parfaitement.
En effet, les inscriptions se font, la mission se lance, mais elle ne se termine pas... ce qui fait qu'il n'y a pas de vainqueurs et qu'on ne peut pas relancer une mission derrière quand on est mort.
Je vous laisse là mon script.
Si quelqu'un pouvait me le regarder et me dire ce qui ne va pas, ce serait cool.
Merci, Falcon.