Les Voltigeurs d'URU LIVE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -45%
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre ...
Voir le deal
339 €

Comment lancer nos commandes favorites directement dans le "chat" du jeu

Aller en bas

Comment lancer nos commandes favorites directement dans le "chat" du jeu Empty Comment lancer nos commandes favorites directement dans le "chat" du jeu

Message  V@-Michel Jeu 16 Aoû - 19:13

En cherchant comment Lyrositeur avait fait pour que l'on puisse lancer les commandes d'édition des marqueurs directement dans le "chat" du jeu en tapant, par exemple /list ou /download ou /upload, bref tout comme lorsqu'on lance une animation d'avatar comme /wave, par exemple, j'ai trouvé le moyen de le faire pour lancer nos fonctions favorites Python.

Le fichier à éditer est xKIExtChatCommands.py

Tout au début, vous indiquez le ou les modules à importer qui comporte les fonctions, soit import nom_du_module, soit from...import * comme moi je l'ai fait car j'ai créé un module InitTrucs qui initialise tous les modules à importer.

Ensuite, vous ajouter, dans la liste des commandes à taper dans le chat, le nom en minuscule de chaque commande qui sera précédée de / dans le chat lors de l'appel et, pour chaque nom ainsi défini, vous indiquez le nom de la fonction Python à lancer.

Je vais prendre un exemple.
Imaginons que vous avez créé un module Avatars.py dans lequel vous avez la fonction Invisible(nom, etat). J'ai supposé que vous aviez créé cette fonction afin de rendre invisible ou visible un avatar.
Par exemple si, dans la console Python vous tapez Invisible("Annabelle",True) l'avatar Annabelle devient invisible. Mais ceci n'est qu'un exemple.

