/* ====================================================================
* 파    일 :	Protocol.h
* 목    적 :	
* 작 성 자 :	정성대
* 작 성 일 :	2006.08.29
*
* 추가내용 :
*		추가날짜	작업자	추가내용
*		2006.08.29	정성대	생성
*		2006.12.04	이웅주	NM_ITEM_PROTOCOL 추가
* 
* 주의사항 :	- category의 구분의 manager를 기준으로 한다...
*
*				_REQ - 클라이언트 요청 패킷. (user -> server)
*				_RES - 서버 답변 패킷. (server -> user) 
*				_SYN - 서버 동기화 패킷. (server -> user)
* =================================================================== */
#pragma once

#include "Protocol_Category.h"

/// mapserver에 들어가기전에 이루어지는 모든 메세지... 
enum NM_USER_PROTOCOL							/// before game stage
{
	/// LoginSrv Protocol
	NM_USER_LOGIN_REQ,							/// user -> loginsrv
	NM_USER_LOGIN_RES,							/// loginsrv -> user

	NM_USER_SERVER_LIST_REQ,					/// user -> loginsrv
	NM_USER_SERVER_LIST_RES,					/// loginsrv -> user
	NM_USER_SERVER_LIST_SYN,					/// loginsrv -> user

	NM_USER_COME_IN_GAME_REQ,					/// user  -> loginsrv
	NM_USER_COME_IN_GAME_RES,					/// loginsrv -> user

	/// GameSrv Protocol
	NM_USER_GAMESRV_REQ,						/// user -> gamesrv
	NM_USER_GAMESRV_RES,						/// gamesrv -> user

	NM_USER_CHANNEL_LIST_REQ,					/// user -> loginsrv
	NM_USER_CHANNEL_LIST_RES,					/// gamesrv -> user

	NM_USER_CHARACTER_LIST_REQ,					/// user -> gamesrv
	NM_USER_CHARACTER_LIST_RES,					/// gamesrv -> user

	NM_USER_CHARACTER_NAME_REQ,					/// user -> gamesrv
	NM_USER_CHARACTER_NAME_RES,					/// gamesrv -> user

	NM_USER_CHARACTER_CREATE_REQ,				/// user -> gamesrv
	NM_USER_CHARACTER_CREATE_RES,				/// gamesrv -> user

	NM_USER_CHARACTER_DELETE_REQ,				/// user -> gamesrv
	NM_USER_CHARACTER_DELETE_RES,				/// gamesrv -> user

	/// 캐릭터 선택 진입 준비
	NM_USER_CHARACTER_SELECT_REQ,				/// user -> gamesrv
	NM_USER_CHARACTER_SELECT_RES,				/// gamesrv -> user

	/// load stage에 필요한 데이터 요청.
	NM_USER_LOADDATA_REQ,

	/// Game Stage 진입
	NM_USER_GAMEIN_REQ,							/// user -> gamesrv
	NM_USER_GAMEIN_RES,							/// gamesrv -> user

	NM_USER_MAX,
};

enum NM_PLAYER_PROTOCOL
{
	// 게임종료..
	NM_PLAYER_DISCONNECT_REQ,
	NM_PLAYER_DISCONNECT_RES,
	NM_PLAYER_DISCONNECT_SYN,

	// 게임종료후 캐릭터 선택 이동.
	NM_PLAYER_GAMEOUT_REQ,
	NM_PLAYER_GAMEOUT_RES,

	//	NM_PLAYER_LIST_REQ = NM_USER_GAMEIN_REQ,
	NM_PLAYER_LIST_RES,
	NM_PLAYER_HEROINFO_RES,

	NM_PLAYER_GAMEIN_SYN,

	NM_PLAYER_MAPCHANGE_REQ,
	NM_PLAYER_MAPCHANGE_RES,	

	// 좌표로의 이동
	NM_PLAYER_MOVE_REQ,
	NM_PLAYER_MOVE_RES,
	NM_PLAYER_MOVE_SYN,

	// 멈추기위한 범위를 설정받고 이동
	NM_PLAYER_ACTIONMOVE_REQ,
	NM_PLAYER_ACTIONMOVE_RES,
	NM_PLAYER_ACTIONMOVE_SYN,

	NM_PLAYER_HP_SYN,
	NM_PLAYER_MP_SYN,

	NM_PLAYER_MAXHP_SYN,
	NM_PLAYER_MAXMP_SYN,

	NM_PLAYER_RESURRECTION_REQ,					// = NM_SKILL_REQ, NM_ITEM_REQ
	NM_PLAYER_RESURRECTION_RES,
	NM_PLAYER_RESURRECTION_SYN,

	//	NM_PLAYER_EXP_SXP_REQ = NM_MONSTER_REQ, NM_QUEST_REQ
	NM_PLAYER_EXP_SXP_RES,

	//	NM_PLAYER_LEVEL_REQ = NM_MONSTER_REQ, NM_QUEST_REQ
	NM_PLAYER_LEVEL_RES,
	NM_PLAYER_LEVEL_SYN,

	//	NM_PLAYER_SKILLLEVEL_REQ = NM_MONSTER_REQ, NM_QUEST_REQ
	NM_PLAYER_SKILLLEVEL_RES,

	//	NM_PLAYER_EQUIP_WEAR_REQ = NM_ITEM_MOV_INVENTORY_REQ, NM_ITEM_SWI_INVENTORY_REQ,
	NM_PLAYER_EQUIP_WEAR_RES,					// Hero  의 WEAR   정보 변경됨.
	NM_PLAYER_EQUIP_WEAR_SYN,					// Player의 WEAR   정보 변경됨.

	//	NM_PLAYER_EQUIP_WEAPON_REQ = NM_ITEM_MOV_INVENTORY_REQ, NM_ITEM_SWI_INVENTORY_REQ,
	NM_PLAYER_EQUIP_WEAPON_RES,					// Hero  의 WEAPON 정보 변경됨.
	NM_PLAYER_EQUIP_WEAPON_SYN,					// Player의 WEAPON 정보 변경됨.


