• 05 Juillet 2025, 18:05:49


Auteur Sujet: Missions  (Lu 1640 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Falcon

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Missions
« 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.

Hors ligne spykerc8

  • *
  • 'The GTAOnline.fr GodFather'
  • Messages: 3821
    • Voir le profil
    • http://www.gtaonline.fr
Re : Missions
« Réponse #1 le: 29 Juin 2009, 15:04:15 »
Tu mets une variable quand le joueur s'inscrit. Quand tu lances le combat tu fais une boucle avec une condition correspondant à ta variable.

++


~ Leader honoraire de la FsK Team ~ -
~ Membre honoraire de la PCP Team ~

Co-fondateur de GTAO - Retraité de la communauté

"Nous ne sommes rien, soyons tout !"


Hors ligne Falcon

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Re : Missions
« Réponse #2 le: 29 Juin 2009, 15:28:38 »
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. 

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Missions
« Réponse #3 le: 29 Juin 2009, 16:14:02 »
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
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Falcon

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Re : Missions
« Réponse #4 le: 29 Juin 2009, 16:38:58 »
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.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Re : Missions
« Réponse #5 le: 29 Juin 2009, 17:15:39 »
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
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Falcon

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Re : Missions
« Réponse #6 le: 29 Juin 2009, 17:24:20 »
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+

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Missions
« Réponse #7 le: 30 Juin 2009, 01:50:18 »
Salut,

si tu veut connaitre les "opérateurs" (comme == et = ), regarde dans ma signature, j'en ai fais une liste avec leur utilisation

++Sim++





Hors ligne Falcon

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Re : Missions
« Réponse #8 le: 30 Juin 2009, 11:25:16 »
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.
« Modifié: 30 Juin 2009, 12:25:58 par Falcon »

Hors ligne Falcon

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Re : Missions
« Réponse #9 le: 02 Juillet 2009, 11:30:53 »
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.