Aller au contenu
  • 0

Problème avec les variables listes et contains


Question

Posté(e)

Bonjour les gens.

Je vous explique mon problème: je voudrais faire un skript qui permettrait au joueurs de rejoindre une des deux équipes que j'ai créer (Blue ou Red). Je veux faire en sorte qu'il ne peuvent pas rejoindre sans invitation si il y a déjà quelqu'un dans la team et je voudrais aussi limiter le nombre de joueurs à 3. J'utilise donc plusieurs fois l'expression "contains". Cela marche bien tant que je suis seul mais dès qu'il y a deux joueurs ça capote et il ne reconnaît plus que les joueurs sont dans la team.

Voilà mon code et ma version de skript est la 2.1.2:

command /team [<text>] [<player>]:
   permission: team.use
   permission message: &cVous ne pouvez pas utilisez cette commande dans ce monde !
   trigger:
       if arg-1 is "invite":
           if arg-2 is not set:
               send "&cUsage: /team invite <player>" to player
           if arg-2 is set:
               if {team.blue::*} contains player:
                   if {invite.team.blue}:
                       send "[&b&lTeam&r] Ce joueur a déjà été invité dans votre équipe." to player
                   else if {invite.team.red}:
                       send "&cLe joueur a déjà une invitation. Il doit d'abord la refuser avant de pouvoir en avoir une nouvelle." to player
                   else:
                       add arg-2 to {invite.team.blue::*}
                       send "[&b&lTeam&r] Le joueur %arg-2% a été invité à votre équipe." to player
                       send "[&b&lTeam&r] Vous avez été invité dans son équipe par %player%." to arg-2
                       send "[&b&lTeam&r] Tapez /team accept pour accepter son invitaion." to arg-2
                   else:
                       send "&cVous devez être dans une équipe pour inviter quelqu'un." to player

       if arg-1 is "revoke":
           if arg-2 is not set:
               send "&cUsage: /team revoke <player>" to player
           if arg-2 is set:
               if {team.blue::*} contains player:
                   remove arg-2 from {invite.team.blue::*}
                   send "[&b&lTeam&r] L'invitation de %arg-2% a été révoquée." to player
                   send "[&b&lTeam&r] Votre invitation a été révoquée par %player%." to arg-2

       if arg-1 is "accept":
           if {invite.team.blue::*} contains player:
               if size of {team.blue::*} is 3:
                   send "&cL'équipe est déjà pleine." to player
               else:
                   remove player from {team.blue::*}
                   remove player from {team.red::*}
                   remove player from {invite.team.blue::*}
                   add player to {team.blue::*}
                   send "[&b&lTeam&r] Vous avez rejoint Team Blue." to player
           if {invite.team.red::*} contains player:
               if size of {team.red::*} is 3:
                   send "&cL'équipe est déjà pleine." to player
               else:
                   remove player from {team.blue::*}
                   remove player from {team.red::*}
                   remove player from {invite.team.red::*}
                   add player to {team.red::*}
                   send "[&b&lTeam&r] Vous avez rejoint Team Red." to player
           else:
               send "[&b&lTeam&r] Vous n'avez pas d'invitation." to player

       if arg-1 is "deny":
           remove player from {invite.team.blue::*}
           remove player from {invite.team.red::*}
           send "[&b&lTeam&r] Vous avez refusé l'invitation." to player


       if arg-1 is "list":
           send "[&b&lTeam&r] Team Blue : %{team.blue::*}%" to player
           send "[&b&lTeam&r] Team Red : %{team.red::*}%" to player

       if arg-1 is "clear":
           if player have permission "team.admin":
               clear {team.blue::*}
               clear {team.red::*}
               send "[&b&lTeam&r] Équipes effacées." to player

       if arg-1 is "joinblue":
           if {team.blue::*} is set:
               send "&cVous ne pouvez pas rejoindre une équipe qui a déjà des membres sans y avoir été invité." to player
           else:
               remove player from {team.blue::*}
               remove player from {team.red::*}
               add player to {team.blue::*}
               send "[&b&:Team&r] Vous avez team Blue." to player
               send "[&b&lTeam&r] Utilisez /team invite pour inviter d'autres joueurs à vous rejoindre." to player
       if arg-1 is "joinred":
           if {team.red::*} is set:
               send "&cVous ne pouvez pas rejoindre une équipe qui a déjà des membres sans y avoir été invité." to player
           else:
               remove player from {team.blue::*}
               remove player from {team.red::*}
               add player to {team.red::*}
               send "[&b&:Team&r] Vous avez team Red." to player
               send "[&b&lTeam&r] Utilisez /team invite pour inviter d'autres joueurs à vous rejoindre." to player

on quit:
   remove player from {team.blue::*}
   remove player from {team.red::*}

 

Je crois que le problème vient du fait que j'utilise des variables listes mais je ne vois pas comment faire autrement.

 

Et sinon j'aimerais bien aussi savoir si il existe un moyen de sélectionner ceux présent dans une variable pour leur mettre un effect à la manière d'un @a[team=blue].

 

Merci les gens !

9 réponses à cette question

Messages recommandés

  • 0
Posté(e)

J'avais déjà essayer le code qui tu as mis @Natix35 mais il ne fonctionne pas non plus. Par contre je ne vois pas ce que tu entend par une variable en true/false. Tu pourrais donner une ou deux ligne de code pour expliquer ?

  • 0
Posté(e)

par exemple si le joueur rejoint l'équipe tu peux par exemple ajouter dans une variable list pour utiliser en affichage mais également part un ;

set {in.game.%player%} to true

et ensuite tu vérifie :

if {in.game.%player%} is true: 

tu peux aussi passer par des

set {in.game.%player%} to "&bBleu"
   if {in.game.%player%} is "&bBleu:"
       ...
   else if {in.game.%player%} is "&cRouge":

c'est moins optimisé mais fonctionne également

  • 0
Posté(e)

Bonsoir, Pour ton système de savoir qu'il y a plus ou moins de joueur je pense avoir la solution.

Je pense que l'on peux faire plus optimiser mais bon...

 

J'utilisait un système de variable nommé {partynumber.%player%} puis avec un if je regardais si elle était égal a 1, 2, 3... Cela prend beaucoup de place mais bon... Dans ton cas puisque tu ne peux pas l’attribué a un joueur je ne sais pas comment tu peux faire :/

 

J'aurai essayé de t'aider :p Bonne Chance

 

278deco

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.