Jump to content

How to remove this icon (Maxmi 4.1)


Recommended Posts

  • Premium

nQ2AHSm.png

Hey,
Well I wonder how I can remove this icon in the serverfiles maxmi 4.1 in this case the client.
I have tried to remove some lines in game.py, constinfo.py, and taskbar.py but without success because when I try to go after the loading screen does not advance, gets stuck in the loading screen image.
I hope someone here can help me,
Thank you.

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

  • Replies 14
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

  • Premium

taskbar.py

 

import uiScriptLocale
import app

ROOT = "d:/ymir work/ui/game/"

#Y_ADD_POSITION = -2
Y_ADD_POSITION = 0

window = {
    "name" : "TaskBar",

    "x" : 0,
    "y" : SCREEN_HEIGHT - 37,

    "width" : SCREEN_WIDTH,
    "height" : 37,

    "children" :
    (
        ## Board
        {
            "name" : "Base_Board_01",
            "type" : "expanded_image",

            "x" : 263,
            "y" : 0,

            "rect" : (0.0, 0.0, float(SCREEN_WIDTH - 263 - 256) / 256.0, 0.0),

            "image" : "d:/ymir work/ui/pattern/TaskBar_Base.tga"
        },

        ## Gauge
        {
            "name" : "Gauge_Board",
            "type" : "image",

            "x" : 0,
            "y" : -10 + Y_ADD_POSITION,

            "image" : ROOT + "taskbar/gauge.sub",

            "children" :
            (
                {
                    "name" : "RampageGauge",
                    "type" : "ani_image",

                    "x" : 8,
                    "y" : 4,
                    "width"  : 40,
                    "height" : 40,

                    "delay" : 6,

                    "images" :
                    (
                        "locale/tr/ui/Mall/00.sub",
                        "locale/tr/ui/Mall/01.sub",
                        "locale/tr/ui/Mall/02.sub",
                        "locale/tr/ui/Mall/03.sub",
                        "locale/tr/ui/Mall/04.sub",
                        "locale/tr/ui/Mall/05.sub",
                        "locale/tr/ui/Mall/06.sub",
                        "locale/tr/ui/Mall/07.sub",
                        "locale/tr/ui/Mall/08.sub",
                        "locale/tr/ui/Mall/09.sub",
                        "locale/tr/ui/Mall/11.sub",
                        "locale/tr/ui/Mall/12.sub",
                        "locale/tr/ui/Mall/13.sub",
                        "locale/tr/ui/Mall/14.sub",
                        "locale/tr/ui/Mall/15.sub",
                        "locale/tr/ui/Mall/16.sub",
                    )
                },
                {
                    "name" : "RampageGauge2",
                    "type" : "ani_image",

                    "x" : 8,
                    "y" : 4,
                    "width"  : 40,
                    "height" : 40,

                    "delay" : 6,

                    "images" :
                    (
                        "locale/tr/ui/Mall/00.sub",
                        "locale/tr/ui/Mall/01.sub",
                        "locale/tr/ui/Mall/02.sub",
                        "locale/tr/ui/Mall/03.sub",
                        "locale/tr/ui/Mall/04.sub",
                        "locale/tr/ui/Mall/05.sub",
                        "locale/tr/ui/Mall/06.sub",
                        "locale/tr/ui/Mall/07.sub",
                        "locale/tr/ui/Mall/08.sub",
                        "locale/tr/ui/Mall/09.sub",
                        "locale/tr/ui/Mall/11.sub",
                        "locale/tr/ui/Mall/12.sub",
                        "locale/tr/ui/Mall/13.sub",
                        "locale/tr/ui/Mall/14.sub",
                        "locale/tr/ui/Mall/15.sub",
                        "locale/tr/ui/Mall/16.sub",
                    )
                },
                {
                    ## 툴팁을 띄우기 위한 윈도우
                    "name" : "HPGauge_Board",
                    "type" : "window",

                    "x" : 59,
                    "y" : 14,

                    "width" : 95,
                    "height" : 11,

                    "children" :
                    (
                        {
                            "name" : "HPRecoveryGaugeBar",
                            "type" : "bar",

                            "x" : 0,
                            "y" : 0,
                            "width" : 95,
                            "height" : 13,
                            "color" : 0x55ff0000,
                        },
                        {
                            "name" : "HPGauge",
                            "type" : "ani_image",

                            "x" : 0,
                            "y" : 0,

                            "delay" : 6,

                            "images" :
                            (
                                "D:/Ymir Work/UI/Pattern/HPGauge/01.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/02.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/03.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/04.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/05.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/06.tga",
                                "D:/Ymir Work/UI/Pattern/HPGauge/07.tga",
                            ),
                        },
                    ),
                },
                {
                    ## 툴팁을 띄우기 위한 윈도우
                    "name" : "SPGauge_Board",
                    "type" : "window",

                    "x" : 59,
                    "y" : 24,

                    "width" : 95,
                    "height" : 11,

                    "children" :
                    (
                        {
                            "name" : "SPRecoveryGaugeBar",
                            "type" : "bar",

                            "x" : 0,
                            "y" : 0,
                            "width" : 95,
                            "height" : 13,
                            "color" : 0x550000ff,
                        },
                        {
                            "name" : "SPGauge",
                            "type" : "ani_image",

                            "x" : 0,
                            "y" : 0,

                            "delay" : 6,

                            "images" :
                            (
                                "D:/Ymir Work/UI/Pattern/SPGauge/01.tga",
                                "D:/Ymir Work/UI/Pattern/SPGauge/02.tga",
                                "D:/Ymir Work/UI/Pattern/SPGauge/03.tga",
                                "D:/Ymir Work/UI/Pattern/SPGauge/04.tga",
                                "D:/Ymir Work/UI/Pattern/SPGauge/05.tga",
                                "D:/Ymir Work/UI/Pattern/SPGauge/06.tga",
                                "D:/Ymir Work/UI/Pattern/SPGauge/07.tga",
                            ),
                        },
                    ),
                },
                {
                    ## 툴팁을 띄우기 위한 윈도우
                    "name" : "STGauge_Board",
                    "type" : "window",

                    "x" : 59,
                    "y" : 38,

                    "width" : 95,
                    "height" : 6,

                    "children" :
                    (
                        {
                            "name" : "STGauge",
                            "type" : "ani_image",

                            "x" : 0,
                            "y" : 0,

                            "delay" : 6,

                            "images" :
                            (
                                "D:/Ymir Work/UI/Pattern/STGauge/01.tga",
                                "D:/Ymir Work/UI/Pattern/STGauge/02.tga",
                                "D:/Ymir Work/UI/Pattern/STGauge/03.tga",
                                "D:/Ymir Work/UI/Pattern/STGauge/04.tga",
                                "D:/Ymir Work/UI/Pattern/STGauge/05.tga",
                                "D:/Ymir Work/UI/Pattern/STGauge/06.tga",
                                "D:/Ymir Work/UI/Pattern/STGauge/07.tga",
                            ),
                        },
                    ),
                },

            ),
        },
        {
            "name" : "EXP_Gauge_Board",
            "type" : "image",

            "x" : 158,
            "y" : 0 + Y_ADD_POSITION,

            "image" : ROOT + "taskbar/exp_gauge.sub",

            "children" :
            (
                {
                    "name" : "EXPGauge_01",
                    "type" : "expanded_image",

                    "x" : 5,
                    "y" : 9,

                    "image" : ROOT + "TaskBar/EXP_Gauge_Point.sub",
                },
                {
                    "name" : "EXPGauge_02",
                    "type" : "expanded_image",

                    "x" : 30,
                    "y" : 9,

                    "image" : ROOT + "TaskBar/EXP_Gauge_Point.sub",
                },
                {
                    "name" : "EXPGauge_03",
                    "type" : "expanded_image",

                    "x" : 55,
                    "y" : 9,

                    "image" : ROOT + "TaskBar/EXP_Gauge_Point.sub",
                },
                {
                    "name" : "EXPGauge_04",
                    "type" : "expanded_image",

                    "x" : 80,
                    "y" : 9,

                    "image" : ROOT + "TaskBar/EXP_Gauge_Point.sub",
                },
            ),
        },

        ## Mouse Button
        {
            "name" : "LeftMouseButton",
            "type" : "button",

            "x" : SCREEN_WIDTH/2 - 128,
            "y" : 3 + Y_ADD_POSITION,

            "default_image" : ROOT + "TaskBar/Mouse_Button_Move_01.sub",
            "over_image" : ROOT + "TaskBar/Mouse_Button_Move_02.sub",
            "down_image" : ROOT + "TaskBar/Mouse_Button_Move_03.sub",
        },
        {
            "name" : "RightMouseButton",
            "type" : "button",

            "x" : SCREEN_WIDTH/2 + 128 + 66 + 11,
            "y" : 3 + Y_ADD_POSITION,

            "default_image" : ROOT + "TaskBar/Mouse_Button_Move_01.sub",
            "over_image" : ROOT + "TaskBar/Mouse_Button_Move_02.sub",
            "down_image" : ROOT + "TaskBar/Mouse_Button_Move_03.sub",
        },

        ## Button
        {
            "name" : "CharacterButton",
            "type" : "button",

            "x" : SCREEN_WIDTH - 144,
            "y" : 3 + Y_ADD_POSITION,

            "tooltip_text" : uiScriptLocale.TASKBAR_CHARACTER,

            "default_image" : ROOT + "TaskBar/Character_Button_01.sub",
            "over_image" : ROOT + "TaskBar/Character_Button_02.sub",
            "down_image" : ROOT + "TaskBar/Character_Button_03.sub",
        },
        {
            "name" : "InventoryButton",
            "type" : "button",

            "x" : SCREEN_WIDTH - 110,
            "y" : 3 + Y_ADD_POSITION,

            "tooltip_text" : uiScriptLocale.TASKBAR_INVENTORY,

            "default_image" : ROOT + "TaskBar/Inventory_Button_01.sub",
            "over_image" : ROOT + "TaskBar/Inventory_Button_02.sub",
            "down_image" : ROOT + "TaskBar/Inventory_Button_03.sub",
        },
        {
            "name" : "VectorsEfsunButton",
            "type" : "button",

            "x" : SCREEN_WIDTH - 178,
            "y" : 3 + Y_ADD_POSITION,

            "tooltip_text" : "Efsun Botu",

            "default_image" : "d:/ymir work/ui/Vectorsefs1.tga",
            "over_image" : "d:/ymir work/ui/Vectorsefs2.tga",
            "down_image" : "d:/ymir work/ui/Vectorsefs1.tga",
        },
        {
            "name" : "MessengerButton",
            "type" : "button",

            "x" : SCREEN_WIDTH - 76,
            "y" : 3 + Y_ADD_POSITION,

            "tooltip_text" : uiScriptLocale.TASKBAR_MESSENGER,

            "default_image" : ROOT + "TaskBar/Community_Button_01.sub",
            "over_image" : ROOT + "TaskBar/Community_Button_02.sub",
            "down_image" : ROOT + "TaskBar/Community_Button_03.sub",
        },
        {
            "name" : "SystemButton",
            "type" : "button",

            "x" : SCREEN_WIDTH - 42,
            "y" : 3 + Y_ADD_POSITION,

            "tooltip_text" : uiScriptLocale.TASKBAR_SYSTEM,

            "default_image" : ROOT + "TaskBar/System_Button_01.sub",
            "over_image" : ROOT + "TaskBar/System_Button_02.sub",
            "down_image" : ROOT + "TaskBar/System_Button_03.sub",
        },

        ## QuickBar
        {
            "name" : "quickslot_board",
            "type" : "window",

            "x" : SCREEN_WIDTH/2 - 128 + 32 + 10,
            "y" : 0 + Y_ADD_POSITION,

            "width" : 256 + 14 + 2 + 11,
            "height" : 37,

            "children" :
            (
                {
                    # ExpandButton은 기존에 ChatButton이었으나, ChatButton의 효용성이 적다 판단하여
                    # ExpandButton으로 바뀐 것이다.
                    "name" : "ExpandButton",
                    "type" : "button",

                    "x" : 128,
                    "y" : 1,
                    "tooltip_text" : uiScriptLocale.TASKBAR_EXPAND,
                    
                    
                    "default_image" : ROOT + "TaskBar/Chat_Button_01.sub",
                    "over_image" : ROOT + "TaskBar/Chat_Button_02.sub",
                    "down_image" : ROOT + "TaskBar/Chat_Button_03.sub",
                },
                {
                    "name" : "quick_slot_1",
                    "type" : "grid_table",

                    "start_index" : 0,

                    "x" : 0,
                    "y" : 3,

                    "x_count" : 4,
                    "y_count" : 1,
                    "x_step" : 32,
                    "y_step" : 32,

                    "image" : "d:/ymir work/ui/Public/Slot_Base.sub",
                    "image_r" : 1.0,
                    "image_g" : 1.0,
                    "image_b" : 1.0,
                    "image_a" : 1.0,

                    "children" :
                    (
                        { "name" : "slot_1", "type" : "image", "x" : 3, "y" : 3, "image" : "d:/ymir work/ui/game/taskbar/1.sub", },
                        { "name" : "slot_2", "type" : "image", "x" : 35, "y" : 3, "image" : "d:/ymir work/ui/game/taskbar/2.sub", },
                        { "name" : "slot_3", "type" : "image", "x" : 67, "y" : 3, "image" : "d:/ymir work/ui/game/taskbar/3.sub", },
                        { "name" : "slot_4", "type" : "image", "x" : 99, "y" : 3, "image" : "d:/ymir work/ui/game/taskbar/4.sub", },
                    ),
                },
                {
                    "name" : "quick_slot_2",
                    "type" : "grid_table",

                    "start_index" : 4,

                    "x" : 128 + 14,
                    "y" : 3,

                    "x_count" : 4,
                    "y_count" : 1,
                    "x_step" : 32,
                    "y_step" : 32,

                    "image" : "d:/ymir work/ui/Public/Slot_Base.sub",
                    "image_r" : 1.0,
                    "image_g" : 1.0,
                    "image_b" : 1.0,
                    "image_a" : 1.0,

                    "children" :
                    (
                        { "name" : "slot_5", "type" : "image", "x" : 3, "y" : 3, "image" : "d:/ymir work/ui/game/taskbar/f1.sub", },
                        { "name" : "slot_6", "type" : "image", "x" : 35, "y" : 3, "image" : "d:/ymir work/ui/game/taskbar/f2.sub", },
                        { "name" : "slot_7", "type" : "image", "x" : 67, "y" : 3, "image" : "d:/ymir work/ui/game/taskbar/f3.sub", },
                        { "name" : "slot_8", "type" : "image", "x" : 99, "y" : 3, "image" : "d:/ymir work/ui/game/taskbar/f4.sub", },
                    ),
                },
                {
                    "name" : "QuickSlotBoard",
                    "type" : "window",

                    "x" : 128+14+128+2,
                    "y" : 0,
                    "width" : 11,
                    "height" : 37,
                    "children" :
                    (
                        {
                            "name" : "QuickSlotNumberBox",
                            "type" : "image",                            
                            "x" : 1,
                            "y" : 15,
                            "image" : ROOT + "taskbar/QuickSlot_Button_Board.sub",
                        },
                        {
                            "name" : "QuickPageUpButton",
                            "type" : "button",
                            "tooltip_text" : uiScriptLocale.TASKBAR_PREV_QUICKSLOT,
                            "x" : 1,
                            "y" : 9,
                            "default_image" : ROOT + "TaskBar/QuickSlot_UpButton_01.sub",
                            "over_image" : ROOT + "TaskBar/QuickSlot_UpButton_02.sub",
                            "down_image" : ROOT + "TaskBar/QuickSlot_UpButton_03.sub",
                        },

                        { 
                            "name" : "QuickPageNumber", 
                            "type" : "image",                             
                            "x" : 3, "y" : 15, "image" : "d:/ymir work/ui/game/taskbar/1.sub", 
                        },
                        {
                            "name" : "QuickPageDownButton",
                            "type" : "button",
                            "tooltip_text" : uiScriptLocale.TASKBAR_NEXT_QUICKSLOT,

                            "x" : 1,
                            "y" : 24,

                            "default_image" : ROOT + "TaskBar/QuickSlot_DownButton_01.sub",
                            "over_image" : ROOT + "TaskBar/QuickSlot_DownButton_02.sub",
                            "down_image" : ROOT + "TaskBar/QuickSlot_DownButton_03.sub",
                        },
    
                    ),
                },
            ),
        },

    ),
}
 

uitaskbar.py

 

import ui
import net
import item
import skill
import localeInfo
import wndMgr
import player
import constInfo
import mouseModule
import uiScriptLocale
import app

MOUSE_SETTINGS = [0, 0]

def InitMouseButtonSettings(left, right):
    global MOUSE_SETTINGS
    MOUSE_SETTINGS = [left, right]

def SetMouseButtonSetting(dir, event):
    global MOUSE_SETTINGS
    MOUSE_SETTINGS[dir] = event
    
def GetMouseButtonSettings():
    global MOUSE_SETTINGS
    return MOUSE_SETTINGS

def SaveMouseButtonSettings():
    global MOUSE_SETTINGS
    open("mouse.cfg", "w").write("%s\t%s" % tuple(MOUSE_SETTINGS))

def LoadMouseButtonSettings():
    global MOUSE_SETTINGS
    tokens = open("mouse.cfg", "r").read().split()

    if len(tokens) != 2:
        raise RuntimeError, "MOUSE_SETTINGS_FILE_ERROR"

    MOUSE_SETTINGS[0] = int(tokens[0])
    MOUSE_SETTINGS[1] = int(tokens[1])

def unsigned32(n):
    return n & 0xFFFFFFFFL

#-------------------Giftbox Begin------------------------------

