[Mini Release]Skill Module Adition

01/17/2012 22:06 DaRealFreak#1
Vorgeschichte:
Joa da ich neulich mal meine Scripts wieder angeschaut hatte hab ich mitbekommen, dass ich die Skill Icons einfach nur nooblike dargestellt habe.
Daraufhin hab ich mir ein kleines Script gemacht, welches mir die Icons ausgibt.

Verwenden tut ihr das Script folgendermaßen:
Ihr haut die .pyc Datei einfach in den Lib Ordner und addet dort wo ihr es nutzen wollt das hier:
PHP Code:
        import skilladition
        SkillAditionByMeLol 
= skilladition.SkillAditionDialog() 
Nun könnt ihr diese Befehle ausführen, welche euch eure gesuchten Werte returnen:
SkillIcon via Index
PHP Code:
        SkillAditionByMeLol.GetSkillIcon(index, "Index", grade) 
index ist ein integrer, der Skillindex, z.b. Aura ist Skill Index 4, Starker Körper 19 und die ganzen Values eben.
Grade ist der gesuchte Grade.
Ist ein Integrer zwischen 1 und 3(1 wäre z.b. das Icon wenn der Skill noch nicht Meister ist, 2 ist Meister, 3 ist Großmeister/P)

Charakterspezifisches SkillIcon
PHP Code:
        SkillAditionByMeLol.GetSkillIcon(count, "Count", grade) 
count ist ein Integrer von 0-6 und sind sozusagen eure Skill Slots.
Hierbei spielt es keine Rolle mehr von welcher Rasse/Klasse euer Charakter ist, es ist einfach die Aufzählung der Skills.
Mit grade verhält es sich gleich wie oben.

SkillLevel:
PHP Code:
        SkillAditionByMeLol.GetSkillLevel(count) 
Hierbei wird der aktuelle Skilllevel im gewohnten Format wie auch bei den Commands returned.


Beispiel für diese Commands:
Code:
import skilladition
import chat
SkillAditionByMeLol = skilladition.SkillAditionDialog()
chat.AppendChat(chat.CHAT_TYPE_INFO, str(SkillAditionByMeLol.GetSkillIcon(3, "Count", 2)))
chat.AppendChat(chat.CHAT_TYPE_INFO, str(SkillAditionByMeLol.GetSkillIcon(31, "Index", 2)))
chat.AppendChat(chat.CHAT_TYPE_INFO, str(SkillAditionByMeLol.GetSkillLevel(3)))
returned:
[Only registered and activated users can see links. Click Here To Register...]


War nurn Mini Script, also have fun mit, fangen halt nur Clientmodder was mit an ;)
Hatten mich heute auch 2 danach gefragt, sonst würde ich sonen Mini Teil nichtmal releasen^^

Edit:
Source:
PHP Code:
import ui
import player
import skill
import net
import pack
import app
import dbg
import chat

class SkillAditionDialog(ui.Window):
    
def __init__(self):
        
ui.Window.__init__(self)
        
self.AddSkillIcons()

    
def __del__(self):
        
ui.Window.__del__(self)

    
def AddSkillIcons(self):
        
self.SkillList = []
        try:
            
handle = app.OpenTextFile('locale/de/skilldesc.txt')
            
count = app.GetTextFileLineCount(handle)
        
except IOError:
            
dbg.LogBox('Load Skilldesc Error')
            
app.Abort()
        
SkillCount = 0
        
for i in xrange(count):
            
line = app.GetTextFileLine(handle, i)
            if (
str(line).count('\t') >= 21):
                
SkillData = str(line).split('\t')
                
SkillName = str(SkillData[2])
                
SkillIconName = str(SkillData[12])
                
SkillIndex = str(SkillData[0])
                
SkillData = {'NAME': SkillName,
                 
'ICON': SkillIconName,
                 
'INDEX': SkillIndex,
                 
'COUNT': SkillCount}
                
self.SkillList.append(SkillData)
                
SkillCount += 1

        RaceGroupInfo 
= self.GetClass()
        Class = 
str(RaceGroupInfo).split('/')[0]
        
group = str(RaceGroupInfo).split('/')[1]
        if (Class == 
'Warrior'):
            
SkillIndex = 1
            
if (int(group) == 2):
                
SkillIndex = 16
        elif 
(Class == 'Assassin'):
            
SkillIndex = 31
            
if (int(group) == 2):
                
SkillIndex = 46
        elif 
(Class == 'Sura'):
            
SkillIndex = 61
            
if (int(group) == 2):
                
SkillIndex = 76
        elif 
(Class == 'Shaman'):
            
SkillIndex = 91
            
if (int(group) == 2):
                
SkillIndex = 106
        self
.SkillIconIndex = []
        
Count = 0
        
for SkillValue in xrange(self.NewSkillsEnable()):
            
