Heut will ich euch den Clientmod von Kamer1337 vorstellen den Dss Switcher.
Wie ihr ihn einbaut werde ich euch jetzt erklären.
Dss Switcher:
Punkt 1. Entpackt die Root[Eix,Epk]
Punkt 2. Öffnet die game.py
Punkt 3. Setzt einen Hotkey->
Punkt 4. Dann die Funktion setzen:
Dann noch diese Funktion:
Punkt 5. Öffnet die uicommon.py und sucht nach
Punkt 6. Ersetzt die Funktion durch dies :
Und abspeichern.
Punkt 7. Geht Ingame zieht Eure Dss Waffe in den ersten Slot und drückt F8.Gebt den Dss Wert an den ihr mindestens haben wollt und wartet bis er den Dss Wert erreicht hat.
Punkt 2. Öffnet die game.py
Punkt 3. Setzt einen Hotkey->
PHP Code:
onPressKeyDict[app.DIK_F8] = lambda : self.StatsChangerStart()
PHP Code:
def StatsChangerStart(self):
guildNameBoard = uiCommon.InputDialogWithDescription()
guildNameBoard.SetTitle("Dss Changer")
guildNameBoard.SetDescription("Wert:")
guildNameBoard.SetMaxLength(2)
guildNameBoard.SetAcceptEvent(ui.__mem_func__(self.StatsChanger))
guildNameBoard.SetCancelEvent(ui.__mem_func__(self.CancelGuildName))
guildNameBoard.Open()
self.guildNameBoard = guildNameBoard
PHP Code:
def StatsChanger(self):
SLOT_COUNT = 80
val, bon = player.GetItemAttribute(0, 0) #(itempos, atrr)
self.connectingDialog = introLogin.ConnectingDialog()
Search = self.guildNameBoard.GetText()
if bon < int(Search):
DELAY_SEC = 1.0
self.connectingDialog.Open(DELAY_SEC)
self.connectingDialog.SetText("Aktualne Œrednie: " + str(bon) + ", Szukam: " + str(Search) + "+")
self.connectingDialog.SAFE_SetTimeOverEvent(self.StatsChanger)
self.connectingDialog.SAFE_SetExitEvent(self.OnCloseQuestionDialog)
for eachSlot in xrange(SLOT_COUNT):
getShopItemID = shop.GetItemID(eachSlot)
itemVNum = player.GetItemIndex(eachSlot)
if getShopItemID == 71084 and not itemVNum == 71084:
net.SendShopBuyPacket(eachSlot)
if itemVNum == 71084:
net.SendItemUseToItemPacket(eachSlot, 0)
break
else:
self.connectingDialog.Close()
PHP Code:
class InputDialogWithDescription(InputDialog):
PHP Code:
class InputDialogWithDescription(InputDialog):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__CreateDialog()
def __del__(self):
InputDialog.__del__(self)
def __CreateDialog(self):
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/inputdialogwithdescription.py")
try:
getObject = self.GetChild
self.board = getObject("Board")
self.acceptButton = getObject("AcceptButton")
self.cancelButton = getObject("CancelButton")
self.inputSlot = getObject("InputSlot")
self.inputValue = getObject("InputValue")
self.description = getObject("Description")
except:
import exception
exception.Abort("InputDialogWithDescription.LoadBoardDialog.BindObject")
def SetTitle(self, name):
self.board.SetTitleName(name)
def SetNumberMode(self):
self.inputValue.SetNumberMode()
def SetSecretMode(self):
self.inputValue.SetSecret()
def SetFocus(self):
self.inputValue.SetFocus()
def SetAcceptEvent(self, event):
self.acceptButton.SetEvent(event)
self.inputValue.OnIMEReturn = event
def SetCancelEvent(self, event):
self.board.SetCloseEvent(event)
self.cancelButton.SetEvent(event)
self.inputValue.OnPressEscapeKey = event
def SetDescription(self, text):
self.description.SetText(text)
def Open(self):
self.inputValue.SetFocus()
self.SetCenterPosition()
self.SetTop()
self.Show()
def Close(self):
self.ClearDictionary()
self.board = None
self.acceptButton = None
self.cancelButton = None
self.inputSlot = None
self.inputValue = None
self.Hide()
def GetText(self):
return self.inputValue.GetText()
Punkt 7. Geht Ingame zieht Eure Dss Waffe in den ersten Slot und drückt F8.Gebt den Dss Wert an den ihr mindestens haben wollt und wartet bis er den Dss Wert erreicht hat.
Fks Switcher[Untested]:
FKS-Switcher[Thx Goxide]
Wie angekündigt veröffentliche ich nun den hidden FKS-Switcher... Dieser basiert auf dem hidden DSS-Switcher bei welchem nur ein paar Dinge geändert wurden.
Im Vorraus... Wenn ich die FKS-Switcher und DSS-Switcher Funktionen versuche in eine Game.py Datei packe, klappt das Starten von Metin nicht. Ich habe also zwei Root-Dateien Archive, ein Archiv welches die modifizierten Roots mit dem DSS-Switcher beeinhaltet und eines mit dem FKS-Switcher. Je nachdem was ich switchen will, entpack ich mir vor dem Start die jeweilige Datei.
Ok losgehts:
Ebenso wie beim DSS-Switcher setzten wir am Anfang einen Hotkey, damit wir die Funktion ingame bequem starten können:
Jetzt kommt die StatsChangerStart Funktion die wir schon vom DSS-Switcher kennen. Natürlich ändern wir noch ein paar Texte, sodass diese zum FKS-Switcher passen:
Wichtig, damit die Funktion richtig läuft, müsst ihr die Klasse InputDialogWithDescription(InputDialog) aus der uiCommon.py mit dem Code aus Post 1 überschreiben.
Jetzt die eigentliche Switch-Funktion:
Welche Änderungen wurde vorgenommen und warum?
Der Befehl in Zeile 3 liest den Wert des zweiten Bonus der Waffe auf dem ersten Slot ein und speichert in der Variable bon. Beim Dss-Switcher haben wir den ersten Bonus eingelesen.
Die zweite Änderung ist die Alternativbedingung bei dem If-Statement. Diese sagt aus: "Führe den If-Block aus wenn der zweite Bonus kleiner ist als der gesuchte oder wenn der zweite Bonus größer oder gleich ist wie der gesucht und der erste Bonus größer als Null ist!"
Aber warum? Im If-Block wird doch neu geswitcht?! Warum soll er ausgeführt werden wenn der zweite Bonus größer oder gleich wie der gesuchte ist.
Wenn der Fks-Wert 0 ist wird dieser nicht eingeblendet. Dafür wird ein anderer Bonus als zweiter eingeblendet, zum Beispiel "+15 Lebenskraft". Da nicht gecheckt wird ob der zweite Bonus überhaupt Fks ist, sondern einfach eingelesen wird würde jetzt 15 als Fks-Wert angesehen werden. Ist der gesuchte Wert ist 12 würde der Bot stoppen obwohl der Fks-Wert gar nicht 12 oder höher ist sondern 0, und nur der 15 Lebenskraft Boni als Fks-Wert angesehen wird. Das Problem kann man lösen!
Wenn eine Waffe einen hohen Fks-Wert hat, hat sie automatisch einen nicht so hohen Dss-Wert. Hier wird jetzt einfach der Dss-Wert geprüft und wenn dieser kleiner null ist, muss der Fks-Wert mittel-hoch sein. Also muss, wenn der Fks-Wert höher als der gesuchte ist der DSS-Wert negativ sein (außer man gibt Werte kleiner als 3 ein).
Ist der erste Bonus 13 Dss und der zweite 30 Orks und wird nach 17 gesucht, wird weiter geswitcht da zwar der Bonus höher ist als der Gesuchte, aber der Dss-Wert bei einem Fks-Wert 17+ aufjedenfall negativ sein müsste, was er aber nicht ist.
So der Rest ist wieder, bis auf ein paar Anpassungen, Coppy & Paste vom Dss-Switcher.
Hier sind mal meine Root-Dateien mit dem Fks-Switcher (für die, die zu faul sind zum rauskopieren ):
Virustest:
Achja, falls beim Klicken auf Ok mal nichts passieren sollte, schaut dass auf der Waffe die ihr switchen wollt der Wert des zweiten Bonus nicht über dem gesuchten ist. Also wenn ihr 15 Fks wollt und 15 Lebenskraft als zweiter Bonus auf der Waffe ist, switcht den einfach weg!
Würde mich über Feeds obs denn klappt freuen!
Mfg Goxide
Wie angekündigt veröffentliche ich nun den hidden FKS-Switcher... Dieser basiert auf dem hidden DSS-Switcher bei welchem nur ein paar Dinge geändert wurden.
Im Vorraus... Wenn ich die FKS-Switcher und DSS-Switcher Funktionen versuche in eine Game.py Datei packe, klappt das Starten von Metin nicht. Ich habe also zwei Root-Dateien Archive, ein Archiv welches die modifizierten Roots mit dem DSS-Switcher beeinhaltet und eines mit dem FKS-Switcher. Je nachdem was ich switchen will, entpack ich mir vor dem Start die jeweilige Datei.
Ok losgehts:
Ebenso wie beim DSS-Switcher setzten wir am Anfang einen Hotkey, damit wir die Funktion ingame bequem starten können:
PHP Code:
onPressKeyDict[app.DIK_F8 = lambda : self.StatsFksChangerStart()
PHP Code:
def StatsFksChangerStart(self):
guildNameBoard = uiCommon.InputDialogWithDescription()
guildNameBoard.SetTitle("Auto Fks Switcher")
guildNameBoard.SetDescription("Gewünschte Fks:")
guildNameBoard.SetMaxLength(2)
guildNameBoard.SetAcceptEvent(ui.__mem_func__(self.StatsChanger))
guildNameBoard.SetCancelEvent(ui.__mem_func__(self.CancelGuildName))
guildNameBoard.Open()
self.guildNameBoard = guildNameBoard
Jetzt die eigentliche Switch-Funktion:
PHP Code:
def StatsFksChanger(self):
SLOT_COUNT = 80
val, bon = player.GetItemAttribute(0, 1) #(itempos, atrr)
self.connectingDialog = introLogin.ConnectingDialog()
Search = self.guildNameBoard.GetText()
if bon < int(Search) or (bon > int(Search) and player.GetItemAttribute(0, 0) > 0):
DELAY_SEC = 1.0
self.connectingDialog.Open(DELAY_SEC)
self.connectingDialog.SetText("Aktuelle Fks: " + str(bon) + ", Wunsch Fks: " + str(Search) + "+")
self.connectingDialog.SAFE_SetTimeOverEvent(self.StatsChanger)
self.connectingDialog.SAFE_SetExitEvent(self.OnCloseQuestionDialog)
for eachSlot in xrange(SLOT_COUNT):
getShopItemID = shop.GetItemID(eachSlot)
itemVNum = player.GetItemIndex(eachSlot)
if getShopItemID == 71084 and not itemVNum == 71084:
net.SendShopBuyPacket(eachSlot)
if itemVNum == 71084:
net.SendItemUseToItemPacket(eachSlot, 0)
break
else:
self.connectingDialog.Close()
Der Befehl in Zeile 3 liest den Wert des zweiten Bonus der Waffe auf dem ersten Slot ein und speichert in der Variable bon. Beim Dss-Switcher haben wir den ersten Bonus eingelesen.
Die zweite Änderung ist die Alternativbedingung bei dem If-Statement. Diese sagt aus: "Führe den If-Block aus wenn der zweite Bonus kleiner ist als der gesuchte oder wenn der zweite Bonus größer oder gleich ist wie der gesucht und der erste Bonus größer als Null ist!"
Aber warum? Im If-Block wird doch neu geswitcht?! Warum soll er ausgeführt werden wenn der zweite Bonus größer oder gleich wie der gesuchte ist.
Wenn der Fks-Wert 0 ist wird dieser nicht eingeblendet. Dafür wird ein anderer Bonus als zweiter eingeblendet, zum Beispiel "+15 Lebenskraft". Da nicht gecheckt wird ob der zweite Bonus überhaupt Fks ist, sondern einfach eingelesen wird würde jetzt 15 als Fks-Wert angesehen werden. Ist der gesuchte Wert ist 12 würde der Bot stoppen obwohl der Fks-Wert gar nicht 12 oder höher ist sondern 0, und nur der 15 Lebenskraft Boni als Fks-Wert angesehen wird. Das Problem kann man lösen!
Wenn eine Waffe einen hohen Fks-Wert hat, hat sie automatisch einen nicht so hohen Dss-Wert. Hier wird jetzt einfach der Dss-Wert geprüft und wenn dieser kleiner null ist, muss der Fks-Wert mittel-hoch sein. Also muss, wenn der Fks-Wert höher als der gesuchte ist der DSS-Wert negativ sein (außer man gibt Werte kleiner als 3 ein).
Ist der erste Bonus 13 Dss und der zweite 30 Orks und wird nach 17 gesucht, wird weiter geswitcht da zwar der Bonus höher ist als der Gesuchte, aber der Dss-Wert bei einem Fks-Wert 17+ aufjedenfall negativ sein müsste, was er aber nicht ist.
So der Rest ist wieder, bis auf ein paar Anpassungen, Coppy & Paste vom Dss-Switcher.
Hier sind mal meine Root-Dateien mit dem Fks-Switcher (für die, die zu faul sind zum rauskopieren ):
Virustest:
Achja, falls beim Klicken auf Ok mal nichts passieren sollte, schaut dass auf der Waffe die ihr switchen wollt der Wert des zweiten Bonus nicht über dem gesuchten ist. Also wenn ihr 15 Fks wollt und 15 Lebenskraft als zweiter Bonus auf der Waffe ist, switcht den einfach weg!
Würde mich über Feeds obs denn klappt freuen!
Mfg Goxide
Es gibt hier gewisse Leute die Geld dafür verlangen.
Credits:
Kamer hat auch einen schönen Metin2mod ->