class GiftBox(ui.ScriptWindow):
    class TextToolTip(ui.Window):
        def __init__(self):
            ui.Window.__init__(self, "TOP_MOST")
            self.SetWindowName("GiftBox")
            textLine = ui.TextLine()
            textLine.SetParent(self)
            textLine.SetHorizontalAlignCenter()
            textLine.SetOutline()
            textLine.Show()
            self.textLine = textLine

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

        def SetText(self, text):
            self.textLine.SetText(text)

        def OnRender(self):
            (mouseX, mouseY) = wndMgr.GetMousePosition()
            self.textLine.SetPosition(mouseX, mouseY - 15)

    def __init__(self):
        #print "NEW TASKBAR  ----------------------------------------------------------------------------"
        ui.ScriptWindow.__init__(self)
        self.tooltipGift = self.TextToolTip()
        self.tooltipGift.Show()
        
    def __del__(self):
        #print "---------------------------------------------------------------------------- DELETE TASKBAR"
        ui.ScriptWindow.__del__(self)

    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "giftbox.py")
        except:
            import exception
            exception.Abort("GiftBox.LoadWindow.LoadObject")        

        self.giftBoxIcon = self.GetChild("GiftBox_Icon")
        self.giftBoxToolTip = self.GetChild("GiftBox_ToolTip")
    
    def Destroy(self):        
        self.giftBoxIcon = 0
        self.giftBoxToolTip = 0        
            
#-------------------Giftbox End------------------------------

class EnergyBar(ui.ScriptWindow):
    class TextToolTip(ui.Window):
        def __init__(self):
            ui.Window.__init__(self, "TOP_MOST")
            self.SetWindowName("EnergyBar")
            textLine = ui.TextLine()
            textLine.SetParent(self)
            textLine.SetHorizontalAlignCenter()
            textLine.SetOutline()
            textLine.Show()
            self.textLine = textLine

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

        def SetText(self, text):
            self.textLine.SetText(text)

        def OnRender(self):
            (mouseX, mouseY) = wndMgr.GetMousePosition()
            self.textLine.SetPosition(mouseX, mouseY - 15)

    def __init__(self):
        #print "NEW TASKBAR  ----------------------------------------------------------------------------"
        ui.ScriptWindow.__init__(self)
        self.tooltipEnergy = self.TextToolTip()
        self.tooltipEnergy.Show()
        
    def __del__(self):
        #print "---------------------------------------------------------------------------- DELETE TASKBAR"
        ui.ScriptWindow.__del__(self)

    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "EnergyBar.py")
        except:
            import exception
            exception.Abort("EnergyBar.LoadWindow.LoadObject")

        self.energyEmpty = self.GetChild("EnergyGauge_Empty")
        self.energyHungry = self.GetChild("EnergyGauge_Hungry")
        self.energyFull = self.GetChild("EnergyGauge_Full")

        self.energyGaugeBoard = self.GetChild("EnergyGauge_Board")
        self.energyGaugeToolTip = self.GetChild("EnergyGauge_ToolTip")

        
    def Destroy(self):        
        self.energyEmpty = None
        self.energyHungry = None
        self.energyFull = None
        self.energyGaugeBoard = 0
        self.energyGaugeToolTip = 0
        self.tooltipEnergy = 0

    ## Gauge
    def RefreshStatus(self):
        pointEnergy = player.GetStatus (player.ENERGY)
        leftTimeEnergy = player.GetStatus (player.ENERGY_END_TIME) - app.GetGlobalTimeStamp()
        # 충기환 지속 시간 = 2시간.
        self.SetEnergy (pointEnergy, leftTimeEnergy, 7200)
            
    def SetEnergy (self, point, leftTime, maxTime):
        leftTime = max (leftTime, 0)
        maxTime = max (maxTime, 0)
            
        self.energyEmpty.Hide()
        self.energyHungry.Hide()
        self.energyFull.Hide()
    
        if leftTime == 0:
            self.energyEmpty.Show()
        elif ((leftTime * 100) / maxTime) < 15:
            self.energyHungry.Show()
        else:
            self.energyFull.Show()
            
        self.tooltipEnergy.SetText("%s" % (localeInfo.TOOLTIP_ENERGY(point)))

    def OnUpdate(self):
        if TRUE == self.energyGaugeToolTip.IsIn():
            self.RefreshStatus()
            self.tooltipEnergy.Show()
        else:
            self.tooltipEnergy.Hide()

class ExpandedTaskBar(ui.ScriptWindow):
    BUTTON_DRAGON_SOUL = 0
    def __init__(self):
        ui.Window.__init__(self)
        self.SetWindowName("ExpandedTaskBar")
    
    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "ExpandedTaskBar.py")
        except:
            import exception
            exception.Abort("ExpandedTaskBar.LoadWindow.LoadObject")

        self.expandedTaskBarBoard = self.GetChild("ExpanedTaskBar_Board")

        self.toggleButtonDict = {}
        self.toggleButtonDict[ExpandedTaskBar.BUTTON_DRAGON_SOUL] = self.GetChild("DragonSoulButton")
        self.toggleButtonDict[ExpandedTaskBar.BUTTON_DRAGON_SOUL].SetParent(self)
    
    def SetTop(self):
        super(ExpandedTaskBar, self).SetTop()    
        for button in self.toggleButtonDict.values():
            button.SetTop()
    
    def Show(self):
        ui.ScriptWindow.Show(self)
    
    def Close(self):
        self.Hide()
    
    def SetToolTipText(self, eButton, text):
        self.toggleButtonDict[eButton].SetToolTipText(text)
        
    def SetToggleButtonEvent(self, eButton, kEventFunc):
        self.toggleButtonDict[eButton].SetEvent(kEventFunc)

    def OnPressEscapeKey(self):
        self.Close()
        return TRUE
    
