Aller au contenu
  • 0

Compteur de temps passé sur un serveur


Question

Posté(e)

Bonjour tout le monde!

Je sollicite votre aide car je prépare un skript pour un compteur (en secondes, minutes, heures, jours, semaines) du temps passé par un joueur sur le serveur.

Voilà le code (en bas du skript, c'est un skript de statistiques pour ceux qui sont intéressés). Le fichier est bien "pex.sk".

 

J'ai bossé plusieurs jours dessus déjà, et je ne comprends pas certains dysfonctionnements! Je vous envoie donc le skript avec ce message. Merci à vous!

PS: je possède la dernière version de skript, j'utilise la 1.8.9, et merci à vous!

(Je sais, j'ai repris la même structure de message que pour mon skript de oneshot ^^ )

pex.sk

14 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Car je suis un amoureux du PVP 1.7/1.8, mais la 1.8 est plus pratique pour la redstone ? 

Sinon, on récupère où la version exacte stp?

erreurs de la console

[15:03:28 INFO]: [Skript] Reloading the config and all scripts...                                                       [15:03:28 INFO]: Loaded a total of 11504 english aliases                                                                [15:03:28 WARN]: There are no aliases defined for the following ids: 165, 166, 167, 168, 169, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 409, 410, 411, 412, 413, 414, 415, 416, 423, 424, 425, 427, 428, 429, 430, 431                                                                              [15:03:29 ERROR]: There's no player in a periodical event (pex.sk, line 40: add 1 to {global.time.second.%player's uuid%}')                                                                                                                     [15:03:29 ERROR]: There's no player in a periodical event (pex.sk, line 42: if {global.time.second.%player's uuid%} > 59:')                                                                                                                     [15:03:29 ERROR]: There's no player in a periodical event (pex.sk, line 46: if {global.time.minute.%player's uuid%} > 59:')                                                                                                                     [15:03:29 ERROR]: There's no player in a periodical event (pex.sk, line 50: if {global.time.hour.%player's uuid%} > 23:')                                                                                                                       [15:03:29 ERROR]: There's no player in a periodical event (pex.sk, line 54: if {global.time.day.%player's uuid%} > 7:') [15:03:29 INFO]: Loaded 13 scripts with a total of 28 triggers and 43 commands in 0.56 seconds                          [15:03:29 INFO]: [Skript] Encountered 5 errors while reloading the config and all scripts! 

  • 0
Posté(e)
il y a 2 minutes, Kilterra a dit :

on join:
	if {list.joueur.date.arrive::%player%} isn't set:
		set {list.joueur.date.arrive::%player%} to now

quand tu veux utiliser le temp tu a juste à utiliser "difference between {list.joueur.date.arrive::joueur} and now"

D'accord, merci beaucoup de ton aide!

  • 0
Posté(e)

Je ne sais pas si ça été mis à jour, mais de ce que j'ai vu dans ta dernière version que tu as envoyé (ton pex.sk) j'ai vu que tu utilisais un "every second", mais c'est inutile avec le code qu'a donné @Kilterra.

Voici une version de code améliorée:

on join:
	set {temps.%UUID of player%} to now

on quit:
	set {_diff} to difference between {temps.%UUID of player%} and now
	add {_diff} to {temps-total.%UUID of player%}
	delete {temps.%UUID of player%}

command /temps-de-jeu:
	trigger:
		send "%{temps-total.%UUID of player%}%"

La variable {temps-total.%UUID of player%} contient donc le temps de jeu. (Et c'est en anglais, mais ça peut se changer facilement. Et c'est à virgule. Pareil, ça peut se changer.)

  • 0
Posté(e)

J'vais modifier mon code alors de façon à ce que ça colle à ce que tu dis:

on join:
	set {temps::%UUID of player%} to now

on quit:
	add (difference between {temps.%UUID of player%} and now) to {temps-total::%UUID of player%}
	delete {temps::%UUID of player%}

command /temps-de-jeu:
	trigger:
		send "%{temps-total::%UUID of player%}%"

Et ça fait quoi en plus de mettre mes variables sous forme de liste (temps::%UUID of player% par exemple) ?

  • 0
Posté(e) (modifié)

Le problème avec ceci est que lorsqu'on tape la commande, on obtient toujours la même réponse. Il faudrait donc un système de mise à jour comme ceci :

on join:
	set {connection.%player%} to now

on quit:
	add difference between {connection.%player%} and now to {time.%player%}
	# Il n'y a pas besoin de supprimer la variable {connection.%player%} car elle automatiquement réinitialisée à chaque connexion du joueur.

command /temps:
	trigger:
		set {_time} to difference between {connection.%player%} and now
		if {time.%player%} is set:
			add {time.%player%} to {_time}
		send "Temps passé sur le serveur (en anglais) : %{_time}%." to the player

 

Modifié par PlayScripts
  • 0
Posté(e)
function timeToFrench(time: timespan) :: text:
	set {_time} to "%{_time}%"
	set {_words::*} to {_time} split at " "
	if {_words::2} is "second" or "seconds":
		set {_words::2} to "seconde(s)"
	else if {_words::2} is "minute" or "minutes":
		set {_words::2} to "minute(s)"
	else if {_words::2} is "hour" or "hours":
		set {_words::2} to "heure(s)"
	else if {_words::2} is "day" or "days":
		set {_words::2} to "jour(s)"
	set {_result} to "%{_words::1}% %{_words::2}%"
	return {_result}

on join:
	set {connection.%player%} to now

on quit:
	add difference between {connection.%player%} and now to {time.%player%}
	# Il n'y a pas besoin de supprimer la variable {connection.%player%} car elle automatiquement réinitialisée à chaque connexion du joueur.

command /temps:
	trigger:
		set {_time} to difference between {connection.%player%} and now
		if {time.%player%} is set:
			add {time.%player%} to {_time}
		send "Temps passé sur le serveur (en anglais) : %timeToFrench({_time})%." to the player

et voici avec le temps en français ?

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.