	NM_PLAYER_OPTION_VALUE_REQ,					// = NM_USER_GAMEIN_REQ,
	NM_PLAYER_OPTION_VALUE_RES,

	NM_PLAYER_OPTION_UPDATE_REQ,
	NM_PLAYER_OPTION_UPDATE_RES,

	NM_PLAYER_SHORTCUT_LIST_REQ,				// = NM_USER_GAMEIN_REQ,
	NM_PLAYER_SHORTCUT_LIST_RES,

	NM_PLAYER_SHORTCUT_UPDATE_REQ,
	NM_PLAYER_SHORTCUT_UPDATE_RES,

	// 플레이어의 전투/평화 상태 변경
	NM_PLAYER_STATE_IDLE_REQ,
	NM_PLAYER_STATE_IDLE_SYN,

	/// 플레이어 앉기/서기
	NM_PLAYER_STATE_SITDOWN_REQ,
	NM_PLAYER_STATE_SITDOWN_RES,
	NM_PLAYER_STATE_SITDOWN_SYN,

	// 플레이어의 소지금액
//  NM_PLAYER... NM_ITEM... NM_NPC...  등등.
	NM_PLAYER_MONEY_RES,						// 소지금액 정보 변경됨.
	NM_PLAYER_DEPOSIT_RES,						// 예치금액 정보 변경됨.

	// 플레이어의 포인트(타로, 전장, ... )
	NM_PLAYER_TAROT_POINT_RES,					// 타로포인트 정보 변경됨.
	NM_PLAYER_PVP_POINT_RES,					// 전장포인트 정보 변경됨.

	/// 플레이어의 스킬포인트
	NM_PLAYER_SP_RES,

	/// 생활 스킬
	NM_PLAYER_COMMUNITYSKILL_REQ,
	NM_PLAYER_COMMUNITYSKILL_RES,
	NM_PLAYER_COMMUNITYSKILL_SYN,

	// NM_PLAYER_STATUS_REQ = NM_USER_GAMEIN_REQ
	NM_PLAYER_STATUS_RES,			/// 자신 한테 스텟 계산값 발송 - 다른 player는 mPlayerExrInfo정보에 포함발송

	NM_PLAYER_SCALE_SYN,			/// 플레이어 크기 변경
	NM_PLAYER_MOVESPEED_SYN,		/// 이동 속도 변경
	NM_PLAYER_ATTACKSPEED_SYN,		/// 공격 속도 변경
	NM_PLAYER_CHG_MONSTER_SYN,		/// 몬스터 외형 변경
	NM_PLAYER_BLINK,				/// 순간이동

	NM_PLAYER_SLEEP_SYN,			/// 슬립
	NM_PLAYER_STUN_SYN,				/// 스턴
	NM_PLAYER_CANTMOVE_SYN,			/// 이동 불가
	NM_PLAYER_CANTSKILL_SYN,		/// 스킬 사용 불가

	NM_PLAYER_STATICFACE_REQ,
	NM_PLAYER_STATICFACE_SYN,

	NM_PLAYER_GAMEFINISH_REQ,			/// 게임 종료 요청
	NM_PLAYER_GAMEFINISH_RES,

	NM_PLAYER_GAMEFINISH_CANCEL_REQ,	/// 게임 종료 취소 요청

	NM_PLAYER_COLLECTIONBOOK_OPEN_REQ,	/// 컬렉션북
	NM_PLAYER_COLLECTIONBOOK_OPEN_RES,

	NM_PLAYER_COLLECTIONBOOK_CLOSE_REQ,
	NM_PLAYER_COLLECTIONBOOK_CLOSE_RES,	

	NM_PLAYER_FORCE_SYN,
	NM_PLAYER_FORCEVALUE_SYN,

	NM_PLAYER_JOB_RES,
	NM_PLAYER_JOB_SYN,

	NM_PLAYER_TITLE_LIST_RES,			/// 호칭 리스트
	NM_PLAYER_TITLE_ADD_RES,			/// 호칭 추가 

	NM_PLAYER_TITLE_SET_REQ,			/// 호칭설정 요청	
	NM_PLAYER_TITLE_SET_RES,			/// 호칭설정 결과
	NM_PLAYER_TITLE_SET_SYN,			/// 다른 유저 호칭 설정 변경

	NM_PLAYER_PARTY_SET_SYN,			/// 다른유저 파티 세팅

	NM_PLAYER_GUILD_SET_SYN,			/// 다른 유저 길드 세팅

	NM_PLAYER_VEHICLE_SYN,					/// 탈것 설정/해제

	NM_PLAYER_VEHICLE_END_REQ,				/// 탈것 해제 요청

	NM_PLAYER_TODAYWORD_CHANGE_REQ,		/// 오늘의 한마디 변경
	NM_PLAYER_TODAYWORD_CHANGE_RES,		
	NM_PLAYER_TODAYWORD_CHANGE_SYN,
	
	NM_PLAYER_SKILLRESET_REQ,			/// 스킬 초기화
	NM_PLAYER_SKILLRESET_RES,			/// 스킬 초기화 성공/실패

	NM_PLAYER_SKILLRESET_SYN,			/// 결과 처리후 전송

	NM_PLAYER_MAX,
};


enum NM_MONSTER_PROTOCOL
{
	//	NM_MONSTER_MODELNUMBER_REQ = NM_USER_LOADDATA_REQ,
	NM_MONSTER_MODELNUMBER_RES,

	NM_MONSTER_MOVE_SYN,

	NM_MONSTER_ACTIONMOVE_SYN,

	NM_MONSTER_HP_SYN,
	NM_MONSTER_MP_SYN,

	NM_MONSTER_REGEN_SYN,

	/// 이동 속도변경
	NM_MONSTER_MOVESPEED_SYN,

