Bonjour tout le monde;
Je suis tout nouveau sur Skript et je me suis lancé comme projet de faire un mini-jeu. Vous connaissez certainement le serveur Hypixel avec sa partie "arcade". Je me suis mis à faire le jeu où il faut "claim" le plus de bloc avec sa houe.
Pour ceux qui ne connaissent pas, voici le principe du jeu : vous arrivez dans une arène et vous avez avec vous une houe. Le but est simple, clique droit sur le sol pour transformer ce bloc en votre bloc de laine. Vous ne pouvez transformer un bloc uniquement si un bloc de couleur vous appartient sur les côtés. La partie se finit lorsque l'arène est pleine et/ou quand le timer est à zéro.
J'ai ainsi renommé le mini-jeu Wexp (pour Wool Expand, aller savoir pourquoi...).
Je viens ici pour vous faire part de mon projet et de mes avancements.
[spoiler=Voici mon skript (attention au pavé)]
#----- VARRIABLES
variables:
{number.player} = 0
{wool.%player%} = wool
{woolcolor.%player%} = 0
{woolblock.%player%} = 0
#----------#----------#----------#----------#
# #
# Conditions #
# #
#----------#----------#----------#----------#
#-- Quand joueur clique sur le panneau
on click on sign:
if line 1 of clicked block is "[Wexp]":
if line 2 of clicked block is "Arena":
send "Tu as cliqué sur le panneau" to player
#-- Quand - de 4 joueurs
if {number.player} < 4:
set line 3 to "Event ouvert !"
add 1 to {number.player}
set line 4 to "%{number.player}%/4"
#-- Couleur de la laine
add 1 to {woolcolor.%player%}
set data value of {wool.%player%} to {woolcolor.%player%}
give a diamond hoe to player
send "Tu es téléporté à l'arène !"
execute console command "/warp wexparena %player%"
#-- Quand + de 4 joueurs
if {number.player} >= 4:
execute console command "/wexpclose"
set line 3 to "Event full !"
on rightclick on mycelium with any hoe:
if player is in "woolexpworld":
if player is holding diamond hoe:0:
set clicked block to {wool.%player%}
damage tool by 1
add 1 to {woolblock.%player%}
block east is {wool.%player%}:
set clicked block to {wool.%player%}
add 1 to {woolblock.%player%}
block west is {wool.%player%}:
set clicked block to {wool.%player%}
add 1 to {woolblock.%player%}
block south is {wool.%player%}:
set clicked block to {wool.%player%}
add 1 to {woolblock.%player%}
block north is {wool.%player%}:
set clicked block to {wool.%player%}
add 1 to {woolblock.%player%}
#----------#----------#----------#----------#
# #
# Commandes #
# #
#----------#----------#----------#----------#
#-- Quand l'event est fermé ou full
command /wexpclose:
description: Ferme l'event wool exp CONSOLE COMMAND
permission: skript.wexpclose.woolexp
trigger:
broadcast "Event fermé ou full"
execute console command "/wexmatch"
#-- Quand le mini jeu est finis
command /wexpfinish:
description: Ferme l'event quand il est finis et lance le reset CONSOLE COMMAND
permission: skript.wexpfinsh.woolexp
trigger:
broadcast "Event finis, reset en cours"
execute console command "/wexpreset"
#-- Reset de la map + variables
command /wexpreset:
description: Reset l'event wool exp CONSOLE COMMAND
permission: skript.wexpreset.woolexp
trigger:
set {number.player} to 0
set {wool.%player%} to wool
set {woolcolor.%player%} to 0
broadcast "Event reset !"
loop all players:
send "slt" to loop-player
execute console command "/warp signwexp %loop-player%"
#-- Première commande quand le match commence, compteur
command /wexpmatch:
permission: skript.wexpreset.woolexp
trigger:
broadcast "Le match commence ! Il vous reste 60 secondes"
wait 30 seconds
broadcast "Il vous reste 30 secondes"
wait 20 seconds
broadcast "Il vous reste 10 secondes"
wait 5 seconds
broadcast "Il vous reste 5 secondes"
wait 1 seconds
broadcast "Il vous reste 4 secondes"
wait 1 seconds
broadcast "Il vous reste 3 secondes"
wait 1 seconds
broadcast "Il vous reste 2 secondes"
wait 1 seconds
broadcast "Il vous reste 1 secondes"
wait 1 seconds
broadcast "Le match est finis"
execute console command "/wexpfinish"
Ce que fait actuellement le script :
- lorsque clique sur un panneau, Tp le joueur
- Au bout de 4 joueurs, ferme l'arène (et devrait commencer le match ... :eek:)
- Timer fini mais pas super
Ce qui me manque :
- le système de comptage de point (je pense utiliser le nombre de blocs placés par chaque joueur, mais le souci c'est que je ne sais pas lier une variable à un joueur puis la recracher sur le chat (ou scoreboard).
- Surement d'autre chose...
Mes questions :
- comment faire justement pour dire que tel joueur a placé tel nombre de blocs ?
- Vous avez une solution pour ce qui est des scoreboards qui clignote ? j'ai vu une solution mais pas encore testée ;
[spoiler=Code à test]
loop all players in world "kitpvpkillingfields":
{board.up.%loop-player%} is not set:
set {board.up.%loop-player%.kp} to false
#if the variable is not set up... it sets the variable so that way it will force the board to display correctly
{board.up.%loop-player%.kp} is true:
make score of "&cDeaths:" in board of loop-player to {deaths.%loop-player%.kit}
make score of "&aKills:" in board of loop-player to {kills.%loop-player%.kit}
make score of "&aKillstreak:" in board of loop-player to {killstreak.%loop-player%}
make score of "&aAssists:" in board of loop-player to {assist.%loop-player%.kp}
make score of "&eBounty:" in board of loop-player to {value.%loop-player%.kit.live}
make score "&aTickets:" in board of loop-player to loop-player's balance
set {board.up.%loop-player%.sb} to false
#notice the lack of move board expression?
#if the board is not there it will then execute this
{board.up.%loop-player%.kp} is false:
display board named "&9&lKP &9Stats" to loop-player
make score of "&cDeaths:" in board of loop-player to {deaths.%loop-player%.kit}
make score of "&aKills:" in board of loop-player to {kills.%loop-player%.kit}
make score of "&aKillstreak:" in board of loop-player to {killstreak.%loop-player%}
make score of "&aAssists:" in board of loop-player to {assist.%loop-player%.kp}
make score of "&eBounty:" in board of loop-player to {value.%loop-player%.kit.live}
make score "&aTickets:" in board of loop-player to loop-player's balance
set {board.up.%loop-player%.sb} to false
set {board.up.%loop-player%.kp} to true
move display of loop-player to "sidebar"
#now only if the board was not there... it will then move the display
trouvable ici [Contenu masqué]
- Et je n'ai pas vraiment vérifié, mais une commande Skript peut pas en exécuter une autre ? Quand je /wexpclose le match ne commence pas, alors que normalement si :(
Il me semble avoir posé tous mes problèmes, si vous voyez des trucs à corriger, à me conseiller n'hésité pas ! Merci pour tout d'avance, et bon code :)
Nosh,
Avec une idée originale du serveur Hypixel