Aller au contenu

Question

Posté(e) (modifié)

(Vu que je ne peux pas mettre de message à la fin (le site bug avec la balise code) je vous remercie d'avance et je vous souhaite une bonne soirée!)

Bonjour !

J'ai commencé un skript de file d'attente. Je souhaiterai qu'en fonction des permissions qu'ont les joueurs (donc selon les rangs) ils aient une priorité plus ou moins importante dans ma file d'attente. C'est-à-dire que des admin seraient plus priorisés que des joueurs par exemple. D'ailleurs, j'ai une impression que mon skript est un peu brouillon avec des choses inutiles... Si vous en voyez, pouvez-vous me conseiller et me corriger ?

command /join:
	trigger:
		if {waiting.%player%} is false:
			set {waiting.%player%} to true
			add 1 to {wait-total}
			set {wait.%player%} to {wait-total}
			add player to {wait.file::*}
			send "&6[SkyWars]&f Vous avez rejoint la file d'attente avec &asuccès&f. &7(%{wait.%player%}%/%{wait-total}%)"
			send "&6[SkyWars]&f Votre priorité pour rejoindre le jeu est &enormale&f."

every seconds:
	loop {wait.file::*}:
		if {wait.%loop-value%} is equal to 1:
			remove loop-value from {wait.file::*}
			remove 1 from {wait-total}
			remove 1 from {wait.%loop-value%}
			set {waiting.%loop-value%} to false
			send "&6[SkyWars] &fTransfert en cours..." to loop-value
			make loop-value execute "/sw join"

every 10 seconds:
	loop all players:
		if {waiting.%loop-player%} is true:
			send "&6[SkyWars]&f Vous êtes actuellement dans la file d'attente. &7(%{wait.%loop-value%}%/%{wait-total}%)" to loop-value
		
on load:
	loop all players:
		set {waiting.%loop-player%} to false
		set {wait.%loop-player%} to 0
		set {wait-total} to 0

on join:
	if {waiting.%player%} is true:
		set {waiting.%player%} to false
		remove 1 from {wait-total}
[18:58:05 INFO]: This server is running Paper version git-Paper-624 (MC: 1.13.2) (Implementing API version 1.13.2-R0.1-SNAPSHOT)
[19:44:53 INFO]: [Skript] You're currently running the latest stable version of Skript.
Modifié par Romitou_

6 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Tu peut faire un truc comme sa

if player has permission "VIP" or "perm.staff":
   send "Priorité &eVIP"
   #Tu peut faire en sorte que soit sa le tp direct sans fils d attente ou sa lui met en file d attente et que au bout de 10 secondes sa le tp
else:
   send "Priorité &bJoueur"
   #la suite que ta fait

 

  • 0
Posté(e)

Bonsoir,

 

on load:
	#Espace de déclaration des priorités
	# -> Liste des permission attestant de la possession du grade, avec le même index pour la valeur correspondante dans {wait::priority::<index>}
	set {wait::permissions::*} to "VIP", "VIP+" and "ADMIN" 
	set {wait::priority::*} to 0.6, 0.4 and 0
	#VIP a une priorité de 0.6; VIP+ a une priorité de 0,4  ; ADMIN a une priorité de 0
	
	#Echelle de priorité (temps d'attente)
	
	#	1					    0.5					 0
	#   |-----------------------|--------------------|
	#	Normal   			2* Plus rapide			Instantané
	
	# Valeurs /100 [donc comprise entre 0 et 1]
	# ex: pour 40% -> 0.4
	
	#Note 1: une priorité -1 fait échapper au système de file d'attente
	#Note 2: une priorité de 0 insère le joueur en premier dans  la file d'attente (remarque: différent  de la note 1)
	#Note 3: La priorité d'un joueur n'ayant aucune permission associée à la file d'attente est de 1.
	
	#Ex: Un joueur a une priorité de 0.4. Il y a 100 joueurs en file d'attente, et il la rejoint. Le joueur sera inséré à la place correspondant approximativement à 40% de la liste
	#d'attente, c'est à dire 41ème sur 101 (le joueur vient dtre inséré).
	
	#PERMISSION à ajouter aux groupes:
	# "wait.<nom du groupe>"
	# <nom du groupe> -> Celui indiqué dans {wait::permissions::*} ci-dessus.

function PriorityNumber(s: integer, value: number) :: number:
	set {_d} to floor({_value} * {_s})
	return {_d}
function PriorityFind(p: player) :: objects:
	loop {wait::permissions::*}:
		set {_n} to 1
		if {_p} has permission "wait.%loop-value%":
			if {wait::priority::%loop-index%} < {_n}:
				set {_n} to {wait::priority::%loop-index%}
				set {_r} to loop-value
	if {_n} is not set:
		return "Default" and 1  #Priorité basique
	return {_r} and {_n}
function ListPart(type: integer, value: integer) :: objects:
	if {_type} = 0: #First
		loop {wait.file::*}:
			if (loop-index parsed as integer) <= {_value}:
				add loop-value to {_sort::*}
	if {_type} = 1: #Last
		loop {wait.file::*}:
			if difference between (loop-index parsed as integer) and size of {wait.file::*} <= {_value}:
				add loop-value to {_sort::*}
	return {_sort::*}
command /join:
	trigger:
		if size of ({wait.file::*} where [player input is player]) = 0:
			set {_w::*} to PriorityFind(player)
			set {_q} to size of {wait.file::*}
			set {_cut} to PriorityNumber({_q}, {_w::2})
			if {_w::2} = -1:
				send "&6[SkyWars] &fTransfert en cours..."
				make player execute "/sw join"
				stop
			else if {_w::2} = 1:
				set {wait.file::*} to {wait.file::*} and player
				send "&6[SkyWars]&f Vous avez rejoint la file d'attente avec &asuccès&f. &7(%size of {wait.file::*}%/%size of {wait.file::*}%)"
			else:
				set {_start::*} to ListPart(0, {_cut})
				set {_r} to {_q} - {_cut}
				set {_end::*} to ListPart(1, {_r})
				#La liste est séparée en deux
				set {wait.file::*} to {_start::*} and player and {_end::*}
				#Puis recomposée
				send "&6[SkyWars]&f Vous avez rejoint la file d'attente avec &asuccès&f. &7(%{_cut} + 1%/%size of {wait.file::*}%)"
			send "&6[SkyWars]&f Votre priorité pour rejoindre le jeu est &e-%{_w::1}%&f."
		else:
			send "§c Vous êtes déjà en liste d'attente."
every seconds:
	set {_p} to {wait.file::1}
	remove {wait.file::1} from {wait.file::*}
	set {wait.file::*} to {wait.file::*} #List Update
	send "&6[SkyWars] &fTransfert en cours..." to {_p}
	make {_p} execute "/sw join"
every 10 seconds:
	loop {wait.file::*}:
		send "&6[SkyWars]&f Vous êtes actuellement dans la file d'attente. &7(%loop-index%/%size of {wait.file::*}%)" to loop-value
on quit:
	remove player from {wait.file::*}
	set {wait.file::*} to {wait.file::*} #List Update

N'hésitez pas concernant toute question à propos du code (Code non testé en conditions réelles).

  • J'aime 1
  • Merci 1
  • 0
Posté(e) (modifié)
Il y a 16 heures, superrtutur a dit :

Tu peut faire un truc comme sa


if player has permission "VIP" or "perm.staff":
   send "Priorité &eVIP"
   #Tu peut faire en sorte que soit sa le tp direct sans fils d attente ou sa lui met en file d attente et que au bout de 10 secondes sa le tp
else:
   send "Priorité &bJoueur"
   #la suite que ta fait

 

Merci beaucoup pour cela, j'y avais déjà pensé et je l'appliquerais en dernier recours car je souhaiterai une file d'attente intelligente ! 🙂 Merci

 

 

Il y a 14 heures, Rush2Fer a dit :

Bonsoir,

  Révéler le contenu masqué

 



on load:
	#Espace de déclaration des priorités
	# -> Liste des permission attestant de la possession du grade, avec le même index pour la valeur correspondante dans {wait::priority::<index>}
	set {wait::permissions::*} to "VIP", "VIP+" and "ADMIN" 
	set {wait::priority::*} to 0.6, 0.4 and 0
	#VIP a une priorité de 0.6; VIP+ a une priorité de 0,4  ; ADMIN a une priorité de 0
	
	#Echelle de priorité (temps d'attente)
	
	#	1					    0.5					 0
	#   |-----------------------|--------------------|
	#	Normal   			2* Plus rapide			Instantané
	
	# Valeurs /100 [donc comprise entre 0 et 1]
	# ex: pour 40% -> 0.4
	
	#Note 1: une priorité -1 fait échapper au système de file d'attente
	#Note 2: une priorité de 0 insère le joueur en premier dans  la file d'attente (remarque: différent  de la note 1)
	#Note 3: La priorité d'un joueur n'ayant aucune permission associée à la file d'attente est de 1.
	
	#Ex: Un joueur a une priorité de 0.4. Il y a 100 joueurs en file d'attente, et il la rejoint. Le joueur sera inséré à la place correspondant approximativement à 40% de la liste
	#d'attente, c'est à dire 41ème sur 101 (le joueur vient dtre inséré).
	
	#PERMISSION à ajouter aux groupes:
	# "wait.<nom du groupe>"
	# <nom du groupe> -> Celui indiqué dans {wait::permissions::*} ci-dessus.

function PriorityNumber(s: integer, value: number) :: number:
	set {_d} to floor({_value} * {_s})
	return {_d}
function PriorityFind(p: player) :: objects:
	loop {wait::permissions::*}:
		set {_n} to 1
		if {_p} has permission "wait.%loop-value%":
			if {wait::priority::%loop-index%} < {_n}:
				set {_n} to {wait::priority::%loop-index%}
				set {_r} to loop-value
	if {_n} is not set:
		return "Default" and 1  #Priorité basique
	return {_r} and {_n}
function ListPart(type: integer, value: integer) :: objects:
	if {_type} = 0: #First
		loop {wait.file::*}:
			if (loop-index parsed as integer) <= {_value}:
				add loop-value to {_sort::*}
	if {_type} = 1: #Last
		loop {wait.file::*}:
			if difference between (loop-index parsed as integer) and size of {wait.file::*} <= {_value}:
				add loop-value to {_sort::*}
	return {_sort::*}
command /join:
	trigger:
		if size of ({wail.file::*} where [player input is player]) = 0:
			set {_w::*} to PriorityFind(player)
			set {_q} to size of {wail.file::*}
			set {_cut} to PriorityNumber({_q}, {_w::2})
			if {_w::2} = -1:
				send "&6[SkyWars] &fTransfert en cours..."
				make player execute "/sw join"
				stop
			else if {_w::2} = 1:
				set {wail.file::*} to {wail.file::*} and player
				send "&6[SkyWars]&f Vous avez rejoint la file d'attente avec &asuccès&f. &7(%size of {wait.file::*}%/%size of {wait.file::*}%)"
			else:
				set {_start::*} to ListPart(0, {_cut})
				set {_r} to {_q} - {_cut}
				set {_end::*} to ListPart(1, {_r})
				#La liste est séparée en deux
				set {wail.file::*} to {_start::*} and player and {_end::*}
				#Puis recomposée
				send "&6[SkyWars]&f Vous avez rejoint la file d'attente avec &asuccès&f. &7(%{_cut} + 1%/%size of {wait.file::*}%)"
			send "&6[SkyWars]&f Votre priorité pour rejoindre le jeu est &e-%{_w::1}%&f."
		else:
			send "§c Vous êtes déjà en liste d'attente."
every seconds:
	set {_p} to {wait.file::1}
	remove {wait.file::1} from {wait.file::*}
	set {wait.file::*} to {wait.file::*} #List Update
	send "&6[SkyWars] &fTransfert en cours..." to {_p}
	make {_p} execute "/sw join"
every 10 seconds:
	loop {wail.file::*}:
		send "&6[SkyWars]&f Vous êtes actuellement dans la file d'attente. &7(%loop-index%/%size of {wait.file::*}%)" to loop-value
on quit:
	remove player from {wait.file::*}
	set {wait.file::*} to {wait.file::*} #List Update

N'hésitez pas concernant toute question à propos du code (Code non testé en conditions réelles).

Un énorme merci pour tout ce bout de code ! 🙂 😮
Merci beaucoup, je vais essayer de comprendre le Skript et de voir s'il fonctionne, je vérifie de suite, mais en tout cas un gros merci beaucoup pour ce Skript c'est génial !  ^^

J'ai juste une erreur lors que je fais /join (après avoir ajouté les perms) :

image.png.82e8ed68139e1025b6e1f624b0174fda.png

J'ai de même remarqué que quand j’exécute /join le joueur n'est pas ajouté à la wait.file (ou alors j'ai mal compris le skript) et ça ne se réinitialise pas à la déconnexion :
image.png.1c6e4bb5738869f8c554971bd8c29329.png

Je suis vraiment désolé de n'avoir pas pu résoudre le problème seul car je suis débutant et je ne comprends pas trop le début du Skript ^^

Encore merci !

Modifié par Romitou_
  • 0
Posté(e)
Il y a 3 heures, Romitou_ a dit :

Merci beaucoup pour cela, j'y avais déjà pensé et je l'appliquerais en dernier recours car je souhaiterai une file d'attente intelligente ! 🙂 Merci

 

 

Un énorme merci pour tout ce bout de code ! 🙂 😮
Merci beaucoup, je vais essayer de comprendre le Skript et de voir s'il fonctionne, je vérifie de suite, mais en tout cas un gros merci beaucoup pour ce Skript c'est génial !  ^^

J'ai juste une erreur lors que je fais /join (après avoir ajouté les perms) :

image.png.82e8ed68139e1025b6e1f624b0174fda.png

J'ai de même remarqué que quand j’exécute /join le joueur n'est pas ajouté à la wait.file (ou alors j'ai mal compris le skript) et ça ne se réinitialise pas à la déconnexion :
image.png.1c6e4bb5738869f8c554971bd8c29329.png

Je suis vraiment désolé de n'avoir pas pu résoudre le problème seul car je suis débutant et je ne comprends pas trop le début du Skript ^^

Encore merci !

Bonsoir, c'est simplement une faute de frappe, j'ai écrit "wail" au lieu de "wait" pour la variable list {wait.file::*}.
Je vous invite à effectuer les changements 😉

  • Merci 1
  • 0
Posté(e) (modifié)
Il y a 2 heures, Rush2Fer a dit :

Bonsoir, c'est simplement une faute de frappe, j'ai écrit "wail" au lieu de "wait" pour la variable list {wait.file::*}.
Je vous invite à effectuer les changements 😉

D'accord, c'était pourtant bête j'aurais pu trouver seul, grand merci à vous 😉
J'essaye de suite

Merci ! Tout fonctionne !

Modifié par Romitou_
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • 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.