class TaskBar(ui.ScriptWindow):

    BUTTON_CHARACTER = 0
    BUTTON_INVENTORY = 1
    BUTTON_MESSENGER = 2
    BUTTON_SYSTEM = 3
    BUTTON_CHAT = 4
    BUTTON_VECTORS = 5
    BUTTON_EXPAND = 4
    IS_EXPANDED = FALSE

    MOUSE_BUTTON_LEFT = 0
    MOUSE_BUTTON_RIGHT = 1
    NONE = 255

    EVENT_MOVE = 0
    EVENT_ATTACK = 1
    EVENT_MOVE_AND_ATTACK = 2
    EVENT_CAMERA = 3
    EVENT_SKILL = 4
    EVENT_AUTO = 5

    GAUGE_WIDTH = 95
    GAUGE_HEIGHT = 13

    QUICKPAGE_NUMBER_FILENAME = [
        "d:/ymir work/ui/game/taskbar/1.sub",
        "d:/ymir work/ui/game/taskbar/2.sub",
        "d:/ymir work/ui/game/taskbar/3.sub",
        "d:/ymir work/ui/game/taskbar/4.sub",
    ]

    #gift icon show and hide
    def ShowGift(self):
        if not localeInfo.IsBRAZIL():
            self.wndGiftBox.Show()
    
    def HideGift(self):
        self.wndGiftBox.Hide()

    class TextToolTip(ui.Window):
        def __init__(self):
            ui.Window.__init__(self, "TOP_MOST")

            textLine = ui.TextLine()
            textLine.SetParent(self)
            textLine.SetHorizontalAlignCenter()
            textLine.SetOutline()
            textLine.Show()
            self.textLine = textLine

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

        def SetText(self, text):
            self.textLine.SetText(text)

        def OnRender(self):
            (mouseX, mouseY) = wndMgr.GetMousePosition()
            self.textLine.SetPosition(mouseX, mouseY - 15)

    class SkillButton(ui.SlotWindow):

        def __init__(self):
            ui.SlotWindow.__init__(self)

            self.event = 0
            self.arg = 0

            self.slotIndex = 0
            self.skillIndex = 0

            slotIndex = 0
            wndMgr.SetSlotBaseImage(self.hWnd, "d:/ymir work/ui/public/slot_base.sub", 1.0, 1.0, 1.0, 1.0)
            wndMgr.AppendSlot(self.hWnd, slotIndex, 0, 0, 32, 32)
            self.SetCoverButton(slotIndex,    "d:/ymir work/ui/public/slot_cover_button_01.sub",\
                                            "d:/ymir work/ui/public/slot_cover_button_02.sub",\
                                            "d:/ymir work/ui/public/slot_cover_button_03.sub",\
                                            "d:/ymir work/ui/public/slot_cover_button_04.sub", TRUE, FALSE)
            self.SetSize(32, 32)

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

        def Destroy(self):
            if 0 != self.tooltipSkill:
                self.tooltipSkill.HideToolTip()

        def RefreshSkill(self):
            if 0 != self.slotIndex:
                self.SetSkill(self.slotIndex)

        def SetSkillToolTip(self, tooltip):
            self.tooltipSkill = tooltip

        def SetSkill(self, skillSlotNumber):
            slotNumber = 0
            skillIndex = player.GetSkillIndex(skillSlotNumber)
            skillGrade = player.GetSkillGrade(skillSlotNumber)
            skillLevel = player.GetSkillLevel(skillSlotNumber)
            skillType = skill.GetSkillType(skillIndex)

            self.skillIndex = skillIndex
            if 0 == self.skillIndex:
                self.ClearSlot(slotNumber)
                return

            self.slotIndex = skillSlotNumber

            self.SetSkillSlotNew(slotNumber, skillIndex, skillGrade, skillLevel)
            self.SetSlotCountNew(slotNumber, skillGrade, skillLevel)

            ## NOTE : CoolTime 체크
            if player.IsSkillCoolTime(skillSlotNumber):
                (coolTime, elapsedTime) = player.GetSkillCoolTime(skillSlotNumber)
                self.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)

            ## NOTE : Activate 되어 있다면 아이콘도 업데이트
            if player.IsSkillActive(skillSlotNumber):
                self.ActivateSlot(slotNumber)

        def SetSkillEvent(self, event, arg=0):
            self.event = event
            self.arg = arg

        def GetSkillIndex(self):
            return self.skillIndex

        def GetSlotIndex(self):
            return self.slotIndex

        def Activate(self, coolTime):
            self.SetSlotCoolTime(0, coolTime)

            if skill.IsToggleSkill(self.skillIndex):
                self.ActivateSlot(0)

        def Deactivate(self):
            if skill.IsToggleSkill(self.skillIndex):
                self.DeactivateSlot(0)

        def OnOverInItem(self, dummy):
            self.tooltipSkill.SetSkill(self.skillIndex)

        def OnOverOutItem(self):
            self.tooltipSkill.HideToolTip()

        def OnSelectItemSlot(self, dummy):
            if 0 != self.event:
                if 0 != self.arg:
                    self.event(self.arg)
                else:
                    self.event()

    def __init__(self):
        #print "NEW TASKBAR  ----------------------------------------------------------------------------"

        ui.ScriptWindow.__init__(self, "TOP_MOST")

        self.quickPageNumImageBox = None
        self.tooltipItem = 0
        self.tooltipSkill = 0
        self.mouseModeButtonList = [ ui.ScriptWindow("TOP_MOST"), ui.ScriptWindow("TOP_MOST") ]

        self.tooltipHP = self.TextToolTip()
        self.tooltipHP.Show()
        self.tooltipSP = self.TextToolTip()
        self.tooltipSP.Show()
        self.tooltipST = self.TextToolTip()
        self.tooltipST.Show()
        self.tooltipEXP = self.TextToolTip()
        self.tooltipEXP.Show()
        
        self.skillCategoryNameList = [ "ACTIVE_1", "ACTIVE_2", "ACTIVE_3" ]
        self.skillPageStartSlotIndexDict = {
            "ACTIVE_1" : 1, 
            "ACTIVE_2" : 21, 
            "ACTIVE_3" : 41, 
        }

        self.selectSkillButtonList = []
        
        self.lastUpdateQuickSlot = 0
        self.SetWindowName("TaskBar")

    def __del__(self):
        #print "---------------------------------------------------------------------------- DELETE TASKBAR"
        ui.ScriptWindow.__del__(self)

    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()

            if constInfo.IN_GAME_SHOP_ENABLE:
                pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "TaskBar.py")
            else:
                pyScrLoader.LoadScriptFile(self, "UIScript/TaskBar.py")
            pyScrLoader.LoadScriptFile(self.mouseModeButtonList[self.MOUSE_BUTTON_LEFT], "UIScript/MouseButtonWindow.py")
            pyScrLoader.LoadScriptFile(self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT], "UIScript/RightMouseButtonWindow.py")
        except:
            import exception
            exception.Abort("TaskBar.LoadWindow.LoadObject")

        self.quickslot = []
        self.quickslot.append(self.GetChild("quick_slot_1"))
        self.quickslot.append(self.GetChild("quick_slot_2"))
        for slot in self.quickslot:
            slot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
            slot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptyQuickSlot))
            slot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemQuickSlot))
            slot.SetUnselectItemSlotEvent(ui.__mem_func__(self.UnselectItemQuickSlot))
            slot.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
            slot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))

        toggleButtonDict = {}
        toggleButtonDict[TaskBar.BUTTON_CHARACTER]=self.GetChild("CharacterButton")
        toggleButtonDict[TaskBar.BUTTON_VECTORS]=self.GetChild("VectorsEfsunButton")
        toggleButtonDict[TaskBar.BUTTON_INVENTORY]=self.GetChild("InventoryButton")
        toggleButtonDict[TaskBar.BUTTON_MESSENGER]=self.GetChild("MessengerButton")
        toggleButtonDict[TaskBar.BUTTON_SYSTEM]=self.GetChild("SystemButton")
        
        # ChatButton, ExpandButton 둘 중 하나는 반드시 존재한다.
        try:
            toggleButtonDict[TaskBar.BUTTON_CHAT]=self.GetChild("ChatButton")
        except:
            toggleButtonDict[TaskBar.BUTTON_EXPAND]=self.GetChild("ExpandButton")
            TaskBar.IS_EXPANDED = TRUE
        

        if localeInfo.IsARABIC():
            systemButton = toggleButtonDict[TaskBar.BUTTON_SYSTEM]
            if systemButton.ToolTipText:
                tx, ty = systemButton.ToolTipText.GetLocalPosition()
                tw = systemButton.ToolTipText.GetWidth() 
                systemButton.ToolTipText.SetPosition(-tw/2, ty)


        expGauge = []
        expGauge.append(self.GetChild("EXPGauge_01"))
        expGauge.append(self.GetChild("EXPGauge_02"))
        expGauge.append(self.GetChild("EXPGauge_03"))
        expGauge.append(self.GetChild("EXPGauge_04"))

        for exp in expGauge:
            exp.SetSize(0, 0)

      
        self.quickPageNumImageBox=self.GetChild("QuickPageNumber")

        self.GetChild("QuickPageUpButton").SetEvent(ui.__mem_func__(self.__OnClickQuickPageUpButton))
        self.GetChild("QuickPageDownButton").SetEvent(ui.__mem_func__(self.__OnClickQuickPageDownButton))

        mouseLeftButtonModeButton = self.GetChild("LeftMouseButton")
        mouseRightButtonModeButton = self.GetChild("RightMouseButton")
        mouseLeftButtonModeButton.SetEvent(ui.__mem_func__(self.ToggleLeftMouseButtonModeWindow))        
        mouseRightButtonModeButton.SetEvent(ui.__mem_func__(self.ToggleRightMouseButtonModeWindow))
        self.curMouseModeButton = [ mouseLeftButtonModeButton, mouseRightButtonModeButton ]

        (xLocalRight, yLocalRight) = mouseRightButtonModeButton.GetLocalPosition()
        self.curSkillButton = self.SkillButton()
        self.curSkillButton.SetParent(self)
        self.curSkillButton.SetPosition(xLocalRight, 3)
        self.curSkillButton.SetSkillEvent(ui.__mem_func__(self.ToggleRightMouseButtonModeWindow))
        self.curSkillButton.Hide()

        (xLeft, yLeft) = mouseLeftButtonModeButton.GetGlobalPosition()
        (xRight, yRight) = mouseRightButtonModeButton.GetGlobalPosition()
        leftModeButtonList = self.mouseModeButtonList[self.MOUSE_BUTTON_LEFT]
        leftModeButtonList.SetPosition(xLeft, yLeft - leftModeButtonList.GetHeight()-5)
        rightModeButtonList = self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT]
        rightModeButtonList.SetPosition(xRight - rightModeButtonList.GetWidth() + 32, yRight - rightModeButtonList.GetHeight()-5)
        rightModeButtonList.GetChild("button_skill").SetEvent(lambda adir=self.MOUSE_BUTTON_RIGHT, aevent=self.EVENT_SKILL: self.SelectMouseButtonEvent(adir, aevent))
        rightModeButtonList.GetChild("button_skill").Hide()

        mouseImage = ui.ImageBox("TOP_MOST")
        mouseImage.AddFlag("float")
        mouseImage.LoadImage("d:/ymir work/ui/game/taskbar/mouse_button_camera_01.sub")
        mouseImage.SetPosition(xRight, wndMgr.GetScreenHeight() - 34)
        mouseImage.Hide()
        self.mouseImage = mouseImage

        dir = self.MOUSE_BUTTON_LEFT
        wnd = self.mouseModeButtonList[dir]
        wnd.GetChild("button_move_and_attack").SetEvent(lambda adir=dir, aevent=self.EVENT_MOVE_AND_ATTACK: self.SelectMouseButtonEvent(adir, aevent))
        wnd.GetChild("button_auto_attack").SetEvent(lambda adir=dir, aevent=self.EVENT_AUTO: self.SelectMouseButtonEvent(adir, aevent))
        wnd.GetChild("button_camera").SetEvent(lambda adir=dir, aevent=self.EVENT_CAMERA: self.SelectMouseButtonEvent(adir, aevent))

        dir = self.MOUSE_BUTTON_RIGHT
        wnd = self.mouseModeButtonList[dir]
        wnd.GetChild("button_move_and_attack").SetEvent(lambda adir=dir, aevent=self.EVENT_MOVE_AND_ATTACK: self.SelectMouseButtonEvent(adir, aevent))
        wnd.GetChild("button_camera").SetEvent(lambda adir=dir, aevent=self.EVENT_CAMERA: self.SelectMouseButtonEvent(adir, aevent))

        self.toggleButtonDict = toggleButtonDict
        self.expGauge = expGauge

        if constInfo.IN_GAME_SHOP_ENABLE:
            self.rampageGauge1  = self.GetChild("RampageGauge")
            self.rampageGauge1.OnMouseOverIn = ui.__mem_func__(self.__RampageGauge_OverIn)
            self.rampageGauge2 = self.GetChild("RampageGauge2")
            self.rampageGauge2.OnMouseOverOut = ui.__mem_func__(self.__RampageGauge_OverOut)
            self.rampageGauge2.OnMouseLeftButtonUp = ui.__mem_func__(self.__RampageGauge_Click)
            print "[DEBUG]: constInfo.IN_GAME_SHOP_ENABLE / self.rampageGauge1",constInfo.IN_GAME_SHOP_ENABLE, self.rampageGauge1
            self.__RampageGauge_OverOut()

        self.hpGauge = self.GetChild("HPGauge")
        self.mpGauge = self.GetChild("SPGauge")
        self.stGauge = self.GetChild("STGauge")
        self.hpRecoveryGaugeBar = self.GetChild("HPRecoveryGaugeBar")
        self.spRecoveryGaugeBar = self.GetChild("SPRecoveryGaugeBar")

        self.hpGaugeBoard=self.GetChild("HPGauge_Board")
        self.mpGaugeBoard=self.GetChild("SPGauge_Board")
        self.stGaugeBoard=self.GetChild("STGauge_Board")
        self.expGaugeBoard=self.GetChild("EXP_Gauge_Board")
        
        #giftbox object
        wndGiftBox = GiftBox()
        wndGiftBox.LoadWindow()
        self.wndGiftBox = wndGiftBox
    
        self.__LoadMouseSettings()
        self.RefreshStatus()
        self.RefreshQuickSlot()

    def __RampageGauge_OverIn(self):
        print "rampage_over_in"
        self.rampageGauge2.Show()
        self.rampageGauge1.Hide()

    def __RampageGauge_OverOut(self):
        print "rampage_over_out"
        self.rampageGauge2.Hide()
        self.rampageGauge1.Show()

    def __RampageGauge_Click(self):
        print "rampage_up"
        net.SendChatPacket("/in_game_mall")
        # gift icon hide when click mall icon
        self.wndGiftBox.Hide()    

    def __LoadMouseSettings(self):
        try:
            LoadMouseButtonSettings()
            (mouseLeftButtonEvent, mouseRightButtonEvent) = GetMouseButtonSettings()
            if not self.__IsInSafeMouseButtonSettingRange(mouseLeftButtonEvent) or not self.__IsInSafeMouseButtonSettingRange(mouseRightButtonEvent):
                    raise RuntimeError, "INVALID_MOUSE_BUTTON_SETTINGS"
        except:
            InitMouseButtonSettings(self.EVENT_MOVE_AND_ATTACK, self.EVENT_CAMERA)
            (mouseLeftButtonEvent, mouseRightButtonEvent) = GetMouseButtonSettings()

        try:
            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_LEFT,    mouseLeftButtonEvent)
            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_RIGHT,    mouseRightButtonEvent)
        except:
            InitMouseButtonSettings(self.EVENT_MOVE_AND_ATTACK, self.EVENT_CAMERA)
            (mouseLeftButtonEvent, mouseRightButtonEvent) = GetMouseButtonSettings()

            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_LEFT,    mouseLeftButtonEvent)
            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_RIGHT,    mouseRightButtonEvent)

    def __IsInSafeMouseButtonSettingRange(self, arg):
        return arg >= self.EVENT_MOVE and arg <= self.EVENT_AUTO

    def Destroy(self):        
        SaveMouseButtonSettings()

        self.ClearDictionary()
        self.mouseModeButtonList[0].ClearDictionary()
        self.mouseModeButtonList[1].ClearDictionary()
        self.mouseModeButtonList = 0
        self.curMouseModeButton = 0
        self.curSkillButton = 0
        self.selectSkillButtonList = 0


        self.expGauge = None
        self.hpGauge = None
        self.mpGauge = None
        self.stGauge = None
        self.hpRecoveryGaugeBar = None
        self.spRecoveryGaugeBar = None
    
        self.tooltipItem = 0
        self.tooltipSkill = 0
        self.quickslot = 0
        self.toggleButtonDict = 0

        self.hpGaugeBoard = 0
        self.mpGaugeBoard = 0
        self.stGaugeBoard = 0
        
        self.expGaugeBoard = 0

        self.tooltipHP = 0
        self.tooltipSP = 0
        self.tooltipST = 0
        self.tooltipEXP = 0

        self.mouseImage = None

    def __OnClickQuickPageUpButton(self):
        player.SetQuickPage(player.GetQuickPage()-1)

    def __OnClickQuickPageDownButton(self):
        player.SetQuickPage(player.GetQuickPage()+1)

    def SetToggleButtonEvent(self, eButton, kEventFunc):
        self.toggleButtonDict[eButton].SetEvent(kEventFunc)

    def SetItemToolTip(self, tooltipItem):
        self.tooltipItem = tooltipItem

    def SetSkillToolTip(self, tooltipSkill):
        self.tooltipSkill = tooltipSkill
        self.curSkillButton.SetSkillToolTip(self.tooltipSkill)

    ## Mouse Image
    def ShowMouseImage(self):
        self.mouseImage.SetTop()
        self.mouseImage.Show()

    def HideMouseImage(self):
        player.SetQuickCameraMode(FALSE)
        self.mouseImage.Hide()

    ## Gauge
    def RefreshStatus(self):
        curHP = player.GetStatus(player.HP)
        maxHP = player.GetStatus(player.MAX_HP)
        curSP = player.GetStatus(player.SP)
        maxSP = player.GetStatus(player.MAX_SP)
        curEXP = unsigned32(player.GetStatus(player.EXP))
        nextEXP = unsigned32(player.GetStatus(player.NEXT_EXP))
        recoveryHP = player.GetStatus(player.HP_RECOVERY)
        recoverySP = player.GetStatus(player.SP_RECOVERY)
        
        self.RefreshStamina()

        self.SetHP(curHP, recoveryHP, maxHP)
        self.SetSP(curSP, recoverySP, maxSP)
        self.SetExperience(curEXP, nextEXP)
        
    def RefreshStamina(self):
        curST = player.GetStatus(player.STAMINA)
        maxST = player.GetStatus(player.MAX_STAMINA)
        self.SetST(curST, maxST)

    def RefreshSkill(self):
        self.curSkillButton.RefreshSkill()
        for button in self.selectSkillButtonList:
            button.RefreshSkill()

    def SetHP(self, curPoint, recoveryPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.hpGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipHP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_HP, curPoint, maxPoint))

            if 0 == recoveryPoint:
                self.hpRecoveryGaugeBar.Hide()
            else:
                destPoint = min(maxPoint, curPoint + recoveryPoint)
                newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))
                self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                self.hpRecoveryGaugeBar.Show()

    def SetSP(self, curPoint, recoveryPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.mpGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipSP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_SP, curPoint, maxPoint))

            if 0 == recoveryPoint:
                self.spRecoveryGaugeBar.Hide()
            else:
                destPoint = min(maxPoint, curPoint + recoveryPoint)
                newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))
                self.spRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                self.spRecoveryGaugeBar.Show()

    def SetST(self, curPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.stGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipST.SetText("%s : %d / %d" % (localeInfo.TASKBAR_ST, curPoint, maxPoint))

    def SetExperience(self, curPoint, maxPoint):

        curPoint = min(curPoint, maxPoint)
        curPoint = max(curPoint, 0)
        maxPoint = max(maxPoint, 0)

        quarterPoint = maxPoint / 4
        FullCount = 0

        if 0 != quarterPoint:
            FullCount = min(4, curPoint / quarterPoint)

        for i in xrange(4):
            self.expGauge.Hide()

        for i in xrange(FullCount):
            self.expGauge.SetRenderingRect(0.0, 0.0, 0.0, 0.0)
            self.expGauge.Show()

        if 0 != quarterPoint:
            if FullCount < 4:
                Percentage = float(curPoint % quarterPoint) / quarterPoint - 1.0
                self.expGauge[FullCount].SetRenderingRect(0.0, Percentage, 0.0, 0.0)
                self.expGauge[FullCount].Show()

        #####
        self.tooltipEXP.SetText("%s : %.2f%%" % (localeInfo.TASKBAR_EXP, float(curPoint) / max(1, float(maxPoint)) * 100))
    
        
    ## QuickSlot
    def RefreshQuickSlot(self):

        pageNum = player.GetQuickPage()

        try:
            self.quickPageNumImageBox.LoadImage(TaskBar.QUICKPAGE_NUMBER_FILENAME[pageNum])
        except:
            pass

        startNumber = 0
        for slot in self.quickslot:

            for i in xrange(4):

                slotNumber = i+startNumber

                (Type, Position) = player.GetLocalQuickSlot(slotNumber)

                if player.SLOT_TYPE_NONE == Type:
                    slot.ClearSlot(slotNumber)
                    continue

                if player.SLOT_TYPE_INVENTORY == Type:

                    itemIndex = player.GetItemIndex(Position)
                    itemCount = player.GetItemCount(Position)
                    if itemCount <= 1:
                        itemCount = 0
                    
                    ## 자동물약 (#72723, #72724) 특수처리 - 아이템인데도 슬롯에 활성화/비활성화 표시를 위한 작업임 - [hyo]
                    if constInfo.IS_AUTO_POTION(itemIndex):
                        # metinSocket - [0] : 활성화 여부, [1] : 사용한 양, [2] : 최대 용량
                        metinSocket = [player.GetItemMetinSocket(Position, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
                        
                        if 0 != int(metinSocket[0]):
                            slot.ActivateSlot(slotNumber)
                        else:
                            slot.DeactivateSlot(slotNumber)
                    
                    slot.SetItemSlot(slotNumber, itemIndex, itemCount)

                elif player.SLOT_TYPE_SKILL == Type:

                    skillIndex = player.GetSkillIndex(Position)
                    if 0 == skillIndex:
                        slot.ClearSlot(slotNumber)
                        continue

                    skillType = skill.GetSkillType(skillIndex)
                    if skill.SKILL_TYPE_GUILD == skillType:
                        import guild
                        skillGrade = 0
                        skillLevel = guild.GetSkillLevel(Position)

                    else:
                        skillGrade = player.GetSkillGrade(Position)
                        skillLevel = player.GetSkillLevel(Position)

                    slot.SetSkillSlotNew(slotNumber, skillIndex, skillGrade, skillLevel)
                    slot.SetSlotCountNew(slotNumber, skillGrade, skillLevel)
                    slot.SetCoverButton(slotNumber)

                    ## NOTE : CoolTime 체크
                    if player.IsSkillCoolTime(Position):
                        (coolTime, elapsedTime) = player.GetSkillCoolTime(Position)
                        slot.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)

                    ## NOTE : Activate 되어 있다면 아이콘도 업데이트
                    if player.IsSkillActive(Position):
                        slot.ActivateSlot(slotNumber)

                elif player.SLOT_TYPE_EMOTION == Type:

                    emotionIndex = Position
                    slot.SetEmotionSlot(slotNumber, emotionIndex)
                    slot.SetCoverButton(slotNumber)
                    slot.SetSlotCount(slotNumber, 0)

            slot.RefreshSlot()
            startNumber += 4

    def canAddQuickSlot(self, Type, slotNumber):

        if player.SLOT_TYPE_INVENTORY == Type:

            itemIndex = player.GetItemIndex(slotNumber)
            return item.CanAddToQuickSlotItem(itemIndex)

        return TRUE

    def AddQuickSlot(self, localSlotIndex):
        AttachedSlotType = mouseModule.mouseController.GetAttachedType()
        AttachedSlotNumber = mouseModule.mouseController.GetAttachedSlotNumber()
        AttachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()

        if player.SLOT_TYPE_QUICK_SLOT == AttachedSlotType:
            player.RequestMoveGlobalQuickSlotToLocalQuickSlot(AttachedSlotNumber, localSlotIndex)

        elif player.SLOT_TYPE_EMOTION == AttachedSlotType:

            player.RequestAddLocalQuickSlot(localSlotIndex, AttachedSlotType, AttachedItemIndex)

        elif TRUE == self.canAddQuickSlot(AttachedSlotType, AttachedSlotNumber):

            ## Online Code
            player.RequestAddLocalQuickSlot(localSlotIndex, AttachedSlotType, AttachedSlotNumber)
        
        mouseModule.mouseController.DeattachObject()
        self.RefreshQuickSlot()

    def SelectEmptyQuickSlot(self, slotIndex):

        if TRUE == mouseModule.mouseController.isAttached():
            self.AddQuickSlot(slotIndex)

    def SelectItemQuickSlot(self, localQuickSlotIndex):

        if TRUE == mouseModule.mouseController.isAttached():
            self.AddQuickSlot(localQuickSlotIndex)

        else:
            globalQuickSlotIndex=player.LocalQuickSlotIndexToGlobalQuickSlotIndex(localQuickSlotIndex)
            mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_QUICK_SLOT, globalQuickSlotIndex, globalQuickSlotIndex)

    def UnselectItemQuickSlot(self, localSlotIndex):

        if FALSE == mouseModule.mouseController.isAttached():
            player.RequestUseLocalQuickSlot(localSlotIndex)
            return

        elif mouseModule.mouseController.isAttached():
            mouseModule.mouseController.DeattachObject()
            return


    def OnUseSkill(self, usedSlotIndex, coolTime):

        QUICK_SLOT_SLOT_COUNT = 4
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Activate(coolTime)

        ## Quick Slot
        for slotWindow in self.quickslot:

            for i in xrange(QUICK_SLOT_SLOT_COUNT):

                (Type, Position) = player.GetLocalQuickSlot(slotIndex)

                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.SetSlotCoolTime(slotIndex, coolTime)
                        return

                slotIndex += 1

    def OnActivateSkill(self, usedSlotIndex):
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Deactivate()

        ## Quick Slot
        for slotWindow in self.quickslot:

            for i in xrange(4):

                (Type, Position) = player.GetLocalQuickSlot(slotIndex)

                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.ActivateSlot(slotIndex)
                        return

                slotIndex += 1

    def OnDeactivateSkill(self, usedSlotIndex):
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Deactivate()

        ## Quick Slot
        for slotWindow in self.quickslot:

            for i in xrange(4):

                (Type, Position) = player.GetLocalQuickSlot(slotIndex)

                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.DeactivateSlot(slotIndex)
                        return

                slotIndex += 1

    ## ToolTip
    def OverInItem(self, slotNumber):
        if mouseModule.mouseController.isAttached():
            return

        (Type, Position) = player.GetLocalQuickSlot(slotNumber)

        if player.SLOT_TYPE_INVENTORY == Type:
            self.tooltipItem.SetInventoryItem(Position)
            self.tooltipSkill.HideToolTip()

        elif player.SLOT_TYPE_SKILL == Type:

            skillIndex = player.GetSkillIndex(Position)
            skillType = skill.GetSkillType(skillIndex)

            if skill.SKILL_TYPE_GUILD == skillType:
                import guild
                skillGrade = 0
                skillLevel = guild.GetSkillLevel(Position)

            else:
                skillGrade = player.GetSkillGrade(Position)
                skillLevel = player.GetSkillLevel(Position)

            self.tooltipSkill.SetSkillNew(Position, skillIndex, skillGrade, skillLevel)
            self.tooltipItem.HideToolTip()

    def OverOutItem(self):
        if 0 != self.tooltipItem:
            self.tooltipItem.HideToolTip()
        if 0 != self.tooltipSkill:
            self.tooltipSkill.HideToolTip()

    def OnUpdate(self):
        if app.GetGlobalTime() - self.lastUpdateQuickSlot > 500:
            self.lastUpdateQuickSlot = app.GetGlobalTime()
            self.RefreshQuickSlot()

        if TRUE == self.hpGaugeBoard.IsIn():
            self.tooltipHP.Show()
        else:
            self.tooltipHP.Hide()

        if TRUE == self.mpGaugeBoard.IsIn():
            self.tooltipSP.Show()
        else:
            self.tooltipSP.Hide()

        if TRUE == self.stGaugeBoard.IsIn():
            self.tooltipST.Show()
        else:
            self.tooltipST.Hide()
        
        if TRUE == self.expGaugeBoard.IsIn():
            self.tooltipEXP.Show()
        else:
            self.tooltipEXP.Hide()
        
    ## Skill
    def ToggleLeftMouseButtonModeWindow(self):

        wndMouseButtonMode = self.mouseModeButtonList[self.MOUSE_BUTTON_LEFT]

        if TRUE == wndMouseButtonMode.IsShow():

            wndMouseButtonMode.Hide()

        else:
            wndMouseButtonMode.Show()

    def ToggleRightMouseButtonModeWindow(self):

        wndMouseButtonMode = self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT]

        if TRUE == wndMouseButtonMode.IsShow():

            wndMouseButtonMode.Hide()
            self.CloseSelectSkill()

        else:
            wndMouseButtonMode.Show()
            self.OpenSelectSkill()

    def OpenSelectSkill(self):

        PAGE_SLOT_COUNT = 6

        (xSkillButton, y) = self.curSkillButton.GetGlobalPosition()
        y -= (37 + 32 + 1)

        for key in self.skillCategoryNameList:

            appendCount = 0
            startNumber = self.skillPageStartSlotIndexDict[key]
            x = xSkillButton

            getSkillIndex=player.GetSkillIndex
            getSkillLevel=player.GetSkillLevel
            for i in xrange(PAGE_SLOT_COUNT):

                skillIndex = getSkillIndex(startNumber+i)
                skillLevel = getSkillLevel(startNumber+i)

                if 0 == skillIndex:
                    continue
                if 0 == skillLevel:
                    continue
                if skill.IsStandingSkill(skillIndex):
                    continue

                ## FIXME : 스킬 하나당 슬롯 하나씩 할당하는건 아무리 봐도 부하가 크다.
                ##         이 부분은 시간을 나면 고치도록. - [levites]
                skillButton = self.SkillButton()
                skillButton.SetSkill(startNumber+i)
                skillButton.SetPosition(x, y)
                skillButton.SetSkillEvent(ui.__mem_func__(self.CloseSelectSkill), startNumber+i+1)
                skillButton.SetSkillToolTip(self.tooltipSkill)
                skillButton.SetTop()
                skillButton.Show()
                self.selectSkillButtonList.append(skillButton)

                appendCount += 1
                x -= 32

            if appendCount > 0:
                y -= 32

    def CloseSelectSkill(self, slotIndex=-1):

        self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT].Hide()
        for button in self.selectSkillButtonList:
            button.Destroy()

        self.selectSkillButtonList = []

        if -1 != slotIndex:
            self.curSkillButton.Show()
            self.curMouseModeButton[self.MOUSE_BUTTON_RIGHT].Hide()
            player.SetMouseFunc(player.MBT_RIGHT, player.MBF_SKILL)
            player.ChangeCurrentSkillNumberOnly(slotIndex-1)
        else:
            self.curSkillButton.Hide()
            self.curMouseModeButton[self.MOUSE_BUTTON_RIGHT].Show()

    def SelectMouseButtonEvent(self, dir, event):
        SetMouseButtonSetting(dir, event)

        self.CloseSelectSkill()
        self.mouseModeButtonList[dir].Hide()

        btn = 0
        type = self.NONE
        func = self.NONE
        tooltip_text = ""        
        
        if self.MOUSE_BUTTON_LEFT == dir:
            type = player.MBT_LEFT

        elif self.MOUSE_BUTTON_RIGHT == dir:
            type = player.MBT_RIGHT

        if self.EVENT_MOVE == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_move")
            func = player.MBF_MOVE
            tooltip_text = localeInfo.TASKBAR_MOVE
        elif self.EVENT_ATTACK == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_attack")
            func = player.MBF_ATTACK
            tooltip_text = localeInfo.TASKBAR_ATTACK
        elif self.EVENT_AUTO == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_auto_attack")
            func = player.MBF_AUTO
            tooltip_text = localeInfo.TASKBAR_AUTO
        elif self.EVENT_MOVE_AND_ATTACK == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_move_and_attack")
            func = player.MBF_SMART
            tooltip_text = localeInfo.TASKBAR_ATTACK
        elif self.EVENT_CAMERA == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_camera")
            func = player.MBF_CAMERA
            tooltip_text = localeInfo.TASKBAR_CAMERA
        elif self.EVENT_SKILL == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_skill")
            func = player.MBF_SKILL
            tooltip_text = localeInfo.TASKBAR_SKILL

        if 0 != btn:
            self.curMouseModeButton[dir].SetToolTipText(tooltip_text, 0, -18)
            self.curMouseModeButton[dir].SetUpVisual(btn.GetUpVisualFileName())
            self.curMouseModeButton[dir].SetOverVisual(btn.GetOverVisualFileName())
            self.curMouseModeButton[dir].SetDownVisual(btn.GetDownVisualFileName())
            self.curMouseModeButton[dir].Show()

        player.SetMouseFunc(type, func)

    def OnChangeCurrentSkill(self, skillSlotNumber):
        self.curSkillButton.SetSkill(skillSlotNumber)
        self.curSkillButton.Show()
        self.curMouseModeButton[self.MOUSE_BUTTON_RIGHT].Hide()

 

