Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 21/05/2016 dans toutes les zones

  1. Bonjour, Dans cette série de tuto je vais vous apprendre à passer du Skript au Java. En effet la manière de coder en Skript ressemble bien au Java, de ce qui est de la logique du code (événement, puis conditions, puis actions etc...). Bien sûr, des connaissances en Java sont nécessaires avant de commencer. Pour cela je vous conseille de suivre la Partie 1 et 2 de ce tuto: openclassrooms.com/courses/apprenez-a-programmer-en-java Les bases Étant donner que des dizaines et des dizaines de tutos pour ça traînent sur le net, j'en ai sélectionné un qui est plutôt bien fait: Les Événements Un événement en Java est recherché dans les classes ayant un Listener. Vous allez me dire: Ouais mais comment ça marche? Je vais vous expliquer du mieux possible. Un Listener doit être implémenté dans la classe contenant des événements et aussi enregistré dans la classe principale de votre plugin. Pour implémenter un Listener, il faut ajouter implements Listerner Dans la ligne du "public class" (vers le début). Par exemple avec ma classe principale j'obtiens ceci: package fr.nashoba24.wolvmc; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.event.Listener; public class WolvMC extends JavaPlugin implements Listener { //CODE } Ensuite il faut enregistrer le Listener dans votre classe principale, sinon Bukkit ne sera pas où aller voir s'il y a des événements. Pour cela, dans la fonction @Override public void onEnable() { } Il faut mettre autant de lignes que de classe avec des événements comme ceci: Bukkit.getPluginManager().registerEvents(new NomDeVotreClasseAvecLeListernerImplémenté(), this); Bien sûr, vous devrez faire les imports nécessaires. Si vous voulez enregistrer votre classe principale (Avec le "onEnable()"), vous devrez mettre: Bukkit.getPluginManager().registerEvents(this, this); Voilà! Vos classes sont prêtes pour recevoir des évnements! Maintenant on va voir comment créer des événements. Tout d'abord, en Java, un événement est une fonction avec en argument l'événement et une annotation "@EventHandler". Vous ne comprenez rien? OK j'explique L'annotation permet de reconnaître la fonction en tant qu’événement et non en tant fonction basique. Sinon toutes vos fonctions seraient appelées et ce serait l'anarchie. Un événement est une fonction avec comme argument l’événement. C'est une fonction qui ne renvoie rien (void) mais qui exécute des actions. Voilà comment ça marche niveau code: @EventHandler public void nomDeLaFonction(ClasseDeL'événement e) { //Actions et Conditions ici } Ici c'est un événement qui n'existe pas mais c'est pour vous montrer la structure. La variable "e" vous permettra ensuite de récupérer des infos de l'événement, on verra ça plus tard. Un exemple avec un événement activé quand le joueur rejoint le serveur: @EventHandler public void onJoin(PlayerJoinEvent e) { //Actions et Conditions } Voici la liste des équivalents en class des événements de Skript: [spoiler=Liste] On Bed Enter: PlayerBedEnterEvent On Bed Leave: PlayerBedLeaveEvent On Block Damage: BlockDamageEvent On Break / Mine: BlockBreakEvent On Bucket Empty: PlayerBucketEmptyEvent On Bucket Fill: PlayerBucketFillEvent On Burn: BlockBurnEvent On Can Build Check: BlockCanBuildEvent On Chat: PlayerChatEvent On Chunk Generate: ChunkPopulateEvent On Chunk Load: ChunkLoadEvent On Chunk Unload: ChunkUnloadEvent On Click: PlayerInteractEvent OU PlayerInteractEntityEvent OU PlayerInteractAtEntityEvent On Combust: EntityCombustEvent On Command: PlayerCommandPreprocessEvent On Connect: PlayerPreLoginEvent On Craft: CraftItemEvent On Creeper Power: CreeperPowerEvent On Damage: EntityDamageByBlockEvent OU EntityDamageByEntityEvent OU EntityDamageEvent On Death: EntityDeathEvent On Dispense: BlockDispenseEvent On Drop: PlayerDropItemEvent On Enderman/Sheep: EntityChangeBlockEvent On Explode: EntityExplodeEvent On Explosion Prime: ExplosionPrimeEvent On Fade: BlockFadeEvent On First Join: PlayerJoinEvent On Fishing: PlayerFishEvent On Flow: BlockFromToEvent On Form: BlockFormEvent On Fuel Burn: FurnaceBurnEvent On Gamemode Change: PlayerGameModeChangeEvent On Grow: StructureGrowEvent On Heal: EntityRegainHealthEvent On Hunger Meter Change: FoodLevelChangeEvent On Ignition: BlockIgniteEvent On Item Break: PlayerItemBreakEvent On Item Spawn: ItemSpawnEvent On Join: PlayerJoinEvent On Kick: PlayerKickEvent On Leaves Decay: LeavesDecayEvent On Level Change: PlayerLevelChangeEvent On Lightning Strike: LightningStrikeEvent On Move on: PlayerMoveEvent On Physics: BlockPhysicsEvent On Pick Up: PlayerPickupItemEvent On Pig Zap: PigZapEvent On Piston Extend: BlockPistonExtendEvent On Piston Retract: BlockPistonRetractEvent On Place: BlockPlaceEvent On Portal: PlayerPortalEvent On Portal Create: PortalCreateEvent On Pressure Plate / Trip: EntityInteractEvent On Projectile Hit: ProjectileHitEvent On Quit: PlayerQuitEvent On Redstone: BlockRedstoneEvent On Respawn: PlayerRespawnEvent On Shoot: EntityShootBowEvent On Sign Change: SignChangeEvent On Smelt: FurnaceSmeltEvent On Sneak Toggle: PlayerToggleSneakEvent On Spawn: CreatureSpawnEvent On Spawn Change: SpawnChangeEvent On Spread: BlockSpreadEvent On Sprint Toggle: PlayerToggleSprintEvent On Tame: EntityTameEvent On Target: EntityTargetEvent On Teleport: PlayerTeleportEvent On Throwing of an Egg: PlayerEggThrowEvent On Tool Change: PlayerItemHeldEvent On Vehicle Change: VehicleUpdateEvent On Vehicle Create: VehicleCreateEvent On Vehicle Damage: VehicleDamageEvent On Vehicle Destroy: VehicleDestroyEvent On Vehicle Enter: VehicleEnterEvent On Vehicle Exit: VehicleExitEvent On Weather Change: WeatherChangeEvent On World Init: WorldInitEvent On World Load: WorldLoadEvent On World Save: WorldSaveEvent On World Unload: WorldUnloadtEvent On Zombie Break Door: EntityBreakDoorEvent Si jamais il vous faut quelques précisions ou aides n'hésitez pas à me demander :)
    4 points
  2. Attention @Trevili ! Si le joueur se déconnecte pendant le countdown, la variable du kit ne sera pas enlevée ! il faudrait rajouter on quit: clear {kit.guerrier.%uuid of player%} clear {kit.archer.%uuid of player%} clear {kit.tank.%uuid of player%} clear {kit.alchimiste.%uuid of player%}
    2 points
  3. Bonjour, Je viens ici demander un Skript assé complexe, je sais qu'il y en a sur le forum, mais malheureusement, ils sont tous trop vieux / pas comme je le souhaite :/ J'aimerais un Skript 1v1, j'explique : Lorsque un joueur utilise la commande /1v1 X, le joueur X reçois un message "Le joueur Y souhaite vous 1v1, cliquez ici pour accepter" Si le joueur accepte ça TP les deux joueurs dans une arène qu'un membre du staff auras défini, ça sauvegarde leurs inventaires normaux, et ça mets un nouvelle inventaire full fer P1 avec une épée fer T1 et un full inventaire de potions de heal II et 32 steak. Si le joueur accept, ça tp un joueur à un coin de l'arène et l'autre joueur à l'autre coin, et ça fais un décompte dans le chat. Pendant le décompte, les joueurs doivent se préparer (décompte de 5s) Si le joueur refuse, ça envoie à Y, "Le joueur X a refusé votre duel" Lorsque le combat est fini, ça re-tp les joueurs là ou ils étaient, et ça leurs rends leurs inventaires, petit exemple : Je suis en x:1500 y:100 z:2000 sur la map "Faction", j'ai 1 full diams P4 équipé et une T5 dans mon inventaire, j'ai envie de duel quelqu'un, je /1v1 Zali, ça me tp dans le monde "Arène", me donne une épée T1 et un stuff P1 fer, hop. Que je gagne ou je perde, je veux revenir en x:1500 y100 z:2000 et récupérer mon stuff. La liste des commandes que je voudrais Pour les joueurs: /1v1 (joueur) Pour les admins /setarene1v1 (Nombre 1 à 5 arène max) (Nom) /delarene1v1 (Numéro/nom) /setspawn (Numéro de l'arène) (Joueur1 ou Joueur2) /arenelist et voilà. /!\ Le /setspawn, je veux que je puisse faire /setspawn arène1 Joueur1 (Pas de pseudo, justej oueur1, et lors du tp, un joueur seras tp au spawn du joueur1 et l'autre joueur au spawn du joueur2) Voilà, je sais que c'est un Skript assé compliqué, mais en tout cas, si quelqu'un se sens capable de me le faire, ça serais super :p Cordialement,
    1 point
  4. à moins que tu arrive à contacter notch, je vois pas comment sinon xd
    1 point
  5. Met ton code dans les balises de code, ça sera plus clair ^^ L'erreur vient peut-être qu'après "if arg 1 is not set:" il n'y a rien.
    1 point
  6. Tu peux utiliser make %player% wear cape %itemstack% mais il te faut le plugin "Cape" :/ Je ne vois pas d'autres moyens...
    1 point
  7. Voila voila! Tout fonctionne (normalement, pas encore testé ^^ n'hésite pas a me mp si ça marche pas ou si tu as une question) et pour les autres kits, tu auras juste à modifier le stuff givé, je t'ai preparé les commandes! Command /kitarène <text>: permission: op.sk permission message: &7[&6TigerApple&7] &cCommande réservé au Staff trigger: if arg 1 is not set: send "&c&nListe des kits :&r &3Guerrier, &2Archer, &8Tank, &dAlchimiste" if arg 1 is "list": send "&c&nListe des kits :&r &3Guerrier, &2Archer, &8Tank, &dAlchimiste" if arg 1 is "Guerrier": if {kit.guerrier.%player%} is not set: set {kit.guerrier.%player%} to true send "&3Attentez 30secondes pour réutiliser ce kit!" clear player's inventory equip player with iron helmet of protection 2 named "&3Casque" with lore "&4&lKit Guerrier" equip player with iron chestplate of protection 2 named "&3Plastron" with lore "&4&lKit Guerrier" equip player with iron leggings of protection 2 named "&3Pantalon" with lore "&4&lKit Guerrier" equip player with iron boots of protection 2 named "&3Chaussures" with lore "&4&lKit Guerrier" give player 1 iron sword of sharpness 3 named "&3Epée" with lore "&4&lKit Guerrier" give player 1 bow of power 1 named "&bArc" with lore "&4&lKit Guerrier" give player 5 golden apple named "&cPomme dorée" with lore "&4&lKit Guerrier" give player 16 arrow named "&bFlèches" with lore "&4&lKit Guerrier" message "&3&oKit Guerrier équipé" wait 30 second delete {kit.guerrier.%player%} send "&3Hey, le countdown est terminé !" to player else: send "&cVeuillez attendre un peut avant de reprendre un Kit Guerrier!" if arg 1 is "Archer": if {kit.archer.%player%} is not set: set {kit.archer.%player%} to true send "&3Attentez 30secondes pour réutiliser ce kit!" clear player's inventory equip player with iron helmet of protection 2 named "&3Casque" with lore "&4&lKit Guerrier" equip player with iron chestplate of protection 2 named "&3Plastron" with lore "&4&lKit Guerrier" equip player with iron leggings of protection 2 named "&3Pantalon" with lore "&4&lKit Guerrier" equip player with iron boots of protection 2 named "&3Chaussures" with lore "&4&lKit Guerrier" give player 1 iron sword of sharpness 3 named "&3Epée" with lore "&4&lKit Guerrier" give player 1 bow of power 1 named "&bArc" with lore "&4&lKit Guerrier" give player 5 golden apple named "&cPomme dorée" with lore "&4&lKit Guerrier" give player 16 arrow named "&bFlèches" with lore "&4&lKit Guerrier" message "&3&oKit Archer équipé" wait 30 second delete {kit.archer.%player%} send "&3Hey, le countdown est terminé !" to player else: send "&cVeuillez attendre un peut avant de reprendre un Kit Archer!" if arg 1 is "Tank": if {kit.tank.%player%} is not set: set {kit.tank.%player%} to true send "&3Attentez 30secondes pour réutiliser ce kit!" clear player's inventory equip player with iron helmet of protection 2 named "&3Casque" with lore "&4&lKit Guerrier" equip player with iron chestplate of protection 2 named "&3Plastron" with lore "&4&lKit Guerrier" equip player with iron leggings of protection 2 named "&3Pantalon" with lore "&4&lKit Guerrier" equip player with iron boots of protection 2 named "&3Chaussures" with lore "&4&lKit Guerrier" give player 1 iron sword of sharpness 3 named "&3Epée" with lore "&4&lKit Guerrier" give player 1 bow of power 1 named "&bArc" with lore "&4&lKit Guerrier" give player 5 golden apple named "&cPomme dorée" with lore "&4&lKit Guerrier" give player 16 arrow named "&bFlèches" with lore "&4&lKit Guerrier" message "&3&oKit Tank équipé" wait 30 second delete {kit.tank.%player%} send "&3Hey, le countdown est terminé !" to player else: send "&cVeuillez attendre un peut avant de reprendre un Kit Tank!" if arg 1 is "Alchimiste": if {kit.alchimiste.%player%} is not set: set {kit.alchimiste.%player%} to true send "&3Attentez 30secondes pour réutiliser ce kit!" clear player's inventory equip player with iron helmet of protection 2 named "&3Casque" with lore "&4&lKit Guerrier" equip player with iron chestplate of protection 2 named "&3Plastron" with lore "&4&lKit Guerrier" equip player with iron leggings of protection 2 named "&3Pantalon" with lore "&4&lKit Guerrier" equip player with iron boots of protection 2 named "&3Chaussures" with lore "&4&lKit Guerrier" give player 1 iron sword of sharpness 3 named "&3Epée" with lore "&4&lKit Guerrier" give player 1 bow of power 1 named "&bArc" with lore "&4&lKit Guerrier" give player 5 golden apple named "&cPomme dorée" with lore "&4&lKit Guerrier" give player 16 arrow named "&bFlèches" with lore "&4&lKit Guerrier" message "&3&oKit Alchimiste équipé" wait 30 second delete {kit.alchimiste.%player%} send "&3Hey, le countdown est terminé !" to player else: send "&cVeuillez attendre un peut avant de reprendre un Kit Alchimiste!" Like si ça ta aidé et n'hésite pas à passer me voir sur mon ts si tu as besoin d'autre chose! ts: im-gs.fr
    1 point
  8. Tu fait ça pour créer ton fichier: on load: if file "tnt/placement.txt" doesn't exists: create file "tnt/placement.txt" puis pour faire ton log, tu fais: wf "%player% placed TNT in %world% at %location of block%" to "tnt/placement.log"
    1 point
  9. Très pratique ! En effet je vais bientot me mettre au java ! Merci pour ce tutoriel :)
    1 point
  10. Ton Skript envoyait un message qu'au joueur qui avait cassé le block et qui avait la perm ^^
    1 point
  11. 1 point
  12. Oui tu a du recopier ca de quelque part et tu n'a pas due comprendre la signification du damage cause is player: ici la condition est sous entendu autrement dit l'enlever sera d'autant plus simple pour résoudre ton problème. on break a diamond ore: if player has the permission "send.break.diamond": send "&9&l[&b&lZeus&9&l]&c %player%&7 a trouvé un minerais de diamant."
    1 point
  13. Non testé: command /gg <player> [<number>]: trigger: if player has permission "gg.push": if arg 1 has permission "gg.push": send "&cVous ne pouvez pas envoyer en l'air un membre du staff!" to player else: if arg 2 is not set: push arg 1 upwards at speed 4 else: push arg 1 upwards at speed arg 2 broadcast "&8[&c&lTROLL&8] &c%argument 1% &7a été envoyer en l'air par &c%player%" send "&8[&c&lTROLL&8] &7Tu as été envoyer en l'air par &c%player%" to arg 1 Il faut la permission gg.push et avec une valeur trop grande, le joueur ne sera pas envoyer en l'air car ce sera considéré comme du cheat (je ne sais plus la valeur, à toi de tester ;) )
    1 point
  14. Si ton argument 2 est un nombre, tu dois remplacer <text> par <number>
    1 point
×
×
  • 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.