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:
213
GameTools/GLOBALSCRIPT/Creature/NPC/NPCList.h
Normal file
213
GameTools/GLOBALSCRIPT/Creature/NPC/NPCList.h
Normal file
@@ -0,0 +1,213 @@
|
||||
// NPCList.h: interface for the CNPCList class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(AFX_NPCLIST_H__E20011A2_96E4_44B4_AB08_826651FF4122__INCLUDED_)
|
||||
#define AFX_NPCLIST_H__E20011A2_96E4_44B4_AB08_826651FF4122__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#include <windows.h>
|
||||
#include <vector>
|
||||
|
||||
#define TRIGGER_START 0
|
||||
#define TRIGGER_PUTON 1
|
||||
#define TRIGGER_GETON 2
|
||||
#define TRIGGER_TALK 3
|
||||
#define TRIGGER_KILL 4
|
||||
#define TRIGGER_PICK 5
|
||||
|
||||
#define EVENT_DISAPPEAR 0
|
||||
#define EVENT_GET 1
|
||||
#define EVENT_SPAWN 2
|
||||
#define EVENT_MONSTERDROP 3
|
||||
#define EVENT_DROP 4
|
||||
#define EVENT_AWARD 5
|
||||
#define EVENT_MSGBOX 6
|
||||
#define EVENT_PHASE 7
|
||||
|
||||
using namespace std;
|
||||
|
||||
typedef struct ITEMNode
|
||||
{
|
||||
unsigned short m_wKindItem;
|
||||
unsigned short m_wSkill;
|
||||
unsigned short m_wSkillLevel;
|
||||
unsigned short m_wTabPage;
|
||||
unsigned long m_dwIndexPosition;
|
||||
} ITEMNode, *LPITEMNode;
|
||||
|
||||
typedef struct DialogNode
|
||||
{
|
||||
unsigned short m_wKindWord;
|
||||
unsigned short m_wDialogFlag;
|
||||
unsigned long m_dwFlag;
|
||||
char *m_strWord;
|
||||
} DialogNode, *LPDialogNode;
|
||||
|
||||
typedef struct WarpNode
|
||||
{
|
||||
unsigned short m_wNumber;
|
||||
unsigned short m_wZoneNumber;
|
||||
float m_fPosX;
|
||||
float m_fPosY;
|
||||
float m_fPosZ;
|
||||
} WarpNode, *LPWarpNode;
|
||||
|
||||
typedef struct EventNode
|
||||
{
|
||||
unsigned long m_dwEventKind;
|
||||
unsigned long m_dwEventNumber;
|
||||
unsigned long m_dwEventAmount;
|
||||
float m_fPosX;
|
||||
float m_fPosY;
|
||||
float m_fPosZ;
|
||||
char *m_strWord;
|
||||
} EventNode, *LPEventNode;
|
||||
|
||||
typedef struct TriggerNode
|
||||
{
|
||||
unsigned long m_dwTriggerKind;
|
||||
unsigned long m_dwTriggerID;
|
||||
unsigned long m_dwZoneID;
|
||||
float m_fPosX;
|
||||
float m_fPosY;
|
||||
float m_fPosZ;
|
||||
float m_fDistance;
|
||||
vector<LPEventNode> m_lstEvent;
|
||||
} TriggerNode, *LPTriggerNode;
|
||||
|
||||
typedef struct PhaseNode
|
||||
{
|
||||
unsigned long m_dwPhaseNumber;
|
||||
char *m_strPhaseDesc;
|
||||
vector<LPTriggerNode> m_lstTrigger;
|
||||
} PhaseNode, *LPPhaseNode;
|
||||
|
||||
typedef struct QuestNode
|
||||
{
|
||||
unsigned short m_wQuestID;
|
||||
unsigned short m_wMaxPhase;
|
||||
unsigned short m_wMinLevel;
|
||||
unsigned short m_wMaxLevel;
|
||||
unsigned long m_dwClass;
|
||||
unsigned long m_dwCompletedQuest;
|
||||
char *m_strQuestTitle;
|
||||
vector<LPPhaseNode> m_lstPhase;
|
||||
} QuestNode, *LPQuestNode;
|
||||
|
||||
typedef struct NPCNode
|
||||
{
|
||||
unsigned long m_dwUID;
|
||||
unsigned long m_dwJob;
|
||||
float m_fDirection;
|
||||
float m_fPosX, m_fPosY, m_fPosZ;
|
||||
char *m_strNpcSkin;
|
||||
char *m_strNpcName;
|
||||
|
||||
vector<LPITEMNode> m_lstItem;
|
||||
vector<LPDialogNode> m_lstScript;
|
||||
vector<LPWarpNode> m_lstWarpZone;
|
||||
vector<LPQuestNode> m_lstQuest;
|
||||
|
||||
LPITEMNode GetITEMNode(unsigned short wKindItem)
|
||||
{
|
||||
vector<LPITEMNode>::iterator it;
|
||||
for(it = m_lstItem.begin(); it != m_lstItem.end(); it++)
|
||||
{
|
||||
if((*it)->m_wKindItem == wKindItem) return (*it);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
LPDialogNode GetScript(unsigned short wPage)
|
||||
{
|
||||
vector<LPDialogNode>::iterator it;
|
||||
for(it = m_lstScript.begin(); it != m_lstScript.end(); it++)
|
||||
{
|
||||
if((*it)->m_wKindWord == wPage) return (*it);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
LPWarpNode GetWarpNode(unsigned short wNumber)
|
||||
{
|
||||
vector<LPWarpNode>::iterator it;
|
||||
for(it = m_lstWarpZone.begin(); it != m_lstWarpZone.end(); it++)
|
||||
{
|
||||
if((*it)->m_wNumber == wNumber) return (*it);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
LPQuestNode GetQuestforID(unsigned short wQuestID)
|
||||
{
|
||||
vector<LPQuestNode>::iterator it;
|
||||
for(it = m_lstQuest.begin(); it != m_lstQuest.end(); it++)
|
||||
{
|
||||
if((*it)->m_wQuestID == wQuestID) return (*it);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
LPQuestNode GetQuestforNumber(unsigned short wNumber)
|
||||
{
|
||||
if(m_lstQuest.size() > wNumber)
|
||||
{
|
||||
return m_lstQuest[wNumber];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *GetGreeting(void)
|
||||
{
|
||||
vector<LPDialogNode>::iterator it;
|
||||
for(it = m_lstScript.begin(); it != m_lstScript.end(); it++)
|
||||
{
|
||||
if((*it)->m_wKindWord == 0) return (*it)->m_strWord;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void SearchQuestList(unsigned long m_dwLevel, unsigned long m_dwClass, unsigned short *m_lstCompleted, unsigned short m_wNumCompleted, unsigned short *m_lstQuestList);
|
||||
|
||||
} NPCNode, *LPNPCNode;
|
||||
|
||||
class CNPCList
|
||||
{
|
||||
protected:
|
||||
vector<LPNPCNode> m_lstNpcNode;
|
||||
unsigned long m_dwZone;
|
||||
|
||||
public:
|
||||
LPQuestNode m_lpQuestNode;
|
||||
LPPhaseNode m_lpPhaseNode;
|
||||
LPTriggerNode m_lpTriggerNode;
|
||||
|
||||
const char *GetGreeting(unsigned long dwUID);
|
||||
void DestroyNPCList(void);
|
||||
LPITEMNode GetITEMNode(unsigned short wKindItem);
|
||||
LPNPCNode GetNPCNode(unsigned long dwUID);
|
||||
LPNPCNode GetNPCNodeByOrder(unsigned long dwOrder) { return m_lstNpcNode[dwOrder]; }
|
||||
void AddNpc(LPNPCNode lpNewNode);
|
||||
BOOL IsExistNpc(unsigned long dwUID);
|
||||
CNPCList();
|
||||
~CNPCList();
|
||||
|
||||
BOOL Load(const char *strScriptFile, const char *strQuestFile, unsigned long dwZone = 1);
|
||||
void Create(void);
|
||||
unsigned long GetNpcNum(void) { return m_lstNpcNode.size(); }
|
||||
unsigned long GetZone(void) { return m_dwZone; }
|
||||
};
|
||||
|
||||
extern CNPCList g_NPCList;
|
||||
|
||||
#endif // !defined(AFX_NPCLIST_H__E20011A2_96E4_44B4_AB08_826651FF4122__INCLUDED_)
|
||||
Reference in New Issue
Block a user