I dont know why, but th uitaskbar is into the spoiler in the end

Link to comment
Share on other sites

remove it 

        {
            "name" : "VectorsEfsunButton",
            "type" : "button",

            "x" : SCREEN_WIDTH - 178,
            "y" : 3 + Y_ADD_POSITION,

            "tooltip_text" : "Efsun Botu",

            "default_image" : "d:/ymir work/ui/Vectorsefs1.tga",
            "over_image" : "d:/ymir work/ui/Vectorsefs2.tga",
            "down_image" : "d:/ymir work/ui/Vectorsefs1.tga",
        },

Link to comment
Share on other sites

  • Premium

uitaskbar

 

import ui
import net
import item
import skill
import localeInfo
import wndMgr
import player
import constInfo
import mouseModule
import uiScriptLocale
import app

MOUSE_SETTINGS = [0, 0]

def InitMouseButtonSettings(left, right):
    global MOUSE_SETTINGS
    MOUSE_SETTINGS = [left, right]

def SetMouseButtonSetting(dir, event):
    global MOUSE_SETTINGS
    MOUSE_SETTINGS[dir] = event
    
def GetMouseButtonSettings():
    global MOUSE_SETTINGS
    return MOUSE_SETTINGS

def SaveMouseButtonSettings():
    global MOUSE_SETTINGS
    open("mouse.cfg", "w").write("%s\t%s" % tuple(MOUSE_SETTINGS))

def LoadMouseButtonSettings():
    global MOUSE_SETTINGS
    tokens = open("mouse.cfg", "r").read().split()

    if len(tokens) != 2:
        raise RuntimeError, "MOUSE_SETTINGS_FILE_ERROR"

    MOUSE_SETTINGS[0] = int(tokens[0])
    MOUSE_SETTINGS[1] = int(tokens[1])

def unsigned32(n):
    return n & 0xFFFFFFFFL

#-------------------Giftbox Begin------------------------------

class GiftBox(ui.ScriptWindow):
    class TextToolTip(ui.Window):
        def __init__(self):
            ui.Window.__init__(self, "TOP_MOST")
            self.SetWindowName("GiftBox")
            textLine = ui.TextLine()
            textLine.SetParent(self)
            textLine.SetHorizontalAlignCenter()
            textLine.SetOutline()
            textLine.Show()
            self.textLine = textLine

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

        def SetText(self, text):
            self.textLine.SetText(text)

        def OnRender(self):
            (mouseX, mouseY) = wndMgr.GetMousePosition()
            self.textLine.SetPosition(mouseX, mouseY - 15)

    def __init__(self):
        #print "NEW TASKBAR  ----------------------------------------------------------------------------"
        ui.ScriptWindow.__init__(self)
        self.tooltipGift = self.TextToolTip()
        self.tooltipGift.Show()
        
    def __del__(self):
        #print "---------------------------------------------------------------------------- DELETE TASKBAR"
        ui.ScriptWindow.__del__(self)

    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "giftbox.py")
        except:
            import exception
            exception.Abort("GiftBox.LoadWindow.LoadObject")        

        self.giftBoxIcon = self.GetChild("GiftBox_Icon")
        self.giftBoxToolTip = self.GetChild("GiftBox_ToolTip")
    
    def Destroy(self):        
        self.giftBoxIcon = 0
        self.giftBoxToolTip = 0        
            
#-------------------Giftbox End------------------------------

class EnergyBar(ui.ScriptWindow):
    class TextToolTip(ui.Window):
        def __init__(self):
            ui.Window.__init__(self, "TOP_MOST")
            self.SetWindowName("EnergyBar")
            textLine = ui.TextLine()
            textLine.SetParent(self)
            textLine.SetHorizontalAlignCenter()
            textLine.SetOutline()
            textLine.Show()
            self.textLine = textLine

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

        def SetText(self, text):
            self.textLine.SetText(text)

        def OnRender(self):
            (mouseX, mouseY) = wndMgr.GetMousePosition()
            self.textLine.SetPosition(mouseX, mouseY - 15)

    def __init__(self):
        #print "NEW TASKBAR  ----------------------------------------------------------------------------"
        ui.ScriptWindow.__init__(self)
        self.tooltipEnergy = self.TextToolTip()
        self.tooltipEnergy.Show()
        
    def __del__(self):
        #print "---------------------------------------------------------------------------- DELETE TASKBAR"
        ui.ScriptWindow.__del__(self)

    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "EnergyBar.py")
        except:
            import exception
            exception.Abort("EnergyBar.LoadWindow.LoadObject")

        self.energyEmpty = self.GetChild("EnergyGauge_Empty")
        self.energyHungry = self.GetChild("EnergyGauge_Hungry")
        self.energyFull = self.GetChild("EnergyGauge_Full")

        self.energyGaugeBoard = self.GetChild("EnergyGauge_Board")
        self.energyGaugeToolTip = self.GetChild("EnergyGauge_ToolTip")

        
    def Destroy(self):        
        self.energyEmpty = None
        self.energyHungry = None
        self.energyFull = None
        self.energyGaugeBoard = 0
        self.energyGaugeToolTip = 0
        self.tooltipEnergy = 0

    ## Gauge
    def RefreshStatus(self):
        pointEnergy = player.GetStatus (player.ENERGY)
        leftTimeEnergy = player.GetStatus (player.ENERGY_END_TIME) - app.GetGlobalTimeStamp()
        # 충기환 지속 시간 = 2시간.
        self.SetEnergy (pointEnergy, leftTimeEnergy, 7200)
            
    def SetEnergy (self, point, leftTime, maxTime):
        leftTime = max (leftTime, 0)
        maxTime = max (maxTime, 0)
            
        self.energyEmpty.Hide()
        self.energyHungry.Hide()
        self.energyFull.Hide()
    
        if leftTime == 0:
            self.energyEmpty.Show()
        elif ((leftTime * 100) / maxTime) < 15:
            self.energyHungry.Show()
        else:
            self.energyFull.Show()
            
        self.tooltipEnergy.SetText("%s" % (localeInfo.TOOLTIP_ENERGY(point)))

    def OnUpdate(self):
        if TRUE == self.energyGaugeToolTip.IsIn():
            self.RefreshStatus()
            self.tooltipEnergy.Show()
        else:
            self.tooltipEnergy.Hide()

class ExpandedTaskBar(ui.ScriptWindow):
    BUTTON_DRAGON_SOUL = 0
    def __init__(self):
        ui.Window.__init__(self)
        self.SetWindowName("ExpandedTaskBar")
    
    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "ExpandedTaskBar.py")
        except:
            import exception
            exception.Abort("ExpandedTaskBar.LoadWindow.LoadObject")

        self.expandedTaskBarBoard = self.GetChild("ExpanedTaskBar_Board")

        self.toggleButtonDict = {}
        self.toggleButtonDict[ExpandedTaskBar.BUTTON_DRAGON_SOUL] = self.GetChild("DragonSoulButton")
        self.toggleButtonDict[ExpandedTaskBar.BUTTON_DRAGON_SOUL].SetParent(self)
    
    def SetTop(self):
        super(ExpandedTaskBar, self).SetTop()    
        for button in self.toggleButtonDict.values():
            button.SetTop()
    
    def Show(self):
        ui.ScriptWindow.Show(self)
    
    def Close(self):
        self.Hide()
    
    def SetToolTipText(self, eButton, text):
        self.toggleButtonDict[eButton].SetToolTipText(text)
        
    def SetToggleButtonEvent(self, eButton, kEventFunc):
        self.toggleButtonDict[eButton].SetEvent(kEventFunc)

    def OnPressEscapeKey(self):
        self.Close()
        return TRUE
    
