[Information]Movespeed Fix

10/26/2012 19:20 [uLow]Beni#1
Was ist ein Movespeed "Fix" ?
Ein Movespeed Fix ist dazu da, um das zurücksetzen zu verhindern.

Wie funktioniert ein Movespeed Fix ?
Ihr werdet feststellen wenn ihr denn Movespeed einfach per chr.SetMoveSpeed(X) verändert, auch wenn es nur ein paar mehr sind als eure ursprüngliche Geschwindigkeit, werdet ihr immer zurückgesetzt.
Dieses lässt sich einfach durch dieses Skript verhinden:
Code:
MoveSpeed=900
def Main():
	while player.GetStatus(player.MOVING_SPEED) < 0 or player.GetStatus(player.ATT_SPEED) < 0:
		pass
	while 1:
		chr.SetMoveSpeed(MoveSpeed)
		time.sleep(0.4)
		chr.SetMoveSpeed(MoveSpeed-1)

thread.start_new_thread(Main,())
Und was macht dieses Skript ?
Dieses Skript verändert die Bewegungsgeschwindigkeit ( Movespeed ) alle 0.4s.
Diese Veränderung ist als "Unterbrecher" da, damit der Server nicht mitbekommt, dass du dich mit einer falschen Geschwindigkeit bewegst.
ihr könnt die Stelle:
Code:
chr.SetMoveSpeed(MoveSpeed-1)
auch durch
Code:
chr.SetLoopMotion(chr.MOTION_WAIT)
ersetzen,
ihr werdet sehen, dass das auch funktioniert, nur das ihr dauerhaft mit der Maus drücken müsst und das immer nur ein kurzer Schlag ausgeführt wird.

Anfänger Informationen:
Was macht
Code:
	while player.GetStatus(player.MOVING_SPEED) < 0 or player.GetStatus(player.ATT_SPEED) < 0:
		pass
???
A: Es ist dazu da, damit beim Metin2 starten nicht gleich der Movespeed verändert wird.

Was macht
Code:
thread.start_new_thread(Main,())
???
A: Ganz einfach, es startet einen neuen Thread, in der die Funktion Main mit der Parameter () ausgeführt wird.

Gibt es weitere "Fix"s ?
Ja, für Gameforge Server benötigt ihr denn Attackspeed Fix, damit der Server nicht mitbekommt, dass ihr zu schnell Attacked.
Derzeit gibt es nur einen Hack, der das ohne Kicks hinbekommt:
[Only registered and activated users can see links. Click Here To Register...]

Hier ist das funktionierende Skript, ihr müsst eine Text Dokument mit diesem Inhalt:
Code:
import thread,player,chr,time
MoveSpeed=350
AttackSpeed=350
UseAttackSpeed=1
Run = 1
ProtectedServer = 0 # For example if you test it on a GameForge Server set it to 1 #
Clock = 0.0
def UpdateClock():
	global Clock
	Clock = time.clock()

def Main():
	while player.GetStatus(player.MOVING_SPEED) < 0 or player.GetStatus(player.ATT_SPEED) < 0:
		# This Code will executed while the Player isn't InGame. #
		pass
	UpdateClock() # To Update the Timer #
	while Run:
		chr.SetMoveSpeed(MoveSpeed)
		if UseAttackSpeed and (not ProtectedServer):
			chr.SetAttackSpeed(AttackSpeed)
		if Clock+0.4<=time.clock(): # This is the "Fix"    #
			chr.SetMoveSpeed(MoveSpeed-1)                  #
			UpdateClock()          # To update the Time ;) #
		# Here you can write more code, but it should be not much #
thread.start_new_thread(Main,())
als "logininfo.py" abspeichern und in denn Metin2 Client schieben
Hier gebe ich euch noch die professionelle Variante,
mit dem ihr in einem Thread mehr als nur eine Funktion ausführen könnt ;)

