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 :
on break:
if block is any log:
set {_loop} to 0
loop 10 times: #(10 = level max)
if {level.jobs.bucheron.%player%} = {_loop}:
add (1 + 0.25 * {_loop}) to {xp.jobs.bucheron.%player%}
add (0.5 + 0.25 * {_loop}) to player's balance
send action bar from "&a+ %0.5 + 0.25 * {_loop}%$ &e+ %1 + 0.25 * {_loop}% exp" to player
if {xp.jobs.bucheron.%player%} >= {xp%{_loop}%.jobs}:
set {xp.jobs.bucheron.%player%} to 0
set {level.jobs.bucheron.%player%} to ({_loop} + 1)
send "&9Jobs &8» &aBravo vous êtes passé au &dlevel %{_loop} + 1% &adu métier &6Bûcheron" to player
add 1 to {_loop}
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