657 lines
29 KiB
C++
657 lines
29 KiB
C++
|
|
#pragma once
|
|
|
|
#include "GameDefine.h"
|
|
//#include "Util.h"
|
|
|
|
struct DATA_CREATURE
|
|
{
|
|
AR_HANDLE card_handle;
|
|
AR_HANDLE summon_handle;
|
|
unsigned char idx;
|
|
char name[19];
|
|
int code; // 소환수 코드
|
|
int level;
|
|
int sp;
|
|
|
|
DATA_CREATURE()
|
|
: card_handle( NULL )
|
|
, summon_handle( NULL )
|
|
, idx( NULL )
|
|
, code( NULL )
|
|
, level( NULL )
|
|
, sp( NULL )
|
|
{
|
|
ZeroMemory( name, sizeof( name ) );
|
|
}
|
|
};
|
|
|
|
using std::string;
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
// 게임 시스템
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
class SGameSystem
|
|
{
|
|
|
|
public:
|
|
|
|
SGameSystem( class SGame* pGame );
|
|
~SGameSystem( void );
|
|
|
|
//Target 관련
|
|
void SetTarget( class SGameAvatarEx* pTarget, bool bChangeTargetFromSvr = false );
|
|
void SetTargetInfo_Player( SGameAvatarEx* const pTarget );
|
|
void SetTargetInfo_Npc( SGameAvatarEx* const pTarget );
|
|
void SetTargetInfo_Mob( SGameAvatarEx* const pTarget );
|
|
void SetTargetInfo_Summon( SGameAvatarEx* const pTarget );
|
|
void SetTargetInfo_Pet( SGameAvatarEx* const pTarget );
|
|
void SetTargetInfo_Field_Prop( SGameAvatarEx* const pTarget );
|
|
void SetTargetInfo_Skill_Prop( SGameAvatarEx* const pTarget );
|
|
void SetTargetInfo_Item( SGameAvatarEx* const pTarget ); void CheckTarget( AR_HANDLE leaveID );
|
|
|
|
class SGameAvatarEx* GetTarget( void );
|
|
bool IsTarget( AR_HANDLE handle );
|
|
|
|
class SContentsManager& GetContentsMgr( void ) { return *m_pContentsMgr; }
|
|
|
|
// Local player settings
|
|
class SGameAvatarEx* GetLocalPlayer( void );
|
|
void SetLocalPlayer( class SGameAvatarEx* );
|
|
bool IsLocalPlayer( AR_HANDLE handle ) const;
|
|
|
|
class SCreatureSlotMgr& GetCreatureSlotMgr() { return m_CreatureSlotMgr; }
|
|
class SInventoryMgr& GetInventoryMgr() { return m_InventoryMgr; }
|
|
class SSkillSlotMgr& GetSkillSlotMgr() { return m_SkillSlotMgr; }
|
|
|
|
char const* getLocalPlayerName( void );
|
|
bool isLocalPlayerName( char const* name );
|
|
int GetLocalPlayerPermission();
|
|
|
|
bool isMyGuild( int id ) const;
|
|
void SetLocalInven( void );
|
|
|
|
void CompleteRqChat( std::string& rq_chat, std::vector< std::string >& vString, bool bTarget );
|
|
|
|
|
|
// 아나 코드 정리 좀 하고 살자 ... lenahyang
|
|
//////////////////////////////////////////////////////////////////////////
|
|
/// NPC 관련
|
|
void AddClickNpc( AR_HANDLE Npc_handle )
|
|
{
|
|
for( unsigned int i(0); m_ClickNpcList.size()>i; i++ )
|
|
{
|
|
if( m_ClickNpcList[i] == Npc_handle )
|
|
return;
|
|
}
|
|
|
|
/// 2012.07.17 add 할 때마다 clear하면 왜 vector로 갖고 있나? - prodongi
|
|
m_ClickNpcList.clear();
|
|
m_ClickNpcList.push_back( Npc_handle );
|
|
}
|
|
|
|
/// 노점 관련
|
|
void AddClickStore( AR_HANDLE handle )
|
|
{
|
|
for( unsigned int i(0); m_ClickStoreList.size()>i; i++ )
|
|
{
|
|
if( m_ClickStoreList[i] == handle )
|
|
return;
|
|
}
|
|
|
|
m_ClickStoreList.clear();
|
|
m_ClickStoreList.push_back( handle );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//내것의 소환수 만 등록 한다.
|
|
//소환수 등록 삭제
|
|
void AddSummon ( class SGameAvatarEx * pSummon, struct SMSG_ENTER* pEnterMsg ); ///< 소환수 등록
|
|
void DelSummoon ( AR_HANDLE hCreature ); ///< 소환수 삭제
|
|
void LeaveSummon( AR_HANDLE hLeaveHandle );
|
|
void EvolutionSummon( struct SMSG_SUMMON_EVOLUTION* pMsg );
|
|
|
|
// sonador 10.2.1 팻 시스템 구현
|
|
/// 로컬 팻인가?
|
|
struct DATA_PET* IsLocalPet( AR_HANDLE hPetHandle );
|
|
/// 소환된 팻인가?
|
|
SGameAvatarEx* IsSummonPet( AR_HANDLE hPetHandle );
|
|
/// 로컬 팻우리인가? 그렇다면, 해당 데이터를 반환한다.
|
|
DATA_PET* IsLocalPetCage( AR_HANDLE hPetCageHandle );
|
|
/// 로컬 플레이어의 팻 아바타를 등록한다.
|
|
void AddPet( class SGameAvatarEx* pet, struct SMSG_ENTER* enterMsg );
|
|
/// 로컬 플레이어의 팻 아바타를 삭제한다.
|
|
void RemovePet( AR_HANDLE hPetHandle );
|
|
|
|
void AddSkillProp( class SGameAvatarEx* pSkillProp );
|
|
void LeaveSkillProp( AR_HANDLE hLeave );
|
|
void SetHideSkillProp();
|
|
|
|
AR_HANDLE GetSummonCreature(AR_HANDLE handle);
|
|
void CreateGuage(AR_HANDLE handle, bool bCreate);
|
|
|
|
//소환수 명령 관련
|
|
struct DATA_CREATURE * IsLocalCreature( AR_HANDLE handle );
|
|
SGameAvatarEx* IsSummonCreature( AR_HANDLE handle );
|
|
void SetCreatureBackDown( AR_HANDLE handle = 0 ); ///< nIndex == 0, All
|
|
void SetCreatureAttack ( class SGameAvatarEx * pTarget, AR_HANDLE handle = 0 ); ///< 소환수 전체, 일부 공격 설정
|
|
void SetCreatureCastCancel( AR_HANDLE handle ); ///< 소환수 캐스팅 캔슬
|
|
|
|
void SetCurSkill( int nSkillID );
|
|
|
|
bool isTrading() const; /// 2012.05.17 거래 중인가 - prodongi
|
|
bool isParting() const; /// 2012.05.17 파티 중인가 - prodongi
|
|
bool isNormalParting() const; /// 일반 타피 중인가 - prodongi
|
|
bool isInArena() const;
|
|
bool isArenaExercise() const; /// 현재 연습 경기인지 아닌지
|
|
bool isValidArenaJoinSituation(struct sArenaJoinSituationCondition const& situationCondition);
|
|
|
|
// AziaMafia EB Arcade
|
|
bool isInArcade() const;
|
|
bool isHorizon() const;
|
|
|
|
|
|
void Process( DWORD dwTime );
|
|
|
|
// Here, most of the requests will probably be for Local Player and summoned creature data
|
|
bool ProcMsgAtStatic( struct SGameMessage * ); ///< 온갖 메세지~
|
|
|
|
void Rq_TakeItem ( AR_HANDLE item_handle ); ///< Item 추가 요청
|
|
void Rq_PutOnOffItem ( AR_HANDLE hTarget, AR_HANDLE hItem, int nPosition );
|
|
|
|
//void Rq_DestroyItem ( AR_HANDLE item_handle ); ///< Item 파괴 요청
|
|
void Rq_DestroyItem( void * arrItems, int size );
|
|
|
|
void Rq_ItemSet ( int nItemSetIndex );
|
|
void Rq_NPC_Contact ( AR_HANDLE npc_handle ); ///< Npc 고유 handle
|
|
void Rq_MarketStall_Buy ( const char * pName ); ///< 구매 노점 개설 요청
|
|
void Rq_MarketStall_Sale( const char * pName ); ///< 판매 노점 개설 요청
|
|
void Rq_Skill_Learn ( AR_HANDLE handle, int nSkillID, int nOriginSkillID, short nSkillLv ); ///< Skill 관련 스킬 레벨 올림 또는 스킬 배우기 요청
|
|
void Rq_JopLevelUp ( AR_HANDLE handle ); ///< Job 관련, 잡 레벨을 올린다(1씩)
|
|
|
|
void Rq_ChangeLocation ( );
|
|
|
|
void AddGameCreatureInput( class SGameInput * pInput ); ///< 크리처 직접 입력, 디버깅 용
|
|
|
|
void AddGameInput ( class SGameInput * pInput ); ///< 키보드, 마우스 입력
|
|
void AddNetInputNet( struct SGameMessage* pGameMsg ); ///< 넷 응답
|
|
|
|
void OnUISync( AR_HANDLE caster, AR_HANDLE target, int nUseType );
|
|
|
|
void InitInterfaceData();
|
|
|
|
/// 크리처 슬롯 해당하는 스킬 정보를 가져온다
|
|
void CmdUseSkil( struct STRUCT_CREATURE_CMD_SCRIPT &sCCmdScr );
|
|
|
|
void UseEscCommand();
|
|
|
|
void AddStatusAction( AR_HANDLE hAttackter, AR_HANDLE hTarget );
|
|
void AddStatusCastingAction( struct SMSG_SKILL_EVENT* pMsg );
|
|
void AddStatusFireAction( SGameMessage* msg ); //
|
|
|
|
const std::vector< SGameAvatarEx* > & GetSummonList() { return m_vSummonList; }
|
|
|
|
bool WeightConfirmationTheBeforeAttacking();
|
|
|
|
|
|
/// 길드 정보 관련
|
|
bool IsExistGuildInfo( int nGuild_id );
|
|
void SendGuildData( int nGuild_id );
|
|
|
|
void ActivateQuestProp( SGameAvatarEx* pCaster, SGameAvatarEx* pQuestProp );
|
|
|
|
bool IsPartyMember( AR_HANDLE hTarget );
|
|
bool IsGuildMember( AR_HANDLE hTarget );
|
|
bool IsRaidMember( AR_HANDLE hTarget );
|
|
|
|
void onLeave( struct SMSG_LEAVE* );
|
|
|
|
// 1:1 대련
|
|
bool GetDeathPVP() { return m_bDeathPVP; }
|
|
bool GetShowPVPIcon() { return m_bShowPVPIcon; }
|
|
bool GetPVPAcceptCheck() { return m_bCheckPVP; }
|
|
bool GetPVPStart() { return m_bPVPStart; }
|
|
|
|
bool SetDeathPVP( bool bDeath ) { return m_bDeathPVP = bDeath; }
|
|
bool SetShowPVPIcon( bool bIcon ) { return m_bShowPVPIcon = bIcon; }
|
|
bool SetPVPAcceptCheck( bool bCheck ) { return m_bCheckPVP = bCheck; }
|
|
bool SetPVPStart( bool bStart ) { return m_bPVPStart = bStart; }
|
|
|
|
void OnChatRequestFailed();
|
|
|
|
// 2010.05.11 - prodongi
|
|
void updateCurTarget(AR_HANDLE handle);
|
|
void Rq_ChattingEx( int nChatType, const char * pTargetName, const char * pChat ) { return Rq_Chatting(nChatType, pTargetName, pChat); } //2011.03.09 servantes
|
|
|
|
SGame* GetGame() const { return m_pGame; }
|
|
int getArenaId() const;
|
|
struct sArenaSystem* getArenaSystem() const;
|
|
|
|
protected:
|
|
|
|
void InitRaidInfo();
|
|
/// 크리처 탑승 가능 여부 체크
|
|
void CheckPossibilityCreatureMount( SGameAvatarEx* pPlayer );
|
|
bool IsSummon( AR_HANDLE handle );
|
|
void SetSkillInputData( class SGameAvatarEx * pCaster, SGameAvatarEx * pTarget, struct SkillBaseEx * pSkill, struct SIMSG_UI_ACT_USESKILL * pMsg );
|
|
|
|
// 2008. 6. 18 floyd #2.3.1.23
|
|
// http://bug.nflavor.com/view.php?id=2868
|
|
// 아바타가 대상을 타겟하지 않으면, 크리쳐는 스킬 자동공격을 하지 않는 문제 관련 수정
|
|
// 기본적으로 SGameSystem::GetTarget()을 대상으로 인식하던 것을 타겟핸들을 받도록 수정
|
|
// 관련 함수 signature수정
|
|
SGameAvatarEx * CheckSkillTarget( SkillBaseEx * pSkill, SGameAvatarEx * pCaster, bool bEnableSysMsg, AR_HANDLE target_handle = NULL );
|
|
void ReturnToLobby();
|
|
|
|
//Chatting 관련
|
|
bool IsDelimiter( const wchar_t _c, std::wstring& delimiter );
|
|
void Split( const wchar_t* szMsg, std::wstring& delimiter, std::vector< std::wstring >& vToken );
|
|
//#ifdef _EDIT_MAP_FILE_
|
|
public:
|
|
//#endif
|
|
void Rq_Chatting( int nChatType, const char * pTargetName, const char * pChat );
|
|
//#ifdef _EDIT_MAP_FILE_
|
|
protected:
|
|
//#endif
|
|
std::string procGMCommand( const char *pChat );
|
|
|
|
//Inventory 관련--------------------------------------------------------
|
|
//요청
|
|
int Rq_UseItem ( AR_HANDLE item_handle, AR_HANDLE target_handle, AR_HANDLE item_use_target_handle, const char* lpText=NULL ); ///< Item 사용 또는 장착/탈착
|
|
void Rq_DropItem( AR_HANDLE item_handle, count_t nDropCnt ); ///< Item 떨굼
|
|
|
|
//응답
|
|
int AddItem ( struct TS_ITEM_INFO * ); ///< Item 추가
|
|
int DropItem ( AR_HANDLE item_handle ); ///< Item 떨굼
|
|
int DestroyItem ( AR_HANDLE item_handle ); ///< Item 파괴
|
|
int UpdateItemCount( AR_HANDLE item_handle, count_t nItemCount );
|
|
|
|
void ItemSet( int nItemSetIndex );
|
|
|
|
void OnCommercialStorage( struct SMSG_COMMERCIAL_STORAGE_LIST* );
|
|
|
|
//QuickSlot 관련--------------------------------------------------------
|
|
//요청
|
|
void Rq_UseSlot( int nSlotIndex ); ///< 사용
|
|
void Rq_RegSlot( int nSlotIndex, int nActionID, int nActionType ); ///< 등록, 해제 요청
|
|
|
|
//응답
|
|
void RegSlot( int nSlotIndex, int nActionID, int nActionType ); ///< 등록, 해제
|
|
|
|
void Init();
|
|
void Destory();
|
|
|
|
void SendLogOutMessage();
|
|
|
|
BOOL IsLocal( AR_HANDLE handle );
|
|
|
|
//Msg 처리
|
|
void OnMsgChattingRequest( struct SMSG_CHATTING_REQUEST* );
|
|
|
|
void OnMsgReqUIDisplayInfo( struct SIMSG_REQ_UIDISPLAY_INFO* );
|
|
void OnMsgActInventory( struct SIMSG_UI_ACT_INVENTORY* );
|
|
void OnMsgActCreature ( struct SIMSG_UI_ACT_CREATURE * );
|
|
void OnMsgActTarget ( struct SIMSG_UI_ACT_TARGET * );
|
|
void OnMsgActNPCDialog( struct SIMSG_UI_ACT_NPCDIALOG* );
|
|
|
|
|
|
void OnMsgActJopLevelUp( struct SIMSG_UI_ACT_JOB_LEVELUP* );
|
|
|
|
void OnMsgActItemCombine( struct SIMSG_UI_ACT_ITEMCOMBINE* );
|
|
|
|
/// 기부관련 아이템 루피 보내기
|
|
void OnMsgActItemContribution( struct SIMSG_UI_ACT_ITEMCONTRIBUTION* );
|
|
/// 기부보상 선물 요구하기
|
|
void OnMsgActRequestRewardItem( struct SIMSG_UI_ACT_REQUESTREWARDITEM* );
|
|
|
|
///
|
|
void OnMsgEnterEventArea( struct SMSG_ENTER_EVENTAREA* );
|
|
void OnMsgLeaveEventArea( struct SMSG_LEAVE_EVENTAREA* );
|
|
|
|
void OnMsgActFullEquip ( struct SIMSG_UI_ACT_FULLEQUIP* );
|
|
void OnMsgActBuyItems ( struct SIMSG_UI_ACT_BUYITEMS* );
|
|
void OnMsgActSellItems ( struct SIMSG_UI_ACT_SELLITEMS* );
|
|
void OnMsgActBuyItemsFromStore( struct SIMSG_UI_ACT_BUYITEMS_FROM_STORE* );
|
|
void OnMsgActSellItemsToStore( struct SIMSG_UI_ACT_SELLITEMS_TO_STORE* pMsg );
|
|
|
|
void OnMsgActLearnSkill ( struct SIMSG_UI_ACT_LEARN_SKILL* );
|
|
void OnMsgUseSkill ( struct SIMSG_UI_ACT_USESKILL* );
|
|
bool OnMsgUseSkill_by_toggle( struct SIMSG_UI_ACT_USESKILL_BY_TOGGLE* );
|
|
void OnMsgSkillEvent ( struct SMSG_SKILL_EVENT* );
|
|
// void OnMsgSkillCastingTime( struct SMSG_SKILL_CASTING_TIME* ); //Skill Casting Time
|
|
void OnSkillList ( struct SMSG_SKILL_LIST* );
|
|
void OnSkillCardInfo ( struct SMSG_SKILLCARD_INFO* );
|
|
|
|
void OnMsgUseItem ( struct SIMSG_UI_ACT_USEITEM* );
|
|
void OnMsgSoulstoneCraft( struct SIMSG_UI_SOULSTONE_CRAFT* pMsg );
|
|
void OnMsgRepairSoulstone( struct SIMSG_UI_REPAIR_SOULSTONE* pMsg );
|
|
void OnMsgRequestRemoveState( struct SIMSG_REQUEST_REMOVE_STATE* pMsg );
|
|
void OnMsgMsgReqChangeItemPosition( struct SIMSG_REQ_CHANGE_ITEM_POSITION* pMsg );
|
|
// { [soandor][3.1.2]경매장 구현
|
|
void OnMsgReqAuctionSearch( struct SIMSG_REQ_AUCTION_SEARCH* pMsg ); ///< 경매 검색 요청 처리
|
|
void OnMsgReqAuctionSellingList( struct SIMSG_REQ_AUCTION_SELLING_LIST* pMsg ); ///< 경매 등록 물품 목록 요청 처리
|
|
void OnMsgReqAuctionBiddedList( struct SIMSG_REQ_AUCTION_BIDDED_LIST* pMsg ); ///< 입찰 물품 목록 요청 처리
|
|
void OnMsgReqAuctionBid( struct SIMSG_REQ_AUCTION_BID* pMsg ); //!<
|
|
void OnMsgReqAuctionInstantPurchase( struct SIMSG_REQ_AUCTION_INSTANT_PURCHASE* pMsg ); //!<
|
|
void OnMsgReqAuctionRegister( struct SIMSG_REQ_AUCTION_REGISTER* pMsg ); //!<
|
|
void OnMsgReqAuctionCancel( struct SIMSG_REQ_AUCTION_CANCEL* pMsg ); //!<
|
|
void OnMsgReqAuctionItemKeepingList( struct SIMSG_REQ_AUCTION_ITEM_KEEPING_LIST* pMsg ); ///< 보관 물품 목록 요청 처리
|
|
void OnMsgReqAuctionItemKeepingTake( struct SIMSG_REQ_AUCTION_ITEM_KEEPING_TAKE* pMsg ); ///< 보관 물품 인출 요청 처리
|
|
// }
|
|
|
|
void OnMsgMount ( struct SMSG_MOUNT_SUMMON* );
|
|
void OnMsgUnMount ( struct SMSG_UNMOUNT_SUMMON* );
|
|
|
|
void OnMsgUseCommand ( struct SIMSG_UI_ACT_USECOMMAND* );
|
|
|
|
void OnMsgResult ( struct SMSG_RESULT* );
|
|
void OnMsgLogin ( struct SMSG_LOGIN* );
|
|
void OnMsgLeave ( struct SMSG_LEAVE* );
|
|
|
|
void OnMsgRegenHPMP ( struct SMSG_REGEN_HPMP* ); ///< 타겟창 닫기
|
|
|
|
void OnStatInfo ( struct SMSG_STAT_INFO* ); ///< 스탯 정보
|
|
void OnGoldUpdate ( struct SMSG_GOLD_UPDATE* ); ///< 금 갱신
|
|
|
|
void OnMsgAddSummonInfo ( struct SMSG_ADD_SUMMON_INFO * ); ///< 소환수 정보 추가
|
|
void OnMsgSummonNameChange ( struct SIMSG_UI_CHANGE_SUMMON_NAME* pMsg ); ///< 소환수 이름 변경
|
|
void OnMsgRemoveSummonInfo ( struct SMSG_REMOVE_SUMMON_INFO* ); ///< 소환수 정보 제거
|
|
void OnMsgEquipSummon ( struct SMSG_EQUIP_SUMMON * ); ///< 소환수 장착
|
|
void OnMsgRqSummon ( struct SMSG_RQ_SUMMON * ); ///< 소환 요청
|
|
void OnMsgActEquipSummon ( struct SIMSG_UI_ACT_EQUIP_SUMMON* ); ///< 2004/10/14, BERSERK 크리처 등록 요청
|
|
void OnMsgActSelectSummon ( struct SIMSG_UI_ACT_SELECT_SUMMON* ); ///< MJ 2004/10/17 소환할 크리쳐 정보 게임에 전달 요청
|
|
|
|
// sonador 10.2.1 팻 시스템 구현
|
|
void OnMsgAddPetInfo ( struct SMSG_ADD_PET_INFO* msg ); ///< a message for adding information of pet
|
|
void OnMsgRemovePetInfo ( struct SMSG_REMOVE_PET_INFO* msg ); ///< a message for removing information of pet
|
|
void OnMsgReqSetPetName ( struct SIMSG_REQ_SET_PET_NAME* pMsg ); ///< change pet name
|
|
|
|
void OnMsgReqArrangeItem ( struct SIMSG_REQ_ARRANGE_ITEM* pMsg ); ///< 인벤토리/창고 정렬 요청 처리 // sonador 1.9.1 인벤토리 및 창고 정렬 기능 구현
|
|
|
|
void OnMsgSaveClientInfo ( struct SIMSG_UI_SAVE_CLIENT_INFO* ); ///< 클라이언트 정보 저장
|
|
void OnMsgSaveQuickSlot ( struct SIMSG_UI_SAVE_QUICK_SLOT* ); // 퀵슬롯 정보 저장
|
|
void OnMsgSaveCurrentKey ( struct SIMSG_UI_SAVE_CURRENT_KEY* ); // 현재 사용 키 맵핑 정보 저장
|
|
void OnMsgSaveSavedKey ( struct SIMSG_UI_SAVE_SAVED_KEY* ); ///< 저장할 키 맵핑 정보 저장
|
|
void OnTamingInfo ( struct SMSG_TAMING_INFO * ); ///< 테이밍 정보
|
|
|
|
void OnMsgTakeResult ( struct SMSG_ITEM_TAKE* ); ///< 아이템 줍기 결과
|
|
void OnMsgDropResult ( struct SMSG_ITEM_DROP* ); ///< 아이템 떨굼 결과
|
|
|
|
void OnMsgItemDestroy ( struct SMSG_ITEM_DESTROY* ); ///< 아이템 제거.
|
|
void OnMsgItemErase( struct SMSG_ERASE_ITEM * ); // 아이템파괴.
|
|
|
|
void OnMsgUpdateItemCount ( struct SMSG_UPDATE_ITEM_COUNT* ); ///< 아이템 카운트 변경
|
|
void OnMsgItemWear ( struct SMSG_ITEM_WEAR* ); ///< 아이템 장착
|
|
void OnMsgItemWearInfo ( struct SMSG_ITEM_WEAR_INFO* ); ///< 아이템 장착 정보
|
|
void OnMsgInventory ( struct SMSG_ITEM_INVEN* ); ///< 인벤토리 메세지
|
|
void OnMsgItemcooltime ( struct SMSG_ITEM_COOL_TIME* ); ///< 아이템 그룹 쿨 타임
|
|
|
|
void OnMsgOpenStorage ( struct SMSG_OPEN_STORAGE* ); ///< 창고 열기
|
|
void OnMsgChangeStorage ( struct SMSG_CHANGE_STORAGE* ); ///< 창고 변환?
|
|
|
|
void OnMsgNPCDialog ( struct SMSG_NPC_DIALOG* ); ///< NPC 대화창
|
|
void OnMsgMarket ( struct SMSG_MARKET* ); ///< 상점
|
|
|
|
void OnMsgChatting ( struct SMSG_CHATTING* ); ///< 채팅
|
|
void OnMsgChatPartySystem ( struct SMSG_CHATTING* pMsg ); ///< 채팅중 파티 메세지
|
|
void RefreshTargetGuage ( AR_HANDLE handle, bool bFriend ); ///< 타겟 게이지 갱신
|
|
|
|
void OnMsgTrade ( struct SMSG_TRADE* ); ///< Trade
|
|
void OnMsgBeltSlotInfo ( struct SMSG_BELT_SLOT_INFO* ); ///< Belt Slot
|
|
void OnMsgBooth ( struct SMSG_UI_BOOTH* );
|
|
void OnMsgRqBoothName ( struct SMSG_REQUEST_BOOTH_NAME*);
|
|
void OnMsgWatchBooth ( struct SMSG_WATCH_BOOTH*pMsg );
|
|
|
|
void OnMsgEndQuest ( struct SMSG_END_QUEST* pGameMsg );
|
|
void OnMsgTitle ( struct SGameMessage * pMsg );
|
|
void OnMsgQuestUpdata ( struct SMSG_QUEST_UPDATA* pGameMsg );
|
|
void _SplitText( const char* lpText, const char* lpTag, std::vector<std::string>& rVecText, const char* lpTag2 );
|
|
|
|
//시스템
|
|
void OnMsgChangeAvatar ( struct STMSG_CHANGEAVATAR* ); ///< 아바타 변경 요청
|
|
void OnMsgReqClose ( struct STMSG_REQ_CLOSE* );
|
|
|
|
// MJ 2005/03/04 // 서버에서 받은 타겟으로 타겟 변경
|
|
void OnMsgTarget ( struct SMSG_TARGET* );
|
|
|
|
void OnMsgState ( struct SMSG_STATE* );
|
|
|
|
void OnMsgStatusChange ( struct SMSG_STATUS_CHANGE* pMsg );
|
|
|
|
void OnMsgProperty ( struct SMSG_PROPERTY* );
|
|
void OnMsgLevelUpdate ( struct SMSG_LEVEL_UPDATE* );
|
|
void OnMsgTargetStat ( struct SIMSG_UI_TARGET_STAT* );
|
|
void OnMsgHPMP ( struct SMSG_HPMP* );
|
|
void OnMsgSP ( struct SMSG_SP* pMsg );
|
|
void OnMsgExpUpdate ( struct SMSG_EXP_UPDATE* );
|
|
void OnMsgTargetInfo ( struct SIMSG_UI_TARGET_INFO* );
|
|
|
|
void OnMsgAttack ( struct SMSG_ATTACK* );
|
|
void OnMsgAttackDouble ( struct SMSG_ATTACK_DOUBLE* );
|
|
void OnMsgStateResult ( struct SMSG_STATE_RESULT* pMsg );
|
|
|
|
void OnMsgEmotion ( int nEmotionID ); //
|
|
|
|
//1:1 대련 시스템
|
|
//2009-02-05: hunee
|
|
void OnMsgCompeteRequest( struct SMSG_SC_COMPETE_REQUEST* pMsg ); ///< 대련 신청 요청
|
|
void OnMsgCompeteAnswer( struct SMSG_SC_COMPETE_ANSWER* pMsg ); ///< 대련 신청 응답
|
|
void OnMsgCompeteCountdown( struct SMSG_SC_COMPETE_COUNTDOWN* pMsg ); ///< 대련 시작 카운트 다운
|
|
void OnMsgCompeteStart( struct SMSG_SC_COMPETE_START* pMsg ); ///< 대련 시작
|
|
void OnMsgCompeteEnd( struct SMSG_SC_COMPETE_END* pMsg ); ///< 대련 종료
|
|
|
|
void OnAddedSkillList ( struct SMSG_ADDED_SKILL_LIST* pMsg );
|
|
void OnMsgSummonCardSkillList(struct SIMSG_UI_SUMMON_CARD_SKILL_LIST* pMsg); /// 2011.05.12 우클릭 유도 - prodongi
|
|
|
|
void OnMsgDoDecompose ( struct SMSG_DECOMPOSE_DO* pMsg );
|
|
void OnMsgChangeSkinColor ( struct SMSG_CHANGE_SKIN_COLOR* pMsg );
|
|
void UISyncData ( struct SGameMessage * pMsg );
|
|
|
|
void GetTargetName( std::string& strName );
|
|
void UpdateContributionPropData();
|
|
bool enableUseSkillAtPVP(SkillBaseEx* skill); /// 2011.09.27 대련중 사용 가능 체크 - prodongi
|
|
|
|
std::vector< AR_HANDLE > m_vLocalHandleList;
|
|
|
|
std::vector< DATA_CREATURE > m_vCreatureDataList; ///< 내 소환수 데이타
|
|
|
|
//NPC 관련
|
|
std::vector< AR_HANDLE > m_ClickNpcList; ///< 클릭한 NPC들 리스트
|
|
std::vector< AR_HANDLE > m_ClickStoreList; ///< 클릭한 Store들 리스트
|
|
|
|
|
|
bool m_bIsShowTarget;
|
|
bool m_bIsShowBattleAccept;
|
|
bool m_bPVPStart;
|
|
bool m_bDeathPVP;
|
|
bool m_bShowPVPIcon;
|
|
bool m_bCheckPVP;
|
|
|
|
|
|
class SGameTargetMgr* m_pTargetMgr; ///< 타겟 윈도우 지원
|
|
class SGameUISyncMng* m_pUISyncMng;
|
|
|
|
class SRaidMgr& m_RaidMgr;
|
|
// class SPartyMgr& m_PartyMgr;
|
|
class SGuildMgr& m_GuildMgr;
|
|
class SFriendMgr& m_FriendMgr;
|
|
class SCutMgr& m_CutMgr;
|
|
class STradeMgr& m_TradeMgr;
|
|
class SStorageMgr& m_StorageMgr;
|
|
class SMotionMgr& m_MotionMgr;
|
|
class SPlayerInfoMgr& m_PlayerInfoMgr;
|
|
class SInventoryMgr& m_InventoryMgr;
|
|
class SCreatureSlotMgr& m_CreatureSlotMgr;
|
|
class SSkillSlotMgr& m_SkillSlotMgr;
|
|
class SCreatureSkillSlotMgr& m_CreatureSkillSlotMgr;
|
|
class SGuildDataMgr& m_GuildDataMgr;
|
|
class SPetMgr& m_PetMgr; ///< 팻 시스템 메니저 // sonador #2.1.2.4.3 팻 조작 UI 연동
|
|
class SPetSkillMgr& m_PetSkillMgr; ///< 팻 스킬 메니저 // sonador #2.1.2.4.3 팻 조작 UI 연동
|
|
class CPartyListMgr& m_PartyMgr;
|
|
class STitleMgr& m_TitleMgr; // 2012. 4. 18 - marine 호칭매니저
|
|
|
|
std::vector< struct SMSG_STAT_INFO > m_vStatList;
|
|
|
|
CONTENT_STATE m_nContentState; ///< 클라이언트 상태
|
|
|
|
class SGameAvatarEx * m_pPlayer;
|
|
std::vector< class SGameAvatarEx * > m_vSummonList; ///< 컨트롤 가능한 소환수
|
|
class SGame * m_pGame;
|
|
|
|
DWORD m_dwTime;
|
|
|
|
std::string m_strNPC_Name;
|
|
|
|
FILE* m_pFRecord;
|
|
SGameAvatarEx* m_pQuestProp;
|
|
|
|
std::vector< class SGameAvatarEx * > m_vSkillPropList;
|
|
|
|
std::string m_strAllianceId;
|
|
std::string m_strPassword;
|
|
|
|
// 2011.12.07 If an active prop is clicked repeatedly, the skill may trigger multiple times,
|
|
// causing a double warp. To prevent this, an activation delay is added.
|
|
// This issue only occurs during movement inside the Kubrick Dungeon,
|
|
// so the check is applied only for skill 6904.
|
|
// A shared system would be ideal, but the current system cannot be changed,
|
|
// so this workaround is used. - prodongi
|
|
struct sActivatePropUpdate
|
|
{
|
|
enum { SKILL_ID = 6904 };
|
|
bool enable(int skillId) const;
|
|
void update(float elapsedtime);
|
|
void checkBegin(int skillId);
|
|
sUpdateTime<float> m_update;
|
|
};
|
|
sActivatePropUpdate m_activatePropUpdate;
|
|
|
|
/// 대련 상대 정보
|
|
struct Battle_Info
|
|
{
|
|
AR_TIME arTime; ///< 대련 시작 시간
|
|
AR_TIME arOldTime;
|
|
AR_HANDLE hTarget;
|
|
int nOldCount;
|
|
bool bStartBattle;
|
|
std::string strTargetName;
|
|
|
|
Battle_Info() : arTime( 0 )
|
|
, arOldTime( 0 )
|
|
, hTarget( 0 )
|
|
, nOldCount( 0 )
|
|
, bStartBattle( false )
|
|
{}
|
|
};
|
|
|
|
Battle_Info* m_pBattle_Info;
|
|
Battle_Info* m_pBattle_End_Info;
|
|
|
|
class SContentsManager* m_pContentsMgr; // #2.1.2.11.1
|
|
|
|
class cArenaJoinSituationChecker* m_arenaJoinSituationChecker; /// 2012.05.18 - prodongi
|
|
struct sArenaSystem* m_arenaSystem;
|
|
|
|
public:
|
|
std::string OnGMCMDSysCommand( const char *pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDSendTown( const char *pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDTargetRecord( const char * pChat );
|
|
std::string OnGMCMDAddStatus( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDLevelUp( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDLevelDown( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDEvolution( const char* pChat );
|
|
std::string OnGMCMDCreatureSP( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDCreatureHP( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDCreatureMP( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDCreatureEXP( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDCreatureBasicEXP( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDCreatureGrowthEXP( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDEvaluate( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDAdjust( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDSetAutoUser( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDUnsetAutoUser( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDCheckAutoUser( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDWarp( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDNotice( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDAnnounce( const char * pChat, std::vector < std::string >& vToken ); /// 2011.07.19
|
|
std::string OnGMCMDInvisible( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDShowPlayer( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDRupi( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDDebug( const char * pChat );
|
|
std::string OnGMCMDCamera( const char * pChat );
|
|
std::string OnGMCMDLevel( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDExp( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDJobPoint( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDJobLevel( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDProhibitChat( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDRegenerate( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDNPCRotation( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDNPCRotationOff( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDAutoMove( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDUI( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDQuest( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDQuestAdd( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnGMCMDAutoToolTip( const char * pChat, std::vector < std::string >& vToken );
|
|
|
|
std::string OnCMDHelp( const char * pChat );
|
|
std::string OnCMDReturnLobby( const char * pChat );
|
|
std::string OnCMDCreateSiegeRaidParty( const char * pChat, std::vector< std::string >& vToken );
|
|
/// sonador 3.5.1 던전 시즈 레벨 제한
|
|
std::string OnCMDAppointBattleCommander( const char* pChat, std::vector< std::string >& vToken );
|
|
std::string OnCMDDelegateBattleCommander( const char* pChat, std::vector< std::string >& vToken ); //
|
|
std::string OnCMDAssist( const char * pChat );
|
|
std::string OnCMDChangeGuildName( const char* pChat, std::vector< std::string >& vToken );
|
|
std::string OnCMDChangeName( const char* pChat, std::vector< std::string >& vToken );
|
|
std::string OnCMDCreateGuildAlliance( const char* pChat, std::vector< std::string >& vToken );
|
|
std::string OnCMDInviteGuildAlliance( const char* pChat, std::vector< std::string >& vToken );
|
|
std::string OnCMDKickGuildAlliance( const char* pChat, std::vector< std::string >& vToken );
|
|
std::string OnCMDJoinGuildAlliance( const char* pChat, std::vector< std::string >& vToken );
|
|
std::string OnCMDChangeGuildAllianceName( const char* pChat, std::vector< std::string >& vToken );
|
|
std::string OnCMDAcceptBattle( const char* pChat, std::vector< std::string >& vToken );
|
|
std::string OnCMDSit( const char * pChat );
|
|
std::string OnCMDStandUp( const char * pChat );
|
|
std::string OnCMDTownPropLimit( const char * pChat, std::vector < std::string >& vToken );
|
|
std::string OnCMDShopMode( const char * pChat );
|
|
std::string OnCMDRide( const char * pChat );
|
|
std::string OnCMDMountCreature( const char * pChat );
|
|
|
|
std::string OnCMDNormal( const char* pTarget );
|
|
std::string OnCMDBattle( const char* pTarget );
|
|
|
|
std::string OnCMDShop( const char* pChat );
|
|
std::string OnCMDUnion( const char* pChat );
|
|
|
|
std::string OnCMDAddPartyWindow( const char* pChat );
|
|
std::string OnCMDDelPartyWindow( const char* pChat );
|
|
std::string OnCMDTrade( const char* pChat );
|
|
|
|
|
|
|
|
std::string OnCMDMoveSoundOn( const char* pChat );
|
|
std::string OnCMDMoveSoundOff( const char* pChat );
|
|
|
|
std::string OnCMDPkOn( const char* pChat );
|
|
std::string OnCMDPkOff( const char* pChat );
|
|
|
|
std::string OnCMDSetVolume( const char* pChat, std::vector < std::string >& vToken );
|
|
std::string OnCMDMusicOff( const char* pChat );
|
|
|
|
std::string OnCMDGuildIcon( const char* pChat );
|
|
std::string OnCMDPartyShare( const char* pChat, std::vector < std::string >& vToken );
|
|
std::string OnCMDRun( const char* pChat, std::vector < std::string >& vToken );
|
|
|
|
std::string OnCMDCashItem( const char* pChat );
|
|
|
|
std::string OnCMDURLTest( const char* pChat );
|
|
#ifdef _COUNTRY_ME_
|
|
string OnCMDPangoTest( const char* pChat );
|
|
#endif
|
|
|
|
friend struct SGameCommand;
|
|
|
|
void OnMsgPartyMatchingAction( struct SMSG_PARTYMATCH_ACTION* pMsg );
|
|
void OnMsgMoveMap ( int worldPosX, int worldPosY );
|
|
|
|
};
|
|
|
|
extern int g_nMoveSpeed; |