Register for your free account! | Forgot your password?

You last visited: Today at 05:23

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release]Get the skilltree

Discussion on [Release]Get the skilltree within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
.BaumKuchen's Avatar
 
elite*gold: 0
Join Date: Oct 2012
Posts: 47
Received Thanks: 292
[Release]Get the skilltree

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:
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) 
Beispielausgabe:
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'}
    }
} 
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
.BaumKuchen is offline  
Thanks
12 Users
Old   #2
 
Shaiine™'s Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 100
Received Thanks: 55
Danke BaumKuchen du schmeckst wie frisch aus dem Ofen Tolles Script. Weiter so

MfG

Shaiine™
Shaiine™ is offline  
Old   #3

 
.MaisKolben™'s Avatar
 
elite*gold: 24
Join Date: May 2009
Posts: 1,165
Received Thanks: 1,222
Sehr nice!
Da ich mich Momentan im Python Bereich bewege, ist das ordentliches Material zum lernen .
Und was deine "Schleichwerbung" angeht -> Hört sich interessant an.

MfG
.MaisKolben™ is offline  
Old   #4

 
elite*gold: 0
Join Date: Dec 2008
Posts: 2,825
Received Thanks: 1,538
supi....freue mich schon auf die source
.Colossus. is offline  
Old   #5
 
[uLow]Beni's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 1,781
Received Thanks: 618
Sehe den Sinn darin nicht ganz, aber wers braucht.
Zur Werbung:
Das ende von Metin2 ist nahe O.o

Freue mich schon *.*
Freue mich auch schon auf den OpenSource Teil von dir und mal schauen wie ein echter python-profi so einen Bot entwickelt.
[uLow]Beni is offline  
Old   #6
 
xCPx's Avatar
 
elite*gold: 20
Join Date: Jun 2011
Posts: 2,902
Received Thanks: 3,344
Hübsch.
Aber gehört für mich fast in kleinere Releases, da es sogesehen simple textdateiverarbeitung ist.
xCPx is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Masterclass Skilltree
08/14/2011 - Rappelz - 0 Replies
...
[HELP] Skilltree
08/04/2011 - DarkOrbit - 0 Replies
*edit* hab schon ne lösung gefunden gefunden
v16 Skilltree
07/23/2011 - Flyff Private Server - 10 Replies
Hey, Ich möchte gerne den v16 Skilltree in meinem v15 Privat Server haben. Und meine Frage ist jetzt ... Wie geht das? Danke schon einmal im Vorraus :D
Lightning Skilltree
10/02/2010 - Silkroad Online - 2 Replies
Alright, I'd like to start a discussion about the lightning skilltree. Mainly cuz I'm bored lolz. Do you think it's bad, or good? And why do you think so. I'll start it off. ----------------------- I think Lightning is a pretty noob Skill tree to pick, for both STR and INT players. Int: Imbue is stronger, more magical def, nukes have a larger range. STR: Stronger imbue, more magical def.
Skilltree
11/16/2005 - SRO Guides & Templates - 3 Replies
Wurde ig oft angeschrieben was man nehmen kann was was bewirkt schaut euch das in ruhe an http://img204.imageshack.us/img204/5379/skillwp1s word7yq.png http://img440.imageshack.us/img440/1779/skillwp2s pear1qg.png http://img342.imageshack.us/img342/1659/skillwp3b ow9xh.png http://img342.imageshack.us/img342/7615/skillqi1c old1pn.png http://img438.imageshack.us/img438/1140/skillqi3f ire2iw.png...



All times are GMT +1. The time now is 05:25.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.