Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

[Liste] Les fonctions Lua


Sparks

Messages recommandés

  • Retraité

Bonjour à tous,

voici un concentré de fonctions lua.
Les fonctions sont triées par ordre alphabétiques. Si vous voulez en rajouter sur ce tutoriel, n'hésitez pas (il en manque beaucoup).

affect :

Révélation

affect.add_collect(X, Y, Z)
     Donne le bonus n°X de puissance Y pendant Z secondes au joueur.
     Le bonus fonctionne pour Z secondes de temps de jeu du joueur (le temps ne décroit pas s'il n'est pas en ligne)
     Le bonus persiste à la mort du personnage et les bonus sont cumulables sans limite
     Liste des différents bonus, voir le tutoriel de Sparks : ici

donjon :

Révélation

Voir le tutoriel de Calypso : ici

game :

Révélation

game.drop_item(X, Y)
    Fait tomber Y fois l'objet de vnum X au pied du joueur.
    game.drop_item(X) vaut game.drop_item(X, 1)

game.drop_item_with_ownership(X, Y, Z) (files 2013+)
    Fait tomber Y fois l'objet de vnum X au pied du joueur. L'objet est réservé pendant Z secondes.
    game.drop_item_with_ownership(X, Y) vaut game.drop_item_with_ownership(X, Y, 10)
    game.drop_item_with_ownership(X) vaut game.drop_item_with_ownership(X, 1, 10)
    La fonction est bug si Y vaut 0 (l'objet tombe mais rien n'est gagné)

game.get_event_flag("X")
    Renvoie la valeur de l'évènement nommé X. (entier)

game.set_event_flag("X", Y)
    Y devient la nouvelle valeur de l'évènement nommé X.
    Pour les différents events pré-existants, voir le tutoriel de Galet : ici
    Cette valeur est commune à tous les joueurs du serveur (contrairement au pc.setqf qui sont limités au joueur)
    Y doit être un entier.

mob :

Révélation

mob.spawn(V, X, Y, A, B, N)
    Invoque N fois le monstre de vnum V aux coordonnées locales (X, Y) dans la map du joueur.
    Si B vaut true, le monstre est agressif, sinon il est en mode normal.
    A est l'aléatoire dans les coordonnées : mob.spawn(101, 200, 300, 20)
    le monstre sera invoqué entre les coordonnées (180, 280) et (220, 320)
    N ne peut dépasser 10 (erreur syserr)
    Si N est non spécifié, N vaut 1
    La fonction renvoie le vid du monstre invoqué.
    La fonction n'a aucun effet dans les safe-zone.

 pc :

Révélation

pc.change_alignment(X) / pc.changealignment(X)
    Donne X points d'alignement au joueur (X peut-être négatif).

pc.change_gold(X) / pc.changegold(X) / pc.change_money(X) / pc.changemoney(X)
    Donne X yangs au joueur (X peut-être négatif).
    Le joueur ne peut pas perdre plus de yang qu'il n'en a.
    Le joueur ne peut dépasser les 2 milliards.

pc.count_item(X) / pc.countitem(X)
    Renvoie le nombre d'objet de vnum X présents dans l'inventaire du joueur. (entier)
    Renvoie 0 si le joueur n'a pas cet objet.
    Ne regarde pas les objets équipés.
    pc.count_item("X") fonctionne

pc.delqf(X)
    Supprime le flag du joueur nommé X.
    Désormais pc.getqf(X) vaut 0
    Cette fonction supprime la ligne correspondante dans la table affect.sql contrairement à un pc.setqf(X, 0)

pc.get_armor()
    Renvoie le vnum de l'armure du joueur.
    Renvoie 0 si le joueur n'est pas équipé d'une armure.

pc.get_empire()
    Renvoie le numéro de l'empire du joueur. (entier)
    1 s'il est Shinsoo, 2 s'il est Chunjo, 3 s'il est Jinno.

pc.get_gold() / pc.getgold() / pc.get_money() / pc.getmoney()
    Renvoie le nombre de yang du joueur. (entier)

