Yardım Pasif Yeteneklere Yeni Slot Ekleme

  • Konuyu açan Konuyu açan twetswe
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 20
  • Gösterim Gösterim 205
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

twetswe

MT Üye
MT Üye
Mesaj
157
Beğeni
56
Puan
461
Ticaret Puanı
0
Merhabalar, pasif yetenekler kısmıyla alakalı bir sorun yaşıyorum. Sorunum yeni pasif yetenekler eklediğim zaman standart olanların kaybolması ve alt kısım için daha fazla slotu nerden oluşturacağımı bilmemem. Ayrıca bunların koordinatları nereden ayarlanıyor onu da bulamadım. Birisi yardımcı olursa çok sevinirim
 

Dosya Eklentileri

  • standart.webp
    standart.webp
    15,8 KB · Gösterim: 32
Merhabalar, pasif yetenekler kısmıyla alakalı bir sorun yaşıyorum. Sorunum yeni pasif yetenekler eklediğim zaman standart olanların kaybolması ve alt kısım için daha fazla slotu nerden oluşturacağımı bilmemem. Ayrıca bunların koordinatları nereden ayarlanıyor onu da bulamadım. Birisi yardımcı olursa çok sevinirim
Characterwindow.pyden slotları arttırabilirsin
Konumları içinde ETC içinde skillcommon veya skillpassive artık neyse açarsın photshopla kanka
1759567657198.webp

konumları olur bunların maus ile bakabilirsin
ETC>SKILL>COMMON>Passıve veya support içinde de bunların .sub dosyaları olur
language1.sub için örnek
title subImage
version 1.0
image "SkillCommon.dds"
left 0
top 160
right 32
bottom 192


left top 0 160 dediği
bu soldaki kırmızı shinsoonun en üst sol kısmı
right 32 192 dediği shinsoonun sağ alt kısmı
Yeni eklediğin .dds dosyasını açtığında veya yer değiştirdiğinde bu konumlar karışacaktır. Değerleri hepsi için kontrol edersin veya tr packının içinden güncel .subları direkt at kontrol ede ede git
 
Characterwindow.pyden slotları arttırabilirsin
Konumları içinde ETC içinde skillcommon veya skillpassive artık neyse açarsın photshopla kanka
25949 eklentisini görüntüle
konumları olur bunların maus ile bakabilirsin
ETC>SKILL>COMMON>Passıve veya support içinde de bunların .sub dosyaları olur
language1.sub için örnek
title subImage
version 1.0
image "SkillCommon.dds"
left 0
top 160
right 32
bottom 192


left top 0 160 dediği
bu soldaki kırmızı shinsoonun en üst sol kısmı
right 32 192 dediği shinsoonun sağ alt kısmı
Yeni eklediğin .dds dosyasını açtığında veya yer değiştirdiğinde bu konumlar karışacaktır. Değerleri hepsi için kontrol edersin veya tr packının içinden güncel .subları direkt at kontrol ede ede git
Peki şimdi ben bu mevcut 12 slotun altına 6 tane daha ekledim toplamda 18 oldu slot sayısı ancak yeni eklediğim pasif yetenekler orda nasıl gözükecek .sub dosyası seçeceğin icon ile alakalı diye biliyorum, asıl sorun seçtiğin ikonu konumlandırmakta örneğin yetenekler kısmında hava kılıcı var onun yerini değiştiriyorsun öyle düşün
 
Peki şimdi ben bu mevcut 12 slotun altına 6 tane daha ekledim toplamda 18 oldu slot sayısı ancak yeni eklediğim pasif yetenekler orda nasıl gözükecek .sub dosyası seçeceğin icon ile alakalı diye biliyorum, asıl sorun seçtiğin ikonu konumlandırmakta örneğin yetenekler kısmında hava kılıcı var onun yerini değiştiriyorsun öyle düşün
aynısını skill dosyalarının sub dosylarından yaparsın yine aynı mantık
iconları zaten .dds de var
 
peki koordinatlarını nasıl buluyorduk bu sub dosyalarının photoshop ile açtım ama x y yazıyor anlamadım pek bişe
örnek veriyorum Karakter skillerinin 3 tane .sub dosyası olur. Görüntü dosyası olan .dss ise 256*256 dır genelde ve ilk satır 0 left 0 top 32 right 32 bottom konumundadır. Warrior için bu güçlü bedendir
geomgyeong_01.sub:
Genişlet Daralt Kopyala
title subImage
version 1.0
image "SkillWarrior.dds"
left 192
top 0
right 224
bottom 32
geomgyeong_02.sub:
Genişlet Daralt Kopyala
title subImage
version 1.0
image "SkillWarrior.dds"
left 224
top 0
right 256
bottom 32
geomgyeong_03.sub:
Genişlet Daralt Kopyala
title subImage
version 1.0
image "SkillWarrior.dds"
left 0
top 32
right 32
bottom 64

Sende hepsi olmak zorunda değil sisteminde tüm skiller yoktur eklersen hepsini güncel packden direkt çek TR görüntüsü olur.
geomgyeong_01 karşılığı Hava kılıcı şuan. 1. dosyası sola doğru 192 top 0 konumundadır. Sağdan 224 alttan 32 de skill iconunu çerçeveler.

1759572021801.webp
 
Örnek olması açısından video çektim.
Kodlar sağa doğru
0 - 0 | 32 - 0 | 64 - 0 | 128 - 0 | 160 - 0 | 192 - 0 | 224 - 0 | 256 - 0 | olarak gider
sağdan sola doğru 1. satır için
32 32 | 64 - 32 | 96 32 | 128 - 32 | 160 - 32 | 192 - 32 | 224 - 32 | 256 - 32 | şeklindedir.
 
Örnek olması açısından video çektim.
Kodlar sağa doğru
0 - 0 | 32 - 0 | 64 - 0 | 128 - 0 | 160 - 0 | 192 - 0 | 224 - 0 | 256 - 0 | olarak gider
sağdan sola doğru 1. satır için
32 32 | 64 - 32 | 96 32 | 128 - 32 | 160 - 32 | 192 - 32 | 224 - 32 | 256 - 32 | şeklindedir.

çok sağol kral baya yardımcı oldun
bide kullandığın program neydi? Sanırım tıkladığın an veriyor koordinatları
 
Sorunumun bir kısmı çözüldü bir kısmını halen çözmeye çalışıyorum. İkonları ekledikten sonra yeteneğin üzerine geldiğimde yazı yazmıyor yani birşey çıkmıyor root içerisinden pasif yetenekler için slot sayısını da arttırdım ama sorunum devam ediyor belki src kısmıyla alakalı olabilir diye düşünüyorum
 
Sorunumun bir kısmı çözüldü bir kısmını halen çözmeye çalışıyorum. İkonları ekledikten sonra yeteneğin üzerine geldiğimde yazı yazmıyor yani birşey çıkmıyor root içerisinden pasif yetenekler için slot sayısını da arttırdım ama sorunum devam ediyor belki src kısmıyla alakalı olabilir diye düşünüyorum
pack>Locale>Locale>TR>Skilldesc.txt dosyasında eklediniz mi?
 
pack>Locale>Locale>TR>Skilldesc.txt dosyasında eklediniz mi?
aynen uicharacter.py,playersettingmodule.py ve locale içerisine herşey eklendi tek sorun benim aşağı kısımlarda bir sorun var ikonları ilk 2 satıra yerleştirdiğimde isimleri gözüküyor ancak isimleri ve açıklamaları 3.satırda gözükmüyor yani benim ekstra slot eklediğim kısımlarda normal slot sayısı 12 ben bunu 30 a çıkardım sanırım source kısmından da 30 vermek gerekiyor pek irdelemedim bozarım diye

Şu 3.satırdaki 4 yetenekte gözükmüyor
 

Dosya Eklentileri

  • foto.webp
    foto.webp
    21,7 KB · Gösterim: 22
Son düzenleme:
aynen uicharacter.py,playersettingmodule.py ve locale içerisine herşey eklendi tek sorun benim aşağı kısımlarda bir sorun var ikonları ilk 2 satıra yerleştirdiğimde isimleri gözüküyor ancak isimleri ve açıklamaları 3.satırda gözükmüyor yani benim ekstra slot eklediğim kısımlarda normal slot sayısı 12 ben bunu 30 a çıkardım sanırım source kısmından da 30 vermek gerekiyor pek irdelemedim bozarım diye

Şu 3.satırdaki 4 yetenekte gözükmüyor
satırlar characterwindow.pyde açık olmayabilir kontrol et
 
satırlar characterwindow.pyde açık olmayabilir kontrol et
characterwindow.py:
Genişlet Daralt Kopyala
import uiScriptLocale

QUEST_ICON_BACKGROUND = 'd:/ymir work/ui/game/quest/slot_base.sub'

SMALL_VALUE_FILE = "d:/ymir work/ui/public/Parameter_Slot_00.sub"
MIDDLE_VALUE_FILE = "d:/ymir work/ui/public/Parameter_Slot_01.sub"
LARGE_VALUE_FILE = "d:/ymir work/ui/public/Parameter_Slot_03.sub"
ICON_SLOT_FILE = "d:/ymir work/ui/public/Slot_Base.sub"
FACE_SLOT_FILE = "d:/ymir work/ui/game/windows/box_face.sub"
ROOT_PATH = "d:/ymir work/ui/game/windows/"

LOCALE_PATH = uiScriptLocale.WINDOWS_PATH

