Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 18:14

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Python]Gui-Position ermitteln? // Funktion aus Game ausführen?

Discussion on [Python]Gui-Position ermitteln? // Funktion aus Game ausführen? within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1
 
|★|554's Avatar
 
elite*gold: 150
Join Date: Sep 2009
Posts: 855
Received Thanks: 486
[Python]Gui-Position ermitteln? // Funktion aus Game ausführen?

Ja, Hallo, ich versuche mit derzeit verstärkt an Python und hätte da 2 kleine Probleme, habe ihn der Sufu dazu nichts gefunden, also frage ich hier.

1.: Ich habe mir ein Board erstellt und zwar "movable".
Gibt es eine Möglichkeit, die aktuelle Boardposition zu ermitteln, also die Koordinaten der linken, oberen Ecke?

2.: Gibt es eine Möglichkeit, eine in der game.py definierte Funktion aus einer anderen .py-Datei aus auszuführen?
Ich schaff's nur über nen QuestbuttonClick, welcher dann einen cmdchat sendet, so möchte ich es aber nicht lösen.
Hier im Forum wird man darauf verwiesen, die Funktion in der anderen .py-Datei nochmal neu zu schreiben, das habe ich auch versucht, allerdings muss ich dafür die interfacemodule.py laden und das führte im Endeffekt zu unschönen Bugs. (GUI schließen -> "GameWindow" ist nicht ausgewählt, heißt, ohne einen Mausklick waren keine Interaktionen möglich, Minimap wurde ausgeblendet u.A.)
Ich möchte lediglich die
PHP Code:
    def OpenWhisperDialog(selfname): 
Funktion mit einem variierenden Namen ausführen, ohne dies über ne Quest + cmdchat() oder Bugs lösen zu müssen.

Vielen Dank schonmal
|★|554 is offline  
Old 06/29/2013, 16:52   #2
 
.Azazel's Avatar
 
elite*gold: 0
Join Date: Jun 2013
Posts: 8
Received Thanks: 8
Code:
def Beispiel(self):
	import beispiel
	exec 'beispiel.Beispiel.Show()'
Bei exec:
'dateiname.Klassenname.Show()'

MfG
.Azazel is offline  
Thanks
1 User
Old 06/29/2013, 16:56   #3
 
Ʀyuzaki's Avatar
 
