Aller au contenu
  • 0

Finir Skript 1V1


Question

Posté(e)

Bonjour,

Je suis en train de faire un skript (j'ai refait le script qui a bugé avec NUL NUL NUL etc... pour ceux qui l'ont vu)

Mais je ne sais pas comment le finir (téléporter deux joueurs qui ont une variable activé).

Et juste, si vous pouvez me dire s'il manque des trucs important ou il y a un problème de variable etc... dans mon script sa serait sympa =)

Merci

 

on load:
   add 1 to {1v1.reload}
   wf "[%now%] Reload " to "plugins/1v1/logs.yml"
   wf "[%now%] Reload %{1v1.reload}%" to "plugins/1v1/reload.yml"
   if folder "plugins/1v1" doesn't exists:
       create folder "plugins/1v1"
       create file "plugins/1v1/locations.yml"
       create file "plugins/1v1/logs.yml"
       create file "plugins/1v1/reload.yml"

   if file "plugins/1v1/locations.yml" doesn't exists:
       create file "plugins/1v1/locations.yml"

   if file "plugins/1v1/logs.yml" doesn't exists:
       create file "plugins/1v1/logs.yml"

   if file "plugins/1v1/reload.yml" doesn't exists:
       delete {1v1.reload}
       wait 1 tick
       create file "plugins/1v1/reload.yml"

options:
   prefix: &6[1VS1]&r
   prefixA: &4&l[ADMIN &r&61VS1&4&l]&r
   perm: "1v1.admin"
   permmsg: &cTu ne peux pas faire cette commande !


command /1vs1-admin [<text>] [<text>] [<text>]:
   permission: {@perm}
   permission message: {@permmsg}
   trigger:
       if arg-1 is set:
           if arg-1 is "setlobby":
               if arg-2 is not set:
                   delete {1v1.lobby.x}
                   delete {1v1.lobby.y}
                   delete {1v1.lobby.z}
                   set {1v1.lobby.x} to x-coordinate of player
                   set {1v1.lobby.y} to y-coordinate of player
                   set {1v1.lobby.z} to z-coordinate of player
                   send "{@prefixA} Lobby set : &a%{1v1.lobby.x}% %{1v1.lobby.y}% %{1v1.lobby.z}%"
                   wf "[%now%] Lobby Set !" to "plugins/1v1/logs.yml"
                   wf "[%now%] Lobby Set :" to "plugins/1v1/locations.yml"
                   wf "%{1v1.lobby.x}% %{1v1.lobby.y}% %{1v1.lobby.z}%" to "plugins/1v1/locations.yml"
           else if arg-1 is "addarene":
               if arg-2 is not set:
                   if {1v1.arene} is not set:
                       add 1 to {1v1.arene}
                       set {1v1.arene%{1v1.arene}%.x} to x-coordinate of player
                       set {1v1.arene%{1v1.arene}%.y} to y-coordinate of player
                       set {1v1.arene%{1v1.arene}%.z} to z-coordinate of player
                       send "{@prefixA} &aArène %{1v1.arene}% set "

                   else:
                       add 1 to {1v1.arene}
                       set {1v1.arene%{1v1.arene}%.x} to x-coordinate of player
                       set {1v1.arene%{1v1.arene}%.y} to y-coordinate of player
                       set {1v1.arene%{1v1.arene}%.z} to z-coordinate of player
                       send "{@prefixA} &aArène %{1v1.arene}% set "
                       wf "[%now%] Arène %{1v1.arene}% crée" to "plugins/1v1/logs.yml"
                       wf "[%now%] Arène %{1v1.arene}% crée" to "plugins/1v1/locations.yml"
                       wf "%{1v1.arene%{1v1.arene}%.x}% %{1v1.arene%{1v1.arene}%.y}% %{1v1.arene%{1v1.arene}%.z}%" to "plugins/1v1/locations.yml"
                       wf "" to "plugins/1v1/locations.yml"
               else:
                   send "{@prefixA} &cInutile de mettre %arg-2%"
                   add 1 to {1v1.arene}
                   set {1v1.arene%{1v1.arene}%.x} to x-coordinate of player
                   set {1v1.arene%{1v1.arene}%.y} to y-coordinate of player
                   set {1v1.arene%{1v1.arene}%.z} to z-coordinate of player
                   send "{@prefixA} &aArène %{1v1.arene}% set "
                   wf "[%now%] Arène %{1v1.arene}% crée" to "plugins/1v1/logs.yml"
                   wf "[%now%] Arène %{1v1.arene}% crée" to "plugins/1v1/locations.yml"
                   wf "%{1v1.arene%{1v1.arene}%.x}% %{1v1.arene%{1v1.arene}%.y}% %{1v1.arene%{1v1.arene}%.z}%" to "plugins/1v1/locations.yml"
                   wf "" to "plugins/1v1/locations.yml"
           else if arg-1 is "settp":
               if arg-2 is set:
                   if arg-3 is "1" or "2":
                       set {1vs1.tp.%arg-2%.%arg-3%} to player's location
                       set {1v1.arene%arg-2%.%arg-3%.x} to x-coordinate of player
                       set {1v1.arene%arg-2%.%arg-3%.y} to y-coordinate of player
                       set {1v1.arene%arg-2%.%arg-3%.z} to z-coordinate of player
                       wf "[%now%] Spawn %arg-3% créer à l'arène %arg-2% " to "plugins/1v1/logs.yml"
                       wf "[%now%] Spawn %arg-3% créer à l'arène %arg-2% (player's location)" to "plugins/1v1/locations.yml"
                       wf "%{1v1.arene%{1v1.arene}%.x}% %{1v1.arene%{1v1.arene}%.y}% %{1v1.arene%{1v1.arene}%.z}%" to "plugins/1v1/locations.yml"
                       wf "" to "plugins/1v1/locations.yml"
                   else:
                       send "{@prefixA} &cArg-3 doit être 1 OU 2"                   


           if arg-1 is "delete" or "clear":
               if arg-2 is "all":
                   send "{@prefixA} &cTous les Fichiers sont détruit"
                   delete file "plugins/1v1/locations.yml"
                   delete file "plugins/1v1/logs.yml"
                   delete file "plugins/1v1/reload.yml"
                   delete {1v1.lobby.x}
                   delete {1v1.lobby.y}
                   delete {1v1.lobby.z}
                   delete {1v1.reload}
                   delete {1v1.lobby.x}
                   delete {1v1.lobby.y}
                   delete {1v1.lobby.z}
               if arg-2 is "location" or "locations":
                   send "{@prefixA} &cLe fichier Locations a été détruit"
                   delete file "plugins/1v1/locations.yml"
               if arg-2 is "logs" or "log":
                   delete file "plugins/1v1/logs.yml"
                   send "{@prefixA} &cLe fichier Logs a été détruit"
               if arg-2 is "reload" or "rl" or "reloads":
                   send "{@prefixA} &cLe fichier Reload a été détruit"
                   delete file "plugins/1v1/reload.yml"
                   delete {1v1.reload}
               if arg-2 is "var" or "variable" or "variables" or "vars":
                   send "{@prefixA} &cVariables détruites"
                   delete {1v1.lobby.x}
                   delete {1v1.lobby.y}
                   delete {1v1.lobby.z}
                   delete {1v1.reload}
               if arg-2 is "arenes" or "arene":
                   delete {1v1.arene1.x}
                   delete {1v1.arene1.y}
                   delete {1v1.arene1.z}
                   delete {1v1.arene2.x}
                   delete {1v1.arene2.y}
                   delete {1v1.arene2.z}
                   delete {1v1.arene3.x}
                   delete {1v1.arene3.y}
                   delete {1v1.arene3.z}
                   delete {1v1.arene4.x}
                   delete {1v1.arene4.y}
                   delete {1v1.arene4.z}


