[HowTo]Learn Python with Metin2/Starting up your first bot

10/23/2012 23:13 .MaisKolben™#16
Danke BaumKuchen.
Sehr hilfreich und etwas was ich zu meinen bisherigen Kenntnissen hinzufügen kann.
Gute und ausführliches Tutorial. Kann man gut Lesen. Sehr gut verständlich.

MfG
10/24/2012 09:52 LotusSky#17
Gut erklärt.
Verständlich.
Informationsreich.

Hoffe auf neue Tutorials von dir.
10/24/2012 10:07 Jоe#18
Das ist einer der besten Tutorials, die ich hier in der Metin2 Sektion, je gesehen/gelesen haben durfte. Von der Thematik, den logischen Schlussfolgerungen bis zum Sprachgebrauch. Würde nur annähernd jedes Tutorial ähnlich aufgebaut sein, könnte man dieses Forum in eine Art 'Metin2' Informationsquelle umgestalten.
Desweiteren gefällt mir das Nebenwissen, dass du hier einschulst, wie zB: "Die Funktionen werden zwar schneller ablaufen, allerdings wird die menschliche Wahrnehmung das nicht merken, da diese bei 16 Bildern pro Sekunde liegt, wovon nichtmal alle verarbeitet werden.".

Weiter so!

PS: RS-Fehler hier:
Quote:
Originally Posted by .BaumKuchen View Post
Hierzu stelle ich direkt die Funktion bereit, da dies nicht sonderlich viel mit der Sprache oder der Logik zu tun hat, sondern einfach eine mathematische Gegenebheit ist, die jeder im Laufe seiner Schulzeit mind. 2-3x lernt.
10/24/2012 10:32 .RUVision#19
Finde ich wirklich sehr gut habe begonnen Python mir mal anzuschauen finde das von dir wirklich sehr gut weil du die Thematik eklärst bzw was dahinter steht hinter den Befehlen die Theorie!
10/24/2012 14:04 [uLow]Beni#20
wieder ne blöde frage :P:
ist das nicht thread unsicher ?
Quote:
import chr, player
from chat import AppendChat
from thread import start_new_thread

vid_array = {
chr.INSTANCE_TYPE_BUILDING: [],
chr.INSTANCE_TYPE_ENEMY: [],
chr.INSTANCE_TYPE_NPC: [],
chr.INSTANCE_TYPE_OBJECT: [],
chr.INSTANCE_TYPE_PLAYER: [],
6 : [],
}

final_range = 36

def check_vid(check_range):
for vid in range(check_range * 75000):
#get the instance type from the selected vid
instance_type = chr.GetInstanceType(vid)

#check if vid is already in the array, else append it to the array
if not vid in vid_array[instance_type]:
vid_array[instance_type].append(vid)

if check_range == final_range:
##here you can continue with your script^^
print("Scan finished...")

for check_range in range(final_range):
start_new_thread(check_vid, (check_range, ))
theoretisch könnte ein thread genau zur gleichen Zeit auf die vid_array zugreifen ? oder ?

edit:
du hast ALLE Functionen aus der exe ausgelesen ? :o
gibt doch eine liste public ( ja ich weiß, dass du gerne allein arbeitest :P, deshalb poste ich keinen link )
10/24/2012 17:19 .BaumKuchen#21
Quote:
Originally Posted by !Beni! View Post
wieder ne blöde frage :P:
ist das nicht thread unsicher ?


theoretisch könnte ein thread genau zur gleichen Zeit auf die vid_array zugreifen ? oder ?

edit:
du hast ALLE Functionen aus der exe ausgelesen ? :o
gibt doch eine liste public ( ja ich weiß, dass du gerne allein arbeitest :P, deshalb poste ich keinen link )
Deswegen ersetze ich keine Werte sondern appende sie lediglich in das Array.
Falls ich jetzt eine variable ersetzen würde könnte es eventuell zu Problemen kommen, da das ganze aber nur appended wird wird und sollte es zu keinerlei Problemen führen.

Desweiteren ist es recht unwahrscheinlich dass der Python Interpreter nicht hinterherkommt, trotzdem ist das Array die aktuell beste und einfachste Lösung.
10/24/2012 19:10 noahrmal#22
Nettes Tutorial :) DaRealFreak² :D