window = {
    "name" : "CharacterWindow",
    "style" : ("movable", "float",),

    "x" : 24,
    "y" : (SCREEN_HEIGHT - 37 - 500) / 2,

    "width" : 253,
    "height" : 500,

    "children" :
    (
        {
            "name" : "board",
            "type" : "board",
            "style" : ("attach",),

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

            "width" : 253,
            "height" : 500,

            "children" :
            (
                {
                    "name" : "Skill_TitleBar",
                    "type" : "titlebar",
                    "style" : ("attach",),

                    "x" : 8,
                    "y" : 7,

                    "width" : 238,
                    "color" : "red",

                    "children" :
                    (
                        { "name":"TitleName", "type":"text", "x":0, "y":-1, "text":uiScriptLocale.CHARACTER_SKILL, "all_align":"center" },
                        #{ "name":"TitleName", "type":"image", "style" : ("attach",), "x":101, "y" : 1, "image" : LOCALE_PATH+"title_skill.sub", },
                    ),
                },
                {
                    "name" : "Emoticon_TitleBar",
                    "type" : "titlebar",
                    "style" : ("attach",),

                    "x" : 8,
                    "y" : 7,

                    "width" : 238,
                    "color" : "red",

                    "children" :
                    (
                        { "name":"TitleName", "type":"text", "x":0, "y":-1, "text":uiScriptLocale.CHARACTER_ACTION, "all_align":"center" },
                    ),
                },
                {
                    "name" : "Quest_TitleBar",
                    "type" : "titlebar",
                    "style" : ("attach",),

                    "x" : 8,
                    "y" : 7,

                    "width" : 238,
                    "color" : "red",

                    "children" :
                    (
                        { "name":"TitleName", "type":"text", "x":0, "y":-1, "text":uiScriptLocale.CHARACTER_QUEST, "all_align":"center" },
                    ),
                },

                ## Tab Area
                {
                    "name" : "TabControl",
                    "type" : "window",

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

                    "width" : 250,
                    "height" : 31,

                    "children" :
                    (
                        ## Tab
                        {
                            "name" : "Tab_01",
                            "type" : "image",

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

                            "width" : 250,
                            "height" : 31,

                            "image" : LOCALE_PATH+"tab_1.sub",
                        },
                        {
                            "name" : "Tab_02",
                            "type" : "image",

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

                            "width" : 250,
                            "height" : 31,

                            "image" : LOCALE_PATH+"tab_2.sub",
                        },
                        {
                            "name" : "Tab_03",
                            "type" : "image",

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

                            "width" : 250,
                            "height" : 31,

                            "image" : LOCALE_PATH+"tab_3.sub",
                        },
                        {
                            "name" : "Tab_04",
                            "type" : "image",

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

                            "width" : 250,
                            "height" : 31,

                            "image" : LOCALE_PATH+"tab_4.sub",
                        },
                        ## RadioButton
                        {
                            "name" : "Tab_Button_01",
                            "type" : "radio_button",

                            "x" : 6,
                            "y" : 5,

                            "width" : 53,
                            "height" : 27,
                        },
                        {
                            "name" : "Tab_Button_02",
                            "type" : "radio_button",

                            "x" : 61,
                            "y" : 5,

                            "width" : 67,
                            "height" : 27,
                        },
                        {
                            "name" : "Tab_Button_03",
                            "type" : "radio_button",

                            "x" : 130,
                            "y" : 5,

                            "width" : 61,
                            "height" : 27,
                        },
                        {
                            "name" : "Tab_Button_04",
                            "type" : "radio_button",

                            "x" : 192,
                            "y" : 5,

                            "width" : 55,
                            "height" : 27,
                        },
                    ),
                },

                ## Page Area
                {
                    "name" : "Character_Page",
                    "type" : "window",
                    "style" : ("attach",),

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

                    "width" : 250,
                    "height" : 304,

                    "children" :
                    (

                        ## Title Area
                        {
                            "name" : "Character_TitleBar", "type" : "titlebar", "style" : ("attach",), "x" : 61, "y" : 7, "width" : 185, "color" : "red",
                            "children" :
                            (
                                #{ "name" : "TitleName", "type" : "image", "style" : ("attach",), "x" : 70, "y" : 1, "image" : LOCALE_PATH+"title_status.sub", },
                                { "name" : "TitleName", "type":"text", "x":0, "y":-1, "text":uiScriptLocale.CHARACTER_MAIN, "all_align":"center" },
                            ),
                        },

                        ## Guild Name Slot
                        {
                            "name" : "Guild_Name_Slot",
                            "type" : "image",
                            "x" : 60,
                            "y" :27+7,
                            "image" : LARGE_VALUE_FILE,

                            "children" :
                            (
                                {
                                    "name" : "Guild_Name",
                                    "type":"text",
                                    "text":"길드 이름",
                                    "x":0,
                                    "y":0,
                                    "r":1.0,
                                    "g":1.0,
                                    "b":1.0,
                                    "a":1.0,
                                    "all_align" : "center",
                                },
                            ),
                        },

                        ## Character Name Slot
                        {
                            "name" : "Character_Name_Slot",
                            "type" : "image",
                            "x" : 153,
                            "y" :27+7,
                            "image" : LARGE_VALUE_FILE,

                            "children" :
                            (
                                {
                                    "name" : "Character_Name",
                                    "type":"text",
                                    "text":"캐릭터 이름",
                                    "x":0,
                                    "y":0,
                                    "r":1.0,
                                    "g":1.0,
                                    "b":1.0,
                                    "a":1.0,
                                    "all_align" : "center",
                                },
                            ),
                        },

                        ## Header
                        {
                            "name":"Status_Header", "type":"window", "x":3, "y":31, "width":0, "height":0,
                            "children" :
                            (
                                ## Lv
                                {
                                    "name":"Status_Lv", "type":"window", "x":9, "y":30, "width":37, "height":42,
                                    "children" :
                                    (
                                        { "name":"Level_Header", "type":"image", "x":0, "y":0, "image":LOCALE_PATH+"label_level.sub" },
                                        { "name":"Level_Value", "type":"text", "x":19, "y":19, "fontsize":"LARGE", "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    ),
                                },

                                ## EXP
                                {
                                    "name":"Status_CurExp", "type":"window", "x":53, "y":30, "width":87, "height":42,
                                    "children" :
                                    (
                                        { "name":"Exp_Slot", "type":"image", "x":0, "y":0, "image":LOCALE_PATH+"label_cur_exp.sub" },
                                        { "name":"Exp_Value", "type":"text", "x":46, "y":19, "fontsize":"LARGE", "text":"12345678901", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },                                    ),
                                },

                                ## REXP
                                {
                                    "name":"Status_RestExp", "type":"window", "x":150, "y":30, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"RestExp_Slot", "type":"image", "x":0, "y":0, "image":LOCALE_PATH+"label_last_exp.sub" },
                                        { "name":"RestExp_Value", "type":"text", "x":46, "y":19, "fontsize":"LARGE", "text":"12345678901", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    ),
                                },
                            ),
                        },

                        ## Face Slot
                        { "name" : "Face_Image", "type" : "image", "x" : 11, "y" : 11, "image" : "d:/ymir work/ui/game/windows/face_warrior.sub" },
                        { "name" : "Face_Slot", "type" : "image", "x" : 7, "y" : 7, "image" : FACE_SLOT_FILE, },

                        ## 기본 능력
                        {
                            "name":"Status_Standard", "type":"window", "x":3, "y":100, "width":200, "height":250,
                            "children" :
                            (
                                ## 기본 능력 제목
                                { "name":"Character_Bar_01", "type":"horizontalbar", "x":12, "y":8, "width":223, },
                                { "name":"Character_Bar_01_Text", "type" : "image", "x" : 13, "y" : 9, "image" : LOCALE_PATH+"label_std.sub", },
                                
                                ## 능력 수련 수치
                                {
                                    "name":"Status_Plus_Label",
                                    "type":"image",
                                    "x":150, "y":11,
                                    "image":LOCALE_PATH+"label_uppt.sub",
                                    
                                    "children" :
                                    (
                                        { "name":"Status_Plus_Value", "type":"text", "x":62, "y":0, "text":"99", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    ),
                                },

                                ## 기본 능력 아이템 리스트
                                {"name":"Status_Standard_ItemList1", "type" : "image", "x":17, "y":31, "image" : LOCALE_PATH+"label_std_item1.sub", },
                                {"name":"Status_Standard_ItemList2", "type" : "image", "x":100, "y":30, "image" : LOCALE_PATH+"label_std_item2.sub", },

                                ## HTH
                                {
                                    "name":"HTH_Label", "type":"window", "x":50, "y":32, "width":60, "height":20,
                                    "children" :
                                    (
                                        { "name":"HTH_Slot", "type":"image", "x":0, "y":0, "image":SMALL_VALUE_FILE },
                                        { "name":"HTH_Value", "type":"text", "x":20, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                        { "name":"HTH_Plus", "type" : "button", "x":41, "y":3, "default_image" : ROOT_PATH+"btn_plus_up.sub", "over_image" : ROOT_PATH+"btn_plus_over.sub", "down_image" : ROOT_PATH+"btn_plus_down.sub", },
                                    ),
                                },
                                ## INT
                                {
                                    "name":"INT_Label", "type":"window", "x":50, "y":32+23, "width":60, "height":20,
                                    "children" :
                                    (
                                        { "name":"INT_Slot", "type":"image", "x":0, "y":0, "image":SMALL_VALUE_FILE },
                                        { "name":"INT_Value", "type":"text", "x":20, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                        { "name":"INT_Plus", "type" : "button", "x" : 41, "y" : 3, "default_image" : ROOT_PATH+"btn_plus_up.sub", "over_image" : ROOT_PATH+"btn_plus_over.sub", "down_image" : ROOT_PATH+"btn_plus_down.sub", },
                                    )
                                },
                                ## STR
                                {
                                    "name":"STR_Label", "type":"window", "x":50, "y":32+23*2, "width":60, "height":20,
                                    "children" :
                                    (
                                        { "name":"STR_Slot", "type":"image", "x":0, "y":0, "image":SMALL_VALUE_FILE },
                                        { "name":"STR_Value", "type":"text", "x":20, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                        { "name":"STR_Plus", "type" : "button", "x" : 41, "y" : 3, "default_image" : ROOT_PATH+"btn_plus_up.sub", "over_image" : ROOT_PATH+"btn_plus_over.sub", "down_image" : ROOT_PATH+"btn_plus_down.sub", },
                                    )
                                },
                                ## DEX
                                {
                                    "name":"DEX_Label", "type":"window", "x":50, "y":32+23*3, "width":60, "height":20,
                                    "children" :
                                    (
                                        { "name":"DEX_Slot", "type":"image", "x":0, "y":0, "image":SMALL_VALUE_FILE },
                                        { "name":"DEX_Value", "type":"text", "x":20, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                        { "name":"DEX_Plus", "type" : "button", "x" : 41, "y" : 3, "default_image" : ROOT_PATH+"btn_plus_up.sub", "over_image" : ROOT_PATH+"btn_plus_over.sub", "down_image" : ROOT_PATH+"btn_plus_down.sub", },
                                    )
                                },

                                { "name":"HTH_Minus", "type" : "button", "x":9, "y":35, "default_image" : ROOT_PATH+"btn_minus_up.sub", "over_image" : ROOT_PATH+"btn_minus_over.sub", "down_image" : ROOT_PATH+"btn_minus_down.sub", },
                                { "name":"INT_Minus", "type" : "button", "x":9, "y":35+23, "default_image" : ROOT_PATH+"btn_minus_up.sub", "over_image" : ROOT_PATH+"btn_minus_over.sub", "down_image" : ROOT_PATH+"btn_minus_down.sub", },
                                { "name":"STR_Minus", "type" : "button", "x":9, "y":35+23*2, "default_image" : ROOT_PATH+"btn_minus_up.sub", "over_image" : ROOT_PATH+"btn_minus_over.sub", "down_image" : ROOT_PATH+"btn_minus_down.sub", },
                                { "name":"DEX_Minus", "type" : "button", "x":9, "y":35+23*3, "default_image" : ROOT_PATH+"btn_minus_up.sub", "over_image" : ROOT_PATH+"btn_minus_over.sub", "down_image" : ROOT_PATH+"btn_minus_down.sub", },

                                ####

                                ## HP
                                {
                                    "name":"HEL_Label", "type":"window", "x":145, "y":32, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"HP_Slot", "type":"image", "x":0, "y":0, "image":LARGE_VALUE_FILE },
                                        { "name":"HP_Value", "type":"text", "x":45, "y":3, "text":"9999/9999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    ),
                                },
                                ## SP
                                {
                                    "name":"SP_Label", "type":"window", "x":145, "y":32+23, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"SP_Slot", "type":"image", "x":0, "y":0, "image":LARGE_VALUE_FILE },
                                        { "name":"SP_Value", "type":"text", "x":45, "y":3, "text":"9999/9999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    )
                                },
                                ## ATT
                                {
                                    "name":"ATT_Label", "type":"window", "x":145, "y":32+23*2, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"ATT_Slot", "type":"image", "x":0, "y":0, "image":LARGE_VALUE_FILE },
                                        { "name":"ATT_Value", "type":"text", "x":45, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    ),
                                },
                                ## DEF
                                {
                                    "name":"DEF_Label", "type":"window", "x":145, "y":32+23*3, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"DEF_Slot", "type":"image", "x":0, "y":0, "image":LARGE_VALUE_FILE },
                                        { "name":"DEF_Value", "type":"text", "x":45, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    )
                                },
                            ),
                        },
                        
                        ## 부가 능력
                        {
                            "name":"Status_Extent", "type":"window", "x":3, "y":221, "width":200, "height":50,
                            "children" :
                            (

                                ## 부가 능력 제목
                                { "name":"Status_Extent_Bar", "type":"horizontalbar", "x":12, "y":6, "width":223, },
                                { "name":"Status_Extent_Label", "type" : "image", "x" : 13, "y" : 8, "image" : LOCALE_PATH+"label_ext.sub", },

                                ## 기본 능력 아이템 리스트
                                {"name":"Status_Extent_ItemList1", "type" : "image", "x":11, "y":31, "image" : LOCALE_PATH+"label_ext_item1.sub", },
                                {"name":"Status_Extent_ItemList2", "type" : "image", "x":128, "y":32, "image" : LOCALE_PATH+"label_ext_item2.sub", },

                                ## MSPD - 이동 속도
                                {
                                    "name":"MOV_Label", "type":"window", "x":66, "y":33, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"MSPD_Slot", "type":"image", "x":0, "y":0, "image":MIDDLE_VALUE_FILE },
                                        { "name":"MSPD_Value", "type":"text", "x":26, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    )
                                },

                                ## ASPD - 공격 속도
                                {
                                    "name":"ASPD_Label", "type":"window", "x":66, "y":33+23, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"ASPD_Slot", "type":"image", "x":0, "y":0, "image":MIDDLE_VALUE_FILE },
                                        { "name":"ASPD_Value", "type":"text", "x":26, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    )
                                },

                                ## CSPD - 주문 속도
                                {
                                    "name":"CSPD_Label", "type":"window", "x":66, "y":33+23*2, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"CSPD_Slot", "type":"image", "x":0, "y":0, "image":MIDDLE_VALUE_FILE },
                                        { "name":"CSPD_Value", "type":"text", "x":26, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    )
                                },

                                ## MATT - 마법 공격력
                                {
                                    "name":"MATT_Label", "type":"window", "x":183, "y":33, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"MATT_Slot", "type":"image", "x":0, "y":0, "image":MIDDLE_VALUE_FILE },
                                        { "name":"MATT_Value", "type":"text", "x":26, "y":3, "text":"999-999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    )
                                },

                                ## MDEF - 마법 방어력
                                {
                                    "name":"MDEF_Label", "type":"window", "x":183, "y":33+23, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"MDEF_Slot", "type":"image", "x":0, "y":0, "image":MIDDLE_VALUE_FILE },
                                        { "name":"MDEF_Value", "type":"text", "x":26, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    )
                                },

                                ## 회피율
                                {
                                    "name":"ER_Label", "type":"window", "x":183, "y":33+23*2, "width":50, "height":20,
                                    "children" :
                                    (
                                        { "name":"ER_Slot", "type":"image", "x":0, "y":0, "image":MIDDLE_VALUE_FILE },
                                        { "name":"ER_Value", "type":"text", "x":26, "y":3, "text":"999", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    )
                                },

                            ),
                        },
                    ),
                },
                {
                    "name" : "Skill_Page",
                    "type" : "window",
                    "style" : ("attach",),

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

                    "width" : 250,
                    "height" : 304,

                    "children" :
                    (

                        {
                            "name":"Skill_Active_Title_Bar", "type":"horizontalbar", "x":15, "y":17, "width":223,

                            "children" :
                            (
                                {
                                    "name":"Active_Skill_Point_Label", "type":"image", "x":145, "y":3, "image":LOCALE_PATH+"label_uppt.sub",
                                    "children" :
                                    (
                                        { "name":"Active_Skill_Point_Value", "type":"text", "x":62, "y":0, "text":"99", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    ),
                                },

                                ## Group Button
                                {
                                    "name" : "Skill_Group_Button_1",
                                    "type" : "radio_button",

                                    "x" : 5,
                                    "y" : 2,

                                    "text" : "Group1",
                                    "text_color" : 0xFFFFE3AD,

                                    "default_image" : "d:/ymir work/ui/game/windows/skill_tab_button_01.sub",
                                    "over_image" : "d:/ymir work/ui/game/windows/skill_tab_button_02.sub",
                                    "down_image" : "d:/ymir work/ui/game/windows/skill_tab_button_03.sub",
                                },

                                {
                                    "name" : "Skill_Group_Button_2",
                                    "type" : "radio_button",

                                    "x" : 50,
                                    "y" : 2,

                                    "text" : "Group2",
                                    "text_color" : 0xFFFFE3AD,

                                    "default_image" : "d:/ymir work/ui/game/windows/skill_tab_button_01.sub",
                                    "over_image" : "d:/ymir work/ui/game/windows/skill_tab_button_02.sub",
                                    "down_image" : "d:/ymir work/ui/game/windows/skill_tab_button_03.sub",
                                },

                                {
                                    "name" : "Active_Skill_Group_Name",
                                    "type" : "text",

                                    "x" : 7,
                                    "y" : 1,
                                    "text" : "Active",

                                    "vertical_align" : "center",
                                    "text_vertical_align" : "center",
                                    "color" : 0xFFFFE3AD,
                                },

                            ),
                        },

                        {
                            "name":"Skill_ETC_Title_Bar", "type":"horizontalbar", "x":15, "y":200, "width":223,

                            "children" :
                            (
                                {
                                    "name" : "Support_Skill_Group_Name",
                                    "type" : "text",

                                    "x" : 7,
                                    "y" : 1,
                                    "text" : uiScriptLocale.SKILL_SUPPORT_TITLE,

                                    "vertical_align" : "center",
                                    "text_vertical_align" : "center",
                                    "color" : 0xFFFFE3AD,
                                },

                                {
                                    "name":"Support_Skill_Point_Label", "type":"image", "x":145, "y":3, "image":LOCALE_PATH+"label_uppt.sub",
                                    "children" :
                                    (
                                        { "name":"Support_Skill_Point_Value", "type":"text", "x":62, "y":0, "text":"99", "r":1.0, "g":1.0, "b":1.0, "a":1.0, "text_horizontal_align":"center" },
                                    ),
                                },
                            ),
                        },
                        { "name":"Skill_Board", "type":"image", "x":13, "y":38, "image":"d:/ymir work/ui/game/windows/skill_board.sub", },

                        ## Active Slot
                        {
                            "name" : "Skill_Active_Slot",
                            "type" : "slot",

                            "x" : 0 + 16,
                            "y" : 0 + 15 + 23,

                            "width" : 223,
                            "height" : 223,
                            "image" : ICON_SLOT_FILE,

                            "slot" :    (
                                            {"index": 1, "x": 1, "y":  4, "width":32, "height":32},
                                            {"index":21, "x":38, "y":  4, "width":32, "height":32},
                                            {"index":41, "x":75, "y":  4, "width":32, "height":32},

                                            {"index": 3, "x": 1, "y": 40, "width":32, "height":32},
                                            {"index":23, "x":38, "y": 40, "width":32, "height":32},
                                            {"index":43, "x":75, "y": 40, "width":32, "height":32},

                                            {"index": 5, "x": 1, "y": 76, "width":32, "height":32},
                                            {"index":25, "x":38, "y": 76, "width":32, "height":32},
                                            {"index":45, "x":75, "y": 76, "width":32, "height":32},

                                            {"index": 7, "x": 1, "y":112, "width":32, "height":32},
                                            {"index":27, "x":38, "y":112, "width":32, "height":32},
                                            {"index":47, "x":75, "y":112, "width":32, "height":32},

                                            ####

                                            {"index": 2, "x":113, "y":  4, "width":32, "height":32},
                                            {"index":22, "x":150, "y":  4, "width":32, "height":32},
                                            {"index":42, "x":187, "y":  4, "width":32, "height":32},

                                            {"index": 4, "x":113, "y": 40, "width":32, "height":32},
                                            {"index":24, "x":150, "y": 40, "width":32, "height":32},
                                            {"index":44, "x":187, "y": 40, "width":32, "height":32},

                                            {"index": 6, "x":113, "y": 76, "width":32, "height":32},
                                            {"index":26, "x":150, "y": 76, "width":32, "height":32},
                                            {"index":46, "x":187, "y": 76, "width":32, "height":32},

                                            {"index": 8, "x":113, "y":112, "width":32, "height":32},
                                            {"index":28, "x":150, "y":112, "width":32, "height":32},
                                            {"index":48, "x":187, "y":112, "width":32, "height":32},
                                        ),
                        },

                        ## ETC Slot
                        {
                            "name" : "Skill_ETC_Slot",
                            "type" : "grid_table",
                            "x" : 18,
                            #"y" : 221,
                            "y" : 193+47,
                            "start_index" : 101,
                            "x_count" : 6,
                            "y_count" : 5,
                            #"y_count" : 2,
                            "x_step" : 32,
                            #"y_step" : 32,
                            "y_step" : 31,
                            "x_blank" : 5,
                            "y_blank" : 4,
                            "image" : ICON_SLOT_FILE,
                        },

                    ),
                },
                {
                    "name" : "Emoticon_Page",
                    "type" : "window",
                    "style" : ("attach",),

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

                    "width" : 250,
                    "height" : 304,

                    "children" :
                    (
                        ## 기본 액션 제목
                        { "name":"Action_Bar", "type":"horizontalbar", "x":12, "y":11, "width":223, },
                        { "name":"Action_Bar_Text", "type":"text", "x":15, "y":13, "text":uiScriptLocale.CHARACTER_NORMAL_ACTION },

                        ## Basis Action Slot
                        {
                            "name" : "SoloEmotionSlot",
                            "type" : "grid_table",
                            "x" : 30,
                            "y" : 33,
                            "horizontal_align" : "center",
                            "start_index" : 1,
                            "x_count" : 6,
                            "y_count" : 3,
                            "x_step" : 32,
                            "y_step" : 32,
                            "x_blank" : 0,
                            "y_blank" : 0,
                            "image" : ICON_SLOT_FILE,
                        },

                        ## 상호 액션 제목
                        { "name":"Reaction_Bar", "type":"horizontalbar", "x":12, "y":8+150, "width":223, },
                        { "name":"Reaction_Bar_Text", "type":"text", "x":15, "y":10+150, "text":uiScriptLocale.CHARACTER_MUTUAL_ACTION },

                        ## Reaction Slot
                        {
                            "name" : "DualEmotionSlot",
                            "type" : "grid_table",
                            "x" : 30,
                            "y" : 180,
                            "start_index" : 51,
                            "x_count" : 6,
                            "y_count" : 3,
                            "x_step" : 32,
                            "y_step" : 32,
                            "x_blank" : 0,
                            "y_blank" : 0,
                            "image" : ICON_SLOT_FILE,
                        },
                    ),
                },
                {
                    "name" : "Quest_Page",
                    "type" : "window",
                    "style" : ("attach",),

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

                    "width" : 250,
                    "height" : 304,

                    "children" :
                    (
                        {
                            "name" : "Quest_Slot",
                            "type" : "grid_table",
                            "x" : 18,
                            "y" : 20,
                            "start_index" : 0,
                            "x_count" : 1,
                            "y_count" : 5,
                            "x_step" : 32,
                            "y_step" : 32,
                            "y_blank" : 28,
                            "image" : QUEST_ICON_BACKGROUND,
                        },

                        {
                            "name" : "Quest_ScrollBar",
                            "type" : "scrollbar",

                            "x" : 25,
                            "y" : 12,
                            "size" : 290,
                            "horizontal_align" : "right",
                        },

                        { "name" : "Quest_Name_00", "type" : "text", "text" : "이름입니다", "x" : 60, "y" : 14 },
                        { "name" : "Quest_LastTime_00", "type" : "text", "text" : "남은 시간 입니다", "x" : 60, "y" : 30 },
                        { "name" : "Quest_LastCount_00", "type" : "text", "text" : "남은 개수 입니다", "x" : 60, "y" : 46 },

                        { "name" : "Quest_Name_01", "type" : "text", "text" : "이름입니다", "x" : 60, "y" : 74 },
                        { "name" : "Quest_LastTime_01", "type" : "text", "text" : "남은 시간 입니다", "x" : 60, "y" : 90 },
                        { "name" : "Quest_LastCount_01", "type" : "text", "text" : "남은 개수 입니다", "x" : 60, "y" : 106 },

                        { "name" : "Quest_Name_02", "type" : "text", "text" : "이름입니다", "x" : 60, "y" : 134 },
                        { "name" : "Quest_LastTime_02", "type" : "text", "text" : "남은 시간 입니다", "x" : 60, "y" : 150 },
                        { "name" : "Quest_LastCount_02", "type" : "text", "text" : "남은 개수 입니다", "x" : 60, "y" : 166 },

                        { "name" : "Quest_Name_03", "type" : "text", "text" : "이름입니다", "x" : 60, "y" : 194 },
                        { "name" : "Quest_LastTime_03", "type" : "text", "text" : "남은 시간 입니다", "x" : 60, "y" : 210 },
                        { "name" : "Quest_LastCount_03", "type" : "text", "text" : "남은 개수 입니다", "x" : 60, "y" : 226 },

                        { "name" : "Quest_Name_04", "type" : "text", "text" : "이름입니다", "x" : 60, "y" : 254 },
                        { "name" : "Quest_LastTime_04", "type" : "text", "text" : "남은 시간 입니다", "x" : 60, "y" : 270 },
                        { "name" : "Quest_LastCount_04", "type" : "text", "text" : "남은 개수 입니다", "x" : 60, "y" : 286 },

                    ),
                },
            ),
        },
    ),
}
 
Tab ayarına bakarak dener misin
Kod:
Genişlet Daralt Kopyala
                            ## ETC Slot
                            {
                                "name" : "Skill_ETC_Slot",
                                "type" : "grid_table",
                                "x" : 18,
                                "y" : 221 + 22,
                                "start_index" : 101,
                                "x_count" : 6,
                                "y_count" : 3,
                                "x_step" : 32,
                                "y_step" : 32,
                                "x_blank" : 5,
                                "y_blank" : 4,
                                "image" : ICON_SLOT_FILE,
                            },
 
Tab ayarına bakarak dener misin
Kod:
Genişlet Daralt Kopyala
                            ## ETC Slot
                            {
                                "name" : "Skill_ETC_Slot",
                                "type" : "grid_table",
                                "x" : 18,
                                "y" : 221 + 22,
                                "start_index" : 101,
                                "x_count" : 6,
                                "y_count" : 3,
                                "x_step" : 32,
                                "y_step" : 32,
                                "x_blank" : 5,
                                "y_blank" : 4,
                                "image" : ICON_SLOT_FILE,
                            },
yok çalışmadı 30 slottan 18 e çevrildi senin verdiğin kodla ama yine gözükmüyor yazılar
 
Playersettingsmoduleden ekledin mi skili
playersettingmodule.py:
Genişlet Daralt Kopyala
import chr
import chrmgr
import skill
import net
import item
import player
import effect
import constInfo
import localeInfo
import emotion

import app

JOB_WARRIOR        = 0
JOB_ASSASSIN    = 1
JOB_SURA        = 2
JOB_SHAMAN        = 3

RACE_WARRIOR_M    = 0
RACE_ASSASSIN_W    = 1
RACE_SURA_M        = 2
RACE_SHAMAN_W    = 3
RACE_WARRIOR_W    = 4
RACE_ASSASSIN_M    = 5
RACE_SURA_W        = 6
RACE_SHAMAN_M    = 7

COMBO_TYPE_1 = 0
COMBO_TYPE_2 = 1
COMBO_TYPE_3 = 2

COMBO_INDEX_1 = 0
COMBO_INDEX_2 = 1
COMBO_INDEX_3 = 2
COMBO_INDEX_4 = 3
COMBO_INDEX_5 = 4
COMBO_INDEX_6 = 5

HORSE_SKILL_WILDATTACK = chr.MOTION_SKILL+113
HORSE_SKILL_CHARGE = chr.MOTION_SKILL+114
HORSE_SKILL_SPLASH = chr.MOTION_SKILL+115

GUILD_SKILL_DRAGONBLOOD = chr.MOTION_SKILL+107
GUILD_SKILL_DRAGONBLESS = chr.MOTION_SKILL+108
GUILD_SKILL_BLESSARMOR = chr.MOTION_SKILL+109
GUILD_SKILL_SPPEDUP = chr.MOTION_SKILL+110
GUILD_SKILL_DRAGONWRATH = chr.MOTION_SKILL+111
GUILD_SKILL_MAGICUP = chr.MOTION_SKILL+112

PASSIVE_GUILD_SKILL_INDEX_LIST = ( 151, )
ACTIVE_GUILD_SKILL_INDEX_LIST = ( 152, 153, 154, 155, 156, 157, )

NEW_678TH_SKILL_ENABLE = 0
SKILL_INDEX_DICT = []

def DefineSkillIndexDict():
    global SKILL_INDEX_DICT
    
    if app.ENABLE_NEW_PASSIVE_SKILL:
        SKILL_INDEX_DICT = {
            JOB_WARRIOR : {
                1 : (1, 2, 3, 4, 5, 0, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (16, 17, 18, 19, 20, 0, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 141, 142, 164, 165, 166,),
            },
            JOB_ASSASSIN : {
                1 : (31, 32, 33, 34, 35, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
                2 : (46, 47, 48, 49, 50, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
                "SUPPORT" : (121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 141, 142, 164, 165, 166,),
            },
            JOB_SURA : {
                1 : (61, 62, 63, 64, 65, 66, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (76, 77, 78, 79, 80, 81, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 141, 142, 164, 165, 166,),
            },
            JOB_SHAMAN : {
                1 : (91, 92, 93, 94, 95, 96, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (106, 107, 108, 109, 110, 111, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 141, 142, 164, 165, 166,),
            },
        }
    else:
        SKILL_INDEX_DICT = {
            JOB_WARRIOR : {
                1 : (1, 2, 3, 4, 5, 0, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (16, 17, 18, 19, 20, 0, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
            },
            JOB_ASSASSIN : {
                1 : (31, 32, 33, 34, 35, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
                2 : (46, 47, 48, 49, 50, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
                "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
            },
            JOB_SURA : {
                1 : (61, 62, 63, 64, 65, 66, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (76, 77, 78, 79, 80, 81, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
            },
            JOB_SHAMAN : {
                1 : (91, 92, 93, 94, 95, 96, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (106, 107, 108, 109, 110, 111, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
            },
        }

def RegisterSkill(race, group, empire=0):

    DefineSkillIndexDict()
    
    job = chr.RaceToJob(race)

    ## Character Skill
    if SKILL_INDEX_DICT.has_key(job):

        if SKILL_INDEX_DICT[job].has_key(group):
        
            activeSkillList = SKILL_INDEX_DICT[job][group]

            for i in xrange(len(activeSkillList)):
                skillIndex = activeSkillList[i]
                
                ## 7번 8번 스킬은 여기서 설정하면 안됨
                if i != 6 and i != 7:
                    player.SetSkill(i+1, skillIndex)

            supportSkillList = SKILL_INDEX_DICT[job]["SUPPORT"]

            for i in xrange(len(supportSkillList)):
                player.SetSkill(i+100+1, supportSkillList[i])

    ## Language Skill

    ## Guild Skill
    for i in xrange(len(PASSIVE_GUILD_SKILL_INDEX_LIST)):
        player.SetSkill(200+i, PASSIVE_GUILD_SKILL_INDEX_LIST[i])

    for i in xrange(len(ACTIVE_GUILD_SKILL_INDEX_LIST)):
        player.SetSkill(210+i, ACTIVE_GUILD_SKILL_INDEX_LIST[i])

def RegisterSkillAt(race, group, pos, num):
    
    DefineSkillIndexDict()
    
    job = chr.RaceToJob(race)
    tmp = list(SKILL_INDEX_DICT[job][group])
    tmp[pos] = num
    SKILL_INDEX_DICT[job][group] = tuple(tmp)
    player.SetSkill(pos+1, num)

FACE_IMAGE_DICT = {
    RACE_WARRIOR_M    : "d:/ymir work/ui/game/windows/face_warrior.sub",
    RACE_ASSASSIN_W    : "d:/ymir work/ui/game/windows/face_assassin.sub",
    RACE_SURA_M    : "d:/ymir work/ui/game/windows/face_sura.sub",
    RACE_SHAMAN_W    : "d:/ymir work/ui/game/windows/face_shaman.sub",
}

isInitData=0

def SetGeneralMotions(mode, folder):
    chrmgr.SetPathName(folder)
    chrmgr.RegisterMotionMode(mode)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_WAIT,                "wait.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_WALK,                "walk.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_RUN,                    "run.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE,                "damage.msa", 50)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE,                "damage_1.msa", 50)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_BACK,            "damage_2.msa", 50)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_BACK,            "damage_3.msa", 50)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_FLYING,        "damage_flying.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_STAND_UP,            "falling_stand.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_FLYING_BACK,    "back_damage_flying.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_STAND_UP_BACK,        "back_falling_stand.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DEAD,                "dead.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DIG,                    "dig.msa")

def SetIntroMotions(mode, folder):
    chrmgr.SetPathName(folder)
    chrmgr.RegisterMotionMode(mode)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_INTRO_WAIT,            "wait.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_INTRO_SELECTED,        "selected.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_INTRO_NOT_SELECTED,    "not_selected.msa")



def __InitData():
    global isInitData

    if isInitData:
        return           

    isInitData = 1

    chrmgr.SetDustGap(250)
    chrmgr.SetHorseDustGap(500)

    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUST, "", "d:/ymir work/effect/etc/dust/dust.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HORSE_DUST, "", "d:/ymir work/effect/etc/dust/running_dust.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HIT, "", "d:/ymir work/effect/hit/blow_1/blow_1_low.mse")

    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HPUP_RED, "", "d:/ymir work/effect/etc/recuperation/drugup_red.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPUP_BLUE, "", "d:/ymir work/effect/etc/recuperation/drugup_blue.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPEEDUP_GREEN, "", "d:/ymir work/effect/etc/recuperation/drugup_green.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DXUP_PURPLE, "", "d:/ymir work/effect/etc/recuperation/drugup_purple.mse")

    #자동물약 HP, SP
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_AUTO_HPUP, "", "d:/ymir work/effect/etc/recuperation/autodrugup_red.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_AUTO_SPUP, "", "d:/ymir work/effect/etc/recuperation/autodrugup_blue.mse")
    
    #라마단 초승달의 반지(71135) 착용순간 발동 이펙트
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_RAMADAN_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item1.mse")
    
    #할로윈 사탕 착용순간 발동 이펙트
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HALLOWEEN_CANDY_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item2.mse")
    
    #행복의 반지 착용순간 발동 이펙트
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HAPPINESS_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item3.mse")

    #사랑의 팬던트 착용순간 발동 이펙트
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LOVE_PENDANT_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item4.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_WILL_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/will_ring.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DEADLY_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/deadly_ring.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HERO_MEDAL_EQUIP, "", "d:/ymir work/effect/etc/buff/hero_medal.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_BLUE_CANDY_EQUIP, "", "d:/ymir work/effect/etc/buff/blue_candy.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_GREEN_CANDY_EQUIP, "", "d:/ymir work/effect/etc/buff/green_candy.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_YELLOW_CANDY_EQUIP, "", "d:/ymir work/effect/etc/buff/yellow_candy.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_CHOCOLATE_PENDANT_EQUIP, "", "d:/ymir work/effect/etc/buff/chocolate_pendant.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_EVIL_PENDANT_EQUIP, "", "d:/ymir work/effect/etc/buff/evil_pendant.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_GUARD_PENDANT_EQUIP, "", "d:/ymir work/effect/etc/buff/guard_pendant.mse")

    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PENETRATE, "Bip01", "d:/ymir work/effect/hit/gwantong.mse")
    #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_BLOCK, "", "d:/ymir work/effect/etc/")
    #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DODGE, "", "d:/ymir work/effect/etc/")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_FIRECRACKER, "", "d:/ymir work/effect/etc/firecracker/newyear_firecracker.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPIN_TOP, "", "d:/ymir work/effect/etc/firecracker/paing_i.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SELECT, "", "d:/ymir work/effect/etc/click/click_select.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_TARGET, "", "d:/ymir work/effect/etc/click/click_glow_select.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_STUN, "Bip01 Head", "d:/ymir work/effect/etc/stun/stun.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_CRITICAL, "Bip01 R Hand", "d:/ymir work/effect/hit/critical.mse")
    player.RegisterCacheEffect(player.EFFECT_PICK, "d:/ymir work/effect/etc/click/click.mse")
    
    
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_TARGET, "", "d:/ymir work/effect/affect/damagevalue/target.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_NOT_TARGET, "", "d:/ymir work/effect/affect/damagevalue/nontarget.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_SELFDAMAGE, "", "d:/ymir work/effect/affect/damagevalue/damage.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_SELFDAMAGE2, "", "d:/ymir work/effect/affect/damagevalue/damage_1.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_POISON, "", "d:/ymir work/effect/affect/damagevalue/poison.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_MISS, "", "d:/ymir work/effect/affect/damagevalue/miss.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_TARGETMISS, "", "d:/ymir work/effect/affect/damagevalue/target_miss.mse")
    #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_CRITICAL, "", "d:/ymir work/effect/affect/damagevalue/critical.mse")

    #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SUCCESS, "",            "season1/effect/success.mse")
    #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_FAIL, "",    "season1/effect/fail.mse")
    
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LEVELUP_ON_14_FOR_GERMANY, "","season1/effect/paymessage_warning.mse")    #레벨업 14일때 ( 독일전용 )
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LEVELUP_UNDER_15_FOR_GERMANY, "", "season1/effect/paymessage_decide.mse" )#레벨업 15일때 ( 독일전용 )

    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PERCENT_DAMAGE1, "", "d:/ymir work/effect/hit/percent_damage1.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PERCENT_DAMAGE2, "", "d:/ymir work/effect/hit/percent_damage2.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PERCENT_DAMAGE3, "", "d:/ymir work/effect/hit/percent_damage3.mse")

    

    ##############
    # WARRIOR
    ##############
    chrmgr.CreateRace(RACE_WARRIOR_M)
    chrmgr.SelectRace(RACE_WARRIOR_M)   
    chrmgr.LoadLocalRaceData("warrior_m.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/warrior/intro/")

    chrmgr.CreateRace(RACE_WARRIOR_W)
    chrmgr.SelectRace(RACE_WARRIOR_W)   
    chrmgr.LoadLocalRaceData("warrior_w.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/warrior/intro/")


    ##############
    # ASSASSIN
    ##############
    chrmgr.CreateRace(RACE_ASSASSIN_W)
    chrmgr.SelectRace(RACE_ASSASSIN_W)
    chrmgr.LoadLocalRaceData("assassin_w.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/assassin/intro/")

    chrmgr.CreateRace(RACE_ASSASSIN_M)
    chrmgr.SelectRace(RACE_ASSASSIN_M)
    chrmgr.LoadLocalRaceData("assassin_m.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/assassin/intro/")


    ##############
    # SURA
    ##############
    chrmgr.CreateRace(RACE_SURA_M)
    chrmgr.SelectRace(RACE_SURA_M)   
    chrmgr.LoadLocalRaceData("sura_m.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/sura/intro/")

    chrmgr.CreateRace(RACE_SURA_W)
    chrmgr.SelectRace(RACE_SURA_W)   
    chrmgr.LoadLocalRaceData("sura_w.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/sura/intro/")


    ##############
    # SHAMAN
    ##############
    chrmgr.CreateRace(RACE_SHAMAN_W)
    chrmgr.SelectRace(RACE_SHAMAN_W)
    chrmgr.LoadLocalRaceData("shaman_w.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/shaman/intro/")

    chrmgr.CreateRace(RACE_SHAMAN_M)
    chrmgr.SelectRace(RACE_SHAMAN_M)
    chrmgr.LoadLocalRaceData("shaman_m.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/shaman/intro/")



def __LoadGameSound():
    item.SetUseSoundFileName(item.USESOUND_DEFAULT, "sound/ui/drop.wav")
    item.SetUseSoundFileName(item.USESOUND_ACCESSORY, "sound/ui/equip_ring_amulet.wav")
    item.SetUseSoundFileName(item.USESOUND_ARMOR, "sound/ui/equip_metal_armor.wav")
    item.SetUseSoundFileName(item.USESOUND_BOW, "sound/ui/equip_bow.wav")
    item.SetUseSoundFileName(item.USESOUND_WEAPON, "sound/ui/equip_metal_weapon.wav")
    item.SetUseSoundFileName(item.USESOUND_POTION, "sound/ui/eat_potion.wav")
    item.SetUseSoundFileName(item.USESOUND_PORTAL, "sound/ui/potal_scroll.wav")

    item.SetDropSoundFileName(item.DROPSOUND_DEFAULT, "sound/ui/drop.wav")
    item.SetDropSoundFileName(item.DROPSOUND_ACCESSORY, "sound/ui/equip_ring_amulet.wav")
    item.SetDropSoundFileName(item.DROPSOUND_ARMOR, "sound/ui/equip_metal_armor.wav")
    item.SetDropSoundFileName(item.DROPSOUND_BOW, "sound/ui/equip_bow.wav")
    item.SetDropSoundFileName(item.DROPSOUND_WEAPON, "sound/ui/equip_metal_weapon.wav")

def __LoadGameEffect():
    chrmgr.RegisterEffect(chrmgr.EFFECT_SPAWN_APPEAR, "Bip01", "d:/ymir work/effect/etc/appear_die/monster_appear.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_SPAWN_DISAPPEAR, "Bip01", "d:/ymir work/effect/etc/appear_die/monster_die.mse")       
    chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACK, "equip_right_hand", "d:/ymir work/effect/hit/blow_flame/flame_3_weapon.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_HIT, "", "d:/ymir work/effect/hit/blow_flame/flame_3_blow.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACH, "", "d:/ymir work/effect/hit/blow_flame/flame_3_body.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_ATTACK, "equip_right", "d:/ymir work/effect/hit/blow_electric/light_1_weapon.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_HIT, "", "d:/ymir work/effect/hit/blow_electric/light_1_blow.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_ATTACH, "", "d:/ymir work/effect/hit/blow_electric/light_1_body.mse")
    
    chrmgr.RegisterEffect(chrmgr.EFFECT_LEVELUP, "", "d:/ymir work/effect/etc/levelup_1/level_up.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_SKILLUP, "", "d:/ymir work/effect/etc/skillup/skillup_1.mse")

    if localeInfo.IsNEWCIBN():
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+1, "Bip01", "locale/newcibn/effect/empire/empire_A.mse")
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+2, "Bip01", "locale/newcibn/effect/empire/empire_B.mse")
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+3, "Bip01", "locale/newcibn/effect/empire/empire_C.mse")
    else :
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+1, "Bip01", "d:/ymir work/effect/etc/empire/empire_A.mse")
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+2, "Bip01", "d:/ymir work/effect/etc/empire/empire_B.mse")
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+3, "Bip01", "d:/ymir work/effect/etc/empire/empire_C.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_sword_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_spear_loop.mse")

    # LOCALE
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+0, "Bip01", localeInfo.FN_GM_MARK)
    if app.ENABLE_BOSS_EFFECT_SYSTEM:
        chrmgr.RegisterEffect(chrmgr.EFFECT_BOSS, "", "d:/ymir work/effect/boss_eff/boss_icon.mse")
    # END_OF_LOCALE
    
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+3, "Bip01", "d:/ymir work/effect/hit/blow_poison/poison_loop.mse") ## 중독
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+4, "", "d:/ymir work/effect/affect/slow.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+5, "Bip01 Head", "d:/ymir work/effect/etc/stun/stun_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+6, "", "d:/ymir work/effect/etc/ready/ready.mse")
    #chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+8, "", "d:/ymir work/guild/effect/10_construction.mse")
    #chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+9, "", "d:/ymir work/guild/effect/20_construction.mse")
    #chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+10, "", "d:/ymir work/guild/effect/20_upgrade.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+16, "", "d:/ymir work/pc/warrior/effect/gyeokgongjang_loop.mse") ## 천근추 (밑에도 있따-_-)
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+17, "", "d:/ymir work/pc/assassin/effect/gyeonggong_loop.mse") ## 자객 - 경공
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+19, "Bip01 R Finger2", "d:/ymir work/pc/sura/effect/gwigeom_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+20, "", "d:/ymir work/pc/sura/effect/fear_loop.mse") ## 수라 - 공포
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+21, "", "d:/ymir work/pc/sura/effect/jumagap_loop.mse") ## 수라 - 주마갑
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+22, "", "d:/ymir work/pc/shaman/effect/3hosin_loop.mse") ## 무당 - 호신
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+23, "", "d:/ymir work/pc/shaman/effect/boho_loop.mse") ## 무당 - 보호
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+24, "", "d:/ymir work/pc/shaman/effect/10kwaesok_loop.mse") ## 무당 - 쾌속
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+25, "", "d:/ymir work/pc/sura/effect/heuksin_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+26, "", "d:/ymir work/pc/sura/effect/muyeong_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+28, "Bip01", "d:/ymir work/effect/hit/blow_flame/flame_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+29, "Bip01 R Hand", "d:/ymir work/pc/shaman/effect/6gicheon_hand.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+30, "Bip01 L Hand", "d:/ymir work/pc/shaman/effect/jeungryeok_hand.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+32, "Bip01 Head", "d:/ymir work/pc/sura/effect/pabeop_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+33, "", "d:/ymir work/pc/warrior/effect/gyeokgongjang_loop.mse") ## 천근추 (Fallen)
    ## 34 Polymoph
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+35, "", "d:/ymir work/effect/etc/guild_war_flag/flag_red.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+36, "", "d:/ymir work/effect/etc/guild_war_flag/flag_blue.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+37, "", "d:/ymir work/effect/etc/guild_war_flag/flag_yellow.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+1, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+2, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+3, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+4, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_7_b.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+5, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_8_b.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+6, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_9_b.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+7, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7_f.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+8, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8_f.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+9, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9_f.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+10, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7_s.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+11, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8_s.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+12, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9_s.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+13, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_7_s.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+14, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_8_s.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+15, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_9_s.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+16, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_7.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+17, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_8.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+18, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_9.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+19, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-4-2-1.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+20, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-4-2-2.mse")

    ## FlyData
    effect.RegisterIndexedFlyData(effect.FLY_EXP, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_yellow_small2.msf")                ## 노란색 (EXP)
    effect.RegisterIndexedFlyData(effect.FLY_HP_MEDIUM, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_small.msf")            ## 빨간색 (HP) 작은거
    effect.RegisterIndexedFlyData(effect.FLY_HP_BIG, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_big.msf")                ## 빨간색 (HP) 큰거
    effect.RegisterIndexedFlyData(effect.FLY_SP_SMALL, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_warrior_small.msf")    ## 파란색 꼬리만 있는거
    effect.RegisterIndexedFlyData(effect.FLY_SP_MEDIUM, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_small.msf")            ## 파란색 작은거
    effect.RegisterIndexedFlyData(effect.FLY_SP_BIG, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_big.msf")                ## 파란색 큰거
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK1, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_1.msf")        ## 폭죽 1
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK2, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_2.msf")        ## 폭죽 2
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK3, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_3.msf")        ## 폭죽 3
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK4, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_4.msf")        ## 폭죽 4
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK5, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_5.msf")        ## 폭죽 5
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK6, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_6.msf")        ## 폭죽 6
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK_XMAS, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_xmas.msf")    ## 폭죽 X-Mas
    effect.RegisterIndexedFlyData(effect.FLY_CHAIN_LIGHTNING, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/pc/shaman/effect/pokroe.msf")                        ## 폭뢰격
    effect.RegisterIndexedFlyData(effect.FLY_HP_SMALL, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_smallest.msf")            ## 빨간색 매우 작은거
    effect.RegisterIndexedFlyData(effect.FLY_SKILL_MUYEONG, effect.INDEX_FLY_TYPE_AUTO_FIRE, "d:/ymir work/pc/sura/effect/muyeong_fly.msf")                    ## 무영진

    #########################################################################################
    ## Emoticon
    EmoticonStr = "d:/ymir work/effect/etc/emoticon/"

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+0, "", EmoticonStr+"sweat.mse")
    net.RegisterEmoticonString("(황당)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+1, "", EmoticonStr+"money.mse")
    net.RegisterEmoticonString("(돈)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+2, "", EmoticonStr+"happy.mse")
    net.RegisterEmoticonString("(기쁨)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+3, "", EmoticonStr+"love_s.mse")
    net.RegisterEmoticonString("(좋아)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+4, "", EmoticonStr+"love_l.mse")
    net.RegisterEmoticonString("(사랑)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+5, "", EmoticonStr+"angry.mse")
    net.RegisterEmoticonString("(분노)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+6, "", EmoticonStr+"aha.mse")
    net.RegisterEmoticonString("(아하)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+7, "", EmoticonStr+"gloom.mse")
    net.RegisterEmoticonString("(우울)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+8, "", EmoticonStr+"sorry.mse")
    net.RegisterEmoticonString("(죄송)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+9, "", EmoticonStr+"!_mix_back.mse")
    net.RegisterEmoticonString("(!)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+10, "", EmoticonStr+"question.mse")
    net.RegisterEmoticonString("(?)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+11, "", EmoticonStr+"fish.mse")
    net.RegisterEmoticonString("(fish)")


    ## Emoticon
    #########################################################################################


def __LoadGameWarrior():
    __LoadGameWarriorEx(RACE_WARRIOR_M, "d:/ymir work/pc/warrior/")
    __LoadGameWarriorEx(RACE_WARRIOR_W, "d:/ymir work/pc2/warrior/")

def __LoadGameAssassin():
    __LoadGameAssassinEx(RACE_ASSASSIN_W, "d:/ymir work/pc/assassin/")
    __LoadGameAssassinEx(RACE_ASSASSIN_M, "d:/ymir work/pc2/assassin/")

def __LoadGameSura():
    __LoadGameSuraEx(RACE_SURA_M, "d:/ymir work/pc/sura/")
    __LoadGameSuraEx(RACE_SURA_W, "d:/ymir work/pc2/sura/")

def __LoadGameShaman():
    __LoadGameShamanEx(RACE_SHAMAN_W, "d:/ymir work/pc/shaman/")
    __LoadGameShamanEx(RACE_SHAMAN_M, "d:/ymir work/pc2/shaman/")

def __LoadGameWarriorEx(race, path):

    ## Warrior
    #########################################################################################
    chrmgr.SelectRace(race)

    ## GENERAL MODE
    SetGeneralMotions(chr.MOTION_MODE_GENERAL, path + "general/")
    chrmgr.SetMotionRandomWeight(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, 0, 70)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait_1.msa", 30)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack_1.msa", 50)

    ## SKILL
    chrmgr.SetPathName(path + "skill/")
    for i in xrange(skill.SKILL_EFFECT_COUNT):
        END_STRING = ""
        if i != 0: END_STRING = "_%d" % (i+1)
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+1, "samyeon" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2, "palbang" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3, "jeongwi" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4, "geomgyeong" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "tanhwan" + END_STRING + ".msa")
        if NEW_678TH_SKILL_ENABLE:
            chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "gihyeol" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16, "gigongcham" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17, "gyeoksan" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18, "daejin" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19, "cheongeun" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20, "geompung" + END_STRING + ".msa")
        if NEW_678TH_SKILL_ENABLE:
            chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21, "noegeom" + END_STRING + ".msa")

    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLOOD, "guild_yongsinuipi.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLESS, "guild_yongsinuichukbok.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_BLESSARMOR, "guild_seonghwigap.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_SPPEDUP, "guild_gasokhwa.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONWRATH, "guild_yongsinuibunno.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_MAGICUP, "guild_jumunsul.msa")

    chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, 1)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

    ## EMOTION
    emotion.RegisterEmotionAnis(path)

    ## ONEHAND_SWORD BATTLE
    chrmgr.SetPathName(path + "onehand_sword/")
    chrmgr.RegisterMotionMode(chr.MOTION_MODE_ONEHAND_SWORD)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT,                "wait.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT,                "wait_1.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WALK,                "walk.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_RUN,                "run.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,            "damage.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,            "damage_1.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK,        "damage_2.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK,        "damage_3.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1,    "combo_01.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2,    "combo_02.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3,    "combo_03.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_4,    "combo_04.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_5,    "combo_05.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_6,    "combo_06.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_7,    "combo_07.msa")

    ## Combo Type 1
    chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, 4)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)
    ## Combo Type 2
    chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, 5)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)
    ## Combo Type 3
    chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, 6)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)

    ## TWOHAND_SWORD BATTLE
    chrmgr.SetPathName(path + "twohand_sword/")
    chrmgr.RegisterMotionMode(chr.MOTION_MODE_TWOHAND_SWORD)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WAIT,                "wait.msa", 70)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WAIT,                "wait_1.msa", 30)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WALK,                "walk.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_RUN,                "run.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE,            "damage.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE,            "damage_1.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE_BACK,        "damage_2.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE_BACK,        "damage_3.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_1,    "combo_01.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_2,    "combo_02.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_3,    "combo_03.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_4,    "combo_04.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_5,    "combo_05.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_6,    "combo_06.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_7,    "combo_07.msa")



    SetDoor(13001, "stone_door")
 
playersettingmodule.py:
Genişlet Daralt Kopyala
import chr
import chrmgr
import skill
import net
import item
import player
import effect
import constInfo
import localeInfo
import emotion

import app

JOB_WARRIOR        = 0
JOB_ASSASSIN    = 1
JOB_SURA        = 2
JOB_SHAMAN        = 3

RACE_WARRIOR_M    = 0
RACE_ASSASSIN_W    = 1
RACE_SURA_M        = 2
RACE_SHAMAN_W    = 3
RACE_WARRIOR_W    = 4
RACE_ASSASSIN_M    = 5
RACE_SURA_W        = 6
RACE_SHAMAN_M    = 7

COMBO_TYPE_1 = 0
COMBO_TYPE_2 = 1
COMBO_TYPE_3 = 2

COMBO_INDEX_1 = 0
COMBO_INDEX_2 = 1
COMBO_INDEX_3 = 2
COMBO_INDEX_4 = 3
COMBO_INDEX_5 = 4
COMBO_INDEX_6 = 5

HORSE_SKILL_WILDATTACK = chr.MOTION_SKILL+113
HORSE_SKILL_CHARGE = chr.MOTION_SKILL+114
HORSE_SKILL_SPLASH = chr.MOTION_SKILL+115

GUILD_SKILL_DRAGONBLOOD = chr.MOTION_SKILL+107
GUILD_SKILL_DRAGONBLESS = chr.MOTION_SKILL+108
GUILD_SKILL_BLESSARMOR = chr.MOTION_SKILL+109
GUILD_SKILL_SPPEDUP = chr.MOTION_SKILL+110
GUILD_SKILL_DRAGONWRATH = chr.MOTION_SKILL+111
GUILD_SKILL_MAGICUP = chr.MOTION_SKILL+112

PASSIVE_GUILD_SKILL_INDEX_LIST = ( 151, )
ACTIVE_GUILD_SKILL_INDEX_LIST = ( 152, 153, 154, 155, 156, 157, )

NEW_678TH_SKILL_ENABLE = 0
SKILL_INDEX_DICT = []

def DefineSkillIndexDict():
    global SKILL_INDEX_DICT
   
    if app.ENABLE_NEW_PASSIVE_SKILL:
        SKILL_INDEX_DICT = {
            JOB_WARRIOR : {
                1 : (1, 2, 3, 4, 5, 0, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (16, 17, 18, 19, 20, 0, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 141, 142, 164, 165, 166,),
            },
            JOB_ASSASSIN : {
                1 : (31, 32, 33, 34, 35, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
                2 : (46, 47, 48, 49, 50, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
                "SUPPORT" : (121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 141, 142, 164, 165, 166,),
            },
            JOB_SURA : {
                1 : (61, 62, 63, 64, 65, 66, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (76, 77, 78, 79, 80, 81, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 141, 142, 164, 165, 166,),
            },
            JOB_SHAMAN : {
                1 : (91, 92, 93, 94, 95, 96, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (106, 107, 108, 109, 110, 111, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 141, 142, 164, 165, 166,),
            },
        }
    else:
        SKILL_INDEX_DICT = {
            JOB_WARRIOR : {
                1 : (1, 2, 3, 4, 5, 0, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (16, 17, 18, 19, 20, 0, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
            },
            JOB_ASSASSIN : {
                1 : (31, 32, 33, 34, 35, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
                2 : (46, 47, 48, 49, 50, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
                "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
            },
            JOB_SURA : {
                1 : (61, 62, 63, 64, 65, 66, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (76, 77, 78, 79, 80, 81, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
            },
            JOB_SHAMAN : {
                1 : (91, 92, 93, 94, 95, 96, 0, 0, 137, 0, 138, 0, 139, 0,),
                2 : (106, 107, 108, 109, 110, 111, 0, 0, 137, 0, 138, 0, 139, 0,),
                "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
            },
        }

def RegisterSkill(race, group, empire=0):

    DefineSkillIndexDict()
   
    job = chr.RaceToJob(race)

    ## Character Skill
    if SKILL_INDEX_DICT.has_key(job):

        if SKILL_INDEX_DICT[job].has_key(group):
       
            activeSkillList = SKILL_INDEX_DICT[job][group]

            for i in xrange(len(activeSkillList)):
                skillIndex = activeSkillList[i]
               
                ## 7번 8번 스킬은 여기서 설정하면 안됨
                if i != 6 and i != 7:
                    player.SetSkill(i+1, skillIndex)

            supportSkillList = SKILL_INDEX_DICT[job]["SUPPORT"]

            for i in xrange(len(supportSkillList)):
                player.SetSkill(i+100+1, supportSkillList[i])

    ## Language Skill

    ## Guild Skill
    for i in xrange(len(PASSIVE_GUILD_SKILL_INDEX_LIST)):
        player.SetSkill(200+i, PASSIVE_GUILD_SKILL_INDEX_LIST[i])

    for i in xrange(len(ACTIVE_GUILD_SKILL_INDEX_LIST)):
        player.SetSkill(210+i, ACTIVE_GUILD_SKILL_INDEX_LIST[i])

def RegisterSkillAt(race, group, pos, num):
   
    DefineSkillIndexDict()
   
    job = chr.RaceToJob(race)
    tmp = list(SKILL_INDEX_DICT[job][group])
    tmp[pos] = num
    SKILL_INDEX_DICT[job][group] = tuple(tmp)
    player.SetSkill(pos+1, num)

FACE_IMAGE_DICT = {
    RACE_WARRIOR_M    : "d:/ymir work/ui/game/windows/face_warrior.sub",
    RACE_ASSASSIN_W    : "d:/ymir work/ui/game/windows/face_assassin.sub",
    RACE_SURA_M    : "d:/ymir work/ui/game/windows/face_sura.sub",
    RACE_SHAMAN_W    : "d:/ymir work/ui/game/windows/face_shaman.sub",
}

isInitData=0

def SetGeneralMotions(mode, folder):
    chrmgr.SetPathName(folder)
    chrmgr.RegisterMotionMode(mode)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_WAIT,                "wait.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_WALK,                "walk.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_RUN,                    "run.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE,                "damage.msa", 50)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE,                "damage_1.msa", 50)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_BACK,            "damage_2.msa", 50)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_BACK,            "damage_3.msa", 50)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_FLYING,        "damage_flying.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_STAND_UP,            "falling_stand.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_FLYING_BACK,    "back_damage_flying.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_STAND_UP_BACK,        "back_falling_stand.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DEAD,                "dead.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DIG,                    "dig.msa")

def SetIntroMotions(mode, folder):
    chrmgr.SetPathName(folder)
    chrmgr.RegisterMotionMode(mode)
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_INTRO_WAIT,            "wait.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_INTRO_SELECTED,        "selected.msa")
    chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_INTRO_NOT_SELECTED,    "not_selected.msa")



def __InitData():
    global isInitData

    if isInitData:
        return          

    isInitData = 1

    chrmgr.SetDustGap(250)
    chrmgr.SetHorseDustGap(500)

    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUST, "", "d:/ymir work/effect/etc/dust/dust.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HORSE_DUST, "", "d:/ymir work/effect/etc/dust/running_dust.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HIT, "", "d:/ymir work/effect/hit/blow_1/blow_1_low.mse")

    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HPUP_RED, "", "d:/ymir work/effect/etc/recuperation/drugup_red.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPUP_BLUE, "", "d:/ymir work/effect/etc/recuperation/drugup_blue.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPEEDUP_GREEN, "", "d:/ymir work/effect/etc/recuperation/drugup_green.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DXUP_PURPLE, "", "d:/ymir work/effect/etc/recuperation/drugup_purple.mse")

    #자동물약 HP, SP
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_AUTO_HPUP, "", "d:/ymir work/effect/etc/recuperation/autodrugup_red.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_AUTO_SPUP, "", "d:/ymir work/effect/etc/recuperation/autodrugup_blue.mse")
   
    #라마단 초승달의 반지(71135) 착용순간 발동 이펙트
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_RAMADAN_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item1.mse")
   
    #할로윈 사탕 착용순간 발동 이펙트
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HALLOWEEN_CANDY_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item2.mse")
   
    #행복의 반지 착용순간 발동 이펙트
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HAPPINESS_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item3.mse")

    #사랑의 팬던트 착용순간 발동 이펙트
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LOVE_PENDANT_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item4.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_WILL_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/will_ring.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DEADLY_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/deadly_ring.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HERO_MEDAL_EQUIP, "", "d:/ymir work/effect/etc/buff/hero_medal.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_BLUE_CANDY_EQUIP, "", "d:/ymir work/effect/etc/buff/blue_candy.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_GREEN_CANDY_EQUIP, "", "d:/ymir work/effect/etc/buff/green_candy.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_YELLOW_CANDY_EQUIP, "", "d:/ymir work/effect/etc/buff/yellow_candy.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_CHOCOLATE_PENDANT_EQUIP, "", "d:/ymir work/effect/etc/buff/chocolate_pendant.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_EVIL_PENDANT_EQUIP, "", "d:/ymir work/effect/etc/buff/evil_pendant.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_GUARD_PENDANT_EQUIP, "", "d:/ymir work/effect/etc/buff/guard_pendant.mse")

    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PENETRATE, "Bip01", "d:/ymir work/effect/hit/gwantong.mse")
    #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_BLOCK, "", "d:/ymir work/effect/etc/")
    #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DODGE, "", "d:/ymir work/effect/etc/")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_FIRECRACKER, "", "d:/ymir work/effect/etc/firecracker/newyear_firecracker.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPIN_TOP, "", "d:/ymir work/effect/etc/firecracker/paing_i.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SELECT, "", "d:/ymir work/effect/etc/click/click_select.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_TARGET, "", "d:/ymir work/effect/etc/click/click_glow_select.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_STUN, "Bip01 Head", "d:/ymir work/effect/etc/stun/stun.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_CRITICAL, "Bip01 R Hand", "d:/ymir work/effect/hit/critical.mse")
    player.RegisterCacheEffect(player.EFFECT_PICK, "d:/ymir work/effect/etc/click/click.mse")
   
   
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_TARGET, "", "d:/ymir work/effect/affect/damagevalue/target.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_NOT_TARGET, "", "d:/ymir work/effect/affect/damagevalue/nontarget.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_SELFDAMAGE, "", "d:/ymir work/effect/affect/damagevalue/damage.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_SELFDAMAGE2, "", "d:/ymir work/effect/affect/damagevalue/damage_1.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_POISON, "", "d:/ymir work/effect/affect/damagevalue/poison.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_MISS, "", "d:/ymir work/effect/affect/damagevalue/miss.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_TARGETMISS, "", "d:/ymir work/effect/affect/damagevalue/target_miss.mse")
    #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_CRITICAL, "", "d:/ymir work/effect/affect/damagevalue/critical.mse")

    #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SUCCESS, "",            "season1/effect/success.mse")
    #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_FAIL, "",    "season1/effect/fail.mse")
   
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LEVELUP_ON_14_FOR_GERMANY, "","season1/effect/paymessage_warning.mse")    #레벨업 14일때 ( 독일전용 )
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LEVELUP_UNDER_15_FOR_GERMANY, "", "season1/effect/paymessage_decide.mse" )#레벨업 15일때 ( 독일전용 )

    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PERCENT_DAMAGE1, "", "d:/ymir work/effect/hit/percent_damage1.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PERCENT_DAMAGE2, "", "d:/ymir work/effect/hit/percent_damage2.mse")
    chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PERCENT_DAMAGE3, "", "d:/ymir work/effect/hit/percent_damage3.mse")

   

    ##############
    # WARRIOR
    ##############
    chrmgr.CreateRace(RACE_WARRIOR_M)
    chrmgr.SelectRace(RACE_WARRIOR_M)  
    chrmgr.LoadLocalRaceData("warrior_m.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/warrior/intro/")

    chrmgr.CreateRace(RACE_WARRIOR_W)
    chrmgr.SelectRace(RACE_WARRIOR_W)  
    chrmgr.LoadLocalRaceData("warrior_w.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/warrior/intro/")


    ##############
    # ASSASSIN
    ##############
    chrmgr.CreateRace(RACE_ASSASSIN_W)
    chrmgr.SelectRace(RACE_ASSASSIN_W)
    chrmgr.LoadLocalRaceData("assassin_w.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/assassin/intro/")

    chrmgr.CreateRace(RACE_ASSASSIN_M)
    chrmgr.SelectRace(RACE_ASSASSIN_M)
    chrmgr.LoadLocalRaceData("assassin_m.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/assassin/intro/")


    ##############
    # SURA
    ##############
    chrmgr.CreateRace(RACE_SURA_M)
    chrmgr.SelectRace(RACE_SURA_M)  
    chrmgr.LoadLocalRaceData("sura_m.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/sura/intro/")

    chrmgr.CreateRace(RACE_SURA_W)
    chrmgr.SelectRace(RACE_SURA_W)  
    chrmgr.LoadLocalRaceData("sura_w.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/sura/intro/")


    ##############
    # SHAMAN
    ##############
    chrmgr.CreateRace(RACE_SHAMAN_W)
    chrmgr.SelectRace(RACE_SHAMAN_W)
    chrmgr.LoadLocalRaceData("shaman_w.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/shaman/intro/")

    chrmgr.CreateRace(RACE_SHAMAN_M)
    chrmgr.SelectRace(RACE_SHAMAN_M)
    chrmgr.LoadLocalRaceData("shaman_m.msm")
    SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/shaman/intro/")



def __LoadGameSound():
    item.SetUseSoundFileName(item.USESOUND_DEFAULT, "sound/ui/drop.wav")
    item.SetUseSoundFileName(item.USESOUND_ACCESSORY, "sound/ui/equip_ring_amulet.wav")
    item.SetUseSoundFileName(item.USESOUND_ARMOR, "sound/ui/equip_metal_armor.wav")
    item.SetUseSoundFileName(item.USESOUND_BOW, "sound/ui/equip_bow.wav")
    item.SetUseSoundFileName(item.USESOUND_WEAPON, "sound/ui/equip_metal_weapon.wav")
    item.SetUseSoundFileName(item.USESOUND_POTION, "sound/ui/eat_potion.wav")
    item.SetUseSoundFileName(item.USESOUND_PORTAL, "sound/ui/potal_scroll.wav")

    item.SetDropSoundFileName(item.DROPSOUND_DEFAULT, "sound/ui/drop.wav")
    item.SetDropSoundFileName(item.DROPSOUND_ACCESSORY, "sound/ui/equip_ring_amulet.wav")
    item.SetDropSoundFileName(item.DROPSOUND_ARMOR, "sound/ui/equip_metal_armor.wav")
    item.SetDropSoundFileName(item.DROPSOUND_BOW, "sound/ui/equip_bow.wav")
    item.SetDropSoundFileName(item.DROPSOUND_WEAPON, "sound/ui/equip_metal_weapon.wav")

def __LoadGameEffect():
    chrmgr.RegisterEffect(chrmgr.EFFECT_SPAWN_APPEAR, "Bip01", "d:/ymir work/effect/etc/appear_die/monster_appear.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_SPAWN_DISAPPEAR, "Bip01", "d:/ymir work/effect/etc/appear_die/monster_die.mse")      
    chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACK, "equip_right_hand", "d:/ymir work/effect/hit/blow_flame/flame_3_weapon.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_HIT, "", "d:/ymir work/effect/hit/blow_flame/flame_3_blow.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACH, "", "d:/ymir work/effect/hit/blow_flame/flame_3_body.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_ATTACK, "equip_right", "d:/ymir work/effect/hit/blow_electric/light_1_weapon.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_HIT, "", "d:/ymir work/effect/hit/blow_electric/light_1_blow.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_ATTACH, "", "d:/ymir work/effect/hit/blow_electric/light_1_body.mse")
   
    chrmgr.RegisterEffect(chrmgr.EFFECT_LEVELUP, "", "d:/ymir work/effect/etc/levelup_1/level_up.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_SKILLUP, "", "d:/ymir work/effect/etc/skillup/skillup_1.mse")

    if localeInfo.IsNEWCIBN():
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+1, "Bip01", "locale/newcibn/effect/empire/empire_A.mse")
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+2, "Bip01", "locale/newcibn/effect/empire/empire_B.mse")
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+3, "Bip01", "locale/newcibn/effect/empire/empire_C.mse")
    else :
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+1, "Bip01", "d:/ymir work/effect/etc/empire/empire_A.mse")
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+2, "Bip01", "d:/ymir work/effect/etc/empire/empire_B.mse")
        chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+3, "Bip01", "d:/ymir work/effect/etc/empire/empire_C.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_sword_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_spear_loop.mse")

    # LOCALE
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+0, "Bip01", localeInfo.FN_GM_MARK)
    if app.ENABLE_BOSS_EFFECT_SYSTEM:
        chrmgr.RegisterEffect(chrmgr.EFFECT_BOSS, "", "d:/ymir work/effect/boss_eff/boss_icon.mse")
    # END_OF_LOCALE
   
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+3, "Bip01", "d:/ymir work/effect/hit/blow_poison/poison_loop.mse") ## 중독
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+4, "", "d:/ymir work/effect/affect/slow.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+5, "Bip01 Head", "d:/ymir work/effect/etc/stun/stun_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+6, "", "d:/ymir work/effect/etc/ready/ready.mse")
    #chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+8, "", "d:/ymir work/guild/effect/10_construction.mse")
    #chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+9, "", "d:/ymir work/guild/effect/20_construction.mse")
    #chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+10, "", "d:/ymir work/guild/effect/20_upgrade.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+16, "", "d:/ymir work/pc/warrior/effect/gyeokgongjang_loop.mse") ## 천근추 (밑에도 있따-_-)
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+17, "", "d:/ymir work/pc/assassin/effect/gyeonggong_loop.mse") ## 자객 - 경공
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+19, "Bip01 R Finger2", "d:/ymir work/pc/sura/effect/gwigeom_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+20, "", "d:/ymir work/pc/sura/effect/fear_loop.mse") ## 수라 - 공포
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+21, "", "d:/ymir work/pc/sura/effect/jumagap_loop.mse") ## 수라 - 주마갑
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+22, "", "d:/ymir work/pc/shaman/effect/3hosin_loop.mse") ## 무당 - 호신
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+23, "", "d:/ymir work/pc/shaman/effect/boho_loop.mse") ## 무당 - 보호
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+24, "", "d:/ymir work/pc/shaman/effect/10kwaesok_loop.mse") ## 무당 - 쾌속
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+25, "", "d:/ymir work/pc/sura/effect/heuksin_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+26, "", "d:/ymir work/pc/sura/effect/muyeong_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+28, "Bip01", "d:/ymir work/effect/hit/blow_flame/flame_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+29, "Bip01 R Hand", "d:/ymir work/pc/shaman/effect/6gicheon_hand.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+30, "Bip01 L Hand", "d:/ymir work/pc/shaman/effect/jeungryeok_hand.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+32, "Bip01 Head", "d:/ymir work/pc/sura/effect/pabeop_loop.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+33, "", "d:/ymir work/pc/warrior/effect/gyeokgongjang_loop.mse") ## 천근추 (Fallen)
    ## 34 Polymoph
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+35, "", "d:/ymir work/effect/etc/guild_war_flag/flag_red.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+36, "", "d:/ymir work/effect/etc/guild_war_flag/flag_blue.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+37, "", "d:/ymir work/effect/etc/guild_war_flag/flag_yellow.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+1, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+2, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+3, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+4, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_7_b.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+5, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_8_b.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+6, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_9_b.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+7, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7_f.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+8, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8_f.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+9, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9_f.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+10, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7_s.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+11, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8_s.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+12, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9_s.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+13, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_7_s.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+14, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_8_s.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+15, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_9_s.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+16, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_7.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+17, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_8.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+18, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_9.mse")

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+19, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-4-2-1.mse")
    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+20, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-4-2-2.mse")

    ## FlyData
    effect.RegisterIndexedFlyData(effect.FLY_EXP, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_yellow_small2.msf")                ## 노란색 (EXP)
    effect.RegisterIndexedFlyData(effect.FLY_HP_MEDIUM, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_small.msf")            ## 빨간색 (HP) 작은거
    effect.RegisterIndexedFlyData(effect.FLY_HP_BIG, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_big.msf")                ## 빨간색 (HP) 큰거
    effect.RegisterIndexedFlyData(effect.FLY_SP_SMALL, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_warrior_small.msf")    ## 파란색 꼬리만 있는거
    effect.RegisterIndexedFlyData(effect.FLY_SP_MEDIUM, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_small.msf")            ## 파란색 작은거
    effect.RegisterIndexedFlyData(effect.FLY_SP_BIG, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_big.msf")                ## 파란색 큰거
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK1, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_1.msf")        ## 폭죽 1
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK2, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_2.msf")        ## 폭죽 2
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK3, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_3.msf")        ## 폭죽 3
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK4, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_4.msf")        ## 폭죽 4
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK5, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_5.msf")        ## 폭죽 5
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK6, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_6.msf")        ## 폭죽 6
    effect.RegisterIndexedFlyData(effect.FLY_FIREWORK_XMAS, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_xmas.msf")    ## 폭죽 X-Mas
    effect.RegisterIndexedFlyData(effect.FLY_CHAIN_LIGHTNING, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/pc/shaman/effect/pokroe.msf")                        ## 폭뢰격
    effect.RegisterIndexedFlyData(effect.FLY_HP_SMALL, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_smallest.msf")            ## 빨간색 매우 작은거
    effect.RegisterIndexedFlyData(effect.FLY_SKILL_MUYEONG, effect.INDEX_FLY_TYPE_AUTO_FIRE, "d:/ymir work/pc/sura/effect/muyeong_fly.msf")                    ## 무영진

    #########################################################################################
    ## Emoticon
    EmoticonStr = "d:/ymir work/effect/etc/emoticon/"

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+0, "", EmoticonStr+"sweat.mse")
    net.RegisterEmoticonString("(황당)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+1, "", EmoticonStr+"money.mse")
    net.RegisterEmoticonString("(돈)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+2, "", EmoticonStr+"happy.mse")
    net.RegisterEmoticonString("(기쁨)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+3, "", EmoticonStr+"love_s.mse")
    net.RegisterEmoticonString("(좋아)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+4, "", EmoticonStr+"love_l.mse")
    net.RegisterEmoticonString("(사랑)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+5, "", EmoticonStr+"angry.mse")
    net.RegisterEmoticonString("(분노)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+6, "", EmoticonStr+"aha.mse")
    net.RegisterEmoticonString("(아하)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+7, "", EmoticonStr+"gloom.mse")
    net.RegisterEmoticonString("(우울)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+8, "", EmoticonStr+"sorry.mse")
    net.RegisterEmoticonString("(죄송)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+9, "", EmoticonStr+"!_mix_back.mse")
    net.RegisterEmoticonString("(!)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+10, "", EmoticonStr+"question.mse")
    net.RegisterEmoticonString("(?)")

    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+11, "", EmoticonStr+"fish.mse")
    net.RegisterEmoticonString("(fish)")


    ## Emoticon
    #########################################################################################


def __LoadGameWarrior():
    __LoadGameWarriorEx(RACE_WARRIOR_M, "d:/ymir work/pc/warrior/")
    __LoadGameWarriorEx(RACE_WARRIOR_W, "d:/ymir work/pc2/warrior/")

def __LoadGameAssassin():
    __LoadGameAssassinEx(RACE_ASSASSIN_W, "d:/ymir work/pc/assassin/")
    __LoadGameAssassinEx(RACE_ASSASSIN_M, "d:/ymir work/pc2/assassin/")

def __LoadGameSura():
    __LoadGameSuraEx(RACE_SURA_M, "d:/ymir work/pc/sura/")
    __LoadGameSuraEx(RACE_SURA_W, "d:/ymir work/pc2/sura/")

def __LoadGameShaman():
    __LoadGameShamanEx(RACE_SHAMAN_W, "d:/ymir work/pc/shaman/")
    __LoadGameShamanEx(RACE_SHAMAN_M, "d:/ymir work/pc2/shaman/")

def __LoadGameWarriorEx(race, path):

    ## Warrior
    #########################################################################################
    chrmgr.SelectRace(race)

    ## GENERAL MODE
    SetGeneralMotions(chr.MOTION_MODE_GENERAL, path + "general/")
    chrmgr.SetMotionRandomWeight(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, 0, 70)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait_1.msa", 30)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack_1.msa", 50)

    ## SKILL
    chrmgr.SetPathName(path + "skill/")
    for i in xrange(skill.SKILL_EFFECT_COUNT):
        END_STRING = ""
        if i != 0: END_STRING = "_%d" % (i+1)
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+1, "samyeon" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2, "palbang" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3, "jeongwi" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4, "geomgyeong" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "tanhwan" + END_STRING + ".msa")
        if NEW_678TH_SKILL_ENABLE:
            chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "gihyeol" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16, "gigongcham" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17, "gyeoksan" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18, "daejin" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19, "cheongeun" + END_STRING + ".msa")
        chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20, "geompung" + END_STRING + ".msa")
        if NEW_678TH_SKILL_ENABLE:
            chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21, "noegeom" + END_STRING + ".msa")

    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLOOD, "guild_yongsinuipi.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLESS, "guild_yongsinuichukbok.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_BLESSARMOR, "guild_seonghwigap.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_SPPEDUP, "guild_gasokhwa.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONWRATH, "guild_yongsinuibunno.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_MAGICUP, "guild_jumunsul.msa")

    chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, 1)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

    ## EMOTION
    emotion.RegisterEmotionAnis(path)

    ## ONEHAND_SWORD BATTLE
    chrmgr.SetPathName(path + "onehand_sword/")
    chrmgr.RegisterMotionMode(chr.MOTION_MODE_ONEHAND_SWORD)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT,                "wait.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT,                "wait_1.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WALK,                "walk.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_RUN,                "run.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,            "damage.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,            "damage_1.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK,        "damage_2.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK,        "damage_3.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1,    "combo_01.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2,    "combo_02.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3,    "combo_03.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_4,    "combo_04.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_5,    "combo_05.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_6,    "combo_06.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_7,    "combo_07.msa")

    ## Combo Type 1
    chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, 4)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)
    ## Combo Type 2
    chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, 5)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)
    ## Combo Type 3
    chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, 6)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)
    chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)

    ## TWOHAND_SWORD BATTLE
    chrmgr.SetPathName(path + "twohand_sword/")
    chrmgr.RegisterMotionMode(chr.MOTION_MODE_TWOHAND_SWORD)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WAIT,                "wait.msa", 70)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WAIT,                "wait_1.msa", 30)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WALK,                "walk.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_RUN,                "run.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE,            "damage.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE,            "damage_1.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE_BACK,        "damage_2.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE_BACK,        "damage_3.msa", 50)
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_1,    "combo_01.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_2,    "combo_02.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_3,    "combo_03.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_4,    "combo_04.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_5,    "combo_05.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_6,    "combo_06.msa")
    chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_7,    "combo_07.msa")



    SetDoor(13001, "stone_door")
NEW_678TH_SKILL_ENABLE = 0 > NEW_678TH_SKILL_ENABLE = 1
 
Geri
Üst