Ich freue mich über eure Gute/Schlechte Kritik :)
10/26/2012 19:53 .United#2
Jetzt gibt es schon Tutorials wie man ein "hack" schreibt.
Ob ich das gut heißen soll weiß ich nicht.
Für Anfänger auf jeden Fall nützlich. :)
10/26/2012 19:57 [uLow]Beni#3
naja, vielleicht werden die hacker auf GF Servern weniger ^^.
Das die P-Server Attackspeed nicht gefixxt haben finde ich aber sehr traurig.
10/26/2012 20:04 Mi4uric3#4
Richtig schlechte Lösung, aber in Python gehts nicht viel besser..
Von daher, gut.
10/26/2012 20:10 noahrmal#5
Geht aber auch einfach mit nem Waiting Dialog :D


Und dann einfach Normale Geschwindigkeit & und x Geschwindigkeit in einer Schleife immer wechseln lassen:

PHP Code:
def EnableMoveSpeed(self):

        
MoveSpeed = self.EditLineMoveSpeed.GetText() #[Oder einfach euren Wert]
        
NormalMoveSpeed = player.GetStatus(player.MOVING_SPEED)

        
chr.SetMoveSpeed(int(NormalMoveSpeed))
        
chr.SetMoveSpeed(int(MoveSpeed))
        
        
self.delay = WaitingDialog()
        
self.delay.Open(int(1.0))
        
self.delay.SAFE_SetTimeOverEvent(self.EnableMoveSpeed) 
Hat im Endeffekt den selben Effekt, ist vielleicht für Anfänger einfacher anzuwenden und man kommt halt nicht easy bis 1000% Speed, wie als wenn man mit Threads arbeiten würde.

Aber ansonsten gutes Tutorial :)
10/26/2012 20:15 .United#6
Quote:
Originally Posted by 123klo View Post
Geht aber auch einfach mit nem Waiting Dialog :D


Und dann einfach Normale Geschwindigkeit & und x Geschwindigkeit in einer Schleife immer wechseln lassen:

PHP Code:
def EnableMoveSpeed(self):

        
MoveSpeed = self.EditLineMoveSpeed.GetText() #[Oder einfach euren Wert]
        
NormalMoveSpeed = player.GetStatus(player.MOVING_SPEED)

        
chr.SetMoveSpeed(int(NormalMoveSpeed))
        
chr.SetMoveSpeed(int(MoveSpeed))
        
        
self.delay = WaitingDialog()
        
self.delay.Open(int(1.0))
        
self.delay.SAFE_SetTimeOverEvent(self.EnableMoveSpeed) 
Hat im Endeffekt den selben Effekt, ist vielleicht für Anfänger einfacher anzuwenden und man kommt halt nicht easy bis 1000% Speed, wie als wenn man mit Threads arbeiten würde.

Aber ansonsten gutes Tutorial :)
Aber nicht bei Attackspeed...
10/26/2012 20:47 noahrmal#7
Quote:
Originally Posted by .United View Post
Aber nicht bei Attackspeed...
Der Fix dieser Art funktioniert eh nicht mit Attackspeed ;)
10/26/2012 22:42 Flavio²#8
Hab da auch noch ein gewisses Murmeln im Bauch aber naja es ist doch nicht ganz so schlecht kannte es bereits erst letzthin irgendwo gesehn (?)
10/27/2012 08:47 [uLow]Beni#9
Warum hast du da ein Murmel im Bach ?
Vielleicht deswegen wie es die anderen Spieler sehen:
du gehst mit der normalen Movespeed, aber immer direkt zu dem Punkt, denn der als Client letztes erhalten hat. Also sehen die Spieler eine Art "Wallhack"
10/28/2012 02:13 Red Firestar#10
Danke *-*
10/28/2012 02:39 .MaisKolben™#11
Dankeschön für deine ausführliche Erklärung.
Find ich sehr interessant, vllt. lernt man ja was draus.

MfG
10/28/2012 03:44 xCPx#12
kann man auch positiv einsetzen ^^
von daher nice ^^
10/28/2012 08:58 LazYGirl.#13
i think there gonna be lag , in bad machines because there is a loop every 0.4 seconds.
10/28/2012 09:06 [uLow]Beni#14
no, because it runs in another thread, only if you start 2 or more threads, there will be laggs.

#updatet
professionelles Skript added ;)