class TaskBar(ui.ScriptWindow):

    BUTTON_CHARACTER = 0
    BUTTON_INVENTORY = 1
    BUTTON_MESSENGER = 2
    BUTTON_SYSTEM = 3
    BUTTON_CHAT = 4
    BUTTON_VECTORS = 5
    BUTTON_EXPAND = 4
    IS_EXPANDED = FALSE

    MOUSE_BUTTON_LEFT = 0
    MOUSE_BUTTON_RIGHT = 1
    NONE = 255

    EVENT_MOVE = 0
    EVENT_ATTACK = 1
    EVENT_MOVE_AND_ATTACK = 2
    EVENT_CAMERA = 3
    EVENT_SKILL = 4
    EVENT_AUTO = 5

    GAUGE_WIDTH = 95
    GAUGE_HEIGHT = 13

    QUICKPAGE_NUMBER_FILENAME = [
        "d:/ymir work/ui/game/taskbar/1.sub",
        "d:/ymir work/ui/game/taskbar/2.sub",
        "d:/ymir work/ui/game/taskbar/3.sub",
        "d:/ymir work/ui/game/taskbar/4.sub",
    ]

    #gift icon show and hide
    def ShowGift(self):
        if not localeInfo.IsBRAZIL():
            self.wndGiftBox.Show()
    
    def HideGift(self):
        self.wndGiftBox.Hide()

    class TextToolTip(ui.Window):
        def __init__(self):
            ui.Window.__init__(self, "TOP_MOST")

            textLine = ui.TextLine()
            textLine.SetParent(self)
            textLine.SetHorizontalAlignCenter()
            textLine.SetOutline()
            textLine.Show()
            self.textLine = textLine

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

        def SetText(self, text):
            self.textLine.SetText(text)

        def OnRender(self):
            (mouseX, mouseY) = wndMgr.GetMousePosition()
            self.textLine.SetPosition(mouseX, mouseY - 15)

    class SkillButton(ui.SlotWindow):

        def __init__(self):
            ui.SlotWindow.__init__(self)

            self.event = 0
            self.arg = 0

            self.slotIndex = 0
            self.skillIndex = 0

            slotIndex = 0
            wndMgr.SetSlotBaseImage(self.hWnd, "d:/ymir work/ui/public/slot_base.sub", 1.0, 1.0, 1.0, 1.0)
            wndMgr.AppendSlot(self.hWnd, slotIndex, 0, 0, 32, 32)
            self.SetCoverButton(slotIndex,    "d:/ymir work/ui/public/slot_cover_button_01.sub",\
                                            "d:/ymir work/ui/public/slot_cover_button_02.sub",\
                                            "d:/ymir work/ui/public/slot_cover_button_03.sub",\
                                            "d:/ymir work/ui/public/slot_cover_button_04.sub", TRUE, FALSE)
            self.SetSize(32, 32)

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

        def Destroy(self):
            if 0 != self.tooltipSkill:
                self.tooltipSkill.HideToolTip()

        def RefreshSkill(self):
            if 0 != self.slotIndex:
                self.SetSkill(self.slotIndex)

        def SetSkillToolTip(self, tooltip):
            self.tooltipSkill = tooltip

        def SetSkill(self, skillSlotNumber):
            slotNumber = 0
            skillIndex = player.GetSkillIndex(skillSlotNumber)
            skillGrade = player.GetSkillGrade(skillSlotNumber)
            skillLevel = player.GetSkillLevel(skillSlotNumber)
            skillType = skill.GetSkillType(skillIndex)

            self.skillIndex = skillIndex
            if 0 == self.skillIndex:
                self.ClearSlot(slotNumber)
                return

            self.slotIndex = skillSlotNumber

            self.SetSkillSlotNew(slotNumber, skillIndex, skillGrade, skillLevel)
            self.SetSlotCountNew(slotNumber, skillGrade, skillLevel)

            ## NOTE : CoolTime 체크
            if player.IsSkillCoolTime(skillSlotNumber):
                (coolTime, elapsedTime) = player.GetSkillCoolTime(skillSlotNumber)
                self.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)

            ## NOTE : Activate 되어 있다면 아이콘도 업데이트
            if player.IsSkillActive(skillSlotNumber):
                self.ActivateSlot(slotNumber)

        def SetSkillEvent(self, event, arg=0):
            self.event = event
            self.arg = arg

        def GetSkillIndex(self):
            return self.skillIndex

        def GetSlotIndex(self):
            return self.slotIndex

        def Activate(self, coolTime):
            self.SetSlotCoolTime(0, coolTime)

            if skill.IsToggleSkill(self.skillIndex):
                self.ActivateSlot(0)

        def Deactivate(self):
            if skill.IsToggleSkill(self.skillIndex):
                self.DeactivateSlot(0)

        def OnOverInItem(self, dummy):
            self.tooltipSkill.SetSkill(self.skillIndex)

        def OnOverOutItem(self):
            self.tooltipSkill.HideToolTip()

        def OnSelectItemSlot(self, dummy):
            if 0 != self.event:
                if 0 != self.arg:
                    self.event(self.arg)
                else:
                    self.event()

    def __init__(self):
        #print "NEW TASKBAR  ----------------------------------------------------------------------------"

        ui.ScriptWindow.__init__(self, "TOP_MOST")

        self.quickPageNumImageBox = None
        self.tooltipItem = 0
        self.tooltipSkill = 0
        self.mouseModeButtonList = [ ui.ScriptWindow("TOP_MOST"), ui.ScriptWindow("TOP_MOST") ]

        self.tooltipHP = self.TextToolTip()
        self.tooltipHP.Show()
        self.tooltipSP = self.TextToolTip()
        self.tooltipSP.Show()
        self.tooltipST = self.TextToolTip()
        self.tooltipST.Show()
        self.tooltipEXP = self.TextToolTip()
        self.tooltipEXP.Show()
        
        self.skillCategoryNameList = [ "ACTIVE_1", "ACTIVE_2", "ACTIVE_3" ]
        self.skillPageStartSlotIndexDict = {
            "ACTIVE_1" : 1, 
            "ACTIVE_2" : 21, 
            "ACTIVE_3" : 41, 
        }

        self.selectSkillButtonList = []
        
        self.lastUpdateQuickSlot = 0
        self.SetWindowName("TaskBar")

    def __del__(self):
        #print "---------------------------------------------------------------------------- DELETE TASKBAR"
        ui.ScriptWindow.__del__(self)

    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()

            if constInfo.IN_GAME_SHOP_ENABLE:
                pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "TaskBar.py")
            else:
                pyScrLoader.LoadScriptFile(self, "UIScript/TaskBar.py")
            pyScrLoader.LoadScriptFile(self.mouseModeButtonList[self.MOUSE_BUTTON_LEFT], "UIScript/MouseButtonWindow.py")
            pyScrLoader.LoadScriptFile(self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT], "UIScript/RightMouseButtonWindow.py")
        except:
            import exception
            exception.Abort("TaskBar.LoadWindow.LoadObject")

        self.quickslot = []
        self.quickslot.append(self.GetChild("quick_slot_1"))
        self.quickslot.append(self.GetChild("quick_slot_2"))
        for slot in self.quickslot:
            slot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
            slot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptyQuickSlot))
            slot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemQuickSlot))
            slot.SetUnselectItemSlotEvent(ui.__mem_func__(self.UnselectItemQuickSlot))
            slot.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
            slot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))

        toggleButtonDict = {}
        toggleButtonDict[TaskBar.BUTTON_CHARACTER]=self.GetChild("CharacterButton")
        toggleButtonDict[TaskBar.BUTTON_VECTORS]=self.GetChild("VectorsEfsunButton")
        toggleButtonDict[TaskBar.BUTTON_INVENTORY]=self.GetChild("InventoryButton")
        toggleButtonDict[TaskBar.BUTTON_MESSENGER]=self.GetChild("MessengerButton")
        toggleButtonDict[TaskBar.BUTTON_SYSTEM]=self.GetChild("SystemButton")
        
        # ChatButton, ExpandButton 둘 중 하나는 반드시 존재한다.
        try:
            toggleButtonDict[TaskBar.BUTTON_CHAT]=self.GetChild("ChatButton")
        except:
            toggleButtonDict[TaskBar.BUTTON_EXPAND]=self.GetChild("ExpandButton")
            TaskBar.IS_EXPANDED = TRUE
        

        if localeInfo.IsARABIC():
            systemButton = toggleButtonDict[TaskBar.BUTTON_SYSTEM]
            if systemButton.ToolTipText:
                tx, ty = systemButton.ToolTipText.GetLocalPosition()
                tw = systemButton.ToolTipText.GetWidth() 
                systemButton.ToolTipText.SetPosition(-tw/2, ty)


        expGauge = []
        expGauge.append(self.GetChild("EXPGauge_01"))
        expGauge.append(self.GetChild("EXPGauge_02"))
        expGauge.append(self.GetChild("EXPGauge_03"))
        expGauge.append(self.GetChild("EXPGauge_04"))

        for exp in expGauge:
            exp.SetSize(0, 0)

      
        self.quickPageNumImageBox=self.GetChild("QuickPageNumber")

        self.GetChild("QuickPageUpButton").SetEvent(ui.__mem_func__(self.__OnClickQuickPageUpButton))
        self.GetChild("QuickPageDownButton").SetEvent(ui.__mem_func__(self.__OnClickQuickPageDownButton))

        mouseLeftButtonModeButton = self.GetChild("LeftMouseButton")
        mouseRightButtonModeButton = self.GetChild("RightMouseButton")
        mouseLeftButtonModeButton.SetEvent(ui.__mem_func__(self.ToggleLeftMouseButtonModeWindow))        
        mouseRightButtonModeButton.SetEvent(ui.__mem_func__(self.ToggleRightMouseButtonModeWindow))
        self.curMouseModeButton = [ mouseLeftButtonModeButton, mouseRightButtonModeButton ]

        (xLocalRight, yLocalRight) = mouseRightButtonModeButton.GetLocalPosition()
        self.curSkillButton = self.SkillButton()
        self.curSkillButton.SetParent(self)
        self.curSkillButton.SetPosition(xLocalRight, 3)
        self.curSkillButton.SetSkillEvent(ui.__mem_func__(self.ToggleRightMouseButtonModeWindow))
        self.curSkillButton.Hide()

        (xLeft, yLeft) = mouseLeftButtonModeButton.GetGlobalPosition()
        (xRight, yRight) = mouseRightButtonModeButton.GetGlobalPosition()
        leftModeButtonList = self.mouseModeButtonList[self.MOUSE_BUTTON_LEFT]
        leftModeButtonList.SetPosition(xLeft, yLeft - leftModeButtonList.GetHeight()-5)
        rightModeButtonList = self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT]
        rightModeButtonList.SetPosition(xRight - rightModeButtonList.GetWidth() + 32, yRight - rightModeButtonList.GetHeight()-5)
        rightModeButtonList.GetChild("button_skill").SetEvent(lambda adir=self.MOUSE_BUTTON_RIGHT, aevent=self.EVENT_SKILL: self.SelectMouseButtonEvent(adir, aevent))
        rightModeButtonList.GetChild("button_skill").Hide()

        mouseImage = ui.ImageBox("TOP_MOST")
        mouseImage.AddFlag("float")
        mouseImage.LoadImage("d:/ymir work/ui/game/taskbar/mouse_button_camera_01.sub")
        mouseImage.SetPosition(xRight, wndMgr.GetScreenHeight() - 34)
        mouseImage.Hide()
        self.mouseImage = mouseImage

        dir = self.MOUSE_BUTTON_LEFT
        wnd = self.mouseModeButtonList[dir]
        wnd.GetChild("button_move_and_attack").SetEvent(lambda adir=dir, aevent=self.EVENT_MOVE_AND_ATTACK: self.SelectMouseButtonEvent(adir, aevent))
        wnd.GetChild("button_auto_attack").SetEvent(lambda adir=dir, aevent=self.EVENT_AUTO: self.SelectMouseButtonEvent(adir, aevent))
        wnd.GetChild("button_camera").SetEvent(lambda adir=dir, aevent=self.EVENT_CAMERA: self.SelectMouseButtonEvent(adir, aevent))

        dir = self.MOUSE_BUTTON_RIGHT
        wnd = self.mouseModeButtonList[dir]
        wnd.GetChild("button_move_and_attack").SetEvent(lambda adir=dir, aevent=self.EVENT_MOVE_AND_ATTACK: self.SelectMouseButtonEvent(adir, aevent))
        wnd.GetChild("button_camera").SetEvent(lambda adir=dir, aevent=self.EVENT_CAMERA: self.SelectMouseButtonEvent(adir, aevent))

        self.toggleButtonDict = toggleButtonDict
        self.expGauge = expGauge

        if constInfo.IN_GAME_SHOP_ENABLE:
            self.rampageGauge1  = self.GetChild("RampageGauge")
            self.rampageGauge1.OnMouseOverIn = ui.__mem_func__(self.__RampageGauge_OverIn)
            self.rampageGauge2 = self.GetChild("RampageGauge2")
            self.rampageGauge2.OnMouseOverOut = ui.__mem_func__(self.__RampageGauge_OverOut)
            self.rampageGauge2.OnMouseLeftButtonUp = ui.__mem_func__(self.__RampageGauge_Click)
            print "[DEBUG]: constInfo.IN_GAME_SHOP_ENABLE / self.rampageGauge1",constInfo.IN_GAME_SHOP_ENABLE, self.rampageGauge1
            self.__RampageGauge_OverOut()

        self.hpGauge = self.GetChild("HPGauge")
        self.mpGauge = self.GetChild("SPGauge")
        self.stGauge = self.GetChild("STGauge")
        self.hpRecoveryGaugeBar = self.GetChild("HPRecoveryGaugeBar")
        self.spRecoveryGaugeBar = self.GetChild("SPRecoveryGaugeBar")

        self.hpGaugeBoard=self.GetChild("HPGauge_Board")
        self.mpGaugeBoard=self.GetChild("SPGauge_Board")
        self.stGaugeBoard=self.GetChild("STGauge_Board")
        self.expGaugeBoard=self.GetChild("EXP_Gauge_Board")
        
        #giftbox object
        wndGiftBox = GiftBox()
        wndGiftBox.LoadWindow()
        self.wndGiftBox = wndGiftBox
    
        self.__LoadMouseSettings()
        self.RefreshStatus()
        self.RefreshQuickSlot()

    def __RampageGauge_OverIn(self):
        print "rampage_over_in"
        self.rampageGauge2.Show()
        self.rampageGauge1.Hide()

    def __RampageGauge_OverOut(self):
        print "rampage_over_out"
        self.rampageGauge2.Hide()
        self.rampageGauge1.Show()

    def __RampageGauge_Click(self):
        print "rampage_up"
        net.SendChatPacket("/in_game_mall")
        # gift icon hide when click mall icon
        self.wndGiftBox.Hide()    

    def __LoadMouseSettings(self):
        try:
            LoadMouseButtonSettings()
            (mouseLeftButtonEvent, mouseRightButtonEvent) = GetMouseButtonSettings()
            if not self.__IsInSafeMouseButtonSettingRange(mouseLeftButtonEvent) or not self.__IsInSafeMouseButtonSettingRange(mouseRightButtonEvent):
                    raise RuntimeError, "INVALID_MOUSE_BUTTON_SETTINGS"
        except:
            InitMouseButtonSettings(self.EVENT_MOVE_AND_ATTACK, self.EVENT_CAMERA)
            (mouseLeftButtonEvent, mouseRightButtonEvent) = GetMouseButtonSettings()

        try:
            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_LEFT,    mouseLeftButtonEvent)
            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_RIGHT,    mouseRightButtonEvent)
        except:
            InitMouseButtonSettings(self.EVENT_MOVE_AND_ATTACK, self.EVENT_CAMERA)
            (mouseLeftButtonEvent, mouseRightButtonEvent) = GetMouseButtonSettings()

            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_LEFT,    mouseLeftButtonEvent)
            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_RIGHT,    mouseRightButtonEvent)

    def __IsInSafeMouseButtonSettingRange(self, arg):
        return arg >= self.EVENT_MOVE and arg <= self.EVENT_AUTO

    def Destroy(self):        
        SaveMouseButtonSettings()

        self.ClearDictionary()
        self.mouseModeButtonList[0].ClearDictionary()
        self.mouseModeButtonList[1].ClearDictionary()
        self.mouseModeButtonList = 0
        self.curMouseModeButton = 0
        self.curSkillButton = 0
        self.selectSkillButtonList = 0


        self.expGauge = None
        self.hpGauge = None
        self.mpGauge = None
        self.stGauge = None
        self.hpRecoveryGaugeBar = None
        self.spRecoveryGaugeBar = None
    
        self.tooltipItem = 0
        self.tooltipSkill = 0
        self.quickslot = 0
        self.toggleButtonDict = 0

        self.hpGaugeBoard = 0
        self.mpGaugeBoard = 0
        self.stGaugeBoard = 0
        
        self.expGaugeBoard = 0

        self.tooltipHP = 0
        self.tooltipSP = 0
        self.tooltipST = 0
        self.tooltipEXP = 0

        self.mouseImage = None

    def __OnClickQuickPageUpButton(self):
        player.SetQuickPage(player.GetQuickPage()-1)

    def __OnClickQuickPageDownButton(self):
        player.SetQuickPage(player.GetQuickPage()+1)

    def SetToggleButtonEvent(self, eButton, kEventFunc):
        self.toggleButtonDict[eButton].SetEvent(kEventFunc)

    def SetItemToolTip(self, tooltipItem):
        self.tooltipItem = tooltipItem

    def SetSkillToolTip(self, tooltipSkill):
        self.tooltipSkill = tooltipSkill
        self.curSkillButton.SetSkillToolTip(self.tooltipSkill)

    ## Mouse Image
    def ShowMouseImage(self):
        self.mouseImage.SetTop()
        self.mouseImage.Show()

    def HideMouseImage(self):
        player.SetQuickCameraMode(FALSE)
        self.mouseImage.Hide()

    ## Gauge
    def RefreshStatus(self):
        curHP = player.GetStatus(player.HP)
        maxHP = player.GetStatus(player.MAX_HP)
        curSP = player.GetStatus(player.SP)
        maxSP = player.GetStatus(player.MAX_SP)
        curEXP = unsigned32(player.GetStatus(player.EXP))
        nextEXP = unsigned32(player.GetStatus(player.NEXT_EXP))
        recoveryHP = player.GetStatus(player.HP_RECOVERY)
        recoverySP = player.GetStatus(player.SP_RECOVERY)
        
        self.RefreshStamina()

        self.SetHP(curHP, recoveryHP, maxHP)
        self.SetSP(curSP, recoverySP, maxSP)
        self.SetExperience(curEXP, nextEXP)
        
    def RefreshStamina(self):
        curST = player.GetStatus(player.STAMINA)
        maxST = player.GetStatus(player.MAX_STAMINA)
        self.SetST(curST, maxST)

    def RefreshSkill(self):
        self.curSkillButton.RefreshSkill()
        for button in self.selectSkillButtonList:
            button.RefreshSkill()

    def SetHP(self, curPoint, recoveryPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.hpGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipHP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_HP, curPoint, maxPoint))

            if 0 == recoveryPoint:
                self.hpRecoveryGaugeBar.Hide()
            else:
                destPoint = min(maxPoint, curPoint + recoveryPoint)
                newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))
                self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                self.hpRecoveryGaugeBar.Show()

    def SetSP(self, curPoint, recoveryPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.mpGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipSP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_SP, curPoint, maxPoint))

            if 0 == recoveryPoint:
                self.spRecoveryGaugeBar.Hide()
            else:
                destPoint = min(maxPoint, curPoint + recoveryPoint)
                newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))
                self.spRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                self.spRecoveryGaugeBar.Show()

    def SetST(self, curPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.stGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipST.SetText("%s : %d / %d" % (localeInfo.TASKBAR_ST, curPoint, maxPoint))

    def SetExperience(self, curPoint, maxPoint):

        curPoint = min(curPoint, maxPoint)
        curPoint = max(curPoint, 0)
        maxPoint = max(maxPoint, 0)

        quarterPoint = maxPoint / 4
        FullCount = 0

        if 0 != quarterPoint:
            FullCount = min(4, curPoint / quarterPoint)

        for i in xrange(4):
            self.expGauge.Hide()

        for i in xrange(FullCount):
            self.expGauge.SetRenderingRect(0.0, 0.0, 0.0, 0.0)
            self.expGauge.Show()

        if 0 != quarterPoint:
            if FullCount < 4:
                Percentage = float(curPoint % quarterPoint) / quarterPoint - 1.0
                self.expGauge[FullCount].SetRenderingRect(0.0, Percentage, 0.0, 0.0)
                self.expGauge[FullCount].Show()

        #####
        self.tooltipEXP.SetText("%s : %.2f%%" % (localeInfo.TASKBAR_EXP, float(curPoint) / max(1, float(maxPoint)) * 100))
    
        
    ## QuickSlot
    def RefreshQuickSlot(self):

        pageNum = player.GetQuickPage()

        try:
            self.quickPageNumImageBox.LoadImage(TaskBar.QUICKPAGE_NUMBER_FILENAME[pageNum])
        except:
            pass

        startNumber = 0
        for slot in self.quickslot:

            for i in xrange(4):

                slotNumber = i+startNumber

                (Type, Position) = player.GetLocalQuickSlot(slotNumber)

                if player.SLOT_TYPE_NONE == Type:
                    slot.ClearSlot(slotNumber)
                    continue

                if player.SLOT_TYPE_INVENTORY == Type:

                    itemIndex = player.GetItemIndex(Position)
                    itemCount = player.GetItemCount(Position)
                    if itemCount <= 1:
                        itemCount = 0
                    
                    ## 자동물약 (#72723, #72724) 특수처리 - 아이템인데도 슬롯에 활성화/비활성화 표시를 위한 작업임 - [hyo]
                    if constInfo.IS_AUTO_POTION(itemIndex):
                        # metinSocket - [0] : 활성화 여부, [1] : 사용한 양, [2] : 최대 용량
                        metinSocket = [player.GetItemMetinSocket(Position, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
                        
                        if 0 != int(metinSocket[0]):
                            slot.ActivateSlot(slotNumber)
                        else:
                            slot.DeactivateSlot(slotNumber)
                    
                    slot.SetItemSlot(slotNumber, itemIndex, itemCount)

                elif player.SLOT_TYPE_SKILL == Type:

                    skillIndex = player.GetSkillIndex(Position)
                    if 0 == skillIndex:
                        slot.ClearSlot(slotNumber)
                        continue

                    skillType = skill.GetSkillType(skillIndex)
                    if skill.SKILL_TYPE_GUILD == skillType:
                        import guild
                        skillGrade = 0
                        skillLevel = guild.GetSkillLevel(Position)

                    else:
                        skillGrade = player.GetSkillGrade(Position)
                        skillLevel = player.GetSkillLevel(Position)

                    slot.SetSkillSlotNew(slotNumber, skillIndex, skillGrade, skillLevel)
                    slot.SetSlotCountNew(slotNumber, skillGrade, skillLevel)
                    slot.SetCoverButton(slotNumber)

                    ## NOTE : CoolTime 체크
                    if player.IsSkillCoolTime(Position):
                        (coolTime, elapsedTime) = player.GetSkillCoolTime(Position)
                        slot.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)

                    ## NOTE : Activate 되어 있다면 아이콘도 업데이트
                    if player.IsSkillActive(Position):
                        slot.ActivateSlot(slotNumber)

                elif player.SLOT_TYPE_EMOTION == Type:

                    emotionIndex = Position
                    slot.SetEmotionSlot(slotNumber, emotionIndex)
                    slot.SetCoverButton(slotNumber)
                    slot.SetSlotCount(slotNumber, 0)

            slot.RefreshSlot()
            startNumber += 4

    def canAddQuickSlot(self, Type, slotNumber):

        if player.SLOT_TYPE_INVENTORY == Type:

            itemIndex = player.GetItemIndex(slotNumber)
            return item.CanAddToQuickSlotItem(itemIndex)

        return TRUE

    def AddQuickSlot(self, localSlotIndex):
        AttachedSlotType = mouseModule.mouseController.GetAttachedType()
        AttachedSlotNumber = mouseModule.mouseController.GetAttachedSlotNumber()
        AttachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()

        if player.SLOT_TYPE_QUICK_SLOT == AttachedSlotType:
            player.RequestMoveGlobalQuickSlotToLocalQuickSlot(AttachedSlotNumber, localSlotIndex)

        elif player.SLOT_TYPE_EMOTION == AttachedSlotType:

            player.RequestAddLocalQuickSlot(localSlotIndex, AttachedSlotType, AttachedItemIndex)

        elif TRUE == self.canAddQuickSlot(AttachedSlotType, AttachedSlotNumber):

            ## Online Code
            player.RequestAddLocalQuickSlot(localSlotIndex, AttachedSlotType, AttachedSlotNumber)
        
        mouseModule.mouseController.DeattachObject()
        self.RefreshQuickSlot()

    def SelectEmptyQuickSlot(self, slotIndex):

        if TRUE == mouseModule.mouseController.isAttached():
            self.AddQuickSlot(slotIndex)

    def SelectItemQuickSlot(self, localQuickSlotIndex):

        if TRUE == mouseModule.mouseController.isAttached():
            self.AddQuickSlot(localQuickSlotIndex)

        else:
            globalQuickSlotIndex=player.LocalQuickSlotIndexToGlobalQuickSlotIndex(localQuickSlotIndex)
            mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_QUICK_SLOT, globalQuickSlotIndex, globalQuickSlotIndex)

    def UnselectItemQuickSlot(self, localSlotIndex):

        if FALSE == mouseModule.mouseController.isAttached():
            player.RequestUseLocalQuickSlot(localSlotIndex)
            return

        elif mouseModule.mouseController.isAttached():
            mouseModule.mouseController.DeattachObject()
            return


    def OnUseSkill(self, usedSlotIndex, coolTime):

        QUICK_SLOT_SLOT_COUNT = 4
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Activate(coolTime)

        ## Quick Slot
        for slotWindow in self.quickslot:

            for i in xrange(QUICK_SLOT_SLOT_COUNT):

                (Type, Position) = player.GetLocalQuickSlot(slotIndex)

                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.SetSlotCoolTime(slotIndex, coolTime)
                        return

                slotIndex += 1

    def OnActivateSkill(self, usedSlotIndex):
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Deactivate()

        ## Quick Slot
        for slotWindow in self.quickslot:

            for i in xrange(4):

                (Type, Position) = player.GetLocalQuickSlot(slotIndex)

                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.ActivateSlot(slotIndex)
                        return

                slotIndex += 1

    def OnDeactivateSkill(self, usedSlotIndex):
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Deactivate()

        ## Quick Slot
        for slotWindow in self.quickslot:

            for i in xrange(4):

                (Type, Position) = player.GetLocalQuickSlot(slotIndex)

                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.DeactivateSlot(slotIndex)
                        return

                slotIndex += 1

    ## ToolTip
    def OverInItem(self, slotNumber):
        if mouseModule.mouseController.isAttached():
            return

        (Type, Position) = player.GetLocalQuickSlot(slotNumber)

        if player.SLOT_TYPE_INVENTORY == Type:
            self.tooltipItem.SetInventoryItem(Position)
            self.tooltipSkill.HideToolTip()

        elif player.SLOT_TYPE_SKILL == Type:

            skillIndex = player.GetSkillIndex(Position)
            skillType = skill.GetSkillType(skillIndex)

            if skill.SKILL_TYPE_GUILD == skillType:
                import guild
                skillGrade = 0
                skillLevel = guild.GetSkillLevel(Position)

            else:
                skillGrade = player.GetSkillGrade(Position)
                skillLevel = player.GetSkillLevel(Position)

            self.tooltipSkill.SetSkillNew(Position, skillIndex, skillGrade, skillLevel)
            self.tooltipItem.HideToolTip()

    def OverOutItem(self):
        if 0 != self.tooltipItem:
            self.tooltipItem.HideToolTip()
        if 0 != self.tooltipSkill:
            self.tooltipSkill.HideToolTip()

    def OnUpdate(self):
        if app.GetGlobalTime() - self.lastUpdateQuickSlot > 500:
            self.lastUpdateQuickSlot = app.GetGlobalTime()
            self.RefreshQuickSlot()

        if TRUE == self.hpGaugeBoard.IsIn():
            self.tooltipHP.Show()
        else:
            self.tooltipHP.Hide()

        if TRUE == self.mpGaugeBoard.IsIn():
            self.tooltipSP.Show()
        else:
            self.tooltipSP.Hide()

        if TRUE == self.stGaugeBoard.IsIn():
            self.tooltipST.Show()
        else:
            self.tooltipST.Hide()
        
        if TRUE == self.expGaugeBoard.IsIn():
            self.tooltipEXP.Show()
        else:
            self.tooltipEXP.Hide()
        
    ## Skill
    def ToggleLeftMouseButtonModeWindow(self):

        wndMouseButtonMode = self.mouseModeButtonList[self.MOUSE_BUTTON_LEFT]

        if TRUE == wndMouseButtonMode.IsShow():

            wndMouseButtonMode.Hide()

        else:
            wndMouseButtonMode.Show()

    def ToggleRightMouseButtonModeWindow(self):

        wndMouseButtonMode = self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT]

        if TRUE == wndMouseButtonMode.IsShow():

            wndMouseButtonMode.Hide()
            self.CloseSelectSkill()

        else:
            wndMouseButtonMode.Show()
            self.OpenSelectSkill()

    def OpenSelectSkill(self):

        PAGE_SLOT_COUNT = 6

        (xSkillButton, y) = self.curSkillButton.GetGlobalPosition()
        y -= (37 + 32 + 1)

        for key in self.skillCategoryNameList:

            appendCount = 0
            startNumber = self.skillPageStartSlotIndexDict[key]
            x = xSkillButton

            getSkillIndex=player.GetSkillIndex
            getSkillLevel=player.GetSkillLevel
            for i in xrange(PAGE_SLOT_COUNT):

                skillIndex = getSkillIndex(startNumber+i)
                skillLevel = getSkillLevel(startNumber+i)

                if 0 == skillIndex:
                    continue
                if 0 == skillLevel:
                    continue
                if skill.IsStandingSkill(skillIndex):
                    continue

                ## FIXME : 스킬 하나당 슬롯 하나씩 할당하는건 아무리 봐도 부하가 크다.
                ##         이 부분은 시간을 나면 고치도록. - [levites]
                skillButton = self.SkillButton()
                skillButton.SetSkill(startNumber+i)
                skillButton.SetPosition(x, y)
                skillButton.SetSkillEvent(ui.__mem_func__(self.CloseSelectSkill), startNumber+i+1)
                skillButton.SetSkillToolTip(self.tooltipSkill)
                skillButton.SetTop()
                skillButton.Show()
                self.selectSkillButtonList.append(skillButton)

                appendCount += 1
                x -= 32

            if appendCount > 0:
                y -= 32

    def CloseSelectSkill(self, slotIndex=-1):

        self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT].Hide()
        for button in self.selectSkillButtonList:
            button.Destroy()

        self.selectSkillButtonList = []

        if -1 != slotIndex:
            self.curSkillButton.Show()
            self.curMouseModeButton[self.MOUSE_BUTTON_RIGHT].Hide()
            player.SetMouseFunc(player.MBT_RIGHT, player.MBF_SKILL)
            player.ChangeCurrentSkillNumberOnly(slotIndex-1)
        else:
            self.curSkillButton.Hide()
            self.curMouseModeButton[self.MOUSE_BUTTON_RIGHT].Show()

    def SelectMouseButtonEvent(self, dir, event):
        SetMouseButtonSetting(dir, event)

        self.CloseSelectSkill()
        self.mouseModeButtonList[dir].Hide()

        btn = 0
        type = self.NONE
        func = self.NONE
        tooltip_text = ""        
        
        if self.MOUSE_BUTTON_LEFT == dir:
            type = player.MBT_LEFT

        elif self.MOUSE_BUTTON_RIGHT == dir:
            type = player.MBT_RIGHT

        if self.EVENT_MOVE == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_move")
            func = player.MBF_MOVE
            tooltip_text = localeInfo.TASKBAR_MOVE
        elif self.EVENT_ATTACK == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_attack")
            func = player.MBF_ATTACK
            tooltip_text = localeInfo.TASKBAR_ATTACK
        elif self.EVENT_AUTO == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_auto_attack")
            func = player.MBF_AUTO
            tooltip_text = localeInfo.TASKBAR_AUTO
        elif self.EVENT_MOVE_AND_ATTACK == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_move_and_attack")
            func = player.MBF_SMART
            tooltip_text = localeInfo.TASKBAR_ATTACK
        elif self.EVENT_CAMERA == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_camera")
            func = player.MBF_CAMERA
            tooltip_text = localeInfo.TASKBAR_CAMERA
        elif self.EVENT_SKILL == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_skill")
            func = player.MBF_SKILL
            tooltip_text = localeInfo.TASKBAR_SKILL

        if 0 != btn:
            self.curMouseModeButton[dir].SetToolTipText(tooltip_text, 0, -18)
            self.curMouseModeButton[dir].SetUpVisual(btn.GetUpVisualFileName())
            self.curMouseModeButton[dir].SetOverVisual(btn.GetOverVisualFileName())
            self.curMouseModeButton[dir].SetDownVisual(btn.GetDownVisualFileName())
            self.curMouseModeButton[dir].Show()

        player.SetMouseFunc(type, func)

    def OnChangeCurrentSkill(self, skillSlotNumber):
        self.curSkillButton.SetSkill(skillSlotNumber)
        self.curSkillButton.Show()
        self.curMouseModeButton[self.MOUSE_BUTTON_RIGHT].Hide()