	/// 이동 정지
	NM_MONSTER_MOVESTOP_SYN,

	/// 모드변경
	NM_MONSTER_MODECHANGE_SYN,

	/// 그리드 시스템 프로토콜
	NM_MONSTER_SIGHT_IN_RES,
	NM_MONSTER_SIGHT_OUT_RES,

	/// 대기동작2 에니메이션
	NM_MONSTER_IDLE2_ANI_SYN,

	/// 대사
	NM_MONSTER_SPEECH_SYN,
	NM_MONSTER_MODESPEECH_SYN,

	/// 몬스터 제거 - 죽음 아님
	NM_MONSTER_DESTROY_SYN,

	/// 게임 서버간 동기화
	NM_MONSTERPOST_SWITCHREGEN_START_SYN,
	NM_MONSTERPOST_SWITCHREGEN_STOP_SYN,

	NM_MONSTER_MAX,
};


enum NM_NPC_PROTOCOL
{
//	NM_NPC_MODELNUMBER_REQ = NM_USER_LOADDATA_REQ,
	NM_NPC_MODELNUMBER_RES,

	// 맵 단위 리스트
//	NM_NPC_LIST_REQ = NM_USER_GAMEIN_REQ,
	NM_NPC_LIST_RES,					

	// 퀘스트 관련 상태
	NM_NPC_QUESTSTATUS_RES,
	NM_NPC_QUESTLIST_RES,				// 신규 퀘스트 리스트
	NM_NPC_QUESTLIST_RESEND_REQ,		// 신규 퀘 리스트 재 발송 요청

	/// 대화 시작
	NM_NPC_OPEN_REQ,
	NM_NPC_OPEN_RES,
	NM_NPC_OPEN_SYN,

	/// npc 대화중 처리 //////////////////////////////////

	/// 스킬 습득
	NM_NPC_SKILL_ADD_REQ,
	NM_NPC_SKILL_ADD_SUC_RES,
	NM_NPC_SKILL_ADD_ERR_RES,

	/// 아이템
	NM_NPC_ITEM_MOV2_INVENTORY_REQ,			/// 이동 - 인벤토리와 창고간의 이동 
	NM_NPC_ITEM_MOV2_INVENTORY_RES,
	NM_NPC_ITEM_SELL_REQ,					/// 구매
	NM_NPC_ITEM_SELL_RES,
	NM_NPC_ITEM_BUY_REQ,					/// 판매
	NM_NPC_ITEM_BUY_RES,
	NM_NPC_DEPOSIT_REQ,						/// 창고 - 입금.
	NM_NPC_DEPOSIT_RES,
	NM_NPC_WITHDRAW_REQ,					/// 창고 - 출금.
	NM_NPC_WITHDRAW_RES,

	/// 퀘스트
	NM_NPC_QUEST_ADD_REQ,					/// 신규 퀘스트 등록요청
	NM_NPC_QUEST_ADD_RES,
	NM_NPC_QUEST_COMPLETE_REQ,				/// 퀘스트 진행완료 요청
	NM_NPC_QUEST_COMPLETE_RES,
	NM_NPC_QUEST_REWARD_REQ,				/// 퀘스트 보상요청
	NM_NPC_QUEST_REWARD_RES,

	NM_NPC_GUILD_CREATE_REQ,					/// 길드 생성
	NM_NPC_GUILD_CREATE_RES,	

	/// NPC 점집
	NM_NPC_TAROT_OPEN_REQ,					/// NPC 점집 열어보기
	NM_NPC_TAROT_OPEN_RES,

	NM_NPC_TAROT_CLOSE_REQ,					/// NPC 점집 닫기
	NM_NPC_TAROT_CLOSE_RES,

	NM_NPC_TAROT_JOIN_REQ,					/// NPC 점집 참여
	NM_NPC_TAROT_JOIN_RES,

	NM_NPC_TAROT_FORTUNE_REQ,				/// NPC 점집 운세 선택
	NM_NPC_TAROT_FORTUNE_RES,

	//////////////////////////////////////////////////////

	/// npc와 대화 종료
	NM_NPC_CLOSE_REQ,					
	NM_NPC_CLOSE_RES,
	NM_NPC_CLOSE_SYN,
	NM_NPC_CLOSEFORCE_RES,				/// 강제로 닫기

	// 그리드 시스템 프로토콜
	NM_NPC_SIGHT_IN_RES,				// 그리드 단위 리스트 IN
	NM_NPC_SIGHT_OUT_RES,				// 그리드 단위 리스트 OUT

	NM_NPC_MAX,
};

enum NM_ITEM_PROTOCOL
{
	/*-- 인벤토리 프로토콜
	*/
	NM_ITEM_INVENTORY_REQ,				// 인벤토리 리스트
	NM_ITEM_INVENTORY_RES,

//	NM_ITEM_INVENTORY_COOLTIME_REQ,		// 쿨타임 적용중 - 아이템 사용시
	NM_ITEM_INVENTORY_COOLTIME_RES,

	NM_ITEM_MOV_INVENTORY_REQ,			// 이동
	NM_ITEM_MOV_INVENTORY_RES,

//	NM_ITEM_MERGE_INVENTORY_REQ			// 병합 - 이동중 병합
	NM_ITEM_MERGE_INVENTORY_RES,

	NM_ITEM_DIVIDE_INVENTORY_REQ,		// 분활
	NM_ITEM_DIVIDE_INVENTORY_RES,

	NM_ITEM_USE_INVENTORY_REQ,			// 사용
	NM_ITEM_USE_INVENTORY_RES,

	NM_ITEM_DEL_INVENTORY_REQ,			// 삭제 - 사용완료된 아이템 포함
	NM_ITEM_DEL_INVENTORY_RES,

	NM_ITEM_SWI_INVENTORY_REQ,			// 무기스위치
	NM_ITEM_SWI_INVENTORY_RES,

