|
You last visited: Today at 04:03
Advertisement
Mobzähler
Discussion on Mobzähler within the Last Chaos forum part of the MMORPGs category.
07/16/2010, 17:07
|
#1
|
elite*gold: 0
Join Date: May 2009
Posts: 107
Received Thanks: 8
|
Mobzähler
hi zusammen
ich suche ein progi womit man mobs die geötet wurden automatisch gezählt werden wie so ein echten schrittzähler.
gibt es sowas?
wenn ja kan es jemand posten?
und wenn nicht kann man sowas bastelln?
|
|
|
07/16/2010, 19:58
|
#2
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Über die SP oder EXP erkennen lassen, dass Ergebnis kann allerdings nach einer Questabgabe verfälscht werden.
Hier mal ein Beispiel:
Als erstes brauchst du natürlich eine GUI, gehen wir von diesem Beispiel aus:
Code:
#Region GUI
$GUI = GUICreate("KDMobzähler", 205, 25)
GUISetBkColor(0xFFFFFF)
GUICtrlCreateLabel("getötete Gegner:", 5, 5, 95, 17)
$L_GG = GUICtrlCreateLabel("0", 100, 5, 100, 17)
GUISetState(@SW_SHOW)
#EndRegion
While True
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEnd
Unter der GUI (nicht in der Schleife) definierst du einfach die Base und das Offset:
Code:
#Region GUI
$GUI = GUICreate("KDMobzähler", 205, 25)
GUISetBkColor(0xFFFFFF)
GUICtrlCreateLabel("getötete Gegner:", 5, 5, 95, 17)
$L_GG = GUICtrlCreateLabel("0", 100, 5, 100, 17)
GUISetState(@SW_SHOW)
#EndRegion
[COLOR="Red"]$Base = 0x106445A8 ;DE Base
Dim $Offset_SP[2] = [0, 0x10A5F8] ;SP Offset[/COLOR]
While True
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEnd
Um einen Anhaltspunkt zum vergleichen zu erhalten, liest du den Wert einfach einmal aus (nicht in der Schleife).
Zum auslesen wird die "NomadMemory.au3" oder die "Pointer.au3" benötigt:
Code:
#include <NomadMemory.au3> ;oder: #include <Pointer.au3>
#Region GUI
$GUI = GUICreate("KDMobzähler", 205, 25)
GUISetBkColor(0xFFFFFF)
GUICtrlCreateLabel("getötete Gegner:", 5, 5, 95, 17)
$L_GG = GUICtrlCreateLabel("0", 100, 5, 100, 17)
GUISetState(@SW_SHOW)
#EndRegion
[COLOR="DarkOrchid"]$Base = 0x106445A8 ;DE Base
Dim $Offset_SP[2] = [0, 0x10A5F8] ;SP Offset[/COLOR]
[COLOR="Red"]$Handle = _MemoryOpen(WinGetProcess("[CLASS:Nksp]"))
$Data_SP = _MemoryPointerWrite($Base, $Handle, $Offset_SP) ;liest die SP aus
_MemoryClose($Handle)[/COLOR]
While True
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEnd
Jetzt musst du nur noch die SP in der While-Schleife auslesen, haben sie sich erhöht, wird auf eine globale Variable addiert:
Code:
#include <NomadMemory.au3> ;oder: #include <Pointer.au3>
#Region GUI
$GUI = GUICreate("KDMobzähler", 205, 25)
GUISetBkColor(0xFFFFFF)
GUICtrlCreateLabel("getötete Gegner:", 5, 5, 95, 17)
$L_GG = GUICtrlCreateLabel("0", 100, 5, 100, 17)
GUISetState(@SW_SHOW)
#EndRegion
$Base = 0x106445A8 ;DE Base
Dim $Offset_SP[2] = [0, 0x10A5F8] ;SP Offset
[COLOR="DarkOrchid"]$Handle = _MemoryOpen(WinGetProcess("[CLASS:Nksp]"))
$Data_SP_1 = _MemoryPointerRead($Base, $Handle, $Offset_SP) ;liest die SP aus[/COLOR]
[COLOR="Red"]If IsArray($Data_SP_1) Then
$Data_SP_1 = $Data_SP_1[1] ;darf beim späteren Vergleich kein Array mehr sein
EndIf
Global $Kills[/COLOR]
While True
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
[COLOR="Red"]$Data_SP_2 = _MemoryPointerRead($Base, $Handle, $Offset_SP) ;liest die SP aus
If IsArray($Data_SP_2) Then
$Data_SP_2 = $Data_SP_2[1]
EndIf
If $Data_SP_1 <> $Data_SP_2 Then ;wenn der alte Wert nicht mit dem neuen übereinstimmt, dann...
If $Data_SP_1 < $Data_SP_2 Then ;wenn sich die SP erhöht haben
$Kills = $Kills + 1
GUICtrlSetData($L_GG, $Kills)
EndIf
$Data_SP_1 = $Data_SP_2 ;beide Variablen beinhalten wieder den selben Wert
EndIf[/COLOR]
WEnd
Beim Lesen der Werte muss man nur beachten, dass die Variable als Array zurück gegeben wird, "$Data_SP[0]" beinhaltet die Adresse und "$Data_SP[1]" den Wert.
Aus diesem Grund erklärt sich auch:
PHP Code:
If IsArray($Data_SP_1) Then
$Data_SP_1 = $Data_SP_1[1]
EndIf
Das ist nur ein kleines Beispiel, man kann noch weitere Faktoren mit einbeziehen, z. B. ob sich die Anzahl der NPCs ((_pNetwork) + 0x1C) + 0x1C) verringert hat. Wenn sich dieser Wert nicht geändert hat (z. B. bei einer Questabgabe) wird kein Kill addiert.
Müsste fürs erste ausführlich genug gewesen sein.
|
|
|
07/16/2010, 21:17
|
#3
|
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
|
hmm aber wenn der bot mit einem Aoe mehre mobs gleichzeitig killt, funktioniert dieser code doch nichtmehr(er addiert ja immer nur 1), oder sehe ich da was falsch?
|
|
|
07/16/2010, 21:30
|
#4
|
elite*gold: 0
Join Date: Nov 2009
Posts: 488
Received Thanks: 533
|
Wozu das eigentlich, ich mein das bringt dir doch nichts wenn du dann in Juno rumrennst und schreist (%) das du grad das 1kkk Monster gekillt hast ^^
|
|
|
07/16/2010, 21:55
|
#5
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Quote:
Originally Posted by nkkk
hmm aber wenn der bot mit einem Aoe mehre mobs gleichzeitig killt, funktioniert dieser code doch nichtmehr(er addiert ja immer nur 1), oder sehe ich da was falsch?
|
Mein Beispiel war auch nur simpel, aber wie erwähnt könnte man z. B. die Menge der NPCs mit einbeziehen, wenn es noch genauer seien sollte, kann man auch die Menge der Spieler einbeziehen. Außerdem gibt es noch viele andere möglichkeiten, z. B. ob man aktiv in einem Kamp ist/war.
Aber wie Isall09 es schon anspricht, würde es sich nicht lohnen, so ein Tool wirklich aus zu bauen, obwohl es nicht wirklich schwer ist.
|
|
|
07/16/2010, 22:28
|
#6
|
elite*gold: 0
Join Date: Feb 2010
Posts: 293
Received Thanks: 53
|
Also ich hätte auch Interesse an sowas
Ich steh immer darauf zu sehen, wieviel ich gekillt habe^^
Interessiert mich auch, ob ich mich verbessert habe, oder verschlechtert.
Dann kann ich sehen, was besser funktioniert hat etc....
mfg
|
|
|
07/16/2010, 22:42
|
#7
|
elite*gold: 0
Join Date: Nov 2009
Posts: 488
Received Thanks: 533
|
OMG noch so einer, es gibt ja unterschiede ob du lvl 90 Seelen oder lvl 109 in Pyra hauen gehst.
Schau doch einfach mal wie viel % du in der festgelegten Zeit bekommen hast und gut ist >.>
|
|
|
07/16/2010, 23:01
|
#8
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Hier muss ich Isall09 wieder Recht geben, aber ich hab mir trotzdem mal die 1 - 2 Minuten Zeit genommen.
PHP Code:
#include <NomadMemory.au3>
#Region GUI
$GUI = GUICreate("KDMobzähler", 205, 25)
GUISetBkColor(0xFFFFFF)
GUICtrlCreateLabel("getötete Gegner:", 5, 5, 95, 17)
$L_GG = GUICtrlCreateLabel("0", 100, 5, 100, 17)
GUISetState(@SW_SHOW)
#EndRegion
$Base = 0x106445A8
$Handle = _MemoryOpen(WinGetProcess("[CLASS:Nksp]"))
Dim $Offset_SP[2] = [0, 0x10A5F8]
$Data_SP_1 = _MemoryPointerRead($Base, $Handle, $Offset_SP)
If IsArray($Data_SP_1) Then $Data_SP_1 = $Data_SP_1[1]
Dim $Offset_NPC[3] = [0, 0x1C, 0x1C]
$Data_NPC_1 = _MemoryPointerRead($Base, $Handle, $Offset_NPC)
If IsArray($Data_NPC_1) Then $Data_NPC_1 = $Data_NPC_1[1]
Global $Kills
While True
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
$Data_NPC_2 = _MemoryPointerRead($Base, $Handle, $Offset_NPC)
If IsArray($Data_NPC_2) Then $Data_NPC_2 = $Data_NPC_2[1]
If $Data_NPC_1 <> $Data_NPC_2 Then
$Data_SP_2 = _MemoryPointerRead($Base, $Handle, $Offset_SP)
If IsArray($Data_SP_2) Then $Data_SP_2 = $Data_SP_2[1]
If $Data_SP_1 <> $Data_SP_2 Then
If $Data_SP_1 < $Data_SP_2 Then
$Kills = $Kills + 1
GUICtrlSetData($L_GG, $Kills)
EndIf
$Data_SP_1 = $Data_SP_2
EndIf
$Data_NPC_1 = $Data_NPC_2
EndIf
WEnd
|
|
|
Similar Threads
|
[SUCHE] Mobzähler
09/12/2010 - Last Chaos - 5 Replies
Guten Abend,
ich suche einen der mir einen Mobzähler programmieren könnte.
Er müsste auch saven können.
Danke im voraus,
Saschi
|
All times are GMT +1. The time now is 04:03.
|
|