Quote:
Originally Posted by .BaumKuchen View Post
Durch den Auto-Answer Bot hat der Bot auch eine Frage eines GameMasters überstanden, welcher zwischendurch eine PN geschrieben hat.
Also das kann ich nicht glauben, da GM´s variable Fragen stellen, auf die kein Antwortbot eine präzise Antwort geben kann^^
10/24/2012 19:45 [uLow]Beni#23
Quote:
Originally Posted by 123klo View Post
Nettes Tutorial :) DaRealFreak² :D



Also das kann ich nicht glauben, da GM´s variable Fragen stellen, auf die kein Antwortbot eine präzise Antwort geben kann^^
du sagst es, dass wäre mal ein Dreamteam xD
frage:
wie kann ich die OnRender/OnUpdate funktion verwenden ?

btw:
@klo geh mal in skype on, ich hab denn movespeed fix ohne zurücksetzen gemacht, bis 1000. :P

Quote:
Originally Posted by .BaumKuchen View Post
Deswegen ersetze ich keine Werte sondern appende sie lediglich in das Array.
das heißt, die wenn man die länge abfragt, wird die immer neugeneriert und nicht von einer bereits vorhandenen Variable ausgelesen ?
10/24/2012 19:49 Pаylasici#24
Quote:
Originally Posted by !Beni! View Post
du sagst es, dass wäre mal ein Dreamteam xD
frage:
wie kann ich die OnRender/OnUpdate funktion verwenden ?

btw:
@klo geh mal in skype on, ich hab denn movespeed fix ohne zurücksetzen gemacht, bis 1000. :P
Quote:
def OnRender,
def OnUpdate
... hinschreiben und dann die gewünschte Funktion losdefinieren.

Es wird automatisch von der Binary "gecallt".
Wie viel mal weiß ich nicht so genau, sollten 20 mal pro Sekunde sein.
10/24/2012 19:51 [uLow]Beni#25
ok, thx, hab geglaubt man muss es metin erst sagen, dass man die function gesetzt hat ^^.
10/24/2012 20:08 Pаylasici#26
Quote:
Originally Posted by !Beni! View Post
ok, thx, hab geglaubt man muss es metin erst sagen, dass man die function gesetzt hat ^^.
Bei anderen Definitionen stimmt das auch, aber bei speziellen,
habe gerade die Liste nicht da, tut es die Binary automatisch durch einen "call".
10/25/2012 17:38 [uLow]Beni#27
problem:
Code:
def FrezzePosition((x,y),list):
		for b in list:
			pass
da meldet syserr das:

Code:
1025 17:51:03295 :: for b in list:

1025 17:51:03295 :: SystemError
1025 17:51:03295 :: : 
1025 17:51:03295 :: D:\Documents and Settings\Administrator\Desktop\´Ù¿î·Îµå\python-2.2\Python-2.2\Objects\longobject.c:188: bad argument to internal function
1025 17:51:03295 ::
edit: gefunden:
ich kann keine variable von einer anderen klasse verwenden .

Weiters Problem, wenn ich 2-3 Thread aufmache hängt sich der ganze metin2 client auf, nach einigen sekunden reagiert er wieder, aber nur ein Thread bleibt, die anderen wurden gekillt.
04/04/2013 01:17 .Puma#28
Quote:
Originally Posted by !Beni! View Post
Weiters Problem, wenn ich 2-3 Thread aufmache hängt sich der ganze metin2 client auf, nach einigen sekunden reagiert er wieder, aber nur ein Thread bleibt, die anderen wurden gekillt.
Selbes Problem habe ich auch bzw schon bei dem gepostetem Code auf des Erstellers. Suche schon seit langem eine Lösung
04/04/2013 11:16 noahrmal#29
Quote:
Originally Posted by .Puma View Post
Selbes Problem habe ich auch bzw schon bei dem gepostetem Code auf des Erstellers. Suche schon seit langem eine Lösung
Soweit ich das von Beni mitbekommen habe, gibt es dafür leider keine Lösung mit Python.
06/10/2013 22:14 Anonyme™#30
Sorry für den Push :/
Wie kann ich per Python das Level des Char's herausfinden? Habe derzeit leider keine Möglichkeit gefunden...
Hoffe mir kann jemand Helfen :/

- Anonyme™