	NM_ITEM_ENHANCED_START_REQ,			// 강화 시작
	NM_ITEM_ENHANCED_START_RES,
	NM_ITEM_ENHANCED_START_SYN,

	NM_ITEM_ENHANCED_END_REQ,			// 강화 끝
	NM_ITEM_ENHANCED_END_RES,
	NM_ITEM_ENHANCED_END_SYN,

	NM_ITEM_ENHANCED_CANCEL_REQ,
	NM_ITEM_ENHANCED_CANCEL_SYN,

	NM_ITEM_DISJOINT_INVENTORY_REQ,		// 분해
	NM_ITEM_DISJOINT_INVENTORY_RES,

	NM_ITEM_PUT_CARD_INVENTORY_REQ,		// 카드장착
	NM_ITEM_PUT_CARD_INVENTORY_RES,

	NM_ITEM_CHANGE_INVENTORY_REQ,		// 체인지(교환)
	NM_ITEM_CHANGE_INVENTORY_RES,


	/*-- 거래 프로토콜 - 세부내용은 MSG로 구분
	*/
	// 전용 - 거래 프로토콜
	NM_ITEM_EXCHANGE_ASK_REQ,			// 거래 요청
	NM_ITEM_EXCHANGE_ASK_RES,			// 거래 요청 결과

	NM_ITEM_EXCHANGE_REP_REQ,			// 거래 응답
	NM_ITEM_EXCHANGE_REP_RES,			// 거래 응답 결과

	// 공용 - 거래 프로토콜
	NM_ITEM_EXCHANGE_ADD_REQ,			// 거래 등록(아이템 & 소지금액)
	NM_ITEM_EXCHANGE_ADD_RES,			// "
	NM_ITEM_EXCHANGE_ADD_SYN,			// "

	NM_ITEM_EXCHANGE_DEL_REQ,			// 거래 삭제(아이템)
	NM_ITEM_EXCHANGE_DEL_RES,			// "
	NM_ITEM_EXCHANGE_DEL_SYN,			// "

	NM_ITEM_EXCHANGE_OK_REQ,			// 거래 완료
	NM_ITEM_EXCHANGE_OK_RES,			// "

	NM_ITEM_EXCHANGE_RETRY_REQ,			// 거래 수정
	NM_ITEM_EXCHANGE_RETRY_RES,			// "

	NM_ITEM_EXCHANGE_CANCEL_REQ,		// 거래 취소
	NM_ITEM_EXCHANGE_CANCEL_RES,		// "

	NM_ITEM_EXCHANGE_END_REQ,			// 거래 종료
	NM_ITEM_EXCHANGE_END_RES,			// "


	/*-- 노점 프로토콜
	*/
	NM_ITEM_STALL_SELL_SEARCH_REQ,		// 판매리스트 검색
	NM_ITEM_STALL_SELL_SEARCH_RES,

	NM_ITEM_STALL_SELL_OPEN_REQ,		// 노점 열기
	NM_ITEM_STALL_SELL_OPEN_RES,		// "
	NM_ITEM_STALL_SELL_OPEN_SYN,		//

	NM_ITEM_STALL_SELL_CLOSE_REQ,		// 노점 닫기
	NM_ITEM_STALL_SELL_CLOSE_RES,		// "
	NM_ITEM_STALL_SELL_CLOSE_SYN,		//

	NM_ITEM_STALL_SELL_RENAME_REQ,		// 이름 바꾸기
	NM_ITEM_STALL_SELL_RENAME_RES,		// "
	NM_ITEM_STALL_SELL_RENAME_SYN,		//

	NM_ITEM_STALL_SELL_ADD_REQ,			// 아이템 등록
	NM_ITEM_STALL_SELL_ADD_RES,			// "
	NM_ITEM_STALL_SELL_ADD_SYN,			// "

	NM_ITEM_STALL_SELL_DEL_REQ,			// 아이템 삭제
	NM_ITEM_STALL_SELL_DEL_RES,			// "
	NM_ITEM_STALL_SELL_DEL_SYN,			// "

	NM_ITEM_STALL_SELL_MOD_REQ,			// 아이템 삭제
	NM_ITEM_STALL_SELL_MOD_RES,			// "
	NM_ITEM_STALL_SELL_MOD_SYN,			// "

	NM_ITEM_STALL_SELL_COM_RES,			// 아이템 판매

	NM_ITEM_STALL_SELL_JOIN_REQ,		// 노점 참여
	NM_ITEM_STALL_SELL_JOIN_RES,		// "

	NM_ITEM_STALL_SELL_LEAVE_REQ,		// 노점 닫기
	NM_ITEM_STALL_SELL_LEAVE_RES,		// "

	NM_ITEM_STALL_SELL_GET_REQ,			// 노점 구매
	NM_ITEM_STALL_SELL_GET_RES,			// "

	/*-- 드롭&습득 프로토콜
	*/
	NM_ITEM_DROP_IN_SYN,				// 드롭
	NM_ITEM_DROP_OUT_SYN,				// 드롭 완료

	NM_ITEM_GET_OPEN_REQ,				// 습득 열기 요구
	NM_ITEM_GET_OPEN_RES,				// 습득 열기 결과
	NM_ITEM_GET_OPEN_SYN,				// 습득 열기 동기화

	NM_ITEM_GET_CLOSE_REQ,				// 습득 닫기 요구
	NM_ITEM_GET_CLOSE_RES,				// 습득 닫기 결과
	NM_ITEM_GET_CLOSE_SYN,				// 습득 닫기 동기화

	NM_ITEM_GET_REQ,					// 습득 동기화
	NM_ITEM_GET_RES,					// 습득 동기화

	NM_ITEM_GET_LEAVE_RES,				// 습득 후 동기화
	NM_ITEM_GATHERING_OPEN_RES,			// 채집 열기 결과

	/*-- 그리드 프로토콜
	*/
	NM_ITEM_SIGHT_IN_RES,				// 그리드 단위 리스트 IN
	NM_ITEM_SIGHT_OUT_RES,				// 그리드 단위 리스트 OUT

