Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
329
Server/RylServerProject/RylGameLibrary/Map/FieldMap/Cell.h
Normal file
329
Server/RylServerProject/RylGameLibrary/Map/FieldMap/Cell.h
Normal file
@@ -0,0 +1,329 @@
|
||||
#ifndef _CCELL_H_
|
||||
#define _CCELL_H_
|
||||
|
||||
#pragma once
|
||||
|
||||
#pragma warning(disable:4800)
|
||||
|
||||
#include <list>
|
||||
#include <algorithm>
|
||||
#include <climits>
|
||||
#include <boost/pool/pool_alloc.hpp>
|
||||
#include <Creature/CreatureStructure.h>
|
||||
|
||||
#include <Network/Packet/PacketStruct/CharMovepacket.h>
|
||||
#include <Network/Packet/PacketStruct/AddressPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharAttackPacketStruct.h>
|
||||
#include <Network/Packet/PacketStruct/CharItemPacketStruct.h>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
class CParty;
|
||||
class CCreature;
|
||||
class CAggresiveCreature;
|
||||
class CMonster;
|
||||
class CCharacter;
|
||||
class CSiegeObject;
|
||||
class CBuffer;
|
||||
struct PktBase;
|
||||
struct PktMVEx;
|
||||
|
||||
namespace Item
|
||||
{
|
||||
class CItem;
|
||||
};
|
||||
|
||||
|
||||
class CCell
|
||||
{
|
||||
public:
|
||||
|
||||
enum ErrorCode
|
||||
{
|
||||
S_SUCCESS = 0,
|
||||
S_AUTO_ROUTING = 1,
|
||||
|
||||
E_NOT_ENOUGH_MEMORY = 2,
|
||||
E_NOT_OWNER_OF_ITEM = 3,
|
||||
E_NOT_ITEM = 4,
|
||||
E_CREATE_ITEM_FAIL = 5,
|
||||
E_NOT_EXIST_GUILD = 6,
|
||||
E_GOLD_OVERFLOW = 7
|
||||
};
|
||||
|
||||
enum Const
|
||||
{
|
||||
CONNECT_NUM = 9,
|
||||
|
||||
CHECK_TIME = 100, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD><CFB4><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> (10<31><30>)
|
||||
ITEM_RIGHT_TIME = 1600, // <20>÷<EFBFBD><C3B7>̾ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10<31><30>, <20>ٽ<EFBFBD> 2<><32> 30<33><30> <20>Ŀ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
ITEM_LIFE_TIME = 1800, // <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD> <20>ð<EFBFBD> (3<><33>)
|
||||
NO_OWNER_TIME = 1500, // <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> (2<><32> 30<33><30>)
|
||||
|
||||
BROADCASTING_TIME = 10, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> Ÿ<><C5B8> (1<><31>)
|
||||
|
||||
MONEY_BIT = 0x80000000,
|
||||
TYPE_CHECK_BIT = 0xF0000000,
|
||||
ITEM_PROTOTYPE_ID_BIT = 0x0000FFFF,
|
||||
MAX_MONEY_AMOUNT = 0x0FFFFFFF
|
||||
};
|
||||
|
||||
enum TurnConst
|
||||
{
|
||||
TURN_OF_CHARACTER = 0,
|
||||
TURN_OF_SIEGE_OBJECT = 1,
|
||||
TURN_OF_MONSTER = 2,
|
||||
|
||||
TURN_END = 3
|
||||
};
|
||||
|
||||
enum Weather
|
||||
{
|
||||
WEATHER_FINE = 0, // <20><><EFBFBD><EFBFBD>
|
||||
WEATHER_RAIN = 1, // <20><>
|
||||
WEATHER_SNOW = 2, // <20><>
|
||||
|
||||
MAX_WEATHER = 3
|
||||
};
|
||||
|
||||
enum ItemAutoRouting
|
||||
{
|
||||
NONE = 0, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
|
||||
PARTY = 1, // <20><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
GUILD = 2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
enum ConnectCell
|
||||
{
|
||||
NO = 0,
|
||||
UP = 1,
|
||||
DOWN = 2,
|
||||
LEFT = 3,
|
||||
RIGHT = 4,
|
||||
UPPERLEFT = 5,
|
||||
UPPERRIGHT = 6,
|
||||
LOWERLEFT = 7,
|
||||
LOWERRIGHT = 8
|
||||
};
|
||||
|
||||
enum CellSize
|
||||
{
|
||||
CELL_SIZE_DEFAULT = 128,
|
||||
CELL_SIZE_BATTLE_SERVER = 70,
|
||||
CELL_DISTANCE = 32,
|
||||
CELL_RESOLUTION = 5
|
||||
};
|
||||
static unsigned char ms_CellSize;
|
||||
|
||||
struct IDField
|
||||
{
|
||||
enum
|
||||
{
|
||||
MAX_UID = UCHAR_MAX
|
||||
};
|
||||
|
||||
unsigned long dwUID; // <20><><EFBFBD><EFBFBD>ũ ID (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ʴ<EFBFBD><CAB4><EFBFBD>...)
|
||||
unsigned short wMapIndex; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ε<EFBFBD><CEB5><EFBFBD>
|
||||
unsigned char cCellX; // <20><> <20>ε<EFBFBD><CEB5><EFBFBD> X
|
||||
unsigned char cCellZ; // <20><> <20>ε<EFBFBD><CEB5><EFBFBD> Z
|
||||
};
|
||||
|
||||
struct ItemInfo
|
||||
{
|
||||
Position m_Pos; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ
|
||||
|
||||
union
|
||||
{
|
||||
unsigned __int64 m_nUniqueID; // <20><><EFBFBD><EFBFBD>ũ ID
|
||||
IDField m_Field;
|
||||
|
||||
} UID;
|
||||
|
||||
Item::CItem* m_lpItem; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwGold; // <20><>
|
||||
|
||||
unsigned long m_dwOwnerID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned short m_wPulse; // <20>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||||
|
||||
unsigned char m_cAutoRouting; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>? (ItemAutoRouting enum <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
ItemInfo();
|
||||
void MakeFieldObject(FieldObject& fieldObject);
|
||||
};
|
||||
|
||||
typedef std::list<CMonster*, boost::fast_pool_allocator<CMonster*> > MonsterList;
|
||||
typedef std::list<CCharacter*, boost::fast_pool_allocator<CCharacter*> > CharacterList;
|
||||
typedef std::list<ItemInfo, boost::fast_pool_allocator<ItemInfo> > ItemList;
|
||||
typedef std::list<CSiegeObject*, boost::fast_pool_allocator<CSiegeObject*> > SiegeObjectList;
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// <20>ʱ<EFBFBD>ȭ
|
||||
|
||||
CCell();
|
||||
~CCell();
|
||||
|
||||
|
||||
void Initialize(unsigned char cIndexX, unsigned char cIndexZ); // <20><> <20><>ǥ<EFBFBD><C7A5> <20>ʱ<EFBFBD>ȭ<EFBFBD>ϰ<EFBFBD>, <20><>Ʈ<EFBFBD><C6AE> <20><>ũ<EFBFBD><C5A9> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
void SetMapIndex(unsigned short wMapIndex) { m_wMapIndex = wMapIndex; }
|
||||
unsigned short GetMapIndex() { return m_wMapIndex; }
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// interface
|
||||
|
||||
CCell* GetConnectCell(unsigned int Dir);
|
||||
void SetConnectCell(unsigned int Dir, CCell* lpConnectedCell);
|
||||
bool IsNearCell(CCell* lpNearCell);
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned char GetIndexX() const { return m_cIndexX; }
|
||||
unsigned char GetIndexZ() const { return m_cIndexZ; }
|
||||
size_t GetMonsterNum() const { return m_lstMonster.size(); }
|
||||
size_t GetCharacterNum() const { return m_lstCharacter.size(); }
|
||||
size_t GetItemNum() const { return m_lstItem.size(); }
|
||||
size_t GetSiegeObjectNum() const { return m_lstSiegeObject.size(); }
|
||||
size_t GetNearCellCharacterNum() const;
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD> ũ<><C5A9><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
void SetCreature(unsigned long dwCID, CCreature* lpCreature, CCell* lpLastLogoutCell = 0);
|
||||
void DeleteCreature(unsigned long dwCID, CCell* lpPrepareLoginCell = 0);
|
||||
CCreature* GetCreature(unsigned long dwCID);
|
||||
|
||||
CAggresiveCreature* GetFirstAggresiveCreature();
|
||||
CAggresiveCreature* GetNextAggresiveCreature();
|
||||
|
||||
void KillAll(CCharacter* lpAttacker);
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3>
|
||||
|
||||
bool IsMonster() const { return !(m_lstMonster.empty()); }
|
||||
CMonster* GetFirstMonster();
|
||||
CMonster* GetNextMonster() { return (++m_MonsterIt != m_lstMonster.end()) ? *m_MonsterIt : NULL; }
|
||||
|
||||
void LogoutAllMonster() { m_lstMonster.clear(); }
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> ó<><C3B3>
|
||||
|
||||
bool IsSiegeObject() { return !(m_lstSiegeObject.empty()); }
|
||||
CSiegeObject* GetFirstAirShip();
|
||||
CSiegeObject* GetNextAirShip();
|
||||
CSiegeObject* GetFirstSiegeObject();
|
||||
CSiegeObject* GetNextSiegeObject();
|
||||
|
||||
void UpgradeByEmblem(unsigned long dwCID);
|
||||
void DegradeByEmblem();
|
||||
|
||||
bool IsDetectionCell() { return ( 0 != m_dwCastleEmblemCID ); }
|
||||
void DetectionAttack(CSiegeObject* lpEmblem, CAggresiveCreature* lpTargetCreature);
|
||||
bool SendStealthInfo(CCharacter& character, bool bUseStealth);
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3>
|
||||
|
||||
bool IsCharacter() { return !(m_lstCharacter.empty()); }
|
||||
CCharacter* GetFirstCharacter();
|
||||
CCharacter* GetNextCharacter() { return (++m_CharacterIt != m_lstCharacter.end()) ? *m_CharacterIt : NULL; }
|
||||
|
||||
template<typename FnProcess>
|
||||
inline void ProcessAllMonster(FnProcess fnProcess)
|
||||
{
|
||||
std::for_each(m_lstMonster.begin(), m_lstMonster.end(), fnProcess);
|
||||
}
|
||||
|
||||
template<typename FnProcess>
|
||||
inline void ProcessAllCharacter(FnProcess fnProcess)
|
||||
{
|
||||
std::for_each(m_lstCharacter.begin(), m_lstCharacter.end(), fnProcess);
|
||||
}
|
||||
|
||||
void RespawnAllCharacter(unsigned char cExceptNation);
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3>
|
||||
|
||||
bool IsItem(void) { return !(m_lstItem.empty()); }
|
||||
|
||||
void SetItem(const Position& Pos, Item::CItem* lpItem, unsigned long dwGold,
|
||||
unsigned long dwOwnerID, unsigned char cAutoRouting, CCell::ItemInfo& cellItemInfo);
|
||||
|
||||
CCell::ErrorCode GetItem(unsigned long dwCreatureID, unsigned __int64 nItemInfoID,
|
||||
Item::CItem** lppItem, unsigned long& dwMoney_Out);
|
||||
|
||||
void CheckDeleteItem(void);
|
||||
void DeleteAllItem(void);
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD>
|
||||
|
||||
void PrepareBroadCast();
|
||||
void BroadCast(unsigned long dwCurrentPulse);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6>, Wrap<61><70><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> Wrap<61><70>. srvState<74><65> usError<6F><72> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.)
|
||||
// <20><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
|
||||
void SendAllNearCellCharacter(const PktBase* lpPktBase, unsigned short usLength, unsigned char cCMD);
|
||||
void SendAllCharacter(const PktBase* lpPktBase, unsigned short usLength, unsigned char cCMD);
|
||||
|
||||
void SendNowAllNearCellCharacter(const char* szData, unsigned short usLength, unsigned char cCMD);
|
||||
void SendNowAllCharacter(const char* szData, unsigned short usLength, unsigned char cCMD);
|
||||
|
||||
void SendAttackInfo(unsigned long AttackerID_In, const AtType &AtType_In,
|
||||
unsigned char DefenserNum_In, DefenserNode* lpNode_In);
|
||||
|
||||
void SendCastObjectInfo(unsigned long SenderID, unsigned long ReceiverID, CastObject& CastObject_In);
|
||||
|
||||
private:
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// <20><>Ŷ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD>ϴ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD>)
|
||||
|
||||
void SendPullDownInfo(unsigned long dwOwnerID, ItemInfo& itemInfo);
|
||||
void SendPickUpInfo(unsigned long dwCreatureID, unsigned __int64 nItemInfoID);
|
||||
|
||||
void SendCellLogin(CAggresiveCreature* lpAggresiveCreature, CCell* lpLastLogoutCell);
|
||||
void SendCellLogout(CAggresiveCreature* lpAggresiveCreature, CCell* lpPrepareLoginCell);
|
||||
|
||||
// <20><><EFBFBD>۸<EFBFBD> <20><><EFBFBD><EFBFBD> Release<73>Ѵ<EFBFBD>.
|
||||
static void ReleaseAllBuffer(CBuffer*& lpBuffer);
|
||||
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
CCell* m_lpConnectCell[CONNECT_NUM]; // <20>ֺ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ. <20>ڱ<EFBFBD> <20>ڽŵ<DABD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
CCell* m_lpSortedConnectedCell[CONNECT_NUM]; // <20>ֺ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>迭.
|
||||
|
||||
CharacterList m_lstCharacter;
|
||||
MonsterList m_lstMonster;
|
||||
ItemList m_lstItem;
|
||||
SiegeObjectList m_lstSiegeObject; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> CSiegeObjectMgr <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
|
||||
MonsterList::iterator m_MonsterIt; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... <20><> <20>༮<EFBFBD><E0BCAE> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20>༮<EFBFBD><E0BCAE> <20><EFBFBD><DEB6><EFBFBD> <20>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
CharacterList::iterator m_CharacterIt; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... <20><> <20>༮<EFBFBD><E0BCAE> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20>༮<EFBFBD><E0BCAE> <20><EFBFBD><DEB6><EFBFBD> <20>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
SiegeObjectList::iterator m_SiegeObjectIt; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... <20><> <20>༮<EFBFBD><E0BCAE> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20>༮<EFBFBD><E0BCAE> <20><EFBFBD><DEB6><EFBFBD> <20>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
||||
|
||||
CBuffer* m_lpBroadcast2ndBuffer; // <20><><EFBFBD>ε<EFBFBD>ij<EFBFBD><C4B3>Ʈ 2nd<6E><64><EFBFBD><EFBFBD>(<28><> <20><><EFBFBD>ε<EFBFBD>ij<EFBFBD><C4B3>Ʈ <20><><EFBFBD><EFBFBD>, ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD>)
|
||||
|
||||
unsigned long m_dwCastleEmblemCID; // <20><> <20><>¡<EFBFBD><C2A1><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD≯<EFBFBD> <20><>¡<EFBFBD><C2A1><EFBFBD><EFBFBD> CID<49><44> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD>.
|
||||
|
||||
unsigned short m_wMapIndex; // <20><> <20>ε<EFBFBD><CEB5><EFBFBD>
|
||||
unsigned char m_cIndexX; // <20><> X<><58>ǥ
|
||||
unsigned char m_cIndexZ; // <20><> Z<><5A>ǥ
|
||||
|
||||
unsigned char m_cTurnOfGetAggresiveCreature;
|
||||
|
||||
CCell::Weather m_eWeather; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user