Dans l'en-tête du fichier xKIExtChatCommands.py vous taperez : import Avatars
Plus bas, dans la section xChatExtendedChat = {
à la suite des quelques commandes déjà présentes vous rajouterez :

"invisible": Avatars.Invisible,

Remarquez que le nom utilisé pour appeler votre fonction dans le chat est en minuscules (ici : invisible).
La commande associée est le nom du module qui contien votre fonction suivi d'un point suivi juste du nom exact de votre fonction sans les parenthèses ni paramètres (ici Avatar.Invisible)
N'oubliez pas la virgule à la fin de la ligne qui précède votre ajoute.

Dans le chat vous taperez /invisible Annabelle True
et Annabelle deviendra invisible.

Remarquez aussi que dans le chat on ne met pas de parenthèses ni de guillemets, juste les paramètres à la suite les uns des autres.

Et c'est tout !
Dernière précision : ces nouvelles commandes / prennent effets dès que vous relancez le jeu. Pas besoin de recompiler votre client favori Very Happy

Voici ce que j'ai ajouté à partir de "vers" pour vous donner un exemple :
Code:
 
 
This module contains the extended chat commands for the KI
"""
 
import markereditor
import Plasma
import xInvite
from InitTrucs import *
 
# enter new commands in the dictionary below
# the 'key' is a lowercase version of what the user types after the '/'
# the 'value' is a string that is a console command
#            or a python function that will be executed
 
xChatExtendedChat = {
    Plasma.PtGetLocalizedString("KI.Commands.Sit"):        Plasma.PtAvatarSitOnGround,
    Plasma.PtGetLocalizedString("KI.Commands.Afk"):        Plasma.PtAvatarEnterAFK,
    Plasma.PtGetLocalizedString("KI.Commands.Invite"):      xInvite.CreateInvitation,
    Plasma.PtGetLocalizedString("KI.Commands.Uninvite"):    xInvite.DeleteInvitation,
    Plasma.PtGetLocalizedString("KI.Commands.Accept"):      xInvite.AcceptInvitation,
    Plasma.PtGetLocalizedString("KI.Commands.ShowInvites"): xInvite.ShowInvitations,
    Plasma.PtGetLocalizedString("KI.Commands.Me"):          xInvite.MeChat,
    "list":                                                markereditor.listGames,
    "download":                                        markereditor.downloadGame,
    "vers":                                              Vers,
    "nextsp":                                            NextSP,
    "call":                                                Call,
    "callid":                                              CallID,
    "goto":                                              GoTo,
    "gotoid":                                            GoToID,
    "onme":                                              OnMe,
    "onmeid":                                            OnMeID,
    "on":                                                  On,
    "onid":                                                OnID,
    "rassembler":                                      WarpExcept,
    "suivre":                                            Suivre,
    "action":                                            Action,
    "visible":                                            Visible,
    "etre":                                              Etre,
    "animeav":                                          AnimeAv,
    "lucioles":                                          LuciolesSur,
    "infoage":                                          InfoAge,
    "murs":                                              Murs,
    "cloneage":                                        CloneAge,
    "onoffso":                                          ONOFFSO,
    "voir":                                              Voir,
    "bahro":                                            PlaceBahro,
    "archer":                                            RArche,
    "fogoff":                                            FogOff
}

Tout ce qui est avant et après reste inchnagé dans le module.
V@-Michel
V@-Michel
Admin
Admin

Messages : 1172
Date d'inscription : 13/05/2010
Age : 69
Localisation : Belgique

Revenir en haut Aller en bas

Comment lancer nos commandes favorites directement dans le "chat" du jeu Empty Re: Comment lancer nos commandes favorites directement dans le "chat" du jeu

Message  V@-Michel Ven 17 Aoû - 20:01

Après quelques essais, il s'avère que les fonctions qui possèdent plus d'un paramètre ne fonctionnent pas dans le chat Sad .
Il est nécessaire dans ce cas de les modifier de manière à n'avoir qu'un seul paramètre. Mais vous allez me dire que ce n'est pas possible Surprised

Si c'est possible. Je vais prendre un exemple.

Imaginons que j'aie la fonction suivante :

FonctionMachin ('param1','param2',param3) et que j'appelle par: FonctionMachin('moi','lui',25)

Comment faire pour que cette fonction ne possède plus qu'un seul paramètre?
Il suffit de mettre tous les paramètres dans un seul entre guillemets puis de splitter pour obtenir chacun des paramètres séparés. Bien-sûr cela demande du code supplémentaire mais au final, cela fonctionnera dans le chat et même dans la console Python votre commande sera plus simple à taper.

Voici ce que cela donne pour l'exemple ci-dessus :

Code:

def FonctionMachin(parametres="") :

    param = parametres.split (',') # remarquez la virgule qui sera utilisée comme séparateur dans parametres
    param1 = parametre[0]
    param2 = parametre[1]
    param3 = int(parametre[2])

#ici la suite de la fonction telle que vous l'aviez établie auparavant.

Je taperai donc comme commande (pour reprendre le même exemple que ci-dessus) :

FonctionMachin("moi,lui,25")

Remarque 1 : regardez bien pour param3 j'ai placé la fonction int(parametre[2]) afin de dire au programme que ce paramètre est un chiffre entier et non une chaîne de caractères. Si vous ne mettez rien comme pour les deux premiers paramètres ceux-ci seront interprétés comme des chaînes de caractères. Donc n'oubliez pas d'indiquer le type de paramètre.

Remarque 2 : l'index du premier paramètre est [0], l'index du second paramètre est [1] et celui du troisième est [2] et ainsi de suite.

Remarque 3 : ici, le séparateur entre les paramètres est une virgule. Mais vous pouvez utiliser un autre caractère comme séparateur. Par exemple, si j'avais voulu utiliser le caractère / comme séparateur, j'aurais tapé :

FonctionMachin("moi/lui/25") et donc dans la fonction j'aurais mis : param = parametres.split ('/')

C'est à vous de voir ce qui vous convient le mieux comme séparateur en fonction de ce que vous taperez dans les paramètres, car, dès que le programme rencontrera ce séparateur dans la ligne de commande, il l'interprétera comme devant couper le paramètre à cet endroit !

J'espère que ceci sera clair et vous aidera à progresser dans la programmation en Python Very Happy
V@-Michel
V@-Michel
Admin
Admin

Messages : 1172
Date d'inscription : 13/05/2010
Age : 69
Localisation : Belgique

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum