1539 lines
No EOL
141 KiB
C++
1539 lines
No EOL
141 KiB
C++
#include "StdAfx.h"
|
||
#include "DNGMCommand.h"
|
||
#include "DNCheatCommand.h"
|
||
#include "DNUserSendManager.h"
|
||
#include "DNUserQuest.h"
|
||
#include "DNGameDataManager.h"
|
||
#include "DNLogConnection.h"
|
||
#include "DNUserSession.h"
|
||
|
||
|
||
|
||
#if defined(_VILLAGESERVER)
|
||
|
||
#include "DNMasterConnection.h"
|
||
#include "DNFieldDataManager.h"
|
||
#include "DNScriptAPI.h"
|
||
#include "DNPartyManager.h"
|
||
#include "DNUserSessionManager.h"
|
||
#include "DNField.h"
|
||
#include "DNAuthManager.h"
|
||
#include "DNCountryUnicodeSet.h"
|
||
#include "DNGuildVillage.h"
|
||
|
||
extern TVillageConfig g_Config;
|
||
|
||
#elif defined(_GAMESERVER)
|
||
|
||
#include "DNGameRoom.h"
|
||
#include "DNActor.h"
|
||
#include "TaskManager.h"
|
||
#include "DnItemTask.h"
|
||
#include "DnDropItem.h"
|
||
#include "EtActionCoreMng.h"
|
||
#include "DNGameServerScriptApi.h"
|
||
#include "DnGameTask.h"
|
||
#include "DNMasterConnection.h"
|
||
#include "DNMasterConnectionManager.h"
|
||
#include "PvPRespawnLogic.h"
|
||
#include "DnPlayerActor.h"
|
||
|
||
#if defined( PRE_WORLDCOMBINE_PVP )
|
||
#include "PvPGameMode.h"
|
||
#endif
|
||
#endif
|
||
|
||
enum eGMCommandType
|
||
{
|
||
GM_Help = 0,
|
||
#if defined(_CH)
|
||
GM_HideOn, // 숨기
|
||
GM_HideOff, // 나타남
|
||
GM_ChangeMap, // 맵이동
|
||
GM_Trace, // 유저 추적
|
||
GM_Warp,
|
||
GM_Trace_AID, // 어카운트아이디로 유저 추적
|
||
GM_Trace_CID, // 캐릭터아이디로 유저 추적
|
||
GM_Recall, // 유저 소환
|
||
GM_UserBan, // 유저 끊기
|
||
GM_Fatigue,
|
||
GM_HP,
|
||
GM_WEventClear, // 주말이벤트 클리어
|
||
|
||
#elif defined (_US)
|
||
GM_HideOn,
|
||
GM_HideOff,
|
||
GM_ChangeMap,
|
||
GM_Trace,
|
||
GM_UserBan,
|
||
GM_SummonMob,
|
||
GM_AllKillMob,
|
||
GM_ZoneNotice,
|
||
GM_HP,
|
||
GM_SetLevel,
|
||
GM_MakeItem,
|
||
GM_Recall,
|
||
GM_Notice,
|
||
GM_MakeCoin,
|
||
GM_WhisperOn, // 귓속말시작
|
||
GM_WhisperOff, // 귓속말종료
|
||
GM_Warp,
|
||
#elif defined (_SG) || defined (_TH)
|
||
GM_Notice,
|
||
GM_WhisperOn,
|
||
GM_WhisperOff,
|
||
GM_HideOn,
|
||
GM_HideOff,
|
||
GM_SummonMob,
|
||
GM_AllKillMob,
|
||
GM_MakeItem,
|
||
GM_MakeCoin,
|
||
GM_SetLevel,
|
||
GM_ChangeMap,
|
||
GM_SetQuest,
|
||
GM_ZoneNotice,
|
||
GM_Trace,
|
||
GM_Warp,
|
||
GM_Trace_AID,
|
||
GM_Trace_CID,
|
||
GM_Recall,
|
||
GM_UserBan,
|
||
GM_Fatigue,
|
||
GM_DestroyPvP,
|
||
GM_RepairAll,
|
||
GM_GCreate,
|
||
GM_GDismiss,
|
||
#elif defined (_ID)
|
||
GM_Notice,
|
||
GM_WhisperOn,
|
||
GM_WhisperOff,
|
||
GM_HideOn,
|
||
GM_HideOff,
|
||
GM_SummonMob,
|
||
GM_AllKillMob,
|
||
GM_MakeItem,
|
||
GM_MakeCoin,
|
||
GM_SetLevel,
|
||
GM_ChangeMap,
|
||
GM_SetQuest,
|
||
GM_ZoneNotice,
|
||
GM_Trace,
|
||
GM_Warp,
|
||
GM_Trace_AID,
|
||
GM_Trace_CID,
|
||
GM_Recall,
|
||
GM_UserBan,
|
||
GM_Fatigue,
|
||
GM_DestroyPvP,
|
||
#elif defined (_EU)
|
||
GM_Notice,
|
||
GM_WhisperOn, // 귓속말시작
|
||
GM_WhisperOff, // 귓속말종료
|
||
GM_HideOn, // 숨기
|
||
GM_HideOff, // 나타남
|
||
GM_SummonMob, // 몹소환
|
||
GM_AllKillMob, // 몹소멸
|
||
GM_MakeItem, // 아이템생성
|
||
GM_MakeCoin, // 금전생성
|
||
GM_SetLevel, // 레벨
|
||
GM_ChangeMap, // 맵이동
|
||
GM_SetQuest, // 퀘스트상태
|
||
GM_ZoneNotice, // gm이 있는 존의 모든 채널에 공지
|
||
GM_Trace, // 유저 추적
|
||
GM_Warp,
|
||
GM_Trace_AID, // 어카운트아이디로 유저 추적
|
||
GM_Trace_CID, // 캐릭터아이디로 유저 추적
|
||
GM_Recall, // 유저 소환
|
||
GM_UserBan, // 유저 끊기
|
||
GM_Fatigue,
|
||
GM_DestroyPvP, // 강제 피뷔피룸파괴
|
||
#else
|
||
GM_Notice,
|
||
GM_WhisperOn, // 귓속말시작
|
||
GM_WhisperOff, // 귓속말종료
|
||
GM_HideOn, // 숨기
|
||
GM_HideOff, // 나타남
|
||
GM_SummonMob, // 몹소환
|
||
GM_AllKillMob, // 몹소멸
|
||
GM_MakeItem, // 아이템생성
|
||
GM_MakeCoin, // 금전생성
|
||
GM_SetLevel, // 레벨
|
||
GM_ChangeMap, // 맵이동
|
||
GM_SetQuest, // 퀘스트상태
|
||
GM_ZoneNotice, // gm이 있는 존의 모든 채널에 공지
|
||
GM_Trace, // 유저 추적
|
||
GM_Warp,
|
||
GM_Trace_AID, // 어카운트아이디로 유저 추적
|
||
GM_Trace_CID, // 캐릭터아이디로 유저 추적
|
||
GM_Recall, // 유저 소환
|
||
GM_UserBan, // 유저 끊기
|
||
GM_Fatigue,
|
||
GM_DestroyPvP, // 강제 피뷔피룸파괴
|
||
GM_WEventClear, // 주말이벤트 클리어
|
||
#if defined( PRE_WORLDCOMBINE_PVP )
|
||
GM_WORLDPVPROOMALLKILLREDTEAM, // 월드통합전장 올킬전 팀셋팅
|
||
GM_WORLDPVPROOMALLKILLBLUETEAM,
|
||
GM_WORLDPVPROOMTOURNAMENTSETTING, // 월드통합전장 토너먼트 셋팅
|
||
#endif
|
||
#if defined( PRE_ADD_MUTE_USERCHATTING )
|
||
GM_MuteUser, // [JPN]유저 체팅 금지
|
||
#endif // #if defined( PRE_ADD_MUTE_USERCHATTING )
|
||
#endif
|
||
GM_END
|
||
};
|
||
|
||
__GMCmdLineDefineStruct g_GMCmdList[] =
|
||
{
|
||
{ GM_Help, _T("/?"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("운영자명령어도움말"), _T("Help") },
|
||
#if defined(_CH)
|
||
{ GM_HideOn, _T("/hideon"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideon"), _T("Hide On") },
|
||
{ GM_HideOff, _T("/hideoff"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideoff"), _T("Hide Off") },
|
||
{ GM_ChangeMap, _T("/go"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/go (MapID) (0-4 : 쉬움, 보통, 어려움, 마스터, 어비스)"), _T("/go (MapID) (0-4 : Easy, Normal, Hard, Master, Abyss)")},
|
||
{ GM_Trace, _T("/trace"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace 캐릭터이름),설명(입력한 캐릭터이름의 던젼에 난입한다.)"), _T("Usage(/trace CharacterName), Description(Trace character's dungeon)") },
|
||
{ GM_Warp, _T("/warp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/warp 캐릭터이름),설명(입력한 캐릭터이름의 위치로 이동한다.게임서버에서만 사용가능)"), _T("/wapr CharacterName), (Move Character in Only GameServer)") },
|
||
{ GM_Trace_AID, _T("/trace_aid"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_aid 어카운트디비다이디),설명(입력한 어카운트아이디의 던젼에 난입한다.)"), _T("/trace_aid AccountDBID) - (Trace AccountDBID's position)") },
|
||
{ GM_Trace_CID, _T("/trace_cid"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_cid 캐릭터디비아이디),설명(입력한 캐릭터디비아이디의 던젼에 난입한다.)"), _T("/trace_cid CharacterDBID) - (Trace CharacterDBID's position)") },
|
||
{ GM_Recall, _T("/recall"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/recall 캐릭터이름),설명(입력한 캐릭터를 GM마을로 소환합니다."), _T("Usage(/recall CharacterName), Description(Recall character to GM Village") },
|
||
{ GM_UserBan, _T("/userban"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/userban 캐릭터이름),설명(입력한 캐릭터를 접속종료시킨다."), _T("/userban CharacterName)")},
|
||
{ GM_Fatigue, _T("/fatigue"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/fatigue"), _T("/fatigue")},
|
||
{ GM_HP, _T("/hp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hp (1 - 100)"), _T("/hp (1 - 100)") },
|
||
{ GM_WEventClear, _T("/clearevent"), CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/clearevent"), _T("/clearevent") },
|
||
|
||
#elif defined (_US)
|
||
{ GM_HideOn, _T("/hideon"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideon"), _T("Hide On") },
|
||
{ GM_HideOff, _T("/hideoff"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideoff"), _T("Hide Off") },
|
||
{ GM_ChangeMap, _T("/go"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/go (MapID) (0-4 : 쉬움, 보통, 어려움, 마스터, 어비스)"), _T("/go (MapID) (0-4 : Easy, Normal, Hard, Master, Abyss)")},
|
||
{ GM_Trace, _T("/trace"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace 캐릭터이름),설명(입력한 캐릭터이름의 던젼에 난입한다.)"), _T("Usage(/trace CharacterName), Description(Trace character's dungeon)") },
|
||
{ GM_UserBan, _T("/userban"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/userban 캐릭터이름),설명(입력한 캐릭터를 접속종료시킨다."), _T("/userban CharacterName)")},
|
||
{ GM_SummonMob, _T("/summonmob"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/summonmob (MonsterID) (MonsterCount)"), _T("/summonmob (MonsterID) (MonsterCount)") },
|
||
{ GM_AllKillMob, _T("/allkillmon"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/allkillmon"), _T("/allkillmon") },
|
||
{ GM_ZoneNotice, _T("/zone"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/zone (Notice)"), _T("/zone (Notice)") },
|
||
{ GM_HP, _T("/hp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hp (1 - 100)"), _T("/hp (1 - 100)") },
|
||
{ GM_SetLevel, _T("/setlevel"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setlevel (Level)"), _T("/setlevel (Level)") },
|
||
{ GM_MakeItem, _T("/makeitem"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/makeitem (ItemIndex) (Count) (Enchant) (Potential) (Cash Period)"), _T("/makeitem (ItemIndex) (Count) (Enchant) (Potential) (Cash Period)") },
|
||
{ GM_Recall, _T("/recall"), CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/recall (CharacterName)"), _T("/recall (CharacterName)") },
|
||
{ GM_Notice, _T("/notice"), CmdAuth_Master|CmdAuth_QA, _T("/notice (Notice)"), _T("/notice (Notice)") },
|
||
{ GM_MakeCoin, _T("/makecoin"), CmdAuth_Master|CmdAuth_QA, _T("/makecoin (Coin)"), _T("/makecoin (Coin)") },
|
||
{ GM_WhisperOn, _T("/w_on"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_on (CharacterName)"), _T("/w_on (CharacterName) - Whispser On") },
|
||
{ GM_WhisperOff, _T("/w_off"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_off (CharacterName)"), _T("/w_off (CharacterName) - Whisper Off") },
|
||
{ GM_Warp, _T("/warp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/warp 캐릭터이름),설명(입력한 캐릭터이름의 위치로 이동한다.게임서버에서만 사용가능)"), _T("/wapr CharacterName), (Move Character in Only GameServer)") },
|
||
#elif defined (_SG)
|
||
{ GM_Notice, _T("/notice"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/notice (Notice)"), _T("/notice (Notice)") },
|
||
{ GM_WhisperOn, _T("/w_on"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_on (CharacterName)"), _T("/w_on (CharacterName) - Whispser On") },
|
||
{ GM_WhisperOff, _T("/w_off"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_off (CharacterName)"), _T("/w_off (CharacterName) - Whisper Off") },
|
||
{ GM_HideOn, _T("/hideon"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideon"), _T("/hideon") },
|
||
{ GM_HideOff, _T("/hideoff"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideoff"), _T("/hideoff") },
|
||
{ GM_SummonMob, _T("/summonmob"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/summonmob (MonsterID) (MonsterCount)"), _T("/summonmob (MonsterID) (MonsterCount)") },
|
||
{ GM_AllKillMob, _T("/allkillmon"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/allkillmon"), _T("/allkillmon") },
|
||
{ GM_MakeItem, _T("/makeitem"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/makeitem (아이템인덱스) (아이템개수) (강화) (잠재력) (캐쉬템일때 기간)"), _T("/makeitem (ItemIndex) (Count) (Enchant) (Potential) (Cash Period)") },
|
||
{ GM_MakeCoin, _T("/makecoin"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/makecoin (Coin)"), _T("/makecoin (Coin)") },
|
||
{ GM_SetLevel, _T("/setlevel"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setlevel (Level)"), _T("/setlevel (Level)") },
|
||
{ GM_ChangeMap, _T("/go"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/go (MapID) (0-4 : 쉬움, 보통, 어려움, 마스터, 어비스)"), _T("/go (MapID) (0-4 : Easy, Normal, Hard, Master, Abyss)") },
|
||
{ GM_SetQuest, _T("/setquest"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setquest (QuestID) (0: 미완료, 1: 완료)"), _T("/setquest (QuestID) (0: Not Yet, 1:Complete)") },
|
||
{ GM_ZoneNotice, _T("/zone"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/zone (Notice)"), _T("/zone (Notice)") },
|
||
{ GM_Trace, _T("/trace"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("사용법(/trace 캐릭터이름),설명(입력한 캐릭터이름의 던젼에 난입한다.)"), _T("Usage(/trace CharacterName), Description(Trace character's dungeon)") },
|
||
{ GM_Warp, _T("/warp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/warp 캐릭터이름),설명(입력한 캐릭터이름의 위치로 이동한다.게임서버에서만 사용가능)") },
|
||
{ GM_Trace_AID, _T("/trace_aid"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_aid 어카운트디비다이디),설명(입력한 어카운트아이디의 던젼에 난입한다.)"), _T("/trace_aid AccountDBID) - (Trace AccountDBID's position)") },
|
||
{ GM_Trace_CID, _T("/trace_cid"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_cid 캐릭터디비아이디),설명(입력한 캐릭터디비아이디의 던젼에 난입한다.)"), _T("/trace_cid CharacterDBID) - (Trace CharacterDBID's position)") },
|
||
{ GM_Recall, _T("/recall"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("사용법(/recall 캐릭터이름),설명(입력한 캐릭터를 GM마을로 소환합니다."), _T("Usage(/recall CharacterName), Description(Recall character to GM Village") },
|
||
{ GM_UserBan, _T("/userban"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/userban 캐릭터이름),설명(입력한 캐릭터를 접속종료시킨다."), _T("/userban CharacterName)") },
|
||
{ GM_Fatigue, _T("/fatigue"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/fatigue"), _T("/fatigue") },
|
||
{ GM_DestroyPvP, _T("/destroypvp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/destroypvp"), _T("/destroypvp(PvP인덱스)(강제로 이기게할 길드이름)") },
|
||
{ GM_RepairAll, _T("/repairall"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/repairall), 설명(모든아이템을 수리합니다.)"), _T("Usage(/repairall), Description(Repaire all items your character has)") },
|
||
{ GM_GCreate, _T("/gcreate"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/gcreate 길드이름), 설명(길드 창설)"), _T("Usage(/gcreate GuildName), Description(Create Guild)") },
|
||
{ GM_GDismiss, _T("/gdismiss"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/gdismiss), 설명(길드 해산)"), _T("Usage(/gdismiss), Description(Dismiss Guild)") },
|
||
#elif defined (_TH)
|
||
{ GM_Notice, _T("/notice"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/notice (Notice)"), _T("/notice (Notice)") },
|
||
{ GM_WhisperOn, _T("/w_on"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_on (CharacterName)"), _T("/w_on (CharacterName) - Whispser On") },
|
||
{ GM_WhisperOff, _T("/w_off"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_off (CharacterName)"), _T("/w_off (CharacterName) - Whisper Off") },
|
||
{ GM_HideOn, _T("/hideon"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideon"), _T("/hideon") },
|
||
{ GM_HideOff, _T("/hideoff"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideoff"), _T("/hideoff") },
|
||
{ GM_SummonMob, _T("/summonmob"), CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/summonmob (MonsterID) (MonsterCount)"), _T("/summonmob (MonsterID) (MonsterCount)") },
|
||
{ GM_AllKillMob, _T("/allkillmon"), CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/allkillmon"), _T("/allkillmon") },
|
||
{ GM_MakeItem, _T("/makeitem"), CmdAuth_Master|CmdAuth_QA, _T("/makeitem (아이템인덱스) (아이템개수) (강화) (잠재력) (캐쉬템일때 기간)"), _T("/makeitem (ItemIndex) (Count) (Enchant) (Potential) (Cash Period)") },
|
||
{ GM_MakeCoin, _T("/makecoin"), CmdAuth_Master|CmdAuth_QA, _T("/makecoin (Coin)"), _T("/makecoin (Coin)") },
|
||
{ GM_SetLevel, _T("/setlevel"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setlevel (Level)"), _T("/setlevel (Level)") },
|
||
{ GM_ChangeMap, _T("/go"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/go (MapID) (0-4 : 쉬움, 보통, 어려움, 마스터, 어비스)"), _T("/go (MapID) (0-4 : Easy, Normal, Hard, Master, Abyss)") },
|
||
{ GM_SetQuest, _T("/setquest"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setquest (QuestID) (0: 미완료, 1: 완료)"), _T("/setquest (QuestID) (0: Not Yet, 1:Complete)") },
|
||
{ GM_ZoneNotice, _T("/zone"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/zone (Notice)"), _T("/zone (Notice)") },
|
||
{ GM_Trace, _T("/trace"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("사용법(/trace 캐릭터이름),설명(입력한 캐릭터이름의 던젼에 난입한다.)"), _T("Usage(/trace CharacterName), Description(Trace character's dungeon)") },
|
||
{ GM_Warp, _T("/warp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/warp 캐릭터이름),설명(입력한 캐릭터이름의 위치로 이동한다.게임서버에서만 사용가능)") },
|
||
{ GM_Trace_AID, _T("/trace_aid"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_aid 어카운트디비다이디),설명(입력한 어카운트아이디의 던젼에 난입한다.)"), _T("/trace_aid AccountDBID) - (Trace AccountDBID's position)") },
|
||
{ GM_Trace_CID, _T("/trace_cid"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_cid 캐릭터디비아이디),설명(입력한 캐릭터디비아이디의 던젼에 난입한다.)"), _T("/trace_cid CharacterDBID) - (Trace CharacterDBID's position)") },
|
||
{ GM_Recall, _T("/recall"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("사용법(/recall 캐릭터이름),설명(입력한 캐릭터를 GM마을로 소환합니다."), _T("Usage(/recall CharacterName), Description(Recall character to GM Village") },
|
||
{ GM_UserBan, _T("/userban"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/userban 캐릭터이름),설명(입력한 캐릭터를 접속종료시킨다."), _T("/userban CharacterName)") },
|
||
{ GM_Fatigue, _T("/fatigue"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/fatigue"), _T("/fatigue") },
|
||
{ GM_DestroyPvP, _T("/destroypvp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/destroypvp"), _T("/destroypvp(PvP인덱스)(강제로 이기게할 길드이름)") },
|
||
{ GM_RepairAll, _T("/repairall"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/repairall), 설명(모든아이템을 수리합니다.)"), _T("Usage(/repairall), Description(Repaire all items your character has)") },
|
||
{ GM_GCreate, _T("/gcreate"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/gcreate 길드이름), 설명(길드 창설)"), _T("Usage(/gcreate GuildName), Description(Create Guild)") },
|
||
{ GM_GDismiss, _T("/gdismiss"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/gdismiss), 설명(길드 해산)"), _T("Usage(/gdismiss), Description(Dismiss Guild)") },
|
||
#elif defined (_ID)
|
||
{ GM_Notice, _T("/notice"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/notice (Notice)"), _T("/notice (Notice)") },
|
||
{ GM_WhisperOn, _T("/w_on"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_on (CharacterName)"), _T("/w_on (CharacterName) - Whispser On") },
|
||
{ GM_WhisperOff, _T("/w_off"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_off (CharacterName)"), _T("/w_off (CharacterName) - Whisper Off") },
|
||
{ GM_HideOn, _T("/hideon"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideon"), _T("/hideon") },
|
||
{ GM_HideOff, _T("/hideoff"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideoff"), _T("/hideoff") },
|
||
{ GM_SummonMob, _T("/summonmob"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/summonmob (MonsterID) (MonsterCount)"), _T("/summonmob (MonsterID) (MonsterCount)") },
|
||
{ GM_AllKillMob, _T("/allkillmon"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/allkillmon"), _T("/allkillmon") },
|
||
{ GM_MakeItem, _T("/makeitem"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/makeitem (아이템인덱스) (아이템개수) (강화) (잠재력) (캐쉬템일때 기간)"), _T("/makeitem (ItemIndex) (Count) (Enchant) (Potential) (Cash Period)") },
|
||
{ GM_MakeCoin, _T("/makecoin"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/makecoin (Coin)"), _T("/makecoin (Coin)") },
|
||
{ GM_SetLevel, _T("/setlevel"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setlevel (Level)"), _T("/setlevel (Level)") },
|
||
{ GM_ChangeMap, _T("/go"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/go (MapID) (0-4 : 쉬움, 보통, 어려움, 마스터, 어비스)"), _T("/go (MapID) (0-4 : Easy, Normal, Hard, Master, Abyss)") },
|
||
{ GM_SetQuest, _T("/setquest"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setquest (QuestID) (0: 미완료, 1: 완료)"), _T("/setquest (QuestID) (0: Not Yet, 1:Complete)") },
|
||
{ GM_ZoneNotice, _T("/zone"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/zone (Notice)"), _T("/zone (Notice)") },
|
||
{ GM_Trace, _T("/trace"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("사용법(/trace 캐릭터이름),설명(입력한 캐릭터이름의 던젼에 난입한다.)"), _T("Usage(/trace CharacterName), Description(Trace character's dungeon)") },
|
||
{ GM_Warp, _T("/warp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/warp 캐릭터이름),설명(입력한 캐릭터이름의 위치로 이동한다.게임서버에서만 사용가능)") },
|
||
{ GM_Trace_AID, _T("/trace_aid"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_aid 어카운트디비다이디),설명(입력한 어카운트아이디의 던젼에 난입한다.)"), _T("/trace_aid AccountDBID) - (Trace AccountDBID's position)") },
|
||
{ GM_Trace_CID, _T("/trace_cid"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_cid 캐릭터디비아이디),설명(입력한 캐릭터디비아이디의 던젼에 난입한다.)"), _T("/trace_cid CharacterDBID) - (Trace CharacterDBID's position)") },
|
||
{ GM_Recall, _T("/recall"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("사용법(/recall 캐릭터이름),설명(입력한 캐릭터를 GM마을로 소환합니다."), _T("Usage(/recall CharacterName), Description(Recall character to GM Village") },
|
||
{ GM_UserBan, _T("/userban"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/userban 캐릭터이름),설명(입력한 캐릭터를 접속종료시킨다."), _T("/userban CharacterName)") },
|
||
{ GM_Fatigue, _T("/fatigue"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/fatigue"), _T("/fatigue") },
|
||
{ GM_DestroyPvP, _T("/destroypvp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/destroypvp(PvP인덱스)(강제로 이기게할 길드이름)"), _T("/destroypvp(PvPIndex)(ForceWinGuildName)") },
|
||
#elif defined(_EU) //유럽에서는 CmdAuth_New는 RGM권한으로 사용합니다
|
||
{ GM_Notice, _T("/notice"), CmdAuth_Master|CmdAuth_QA, _T("/notice (Notice)"), _T("/notice (Notice)") },
|
||
{ GM_WhisperOn, _T("/w_on"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_on (CharacterName)"), _T("/w_on (CharacterName) - Whispser On") },
|
||
{ GM_WhisperOff, _T("/w_off"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_off (CharacterName)"), _T("/w_off (CharacterName) - Whisper Off") },
|
||
{ GM_HideOn, _T("/hideon"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideon"), _T("/hideon") },
|
||
{ GM_HideOff, _T("/hideoff"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideoff"), _T("/hideoff") },
|
||
{ GM_SummonMob, _T("/summonmob"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/summonmob (MonsterID) (MonsterCount)"), _T("/summonmob (MonsterID) (MonsterCount)") },
|
||
{ GM_AllKillMob, _T("/allkillmon"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/allkillmon"), _T("/allkillmon") },
|
||
{ GM_MakeItem, _T("/makeitem"), CmdAuth_Master|CmdAuth_QA, _T("/makeitem (아이템인덱스) (아이템개수) (강화) (잠재력) (캐쉬템일때 기간)"), _T("/makeitem (ItemIndex) (Count) (Enchant) (Potential) (Cash Period)") },
|
||
{ GM_MakeCoin, _T("/makecoin"), CmdAuth_Master|CmdAuth_QA, _T("/makecoin (Coin)"), _T("/makecoin (Coin)") },
|
||
{ GM_SetLevel, _T("/setlevel"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setlevel (Level)"), _T("/setlevel (Level)") },
|
||
{ GM_ChangeMap, _T("/go"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/go (MapID) (0-4 : 쉬움, 보통, 어려움, 마스터, 어비스)"), _T("/go (MapID) (0-4 : Easy, Normal, Hard, Master, Abyss)") },
|
||
{ GM_SetQuest, _T("/setquest"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setquest (QuestID) (0: 미완료, 1: 완료)"), _T("/setquest (QuestID) (0: Not Yet, 1:Complete)") },
|
||
{ GM_ZoneNotice, _T("/zone"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/zone (Notice)"), _T("/zone (Notice)") },
|
||
{ GM_Trace, _T("/trace"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("사용법(/trace 캐릭터이름),설명(입력한 캐릭터이름의 던젼에 난입한다.)"), _T("Usage(/trace CharacterName), Description(Trace character's dungeon)") },
|
||
{ GM_Warp, _T("/warp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/warp 캐릭터이름),설명(입력한 캐릭터이름의 위치로 이동한다.게임서버에서만 사용가능)") },
|
||
{ GM_Trace_AID, _T("/trace_aid"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_aid 어카운트디비다이디),설명(입력한 어카운트아이디의 던젼에 난입한다.)"), _T("/trace_aid AccountDBID) - (Trace AccountDBID's position)") },
|
||
{ GM_Trace_CID, _T("/trace_cid"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_cid 캐릭터디비아이디),설명(입력한 캐릭터디비아이디의 던젼에 난입한다.)"), _T("/trace_cid CharacterDBID) - (Trace CharacterDBID's position)") },
|
||
{ GM_Recall, _T("/recall"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("사용법(/recall 캐릭터이름),설명(입력한 캐릭터를 GM마을로 소환합니다."), _T("Usage(/recall CharacterName), Description(Recall character to GM Village") },
|
||
{ GM_UserBan, _T("/userban"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/userban 캐릭터이름),설명(입력한 캐릭터를 접속종료시킨다."), _T("/userban CharacterName)") },
|
||
{ GM_Fatigue, _T("/fatigue"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/fatigue"), _T("/fatigue") },
|
||
{ GM_DestroyPvP, _T("/destroypvp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/destroypvp(PvP인덱스)(강제로 이기게할 길드이름)"), _T("/destroypvp(PvPIndex)(ForceWinGuildName)") },
|
||
#else
|
||
{ GM_Notice, _T("/notice"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/notice (Notice)"), _T("/notice (Notice)") },
|
||
{ GM_WhisperOn, _T("/w_on"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_on (CharacterName)"), _T("/w_on (CharacterName) - Whispser On") },
|
||
{ GM_WhisperOff, _T("/w_off"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/w_off (CharacterName)"), _T("/w_off (CharacterName) - Whisper Off") },
|
||
{ GM_HideOn, _T("/hideon"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideon"), _T("/hideon") },
|
||
{ GM_HideOff, _T("/hideoff"), CmdAuth_Intern|CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/hideoff"), _T("/hideoff") },
|
||
{ GM_SummonMob, _T("/summonmob"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/summonmob (MonsterID) (MonsterCount)"), _T("/summonmob (MonsterID) (MonsterCount)") },
|
||
{ GM_AllKillMob, _T("/allkillmon"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/allkillmon"), _T("/allkillmon") },
|
||
{ GM_MakeItem, _T("/makeitem"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/makeitem (아이템인덱스) (아이템개수) (강화) (잠재력) (캐쉬템일때 기간)"), _T("/makeitem (ItemIndex) (Count) (Enchant) (Potential) (Cash Period)") },
|
||
|
||
{ GM_MakeCoin, _T("/makecoin"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/makecoin (Coin)"), _T("/makecoin (Coin)") },
|
||
{ GM_SetLevel, _T("/setlevel"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setlevel (Level)"), _T("/setlevel (Level)") },
|
||
{ GM_ChangeMap, _T("/go"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/go (MapID) (0-4 : 쉬움, 보통, 어려움, 마스터, 어비스)"), _T("/go (MapID) (0-4 : Easy, Normal, Hard, Master, Abyss)") },
|
||
{ GM_SetQuest, _T("/setquest"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/setquest (QuestID) (0: 미완료, 1: 완료)"), _T("/setquest (QuestID) (0: Not Yet, 1:Complete)") },
|
||
{ GM_ZoneNotice, _T("/zone"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/zone (Notice)"), _T("/zone (Notice)") },
|
||
{ GM_Trace, _T("/trace"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("사용법(/trace 캐릭터이름),설명(입력한 캐릭터이름의 던젼에 난입한다.)"), _T("Usage(/trace CharacterName), Description(Trace character's dungeon)") },
|
||
{ GM_Warp, _T("/warp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/warp 캐릭터이름),설명(입력한 캐릭터이름의 위치로 이동한다.게임서버에서만 사용가능)") },
|
||
{ GM_Trace_AID, _T("/trace_aid"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_aid 어카운트디비다이디),설명(입력한 어카운트아이디의 던젼에 난입한다.)"), _T("/trace_aid AccountDBID) - (Trace AccountDBID's position)") },
|
||
{ GM_Trace_CID, _T("/trace_cid"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/trace_cid 캐릭터디비아이디),설명(입력한 캐릭터디비아이디의 던젼에 난입한다.)"), _T("/trace_cid CharacterDBID) - (Trace CharacterDBID's position)") },
|
||
{ GM_Recall, _T("/recall"), CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("사용법(/recall 캐릭터이름),설명(입력한 캐릭터를 GM마을로 소환합니다."), _T("Usage(/recall CharacterName), Description(Recall character to GM Village") },
|
||
{ GM_UserBan, _T("/userban"), CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/userban 캐릭터이름),설명(입력한 캐릭터를 접속종료시킨다."), _T("/userban CharacterName)") },
|
||
{ GM_Fatigue, _T("/fatigue"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("/fatigue"), _T("/fatigue") },
|
||
{ GM_DestroyPvP, _T("/destroypvp"), CmdAuth_New|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/destroypvp(PvP인덱스)(강제로 이기게할 길드이름)"), _T("/destroypvp(PvPIndex)(ForceWinGuildName)") },
|
||
{ GM_WEventClear, _T("/clearevent"), CmdAuth_Master|CmdAuth_QA|CmdAuth_Developer, _T("/clearevent"), _T("/clearevent") },
|
||
#if defined( PRE_WORLDCOMBINE_PVP )
|
||
{ GM_WORLDPVPROOMALLKILLREDTEAM, _T("/teamred"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/TeamRed 캐릭터명),설명(입력한 캐릭터를 팀에 합류시킨다."), _T("/TeamRed CharacterName...)") },
|
||
{ GM_WORLDPVPROOMALLKILLBLUETEAM, _T("/teamblue"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/Teamblue 캐릭터명),설명(입력한 캐릭터를 팀에 합류시킨다."), _T("/Teamblue CharacterName...)") },
|
||
{ GM_WORLDPVPROOMTOURNAMENTSETTING, _T("/tournament"), CmdAuth_New|CmdAuth_Intern|CmdAuth_Monitoring|CmdAuth_Master|CmdAuth_QA, _T("사용법(/tournament 경기번호 캐릭터명),설명(입력한 캐릭터를 팀에 합류시킨다."), _T("/tournament 1 CharacterName...)") },
|
||
#endif
|
||
#if defined( PRE_ADD_MUTE_USERCHATTING )
|
||
{ GM_MuteUser, _T("/mute"), CmdAuth_Master|CmdAuth_QA, _T("사용법(/mute 캐릭터명 시간),설명(입력한 캐릭터를 지정된 시간동안 침묵시킨다)"), _T("/mute CharacterName Mutetime") }, // [JPN]유저 체팅 금지
|
||
#endif // #if defined( PRE_ADD_MUTE_USERCHATTING )
|
||
#endif // _CH
|
||
};
|
||
|
||
CDNGMCommand::CDNGMCommand(CDNUserSession *pSession): m_pSession(pSession)
|
||
{
|
||
BOOST_STATIC_ASSERT( GM_END == _countof(g_GMCmdList) );
|
||
m_VecWhisperName.clear();
|
||
}
|
||
|
||
CDNGMCommand::~CDNGMCommand()
|
||
{
|
||
|
||
}
|
||
|
||
void CDNGMCommand::AddWhisperName(wstring wstrName)
|
||
{
|
||
if (wstrName.size() == 0) return;
|
||
if (IsWhisperName(wstrName.c_str())) return; // 이미 있다
|
||
|
||
#if defined(_VILLAGESERVER)
|
||
CDNUserSession *pUserObj = g_pUserSessionManager->FindUserSessionByName(wstrName.c_str());
|
||
if (!pUserObj) return;
|
||
#elif defined(_GAMESERVER)
|
||
|
||
#endif
|
||
m_VecWhisperName.push_back(wstrName.c_str());
|
||
}
|
||
|
||
void CDNGMCommand::DelWhisperName(wstring wstrName)
|
||
{
|
||
if (m_VecWhisperName.empty()) return;
|
||
|
||
VecWString::iterator iter = find(m_VecWhisperName.begin(), m_VecWhisperName.end(), wstrName.c_str());
|
||
if (iter != m_VecWhisperName.end())
|
||
m_VecWhisperName.erase(iter);
|
||
}
|
||
|
||
bool CDNGMCommand::IsWhisperName(wstring wstrName)
|
||
{
|
||
if (m_VecWhisperName.empty()) return false;
|
||
|
||
VecWString::iterator iter = find(m_VecWhisperName.begin(), m_VecWhisperName.end(), wstrName.c_str());
|
||
if (iter != m_VecWhisperName.end()) return true;
|
||
|
||
return false;
|
||
}
|
||
|
||
|
||
bool CDNGMCommand::GMCommand(wstring& wszCommand)
|
||
{
|
||
if ( wszCommand.find(L"/") != 0 ) return false;
|
||
|
||
wstring szResultMsg;
|
||
VecWString tokens;
|
||
|
||
TokenizeW(wszCommand, tokens, L" ");
|
||
ToLowerW(tokens[0]);
|
||
int nCount = sizeof(g_GMCmdList) / sizeof(__GMCmdLineDefineStruct);
|
||
|
||
for ( int i = 0 ; i < nCount; i++ )
|
||
{
|
||
if( wcscmp( tokens[0].c_str(), g_GMCmdList[i].szString ) == NULL )
|
||
{
|
||
if (!OnGMCommand(i, tokens)){
|
||
szResultMsg = L"Command param Error";
|
||
m_pSession->SendChat(CHATTYPE_SYSTEM, (int)szResultMsg.size()*sizeof(WCHAR), m_pSession->GetCharacterName(), (WCHAR*)szResultMsg.c_str());
|
||
}
|
||
|
||
return true;
|
||
}
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
bool CDNGMCommand::OnGMCommand(int nCmdID, VecWString& tokens)
|
||
{
|
||
wstring wStr;
|
||
|
||
// 권한 검사
|
||
|
||
int nCheckMask = 0;
|
||
switch( m_pSession->GetAccountLevel() )
|
||
{
|
||
case AccountLevel_New : nCheckMask = CmdAuth_New; break;
|
||
case AccountLevel_Intern : nCheckMask = CmdAuth_Intern; break;
|
||
case AccountLevel_Monitoring : nCheckMask = CmdAuth_Monitoring; break;
|
||
case AccountLevel_Master : nCheckMask = CmdAuth_Master; break;
|
||
case AccountLevel_QA : nCheckMask = CmdAuth_QA; break;
|
||
case AccountLevel_Developer : nCheckMask = CmdAuth_Developer; break;
|
||
}
|
||
if ( !(nCheckMask & g_GMCmdList[nCmdID].nAccountLevel) )
|
||
{
|
||
wStr = FormatW( L"Do not have permission");
|
||
m_pSession->SendChat(CHATTYPE_SYSTEM, (int)wStr.size()*sizeof(WCHAR), m_pSession->GetCharacterName(), (WCHAR*)wStr.c_str());
|
||
return true;
|
||
}
|
||
|
||
switch( nCmdID )
|
||
{
|
||
case GM_Help:
|
||
{
|
||
for ( int i = 0 ; i < GM_END ; i++ )
|
||
{
|
||
#if defined (_KR) || defined(_KRAZ) || defined (_WORK)
|
||
wStr = FormatW( L"[%s] - %s", g_GMCmdList[i].szString, g_GMCmdList[i].szComment);
|
||
#else
|
||
wStr = FormatW( L"[%s] - %s", g_GMCmdList[i].szString, g_GMCmdList[i].szCommentEn);
|
||
#endif
|
||
m_pSession->SendChat(CHATTYPE_SYSTEM, (int)wStr.size()*sizeof(WCHAR), m_pSession->GetCharacterName(), (WCHAR*)wStr.c_str());
|
||
}
|
||
}
|
||
break;
|
||
#if defined(_CH)
|
||
case GM_HideOn: return CmdHide(tokens, true);
|
||
case GM_HideOff: return CmdHide(tokens, false);
|
||
case GM_ChangeMap: return CmdChangeMap(tokens); // 맵이동
|
||
case GM_Trace: return CmdTrace(TRACE_CHARACTERNAME, tokens );
|
||
case GM_Trace_AID: return CmdTrace(TRACE_ACCOUNTDBID, tokens );
|
||
case GM_Trace_CID: return CmdTrace(TRACE_CHRACTERDBID, tokens );
|
||
case GM_Warp: return CmdWarp( tokens );
|
||
case GM_Recall: return CmdRecall( tokens );
|
||
case GM_UserBan: return CmdBanUser(tokens);
|
||
case GM_Fatigue: return CmdFatigue(tokens);
|
||
case GM_HP: return CmdHp(tokens);
|
||
case GM_WEventClear: return CmdWeeklyEventClear();
|
||
|
||
#elif defined (_US)
|
||
case GM_HideOn: return CmdHide(tokens, true);
|
||
case GM_HideOff: return CmdHide(tokens, false);
|
||
case GM_ChangeMap: return CmdChangeMap(tokens);
|
||
case GM_Trace: return CmdTrace(TRACE_CHARACTERNAME, tokens );
|
||
case GM_UserBan: return CmdBanUser(tokens);
|
||
case GM_SummonMob: return CmdSummonMob(tokens);
|
||
case GM_AllKillMob: return CmdAllkillMob(tokens);
|
||
case GM_ZoneNotice: return CmdZoneNotice(tokens);
|
||
case GM_HP: return CmdHp(tokens);
|
||
case GM_SetLevel: return CmdSetLevel(tokens); // 레벨
|
||
case GM_MakeItem: return CmdMakeItem(tokens);
|
||
case GM_Recall: return CmdRecall( tokens );
|
||
case GM_Notice: return CmdNotice(tokens);
|
||
case GM_MakeCoin: return CmdMakeCoin(tokens); // 금전생성
|
||
case GM_WhisperOn: return CmdWhisper(tokens, true);
|
||
case GM_WhisperOff: return CmdWhisper(tokens, false);
|
||
case GM_Warp: return CmdWarp( tokens );
|
||
#elif defined( _SG ) || defined (_TH)
|
||
case GM_Notice: return CmdNotice(tokens);
|
||
case GM_WhisperOn: return CmdWhisper(tokens, true);
|
||
case GM_WhisperOff: return CmdWhisper(tokens, false);
|
||
case GM_HideOn: return CmdHide(tokens, true);
|
||
case GM_HideOff: return CmdHide(tokens, false);
|
||
case GM_SummonMob: return CmdSummonMob(tokens);
|
||
case GM_AllKillMob: return CmdAllkillMob(tokens);
|
||
case GM_MakeItem: return CmdMakeItem(tokens);
|
||
case GM_MakeCoin: return CmdMakeCoin(tokens); // 금전생성
|
||
case GM_SetLevel: return CmdSetLevel(tokens); // 레벨
|
||
case GM_ChangeMap: return CmdChangeMap(tokens); // 맵이동
|
||
case GM_SetQuest: return CmdSetQuest(tokens); // 퀘스트상태
|
||
case GM_ZoneNotice: return CmdZoneNotice(tokens);
|
||
case GM_Trace: return CmdTrace(TRACE_CHARACTERNAME, tokens );
|
||
case GM_Trace_AID: return CmdTrace(TRACE_ACCOUNTDBID, tokens );
|
||
case GM_Trace_CID: return CmdTrace(TRACE_CHRACTERDBID, tokens );
|
||
case GM_Warp: return CmdWarp( tokens );
|
||
case GM_Recall: return CmdRecall( tokens );
|
||
case GM_UserBan: return CmdBanUser(tokens);
|
||
case GM_Fatigue: return CmdFatigue(tokens);
|
||
case GM_DestroyPvP: return CmdDestroyPvP(tokens);
|
||
case GM_RepairAll: return CmdRepairAll(tokens);
|
||
case GM_GCreate: return CmdGCreate(tokens);
|
||
case GM_GDismiss: return CmdGDismiss(tokens);
|
||
#elif defined (_ID)
|
||
case GM_Notice: return CmdNotice(tokens);
|
||
case GM_WhisperOn: return CmdWhisper(tokens, true);
|
||
case GM_WhisperOff: return CmdWhisper(tokens, false);
|
||
case GM_HideOn: return CmdHide(tokens, true);
|
||
case GM_HideOff: return CmdHide(tokens, false);
|
||
case GM_SummonMob: return CmdSummonMob(tokens);
|
||
case GM_AllKillMob: return CmdAllkillMob(tokens);
|
||
case GM_MakeItem: return CmdMakeItem(tokens);
|
||
case GM_MakeCoin: return CmdMakeCoin(tokens); // 금전생성
|
||
case GM_SetLevel: return CmdSetLevel(tokens); // 레벨
|
||
case GM_ChangeMap: return CmdChangeMap(tokens); // 맵이동
|
||
case GM_SetQuest: return CmdSetQuest(tokens); // 퀘스트상태
|
||
case GM_ZoneNotice: return CmdZoneNotice(tokens);
|
||
case GM_Trace: return CmdTrace(TRACE_CHARACTERNAME, tokens );
|
||
case GM_Warp: return CmdWarp( tokens );
|
||
case GM_Trace_AID: return CmdTrace(TRACE_ACCOUNTDBID, tokens );
|
||
case GM_Trace_CID: return CmdTrace(TRACE_CHRACTERDBID, tokens );
|
||
case GM_Recall: return CmdRecall( tokens );
|
||
case GM_UserBan: return CmdBanUser(tokens);
|
||
case GM_Fatigue: return CmdFatigue(tokens);
|
||
case GM_DestroyPvP: return CmdDestroyPvP(tokens);
|
||
#else
|
||
case GM_Notice: return CmdNotice(tokens);
|
||
case GM_WhisperOn: return CmdWhisper(tokens, true);
|
||
case GM_WhisperOff: return CmdWhisper(tokens, false);
|
||
case GM_HideOn: return CmdHide(tokens, true);
|
||
case GM_HideOff: return CmdHide(tokens, false);
|
||
case GM_SummonMob: return CmdSummonMob(tokens);
|
||
case GM_AllKillMob: return CmdAllkillMob(tokens);
|
||
case GM_MakeItem: return CmdMakeItem(tokens);
|
||
case GM_MakeCoin: return CmdMakeCoin(tokens); // 금전생성
|
||
case GM_SetLevel: return CmdSetLevel(tokens); // 레벨
|
||
case GM_ChangeMap: return CmdChangeMap(tokens); // 맵이동
|
||
case GM_SetQuest: return CmdSetQuest(tokens); // 퀘스트상태
|
||
case GM_ZoneNotice: return CmdZoneNotice(tokens);
|
||
case GM_Trace: return CmdTrace(TRACE_CHARACTERNAME, tokens );
|
||
case GM_Trace_AID: return CmdTrace(TRACE_ACCOUNTDBID, tokens );
|
||
case GM_Trace_CID: return CmdTrace(TRACE_CHRACTERDBID, tokens );
|
||
case GM_Warp: return CmdWarp( tokens );
|
||
case GM_Recall: return CmdRecall( tokens );
|
||
case GM_UserBan: return CmdBanUser(tokens);
|
||
case GM_Fatigue: return CmdFatigue(tokens);
|
||
case GM_DestroyPvP: return CmdDestroyPvP(tokens);
|
||
case GM_WEventClear: return CmdWeeklyEventClear();
|
||
#if defined( PRE_WORLDCOMBINE_PVP )
|
||
case GM_WORLDPVPROOMALLKILLREDTEAM: return CmdWorldPvPRoomAllKillTeamSetting(PvPCommon::Team::B, tokens);
|
||
case GM_WORLDPVPROOMALLKILLBLUETEAM: return CmdWorldPvPRoomAllKillTeamSetting(PvPCommon::Team::A, tokens);
|
||
case GM_WORLDPVPROOMTOURNAMENTSETTING: return CmdWorldPvPRoomTournamentSetting(tokens);
|
||
#endif
|
||
#if defined( PRE_ADD_MUTE_USERCHATTING )
|
||
case GM_MuteUser: return CmdMuteUser(tokens);
|
||
#endif // #if defined( PRE_ADD_MUTE_USERCHATTING )
|
||
#endif // #if defined(_CH)
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
bool CDNGMCommand::CmdNotice(VecWString& tokens)
|
||
{
|
||
if (tokens.size() < 2) return false;
|
||
|
||
WCHAR szMsg[CHATLENMAX] = { 0, };
|
||
int nLen = 0;
|
||
for (int i = 1; i < (int)tokens.size(); i++)
|
||
{
|
||
int nTempLen = (int)wcslen(tokens[i].c_str());
|
||
if (nTempLen + nLen >= CHATLENMAX) return false;
|
||
_wcscpy(szMsg+nLen, CHATLENMAX-nLen, tokens[i].c_str(), nTempLen);
|
||
nLen += nTempLen;
|
||
szMsg[nLen++] = ' ';
|
||
}
|
||
if( nLen < CHATLENMAX )
|
||
szMsg[nLen] = '\0';
|
||
else
|
||
return false;
|
||
|
||
#if defined (_VILLAGESERVER)
|
||
g_pMasterConnection->SendNoticeFromClient(szMsg, nLen);
|
||
#elif defined (_GAMESERVER)
|
||
g_pMasterConnectionManager->SendNoticeFromClinet(szMsg, nLen);
|
||
#endif
|
||
return true;
|
||
}
|
||
|
||
bool CDNGMCommand::CmdWhisper(VecWString& tokens, bool bWhisper)
|
||
{
|
||
if (tokens.size() < 2) return false;
|
||
|
||
if (bWhisper){ // 귓속말 시작
|
||
AddWhisperName(tokens[1]);
|
||
}
|
||
else { // 귓속말 종료
|
||
DelWhisperName(tokens[1]);
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
bool CDNGMCommand::CmdHide(VecWString& tokens, bool bHide)
|
||
{
|
||
if (tokens.size() < 1) return false;
|
||
m_pSession->SetHide(bHide);
|
||
|
||
return true;
|
||
}
|
||
|
||
bool CDNGMCommand::CmdSummonMob(VecWString& tokens)
|
||
{
|
||
#if defined(_GAMESERVER)
|
||
if ( tokens.size() != 3 ) return false;
|
||
|
||
int nMonsterID = _ttoi(tokens[1].c_str());
|
||
int nCount = _ttoi(tokens[2].c_str());
|
||
|
||
CDNGameRoom *pGameRoom = m_pSession->GetGameRoom();
|
||
if (!pGameRoom) return false;
|
||
if (!pGameRoom->GetTaskMng()) return false;
|
||
|
||
CDnGameTask *pTask = (CDnGameTask *)pGameRoom->GetTaskMng()->GetTask( "GameTask" );
|
||
if (!pTask) return false;
|
||
|
||
EtVector3* pvPos = m_pSession->GetActorHandle()->GetPosition();
|
||
|
||
for ( int i = 0 ; i < nCount ; i++ )
|
||
{
|
||
pTask->RequestGenerationMonsterFromMonsterID( nMonsterID, *pvPos, EtVector3( 0.f, 0.f, 0.f ), EtVector3( 0.f, 0.f, 0.f ));
|
||
}
|
||
#endif
|
||
return true;
|
||
}
|
||
|
||
bool CDNGMCommand::CmdAllkillMob(VecWString& tokens)
|
||
{
|
||
#if defined(_GAMESERVER)
|
||
CDNGameRoom *pGameRoom = m_pSession->GetGameRoom();
|
||
if (!pGameRoom) return false;
|
||
if (!pGameRoom->GetTaskMng()) return false;
|
||
|
||
CDnGameTask *pTask = (CDnGameTask *)pGameRoom->GetTaskMng()->GetTask( "GameTask" );
|
||
if (!pTask) return false;
|
||
|
||
pTask->RequestDestroyAllMonster(false);
|
||
#endif
|
||
return true;
|
||
}
|
||
|
||
bool CDNGMCommand::CmdMakeItem(VecWString& tokens)
|
||
{
|
||
wstring wszString;
|
||
|
||
if ( tokens.size() < 2 ){
|
||
wszString = FormatW(L"파라미터를 제대로 확인해주세요!!!\r\n");
|
||
m_pSession->SendChat(CHATTYPE_NORMAL, (int)wszString.size()*sizeof(WCHAR), L"", (WCHAR*)wszString.c_str());
|
||
return false;
|
||
}
|
||
|
||
int nItemID = _wtoi(tokens[1].c_str());
|
||
|
||
int nCount = ( tokens.size() >= 3 ) ? _wtoi(tokens[2].c_str()) : 1;
|
||
if (nCount <= 0) nCount = 1;
|
||
|
||
TItemData *pItemData = g_pDataManager->GetItemData(nItemID);
|
||
if (!pItemData) return false;
|
||
|
||
if (pItemData->nType == ITEMTYPE_QUEST){
|
||
m_pSession->GetItem()->AddQuestInventory(nItemID, nCount, 0, DBDNWorldDef::AddMaterializedItem::Cheat);
|
||
return true;
|
||
}
|
||
|
||
int nItemLevel = ( tokens.size() >= 4 ) ? _wtoi(tokens[3].c_str()) : 0;
|
||
int nItemPotential = ( tokens.size() >= 5 ) ? _wtoi(tokens[4].c_str()) : 0;
|
||
int nItemOption = ( tokens.size() >= 6 ) ? _wtoi(tokens[5].c_str()) : 0;
|
||
|
||
if (pItemData->IsCash){
|
||
int nPeriod = ( tokens.size() >= 7 ) ? _wtoi(tokens[6].c_str()) : 0;
|
||
//if (nPeriod <= 0) nPeriod = 1;
|
||
|
||
m_pSession->GetItem()->CreateCashInvenItemByCheat(nItemID, nCount, nPeriod, DBDNWorldDef::AddMaterializedItem::Cheat);
|
||
return true;
|
||
}
|
||
|
||
#if defined(_VILLAGESERVER)
|
||
if ((nItemLevel > 0) || (nItemPotential > 0) || (nItemOption > 0))
|
||
{
|
||
TItem Item = { 0, };
|
||
if( CDNUserItem::MakeItemStruct(nItemID, Item) == false )
|
||
return false;
|
||
|
||
Item.wCount = nCount;
|
||
Item.cLevel = nItemLevel;
|
||
Item.cPotential = nItemPotential;
|
||
Item.cOption = nItemOption;
|
||
|
||
m_pSession->GetItem()->CreateInvenWholeItem(Item, DBDNWorldDef::AddMaterializedItem::Cheat, 0);
|
||
}
|
||
else
|
||
{
|
||
m_pSession->GetItem()->CreateInvenItem1( nItemID, nCount, -1, -1, DBDNWorldDef::AddMaterializedItem::Cheat, 0, CREATEINVEN_ETC );
|
||
}
|
||
|
||
#elif defined(_GAMESERVER)
|
||
|
||
if( !m_pSession || !m_pSession->GetActorHandle() ) return false;
|
||
CDNGameRoom *pRoom = m_pSession->GetGameRoom();
|
||
if (!pRoom) return false;
|
||
if (!pRoom->GetTaskMng()) return false;
|
||
|
||
CDnItemTask *pTask = (CDnItemTask *)pRoom->GetTaskMng()->GetTask( "ItemTask" );
|
||
if (!pTask) return false;
|
||
|
||
CMultiRoom *pMultiRoom = pTask->GetRoom();
|
||
pTask->RequestDropItem(STATIC_INSTANCE_(CDnDropItem::s_dwUniqueCount)++, *(m_pSession->GetActorHandle()->GetPosition()), nItemID, _rand(pMultiRoom), nCount, 0);
|
||
|
||
char cGrade = 0;
|
||
if (pItemData) cGrade = pItemData->cRank;
|
||
|
||
#endif
|
||
return true;
|
||
}
|
||
bool CDNGMCommand::Cmdhuanhua(VecWString& tokens)
|
||
{
|
||
|
||
wstring wszString;
|
||
|
||
if (tokens.size() < 2) {
|
||
wszString = FormatW(L"헝렴흙膠틔!!!!");
|
||
m_pSession->SendChat(CHATTYPE_NORMAL, (int)wszString.size() * sizeof(WCHAR), L"", (WCHAR*)wszString.c_str());
|
||
return false;
|
||
}
|
||
int nItemID = _wtoi(tokens[1].c_str());
|
||
|
||
if (m_pSession->GetItem()->GetInventoryItemCount(335545346) <= 1)
|
||
{
|
||
wszString = FormatW(L"離 |