	/*-- 스킬 프로토콜
	NM_ITEM_USE_REQ,					// 스킬 & 아이템 사용후 동기화
	*/
	NM_ITEM_USE_RES,

	/*-- 퀘스트 프로토콜
	*/
	NM_ITEM_REWARD_RES,					// 퀘스트 보상 아이템 동기화
	NM_ITEM_TAKE_RES,					// 퀘스트 반납 아이템 동기화

	NM_ITEM_GET_QUEST_RES,				// 습득 (퀘스트) 동기화

	/*-- 컬렉션 북 프로토콜
	*/
	NM_ITEM_COLLECT_REQ,				// 컬렉션 북 등록.
	NM_ITEM_COLLECT_RES,				// "

	/*-- 조합 프로토콜
	*/
	NM_ITEM_MAKESKILL_RES,				// 전문직업 습득 아이템 동기화
	NM_ITEM_RECIPE_RES,					// 레시피 습득 아이템 동기화
	NM_ITEM_MIXED_RES,					// 아이템 조합 결과

	NM_ITEM_MAX,
};

enum NM_CHAT_PROTOCOL
{
	/// 일반 chatting
	NM_CHAT_NORMAL_REQ,
	NM_CHAT_NORMAL_RES,
	NM_CHAT_NORMAL_SYN,

	/// 외치기
	NM_CHAT_SHOUT_REQ,
	NM_CHAT_SHOUT_RES,
	NM_CHAT_SHOUT_SYN,

	/// 거래
	NM_CHAT_TRADE_REQ,
	NM_CHAT_TRADE_SYN,

	/// 귓말
	NM_CHAT_WHISPER_REQ,
	NM_CHAT_WHISPER_RES,
	NM_CHAT_WHISPER_SYN,

	/// 쪽지
	NM_CHAT_NOTE_RECV_RES, /// NM_USER_GAMEIN_REQ 일때 (쪽지 리스트전송)
	NM_CHAT_NOTE_SEND_REQ,
	NM_CHAT_NOTE_SEND_RES,
	NM_CHAT_NOTE_SEND_SYN,	/// 쪽지 받음

	NM_CHAT_NOTE_DEL_REQ,
	NM_CHAT_NOTE_DEL_RES,
	
	NM_CHAT_GUILDNOTE_SEND_REQ,	/// 길드 전체 쪽지 보내기
	NM_CHAT_GUILDNOTE_SEND_RES,

	/// 친구
	NM_CHAT_FRIEND_LIST_REQ,
	NM_CHAT_FRIEND_LIST_RES,
	NM_CHAT_FRIEND_ADD_REQ,
	NM_CHAT_FRIEND_ADD_RES,
	NM_CHAT_FRIEND_DEL_REQ,
	NM_CHAT_FRIEND_DEL_RES,
	NM_CHAT_FRIEND_REP_REQ,
	NM_CHAT_FRIEND_REP_RES,

	/// 파티
	NM_CHAT_PARTY_REQ,
	NM_CHAT_PARTY_RES,
	NM_CHAT_PARTY_SYN,

	/// 길드
	NM_CHAT_GUILD_REQ,
	NM_CHAT_GUILD_RES,
	NM_CHAT_GUILD_SYN,

	/// GM chatting
	NM_CHAT_GM_NORMAL_REQ,
	NM_CHAT_GM_NORMAL_RES,
	NM_CHAT_GM_NORMAL_SYN,

	//-----------------------------
	// GAME SYN
	NM_CHATPOST_WHISPER_SYN,		/// 귓말 받음
	NM_CHATPOST_WHISPER_RESULTSYN,	/// 귓말 받음에 대한 결과
	
	NM_CHATPOST_NOTESEND_SYN,		/// 쪽지 받음

	NM_CHAT_MAX,
};

enum NM_SKILL_PROTOCOL
{
	// NM_SKILL_LIST_REQ = NM_USER_LOADDATA_REQ,
	NM_SKILL_LIST_RES,
	// NM_SKILL_INFLUENCE_LIST_REQ = NM_USER_LOADDATA_REQ,
	NM_SKILL_INFLUENCE_LIST_RES,
	NM_SKILL_INFLUENCE_ADDLIST_SYN,
	NM_SKILL_INFLUENCE_DELLIST_SYN,


	/// 1. 일반 스킬 사용 ( 캐스트:X / 타겟:오브젝트  )
	NM_SKILL_USED_REQ,
	NM_SKILL_USED_RES, /// 성공/실패 MP소모
	NM_SKILL_USED_MON_REQ,
	NM_SKILL_USED_MON_RES, /// 성공/실패 MP소모
	NM_SKILL_USED_SYN,
	NM_SKILL_MONSTER_USED_SYN,
	NM_SKILL_ITEMMAPCHANGE_REQ,
	NM_SKILL_ITEMMAPCHANGE_RES,
	NM_SKILL_ITEMMAPCHANGE_SYN,

	NM_SKILL_ITEMVEHICLE_REQ,
	NM_SKILL_ITEMVEHICLE_RES,
	NM_SKILL_ITEMVEHICLE_SYN,

	/// 2. 캐스트 스킬 사용 ( 캐스트:O / 타겟:오브젝트 )
	NM_SKILL_CAST_USED_REQ,
	NM_SKILL_CAST_USED_RES, /// 성공/실패
	NM_SKILL_CAST_USED_MON_REQ,
	NM_SKILL_CAST_USED_MON_RES, /// 성공/실패 MP소모
	NM_SKILL_CAST_USED_SYN,
	NM_SKILL_MONSTER_CAST_USED_SYN,

	NM_SKILL_CAST_ACTIVITY_FAIL_SYN,	/// 캐스팅중 발동불가 - 취소, 타겟삭제, 소모항목부족 등

	NM_SKILL_CAST_ACTIVE_SYN,	/// 스킬 발동 MP소모


	/// 3. 좌표 스킬 사용
	NM_SKILL_POS_USED_REQ,
	NM_SKILL_POS_USED_RES, /// 성공/실패 MP소모
	NM_SKILL_POS_USED_SYN,


	/// 4. 좌표 스킬 사용
	NM_SKILL_POS_CAST_USED_REQ,
	NM_SKILL_POS_CAST_USED_RES, /// 성공/실패
	NM_SKILL_POS_CAST_USED_SYN,

	NM_SKILL_POS_CAST_ACTIVE_SYN,	/// 스킬 발동 MP소모

	NM_SKILL_CAST_CANCEL_REQ,		/// 공격자가 캐스팅 취소
	NM_SKILL_CAST_CANCEL_RES,
	NM_SKILL_CAST_CANCEL_SYN,


	/// 스킬 발동 실패시 위치 보간
	/// NM_SKILL_USED_POS_ERROR_REQ = NM_SKILL_USED_REQ, NM_SKILL_CAST_USED_REQ
	NM_SKILL_USED_POS_ERROR_RES,


	/// 스킬 데미지 싱크
	NM_SKILL_DAMAGE_SYN,
	/// 스킬 힐/HP 싱크
	NM_SKILL_HEAL_SYN,
	/// 비공격형 타겟 적용 싱크
	NM_SKILL_APPLY_SYN,

	NM_SKILL_DELTARGET_SYN,

	/// mp 데미지 싱크
	NM_SKILL_DAMAGEMP_SYN,

	
	/// 스킬 데미지 HP 싱크
	NM_SKILL_DAMAGE_HP_SYN,


	/// 효과
	NM_SKILL_INFLUENCE_CREATE_SYN,
	NM_SKILL_INFLUENCE_DELETE_REQ,		/// 클라이언트에서 효과 삭제 요청
	NM_SKILL_INFLUENCE_DELETE_RES,		/// 잘못된 삭제요청에 대한 실패 메세지
	NM_SKILL_INFLUENCE_DELETE_SYN,	

	/// 오라 효과 삭제 요청
	NM_SKILL_INFLUENCE_AURA_DELETE_REQ,	
	//NM_SKILL_INFLUENCE_AURA_DELETE_RES = NM_SKILL_INFLUENCE_DELETE_SYN

	/// 효과 지속
	NM_SKILL_INFLUENCE_HPCHAGNE_SYN,	/// 효과객체에서 발생한 hp 변동 메세지
	NM_SKILL_INFLUENCE_MPCHAGNE_SYN,


	/// 효과 순간 
	NM_SKILL_NONSKILL_HPCHANGE_SYN,		/// 효과객체가 아닌(비스킬 순간) 효과처리 HP 변동 메세지
	NM_SKILL_NONSKILL_MPCHANGE_SYN,

	/// mp데미지
	NM_SKILL_MP_DAMAGE_SYN,					/// mp감소

	/// 부활
	/// NM_SKILL_RESURRECTION_REQ = 스킬 시전자의 스킬 사용 메세지
	/// 부활 대상자에게 res메세지를 보냄
	NM_SKILL_RESURRECTION_RES,
	NM_SKILL_RESURRECTION_SYN,		/// 부활 싱크

	NM_SKILL_CHGMON_SKILLCOOLTIME,	/// 몬스터 변신 스킬 쿨타임

	NM_SKILL_MAX,
};

enum NM_TAROT_PROTOCOL
{
	NM_TAROT_SEEKER_OPEN_REQ,
	NM_TAROT_SEEKER_OPEN_RES,

	NM_TAROT_SEEKER_CLOSE_REQ,
	NM_TAROT_SEEKER_CLOSE_RES,

	NM_TAROT_SEEKER_JOIN_REQ,
	NM_TAROT_SEEKER_JOIN_RES,

	NM_TAROT_SEEKER_RESULT_REQ,
	NM_TAROT_SEEKER_RESULT_RES,

	NM_TAROT_SEEKER_ACCEPT_REQ,
	NM_TAROT_SEEKER_ACCEPT_RES,


	NM_TAROT_READER_READY_REQ,
	NM_TAROT_READER_READY_RES,
	NM_TAROT_READER_READY_SYN,

	NM_TAROT_READER_OPEN_REQ,
	NM_TAROT_READER_OPEN_RES,
	NM_TAROT_READER_OPEN_SYN,

	NM_TAROT_READER_JOIN_RES,
	NM_TAROT_READER_LEAVE_RES,

	NM_TAROT_READER_CLOSE_REQ,
	NM_TAROT_READER_CLOSE_RES,
	NM_TAROT_READER_CLOSE_SYN,

	NM_TAROT_MAX,
};

/// party
enum NM_PARTY_PROTOCOL
{
	/// 파티 초청
	NM_PARTY_ADD_REQ,				/// 파티 신청 요청
	NM_PARTY_ADD_RES,				/// 파티 신청 결과
	NM_PARTY_ADD_SYN,				/// 파티로부터 가입 신청

	/// 파티 신청 응답
	NM_PARTY_REP_REQ,				/// 파티 신청 수락
	NM_PARTY_REP_RES,				/// 파티 신청 수락에 대한 결과 

	/// 파티 정보 리스트
	NM_PARTY_LIST_SYN,				/// 파티 전체 리스트
	NM_PARTY_ADDONE_SYN,			/// 파티원 1명 정보

	/// 파티탈퇴
	NM_PARTY_OUT_REQ,
	NM_PARTY_OUT_RES,
	NM_PARTY_OUT_SYN,

	/// 파티해산 알림
	NM_PARTY_DELETE_SYN,
	NM_PARTY_BREAK_SYN,				/// 파티 강제 해체

	/// 파티장 위임
	NM_PARTY_CHANGELEADER_REQ,
	NM_PARTY_CHANGELEADER_RES,
	NM_PARTY_CHANGELEADER_SYN,

