?? npc.h
字號(hào):
// Npc.h: interface for the CNpc class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_NPC_H__600048EF_818F_40E9_AC07_0681F5D27D32__INCLUDED_)
#define AFX_NPC_H__600048EF_818F_40E9_AC07_0681F5D27D32__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "COM.h"
#include "Map.h"
#include "Packet.h"
#include "PathFind.h"
#include "Store.h"
#include "GuildFortress.h"
#include "EventItemNew.h"
#define CHANGE_PATH_STEP 2
#define CHANGE_PATH_RANGE 2
#define RANDOM_MOVE_LENGTH 10
#define NPC_ITEM_BAND 2000
#define NPCTYPE_MONSTER 0
#define NPCTYPE_NPC 1
#define NPCTYPE_DOOR 2
#define NPCTYPE_GUARD 3 // 嘿冠撈屈 版厚捍
#define MPCTYPE_GUARD_MOVE 4 // 倒酒促聰綽 版厚捍
#define NPCTYPE_GUILD_NPC 5 // 老館 鞘靛俊輯 拱扒闌 芭貳竅綽 NPC
#define NPCTYPE_GUILD_GUARD 6 // 老館 鞘靛俊輯 惑痢林函闌 焊齲竅綽 版厚捍
#define NPCTYPE_GUILD_MARK 7 // 阿 辨靛竅快膠俊 樂綽 辨靛付農(nóng) NPC
#define NPCTYPE_GUILD_DOOR 8 // 傍己傈俊輯 靜撈綽 鞏
#define GUILD_REPAIR_NPC_BAND 20000 // 頰惑登絹 薦府啊 鞘夸茄 NPC
#define GUILD_FORTRESS_NPC_BAND 25000 // 己闌 痢飛竅綽單 鞘夸茄 NPC
#define MAX_MAP_SIZE 10000 //@@@@@@@@@@@@@@@@@@@@@@@@@@@22
#define MAX_PATH_SIZE 100
#define NPC_ITEM_NUM 5
#define NPC_ATTACK_SHOUT 0
#define NPC_SUBTYPE_LONG_MON 1
#define NPC_TRACING_STEP 100
#define NPC_HAVE_USER_LIST 10
#define NPC_QUEST_MOP 10000 // 涅膠飄儈 各( 1 ~ 10000 )欄肺 葷儈
#define NPC_EVENT_MOP 31000 // 撈亥飄 各 鍋齲
#define NPC_EVENT_GREATE_MOP 30000 // 漂 撈亥飄 閣膠磐 鍋齲
#define NPC_MAGIC_ITEM 1500 // 1~10000鍋闌 扁霖
#define NPC_RARE_ITEM 1720 //
#define NPC_EVENT_CHANCE 40 // 撈亥飄 各老版快 概流犬伏苞 飯絹 犬伏匡 棵妨霖促. X 40
/*
#define NPC_EVENT_MOON 620 // 焊撫崔 靛酚犬啦
#define NPC_EVENT_SONGPEON 920 // 價(jià)祈/巋捍 靛肺犬啦
#define NPC_EVENT_BOX 1420 // 急拱惑磊 靛酚犬啦
#define EVENTITEM_SID_MOON 862 // 焊撫崔 Sid
#define EVENTITEM_SID_SONGPEON_01 863 // 價(jià)祈 Sid
#define EVENTITEM_SID_SONGPEON_11 864 //
#define EVENTITEM_SID_SONGPEON_31 865 //
#define EVENTITEM_SID_SONGPEON_51 866 //
#define EVENTITEM_SID_SONGPEON_71 867 //
#define EVENTITEM_SID_BOX 868 // 急拱惑磊 Sid
*/
// 眠籍 撈亥飄甫 農(nóng)府膠付膠 撈亥飄肺 函屈竅咯 柳青竅扁 困秦 犁瀝狼 竊
#define NPC_EVENT_MOON 620 // 魂鷗牢屈靛酚犬啦 5%
#define NPC_EVENT_SONGPEON 1120 // 阜措葷帕 靛肺犬啦 5%
#define NPC_EVENT_BOX 1420 // 農(nóng)府膠付膠 劇富 靛酚犬啦 3%
#define EVENTITEM_SID_MOON 873 // 魂鷗牢屈 Sid
#define EVENTITEM_SID_SONGPEON_01 872 // 阜措葷帕 Sid
#define EVENTITEM_SID_SONGPEON_11 864 //
#define EVENTITEM_SID_SONGPEON_31 865 //
#define EVENTITEM_SID_SONGPEON_51 866 //
#define EVENTITEM_SID_SONGPEON_71 867 //
#define EVENTITEM_SID_BOX 871 // 農(nóng)府膠付膠 劇富 Sid
#define NPC_GUILDHOUSE_BAND 10000 // 辨靛竅快膠俊 包訪等 NPC
//#define NPC_STORE_BAND
#define FORTRESS_BAND 1000 // 夸貨俊 加竅綽 NPC
#define NPC_EVENT_B_ITEM 57 // 裹儈雀汗力B 撈亥飄甫 困茄 烙矯 瀝狼
#define NPC_EVENT_ITEM 634 // 撈亥飄甫 困茄 烙矯 瀝狼
#define NPC_EVENT_INIT_STAT 756 // 必距 酒撈袍
#define NPC_EVENT_FLOWER 773 // 各撈 凍絹哆府綽 采官備聰 背券鼻
#define NPC_EVENT_LOTTO 796 // 捧膠墨聰 撈亥飄
// 傍己傈俊 靜烙
// 辨靛傈矯 薦府且 鞘夸己 撈 樂欄擱
#define NPC_NON_REPAIR_STATE 0 // 0 : 彌絆 惑怕
#define NPC_NEED_REPAIR_STATE 1 // 1 : 頰惑登絹 薦府 且 鞘夸啊 樂綽 惑怕
#define NPC_DEAD_REPAIR_STATE 2 // 2 : 肯傈灑 噶啊柳 惑怕
#define NPC_NCIRCLE_DEF_STATE 1
#define NPC_NCIRCLE_ATT_STATE 2
struct DynamicMapList
{
POINT map[NPC_MAP_SIZE];
};
struct NpcSkillList
{
short sSid;
BYTE tLevel;
BYTE tOnOff;
};
struct ExpUserList
{
TCHAR strUserID[CHAR_NAME_LENGTH + 1]; // 酒撈叼(某腐磐 撈撫)
int iUid;
int nDamage; // 鷗拜摹 欽
BOOL bIs;
};
struct TargetUser
{
int iUid;
int sHP;
int sMaxHP;
};
struct ItemUserRightlist
{
short uid;
int nDamage;
};
//typedef CTypedPtrArray <CPtrArray, ExpUserList*> arUserList;
typedef CArray <CPoint, CPoint> RandMoveArray; // 8規(guī)氫 RandomMove竅扁 困茄 Array
class CNpc
{
public:
CNpc();
virtual ~CNpc();
BOOL SetLive(COM* pCom);
BOOL FindEnemy(COM* pCom);
BOOL GetTargetPath(COM* pCom);
BOOL IsCloseTarget(COM* pCom, int nRange = 1);
BOOL IsCloseTarget(USER *pUser, int nRange = 1);
BOOL IsMovingEnd();
BOOL IsChangePath(COM* pCom, int nStep = CHANGE_PATH_STEP);
USER* GetUser(COM* pCom, int uid);
BOOL ResetPath(COM* pCom);
BOOL GetTargetPos(COM* pCom, CPoint& pt);
BOOL StepMove(COM* pCom, int nStep);
BOOL GetLastPoint(int sx, int sy, int& ex, int& ey);
protected:
void ClearPathFindData(void);
void InitSkill();
public:
void SendNpcInfoBySummon(COM* pCom);
BOOL CheckUserForNpc_Live(int x, int y);
DWORD GetItemThrowTime();
void UserListSort();
CPoint FindNearRandomPointForItem(int x, int y);
BOOL UpdateEventItemNewRemain(CEventItemNew* pEventItem);
void GiveItemToMap(COM* pCom, ItemList* pItem);
void GiveEventItemNewToUser(USER* pUser);
void SetISerialToItem(ItemList *pItem, int iEventItemSid);
int AreaAttack(COM* pCom);
void GetWideRangeAttack(COM* pCom, int x, int y, int damage, int except_uid);
int PsiAttack(COM* pCom);
void TestCode(COM *pCom, USER *pUser);
void SendFortressInsight(COM *pCom, TCHAR *pBuf, int nLength);
void SetMapAfterGuildWar();
void SetMapTypeBeforeGuildWar(COM *pCom);
void SendFortressNCircleColor(COM *pCom);
//void SetDoorDamagedInFortressWar(int nDamage, TCHAR *id, int uuid, COM *pCom);
void SetDoorDamagedInFortressWar(int nDamage, USER *pUser);
//void SetDamagedInFortressWar(int nDamage, TCHAR *id, int uuid, COM *pCom);
void SetDamagedInFortressWar(int nDamage, USER *pUser);
void SetFortressState();
BOOL UpdateEventItem(int sid);
int GetEventItemNum(COM *pCom);
void GiveEventItemToUser(USER *pUser);
void Send(USER* pUser, TCHAR* pBuf, int nLength);
int GetCityNumForVirtualRoom(int zone);
//void SetDamagedInGuildWar(int nDamage, TCHAR *id, int uuid, COM *pCom);
void SetDamagedInGuildWar(int nDamage, USER *pUser);
void SetGuildType(COM *pCom);
void EventNpcInit(int x, int y);
int IsMagicItem(COM* pCom, ItemList *pItem, int iTable);
int IsTransformedItem(int sid);
void ToTargetMove(COM* pCom, USER* pUser);
void NpcTrace(TCHAR* pMsg);
CPoint ConvertToServer(int x, int y);
void Init();
BOOL IsStepEnd();
BOOL PathFind(CPoint start, CPoint end);
void InitTarget(void);
void SendToRange(COM* pCom, char* temp_send, int index, int min_x, int min_y, int max_x, int max_y);
CPoint ConvertToClient(int x, int y);
void FillNpcInfo(char* temp_send, int& index, BYTE flag);
void SendUserInfoBySightChange(int dir_x, int dir_y, int prex, int prey, COM* pCom);
int GetFinalDamage(USER* pUser, int type = 1);
void DeleteNPC();
void SetFireDamage();
BOOL CheckClassItem(int artable, int armagic);
void ChangeSpeed(COM *pCom, int delayTime);
CNpc* GetNpc(int nid);
void InitUserList();
BOOL GetBackPoint(int &x, int &y);
void GetBackDirection(int sx, int sy, int ex, int ey);
void NpcBack(COM *pCom);
BOOL IsDamagedUserList(USER *pUser);
void FindFriend();
void NpcStrategy(BYTE type);
void NpcTypeParser();
void NpcFighting(COM *pCom);
void NpcTracing(COM *pCom);
void NpcAttacking(COM *pCom);
void NpcMoving(COM *pCom);
void NpcStanding(COM *pCom);
void NpcLive(COM *pCom);
void ChangeTarget(USER *pUser, COM* pCom);
BOOL IsSurround(int targetx, int targety);
BOOL CheckNpcRegenCount();
void IsUserInSight(COM *pCom);
void SendExpToUserList(COM *pCom);
BOOL SetDamage(int nDamage, int uid, COM *pCom);
void SetColdDamage(void);
CPoint FindNearRandomPoint(int xpos, int ypos);
BOOL IsMovable(int x, int y);
void GiveNpcHaveItem(COM *pCom);
int GetCriticalInitDamage(BOOL* bSuccessSkill);
int GetNormalInitDamage();
void SendAttackMiss(COM* pCom, int tuid);
void IsSkillSuccess(BOOL *bSuccess);
BYTE GetWeaponClass();
//yskang 0.3 void SendAttackSuccess(COM *pCom, int tuid, CByteArray &arAction1, CByteArray &arAction2, short sHP, short sMaxHP);
void SendAttackSuccess(COM *pCom, int tuid,BOOL bIsCritical, short sHP, short sMaxHP);//yskang 0.3
void GiveItemToMap(COM *pCom, int iItemNum, BOOL bItem, int iEventNum = 0);
BOOL GetDistance(int xpos, int ypos, int dist);
void SendInsight(COM* pCom, TCHAR *pBuf, int nLength);
void SendExactScreen(COM* pCom, TCHAR* pBuf, int nLength);
void SightRecalc(COM* pCom);
BOOL IsInRange();
BOOL RandomMove(COM* pCom);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -