|
You last visited: Today at 02:31
Advertisement
[Python] Quest Bot
Discussion on [Python] Quest Bot within the Metin2 Private Server forum part of the Metin2 category.
01/28/2015, 10:29
|
#1
|
elite*gold: 278
Join Date: Aug 2010
Posts: 145
Received Thanks: 19
|
[Python] Quest Bot
Hallo,
ich versuche gerade einen Bot zu realisieren, der eine Quest ausführt.
Das ganze teste ich gerade mit dem Seelenstein.
Das ganze sind dann 4 Buttons (Weiter, Fähigkeit auswählen, wieder weiter und dann ok).
Ich hab das ganze so versucht:
PHP Code:
class Botdialog(ui.ThinBoard):
###########################################################################################################################################
def __init__(self):
ui.ThinBoard.__init__(self)
self.LoadBoard()
self.OldRecv = game.GameWindow.OpenQuestWindow
self.InstallQuestWindowHook()
###########################################################################################################################################
def InstallQuestWindowHook(self):
game.GameWindow.OpenQuestWindow = self.HookedQuestWindow
chat.AppendChat(1, "Quest Window wurde erfolgreich gehooked.")
def UnHookQuestWindow(self):
game.GameWindow.OpenQuestWindow = self.OldRecv
chat.AppendChat(1, "Quest Window Hook wurde entfernt.")
def HookedQuestWindow(self, skin, idx):
pass
#####################################################################################
def __del__(self):
ui.ThinBoard.__del__(self)
self.UnHookQuestWindow()
def Destroy(self):
self.Hide()
return TRUE #####################################################################################
def LoadBoard(self):
self.SetCenterPosition()
self.SetSize(300, 200)
self.Show()
self.AddFlag("movable")
#######################################################
self.LoadText()
self.LoadButton()
######################################################
def LoadText(self):
self.Titel = ui.TextLine()
self.Titel.SetParent(self)
self.Titel.SetDefaultFontName()
self.Titel.SetPosition(-80, 4)
self.Titel.SetFeather()
self.Titel.SetWindowHorizontalAlignCenter()
self.Titel.SetText("Tool")
self.Titel.SetFontColor(1.1, 2.8, 7)
self.Titel.SetOutline()
self.Titel.Show() #####################################################################################
def LoadButton(self):
self.CloseButton = ui.Button()
self.CloseButton.SetParent(self)
self.CloseButton.SetPosition(280, 4)
self.CloseButton.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
self.CloseButton.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
self.CloseButton.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
self.CloseButton.SetToolTipText(locale.UI_CLOSE, 0, - 23)
self.CloseButton.SetEvent(ui.__mem_func__(self.Destroy))
self.CloseButton.Show()
######################################################
self.Seelensteinstart = ui.Button()
self.Seelensteinstart.SetParent(self)
self.Seelensteinstart.SetPosition(20, 20)
self.Seelensteinstart.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
self.Seelensteinstart.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
self.Seelensteinstart.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
self.Seelensteinstart.SetEvent(ui.__mem_func__(self.Seelensteinquest))
self.Seelensteinstart.Show() #####################################################################################
def Seelensteinquest(self):
for i in xrange(player.INVENTORY_PAGE_SIZE*2):
ItemValue = player.GetItemIndex(i)
if ItemValue == 50513:
net.SendItemUsePacket(i)
event.SelectAnswer(1, 0)
event.SelectAnswer(1, 0)
event.SelectAnswer(1, 0)
event.SelectAnswer(1, 0)
break
################################################################
Das ganze funktioniert leider nicht so ganz :/
Was mach ich falsch?
Mfg
|
|
|
01/29/2015, 22:10
|
#2
|
elite*gold: 278
Join Date: Aug 2010
Posts: 145
Received Thanks: 19
|
keiner eine Idee? :/
Mach ich beim Hooken was falsch? Sind ja eig. die Func von DaRealFreak.
|
|
|
01/29/2015, 22:27
|
#3
|
elite*gold: 44
Join Date: Dec 2009
Posts: 1,696
Received Thanks: 3,833
|
Andere Frage, wieso?
|
|
|
01/29/2015, 22:56
|
#4
|
elite*gold: 5
Join Date: Mar 2013
Posts: 1,986
Received Thanks: 2,254
|
Eine bessere Fehlerbeschreibung , die syserr und das komplette Script wären von Vorteil, wenn du ernsthafte, nützliche Antworten möchtest
|
|
|
01/29/2015, 23:07
|
#5
|
elite*gold: 278
Join Date: Aug 2010
Posts: 145
Received Thanks: 19
|
Nadann hier der ganze Code:
PHP Code:
###########################################################################################################################################
import app
import chat
import chr
import locale
import net
import player
import time
import ui
import player
import chrmgr
import background
import nonplayer
import os
import event
import game
###########################################################################################################################################
class Botdialog(ui.ThinBoard):
###########################################################################################################################################
def __init__(self):
ui.ThinBoard.__init__(self)
self.LoadBoard()
self.OldRecv = game.GameWindow.OpenQuestWindow
self.InstallQuestWindowHook()
###########################################################################################################################################
def InstallQuestWindowHook(self):
game.GameWindow.OpenQuestWindow = self.HookedQuestWindow
chat.AppendChat(1, "Quest Window wurde erfolgreich gehooked.")
def UnHookQuestWindow(self):
game.GameWindow.OpenQuestWindow = self.OldRecv
chat.AppendChat(1, "Quest Window Hook wurde entfernt.")
def HookedQuestWindow(self, skin, idx):
pass
########################################################################################################################################
def __del__(self):
ui.ThinBoard.__del__(self)
def Destroy(self):
self.Hide()
return TRUE
###########################################################################################################################################
def LoadBoard(self):
self.SetCenterPosition()
self.SetSize(300, 200)
self.Show()
self.AddFlag("movable")
###########################################################################################################################################
self.LoadText()
self.LoadButton()
###########################################################################################################################################
def LoadText(self):
self.Titel = ui.TextLine()
self.Titel.SetParent(self)
self.Titel.SetDefaultFontName()
self.Titel.SetPosition(-80, 4)
self.Titel.SetFeather()
self.Titel.SetWindowHorizontalAlignCenter()
self.Titel.SetText("Tool")
self.Titel.SetFontColor(1.1, 2.8, 7)
self.Titel.SetOutline()
self.Titel.Show()
###########################################################################################################################################
def LoadButton(self):
self.CloseButton = ui.Button()
self.CloseButton.SetParent(self)
self.CloseButton.SetPosition(280, 4)
self.CloseButton.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
self.CloseButton.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
self.CloseButton.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
self.CloseButton.SetToolTipText(locale.UI_CLOSE, 0, - 23)
self.CloseButton.SetEvent(ui.__mem_func__(self.Destroy))
self.CloseButton.Show()
###########################################################################################################################################
self.Seelensteinstart = ui.Button()
self.Seelensteinstart.SetParent(self)
self.Seelensteinstart.SetPosition(20, 20)
self.Seelensteinstart.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
self.Seelensteinstart.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
self.Seelensteinstart.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
self.Seelensteinstart.SetEvent(ui.__mem_func__(self.Seelensteinquest))
self.Seelensteinstart.Show()
###########################################################################################################################################
def Seelensteinquest(self):
for i in xrange(player.INVENTORY_PAGE_SIZE*2):
ItemValue = player.GetItemIndex(i)
if ItemValue == 50513:
net.SendItemUsePacket(i)
event.SelectAnswer(1, 0)
event.SelectAnswer(1, 0)
event.SelectAnswer(1, 0)
event.SelectAnswer(1, 0)
break
################################################################
class WaitingDialog(ui.ScriptWindow):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.eventTimeOver = lambda *arg: None
self.eventExit = lambda *arg: None
def __del__(self):
ui.ScriptWindow.__del__(self)
def Open(self, waitTime):
curTime = time.clock()
self.endTime = curTime + waitTime
self.Show()
def Close(self):
self.Hide()
def Destroy(self):
self.Hide()
def SAFE_SetTimeOverEvent(self, event):
self.eventTimeOver = ui.__mem_func__(event)
def SAFE_SetExitEvent(self, event):
self.eventExit = ui.__mem_func__(event)
def OnUpdate(self):
lastTime = max(0, self.endTime - time.clock())
if 0 == lastTime:
self.Close()
self.eventTimeOver()
else:
return
def OnPressExitKey(self):
self.Close()
return TRUE
###########################################################################################################################################
StartDialog = Botdialog()
StartDialog.Show()
Syserr ist natürlich nichts drin  schließlich bekomme ich keine Fehlermeldung.
Naja also ich will damit die Seelensteinquest vorerst automatisieren (Bot) nur leider öffnet er durch die Hookfunktion den Seelenstein anscheind nicht -> es passiert nichts.
Quote:
Originally Posted by Isaac™
Andere Frage, wieso?
|
Was wieso?
Danke
|
|
|
 |
