private NrCharBase _CreateClientNPC(string CharCode, POS3D CharPos, POS3D CharDirection) { NrCharKindInfo charKindInfoFromCode = NrTSingleton <NrCharKindInfoManager> .Instance.GetCharKindInfoFromCode(CharCode); if (charKindInfoFromCode == null) { return(null); } NEW_MAKECHAR_INFO nEW_MAKECHAR_INFO = new NEW_MAKECHAR_INFO(); nEW_MAKECHAR_INFO.CharName = TKString.StringChar(charKindInfoFromCode.GetName()); nEW_MAKECHAR_INFO.CharPos.x = CharPos.x; nEW_MAKECHAR_INFO.CharPos.y = CharPos.y; nEW_MAKECHAR_INFO.CharPos.z = CharPos.z; nEW_MAKECHAR_INFO.Direction.x = CharDirection.x; nEW_MAKECHAR_INFO.Direction.y = CharDirection.y; nEW_MAKECHAR_INFO.Direction.z = CharDirection.z; nEW_MAKECHAR_INFO.CharKind = charKindInfoFromCode.GetCharKind(); nEW_MAKECHAR_INFO.CharKindType = 3; nEW_MAKECHAR_INFO.CharUnique = (short)(31000 + this._GetEmptySlot()); NrTSingleton <NkCharManager> .Instance.SetChar(nEW_MAKECHAR_INFO, false, false); NrCharBase charByCharUnique = NrTSingleton <NkCharManager> .Instance.GetCharByCharUnique(nEW_MAKECHAR_INFO.CharUnique); if (charByCharUnique != null) { if (charByCharUnique.IsHaveAnimation(eCharAnimationType.TalkStart1)) { charByCharUnique.SetAnimationLoadAfter(eCharAnimationType.TalkStart1); } else if (charByCharUnique.IsHaveAnimation(eCharAnimationType.TalkStay1)) { charByCharUnique.SetAnimationLoadAfter(eCharAnimationType.TalkStay1); } else { charByCharUnique.SetAnimationLoadAfter(eCharAnimationType.Stay1); } } return(charByCharUnique); }