Vorab:
Das ganze ist lediglich für Developer bzw. jmd zu gebrauchen, die selber gerne Metin2 bezüglich etwas programmieren wollen.
Deswegen stelle ich hier auch direkt das Script zur Verfügung und mache kein allzu großes Tutorial dafür.
Nebenbei gemerkt arbeite ich an einem weiteren Tutorial bzw. der Fortsetzung von meinem 1. Tutorial.
Das ganze wird etwas länger und ausführlicher, aber auch wesentlich interessanter.
Hier erst einmal das Script, welches gut kommentiert ist, sodass es jeder verstehen sollte:
Beispielausgabe:
Anwendungsmöglichkeiten:
Das ganze erleichtert die Orientierung vom Skillcount und Skillindex, welche zumindest für "Scripter" einen großen Unterschied darstellen.
Auch habe ich dieses Script genutzt um alle graphischen Oberflächen meines Bots Skillicon betreffend darzustellen.
Des Weiteren kündige ich hiermit einen bald herauskommenden Bot von HeavyHacker, Crank und mir an, welcher m2bob ersetzen soll sobald dieser kostenpflichtig sind.
Enthält weiterhin alle nötigen Funktionen wie Itemsteal, Rangepickup,... die essentiellen Funktionen sind soweit auch alle enthalten, aber auch hier wird es eine Premium Version geben welche z.B. einen Packet Editor/Monitor,... enthält.
Der Bot wird nicht nur auf den offiziellen Servern laufen und das hackshield bypassen sondern auch auf Pservern und braucht selten/keine Updates.
Das ganze wird als Werbeaktion für HeavyHackers kommenden Clientless Bot veranstaltet und wird von meinem Teil aus später als kompletter Open Source Bot released, was Crank und Heavy mit ihrem Part machen ist ihre Entscheidung.
Einen schönen Morgen noch
Das ganze ist lediglich für Developer bzw. jmd zu gebrauchen, die selber gerne Metin2 bezüglich etwas programmieren wollen.
Deswegen stelle ich hier auch direkt das Script zur Verfügung und mache kein allzu großes Tutorial dafür.
Nebenbei gemerkt arbeite ich an einem weiteren Tutorial bzw. der Fortsetzung von meinem 1. Tutorial.
Das ganze wird etwas länger und ausführlicher, aber auch wesentlich interessanter.
Hier erst einmal das Script, welches gut kommentiert ist, sodass es jeder verstehen sollte:
PHP Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import app
def getSkillTree():
#initialize empty skillDict
skillDict = {}
try:
#get handle and linecount of the file
handle = app.OpenTextFile(app.GetLocalePath() + "/skilldesc.txt")
count = app.GetTextFileLineCount(handle)
except (IOError):
#handle IO Exception and print it
_print("Could not load " + app.GetLocalePath() + "/skilldesc.txt")
for line in xrange(count):
#get the current line of the file
line = app.GetTextFileLine(handle, line)
#handle the case of empty/incorrect lines
if not str(line).count("\t") >= 21:
continue
#split the line up and get the requested informations
skillData = str(line).split("\t")
skillIndex = int(skillData[0])
skillCharacterClass = skillData[1]
skillName = skillData[2]
skillIconName = skillData[12]
#fill up the dict with the differenct character classes
if not skillCharacterClass in skillDict:
skillDict[skillCharacterClass] = {}
#fill up the different skill indices(handling the case for new skills)
if not skillIndex in skillDict[skillCharacterClass]:
skillDict[skillCharacterClass][skillIndex] = {}
#complete the actual skill information in our skillDict
skillDict[skillCharacterClass][skillIndex] = {
"NAME" : skillName,
"ICON" : "d:/ymir work/ui/skill/%s/%s.sub" % (skillCharacterClass.lower(), skillIconName),
}
#return the created skillDict
return(skillDict)
PHP Code:
{
'SHAMAN': {
106: {'NAME': 'Blitzwurf', 'ICON': 'd:/ymir work/ui/skill/shaman/noejeon.sub'},
107: {'NAME': 'Blitz heraufbeschwören', 'ICON': 'd:/ymir work/ui/skill/shaman/byeorak.sub'},
108: {'NAME': 'Blitzkralle', 'ICON': 'd:/ymir work/ui/skill/shaman/pokroe.sub'},
109: {'NAME': 'Kurieren', 'ICON': 'd:/ymir work/ui/skill/shaman/jeongeop.sub'},
110: {'NAME': 'Schnelligkeit', 'ICON': 'd:/ymir work/ui/skill/shaman/kwaesok.sub'},
111: {'NAME': 'Angriff+', 'ICON': 'd:/ymir work/ui/skill/shaman/jeungryeok.sub'},
91: {'NAME': 'Fliegender Talisman', 'ICON': 'd:/ymir work/ui/skill/shaman/bipabu.sub'},
92: {'NAME': 'Drachenschießen', 'ICON': 'd:/ymir work/ui/skill/shaman/yongpa.sub'},
93: {'NAME': 'Drachengebrüll', 'ICON': 'd:/ymir work/ui/skill/shaman/paeryong.sub'},
94: {'NAME': 'Segen', 'ICON': 'd:/ymir work/ui/skill/shaman/hosin.sub'},
95: {'NAME': 'Reflektieren', 'ICON': 'd:/ymir work/ui/skill/shaman/boho.sub'}
96: {'NAME': 'Hilfe des Drachen', 'ICON': 'd:/ymir work/ui/skill/shaman/gicheon.sub'},
},
'WARRIOR': {
1: {'NAME': 'Dreiwege-Schnitt', 'ICON': 'd:/ymir work/ui/skill/warrior/samyeon.sub'},
2: {'NAME': 'Schwertwirbel', 'ICON': 'd:/ymir work/ui/skill/warrior/palbang.sub'},
3: {'NAME': 'Kampfrausch', 'ICON': 'd:/ymir work/ui/skill/warrior/jeongwi.sub'},
4: {'NAME': 'Aura des Schwerts', 'ICON': 'd:/ymir work/ui/skill/warrior/geomgyeong.sub'},
5: {'NAME': 'Sausen', 'ICON': 'd:/ymir work/ui/skill/warrior/tanhwan.sub'},
6: {'NAME': 'Zerschneiden', 'ICON': 'd:/ymir work/ui/skill/warrior/gihyeol.sub'},
16: {'NAME': 'Durchschlag', 'ICON': 'd:/ymir work/ui/skill/warrior/gigongcham.sub'},
17: {'NAME': 'Heftiges Schlagen', 'ICON': 'd:/ymir work/ui/skill/warrior/gyeoksan.sub'},
18: {'NAME': 'Stampfer', 'ICON': 'd:/ymir work/ui/skill/warrior/daejin.sub'},
19: {'NAME': 'Starker Körper', 'ICON': 'd:/ymir work/ui/skill/warrior/cheongeun.sub'},
20: {'NAME': 'Schwertschlag', 'ICON': 'd:/ymir work/ui/skill/warrior/geompung.sub'},
21: {'NAME': 'Blitzschlag', 'ICON': 'd:/ymir work/ui/skill/warrior/noegeom.sub'}
},
'SUPPORT': {
121: {'NAME': 'Führung', 'ICON': 'd:/ymir work/ui/skill/support/tongsol.sub'},
122: {'NAME': 'Combo', 'ICON': 'd:/ymir work/ui/skill/support/combo.sub'},
123: {'NAME': 'Angeln', 'ICON': 'd:/ymir work/ui/skill/support/fishing.sub'},
124: {'NAME': 'Bergbau', 'ICON': 'd:/ymir work/ui/skill/support/mining.sub'},
141: {'NAME': 'HP', 'ICON': 'd:/ymir work/ui/skill/support/jeunghyul.sub'},
142: {'NAME': '\xb0\xfc\xc5\xeb\xc8\xb8\xc7\xc7', 'ICON': 'd:/ymir work/ui/skill/support/chultong.sub'}
},
'ASSASSIN': {
32: {'NAME': 'Blitzangriff', 'ICON': 'd:/ymir work/ui/skill/assassin/gungsin.sub'},
33: {'NAME': 'Degenwirbel', 'ICON': 'd:/ymir work/ui/skill/assassin/charyun.sub'},
34: {'NAME': 'Tarnung', 'ICON': 'd:/ymir work/ui/skill/assassin/eunhyeong.sub'},
35: {'NAME': 'Giftwolke', 'ICON': 'd:/ymir work/ui/skill/assassin/sangong.sub'},
36: {'NAME': 'Angriffssprung', 'ICON': 'd:/ymir work/ui/skill/assassin/seomjeon.sub'},
46: {'NAME': 'Wiederholter Schuss', 'ICON': 'd:/ymir work/ui/skill/assassin/yeonsa.sub'},
47: {'NAME': 'Pfeilregen', 'ICON': 'd:/ymir work/ui/skill/assassin/gwangyeok.sub'},
48: {'NAME': 'Feuerpfeil', 'ICON': 'd:/ymir work/ui/skill/assassin/hwajo.sub'},
49: {'NAME': 'Federschreiten', 'ICON': 'd:/ymir work/ui/skill/assassin/gyeonggong.sub'},
50: {'NAME': 'Giftpfeil', 'ICON': 'd:/ymir work/ui/skill/assassin/gigung.sub'},
51: {'NAME': 'Wutausbruch', 'ICON': 'd:/ymir work/ui/skill/assassin/seomgwang.sub'},
31: {'NAME': 'Hinterhalt', 'ICON': 'd:/ymir work/ui/skill/assassin/amseup.sub'}
},
'SURA': {
64: {'NAME': 'Furcht', 'ICON': 'd:/ymir work/ui/skill/sura/gongpo.sub'},
65: {'NAME': 'Verzauberte Rüstung', 'ICON': 'd:/ymir work/ui/skill/sura/jumagap.sub'},
66: {'NAME': 'Zauber aufheben', 'ICON': 'd:/ymir work/ui/skill/sura/pabeop.sub'},
76: {'NAME': 'Dunkler Schlag', 'ICON': 'd:/ymir work/ui/skill/sura/maryeong.sub'},
77: {'NAME': 'Flammenschlag', 'ICON': 'd:/ymir work/ui/skill/sura/hwayeom.sub'},
78: {'NAME': 'Geist der Flamme', 'ICON': 'd:/ymir work/ui/skill/sura/muyeong.sub'},
79: {'NAME': 'Dunkler Schutz', 'ICON': 'd:/ymir work/ui/skill/sura/heuksin.sub'},
80: {'NAME': 'Geisterschlag', 'ICON': 'd:/ymir work/ui/skill/sura/tusok.sub'},
81: {'NAME': 'Dunkler Stein', 'ICON': 'd:/ymir work/ui/skill/sura/geomhwan.sub'},
61: {'NAME': 'Fingerschlag', 'ICON': 'd:/ymir work/ui/skill/sura/swaeryeong.sub'},
62: {'NAME': 'Drachenwirbel', 'ICON': 'd:/ymir work/ui/skill/sura/yonggwon.sub'},
63: {'NAME': 'Verzauberte Klinge', 'ICON': 'd:/ymir work/ui/skill/sura/gwigeom.sub'}
}
}
Das ganze erleichtert die Orientierung vom Skillcount und Skillindex, welche zumindest für "Scripter" einen großen Unterschied darstellen.
Auch habe ich dieses Script genutzt um alle graphischen Oberflächen meines Bots Skillicon betreffend darzustellen.
Des Weiteren kündige ich hiermit einen bald herauskommenden Bot von HeavyHacker, Crank und mir an, welcher m2bob ersetzen soll sobald dieser kostenpflichtig sind.
Enthält weiterhin alle nötigen Funktionen wie Itemsteal, Rangepickup,... die essentiellen Funktionen sind soweit auch alle enthalten, aber auch hier wird es eine Premium Version geben welche z.B. einen Packet Editor/Monitor,... enthält.
Der Bot wird nicht nur auf den offiziellen Servern laufen und das hackshield bypassen sondern auch auf Pservern und braucht selten/keine Updates.
Das ganze wird als Werbeaktion für HeavyHackers kommenden Clientless Bot veranstaltet und wird von meinem Teil aus später als kompletter Open Source Bot released, was Crank und Heavy mit ihrem Part machen ist ihre Entscheidung.
Einen schönen Morgen noch