command /1vs1 [<player>]:
   trigger:
       if arg-1 is not set:
           send "{@prefix} &cMets un joueur !"
       else:
           set {1v1.%player%.play} to true
           loop all players:
               if {1v1.%loop-player%.play} is true:














11 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Je te conseil de mettre "else if" aux lignes 11, 14 et 17.

  • 0
Posté(e)
Je te conseil de mettre "else if" aux lignes 11, 14 et 17.

 

Tous les tests sont censés s'exécuter dans son plugin, pas juste un seul comme avec des else if. Ou alors, faudrait mettre les if des lignes 11, 14 et 17 derrière un unique else puisque effectivement ils n'ont pas besoin de s'exécuter si le if de la ligne 5 répond positivement. Genre comme ça :

    if folder "plugins/1v1" doesn't exists:
       create folder "plugins/1v1"
       create file "plugins/1v1/locations.yml"
       create file "plugins/1v1/logs.yml"
       create file "plugins/1v1/reload.yml"
   else:
      if file "plugins/1v1/locations.yml" doesn't exists:
       create file "plugins/1v1/locations.yml"

      if file "plugins/1v1/logs.yml" doesn't exists:
       create file "plugins/1v1/logs.yml"

      if file "plugins/1v1/reload.yml" doesn't exists:
       delete {1v1.reload}
       wait 1 tick
       create file "plugins/1v1/reload.yml"

 

Sinon, au lieu de forcer à mettre un joueur dans la commande /1v1, tu pourrais mettre par défaut celui qui tape la commande.

command /1v1 <player=player>:

 

Aussi, tu as mis %player% partout dans cette même commande au lieu de arg-1. Comme tu l'as fait, ça va systématiquement activer la variable du joueur qui tape la commande, et pas celle du joueur que tu as désigné.

 

Et pour la fin, ça dépend comment tu as organisé tes arènes, j'ai pas regardé la commande admin.

  • 0
