Tutoriel [Skript] ENORME Tuto! Créez des plugins sans Java!

Nashoba04

Développeur
21 Décembre 2013
87
22
111
35
J'ai pas assez d'infos, c'est les minerais de ton inventaire, celui que tu vises, ceux autour de toi?
 

Nashoba04

Développeur
21 Décembre 2013
87
22
111
35
Je pense que ça peut marcher avec (non testé):
Code:
command /smelt:
    trigger:
        if command sender is a player:
            loop all items in inventory of player:
                if loop-item is iron ore:
                    set loop-item to iron ingot
                else if loop-item is gold ore:
                    set loop-item to gold ingot
            send "&aTous les minerais de fer et d'or de votre inventaire ont été fondus!" to player
 

thegeektunes

Zbeub zbeub zbeub !
29 Juin 2015
245
11
75
Là,ya pas à dire mais tu m'as beaucoup aidé ! Un gros geste très gentil de ta part ! Tu as dû prendre du temps pour y arriver à écrire tout ça !

Salut à tous!
Je vous propose aujourd'hui un grand tuto sur le plugin Skript qui permet à son tour de faire des plugins pour Minecraft! N'hésitez pas à me dire ce qui ne vas pas ou ce qui est mal expliqué pour que je règle ça ;)
Vous pouvez le télécharger ici: http://www.curse.com/bukkit-plugins/minecraft/skript

Qu'est ce que c'est??

Skript est un plugin qui permet de créer d'autres plugins pour votre serveur Minecraft mais en bien plus simple. Le langage est ici extrêmement simple. Les seules compétences à avoir pour pouvoir coder en Skript est de savoir parler un minimum anglais!
Mais pourquoi choisir Skript plutôt que le java par exemple?
Je vous ai fait ci-dessous un comparatif de l'un par rapport à l'autre:

Les avantages du Skript:
- Langage simple
- Création du plugin rapide (pas besoin de compilation)
- Pas besoin de reload TOUS le serveur pour reload un plugin
- Besoin seulement d'un éditeur de texte pour coder (pas d'IDE)

Les inconvénients:
- Implémentation d'API externe impossible (exemple: Citizens, WorldGuard, TagAPI etc...)
- Limite du code (exemple: les fonctions et les return ne son pas disponibles)
- Langage non universel (la publication d'un plugin en Skript est plus difficile qu'un plugin en java qui peut être mis facilement sur un serveur)
- Impossible de logger dans le fichier de log général
- Impossible de créer des fichiers de configuration à proprement parler (on verra ça plus tard)

Je vous ai fait une comparaison des deux languages

Pour annuler la casse d'un bloc si le joueur ne tient pas une pioche en diamant (exemple totalement pourri)
En Skript:

Code:
on break: #Quand le bloc est cassé
    if player's tool is not diamond pickaxe: #Si le joueur ne tient pas une pioche en diamant
        cancel event # Annuler l'evenement


En Java:

Code:
@EventHandler //Annontation
public void onBreak(BlockBreakEvent e) Blablabla...
[/SPOILER]
?
Salut ! Comment faire un compte à rebours sur skript
 
Dernière édition par un modérateur:

Nashoba04

Développeur
21 Décembre 2013
87
22
111
35
Tu dois utiliser l'effet "wait X times"
Un exemple de code:
Code:
broadcast "&aLe jeu commence dans 1 minute"
wait 30 seconds
broadcast "&aLe jeu commence dans 30 secondes"
wait 10 seconds
broadcast "&aLe jeu commence dans 20 secondes"
wait 10 seconds
broadcast "&aLe jeu commence dans 10 secondes"
wait 5 seconds
broadcast "&aLe jeu commence dans 5 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 4 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 3 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 2 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 1 seconde"
wait 1 seconds
#Le code qui doit être executé après le compte à rebours

Par contre je vois souvent une erreur chez les Skripteurs débutants, c'est qu'à chaque fois qu'un joueur rejoint un mini-jeu, le code est exécuté que pour cette personne. Il faut utiliser à chaque groupes d'actions sans wait la fonction "loop all players:".
Par exemple:
Code:
loop all players:
    teleport loop-player to {spawn.game}
 
  • J'aime
Reactions: thegeektunes

thegeektunes

Zbeub zbeub zbeub !
29 Juin 2015
245
11
75
Tu dois utiliser l'effet "wait X times"
Un exemple de code:
Code:
broadcast "&aLe jeu commence dans 1 minute"
wait 30 seconds
broadcast "&aLe jeu commence dans 30 secondes"
wait 10 seconds
broadcast "&aLe jeu commence dans 20 secondes"
wait 10 seconds
broadcast "&aLe jeu commence dans 10 secondes"
wait 5 seconds
broadcast "&aLe jeu commence dans 5 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 4 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 3 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 2 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 1 seconde"
wait 1 seconds
#Le code qui doit être executé après le compte à rebours

Par contre je vois souvent une erreur chez les Skripteurs débutants, c'est qu'à chaque fois qu'un joueur rejoint un mini-jeu, le code est exécuté que pour cette personne. Il faut utiliser à chaque groupes d'actions sans wait la fonction "loop all players:".
Par exemple:
Code:
loop all players:
    teleport loop-player to {spawn.game}
Merci infiniment !
 

thegeektunes

Zbeub zbeub zbeub !
29 Juin 2015
245
11
75
Tu dois utiliser l'effet "wait X times"
Un exemple de code:
Code:
broadcast "&aLe jeu commence dans 1 minute"
wait 30 seconds
broadcast "&aLe jeu commence dans 30 secondes"
wait 10 seconds
broadcast "&aLe jeu commence dans 20 secondes"
wait 10 seconds
broadcast "&aLe jeu commence dans 10 secondes"
wait 5 seconds
broadcast "&aLe jeu commence dans 5 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 4 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 3 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 2 secondes"
wait 1 seconds
broadcast "&aLe jeu commence dans 1 seconde"
wait 1 seconds
#Le code qui doit être executé après le compte à rebours

Par contre je vois souvent une erreur chez les Skripteurs débutants, c'est qu'à chaque fois qu'un joueur rejoint un mini-jeu, le code est exécuté que pour cette personne. Il faut utiliser à chaque groupes d'actions sans wait la fonction "loop all players:".
Par exemple:
Code:
loop all players:
    teleport loop-player to {spawn.game}
Par contre comment faire pour qu'un message s'affiche en boucle jusqu'à ce que le joueur fasse la commande /ok ?
 

Nashoba04

Développeur
21 Décembre 2013
87
22
111
35
Code:
command /ok:
    trigger:
        if {ok.valid.%player%} is set:
            clear {ok.valid.%player%}
            #Suite du code
Et une petit bout de code que tu met où tu veux:
Code:
while {ok.valid.%player%} is set:
    send "Faites /ok" to player
    wait 30 seconds
 

Bigby Wolf

Bucheron
6 Novembre 2016
4
0
12
Bonjour! Comment faire pour coder une commande à un joueur sans le préciser (comme si c'était une commande réservée à lui et seulement à lui)? Merci d'avance pour ta réponse!