TheFighter51 5 Posté : 1 novembre 2018 (modifié) 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é 1 novembre 2018 par TheFighter51 Partager ce message Lien à poster Partager sur d’autres sites
MrUrica 11 Répondu : 2 novembre 2018 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
TheFighter51 5 Répondu : 2 novembre 2018 Ok je te remercie... Et y'a pas un moyen de faire que au lieu que ce soit écrit bucheron, sa soit comme un argument pour plusieurs métiers ? Partager ce message Lien à poster Partager sur d’autres sites
Lemrigue 15 Répondu : 3 novembre 2018 (modifié) 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é 3 novembre 2018 par Lemrigue 1 Partager ce message Lien à poster Partager sur d’autres sites
TheFighter51 5 Répondu : 3 novembre 2018 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
Lemrigue 15 Répondu : 3 novembre 2018 (modifié) 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é 3 novembre 2018 par Lemrigue Partager ce message Lien à poster Partager sur d’autres sites
TheFighter51 5 Répondu : 3 novembre 2018 (modifié) 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: 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é 3 novembre 2018 par TheFighter51 Partager ce message Lien à poster Partager sur d’autres sites
Lemrigue 15 Répondu : 3 novembre 2018 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
TheFighter51 5 Répondu : 3 novembre 2018 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
Lemrigue 15 Répondu : 3 novembre 2018 (modifié) 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é 3 novembre 2018 par Lemrigue Partager ce message Lien à poster Partager sur d’autres sites
TheFighter51 5 Répondu : 3 novembre 2018 Ah oui d'accord c'était tout bête, par contre au niveau 10, le joueur gagne que de l'argent et plus de l'exp, comme je peux faire ? avec un if {_loop} = 10 et un autre if {_loop} < 10 ? Partager ce message Lien à poster Partager sur d’autres sites
Lemrigue 15 Répondu : 3 novembre 2018 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
TheFighter51 5 Répondu : 3 novembre 2018 (modifié) 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é 3 novembre 2018 par TheFighter51 Partager ce message Lien à poster Partager sur d’autres sites
Lemrigue 15 Répondu : 3 novembre 2018 comme tu commences à le {_loop} à 0 essaye de loop 11 times au lieu de 10 Partager ce message Lien à poster Partager sur d’autres sites
TheFighter51 5 Répondu : 3 novembre 2018 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
Rush2Fer 105 Répondu : 3 novembre 2018 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