Link to comment
Share on other sites

Spoiler

import ui
import net
import item
import skill
import localeInfo
import wndMgr
import player
import constInfo
import mouseModule
import uiScriptLocale
import app

MOUSE_SETTINGS = [0, 0]

def InitMouseButtonSettings(left, right):
    global MOUSE_SETTINGS
    MOUSE_SETTINGS = [left, right]

def SetMouseButtonSetting(dir, event):
    global MOUSE_SETTINGS
    MOUSE_SETTINGS[dir] = event
    
def GetMouseButtonSettings():
    global MOUSE_SETTINGS
    return MOUSE_SETTINGS

def SaveMouseButtonSettings():
    global MOUSE_SETTINGS
    open("mouse.cfg", "w").write("%s\t%s" % tuple(MOUSE_SETTINGS))

def LoadMouseButtonSettings():
    global MOUSE_SETTINGS
    tokens = open("mouse.cfg", "r").read().split()

    if len(tokens) != 2:
        raise RuntimeError, "MOUSE_SETTINGS_FILE_ERROR"

    MOUSE_SETTINGS[0] = int(tokens[0])
    MOUSE_SETTINGS[1] = int(tokens[1])

def unsigned32(n):
    return n & 0xFFFFFFFFL

#-------------------Giftbox Begin------------------------------

class GiftBox(ui.ScriptWindow):
    class TextToolTip(ui.Window):
        def __init__(self):
            ui.Window.__init__(self, "TOP_MOST")
            self.SetWindowName("GiftBox")
            textLine = ui.TextLine()
            textLine.SetParent(self)
            textLine.SetHorizontalAlignCenter()
            textLine.SetOutline()
            textLine.Show()
            self.textLine = textLine

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

        def SetText(self, text):
            self.textLine.SetText(text)

        def OnRender(self):
            (mouseX, mouseY) = wndMgr.GetMousePosition()
            self.textLine.SetPosition(mouseX, mouseY - 15)

    def __init__(self):
        #print "NEW TASKBAR  ----------------------------------------------------------------------------"
        ui.ScriptWindow.__init__(self)
        self.tooltipGift = self.TextToolTip()
        self.tooltipGift.Show()
        
    def __del__(self):
        #print "---------------------------------------------------------------------------- DELETE TASKBAR"
        ui.ScriptWindow.__del__(self)

    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "giftbox.py")
        except:
            import exception
            exception.Abort("GiftBox.LoadWindow.LoadObject")        

        self.giftBoxIcon = self.GetChild("GiftBox_Icon")
        self.giftBoxToolTip = self.GetChild("GiftBox_ToolTip")
    
    def Destroy(self):        
        self.giftBoxIcon = 0
        self.giftBoxToolTip = 0        
            
#-------------------Giftbox End------------------------------

class EnergyBar(ui.ScriptWindow):
    class TextToolTip(ui.Window):
        def __init__(self):
            ui.Window.__init__(self, "TOP_MOST")
            self.SetWindowName("EnergyBar")
            textLine = ui.TextLine()
            textLine.SetParent(self)
            textLine.SetHorizontalAlignCenter()
            textLine.SetOutline()
            textLine.Show()
            self.textLine = textLine

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

        def SetText(self, text):
            self.textLine.SetText(text)

        def OnRender(self):
            (mouseX, mouseY) = wndMgr.GetMousePosition()
            self.textLine.SetPosition(mouseX, mouseY - 15)

    def __init__(self):
        #print "NEW TASKBAR  ----------------------------------------------------------------------------"
        ui.ScriptWindow.__init__(self)
        self.tooltipEnergy = self.TextToolTip()
        self.tooltipEnergy.Show()
        
    def __del__(self):
        #print "---------------------------------------------------------------------------- DELETE TASKBAR"
        ui.ScriptWindow.__del__(self)

    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "EnergyBar.py")
        except:
            import exception
            exception.Abort("EnergyBar.LoadWindow.LoadObject")

        self.energyEmpty = self.GetChild("EnergyGauge_Empty")
        self.energyHungry = self.GetChild("EnergyGauge_Hungry")
        self.energyFull = self.GetChild("EnergyGauge_Full")

        self.energyGaugeBoard = self.GetChild("EnergyGauge_Board")
        self.energyGaugeToolTip = self.GetChild("EnergyGauge_ToolTip")

        
    def Destroy(self):        
        self.energyEmpty = None
        self.energyHungry = None
        self.energyFull = None
        self.energyGaugeBoard = 0
        self.energyGaugeToolTip = 0
        self.tooltipEnergy = 0

    ## Gauge
    def RefreshStatus(self):
        pointEnergy = player.GetStatus (player.ENERGY)
        leftTimeEnergy = player.GetStatus (player.ENERGY_END_TIME) - app.GetGlobalTimeStamp()
        # 충기환 지속 시간 = 2시간.
        self.SetEnergy (pointEnergy, leftTimeEnergy, 7200)
            
    def SetEnergy (self, point, leftTime, maxTime):
        leftTime = max (leftTime, 0)
        maxTime = max (maxTime, 0)
            
        self.energyEmpty.Hide()
        self.energyHungry.Hide()
        self.energyFull.Hide()
    
        if leftTime == 0:
            self.energyEmpty.Show()
        elif ((leftTime * 100) / maxTime) < 15:
            self.energyHungry.Show()
        else:
            self.energyFull.Show()
            
        self.tooltipEnergy.SetText("%s" % (localeInfo.TOOLTIP_ENERGY(point)))

    def OnUpdate(self):
        if TRUE == self.energyGaugeToolTip.IsIn():
            self.RefreshStatus()
            self.tooltipEnergy.Show()
        else:
            self.tooltipEnergy.Hide()

class ExpandedTaskBar(ui.ScriptWindow):
    BUTTON_DRAGON_SOUL = 0
    def __init__(self):
        ui.Window.__init__(self)
        self.SetWindowName("ExpandedTaskBar")
    
    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()
            pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "ExpandedTaskBar.py")
        except:
            import exception
            exception.Abort("ExpandedTaskBar.LoadWindow.LoadObject")

        self.expandedTaskBarBoard = self.GetChild("ExpanedTaskBar_Board")

        self.toggleButtonDict = {}
        self.toggleButtonDict[ExpandedTaskBar.BUTTON_DRAGON_SOUL] = self.GetChild("DragonSoulButton")
        self.toggleButtonDict[ExpandedTaskBar.BUTTON_DRAGON_SOUL].SetParent(self)
    
    def SetTop(self):
        super(ExpandedTaskBar, self).SetTop()    
        for button in self.toggleButtonDict.values():
            button.SetTop()
    
    def Show(self):
        ui.ScriptWindow.Show(self)
    
    def Close(self):
        self.Hide()
    
    def SetToolTipText(self, eButton, text):
        self.toggleButtonDict[eButton].SetToolTipText(text)
        
    def SetToggleButtonEvent(self, eButton, kEventFunc):
        self.toggleButtonDict[eButton].SetEvent(kEventFunc)

    def OnPressEscapeKey(self):
        self.Close()
        return TRUE
    
