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

Liaison Python->LUA // LUA->Python


Metin2 Dev

Messages recommandés

  • Robot

Bonjour à tous.

 

Mais concrètement... Non. J'vais vous apprendre par cmdchat d'un côté comme de l'autre.

 

Et le mien est je pense plus complet.

 


 

Envoyé des informations LUA ---> Python : 

 

Côté serveur :

Bien, pour l'exemple, on va commencer par créer notre quête TRRRRRRRES SIMPLE !

 

On va nommer notre quête... lua_python par exemple :

quest lua_python begin
	state start begin
	end
end
 

Bien, de dans, nous allons créer notre liaison. Pour cela, on va se servir de cmdchat(). On va l'utiliser comme ça :

 

quest lua_python begin
	state start begin
		when login begin
			local number = 5
			cmdchat("lua_python_command " .. number )
		end
	end
end
 

Bon, j'utilise un nombre pour vous montrer au passage qu'on peut additionner les chaines de texte et les variables sans problème, comme partout.

C'est simple, un petit coup de make et un reload/reboot !

 

Côté client : 

 

Vous allez pour ça depack votre root, et vous rendre dans le game.py où toutes les liaisons se trouvent :

Cherchez la fonction : 

 

def __ServerCommand_Build(self):
 

Vous devriez avoir quelque chose comme ceci :

091458Screenshot-6.png

 

Vous trouvez ici :

"Nom que vous avez mit dans le cmdchat" ----------------- : fonction Python qui va s'exécuter,

 

Mettez donc au milieu des autres, et en adaptant pour vous : 

"lua_python_command"				: self.ma_fonction_python,
 

Vous pouvez ensuite vous rendre à la fin de votre game.py, et ajouter :

def ma_fonction_python(self):	pass
 

 

Et la remplir comme vous le souhaitez.

 

Repackez, et c'est terminé.

 

Félicitations ! 

 

Envoyé des informations Python ---> LUA : 

 

Bon, on a fait le plus simple, mais là, ça se corse ! 

Je vais reprendre notre ancienne quête, mais y ajouter quelque chose : 

quest lua_python begin
	state start begin
		when login begin
			cmdchat("quest_name_index "..q.getcurrentquestindex())
		end
		when button or info begin
			say("CA MARCHE !")
		end
	end
end
 

Le  quest_name_index est très important (dans le cmdchat()) ! C'est lui qui envoie les infos cruciales au client ! 

 

Retournons dans notre game.py, recherchons encore :

 

def __ServerCommand_Build(self):
 

Ajoutons cette fois :

 

"quest_name_index"				: self.FonctionLambda,
 

Ajoutons à la fin de notre game.py :

 

def FonctionLambda(self, questindex):
	constInfo.QUESTNAMEINDEX = questindex
 

Ajoutons à notre constinfo.py ceci :

 

QUESTNAMEINDEX = 0
 

Utilisons maintenant cette fonction pour faire appelle à notre quête :

 

def ButtonFonction(self):
	import event
	import constInfo
	event.QuestButtonClick(int(constInfo.QUESTNAMEINDEX))
 

 

Vous avez déjà une bonne base !

 

Mais.. On va pas s'arrêter là ! 

 

Envoyé des informations Python ---> LUA, les variables : 

 

Prenons maintenant ceci comme quête :

quest lua_python begin
	state start begin
		when login begin
			cmdchat("quest_name_index "..q.getcurrentquestindex())
		end
		function GetFromClient()
			local variables = input(cmdchat("getInfo"))
			return variables
		end
		when button or info begin
			local things = lua_python.GetFromClient()
			say(things)
		end
	end
end
 

On a ici plusieurs choses :

 

  • Un cmdchat() qui permet à notre client de savoir de quelle quête on parle,
  • Une fonction (GetFromClient)
  • Un cmdchat() qui permet de récupérer les bonnes informations,
  • etc...

 

Bien, retournons ensuite dans notre game.py, toujours dans la fonction :

 

def __ServerCommand_Build(self):
 

On va ajouter ça :

 

"getInfo"				: self.GetInfoFonction,
 

Ajoutons dans le costinfo :

 

INFORMATION_TO_SEND = "message de Takuma"
 

Et ajoutez à la fin du game :

 

def GetInfoTut(self):
	net.SendQuestInputStringPacket(str(constInfo.INFORMATION_TO_SEND))
 

Et normalement, à chaque fois que vous allez exécuter cette fonction, la valeur de la variable sera transmise.

 


 

J'espère pas avoir fait de connerie :o

Inspiration : Zetsu.

 

Bonne chance ! :D

 

  • Love 2

french_banner.gif

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 6
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

  • 2 mois après...


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 6

      problème de connexion à mon serveur local (je suis débutant dans ce genre d'entreprise )

    2. 2

      problème de lancement serveur

    3. 9
    4. 0

      [PVM/PVP] ATLAX2 - EASY PLAY

    5. 2

      problème de lancement serveur

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.