pc.get_level()
    Renvoie le niveau du joueur. (entier)

pc.get_map_index()
    Renvoie l'ID de la map où le joueur se trouve. (entier)

pc.getqf(X)
    Renvoie la valeur du flag nommé X du joueur. (entier)
    Cette valeur est modifiable avec la fonction pc.setqf
    Si le flag n'existe pas, la fonction renvoie 0

pc.get_weapon()
    Renvoie le vnum de l'arme du joueur.
    Renvoie 0 si le joueur n'est pas équipé d'une arme.

pc.give_exp2(X)
    Donne X points d'expérience au joueur (X peut-être négatif).
    Le joueur ne peut pas perdre plus d'expérience qu'il n'en a.

pc.give_item2(X, Y)
    Donne Y fois l'objet de vnum X au joueur.
    pc.give_item2(X) vaut pc.give_item2(X, 1)
    La fonction est bug si Y est supérieur à 200 (correctif proposé par Hystos : ici)
    La fonction est bug si Y vaut 0 (donne un objet)
    La fonction est bug si Y est supérieur à 1 et que X est non empilable (un seul objet donné)
    pc.give_item2("X", "Y") fonctionne
    Si le joueur n'a pas la place pour porter l'objet, il tombe au sol et est réservé pendant 60 secondes. (300 secondes pour les objets avec l'antiflag n°8 (voir le tutoriel Configurer ses items)

pc.is_gm()
    Renvoie true si le joueur est GM, renvoie false sinon.

pc.mount(X, Y)
    Le joueur chevauche la monture de vnum X pendant Y secondes.
    pc.mount(X) vaut pc.mount(X, 60)
    Le joueur bénéficie des mêmes avantages que s'il chevauchait son cheval.
    Bug : Si X n'existe pas, les déplacements du joueur sont altérés.

pc.polymorph(X, Y)
    
Le joueur prend l'apparence du monstre de vnum X pendant Y secondes. (sans bonus)

pc.remove_item(X, Y) / pc.removeitem(X, Y)
    Retire Y fois l'objet de vnum X dans l'inventaire du joueur.
    pc.remove_item(X) est équivalent à pc.remove_item(X, 1)
    pc.remove_item(X, -1) retire tous les objets de vnum X dans l'inventaire du joueur
    Ne peut supprimer les objets équipés
    pc.remove_item("X", "Y") fonctionne

pc.setqf(X, Y)
    Le flag du joueur nommé X vaut Y.
    Y doit être un entier.

pc.warp(X, Y)
    Téléporte le joueur aux coordonnées universelles (X, Y)

table :

Révélation

table.concat(X, Y)
    Concatène toutes les cellules de la table X par le séparateur Y.
    tableau = {26, 35, 95, 24, 12}
    notice(table.concat(tableau, " | "))
    Va afficher : 26 | 35 | 95 | 24 | 12

table.getn(X)
    Renvoie la taille de la table nommée X.
    tableau = {26, 35, 95, 24, 12}, table.getn(tableau) va renvoyer 5.
    Intéressant pour choisir une case aléatoire dans le tableau : tableau[number(1, table.get(tableau))]

table.insert(X, Y)
    Va rajouter l'argument Y dans la table nommée X.
    Exemple :
    tableau = {26, 35, 95, 24, 12}
    table.insert(tableau, 32)
    nouvelle valeur de tableau : {26, 35, 95, 24, 12, 32}

table.remove(X, Y)
    Opposé de table.insert, cette fonction supprime l'élément n°Y de la table nommée X.
    tableau = {26, 35, 95, 24, 12}
    table.insert(tableau, 2)
    nouvelle valeur de tableau : {26, 95, 24, 12}
    Notez que les cellules après la n°2 sont automatiquement décalées.
    Si Y n'est pas précisé (table.remove(X))
    C'est la dernière cellule de la table X qui est supprimée. (le 12 en l'occurence)  

table.sort(X, Y)
    C'est une fonction qui permet de trier la table X selon le paramètre Y (qui est généralement, lui-même une fonction !)
    C'est une fonction compliquée à expliquer en quelques lignes, le mieux c'est d'aller lire le tutoriel de Swice !