elite*gold: 0
Join Date: Sep 2012
Posts: 815
Received Thanks: 627
Zu deinem Punkt zwei
PHP Code:
self.interface = interfaceModule.Interface()
self.interface.OpenWhisperDialog(name
Damit kannst du die Funktion OpenWhisperDialog ausführen
Hier nochmal die Erklärung zum Aufbau
PHP Code:
self.variable datei.klasse
self
.variable.function(parameter
Hoffe mal du verstehst den Aufbau wen nicht kannst du mich gerne Anschreiben dann erkläre ich dir das nochmal
Ʀyuzaki is offline  
Thanks
1 User
Old 06/29/2013, 16:59   #4
 
|★|554's Avatar
 
elite*gold: 150
Join Date: Sep 2009
Posts: 855
Received Thanks: 486
Quote:
Originally Posted by NexT³ View Post
Zu deinem Punkt zwei
PHP Code:
self.interface = interfaceModule.Interface()
self.interface.OpenWhisperDialog(name
Damit kannst du die Funktion OpenWhisperDialog ausführen
Hier nochmal die Erklärung zum Aufbau
PHP Code:
self.variable datei.klasse
self
.variable.function(parameter
Hoffe mal du verstehst den Aufbau wen nicht kannst du mich gerne Anschreiben dann erkläre ich dir das nochmal
Ja, so hatte ich's auch gemacht, nur führte dies zu Bugs beim schließen des Boards.
Man konnte dann nämlich solange NICHTS tun, bis man einen Mausklick gesetzt hat.
Man konnte nicht laufen, keine Hotkeys verwenden, die Kamera drehen, nichts.

Bzw. reicht das, was du da geschrieben hast, noch nicht, da er erst über
PHP Code:
MakeInterfaces() 
Variablen für
PHP Code:
OpenWhisperDialog 
aufbauen muss
|★|554 is offline  
Old 06/29/2013, 17:39   #5
 
[uLow]Beni's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 1,781
Received Thanks: 618
Ihr stehlt euch das alle so einfach vor...

...da in der game.py alle Funktionen in einer Klasse sind muss man zuerst die Instanze rausbekommen also auf was das self zeigt.

Das geht am leichtesten mit der OnUpdate Funktion:
Code:
from game import GameWindow
originalOnUpdateFunc = GameWindow.OnUpdate
selfOfGameWindow = None
def hijack(self):
     global selfOfGameWindow
     selfOfGameWindow=self
     GameWindow.OnUpdate = originalOnUpdateFunc

GameWindow.OnUpdate = hijack
def new_thread():
     while selfOfGameWindow is None:
          pass
     OnFinish()

def OnFinish(): # add **** here :P
     return

__import__("thread").start_new_thread(new_thread,())
Sollte vorm ingame kommen ausgeführt werden, ansonsten wirds wahrscheinlich nicht funktionieren
[uLow]Beni is offline  
Old 06/29/2013, 17:49   #6
 
|★|554's Avatar
 
elite*gold: 150
Join Date: Sep 2009
Posts: 855
Received Thanks: 486
Quote:
Originally Posted by !Beni! View Post
Ihr stehlt euch das alle so einfach vor...

...da in der game.py alle Funktionen in einer Klasse sind muss man zuerst die Instanze rausbekommen also auf was das self zeigt.

Das geht am leichtesten mit der OnUpdate Funktion:
Code:
from game import GameWindow
originalOnUpdateFunc = GameWindow.OnUpdate
selfOfGameWindow = None
def hijack(self):
     global selfOfGameWindow
     selfOfGameWindow=self
     GameWindow.OnUpdate = originalOnUpdateFunc

GameWindow.OnUpdate = hijack
def new_thread():
     while selfOfGameWindow is None:
          pass
     OnFinish()

def OnFinish(): # add **** here :P
     return

__import__("thread").start_new_thread(new_thread,())
Sollte vorm ingame kommen ausgeführt werden, ansonsten wirds wahrscheinlich nicht funktionieren
Und wo sollte ich das dann einsetzen? Das GUI wird erst nach Drücken von nem Hotkey geladen, also viel zu spät ums da einzusetzen.
Und um erhlich zu sein, ganz verstehen tu ich's ned.
Wäre dir dankbar, dass ausführlich zu erklären, aber da ich noch ein Anfänger in Sachen Python bin sollte ich mich solchen Dingen vielleicht noch garnicht witmen. ^^
|★|554 is offline  
Reply


Similar Threads Similar Threads
[Problem]Python Funktion
07/17/2012 - Metin2 Private Server - 4 Replies
Bei meinem Client funktioniert leider nicht mit die STRG+Q funktion das die Quests aus dem Fenster verschwinden syserr Funktion: def __PressQKey(self): if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL): if 0==interfaceModule.IsQBHide: interfaceModule.IsQBHide = 1
Python programm ausführen?
05/12/2012 - General Coding - 2 Replies
Hey Leute, habe mir was zusammengebastelt mit Python, soweit so gut funktioniert nach viel herumgedaddel nun endlich alles wie es soll.... Dann hab ich mich an eine GUI gesetzt, und diese Spaßeshalber mit AutoIt gebastelt, geht einfach schneller und will meine AutoItkenntnisse nicht gänzlich verlieren. Mein Problem: mit Run(Name.pyw,@ScriptDir) Oder sonstiges funktioniert es nicht, wer hätte das gedacht?^^ Also muss ne executable datei her... nur wie Compile ich ne .pyw, so dass ich ne .exe...
Python Functions von Mt2 per C++ Code Inject ausführen?
12/02/2011 - C/C++ - 5 Replies
Hallo, wollte fragen, ob mir eventuell jemand beantworten kann, wie man Python Functions nützt, welche in den Metin2 - pack Files gespeichert sind. Und ob das überhaupt so wie ich mir das vorstelle möglich ist.
spieleigene funktion per hotkey ausführen, aber wie ?
07/31/2011 - AutoIt - 2 Replies
guten morgen :) ich melde mich mal zurück mit einer frage die mich schon immer interessiert hat... also, ich finde beim betrachten des disassembler-codes oft funktionen deren namen recht einleuchtend sind, d.h. es lässt sich vermuten was diese bewirkt. nun würde ich gerne wissten wie ich diese funktion am besten beeinträchtigen kann bzw am liebsten selber ausfüren kann, per hotkey. in meinem beispiel hab ich im spiel eine funktion gefunden die offenbar einen zeitcounter resetted... im...
PYTHON SCRIPTS AUSFÜHREN
03/12/2010 - Metin2 - 2 Replies
kennt jmd in metin2 n py script, das ein anderes script ausführt, oder weiß jmd wie man das macht??



All times are GMT +2. The time now is 18:14.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.