Vanilla

Developer
  • Content count

    300
  • Joined

  • Last visited

Vanilla last won the day on February 11

Vanilla had the most liked content!

Community Reputation

811 Unstoppable

About Vanilla

  • Rank
    Noble
  • Birthday

Profile Information

  • Gender
    Female
  • Location
    Germany

Recent Profile Visitors

6,022 profile views
  1. if you're force closing your server you'll get serious trouble. You'd check that you're doing a so called grace shutdown. Give your server time to sync the dbcache with your database. Otherwise you'll loose items. That's why companies have a larger span of time for their maintenances.
  2. Thank you everyone for the kind feedback. next build is coming soon. If everything goes as planned we'll hit stable soon. And no, I don't plan on releasing a bin like I do it with the core. Maybe some day in the future but currently there are no plans. I'm also onto the problem with compiling under release mode and I think I found it. Next build should work without any problems in release mode
  3.  

    please source for vs 2013 or 2015 for windows server files vanilla anymore pleaseeeeeeeeeeeeeeeeee :(

     
  4. I fixed the download link, now you can download the compiled version
  5. @Hik: Please post a backtrace. Otherwise we're unable to help you.
  6. Run config.exe and have a look at "frequency". This is the setting where you can change the fps cap. Note that in the default config it's only possible to switch between 30 and 60. You may change that if you're building your own config. The setting is saved in metin2.cfg where you can change it too
  7. hay can you tell me
    how i can add effect from the client side (with code)
    i do this step 
    I go to  playersettingmodule.py   and i add this 
        BuffStr = "d:/ymir work/effect/etc/buff/"  under EmoticonStr = "d:/ymir work/effect/etc/emoticon/"  
    after this I add 
    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+12, "", BuffStr+"redfenix.mse")
        net.RegisterEmoticonString("(b8)") 
    under this
    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+11, "", EmoticonStr+"fish.mse")
    net.RegisterEmoticonString("(fish)")
     after this i go to game.py I add this
    "buff8"                    : self.__buff8,
    under 
    "mall"                    : self.__InGameShop_Show  
    in the final I add this  
    # Buff
    def __buff8(self):
    net.SendChatPacket("(b8)") 
    # End Buff  
    under this 
    def AskSafeboxPassword(self):
    but when i run the game i gut this error 
    p_397rjsde1.png
    pls i want fix for this problem i need to be able to add effect like this
    if any body make this error or say to me what should i do 
    iwont forrget this favor
     

    1. Show previous comments  3 more
    2. Aliremawi

      Aliremawi

      just moment please i will upload it now

      http://www.mediafire.com/file/ibzz6hbonb9dr6z/playersettingmodule.rar

      or

      	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
      JOB_WOLFMAN        = 4
      	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
      RACE_WOLFMAN_M    = 8
      	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+121
      HORSE_SKILL_CHARGE = chr.MOTION_SKILL+122
      HORSE_SKILL_SPLASH = chr.MOTION_SKILL+123
      	GUILD_SKILL_DRAGONBLOOD = chr.MOTION_SKILL+101
      GUILD_SKILL_DRAGONBLESS = chr.MOTION_SKILL+102
      GUILD_SKILL_BLESSARMOR = chr.MOTION_SKILL+103
      GUILD_SKILL_SPPEDUP = chr.MOTION_SKILL+104
      GUILD_SKILL_DRAGONWRATH = chr.MOTION_SKILL+105
      GUILD_SKILL_MAGICUP = chr.MOTION_SKILL+106
      	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 NEW_678TH_SKILL_ENABLE
          global SKILL_INDEX_DICT
          
          NEW_678TH_SKILL_ENABLE = localeInfo.IsYMIR()
          if NEW_678TH_SKILL_ENABLE:
              SKILL_INDEX_DICT = {
                  JOB_WARRIOR : { 
                      1 : (1, 2, 3, 4, 5, 6, 0, 0, 137, 0, 138, 0, 139, 0,), 
                      2 : (16, 17, 18, 19, 20, 21, 0, 0, 137, 0, 138, 0, 139, 0,), 
                      "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
                  },
                  JOB_ASSASSIN : { 
                      1 : (31, 32, 33, 34, 35, 36, 0, 0, 137, 0, 138, 0, 139, 0, 140,), 
                      2 : (46, 47, 48, 49, 50, 51, 0, 0, 137, 0, 138, 0, 139, 0, 140,), 
                      "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
                  },
                  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, 141, 142,),
                  },
                  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, 141, 142,),
                  },
              }
          else:
              SKILL_INDEX_DICT = {
                  JOB_WARRIOR : { 
                      1 : (1, 2, 3, 4, 5, 6, 0, 0, 137, 0, 138, 0, 139, 0,), 
                      2 : (16, 17, 18, 19, 20, 21, 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, 36, 0, 0, 137, 0, 138, 0, 139, 0, 140,), 
                      2 : (46, 47, 48, 49, 50, 51, 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,),
                  },
                  JOB_WOLFMAN : {
                      1 : (170, 171, 172, 173, 174, 175, 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
          if 0 != empire:
              languageSkillList = []
              for i in xrange(3):
                  if (i+1) != empire:
                      languageSkillList.append(player.SKILL_INDEX_LANGUAGE1+i)
              for i in xrange(len(languageSkillList)):
                  player.SetSkill(107+i, languageSkillList[i])
      	    ## 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 SetGeneralMotionsForWolfman(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,                "back_damage.msa", 50)
          chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE,                "back_damage.msa", 50)
          chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_BACK,            "back_damage.msa", 50)
          chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_BACK,            "back_damage1.msa", 50)
          chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_FLYING,        "back_damage_flying.msa")
          chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_STAND_UP,            "front_falling_standup.msa")
          chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_FLYING_BACK,    "back_damage_flying.msa")
          chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_STAND_UP_BACK,        "back_falling_standup.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_DUEL_VICTIM, "", "d:/ymir work/effect/Jin_Han/work/JinHanDuelEffectVictim.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUEL_KILLER, "", "d:/ymir work/effect/Jin_Han/work/JinHanDuelEffectKiller.mse")
          
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUEL_SENDER, "", "d:/ymir work/effect/Jin_Han/work/EFECT_DUEL_Jin_Han_Sender.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUEL_RECEIVER, "", "d:/ymir work/effect/Jin_Han/work/EFECT_DUEL_Jin_Han_Receiver.mse")
          
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUEL_5, "", "d:/ymir work/effect/Jin_Han/work/Jin_Han_Duel_5.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUEL_4, "", "d:/ymir work/effect/Jin_Han/work/Jin_Han_Duel_4.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUEL_3, "", "d:/ymir work/effect/Jin_Han/work/Jin_Han_Duel_3.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUEL_2, "", "d:/ymir work/effect/Jin_Han/work/Jin_Han_Duel_2.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUEL_1, "", "d:/ymir work/effect/Jin_Han/work/Jin_Han_Duel_1.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUEL_0, "", "d:/ymir work/effect/Jin_Han/work/Jin_Han_Duel_0.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_ACCE_SUCCEDED_1, "", "d:/ymir work/effect/etc/buff/esarfa_succes.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_EQUIP_ACCE_1, "", "d:/ymir work/effect/etc/buff/buff_wing7.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_EQUIP_ACCE_2, "", "d:/ymir work/effect/etc/buff/buff_wing7.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_EQUIP_ACCE_3, "", "d:/ymir work/effect/etc/buff/buff_wing7.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_EQUIP_ACCE_4, "", "d:/ymir work/effect/etc/buff/buff_wing7.mse")    
          if app.ENABLE_MOUNT_SYSTEM:
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_1, "", "d:/ymir work/effect/etc/buff/mount_1.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_2, "", "d:/ymir work/effect/etc/buff/mount_2.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_3, "", "d:/ymir work/effect/etc/buff/mount_3.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_4, "", "d:/ymir work/effect/etc/buff/mount_4.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_5, "", "d:/ymir work/effect/etc/buff/mount_5.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_6, "", "d:/ymir work/effect/etc/buff/mount_6.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_7, "", "d:/ymir work/effect/etc/buff/mount_7.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_8, "", "d:/ymir work/effect/etc/buff/mount_8.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_9, "", "d:/ymir work/effect/etc/buff/mount_9.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_10, "", "d:/ymir work/effect/etc/buff/mount_10.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_11, "", "d:/ymir work/effect/etc/buff/mount_11.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_12, "", "d:/ymir work/effect/etc/buff/mount_12.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_13, "", "d:/ymir work/effect/etc/buff/mount_13.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_14, "", "d:/ymir work/effect/etc/buff/mount_14.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_15, "", "d:/ymir work/effect/etc/buff/mount_15.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_16, "", "d:/ymir work/effect/etc/buff/mount_16.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_17, "", "d:/ymir work/effect/etc/buff/mount_17.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_18, "", "d:/ymir work/effect/etc/buff/mount_18.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_19, "", "d:/ymir work/effect/etc/buff/mount_19.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_20, "", "d:/ymir work/effect/etc/buff/mount_20.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_21, "", "d:/ymir work/effect/etc/buff/mount_21.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_22, "", "d:/ymir work/effect/etc/buff/mount_22.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_23, "", "d:/ymir work/effect/etc/buff/buff_item11.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_24, "", "d:/ymir work/effect/etc/buff/mount_24.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_25, "", "d:/ymir work/effect/etc/buff/mount_25.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_26, "", "d:/ymir work/effect/etc/buff/mount_26.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_27, "", "d:/ymir work/effect/etc/buff/mount_27.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_28, "", "d:/ymir work/effect/etc/buff/mount_28.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_29, "", "d:/ymir work/effect/etc/buff/mount_29.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_30, "", "d:/ymir work/effect/etc/buff/mount_30.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_31, "", "d:/ymir work/effect/etc/buff/mount_31.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_32, "", "d:/ymir work/effect/etc/buff/mount_32.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_33, "", "d:/ymir work/effect/etc/buff/mount_33.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_34, "", "d:/ymir work/effect/etc/buff/mount_34.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_35, "", "d:/ymir work/effect/etc/buff/mount_35.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_36, "", "d:/ymir work/effect/etc/buff/mount_36.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_37, "", "d:/ymir work/effect/etc/buff/mount_37.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_38, "", "d:/ymir work/effect/etc/buff/mount_38.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_39, "", "d:/ymir work/effect/etc/buff/mount_39.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_40, "", "d:/ymir work/effect/etc/buff/mount_40.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_41, "", "d:/ymir work/effect/etc/buff/mount_41.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_42, "", "d:/ymir work/effect/etc/buff/mount_42.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_43, "", "d:/ymir work/effect/etc/buff/mount_43.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_44, "", "d:/ymir work/effect/etc/buff/mount_44.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_45, "", "d:/ymir work/effect/etc/buff/mount_45.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_46, "", "d:/ymir work/effect/etc/buff/mount_46.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_47, "", "d:/ymir work/effect/etc/buff/mount_47.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_48, "", "d:/ymir work/effect/etc/buff/mount_48.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_49, "", "d:/ymir work/effect/etc/buff/mount_49.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_50, "", "d:/ymir work/effect/etc/buff/mount_50.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_51, "", "d:/ymir work/effect/etc/buff/mount_51.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_52, "", "d:/ymir work/effect/etc/buff/mount_52.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_53, "", "d:/ymir work/effect/etc/buff/mount_53.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_54, "", "d:/ymir work/effect/etc/buff/mount_54.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_55, "", "d:/ymir work/effect/etc/buff/mount_55.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_56, "", "d:/ymir work/effect/etc/buff/mount_56.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_57, "", "d:/ymir work/effect/etc/buff/mount_57.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_58, "", "d:/ymir work/effect/etc/buff/mount_58.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_59, "", "d:/ymir work/effect/etc/buff/mount_59.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_60, "", "d:/ymir work/effect/etc/buff/mount_60.mse")
              chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MOUNT_61, "", "d:/ymir work/effect/etc/buff/mount_61.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_SHINSOO, "", "d:/ymir work/effect/world/shinsoo_select.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_TARGET_SHINSOO, "", "d:/ymir work/effect/world/shinsoo_glow_select.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_CHUNJO, "", "d:/ymir work/effect/world/chunjo_select.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_TARGET_CHUNJO, "", "d:/ymir work/effect/world/chunjo_glow_select.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_JINNOS, "", "d:/ymir work/effect/world/jinnos_select.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_TARGET_JINNOS, "", "d:/ymir work/effect/world/jinnos_glow_select.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_MONSTER, "", "d:/ymir work/effect/world/mob_select.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_TARGET_MONSTER, "", "d:/ymir work/effect/world/mob_glow_select.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_STONE, "", "d:/ymir work/effect/world/stone_select.mse")
          chrmgr.RegisterCacheEffect(chrmgr.EFFECT_TARGET_STONE, "", "d:/ymir work/effect/world/stone_glow_select.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/")
      	    ##############
          # WOLFMAN
          ##############
          chrmgr.CreateRace(RACE_WOLFMAN_M)
          chrmgr.SelectRace(RACE_WOLFMAN_M)    
          chrmgr.LoadLocalRaceData("wolfman_m.msm")
          SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc3/wolfman/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)
          # 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_AFFECT+42, "Bip01", "d:/ymir work/effect/hit/blow_poison/bleeding_loop.mse")
          chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+43, "Bip01", "d:/ymir work/effect/hit/blow_flame/flame_loop_w.mse")
          chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+44, "", "d:/ymir work/pc3/common/effect/gyeokgongjang_loop_w.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")
          chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+21, "PART_ACCE", "D:/ymir work/pc/common/effect/sword/sword_9_b.mse")
          chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+22, "Bip01", "d:/ymir work/effect/Jin_Han/work/demonica.mse")
          chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+23, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_assassin4.mse")
          chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+24, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_assassin5.mse")
          chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+25, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_assassin6.mse")
          chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+26, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_assassin7.mse")
          chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+27, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_assassin8.mse")
          chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+28, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-5-1.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/"
          BuffStr = "d:/ymir work/effect/etc/buff/"  
          BuffStr2 = "d:/ymir work/effect/etc/"
          BuffStr3 = "d:/ymir work/effect/etc/buff/"
          BuffStr4 = "locale/tr/effect/"
      	    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)")
          
          chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+12, "", BuffStr+"azrael.mse")
          net.RegisterEmoticonString("(b11)")
      	    chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+13, "", BuffStr2+"ox/success.mse")
          net.RegisterEmoticonString("(spirit2)")
      	
          ## 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 __LoadGameWolfman():
          __LoadGameWolfmanEx(RACE_WOLFMAN_M, "d:/ymir work/pc3/wolfman/")
      	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")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "gihyeol" + 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")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21, "noegeom" + 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")
      	    ## Combo Type 1
          chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, 4)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)
          ## Combo Type 2
          chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, 5)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)
          ## Combo Type 3
          chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, 6)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)
      	    ## FISHING
          chrmgr.SetPathName(path + "fishing/")
          chrmgr.RegisterMotionMode(chr.MOTION_MODE_FISHING)
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WAIT,            "wait.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WALK,            "walk.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_RUN,                "run.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_THROW,    "throw.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_WAIT,    "fishing_wait.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_STOP,    "fishing_cancel.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_REACT,    "fishing_react.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_CATCH,    "fishing_catch.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_FAIL,    "fishing_fail.msa")
      	    ## HORSE
          chrmgr.SetPathName(path + "horse/")
          chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE)
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,                "wait.msa", 90)
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,                "wait_1.msa", 9)
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,                "wait_2.msa", 1)
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WALK,                "walk.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_RUN,                "run.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE,            "damage.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE_BACK,        "damage.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DEAD,                "dead.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_CHARGE,            "skill_charge.msa")
      	    ## HORSE_ONEHAND_SWORD
          chrmgr.SetPathName(path + "horse_onehand_sword/")
          chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_ONEHAND_SWORD)
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
          chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, 3)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_SPLASH, "skill_splash.msa")
      	    ## HORSE_TWOHAND_SWORD
          chrmgr.SetPathName(path + "horse_twohand_sword/")
          chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_TWOHAND_SWORD)
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
          chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, 3)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
          chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")
          chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, HORSE_SKILL_SPLASH, "skill_splash.msa")
      	    ## Bone
          chrmgr.RegisterAttachingBoneName(chr.PART_ACCE, "Bip01 Spine2")
          chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON_RIGHT, "equip_right_hand")
          chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON, "equip_right_hand")        
      	def __LoadGameAssassinEx(race, path):
          ## Assassin
          #########################################################################################
          chrmgr.SelectRace(race)
      	    ## GENERAL MOTION 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)
      	    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)
      	    ## 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, "amseup" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2, "gungsin" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3, "charyun" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4, "eunhyeong" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "sangong" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "seomjeon" + END_STRING + ".msa")
              if NEW_678TH_SKILL_ENABLE:
                  chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "seomjeon" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16, "yeonsa" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17, "gwangyeok" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18, "hwajo" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19, "gyeonggong" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20, "dokgigung" + END_STRING + ".msa")
              chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21, "seomgwang" + END_STRING + ".msa")
              if NEW_678TH_SKILL_ENABLE:
                  chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21, "seomgwang" + 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")
      	    ## EMOTION
          emotion.RegisterEmotionAnis(
      	
    3. Vanilla

      Vanilla

      https://mega.nz/#!Hl90RZQI!Tz1_n8yVFh9FtUuo1bVenkfkP7ZYfsiwqqqUCypIFLg

       

      Download this and the error should be fixed. Have a look at line 616. You'll notice that your indentation isn't correct. You need to use TAB for indentation, but in your code it's just some whitespaces (     ) instead of a tab. This is not a valid indentation and causes this error. If you have the same error again after using the playersettingmodule, then just simply check the line and correct your indentation.

    4. Aliremawi

      Aliremawi

      Thank yoy very mush i will test it and tell you what happened

      Thanks for all

      thanks its work yes now I know my wrong 

      in future i will use tab 

      thanks for all

  8. Yep, the exact points you mentioned are the reasons I'd consider building them myself instead of using pkg. Though I don't blame people for using pkg, I write my guides like I'd do it and that's the way it worked. If that's too long for you, feel free to use pkg. But in Freebsd < 9.4 you might not have much fun with it. You need clang to be the compiler except you wish to change the compiler for your m2 source to gcc. Older FreeBSD versions don't have packages prebuilt with clang. The project is ongoing and yes, code modernization is a part of the plan. Thanks for your feedback, I'll take that into account when preparing the next versions
  9. Using the pkg system isn't as effective. It's faster but it's not better. You'd compile the ports on your machine. I for myself experienced a lot of trouble especially when installing compilers via pkg. Additionally you don't need everything, just like in devil. And you sure know that we use clang and some ports may or may not use it depending on the system you're using? We don't need to link to gcc-prebuilt packages...
  10. clang-devel should be installed just via ports. It should work in FreeBSD < 10. c++14 needs the newer clang version. If you're on one of the older compilers like gcc 4.2 it most likely won't work. Also you need devel/libc++ and devel/libcxxrt To build you then only need security/googletest, security/cryptopp, graphics/devil (only jpg needed, all else is not needed), devel/gmake, devel/makedepend and database/mariadb101-client (or any other mysql client for the lib). These are all the dependencies. I've gathered them together into a list. Note that every additional port should be compiled with clang instead of gcc! You cannot use gcc-compiled libs in a clang-project. First install: - lang/clang-devel (you don't need to use the devel-version of clang, you can just install one of the most recent versions) - devel/libc++ - devel/libcxxrt - devel/gmake (should already be installed by one of the ports above) - devel/makedepend And then add the following to /etc/make.conf: CC = clang-devel CPP = clang-cpp-devel CXX = clang++-devel CFLAGS += -stdlib=libc++ After that you can start installing the dependencies: - security/googletest - security/cryptopp - graphics/devil (note: Only jpg needed) - databases/mariadb101-client (no server needed, only the client. You can also use mysql if you wish to, we only need the client lib) If everything is installed, make sure you rebuild the Depend-File. For this you can just cd into the source directory and remove it. Then you can just execute the following command: gmake depend After that you'll have everything you need. You can build the sources. gmake debug|release|all Note that you can either choose to compile debug, release or all. You can also use install if you specified a path in your Makefile. This way the created binary will be pushed into a directory once it's finished.
  11. I did not use the BSD-functions. I use c++ standards. Lots of stuff can be handled via std-lib. Since c++11 there's a lot of new features. For example I replaced the boost::unordered_map with std::unordered_map. This also ensures cross-compatibility since you can build libc also on unix-systems. Also the security issues were SQL injections most of the time. For example the auth-messenger. But it's not limited to sql injections since there also were a few things not coded correctly with which you'd possibly crash the core. Most of them is already public so nothing too new. @galet Clientside you can just change the pong like you want to. There's nothing needed, unless you want to change the pong via config files there too (which shouldn't be done). The reason I implement this on the source is for people who just want to change those things on-the-fly and maybe release a updated binary. Or you just want to have the possibilities without messing with the core. It's more simple, the client part should be done too of course but that's not one of those things I'd do. I think I'll write a guide on how to change the encryption, e. g. xtea to AES regarding the client. This way they everyone can implement those things in their own client.
  12. I won't make a big project for the client. But I will do some few things like python 3.6 and I also will release a guide + source download for those things. But nothing like the core^^ Additionally I'm planning on gathering information for the next version of the core. Please share some feedback if you have and tell me what you'd like to see in the next revision. Few things I can already mention: - Option to switch compression algorithms. You'll be able to switch from lzo to lz4 and backwards by CONFIG - Option to switch encryption algorithms. You'll be able to switch from xtea to CAST-128 or AES and vice versa (does only work with enhanced security disabled) - Option to setup pong and other stuff via CONFIG. Of course some stuff does only work with enhanced security disabled. - Option to enable/disable custom MySQL-functions for passwords (so you can use e. g. salt for better security) - Ingame Elevation with a standard passphrase (enabled by default!) The next release focuses on stability and security. The goal is to add more diversity when it comes to encryptions and hardening your server. With custom passphrases and stuff you'll be able to switch to other implementations easily. Also the custom password functions will further protect the passwords even when an attacker gets insight on the database. Of course the core will also be able to use a custom phrase to further lengthen the password and making it more difficult for attackers to retrieve the original strings. Let me hear your thoughts EDIT: Btw. I tried to fix every bug that's been made public. But I'm not 100% sure I got everything. That's why I'm asking you kindly to revise the core and see if there's anything unstable before I brand it as a stable one. That's why It's called a BETA
  13. fixed the link for source code
  14. Greetings! The new beta is finished! I'm proud to present r70140-BETA. This time a few things have changed. And in this revision, we have a lot of new stuff. That's the reason I want to make a BETA so everything's tested. In the following I'll provide the download link along with the things I'd love you to test. *** DISCLAIMER *** I am absolutely not responsible for you replacing your core with a Beta-revision. This is clearly undergoing development and had not enough testing to be labeled as stable. Please do not use it in production envirionments unless you're sure what you're doing (and even so it's madness). It's meant for testing purpose. Our main goal is to achieve a stable core. As soon as patches come in, I'll tidy up the patchlog. 1.) What's new? + Boot-Trigger for quests With this you can execute commands, timers, and all the stuff you'd like to have just on boot-time! * revisioned the unique class and added a ton of possibilities to it! More down below! + Added the functionality to create unique-groups + Temp-Variables for quests * upgraded all libs and moved completely to the newest clang version * fixed some big security issues in the source code * fixed the ingame ban and unban commands * unified tables and gave them a new way: unify! * Revisioned the Makefiles and gave the source a new, easier structure * Removed all external dependencies - you won't need them, just install them by ports. No External-folder necessary! * Partial implementation of the wolfman (claws etc. are added, needs review) - removed boost dependency (no boost lib needed yay) And basically everything that has been offered in the earlier versions of the vanilla core. Nothing should be missing. And if you miss something, just feel free to tell me! 2.) What needs testing? There is a lot of stuff to test! In this earlier BETA-stage I won't give out the source code. I will do so once I've made sure the core runs well enough to be released in public. Though there are few things I'd love you to test out! * Please check if the core is vulnerable to any security breaches you may know (also the public ones, don't know if I missed something) * Please test out the new features! I'd really love to know if the new unique-functions and the boot-trigger does the job. 3.) Explanation to new features * Unique with container support Unique has evolved! This time you have a few new possibilities. Don't know what unique is? Here's a short explanation: With the unique-questfunctions you can spawn or set mobs, npcs and now even players to have a unique name. This name is stored into a unique-container. You can access this container and get all the vid's by their unique name (also called: the key) So for example you can spawn a boss with a key. Later on you can check if this specific mob has been killed or not. Or you can set his hp on-the-fly. There's basically no limits! And now with the revised system you'll have even more options. The new unique system works with containers. By default there are two containers reserved: __DEFAULT__ and __CHARACTER__. The first one is for all the basic stuff. And the second one is reserved for players. Now, as you may have noticed, there's a default one which means that the container-stuff is optional. If you just use the unique-functions without specifying a container, it'll just use the default stuff. But you CAN use your own containers just as you want to. You can create, delete and list all the containers running. There is a list with all the quest-functions down below. * Boot-Trigger This is pretty self-explanatory. With this release you can use "when boot begin" to specify a block of code that will be executed once the core has been booted. * Temp-Variables With the new temp-variables you can set and remove player-specific variables. They are stored in the core and not written to disk or database. So be careful because they might get dropped once the core shutdowns. It's just a quick storage for people who want to have something like a cache for quick access. The new quest functions: nil unique.spawn_unique(string key, int vnum, string pos=unused, string container=optional) nil unique.set_unique(string key, int vid, string container=optional) nil unique.purge_unique(string key, string container=optional) nil unique.kill_unique(string key, string container=optional) bool unique.is_unique_dead(string key, string container=optional) int unique.get_hp_perc(string key, string container=optional) nil unique.set_def_grade(string key, int def, string container=optional) nil unique.set_hp(string key, int hp, string container=optional) nil unique.set_max_hp(string key, int maxhp, string container=optional) int unique.get_vid(string key, string container=optional) bool unique.exists(string key, string container=optional) table unique.get_container_list() --this prints out all the unique containers table unique.get_container_list(string key) --this prints out all the vids in the unique-container "key" nil unique.remove_container(string key) --removes a whole container (flushes it when called on standard containers) nil pc.temp_var_set(string key, string value) string pc.temp_var_get(string key) nil pc.temp_var_delete(string key) Thanks a lot for participating! If there are any questions, this is the topic related to it. Further releases will be made public here too! If you'd like to contribute, just post code additions here. Download: Here Download (source code): Here Password for both archives is: vanilla Libs are included. If you're building your own vanilla binary you'll first have to move into every project of the Internal directory and rebuild the libs. The main Makefile is not adapted yet, I was too lazy Best Regards Vanilla
  15. The error in your first post is pretty much the join-statement. if you use t1.join() then the game will synchronize with the thread meaning it's waiting for the thread to be finished. A thing that will actually never occur since your thread is running into infinity. The precise point where you're using join() is the moment when the game stops executing. Yes, your thread will still run, but the actual game won't because it's always waiting for your thread. At the very moment you're spawning the thread, execution starts. So there's no need for join anyway.