class TaskBar(ui.ScriptWindow):

    BUTTON_CHARACTER = 0
    BUTTON_INVENTORY = 1
    BUTTON_MESSENGER = 2
    BUTTON_SYSTEM = 3
    BUTTON_CHAT = 4
    BUTTON_EXPAND = 4
    IS_EXPANDED = FALSE

    MOUSE_BUTTON_LEFT = 0
    MOUSE_BUTTON_RIGHT = 1
    NONE = 255

    EVENT_MOVE = 0
    EVENT_ATTACK = 1
    EVENT_MOVE_AND_ATTACK = 2
    EVENT_CAMERA = 3
    EVENT_SKILL = 4
    EVENT_AUTO = 5

    GAUGE_WIDTH = 95
    GAUGE_HEIGHT = 13

    QUICKPAGE_NUMBER_FILENAME = [
        "d:/ymir work/ui/game/taskbar/1.sub",
        "d:/ymir work/ui/game/taskbar/2.sub",
        "d:/ymir work/ui/game/taskbar/3.sub",
        "d:/ymir work/ui/game/taskbar/4.sub",
    ]

    #gift icon show and hide
    def ShowGift(self):
        if not localeInfo.IsBRAZIL():
            self.wndGiftBox.Show()
    
    def HideGift(self):
        self.wndGiftBox.Hide()

    class TextToolTip(ui.Window):
        def __init__(self):
            ui.Window.__init__(self, "TOP_MOST")

            textLine = ui.TextLine()
            textLine.SetParent(self)
            textLine.SetHorizontalAlignCenter()
            textLine.SetOutline()
            textLine.Show()
            self.textLine = textLine

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

        def SetText(self, text):
            self.textLine.SetText(text)

        def OnRender(self):
            (mouseX, mouseY) = wndMgr.GetMousePosition()
            self.textLine.SetPosition(mouseX, mouseY - 15)

    class SkillButton(ui.SlotWindow):

        def __init__(self):
            ui.SlotWindow.__init__(self)

            self.event = 0
            self.arg = 0

            self.slotIndex = 0
            self.skillIndex = 0

            slotIndex = 0
            wndMgr.SetSlotBaseImage(self.hWnd, "d:/ymir work/ui/public/slot_base.sub", 1.0, 1.0, 1.0, 1.0)
            wndMgr.AppendSlot(self.hWnd, slotIndex, 0, 0, 32, 32)
            self.SetCoverButton(slotIndex,    "d:/ymir work/ui/public/slot_cover_button_01.sub",\
                                            "d:/ymir work/ui/public/slot_cover_button_02.sub",\
                                            "d:/ymir work/ui/public/slot_cover_button_03.sub",\
                                            "d:/ymir work/ui/public/slot_cover_button_04.sub", TRUE, FALSE)
            self.SetSize(32, 32)

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

        def Destroy(self):
            if 0 != self.tooltipSkill:
                self.tooltipSkill.HideToolTip()

        def RefreshSkill(self):
            if 0 != self.slotIndex:
                self.SetSkill(self.slotIndex)

        def SetSkillToolTip(self, tooltip):
            self.tooltipSkill = tooltip

        def SetSkill(self, skillSlotNumber):
            slotNumber = 0
            skillIndex = player.GetSkillIndex(skillSlotNumber)
            skillGrade = player.GetSkillGrade(skillSlotNumber)
            skillLevel = player.GetSkillLevel(skillSlotNumber)
            skillType = skill.GetSkillType(skillIndex)

            self.skillIndex = skillIndex
            if 0 == self.skillIndex:
                self.ClearSlot(slotNumber)
                return

            self.slotIndex = skillSlotNumber

            self.SetSkillSlotNew(slotNumber, skillIndex, skillGrade, skillLevel)
            self.SetSlotCountNew(slotNumber, skillGrade, skillLevel)

            ## NOTE : CoolTime 체크
            if player.IsSkillCoolTime(skillSlotNumber):
                (coolTime, elapsedTime) = player.GetSkillCoolTime(skillSlotNumber)
                self.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)

            ## NOTE : Activate 되어 있다면 아이콘도 업데이트
            if player.IsSkillActive(skillSlotNumber):
                self.ActivateSlot(slotNumber)

        def SetSkillEvent(self, event, arg=0):
            self.event = event
            self.arg = arg

        def GetSkillIndex(self):
            return self.skillIndex

        def GetSlotIndex(self):
            return self.slotIndex

        def Activate(self, coolTime):
            self.SetSlotCoolTime(0, coolTime)

            if skill.IsToggleSkill(self.skillIndex):
                self.ActivateSlot(0)

        def Deactivate(self):
            if skill.IsToggleSkill(self.skillIndex):
                self.DeactivateSlot(0)

        def OnOverInItem(self, dummy):
            self.tooltipSkill.SetSkill(self.skillIndex)

        def OnOverOutItem(self):
            self.tooltipSkill.HideToolTip()

        def OnSelectItemSlot(self, dummy):
            if 0 != self.event:
                if 0 != self.arg:
                    self.event(self.arg)
                else:
                    self.event()

    def __init__(self):
        #print "NEW TASKBAR  ----------------------------------------------------------------------------"

        ui.ScriptWindow.__init__(self, "TOP_MOST")

        self.quickPageNumImageBox = None
        self.tooltipItem = 0
        self.tooltipSkill = 0
        self.mouseModeButtonList = [ ui.ScriptWindow("TOP_MOST"), ui.ScriptWindow("TOP_MOST") ]

        self.tooltipHP = self.TextToolTip()
        self.tooltipHP.Show()
        self.tooltipSP = self.TextToolTip()
        self.tooltipSP.Show()
        self.tooltipST = self.TextToolTip()
        self.tooltipST.Show()
        self.tooltipEXP = self.TextToolTip()
        self.tooltipEXP.Show()
        
        self.skillCategoryNameList = [ "ACTIVE_1", "ACTIVE_2", "ACTIVE_3" ]
        self.skillPageStartSlotIndexDict = {
            "ACTIVE_1" : 1, 
            "ACTIVE_2" : 21, 
            "ACTIVE_3" : 41, 
        }

        self.selectSkillButtonList = []
        
        self.lastUpdateQuickSlot = 0
        self.SetWindowName("TaskBar")

    def __del__(self):
        #print "---------------------------------------------------------------------------- DELETE TASKBAR"
        ui.ScriptWindow.__del__(self)

    def LoadWindow(self):
        try:
            pyScrLoader = ui.PythonScriptLoader()

            if constInfo.IN_GAME_SHOP_ENABLE:
                pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "TaskBar.py")
            else:
                pyScrLoader.LoadScriptFile(self, "UIScript/TaskBar.py")
            pyScrLoader.LoadScriptFile(self.mouseModeButtonList[self.MOUSE_BUTTON_LEFT], "UIScript/MouseButtonWindow.py")
            pyScrLoader.LoadScriptFile(self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT], "UIScript/RightMouseButtonWindow.py")
        except:
            import exception
            exception.Abort("TaskBar.LoadWindow.LoadObject")

        self.quickslot = []
        self.quickslot.append(self.GetChild("quick_slot_1"))
        self.quickslot.append(self.GetChild("quick_slot_2"))
        for slot in self.quickslot:
            slot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
            slot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptyQuickSlot))
            slot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemQuickSlot))
            slot.SetUnselectItemSlotEvent(ui.__mem_func__(self.UnselectItemQuickSlot))
            slot.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
            slot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))

        toggleButtonDict = {}
        toggleButtonDict[TaskBar.BUTTON_CHARACTER]=self.GetChild("CharacterButton")
        toggleButtonDict[TaskBar.BUTTON_INVENTORY]=self.GetChild("InventoryButton")
        toggleButtonDict[TaskBar.BUTTON_MESSENGER]=self.GetChild("MessengerButton")
        toggleButtonDict[TaskBar.BUTTON_SYSTEM]=self.GetChild("SystemButton")
        
        # ChatButton, ExpandButton 둘 중 하나는 반드시 존재한다.
        try:
            toggleButtonDict[TaskBar.BUTTON_CHAT]=self.GetChild("ChatButton")
        except:
            toggleButtonDict[TaskBar.BUTTON_EXPAND]=self.GetChild("ExpandButton")
            TaskBar.IS_EXPANDED = TRUE
        

        if localeInfo.IsARABIC():
            systemButton = toggleButtonDict[TaskBar.BUTTON_SYSTEM]
            if systemButton.ToolTipText:
                tx, ty = systemButton.ToolTipText.GetLocalPosition()
                tw = systemButton.ToolTipText.GetWidth() 
                systemButton.ToolTipText.SetPosition(-tw/2, ty)


        expGauge = []
        expGauge.append(self.GetChild("EXPGauge_01"))
        expGauge.append(self.GetChild("EXPGauge_02"))
        expGauge.append(self.GetChild("EXPGauge_03"))
        expGauge.append(self.GetChild("EXPGauge_04"))

        for exp in expGauge:
            exp.SetSize(0, 0)

      
        self.quickPageNumImageBox=self.GetChild("QuickPageNumber")

        self.GetChild("QuickPageUpButton").SetEvent(ui.__mem_func__(self.__OnClickQuickPageUpButton))
        self.GetChild("QuickPageDownButton").SetEvent(ui.__mem_func__(self.__OnClickQuickPageDownButton))

        mouseLeftButtonModeButton = self.GetChild("LeftMouseButton")
        mouseRightButtonModeButton = self.GetChild("RightMouseButton")
        mouseLeftButtonModeButton.SetEvent(ui.__mem_func__(self.ToggleLeftMouseButtonModeWindow))        
        mouseRightButtonModeButton.SetEvent(ui.__mem_func__(self.ToggleRightMouseButtonModeWindow))
        self.curMouseModeButton = [ mouseLeftButtonModeButton, mouseRightButtonModeButton ]

        (xLocalRight, yLocalRight) = mouseRightButtonModeButton.GetLocalPosition()
        self.curSkillButton = self.SkillButton()
        self.curSkillButton.SetParent(self)
        self.curSkillButton.SetPosition(xLocalRight, 3)
        self.curSkillButton.SetSkillEvent(ui.__mem_func__(self.ToggleRightMouseButtonModeWindow))
        self.curSkillButton.Hide()

        (xLeft, yLeft) = mouseLeftButtonModeButton.GetGlobalPosition()
        (xRight, yRight) = mouseRightButtonModeButton.GetGlobalPosition()
        leftModeButtonList = self.mouseModeButtonList[self.MOUSE_BUTTON_LEFT]
        leftModeButtonList.SetPosition(xLeft, yLeft - leftModeButtonList.GetHeight()-5)
        rightModeButtonList = self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT]
        rightModeButtonList.SetPosition(xRight - rightModeButtonList.GetWidth() + 32, yRight - rightModeButtonList.GetHeight()-5)
        rightModeButtonList.GetChild("button_skill").SetEvent(lambda adir=self.MOUSE_BUTTON_RIGHT, aevent=self.EVENT_SKILL: self.SelectMouseButtonEvent(adir, aevent))
        rightModeButtonList.GetChild("button_skill").Hide()

        mouseImage = ui.ImageBox("TOP_MOST")
        mouseImage.AddFlag("float")
        mouseImage.LoadImage("d:/ymir work/ui/game/taskbar/mouse_button_camera_01.sub")
        mouseImage.SetPosition(xRight, wndMgr.GetScreenHeight() - 34)
        mouseImage.Hide()
        self.mouseImage = mouseImage

        dir = self.MOUSE_BUTTON_LEFT
        wnd = self.mouseModeButtonList[dir]
        wnd.GetChild("button_move_and_attack").SetEvent(lambda adir=dir, aevent=self.EVENT_MOVE_AND_ATTACK: self.SelectMouseButtonEvent(adir, aevent))
        wnd.GetChild("button_auto_attack").SetEvent(lambda adir=dir, aevent=self.EVENT_AUTO: self.SelectMouseButtonEvent(adir, aevent))
        wnd.GetChild("button_camera").SetEvent(lambda adir=dir, aevent=self.EVENT_CAMERA: self.SelectMouseButtonEvent(adir, aevent))

        dir = self.MOUSE_BUTTON_RIGHT
        wnd = self.mouseModeButtonList[dir]
        wnd.GetChild("button_move_and_attack").SetEvent(lambda adir=dir, aevent=self.EVENT_MOVE_AND_ATTACK: self.SelectMouseButtonEvent(adir, aevent))
        wnd.GetChild("button_camera").SetEvent(lambda adir=dir, aevent=self.EVENT_CAMERA: self.SelectMouseButtonEvent(adir, aevent))

        self.toggleButtonDict = toggleButtonDict
        self.expGauge = expGauge

        if constInfo.IN_GAME_SHOP_ENABLE:
            self.rampageGauge1  = self.GetChild("RampageGauge")
            self.rampageGauge1.OnMouseOverIn = ui.__mem_func__(self.__RampageGauge_OverIn)
            self.rampageGauge2 = self.GetChild("RampageGauge2")
            self.rampageGauge2.OnMouseOverOut = ui.__mem_func__(self.__RampageGauge_OverOut)
            self.rampageGauge2.OnMouseLeftButtonUp = ui.__mem_func__(self.__RampageGauge_Click)
            print "[DEBUG]: constInfo.IN_GAME_SHOP_ENABLE / self.rampageGauge1",constInfo.IN_GAME_SHOP_ENABLE, self.rampageGauge1
            self.__RampageGauge_OverOut()

        self.hpGauge = self.GetChild("HPGauge")
        self.mpGauge = self.GetChild("SPGauge")
        self.stGauge = self.GetChild("STGauge")
        self.hpRecoveryGaugeBar = self.GetChild("HPRecoveryGaugeBar")
        self.spRecoveryGaugeBar = self.GetChild("SPRecoveryGaugeBar")

        self.hpGaugeBoard=self.GetChild("HPGauge_Board")
        self.mpGaugeBoard=self.GetChild("SPGauge_Board")
        self.stGaugeBoard=self.GetChild("STGauge_Board")
        self.expGaugeBoard=self.GetChild("EXP_Gauge_Board")
        
        #giftbox object
        wndGiftBox = GiftBox()
        wndGiftBox.LoadWindow()
        self.wndGiftBox = wndGiftBox
    
        self.__LoadMouseSettings()
        self.RefreshStatus()
        self.RefreshQuickSlot()

    def __RampageGauge_OverIn(self):
        print "rampage_over_in"
        self.rampageGauge2.Show()
        self.rampageGauge1.Hide()

    def __RampageGauge_OverOut(self):
        print "rampage_over_out"
        self.rampageGauge2.Hide()
        self.rampageGauge1.Show()

    def __RampageGauge_Click(self):
        print "rampage_up"
        net.SendChatPacket("/in_game_mall")
        # gift icon hide when click mall icon
        self.wndGiftBox.Hide()    

    def __LoadMouseSettings(self):
        try:
            LoadMouseButtonSettings()
            (mouseLeftButtonEvent, mouseRightButtonEvent) = GetMouseButtonSettings()
            if not self.__IsInSafeMouseButtonSettingRange(mouseLeftButtonEvent) or not self.__IsInSafeMouseButtonSettingRange(mouseRightButtonEvent):
                    raise RuntimeError, "INVALID_MOUSE_BUTTON_SETTINGS"
        except:
            InitMouseButtonSettings(self.EVENT_MOVE_AND_ATTACK, self.EVENT_CAMERA)
            (mouseLeftButtonEvent, mouseRightButtonEvent) = GetMouseButtonSettings()

        try:
            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_LEFT,    mouseLeftButtonEvent)
            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_RIGHT,    mouseRightButtonEvent)
        except:
            InitMouseButtonSettings(self.EVENT_MOVE_AND_ATTACK, self.EVENT_CAMERA)
            (mouseLeftButtonEvent, mouseRightButtonEvent) = GetMouseButtonSettings()

            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_LEFT,    mouseLeftButtonEvent)
            self.SelectMouseButtonEvent(self.MOUSE_BUTTON_RIGHT,    mouseRightButtonEvent)

    def __IsInSafeMouseButtonSettingRange(self, arg):
        return arg >= self.EVENT_MOVE and arg <= self.EVENT_AUTO

    def Destroy(self):        
        SaveMouseButtonSettings()

        self.ClearDictionary()
        self.mouseModeButtonList[0].ClearDictionary()
        self.mouseModeButtonList[1].ClearDictionary()
        self.mouseModeButtonList = 0
        self.curMouseModeButton = 0
        self.curSkillButton = 0
        self.selectSkillButtonList = 0


        self.expGauge = None
        self.hpGauge = None
        self.mpGauge = None
        self.stGauge = None
        self.hpRecoveryGaugeBar = None
        self.spRecoveryGaugeBar = None
    
        self.tooltipItem = 0
        self.tooltipSkill = 0
        self.quickslot = 0
        self.toggleButtonDict = 0

        self.hpGaugeBoard = 0
        self.mpGaugeBoard = 0
        self.stGaugeBoard = 0
        
        self.expGaugeBoard = 0

        self.tooltipHP = 0
        self.tooltipSP = 0
        self.tooltipST = 0
        self.tooltipEXP = 0

        self.mouseImage = None

    def __OnClickQuickPageUpButton(self):
        player.SetQuickPage(player.GetQuickPage()-1)

    def __OnClickQuickPageDownButton(self):
        player.SetQuickPage(player.GetQuickPage()+1)

    def SetToggleButtonEvent(self, eButton, kEventFunc):
        self.toggleButtonDict[eButton].SetEvent(kEventFunc)

    def SetItemToolTip(self, tooltipItem):
        self.tooltipItem = tooltipItem

    def SetSkillToolTip(self, tooltipSkill):
        self.tooltipSkill = tooltipSkill
        self.curSkillButton.SetSkillToolTip(self.tooltipSkill)

    ## Mouse Image
    def ShowMouseImage(self):
        self.mouseImage.SetTop()
        self.mouseImage.Show()

    def HideMouseImage(self):
        player.SetQuickCameraMode(FALSE)
        self.mouseImage.Hide()

    ## Gauge
    def RefreshStatus(self):
        curHP = player.GetStatus(player.HP)
        maxHP = player.GetStatus(player.MAX_HP)
        curSP = player.GetStatus(player.SP)
        maxSP = player.GetStatus(player.MAX_SP)
        curEXP = unsigned32(player.GetStatus(player.EXP))
        nextEXP = unsigned32(player.GetStatus(player.NEXT_EXP))
        recoveryHP = player.GetStatus(player.HP_RECOVERY)
        recoverySP = player.GetStatus(player.SP_RECOVERY)
        
        self.RefreshStamina()

        self.SetHP(curHP, recoveryHP, maxHP)
        self.SetSP(curSP, recoverySP, maxSP)
        self.SetExperience(curEXP, nextEXP)
        
    def RefreshStamina(self):
        curST = player.GetStatus(player.STAMINA)
        maxST = player.GetStatus(player.MAX_STAMINA)
        self.SetST(curST, maxST)

    def RefreshSkill(self):
        self.curSkillButton.RefreshSkill()
        for button in self.selectSkillButtonList:
            button.RefreshSkill()

    def SetHP(self, curPoint, recoveryPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.hpGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipHP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_HP, curPoint, maxPoint))

            if 0 == recoveryPoint:
                self.hpRecoveryGaugeBar.Hide()
            else:
                destPoint = min(maxPoint, curPoint + recoveryPoint)
                newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))
                self.hpRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                self.hpRecoveryGaugeBar.Show()

    def SetSP(self, curPoint, recoveryPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.mpGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipSP.SetText("%s : %d / %d" % (localeInfo.TASKBAR_SP, curPoint, maxPoint))

            if 0 == recoveryPoint:
                self.spRecoveryGaugeBar.Hide()
            else:
                destPoint = min(maxPoint, curPoint + recoveryPoint)
                newWidth = int(self.GAUGE_WIDTH * (float(destPoint) / float(maxPoint)))
                self.spRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT)
                self.spRecoveryGaugeBar.Show()

    def SetST(self, curPoint, maxPoint):
        curPoint = min(curPoint, maxPoint)
        if maxPoint > 0:
            self.stGauge.SetPercentage(curPoint, maxPoint)
            self.tooltipST.SetText("%s : %d / %d" % (localeInfo.TASKBAR_ST, curPoint, maxPoint))

    def SetExperience(self, curPoint, maxPoint):

        curPoint = min(curPoint, maxPoint)
        curPoint = max(curPoint, 0)
        maxPoint = max(maxPoint, 0)

        quarterPoint = maxPoint / 4
        FullCount = 0

        if 0 != quarterPoint:
            FullCount = min(4, curPoint / quarterPoint)

        for i in xrange(4):
            self.expGauge.Hide()

        for i in xrange(FullCount):
            self.expGauge.SetRenderingRect(0.0, 0.0, 0.0, 0.0)
            self.expGauge.Show()

        if 0 != quarterPoint:
            if FullCount < 4:
                Percentage = float(curPoint % quarterPoint) / quarterPoint - 1.0
                self.expGauge[FullCount].SetRenderingRect(0.0, Percentage, 0.0, 0.0)
                self.expGauge[FullCount].Show()

        #####
        self.tooltipEXP.SetText("%s : %.2f%%" % (localeInfo.TASKBAR_EXP, float(curPoint) / max(1, float(maxPoint)) * 100))
    
        
    ## QuickSlot
    def RefreshQuickSlot(self):

        pageNum = player.GetQuickPage()

        try:
            self.quickPageNumImageBox.LoadImage(TaskBar.QUICKPAGE_NUMBER_FILENAME[pageNum])
        except:
            pass

        startNumber = 0
        for slot in self.quickslot:

            for i in xrange(4):

                slotNumber = i+startNumber

                (Type, Position) = player.GetLocalQuickSlot(slotNumber)

                if player.SLOT_TYPE_NONE == Type:
                    slot.ClearSlot(slotNumber)
                    continue

                if player.SLOT_TYPE_INVENTORY == Type:

                    itemIndex = player.GetItemIndex(Position)
                    itemCount = player.GetItemCount(Position)
                    if itemCount <= 1:
                        itemCount = 0
                    
                    ## 자동물약 (#72723, #72724) 특수처리 - 아이템인데도 슬롯에 활성화/비활성화 표시를 위한 작업임 - [hyo]
                    if constInfo.IS_AUTO_POTION(itemIndex):
                        # metinSocket - [0] : 활성화 여부, [1] : 사용한 양, [2] : 최대 용량
                        metinSocket = [player.GetItemMetinSocket(Position, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
                        
                        if 0 != int(metinSocket[0]):
                            slot.ActivateSlot(slotNumber)
                        else:
                            slot.DeactivateSlot(slotNumber)
                    
                    slot.SetItemSlot(slotNumber, itemIndex, itemCount)

                elif player.SLOT_TYPE_SKILL == Type:

                    skillIndex = player.GetSkillIndex(Position)
                    if 0 == skillIndex:
                        slot.ClearSlot(slotNumber)
                        continue

                    skillType = skill.GetSkillType(skillIndex)
                    if skill.SKILL_TYPE_GUILD == skillType:
                        import guild
                        skillGrade = 0
                        skillLevel = guild.GetSkillLevel(Position)

                    else:
                        skillGrade = player.GetSkillGrade(Position)
                        skillLevel = player.GetSkillLevel(Position)

                    slot.SetSkillSlotNew(slotNumber, skillIndex, skillGrade, skillLevel)
                    slot.SetSlotCountNew(slotNumber, skillGrade, skillLevel)
                    slot.SetCoverButton(slotNumber)

                    ## NOTE : CoolTime 체크
                    if player.IsSkillCoolTime(Position):
                        (coolTime, elapsedTime) = player.GetSkillCoolTime(Position)
                        slot.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)

                    ## NOTE : Activate 되어 있다면 아이콘도 업데이트
                    if player.IsSkillActive(Position):
                        slot.ActivateSlot(slotNumber)

                elif player.SLOT_TYPE_EMOTION == Type:

                    emotionIndex = Position
                    slot.SetEmotionSlot(slotNumber, emotionIndex)
                    slot.SetCoverButton(slotNumber)
                    slot.SetSlotCount(slotNumber, 0)

            slot.RefreshSlot()
            startNumber += 4

    def canAddQuickSlot(self, Type, slotNumber):

        if player.SLOT_TYPE_INVENTORY == Type:

            itemIndex = player.GetItemIndex(slotNumber)
            return item.CanAddToQuickSlotItem(itemIndex)

        return TRUE

    def AddQuickSlot(self, localSlotIndex):
        AttachedSlotType = mouseModule.mouseController.GetAttachedType()
        AttachedSlotNumber = mouseModule.mouseController.GetAttachedSlotNumber()
        AttachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()

        if player.SLOT_TYPE_QUICK_SLOT == AttachedSlotType:
            player.RequestMoveGlobalQuickSlotToLocalQuickSlot(AttachedSlotNumber, localSlotIndex)

        elif player.SLOT_TYPE_EMOTION == AttachedSlotType:

            player.RequestAddLocalQuickSlot(localSlotIndex, AttachedSlotType, AttachedItemIndex)

        elif TRUE == self.canAddQuickSlot(AttachedSlotType, AttachedSlotNumber):

            ## Online Code
            player.RequestAddLocalQuickSlot(localSlotIndex, AttachedSlotType, AttachedSlotNumber)
        
        mouseModule.mouseController.DeattachObject()
        self.RefreshQuickSlot()

    def SelectEmptyQuickSlot(self, slotIndex):

        if TRUE == mouseModule.mouseController.isAttached():
            self.AddQuickSlot(slotIndex)

    def SelectItemQuickSlot(self, localQuickSlotIndex):

        if TRUE == mouseModule.mouseController.isAttached():
            self.AddQuickSlot(localQuickSlotIndex)

        else:
            globalQuickSlotIndex=player.LocalQuickSlotIndexToGlobalQuickSlotIndex(localQuickSlotIndex)
            mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_QUICK_SLOT, globalQuickSlotIndex, globalQuickSlotIndex)

    def UnselectItemQuickSlot(self, localSlotIndex):

        if FALSE == mouseModule.mouseController.isAttached():
            player.RequestUseLocalQuickSlot(localSlotIndex)
            return

        elif mouseModule.mouseController.isAttached():
            mouseModule.mouseController.DeattachObject()
            return


    def OnUseSkill(self, usedSlotIndex, coolTime):

        QUICK_SLOT_SLOT_COUNT = 4
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Activate(coolTime)

        ## Quick Slot
        for slotWindow in self.quickslot:

            for i in xrange(QUICK_SLOT_SLOT_COUNT):

                (Type, Position) = player.GetLocalQuickSlot(slotIndex)

                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.SetSlotCoolTime(slotIndex, coolTime)
                        return

                slotIndex += 1

    def OnActivateSkill(self, usedSlotIndex):
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Deactivate()

        ## Quick Slot
        for slotWindow in self.quickslot:

            for i in xrange(4):

                (Type, Position) = player.GetLocalQuickSlot(slotIndex)

                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.ActivateSlot(slotIndex)
                        return

                slotIndex += 1

    def OnDeactivateSkill(self, usedSlotIndex):
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Deactivate()

        ## Quick Slot
        for slotWindow in self.quickslot:

            for i in xrange(4):

                (Type, Position) = player.GetLocalQuickSlot(slotIndex)

                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.DeactivateSlot(slotIndex)
                        return

                slotIndex += 1

    ## ToolTip
    def OverInItem(self, slotNumber):
        if mouseModule.mouseController.isAttached():
            return

        (Type, Position) = player.GetLocalQuickSlot(slotNumber)

        if player.SLOT_TYPE_INVENTORY == Type:
            self.tooltipItem.SetInventoryItem(Position)
            self.tooltipSkill.HideToolTip()

        elif player.SLOT_TYPE_SKILL == Type:

            skillIndex = player.GetSkillIndex(Position)
            skillType = skill.GetSkillType(skillIndex)

            if skill.SKILL_TYPE_GUILD == skillType:
                import guild
                skillGrade = 0
                skillLevel = guild.GetSkillLevel(Position)

            else:
                skillGrade = player.GetSkillGrade(Position)
                skillLevel = player.GetSkillLevel(Position)

            self.tooltipSkill.SetSkillNew(Position, skillIndex, skillGrade, skillLevel)
            self.tooltipItem.HideToolTip()

    def OverOutItem(self):
        if 0 != self.tooltipItem:
            self.tooltipItem.HideToolTip()
        if 0 != self.tooltipSkill:
            self.tooltipSkill.HideToolTip()

    def OnUpdate(self):
        if app.GetGlobalTime() - self.lastUpdateQuickSlot > 500:
            self.lastUpdateQuickSlot = app.GetGlobalTime()
            self.RefreshQuickSlot()

        if TRUE == self.hpGaugeBoard.IsIn():
            self.tooltipHP.Show()
        else:
            self.tooltipHP.Hide()

        if TRUE == self.mpGaugeBoard.IsIn():
            self.tooltipSP.Show()
        else:
            self.tooltipSP.Hide()

        if TRUE == self.stGaugeBoard.IsIn():
            self.tooltipST.Show()
        else:
            self.tooltipST.Hide()
        
        if TRUE == self.expGaugeBoard.IsIn():
            self.tooltipEXP.Show()
        else:
            self.tooltipEXP.Hide()
        
    ## Skill
    def ToggleLeftMouseButtonModeWindow(self):

        wndMouseButtonMode = self.mouseModeButtonList[self.MOUSE_BUTTON_LEFT]

        if TRUE == wndMouseButtonMode.IsShow():

            wndMouseButtonMode.Hide()

        else:
            wndMouseButtonMode.Show()

    def ToggleRightMouseButtonModeWindow(self):

        wndMouseButtonMode = self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT]

        if TRUE == wndMouseButtonMode.IsShow():

            wndMouseButtonMode.Hide()
            self.CloseSelectSkill()

        else:
            wndMouseButtonMode.Show()
            self.OpenSelectSkill()

    def OpenSelectSkill(self):

        PAGE_SLOT_COUNT = 6

        (xSkillButton, y) = self.curSkillButton.GetGlobalPosition()
        y -= (37 + 32 + 1)

        for key in self.skillCategoryNameList:

            appendCount = 0
            startNumber = self.skillPageStartSlotIndexDict[key]
            x = xSkillButton

            getSkillIndex=player.GetSkillIndex
            getSkillLevel=player.GetSkillLevel
            for i in xrange(PAGE_SLOT_COUNT):

                skillIndex = getSkillIndex(startNumber+i)
                skillLevel = getSkillLevel(startNumber+i)

                if 0 == skillIndex:
                    continue
                if 0 == skillLevel:
                    continue
                if skill.IsStandingSkill(skillIndex):
                    continue

                ## FIXME : 스킬 하나당 슬롯 하나씩 할당하는건 아무리 봐도 부하가 크다.
                ##         이 부분은 시간을 나면 고치도록. - [levites]
                skillButton = self.SkillButton()
                skillButton.SetSkill(startNumber+i)
                skillButton.SetPosition(x, y)
                skillButton.SetSkillEvent(ui.__mem_func__(self.CloseSelectSkill), startNumber+i+1)
                skillButton.SetSkillToolTip(self.tooltipSkill)
                skillButton.SetTop()
                skillButton.Show()
                self.selectSkillButtonList.append(skillButton)

                appendCount += 1
                x -= 32

            if appendCount > 0:
                y -= 32

    def CloseSelectSkill(self, slotIndex=-1):

        self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT].Hide()
        for button in self.selectSkillButtonList:
            button.Destroy()

        self.selectSkillButtonList = []

        if -1 != slotIndex:
            self.curSkillButton.Show()
            self.curMouseModeButton[self.MOUSE_BUTTON_RIGHT].Hide()
            player.SetMouseFunc(player.MBT_RIGHT, player.MBF_SKILL)
            player.ChangeCurrentSkillNumberOnly(slotIndex-1)
        else:
            self.curSkillButton.Hide()
            self.curMouseModeButton[self.MOUSE_BUTTON_RIGHT].Show()

    def SelectMouseButtonEvent(self, dir, event):
        SetMouseButtonSetting(dir, event)

        self.CloseSelectSkill()
        self.mouseModeButtonList[dir].Hide()

        btn = 0
        type = self.NONE
        func = self.NONE
        tooltip_text = ""        
        
        if self.MOUSE_BUTTON_LEFT == dir:
            type = player.MBT_LEFT

        elif self.MOUSE_BUTTON_RIGHT == dir:
            type = player.MBT_RIGHT

        if self.EVENT_MOVE == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_move")
            func = player.MBF_MOVE
            tooltip_text = localeInfo.TASKBAR_MOVE
        elif self.EVENT_ATTACK == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_attack")
            func = player.MBF_ATTACK
            tooltip_text = localeInfo.TASKBAR_ATTACK
        elif self.EVENT_AUTO == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_auto_attack")
            func = player.MBF_AUTO
            tooltip_text = localeInfo.TASKBAR_AUTO
        elif self.EVENT_MOVE_AND_ATTACK == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_move_and_attack")
            func = player.MBF_SMART
            tooltip_text = localeInfo.TASKBAR_ATTACK
        elif self.EVENT_CAMERA == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_camera")
            func = player.MBF_CAMERA
            tooltip_text = localeInfo.TASKBAR_CAMERA
        elif self.EVENT_SKILL == event:
            btn = self.mouseModeButtonList[dir].GetChild("button_skill")
            func = player.MBF_SKILL
            tooltip_text = localeInfo.TASKBAR_SKILL

        if 0 != btn:
            self.curMouseModeButton[dir].SetToolTipText(tooltip_text, 0, -18)
            self.curMouseModeButton[dir].SetUpVisual(btn.GetUpVisualFileName())
            self.curMouseModeButton[dir].SetOverVisual(btn.GetOverVisualFileName())
            self.curMouseModeButton[dir].SetDownVisual(btn.GetDownVisualFileName())
            self.curMouseModeButton[dir].Show()

        player.SetMouseFunc(type, func)

    def OnChangeCurrentSkill(self, skillSlotNumber):
        self.curSkillButton.SetSkill(skillSlotNumber)
        self.curSkillButton.Show()
        self.curMouseModeButton[self.MOUSE_BUTTON_RIGHT].Hide()