	/// 파티분배방식 변경
	NM_PARTY_CHANGEDIVIDE_REQ,
	NM_PARTY_CHANGEDIVIDE_RES,
	NM_PARTY_CHANGEDIVIDE_SYN,

	/// 파티원 추방
	NM_PARTY_THROW_REQ,
	NM_PARTY_THROW_RES,
	NM_PARTY_THROW_SYN,

	NM_PARTY_CUT_SYN,				/// 파티로부터 추방당함

	/// 파티원 맵체인지
	NM_PARTY_MAPCHANGE_SYN,
	NM_PARTY_JOBCHANGE_SYN,

	///
	NM_PARTY_DATA_SYN,

	///
	NM_PARTY_ITEMGET_SYN,

	NM_PARTY_MAX,
};

/// QUEST
enum NM_QUEST_PROTOCOL
{
	NM_QUEST_ADD_REQ,			/// 신규 퀘스트 등록요청 : NPC에 의한것이 아닌경우
	NM_QUEST_ADD_RES,

	NM_QUEST_LIST_RES,			/// 전체 퀘스트 정보 

	NM_QUEST_UPDATE_RES,		/// 퀘스트 정보 갱신

	NM_QUEST_DEL_REQ,			/// 퀘스트 삭제요청
	NM_QUEST_DEL_RES,			/// 
	NM_QUEST_DELAUTO_REQ,		/// 퀘스트 자동삭제
	NM_QUEST_DELAUTO_RES,

	NM_QUEST_ADDBYITEM_REQ,		/// 
	NM_QUEST_ADDBYITEM_RES,		/// 의뢰아이템으로 인한 퀘스트 부여

	NM_QUEST_MAX,
};

/// DUEL
enum NM_DUEL_PROTOCOL
{
	NM_DUEL_ADD_REQ,			/// 결투 신청자가 서버에 요청
	NM_DUEL_ADD_RES,			/// 요청 실패시 : 결투 요청자에게 요청 실패시 실패메세지 발송
								/// 요청 성공시 : 결투 대상자에게 수락/거절 여부 메세지 날림

	NM_DUEL_ACCEPT_REQ,			/// 결투 대상이 서버에 수락여부 알림
	NM_DUEL_ACCEPT_RES,			/// 결투자들에게 결투 성립/불가 여부 알림
	NM_DUEL_ACCEPT_SYN,			/// 결투 성립시 전체 발송

	NM_DUEL_START_RES,			/// 결투 시작

	NM_DUEL_GIVEUP_RES,			/// 결투 포기

	NM_DUEL_FIGHT_OUTRANGE_RES,	/// 결투자 거리 밖으로 나감
	NM_DUEL_FIGHT_INRANGE_RES,	/// 결투자 거리 안으로 들어옴

	NM_DUEL_WINNER_SYN,			/// 승리자에게 부여되는 보상
	NM_DUEL_LOSER_SYN,			/// 패배자에게 부여되는 보상

	NM_DUEL_END_SYN,			/// 결투 종료 승/패

	NM_DUEL_MAX,
};

/// ServerTool
enum NM_SERVERTOOL_PROTOCOL
{
	NM_SERVERTOOL_PING_REQ,
	NM_SERVERTOOL_PING_RES,
	NM_SERVERTOOL_SERVER_LIST_REQ,
	NM_SERVERTOOL_SERVER_LIST_RES,
	NM_SERVERTOOL_CHANNEL_LIST_REQ,
	NM_SERVERTOOL_CHANNEL_LIST_RES,
	NM_SERVERTOOL_SERVER_INFO_REQ,
	NM_SERVERTOOL_SERVER_INFO_RES,
	NM_SERVERTOOL_CHAT_NOTICE_REQ,

	NM_SERVERTOOL_LOGIN_ON_REQ,
	NM_SERVERTOOL_LOGIN_OFF_REQ,

	NM_SERVERTOOL_USERIN_REQ,

	NM_SERVERTOOL_CHANNEL_ON_REQ,
	NM_SERVERTOOL_CHANNEL_OFF_REQ,

	NM_SERVERTOOL_MAX,
};

/// PvP
enum NM_PVP_PROTOCOL
{
	NM_PVP_DM_NOTICE_SYN,			/// pvp 시작알림 공지

	NM_PVP_DM_JOIN_SYN,				/// pvp 참여 캐릭터 모집
	NM_PVP_DM_JOIN_REQ,				/// pvp 참여 요청
	NM_PVP_DM_JOIN_RES,				/// pvp 참여 가능 여부

	/// NM_PVP_DM_MEMBERIN_REQ = NM_USER_GAMEIN_REQ
	NM_PVP_DM_MEMBERIN_RES,			/// 신규 참여 유저에게 기존 유저들 목록 발송
	NM_PVP_DM_MEMBERIN_SYN,			/// 신규 참여 유저 진영에 맴버 등록 발송
	NM_PVP_DM_MEMBEROUT_SYN,		/// 해당유저 진영에 맴버 제거 발송

	NM_PVP_DM_READY_SYN,			/// 전투전 대기 카운트 시작
	NM_PVP_DM_NOTREADY_SYN,			/// 카운트 시작 못함 ( 조건 불만족 - 마을이동 )

	NM_PVP_DM_FIGHT_SYN,			/// 전투 시작
	
	NM_PVP_DM_SCORE_SYN,			/// 스코어 변동사항

	NM_PVP_DM_LEADERSELECT_SYN,		/// 수장 설정
	NM_PVP_DM_LEADERDIE_SYN,		/// 수장 죽음
	NM_PVP_DM_ENEMYLEADERDIE_SYN,	/// 적 수장 죽음

	NM_PVP_RESURRECTION_REQ,		/// pvp 부활 요청

	NM_PVP_DM_WIN_SYN,				/// 결투 종료 - 승리메세지
	NM_PVP_DM_LOSE_SYN,				/// 결투 종료 - 패배메세지