Autres :

Révélation

cleartimer("X")
    Stoppe le timer nommé X. (voir timer et loop_timer)

command(X)
    Permet d'éxécuter la commande GM X. Le joueur doit avoir les droits nécessaires.
    Voir la liste des commandes GM sur le tutoriel de Calypso : ici

get_time()
    Renvoie le nombre de seconde écoulées depuis le 1er Janvier 1970.

input()
    Créé une barre de chat dans laquelle le joueur peut écrire. (string)
    Renvoie ce qu'a écrit le joueur.

item_name(X)
    Renvoie le nom de l'objet de vnum X. (string)


loop_timer("X", Y)
    Lance un timer nommé X qui est propre au joueur et qui s'active toutes les Y secondes. (voir la fonction timer)
    Le timer cesse si le joueur se déconnecte.
    La fonction est sans effet si un timer nommé X est déjà en cours sur le joueur
    Il est possible de stopper un timer grâce à la fonction cleartimer("X")

notice("MSG")
    Affiche le texte MSG au joueur, l'affichage est similaire à une annonce GM.

notice_all("MSG")
    Affiche le texte MSG à tous les joueurs du serveur. Fonction similaire à la commande GM /n

notice_in_map("MSG", B)
    Affiche le texte MSG à tous les joueurs présents sur la map du joueur. L'affichage est similaire à une annonce GM.
    Si B vaut true, le MSG est sous forme d'une grosse annonce.
    notice_in_map("MSG") vaut notice_in_map("MSG", false)

number(X, Y)
    Renvoie un entier aléatoire compris entre X et Y.

setbgimage("X")
    Permet d'afficher une image nommé X comme fond à votre fenêtre de texte. Cette fonction est à utiliser en complément avec setskin(SCROLL). Exemple à tester :
Par défaut, la fonction va chercher dans le dossier d:/ymir york/ui/game/questboard/


quest truc begin
   state start begin
       when 20041.chat."Salut" begin
           setskin(SCROLL)
            setbgimage('level_bg.tga')
           say_reward("Bienvenue !")
           say("Bienvenue !")
           say_title("Bienvenue !")
       end
   end
end

timer("X", Y)
    Lance un timer nommé X qui est propre au joueur, il s'activera une fois dans Y secondes. (contrairement à loop_timer)
    Le timer cesse si le joueur se déconnecte.
    La fonction est sans effet si un timer nommé X est déjà en cours sur le joueur
    Il est possible de stopper un timer grâce à la fonction cleartimer("X")
    L'évènement doit être de la forme :


    when X.timer begin
         syschat("Coucou !")
    end

warp_all_to_village(X, Y)
    Téléporte tous les joueurs de la map n°X dans leur map1 respectives dans Y secondes.
    warp_all_to_village(X) est équivalent à warp_all_to_village(X, 0)

warp_to_village()
    Téléporte le joueur dans sa map1

Tutoriel sur les bases des quêtes :
Par Valithis, ici

Tutoriel sur les différentes coordonnées (locales/globales/universelles) :
Par Sparks, ici

À rajouter :
- toutes les fonctions manquantes ;(

  • Love 16
Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...
  • Développeur

Téléporter un mob c'est pas possible via une fonction à moins de jouer sur les mots et le "tuer" pour le faire spawn ailleurs.

D'où la réponse à la question suivante, oui supprimer un mob c'est possible. Si c'est un "unique", tu peux en faire ce que tu veux. Sauf le téléporter.

Lien vers le commentaire
Partager sur d’autres sites

  • 6 mois après...
  • 4 mois après...
  • 2 semaines après...


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 21

      Metin2 en 2020 peut-on en parler?

    2. 0

      METIN2Project

    3. 3

      Ressources - UnPack - Metin2 Client - Officiel

    4. 0

      Barre des tâches d'argent étendue

    5. 16

      Redémarrage automatique des channels

    6. 16

      Multi Logo GM / SGM / GA

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / 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.