Aller au contenu

Messages recommandés

Bonjour, il y a t'il un autre moyen de faire le code si dessous car on j'ai lu quelque sujet et j'ai cru comprendre que le every tick/second n'est pas très optimal, donc est-il possible de faire pour que ce soit plus optimal ? Si sa l'est, si c'est avec les while, est-ce possible de m'expliquer en même temps car je ne comprend pas trop les while même après lu quelques tutos.

Merci encore pour le temps que vous prenez pour m'aider.

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

Modifié par TheFighter51

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 13 heures, TheFighter51 a dit :

Bonjour, il y a t'il un autre moyen de faire le code si dessous car on j'ai lu quelque sujet et j'ai cru comprendre que le every tick/second n'est pas très optimal, donc est-il possible de faire pour que ce soit plus optimal ? Si sa l'est, si c'est avec les while, est-ce possible de m'expliquer en même temps car je ne comprend pas trop les while même après lu quelques tutos.

Merci encore pour le temps que vous prenez pour m'aider.

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

Salut, dans ce genre de situation, je crois que tu n'as pas trop le choix d'utiliser un event 'every x tick ou seconds', je te conseille de prendre le 'every 1 second' qui sera plus optimisé qu'un every tick, même si ce n'est toujours pas bien optimisé. (every tick: 20 fois par seconde)

Cordialement, Uri'

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour retirer le "every X ticks" c'est simple, il suffit de mettre ton code de au même event que la méthode de gain d'exp. Exemple, si tu gagnes de l'exp en cassant un log :

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

Pour optimiser tout ça (pour éviter de répéter le même code à chaque fois pour chaque level), tu peux loop l'action en ajoutant une variable provisoire qui augmentera jusqu'au niveau max. Exemple :
 

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

Si tu gagnes de l'exp sur plusieurs event (une commande, casser des blocs, placer des blocs) tu peux aussi faire une function (comme ça t'auras pas à copier coller ton code à chaque event), tu mets juste ton code dans la function et à chaque event tu mets la function

PS: je sais pas si c'est très compréhensible dsl

Modifié par Lemrigue
  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Je te remercie pour ça, je pense que sa va beaucoup m'aider, j'ai d'autres questions, est-il possible de vérifier si la bûche par exemple a été poser par un joueur ou est apparu naturellement pour éviter une sorte de farm que je ne veux pas sur mon serveur et vu que j'ai dis 10 level, je met le loop à dix comme ça quand le joueur à assez d'exp pour passer de niveau, quand il cassera une bûche il montera automatiquement de niveau, est dès qu'il est level max, cela ne fonctionnera plus on est d'accord

Donc si j'ai bien compris de tout ce que tu m'a dit:

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui exact, si tu mets : "loop 10 times", le joueur ne pourra plus monter de niveau après le niveau 10, par contre j'ai oublié de préciser qu'il vaut mieux mettre le code pour monter de niveau après celui où tu gagnes de l'exp, puisque tu vas casser le bloc, recevoir l'exp et après que tu aies reçu l'exp ça va regarder si ton exp est assez élevé. Si ça regarde si ton exp est assez élevé avant que tu aies reçu l'exp ça va décaler la monter de niveau de 1 bloc
Aussi, tu peux optimiser ça en mettant le code d'exp dans la boucle de départ. J'ai remarqué que l'exp et l'argent augmente de 0,25 à chaque monter de niveau donc ça donnerait une formule de ce style :
 

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

là c'est des maths tout simple : quand le joueur sera niveau 0 ça lui donnera 1 + 0.25 * 0, soit 1 exp, quand il sera niveau 4 ça lui donnera 1 + 0.25 * 4, soit 2 exp, etc etc (j'ai pas testé mais ça devrait marcher)

 

Sinon pour vérifier si le bloc a été posé par un joueur je ne sais pas trop comment faire, tu peux tenter de set une variable de location à l'endroit où un joueur pose un bloc ( {block.%event-location%} ), et quand un joueur casse un bloc, vérifier si une variable avec cette location existe

Modifié par Lemrigue

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah ok merci pour cette optimisation au top ! Je vais testé également.

Pour la vérification, un truc de se genre est bon tu penses:

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

EDIT:

Je ne comprends pas l'emplacement du add 1 to {_loop}

j'ai une erreur a propos du de l'action bar:

 

2018-11-03_19.41.14.png

EDIT 2:

Problème résolu, mais le code que j'ai donné ne fonctionne pas...

EDIT 3:

Ton code fonctionne, oui mais y'a juste un soucis, quand on au niveau 1 et qu'on est a 1249 d'exp, quand on casse le block, sa fait passer le niveau certes, mais sa donne de l'exp supplémentaire pour l'autre niveau, au lieu de commencer à 0, ils commencent à 1.5...

Modifié par TheFighter51

Partager ce message


Lien à poster
Partager sur d’autres sites

la variable {_loop} commence à 0, et elle doit rester à 0 pour tout le code du level 0, du coup on ajoute 1 à cette variable à la fin de la loop. Quand toute la loop a été executée, on lui rajoute 1 et la loop recommence à 1. Si le "add 1 to {_loop}" était placé au début du code, ça commencerait au level 1 et ça zapperait le level 0

Pour ton code, c'est good, c'est ce à quoi je pensais, j'ai testé en local pour voir ce qui allait pas, et c'est juste le "if block is any log" qu'il faut changer en "if event-block is any log" !
Aussi, quand tu casses le block rajoute que ça doit suppr la variable "{block.%event-location%}" sinon tu en auras beaucoup, genre :
 

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

D'accord sa fonctionne super bien mais y'a juste un soucis, quand on est au niveau 1 et qu'on est a 1249 d'exp, quand on casse le block, sa fait passer le niveau certes, mais sa donne de l'exp supplémentaire pour l'autre niveau, au lieu de commencer à 0, ils commencent à 1.5...

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah oui vu que c'est une loop ça continue après qu'il ait monté de niveau, il suffit de rajouter un "stop" après la monté de niveau :
après le "send" rajoute un stop :

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

Modifié par Lemrigue

Partager ce message


Lien à poster
Partager sur d’autres sites

oui, juste un "{_loop} < 10:" avant "add (1 + 0.25 * {_loop}) to {xp.jobs.bucheron.%player%}" devrait faire l'affaire

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Donc sa devrait faire ça ?

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

EDIT:

Quand je suis niveau 10, je ne gagne pas d'argent même si j'ai le loop < 10 ou non ...

Modifié par TheFighter51

Partager ce message


Lien à poster
Partager sur d’autres sites

Cela fonctionne. Voici mon code final:

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

J'ai une dernière question, qui n'est pas en rapport avec mon titre mais, j'ai créer un scoreboard avec titlemanager et j'ai rajouté une variable d'un vote.*

Cela fonctionne mais au lieu que ce soit par exemple Vote: 1 c'est Vote: 1.0, est-il possible d'enlever le 0 à la fin ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir @TheFighter51,

 

Afin de rendre la lecture et la compréhension de la discussion plus facile,
merci de créer une nouvelle demande d'aide avec plus de détails, vous obtiendrez des réponses plus rapidement. ⏩

 

Je lock ?

Bonne soirée.

Partager ce message


Lien à poster
Partager sur d’autres sites
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.