Skillname = skill.GetSkillName(int(SkillIndex))
            
SkillIndex += 1
            
for Skills in self.SkillList:
                
SkillNameList = Skills['NAME']
                if (
str(Skillname) == str(SkillNameList)):
                    
Count += 1
                    SkillName 
= Skills['NAME']
                    
SkillIcon = Skills['ICON']
                    
SkillIndexAppend = (SkillIndex - 1)
                    
PrivateSkillData = {'NAME': SkillName,
                     
'ICON': SkillIcon,
                     
'INDEX': SkillIndexAppend,
                     
'COUNT': Count}
                    
self.SkillIconIndex.append(PrivateSkillData)

    
def GetSkillIcon(self, index, mode, grade):
        if (
mode == 'Index'):
            for 
Skills in self.SkillList:
                if (
index == int(Skills['INDEX'])):
                    
SkillClass = self.GetSkillClass(int(Skills['INDEX']))
                    return (((
'd:/ymir work/ui/skill/' + str(SkillClass).lower()) + '/') + str((((Skills['ICON'] + '_0') + str(grade)) + '.sub')))
        
elif (mode == 'Count'):
            if 
net.IsConnect():
                
RaceGroupInfo = self.GetClass()
                Class = 
str(RaceGroupInfo).split('/')[0]
                for 
Skills in self.SkillIconIndex:
                    if (
index == int(Skills['COUNT'])):
                        return (((
'd:/ymir work/ui/skill/' + str(Class).lower()) + '/') + str((((Skills['ICON'] + '_0') + str(grade)) + '.sub')))
        else:
            return 

    
def GetSkillLevel(self, SearchSkillIndex):
        
SkillIconLevel = []
        for 
Skill in self.SkillIconIndex:
            
Skillgrade = player.GetSkillGrade(Skill['COUNT'])
            
Skilllevel = player.GetSkillLevel(Skill['COUNT'])
            
SkillIndex = Skill['COUNT']
            
SkillLevelData = {'GRADE': Skillgrade,
             
'LEVEL': Skilllevel,
             
'INDEX': SkillIndex}
            
SkillIconLevel.append(SkillLevelData)

        for 
SkillData in SkillIconLevel:
            
SkillLevel = (int(SkillData['LEVEL']) + (int(SkillData['GRADE']) * 10))
            
SkillIndex = str(SkillData['INDEX'])
            if (
str(SkillIndex) == str(SearchSkillIndex)):
                return 
int(SkillLevel)

    
def GetSkillClass(self, index):
        try:
            
handle = app.OpenTextFile('locale/de/skilldesc.txt')
            
count = app.GetTextFileLineCount(handle)
        
except IOError:
            
dbg.LogBox('Load Skilldesc Error')
            
app.Abort()
        for 
i in xrange(count):
            
line = app.GetTextFileLine(handle, i)
            if (
str(line).count('\t') >= 21):
                
SkillData = str(line).split('\t')
                
SkillIndex = str(SkillData[0])
                
SkillClass = str(SkillData[1])
                if (
int(SkillIndex) == index):
                    return 
str(SkillClass).lower()

    
def GetClass(self):
        
race = net.GetMainActorRace()
        
group = net.GetMainActorSkillGroup()
        if ((
race == 0) or (race == 4)):
            return ((
'Warrior' + '/') + str(group))
        
elif ((race == 1) or (race == 5)):
            return ((
'Assassin' + '/') + str(group))
        
elif ((race == 2) or (race == 6)):
            return ((
'Sura' + '/') + str(group))
        
elif ((race == 3) or (race == 7)):
            return ((
'Shaman' + '/') + str(group))

    
def NewSkillsEnable(self):
        
playersettingmodule = pack.Get('playersettingmodule.py')
        
RaceGroupInfo = self.GetClass()
        Class = 
str(RaceGroupInfo).split('/')[0]
        if ((
str(playersettingmodule).find('NEW_678TH_SKILL_ENABLE = TRUE') != -1) or ((str(playersettingmodule).count('1, 2, 3, 4, 5, 6,') >= 2) or ((str(Class) == 'Shaman') or (str(Class) == 'Sura')))):
            return 
6
        
else:
            return 
5 
MfG DaRealFreak
01/17/2012 22:11 .Awesoome#2
Hast du toll gemacht Steffi.
Nice Teil.


Wie gehts deiner Hand ?:D
01/17/2012 22:21 [SA]sathack#3
Mh ein Counter, wo der Client zum Server schickt, wie oft man eine Fähigkeit benutzt hat. Währ richtig geil ^-^
01/17/2012 22:27 Zadox`#4
Gute arbeit, danke dir.
01/17/2012 22:29 FailOfLord#5
Verstehe den Funktion nicht pls aufklären .
01/18/2012 15:59 Fear *_*#6
sieht nice aus danke :D