|
You last visited: Today at 12:31
Advertisement
Pferde-Buff Autoit
Discussion on Pferde-Buff Autoit within the Last Chaos forum part of the MMORPGs category.
11/28/2010, 09:26
|
#1
|
elite*gold: 0
Join Date: Mar 2010
Posts: 495
Received Thanks: 61
|
Pferde-Buff Autoit
Hallo
Ich wollte mal ein Bot bauen der nach einer bestimmten Zeit Pferde Buffs macht. Also der Bot geht auf das Reittierbutton in der F-Leiste , dann öffnet es die Optionen vom Pferd und drückt auf Deff- und Offbuffs und er legt dann wieder das kleine Pet an. Nun ist das problem gekommen , wenn er während des Kampfes das Reittier anlegen will geht es nicht ( weil man nicht während des Kampfes ein Reittier anlegen kann ) und der Char so keine Buffs bekommt und er trotzdem auf den Button für das kleine Pet drückt und es so einpackt. Kann man das villeicht irgednwie beheben?
|
|
|
11/28/2010, 13:24
|
#2
|
elite*gold: 0
Join Date: Jun 2010
Posts: 36
Received Thanks: 4
|
japp...
Gibt ein pointer [0,1] ob Du Dich gerade im Kampf befindest...
Code:
Global $AFight[5] ;dword
$AFight[0] = 0
$AFight[1] = 0X1C
$AFight[2] = 0X10
$AFight[3] = 0X04
$AFight[4] = 0XE18
Base muesstest zu Deiner Version selber suchen, der Offset ist glaube auf allen versionen gleich... (ist aus einem alten Bot, also lieber nochmal ueberpruefen)
|
|
|
11/28/2010, 14:00
|
#3
|
elite*gold: 0
Join Date: Mar 2010
Posts: 495
Received Thanks: 61
|
Quote:
Originally Posted by WickedMage
japp...
Gibt ein pointer [0,1] ob Du Dich gerade im Kampf befindest...
Code:
Global $AFight[5] ;dword
$AFight[0] = 0
$AFight[1] = 0X1C
$AFight[2] = 0X10
$AFight[3] = 0X04
$AFight[4] = 0XE18
Base muesstest zu Deiner Version selber suchen, der Offset ist glaube auf allen versionen gleich... (ist aus einem alten Bot, also lieber nochmal ueberpruefen)
|
also über den script : [0,1]
Code:
Global $AFight[5] ;dword
$AFight[0] = 0
$AFight[1] = 0X1C
$AFight[2] = 0X10
$AFight[3] = 0X04
$AFight[4] = 0XE18
?
|
|
|
11/28/2010, 14:25
|
#4
|
elite*gold: 0
Join Date: Jun 2010
Posts: 36
Received Thanks: 4
|
Das ist ein Offset, zu der Adresse die den Wert 0 oder 1 enthaelt, je nachdem ob Du in einem Kampf bist (1) oder nicht (0)
dafuer brauchst die Memory.au3 von Nomad (Google!)
dann kannst mit der Base, dem Offset und dem Type (DWord) den Pointer auslesen und je nachdem wie der Wert ist [0,1] dannach handeln....
hab mir selbst das lesen und schreiben von Pointern mit einer zusatzfunktion erleichtert...
bei diesem kurzen beispiel ist die Base falsch...
Code:
#include <Memory.au3>
Global $LCTitleID
$LCTitleID = "LastChaos - "
Global $Base
$Base = 0x106656F8 ;Pointer(Base)
Global $AFight[5] ;dword
$AFight[0] = 0
$AFight[1] = 0X1C
$AFight[2] = 0X10
$AFight[3] = 0X04
$AFight[4] = 0XE18
Func ReadValue($Pointer,$Type)
Local $ProcessID
Local $Handle
Local $ReadPointer
Local $Value
$ProcessID = WinGetProcess($LCTitleID)
$Handle = _MemoryOpen($ProcessID)
$ReadPointer = _MemoryPointerRead($Base, $Handle, $Pointer, $Type)
$Value = $ReadPointer[1]
_MemoryClose($Handle)
Return $Value
EndFunc
Func WriteValue($Pointer,$Type,$NewValue)
Local $ProcessID
Local $Handle
Local $ReadPointer
Local $Value
$ProcessID = WinGetProcess($LCTitleID)
$Handle = _MemoryOpen($ProcessID)
_MemoryPointerWrite($Base, $Handle, $Pointer, $NewValue, $Type)
_MemoryClose($Handle)
EndFunc
ReadValue($AFight,'dword')
sollte nun 0 oder 1 zurueckgeben ob du bereits im kampf bist oder nicht....
|
|
|
11/28/2010, 16:53
|
#5
|
elite*gold: 0
Join Date: Mar 2010
Posts: 495
Received Thanks: 61
|
Quote:
Originally Posted by WickedMage
Das ist ein Offset, zu der Adresse die den Wert 0 oder 1 enthaelt, je nachdem ob Du in einem Kampf bist (1) oder nicht (0)
dafuer brauchst die Memory.au3 von Nomad (Google!)
dann kannst mit der Base, dem Offset und dem Type (DWord) den Pointer auslesen und je nachdem wie der Wert ist [0,1] dannach handeln....
hab mir selbst das lesen und schreiben von Pointern mit einer zusatzfunktion erleichtert...
bei diesem kurzen beispiel ist die Base falsch...
Code:
#include <Memory.au3>
Global $LCTitleID
$LCTitleID = "LastChaos - "
Global $Base
$Base = 0x106656F8 ;Pointer(Base)
Global $AFight[5] ;dword
$AFight[0] = 0
$AFight[1] = 0X1C
$AFight[2] = 0X10
$AFight[3] = 0X04
$AFight[4] = 0XE18
Func ReadValue($Pointer,$Type)
Local $ProcessID
Local $Handle
Local $ReadPointer
Local $Value
$ProcessID = WinGetProcess($LCTitleID)
$Handle = _MemoryOpen($ProcessID)
$ReadPointer = _MemoryPointerRead($Base, $Handle, $Pointer, $Type)
$Value = $ReadPointer[1]
_MemoryClose($Handle)
Return $Value
EndFunc
Func WriteValue($Pointer,$Type,$NewValue)
Local $ProcessID
Local $Handle
Local $ReadPointer
Local $Value
$ProcessID = WinGetProcess($LCTitleID)
$Handle = _MemoryOpen($ProcessID)
_MemoryPointerWrite($Base, $Handle, $Pointer, $NewValue, $Type)
_MemoryClose($Handle)
EndFunc
ReadValue($AFight,'dword')
sollte nun 0 oder 1 zurueckgeben ob du bereits im kampf bist oder nicht....
|
Ok danke , leider verstehe ich jetzt immernoch nicht genau was ich machen muss.
|
|
|
11/28/2010, 18:03
|
#6
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Ich finde die Methode etwas zu umständlich aber jedem das seine. Du ließt einfach aus,
ob sich der Charakter im Kampf befindet. Bekommst du einen Rückgabewert von 1 ist
dein Charakter im Kampf verwickelt, in diesem Fall lässt du deinen Char also nicht aufs
Pferd steigen, sondern wartest erst solange, bis der Rückgabewert 0 ist.
|
|
|
11/28/2010, 19:24
|
#7
|
elite*gold: 0
Join Date: Mar 2010
Posts: 495
Received Thanks: 61
|
Quote:
Originally Posted by KillerDeluxe
Ich finde die Methode etwas zu umständlich aber jedem das seine. Du ließt einfach aus,
ob sich der Charakter im Kampf befindet. Bekommst du einen Rückgabewert von 1 ist
dein Charakter im Kampf verwickelt, in diesem Fall lässt du deinen Char also nicht aufs
Pferd steigen, sondern wartest erst solange, bis der Rückgabewert 0 ist.
|
ok , aber welches script brauch ich da und was muss ich dann noch machen ?
|
|
|
11/28/2010, 19:54
|
#8
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Ich würde jetzt einfach mal sagen, du solltest dir etwas Wissen aneignet, dann kommst du
selber drauf. Ich würde einen Timer, 1 Variable zum überprüfen des Kampfes und 3 Offsets
(+ Base) benutzen. Mit dem Timer steuerst du die Zeit, was die Variable machen soll hab
ich oben geschrieben. Die 2 weiteren Offsets würde ich für die Koordinaten des Petfensters
benutzen. Dann noch 2 PostMessage Befehle zum anklicken der Buffs und schon es ist
zumindest in der Theorie fast fertig. Viel Arbeit sollte das aber nicht sein.
|
|
|
12/04/2010, 17:15
|
#9
|
elite*gold: 0
Join Date: Mar 2010
Posts: 495
Received Thanks: 61
|
kann mir villeicht jemand weiterhelfen ?
bekomme immer eine fehlermeldung bei dem Script.
Fehlermeldung:
$Handle = _MemoryOpen($ProcessID)
$Handle = ^ ERROR
Script:
#Include <Timers.au3>
#include <Memory.au3>
Global $TitleID
$LCTitleID = "LastChaos - Gamigo"
;Base & Offset
Global Const $Base = 0x1064B828;Pointer(Base)
Global $AFight[5] ;dword
$AFight[0] = 0
$AFight[1] = 0X1C
$AFight[2] = 0X10
$AFight[3] = 0X04
$AFight[4] = 0XE18
Func ReadValue($Pointer,$Type)
Local $ProcessID
Local $Handle
Local $ReadPointer
Local $Value
$ProcessID = WinGetProcess($LCTitleID)
$Handle = _MemoryOpen($ProcessID)
$ReadPointer = _MemoryPointerRead($Base, $Handle, $Pointer, $Type)
$Value = $ReadPointer[1]
_MemoryClose($Handle)
Return $Value
EndFunc
Dim $ImKampf
Dim $BuffTimer
$BuffTimer=_Timer_Init()
While 1
$ImKampf=ReadValue($AFight,'dword')
If $ImKampf=0 and _Timer_Diff($BuffTimer)>350000 Then
MouseClick ( "left" , 1177, 938 , 2, 0 )
Sleep (1000)
MouseClick ( "left" , 456 , 136 , 2 , 0 )
Sleep (1000)
MouseClick ( "left" , 565 , 409 ,2 ,0 )
sleep (1000)
MouseClick ( "left" , 566 , 444 , 2 ,0 )
Sleep (2000)
MouseClick ( "left" , 1176, 937 , 2 , 0 )
Sleep ( 1000 )
MouseClick ( "left" , 1001 , 937 , 2 , 0 )
EndIf
Sleep (500)
WEnd
Ich hab auch die NomadMemory.au3 im Include/Autoit Ordner.
|
|
|
12/04/2010, 18:57
|
#10
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Du solltest richtig lesen
Ich zitiere meine ersten 2 Zeilen der PN:
Quote:
|
Originally Posted by KillerDeluxe
Lass mich raten: ERROR: _MemoryOpen($ProcessID): undefined function.
Download dir die NomadMemory.au3 und binde sie mit "#include <NomadMemory.au3>" ein.
|
Deine Antwort darauf war, dass du sie gedownloaded hast, sie in deinen Include
Ordner kopiert hast und sie in dein Script eingebunden hast. Letzteres trifft
nicht zu. Wenn du schon bei solchen Kleinigkeiten nicht weiter kommst, solltest
du mal Grundlagen durchgehen, momentan sieht es eher danach aus, dass du
alles kopierst oder es von anderen machen lassen willst.
Die Problemlösung befindet sich in der 2. Zeile des Zitats/der PN.
|
|
|
12/04/2010, 20:04
|
#11
|
elite*gold: 0
Join Date: Mar 2010
Posts: 495
Received Thanks: 61
|
Quote:
Originally Posted by KillerDeluxe
Du solltest richtig lesen
Ich zitiere meine ersten 2 Zeilen der PN:
Deine Antwort darauf war, dass du sie gedownloaded hast, sie in deinen Include
Ordner kopiert hast und sie in dein Script eingebunden hast. Letzteres trifft
nicht zu. Wenn du schon bei solchen Kleinigkeiten nicht weiter kommst, solltest
du mal Grundlagen durchgehen, momentan sieht es eher danach aus, dass du
alles kopierst oder es von anderen machen lassen willst.
Die Problemlösung befindet sich in der 2. Zeile des Zitats/der PN.
|
ok, also wolltest du sagen dass ich es nicht mit
"#include <NomadMemory.au3>" eingebunden hab ?
|
|
|
12/04/2010, 20:51
|
#12
|
elite*gold: 20
Join Date: Jan 2010
Posts: 489
Received Thanks: 1,647
|
Hmm ja ich schätze das will er damit sagen, auf deim script das du hier gepostet hast fehlt es oben zumindest, hast nur #include <Memory.au3> drinne stehn.
PS: Hübsches benutzerbild  xD
|
|
|
12/04/2010, 20:57
|
#13
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Quote:
Originally Posted by Mogile
ok, also wolltest du sagen dass ich es nicht mit
"#include <NomadMemory.au3>" eingebunden hab ?
|
Ganz genau. Du hast die "Memory.au3" eingebunden, aber nicht die benötigte "NomadMemory.au3".
|
|
|
12/04/2010, 21:08
|
#14
|
elite*gold: 0
Join Date: Mar 2010
Posts: 495
Received Thanks: 61
|
Quote:
Originally Posted by KillerDeluxe
Ganz genau. Du hast die "Memory.au3" eingebunden, aber nicht die benötigte "NomadMemory.au3".
|
ok danke  , hab bei Google leider nichts gefunden wie ich NomadMemory.au3 einbinde. Hat villeicht gerade jemand einen link zu einem tut bzw. wo erklärt wird wie ich die einbinde ?
|
|
|
12/04/2010, 21:11
|
#15
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
#include <Memory.au3> → #include <NomadMemory.au3>
|
|
|
Similar Threads
|
Pferde NPC
05/22/2010 - Metin2 Private Server - 0 Replies
Hallo!!
Wie oben genannt möchte ich gerne wissen wie man einen PferdeNPC erstellen kann...
Wie auf Fantasymt2 der einen ein Pferd macht wenn man ihm bestimmt sachen gibt...
Danke im Vorraus ;);)
|
Pferde bug
07/18/2009 - Metin2 Private Server - 0 Replies
hey
ich weis es gibt schon so einen thread aber ich habe ihn nicht mehr gefunden...
ich hab mein gaul lvl 6. ich klick auf stallbursche, nur der quest zum leveln ist nicht da also der quest den ich annehmen muss wo ich es leveln kann ist nicht vorhanden... was soll ich machen ?
mfg
|
Pferde Bug?
05/06/2009 - Metin2 Private Server - 5 Replies
wie macht man auf p-server sein pferd an einem tag von lvl 1 auf kg?
und wie macht man das, man nur 1 pm braucht...geht das überhaupt am p server?
|
AutoIt script for buff/heal
07/22/2008 - Flyff - 4 Replies
I need a script that heal+buff+auto use mp for RM's
That would be helpful!
|
All times are GMT +1. The time now is 12:33.
|
|