Posté(e)
sa change quoi <player=player> ?

 

C'est comme un argument normal, genre lui :

<player>

...sauf que tu lui donnes une valeur par défaut. C'est-à-dire que si tu ne mets rien quand tu tapes la commande, le plugin fait comme si tu avais mis la valeur par défaut, c'est-à-dire player :

<player=player>

De même, tu peux faire ça avec d'autres types d'arguments :

<integer=13>
<player=Blackmine57>
<entity type=creeper>

  • 0
Posté(e)

A ok, mais en faite je me suis fail avec le début du code,

mais par contre je sais pas comment faire pour choisir un joueur random qui a la variable {1v1.%loop-player%.play}

Et il y a un truc dans la console quand je reload le script :

[13:00:18 WARN]: [skript] Task #18 for Skript v2.1.2 generated an exception
java.lang.NoSuchMethodError: org.bukkit.Bukkit.getOnlinePlayers()[Lorg/bukkit/entity/Player;
       at ch.njol.skript.entity.EntityData.getAll(EntityData.java:451) ~[?:?]
       at ch.njol.skript.expressions.ExprEntities.get(ExprEntities.java:145) ~[?:?]
       at ch.njol.skript.expressions.ExprEntities.get(ExprEntities.java:1) ~[?:?]
       at ch.njol.skript.lang.util.SimpleExpression.getArray(SimpleExpression.java:101) ~[?:?]
       at ch.njol.skript.lang.util.SimpleExpression.iterator(SimpleExpression.java:304) ~[?:?]
       at ch.njol.skript.expressions.ExprEntities.iterator(ExprEntities.java:214) ~[?:?]
       at ch.njol.skript.lang.Loop.walk(Loop.java:85) ~[?:?]
       at ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:91) ~[?:?]
       at ch.njol.skript.lang.Trigger.execute(Trigger.java:53) ~[?:?]
       at ch.njol.skript.events.EvtPeriodical.execute(EvtPeriodical.java:94) ~[?:?]
       at ch.njol.skript.events.EvtPeriodical$1.run(EvtPeriodical.java:120) ~[?:?]
       at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftTask.run(CraftTask.java:71) ~[spigotmc.jar:git-Spigot-1e4dd71-5e5cf84]
       at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [spigotmc.jar:git-Spigot-1e4dd71-5e5cf84]
       at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:723) [spigotmc.jar:git-Spigot-1e4dd71-5e5cf84]
       at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:400) [spigotmc.jar:git-Spigot-1e4dd71-5e5cf84]
       at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:668) [spigotmc.jar:git-Spigot-1e4dd71-5e5cf84]
       at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:567) [spigotmc.jar:git-Spigot-1e4dd71-5e5cf84]
       at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
>

 

Et pourquoi ça ne marche pas :

teleport player at %{1v1.arene1.x}% %{1v1.arene1.y}% %{1v1.arene1.z}%

?

Erreur :

[13:09:33 INFO]: [skript] Reloading 1v1.sk...
[13:09:33 ERROR]: '%{1v1.arene1.x}% %{1v1.arene1.y}% %{1v1.arene1.z}%' is not an entity type (1v1.sk, line 153: teleport player at %{1v1.arene1.x}% %{1v1.arene1.y}% %{1v1.arene1.z}%')
[13:09:33 INFO]: [skript] Encountered 1 error while reloading 1v1.sk!

 

Alors que

send "%{1v1.arene1.x}% %{1v1.arene1.y}% %{1v1.arene1.z}%"

marche ?

  • 0
Posté(e)
Et pourquoi ça ne marche pas :
teleport player at %{1v1.arene1.x}% %{1v1.arene1.y}% %{1v1.arene1.z}%

 

Car l'évenement n'éxiste pas !

 

Tu peux faire

 

run player command "tp player %{1v1.arene1.x}% %{1v1.arene1.y}% %{1v1.arene1.z}%" as op

 

En gros le joueur execute la commande en tant qu'op, mais je ne sais pas si ça va créer des logs

 

Et send "....." marche, car c'est juste pas le même event .-.

  • 0
Posté(e)
Car l'évenement n'éxiste pas !

 

Si, mais c'est pas la bonne syntaxe. L'événement teleport utilise une position. Ce que t'as mis, c'est pas une position, c'est juste 3 entiers donc Skript a pas compris. Vaut mieux que tu définisses la position complète de ton arène et pas coordonnée par coordonnée.

  • 0
Posté(e)

A ok

Moi je pensais que c'est la syntaxe de player's location qui était mauvaise donc ... ^^

Marche pas :

[17:00:24 INFO]: [skript] Reloading 1v1.sk...
[17:00:25 ERROR]: '%{1v1.arene1.location}%' is not an entity type (1v1.sk, line 126: teleport player at %{1v1.arene1.location}%')
[17:00:25 INFO]: [skript] Encountered 1 error while reloading 1v1.sk!

Même erreur

×
×
  • 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.