Aller au contenu

SlySharp

Membre
  • Compteur de contenus

    186
  • Inscription

  • Dernière visite

  • Jours gagnés

    2
  • Crédits

    0 [Faire un don]

Tout ce qui a été posté par SlySharp

  1. SlySharp

    Mob spawn MMORPG like

    Une solution possible est de faire ce système via un excellent plugin : "MyhticMobs". Tous ce que tu décris est facilement faisable grâce au plugin. Sinon, au niveau Skript, tu peux passer par des fonctions qui vont gérer chacun de tes mobs. Je m'explique: Lors du spawn de ton mob, la fonction se lance, et vérifie (tous les x ticks) si le mobs est encore en vie. Si il l'est, rien ne se passe, sinon, ça lance la procédure de respawn. >>> En revanche, je ne suis pas sûr que si le chunk n'est pas chargé, ou qu'aucun joueur n'est co/à proximité, le respawn se fasse ! (Bloqué par le jeu) Un autre solution est alors de check pour chaque joueur si les mobs autour de lui sont présents ou non. S'ils ne le sont pas, tu les fais spawn, etc.. Si tu as besoin d'autres explication, n'hésite pas !
  2. Et bah ! 6 ans à faire du java pour pondre un skript aussi mal optimisé ! ça semble peu crédible !
  3. En cas général cette formulation est moins coûteuse à lire pour Skript.. Dans ce cas je suis d’accord c’est inutile, mais comme il s’agit d’une action unique c’est pas vraiment grave. Tu ne stoques pas des informations, le but de la lecture de tes codes est d’effectuer uniquement ce qu’elle doit faire. Au final, si tu veux un code plus propre et pro c’est la méthode à suivre (dans un cours d’info dans d’autres langage, c’est la même méthode quand elle est possible)
  4. Mes skript font autant de lignes car c’est un skript basique, mais sur un lourd skript c’est pas la quantité de lignes que tu effectues qui est important mais puissance demandé pour lire tes skripts. Si tu ne fais pas une lecture qui s’arrête au bon moment cela consomme beaucoup, donc ne sont pas optimisé du tout. Et l’optimisation sert pour tout serveur. Voilà si tu veux en savoir plus, dis le, mais sincèrement c’est pas une bonne habitude de rester dans un schèma if/else quand c’est pas utile. PS: Les stops à la fin de l’event permettent de stopper totalement l’event et dans certains cas ils évitent des boucles infinies sont si ils sont utiles. PPS: Cette méthode est beaucoup plus structurée car si tu as beaucoup de conditions, la lecture se fait en ligne droite et pas en diagonale.
  5. Bah en fait ton skript comme ça demande moins de ressources donc il est plus optimisé, c’est surtout un lourd avantage quand t’as des gros skripts! Ah oui mais je l’ai écris sur téléphone donc j’ai pas les autres guillemets
  6. Bien le bonjour à tous ! Introduction : Ce cours ne va pas vous apporter d’enormes nouveautés sur Skript, mais si vous voulez vraiment vous lancer dans l’élaboration de Skripts complexes, ces mécanismes est vraiment important! Le mécanisme d’indentation en soit est le fait de décaler le texte vers la droite (tab ou 4 espaces). Ce cours est là pour vous apprendre comment limiter au maximum ce mécanisme afin de simplifier et surtout d’optimiser vos Skript ! I - Exemple : Bien, commençons par un exemple de ce qu’il faut éviter ! on join: if player is op: if player’s world is « world »: message «Bienvenue monsieur l’op! » else: message «Étrange, vous n’etes pas dans le bon monde ! » else: message «Vous n’etes pas op!» Bon, vous êtes capables de le voir : ce code marche, mais il est extrêmement lourd ! Pourquoi? Ce code se décale jusqu’à 3 tab inutilement et pour quelque chose d’encore très simple ! • Comment remédier à ce soucis ? II - Utiliser le «stop» : Vous avez sûrement tous entendu parlé du «stop». Il permet d'arrêter la lecture de la suite du Skript (dans un event ou commande). En règle générale, vous pouvez en abuser si vous n’utilisez pas d’effets sur le temps (wait). Mais le point important est qu’il permet à votre Skript de s’arreter et de ne pas regarder les autres conditions/actions inutilement ! >> Conséquence : Le Skript est plus optimisé car il s’arrête quand il a fini de faire ses actions ! De plus, utiliser le stop permet d’éviter les «else:» et donc d’avoir un skript plus compact ! Pour reprendre notre exemple initial, effectuons un premier changement avec le stop: on join: if player is op: if player’s world is « world »: message «Bienvenue monsieur l’op! » stop message «Étrange, vous n'êtes pas dans le bon monde ! » stop message «Vous n’etes pas op!» stop Le code apparaît déjà un peu plus simple. Mais comment marche t-il ? Il faut juste réfléchir à propos du «If». Dans notre cas nous somme juste dans une situation où si le joueur est op on fait quelque chose, sinon autre chose. Dans cette situation le else ne sert à rien car si la lecture du code passe dans le if, elle sera stoppée par le «stop» et donc ne passera pas dans l’autre partie du code. Mais surtout si la lecture ne passe pas dans le if, elle passera dans le else dans tous les cas, ce qui le rend inutile ! Voici la première partie de la solution de notre code. III - La condition inverse : Là quoi ? Bon d’accord, ce terme je viens de l’inventer mais il décrit bien le mécanisme suivant. En fait, il suffit d’écrire l’inverde de la condition que l’on souhaite, afin d'arrêter la lecture du code. Je sais que comme ça, cela peut paraître étrange, alors regardons un exemple ! on join: if player is not op: message «Vous n’etes pas op!» stop if player’s world is « world »: message «Bienvenue monsieur l’op!» stop message «Étrange, vous n’etes pas dans le bon monde ! » stop Le mécanisme de condition inverse est là dans la première condition. En fait, on regarde si le joueur n’est PAS op au lieu de regarder si il est op, comme ça on peut arrêter le code et ne pas faire les autres comparaisons inutilement. On aurait put également le faire dans la seconde partie mais c’est globalement équivalent avec un mécanisme classique dans ce cas. Conclusion : Ces deux mécanismes (combinés) sont là pour simplifier et optimiser les codes au maximum, ainsi en les combinant quand cela est possible, vos skripts seront beaucoup plus efficaces si ils sont complexes. Pour avoir des exemples concrets d’utilisation de ces mécanismes: - Conditions avant de lancer une commande - En fait presque à chaque fois qu’il y a des conditions ! PS: Lorsqu’il n’y a pas de else, ni autre conditions pensez à la condition sans «if» ni «:» ! Voila ce post est enfin terminé! Si vous avez des remarques, n’hésitez pas, et si le concept vous plait faites le savoir ! Merci à vous !
  7. SlySharp

    Besoin de Skript pour MC 1.8

    Normalement tu devras trouver ça là dedans : [Contenu masqué]
  8. Non car le parsed as location marche pas avec un text (variable) stokée en yml Et le parsed as item fonctionne, je le sais, le problème c'est les nbt x) !
  9. Non mais je connais le parsed, mais avant de passer par un parsed il faudrait pouvoir stoker l'info x) ! Et pour location tu peux pas convertir un text en location avec parsed, donc pas possible
  10. Non mais pour les stocker je sais faire comme ça, mais tu stokes en YML en convertissant tout ça en texte : du coup on peut plus récupérer ça comme une location ou comme un inventaire :/
  11. Skript : Dev 25, Version du jeu : 1.12 Salut salut, je vous présente mon problème. En fait j'aimerai pouvoir stoker un inventaire (armure incluse) dans un fichier.yml ainsi qu'une location pour pouvoir la reprendre plus tard. Le problème est que avec une variable, on peut ajouter chaque slot dans une variable liste ({::*}) mais là avec ce système, tous les nbt sont supprimés : et je ne peux pas faire sans :S ! En ce qui concerne la location, j'arrive à la stoker en version 'text' avec 'x:..y:..z:..' mais impossible de la refaire passer en location ! C'est la même chose, dans une variable il n'y a pas de soucis, mais en yml ça ne marche pas ! Avant de passer des heures à la recherche de pistes je voulais savoir si vous avez déjà rencontré ce soucis, et comment y remédier ? Merci !
  12. En effet j'avais même pas capté
  13. SlySharp

    Premier jour d'un mois

    Ok bah la fonction partie entière que je te disais en gros c'est flormor, si tu veux utiliser l'algo que t'as envoyé en premier, tu peux essayer avec Ah ok, c'est la première fois que je vois une fonction avec return, je me disais aussi que ça devait bien exister !
  14. SlySharp

    Premier jour d'un mois

    Il y a pas un pb ? : :: text: Et sinon que fait le code ceil ?
  15. SlySharp

    Premier jour d'un mois

    Ah peut être, je connais pas ce code ahah
  16. SlySharp

    Premier jour d'un mois

    Ok ok je vois, je vais t'expliquer ça plus simplement alors ahah ! En gros, dans tes calculs, tu as : a = [(14-month/12] Mais dans ton image qui explique les calculs à faire, ce n'est pas juste des crochets, mais une fonction : la fonction "Partie entière". Cette fonction, elle renvoie l'entier le plus proche et inférieur au nombre que tu lui donnes. Avec des exemples pour que ça soit plus explicite : E[0.5] = 0 car 0 est la "partie entière" de 0.5 E[0.7] = 0 E[1.2] = 1 E[5] = 5 E[5.99999999] = 5 Pour les nombres négatifs c'est un peu plus chaud, mais t'en as pas besoin là. Et pour trouver ce nombre entier, qu'on va appeler " n ", on le trouve comme ça : n <= x < n+1 Et ça, en version Skript, tu l'as à peu près comme ça : set {_x} to ((14 - {_m}) / 12) #Ton premier calcul que j'ai pas toucher set {_n} to a random integer between {_x}-0.9999 and {_x} Et voilà, le {_n} remplace le {_base} Et pour toutes les autres fractions en bas, c'est la même chose qu'il faut faire. Si c'est toujours pas assez clair, hésites pas x) !
  17. SlySharp

    Un skript par monde

    Ouais comme l'a dit @Anarchick , si le Skript est ta création, alors rajoute juste des conditions d'être dans le bon monde. Après si il n'est pas de toi, essaies de les rajouter aussi, mais fais attention à ne pas bloquer un mécanisme du Skript qui le fasse échouer ! Si jamais ça ne marche pas, dis le, on verra bien ce qui ne marche pas ! ^^
  18. Salut, est ce que tu as essayé : ? drop an iron at {dropfer} Si ça ne marche toujours pas, je regarderai plus en détails ! ^^
  19. SlySharp

    Premier jour d'un mois

    Il y a une erreur dans ta traduction : le a = .. ce n'est pas des crochets/parenthèses mais une fonction = fonction partie entière (E[x]). E[x] = n avec n<=x<n+1, n étant un entier relatif. C'est pour ça que dans l'exemple il trouve que E[(14-8)/12) = 0 14-8 = 6 __ 6/12 = 0.5 la partie entière de 0.5 est bien 0. Je ne sais pas si la fonction Partie entière est déjà programmée dans Skript, mais tu peux l'avoir en faisait: set {_base} to ((14 - {_m}) / 12) set {_base} to a random integer between {_base}-0.9999 and {_base} #Bon j'ai pas vraiment réfléchis longtemps pour ça, mais elle devrait marcher. Et pour tous les autres calculs qui suivent c'est toujours la même chose : fonction E[x] Voila voila :D
  20. Je n'ai pas testé le code, mais normalement il doit marcher. Je t'ai enlevé une variable qui ne sert à rien et j'ai ré-agencé ton Skript. Dis moi si tu comprends pas quelque chose, ou si il y a une erreur ! #EFFET CLIC DROIT on rightclick: # KIT GOLEM if name of tool of player is "&cGolem &7&l>>Clic droit<<": if "%region at player%" doesn't contain "ffa": message "&cVous ne pouvez pas faire ça ici." stop if {pouvoirs.%player%.lastused} is not set: # run player command "//hsphere 4 2" as op set {pouvoirs.%player%.lastused} to now wait 5 seconds run player command "//undo" as op # ATTENTION ! Si le joueur se déco pendant ce moment : # Le undo ne va pas se faire set {_time} to 55 loop 55 times: if "%region at player%" contains "ffa": set action bar of player to "&6Golem : &e&o%{_time}%&e seconde(s) !" else: clear {pouvoirs.%player%.lastused} stop add -1 to {_time} wait 1 second clear {pouvoirs.%player%.lastused} stop PS : J'ai enlevé le While qui est beaucoup trop lourd pour rien : Le skript doit à chaque seconde vérifier si la condition est vérifiée avant de relancer la boucle : Un loop revient au même en plus léger !
  21. C'est vrai que le Skript est pas optimisé mais il est surtout faux, à quoi sert le "loop all players" ? Car tu vas relancer le cycle de suppression (avec les temps d'attentes entre les messages) pour chaque joueur connecté dans le monde. Même si tu vas rien supprimer comme block car la variable est vide, tu vas remplir le tchat de message.. Tu as surement voulu bien faire, mais en faisant ce genre de tuto, tu pousses les gens à l'erreur.. BON, maintenant, voyons ton Skript plus en détails ! (Correction) options: #Sans ça ton message ne marche pas. PrefixRushFFA: Rush on place: #Les if sont inutiles car tu n'as pas d'autre condition player's world is "RushFFA" event-block is sandstone:2 or tnt add location of event-block to {rf.blocs::*} every 5 minutes: loop all players in world "RushFFA": loop-player's world is "RushFFA" message "{@PrefixRushFFA} &cTout les block de grès vont être supprimé dans 15 seconds" to loop-player #Si tu mets un Broadcast, le loop player ne sert à rien. set {_z} to 15 loop 14 times: if {_z} < 6: loop all players in world "RushFFA": loop-player's world is "RushFFA" message "{@PrefixRushFFA} &cTout les block de grès vont être supprimé dans %{_z}% seconds" to loop-player remove 1 from {_z} wait 1 seconds loop all players in world "RushFFA": loop-player's world is "RushFFA" message "{@PrefixRushFFA} &cTous les block de grès et de tnt on été supprimé !" to loop-player clear all dropped items #Je n'ai pas vérifié pour le Clear loop {rf.blocs::*}: set block at loop-value to air wait 1 tick clear {rf.blocs::*} Voilà voilà, si il y a un soucis hésites pas !
  22. Merci c'est parfait comme ça ! :D
  23. J'ai changé de Skript, tout marche, je passe en résolu !
  24. Bonjour, Voilà, récemment je me suis remis au skript. Mais voilà, je rencontre un assez gros soucis dans l'envoie des messages : J'ai mis Skript 2.2 Le serveur est en 1.11 (J'ai testé avec 1.11.2 c'est la même chose) Les addons ne sont pas responsables car même sans, l'erreur reste. Voila, si vous avez rencontré le même problème, faites le savoir, et si jamais vous l'avez résolu dites le moi ^^ ! PS: La console n'affiche aucun message d'erreur
×
×
  • 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.