Try with this, if you still got errors post them there

Link to comment
Share on other sites

  • Premium

But i remove the same thing on the taskbar.ui?

Now i put ID and PW and client goes down,

syserr:

0802 16:32:13827 :: 
networkModule.py(line:208) SetSelectCharacterPhase
system.py(line:130) __pack_import
system.py(line:110) _process_result
introSelect.py(line:30) ?
system.py(line:130) __pack_import
system.py(line:110) _process_result
interfaceModule.py(line:10) ?
system.py(line:130) __pack_import

networkModule.SetSelectCharacterPhase - exceptions.SyntaxError:invalid syntax (line 1136)

0802 16:32:13827 :: ============================================================================================================
0802 16:32:13827 :: Abort!!!!

Link to comment
Share on other sites

  • Premium

I already removed everything but keep the same error

 

syserr

 

0802 16:53:07173 :: 
networkModule.py(line:208) SetSelectCharacterPhase
system.py(line:130) __pack_import
system.py(line:110) _process_result
introSelect.py(line:30) ?
system.py(line:130) __pack_import
system.py(line:110) _process_result
interfaceModule.py(line:10) ?
system.py(line:130) __pack_import

networkModule.SetSelectCharacterPhase - exceptions.SyntaxError:invalid syntax (line 1136)

0802 16:53:07173 :: ============================================================================================================
0802 16:53:07173 :: Abort!!!!


 

 

Some tips?

 

Link to comment
Share on other sites

  • Premium
2 hours ago, Artnesor said:

You have to add empty line at the end of file.

I'll try

 

Result:

999e3990257b448aa6ac82d51907e474.png

Edit1: I think i solved that error.

Now when i try login the client closes.

0803 01:35:06784 :: 
networkModule.py(line:208) SetSelectCharacterPhase
system.py(line:130) __pack_import
system.py(line:110) _process_result
introSelect.py(line:30) ?
system.py(line:130) __pack_import
system.py(line:110) _process_result
interfaceModule.py(line:10) ?
system.py(line:130) __pack_import

networkModule.SetSelectCharacterPhase - exceptions.SyntaxError:invalid syntax (line 1142)

0803 01:35:06784 :: ============================================================================================================
0803 01:35:06784 :: Abort!!!!


 

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

  • Premium

So i got a solutions with help with a friend, so if somebody got the same problem you must go to

locale -> taskbar.py and delete 

 {
            "name" : "VectorsEfsunButton",
            "type" : "button",

            "x" : SCREEN_WIDTH - 178,
            "y" : 3 + Y_ADD_POSITION,

            "tooltip_text" : "Efsun Botu",

            "default_image" : "d:/ymir work/ui/Vectorsefs1.tga",
            "over_image" : "d:/ymir work/ui/Vectorsefs2.tga",
            "down_image" : "d:/ymir work/ui/Vectorsefs1.tga",
        },

then go to root -> uitaskbar.py and delete

 

toggleButtonDict[TaskBar.BUTTON_VECTORS]=self.GetChild("VectorsEfsunButton")
BUTTON_VECTORS = 5

interfacemodule.py and delete

self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_VECTORS, ui.__mem_func__(self.Vectors))

and last one you go to constinfo.py and delete

VectorsEfsunTaskbar = 0


 

Thanks for everyone who tried help me.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.