	NM_PVP_DM_END_REQ,				/// 마을 이동 요청
	NM_PVP_DM_END_SYN,				/// 마을이동 메세지 발송
	NM_PVP_DM_ENDACCEPT_REQ,		///

	NM_PVP_MAX,
};

/// Totem
enum NM_TOTEM_PROTOCOL
{
	NM_TOTEM_SIGHT_IN_RES,			// 그리드 단위 리스트 IN
	NM_TOTEM_SIGHT_OUT_RES,			// 그리드 단위 리스트 OUT
};

/// guild
enum NM_GUILD_PROTOCOL
{
	NM_GUILD_CREATEDATA_RES,		/// 생성 정보

	NM_GUILD_LIST_SYN,				/// 길드정보 ( 맵이동, 게임접속시 )

	NM_GUILD_ADD_REQ,				/// 길드원추가
	NM_GUILD_ADD_RES,
	NM_GUILD_ADD_SYN,				/// 길드 초대 받음

	NM_GUILD_REPLY_REQ,				/// 길드 초대 답변
	NM_GUILD_REPLY_RES,

	NM_GUILD_USERADD_SYN,			/// 신규길드원 정보
    
	NM_GUILD_OUT_REQ,				/// 길드탈퇴
	NM_GUILD_OUT_RES,				
	NM_GUILD_OUT_SYN,

	NM_GUILD_CUT_REQ,				/// 길드추방
	NM_GUILD_CUT_RES,				
	NM_GUILD_CUT_SYN,				/// 자신이 추방당함

	NM_GUILD_USERCUT_SYN,			/// 길드원 추방당함

	NM_GUILD_DELETE_REQ,			/// 길드해체
	NM_GUILD_DELETE_RES,

	NM_GUILD_UPDATE_SYN,			/// 시간타임 갱신

	NM_GUILD_GIVEPOSITION_REQ,		/// 직위부여
	NM_GUILD_GIVEPOSITION_RES,		/// 
	NM_GUILD_GIVEPOSITION_SYN,		/// 

	NM_GUILD_NOTICE_REQ,			/// 길드 공지 수정
	NM_GUILD_NOTICE_RES,
	NM_GUILD_NOTICE_SYN,

	NM_GUILDMARK_UPDATE_REQ,		/// 길드마크 갱신 요청
	NM_GUILDMARK_UPDATE_RES,
	NM_GUILDMARK_UPDATE_SYN,

	NM_GUILDMARK_SEND_REQ,			/// 길드마크 요청
	NM_GUILDMARK_SEND_RES,

	//-----------------------------
	// GAME SYN
	NM_GUILDPOST_CREATE_SYN,
	NM_GUILDPOST_DELETE_SYN,
	NM_GUILDPOST_USERADD_SYN,
	NM_GUILDPOST_USERCUT_SYN,		/// 길드원제명
	NM_GUILDPOST_USEROUT_SYN,		/// 길드 탈퇴
	NM_GUILDPOST_GIVEPOSITION_SYN,	/// 직위 부여
	NM_GUILDPOST_UPDATEMARK_SYN,	/// 마크 갱신
	NM_GUILDPOST_NOTICE_SYN,		/// 공지 갱신
	NM_GUILDPOST_CHAT_SYN,			/// 길드 대화
	NM_GUILDPOST_UPDATECHANNEL_SYN,	/// 길드 채널 갱신
	NM_GUILDPOST_UPDATEINFO_SYN,	/// 길드 유저 정보 갱신
	NM_GUILDPOST_NOTE_SYN,			/// 길드 전체 쪽지
	NM_GUILDPOST_CONNECT_SYN,		/// 길드 접속 동기화

	NM_GUILD_MAX,
};

/// Gathering
enum NM_GATHERING_PROTOCOL
{
	NM_GATHERING_REGEN_SYN,				/// 리젠
	NM_GATHERING_DEL_SYN,				/// 삭제
    
	NM_GATHERING_START_REQ,				/// 채집 요청
	NM_GATHERING_START_RES,				/// 채집 요청의 성공/실패
	NM_GATHERING_START_SYN,

	NM_GATHERING_CANCEL_REQ,			/// 채집 진행 중지 요청
	NM_GATHERING_CANCEL_SUCCESS_RES,	/// 채집 진행 중지 성공
	NM_GATHERING_CANCEL_SYN,			/// 취소 성공 전체 발송

	NM_GATHERING_END_SUCCESS_SYN,		/// 채집완료
	NM_GATHERING_END_FAILE_SYN,

	NM_GATHERING_SIGHT_IN_RES,			/// 그리드 단위 리스트 IN
	NM_GATHERING_SIGHT_OUT_RES,			/// 그리드 단위 리스트 OUT
};

/// MakeSkill
enum NM_MAKESKILL_PROTOCOL
{
	NM_MAKESKILL_LIST1_RES,				/// 레시피 보유목록
	NM_MAKESKILL_LIST2_RES,

	NM_MAKESKILL_ADD_REQ,				/// 직업습득
	NM_MAKESKILL_ADD_RES,

	NM_MAKESKILL_RECIPE_ADD_REQ,		/// 레시피
	NM_MAKESKILL_RECIPE_ADD_RES,

	NM_MAKESKILL_DEL_REQ,				/// 전문직업 삭제
	NM_MAKESKILL_DEL_RES,

	NM_MAKESKILL_ITEMMIX_START_REQ,		/// 조합 시작
	NM_MAKESKILL_ITEMMIX_START_RES,
	NM_MAKESKILL_ITEMMIX_START_SYN,

	NM_MAKESKILL_ITEMMIX_END_REQ,		/// 조합 끝
	NM_MAKESKILL_ITEMMIX_END_RES,
	NM_MAKESKILL_ITEMMIX_END_SYN,		

	NM_MAKESKILL_ITEMMIX_CANCEL_REQ,	/// 조합 취소
	NM_MAKESKILL_ITEMMIX_CANCEL_SYN,


	NM_MAKESKILL_MAX,
};