Similar Threads
|
Quest rufen in python
09/06/2014 - Metin2 Private Server - 10 Replies
Hallo,
Ich möchte es fragen, ob es möglich ist, dass ein Quest im Spiel per python bot rufen?
Es gib ein NPC und 2 quest bei ihm. Ich möchte das erste quest nutzen mit dem Bot.
Gibt es einen Befehl, womit ich das Quest rufen kann? Ich werde neben dem NPC stehen.
(Vielleicht net.SendOnClickPacket() :confused: ?)
Vielen Dank im Voraus!
|
Python / Quest
03/09/2014 - Metin2 Private Server - 6 Replies
Hallo,
ich wollte mal fragen wie ich es am besten umsetze wie das Gildenlager möchte gern soetwas in der art machen.
Wäre nett wen mir das irgendwer beibringen könnte oder erklären könnte wie das geht.
MfG
|
Python GUI, Quest, Befehle?
02/05/2014 - Metin2 Private Server - 1 Replies
Hey COM,
ich hab mir vorgenommen, mich mal etwas mit Python und dem dazugehörigem Kram auseinander zu setzen.
Mich interessiert folgendes:
Wie läuft das ab, ich hab gelesen das man ein GUI in meinem Fall sind es "Label" mit einer Quest füllen kann. Wie stell ich das aber an, was muss ich in die Quest packen um dann im GUI die Zahl 1 stehen zu haben? (Wenns n schönes HowTo gibt, wärs nett wenn es gepostet wird.
Desweiteren hab ich mich zu dem Python Thema noch gefragt, wo die...
|
Python / input quest
04/22/2013 - Metin2 Private Server - 0 Replies
Hallo,ich würde gerne eine funktion teils python schreiben und es via chatpacket ausgeben zb wie hier
net.SendChatPacket("/war " + guildName)
nur das bei guildname das eingegebene stehen soll, wie kann ich es in einer Funktion schreiben?
|
Which Quest Gives The Key For Python?
09/10/2008 - Dekaron Private Server - 2 Replies
Which quest guy i have to see to get the key to enter the python inside the 90 dungeon in x360 private server?
I cant find the quest because is full of weird contexts and idk how to get the key to get inside the door of python.
A help would and a detailed description would be really appreciate it and thanks would be given
|
All times are GMT +1. The time now is 02:32.
|
|