Files
Client/Server/AdminTool/AdminToolLibrary/ToolQuestList.cpp
LGram16 dd97ddec92 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>
2025-11-29 20:17:20 +09:00

1086 lines
34 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <ScriptEngine/ScriptEngine.h>
#include "ToolQuestList.h"
CQuestList g_QuestList;
static BOOL bFalseEvent;
static void ScriptErrorMessage(const char *msg)
{
MessageBox(NULL, msg, "Script Error", MB_OK);
}
static void QuestStartLevel(int nQuestID, int nMinLevel, int nMaxLevel, int nClass, int nCompleteClass, int nNation, BOOL bNationDependent)
{
g_QuestList.m_lpQuestNode = new QuestNode;
g_QuestList.m_lpQuestNode->m_wQuestID = (unsigned short)nQuestID;
g_QuestList.m_lpQuestNode->m_wMinLevel = (unsigned short)nMinLevel;
g_QuestList.m_lpQuestNode->m_wMaxLevel = (unsigned short)nMaxLevel;
g_QuestList.m_lpQuestNode->m_dwMinFame = (unsigned long)0;
g_QuestList.m_lpQuestNode->m_dwMaxFame = (unsigned long)0;
g_QuestList.m_lpQuestNode->m_dwClass = nClass;
g_QuestList.m_lpQuestNode->m_usNation = (unsigned short)nNation;
g_QuestList.m_lpQuestNode->m_bNationDependent = bNationDependent;
g_QuestList.m_lpQuestNode->m_usBonusSkillPoint = 0;
if( 0xFFFF == nCompleteClass )
{
g_QuestList.m_lpQuestNode->m_dwCompletedQuest = 0;
g_QuestList.m_lpQuestNode->m_bInvisible = TRUE;
}
else
{
g_QuestList.m_lpQuestNode->m_dwCompletedQuest = nCompleteClass;
g_QuestList.m_lpQuestNode->m_bInvisible = FALSE;
}
g_QuestList.m_lpQuestNode->m_wQuestType = 0;
g_QuestList.m_lpQuestNode->m_fPosX = 0.0f;
g_QuestList.m_lpQuestNode->m_fPosY = 0.0f;
g_QuestList.m_lpQuestNode->m_fPosZ = 0.0f;
g_QuestList.m_lpQuestNode->m_strQuestTitle = NULL;
g_QuestList.m_lpQuestNode->m_strQuestDesc = NULL;
g_QuestList.m_lpQuestNode->m_strQuestLevel = NULL;
g_QuestList.m_lpQuestNode->m_strQuestAward = NULL;
strcpy(g_QuestList.m_lpQuestNode->m_strIconTexture, "Quest_misc01.dds");
g_QuestList.m_lpQuestNode->m_wPosX1 = 42; g_QuestList.m_lpQuestNode->m_wPosY1 = 114;
g_QuestList.m_lpQuestNode->m_wPosX2 = 84; g_QuestList.m_lpQuestNode->m_wPosY2 = 156;
g_QuestList.m_lpQuestNode->m_bSave = FALSE;
g_QuestList.m_lstQuestNode.push_back(g_QuestList.m_lpQuestNode);
}
static void QuestStartFame(int nQuestID, int nMinFame, int nMaxFame, int nClass, int nCompleteClass, int nNation, BOOL bNationDependent)
{
g_QuestList.m_lpQuestNode = new QuestNode;
g_QuestList.m_lpQuestNode->m_wQuestID = (unsigned short)nQuestID;
g_QuestList.m_lpQuestNode->m_wMinLevel = (unsigned short)0;
g_QuestList.m_lpQuestNode->m_wMaxLevel = (unsigned short)0;
g_QuestList.m_lpQuestNode->m_dwMinFame = (unsigned long)nMinFame;
g_QuestList.m_lpQuestNode->m_dwMaxFame = (unsigned long)nMaxFame;
g_QuestList.m_lpQuestNode->m_dwClass = nClass;
g_QuestList.m_lpQuestNode->m_usNation = (unsigned short)nNation;
g_QuestList.m_lpQuestNode->m_bNationDependent = bNationDependent;
g_QuestList.m_lpQuestNode->m_usBonusSkillPoint = 0;
if( 0xFFFF == nCompleteClass )
{
g_QuestList.m_lpQuestNode->m_dwCompletedQuest = 0;
g_QuestList.m_lpQuestNode->m_bInvisible = TRUE;
}
else
{
g_QuestList.m_lpQuestNode->m_dwCompletedQuest = nCompleteClass;
g_QuestList.m_lpQuestNode->m_bInvisible = FALSE;
}
g_QuestList.m_lpQuestNode->m_wQuestType = 0;
g_QuestList.m_lpQuestNode->m_fPosX = 0.0f;
g_QuestList.m_lpQuestNode->m_fPosY = 0.0f;
g_QuestList.m_lpQuestNode->m_fPosZ = 0.0f;
g_QuestList.m_lpQuestNode->m_strQuestTitle = NULL;
g_QuestList.m_lpQuestNode->m_strQuestDesc = NULL;
g_QuestList.m_lpQuestNode->m_strQuestLevel = NULL;
g_QuestList.m_lpQuestNode->m_strQuestAward = NULL;
strcpy(g_QuestList.m_lpQuestNode->m_strIconTexture, "Quest_misc01.dds");
g_QuestList.m_lpQuestNode->m_wPosX1 = 42; g_QuestList.m_lpQuestNode->m_wPosY1 = 114;
g_QuestList.m_lpQuestNode->m_wPosX2 = 84; g_QuestList.m_lpQuestNode->m_wPosY2 = 156;
g_QuestList.m_lpQuestNode->m_bSave = FALSE;
g_QuestList.m_lstQuestNode.push_back(g_QuestList.m_lpQuestNode);
}
static void QuestEnd()
{
g_QuestList.m_lpQuestNode->m_wMaxPhase = g_QuestList.m_lpQuestNode->m_lstPhase.size();
g_QuestList.m_lpQuestNode = NULL;
g_QuestList.m_lpPhaseNode = NULL;
g_QuestList.m_lpTriggerNode = NULL;
}
static void QuestType(unsigned short wQuestType, unsigned short wPartyQuest)
{
if (0 != wPartyQuest)
{
wQuestType |= PARTY_QUEST_BIT;
}
g_QuestList.m_lpQuestNode->m_wQuestType = wQuestType;
}
static void QuestArea(int nZone, float fX, float fY, float fZ, float fDist)
{
g_QuestList.m_lpQuestNode->m_fPosX = fX * 100.0f;
g_QuestList.m_lpQuestNode->m_fPosY = fY * 100.0f;
g_QuestList.m_lpQuestNode->m_fPosZ = fZ * 100.0f;
g_QuestList.m_lpQuestNode->m_fDistance = fDist * 100.0f;
g_QuestList.m_lpQuestNode->m_dwZoneID = nZone;
}
static void QuestTitle(const char *strQuestTitle)
{
if (g_QuestList.m_lpQuestNode)
{
char *strScript = new char[strlen(strQuestTitle) + 1];
strcpy(strScript, strQuestTitle);
g_QuestList.m_lpQuestNode->m_strQuestTitle = strScript;
}
}
static void QuestDesc(const char *strQuestDesc)
{
if (g_QuestList.m_lpQuestNode)
{
char *strScript = new char[strlen(strQuestDesc) + 1];
strcpy(strScript, strQuestDesc);
g_QuestList.m_lpQuestNode->m_strQuestDesc = strScript;
}
}
static void QuestShortDesc(const char *strQuestDesc)
{
if (g_QuestList.m_lpQuestNode)
{
char *strScript = new char[strlen(strQuestDesc) + 1];
strcpy(strScript, strQuestDesc);
g_QuestList.m_lpQuestNode->m_strQuestShortDesc = strScript;
}
}
static void QuestIcon(const char *strIconTexture, int nPosX1, int nPosY1, int nPosX2, int nPosY2)
{
if (g_QuestList.m_lpQuestNode)
{
strcpy(g_QuestList.m_lpQuestNode->m_strIconTexture, strIconTexture);
g_QuestList.m_lpQuestNode->m_wPosX1 = nPosX1;
g_QuestList.m_lpQuestNode->m_wPosY1 = nPosY1;
g_QuestList.m_lpQuestNode->m_wPosX2 = nPosX2;
g_QuestList.m_lpQuestNode->m_wPosY2 = nPosY2;
}
}
static void QuestCompleteSave(BOOL bSave)
{
if (g_QuestList.m_lpQuestNode)
{
if (bSave)
g_QuestList.m_lpQuestNode->m_bSave = TRUE;
else
g_QuestList.m_lpQuestNode->m_bSave = FALSE;
}
}
static void QuestLevel(const char *strQuestLevel)
{
if (g_QuestList.m_lpQuestNode)
{
char *strScript = new char[strlen(strQuestLevel) + 1];
strcpy(strScript, strQuestLevel);
g_QuestList.m_lpQuestNode->m_strQuestLevel = strScript;
}
}
static void QuestAward(const char *strQuestAward)
{
if (g_QuestList.m_lpQuestNode)
{
char *strScript = new char[strlen(strQuestAward) + 1];
strcpy(strScript, strQuestAward);
g_QuestList.m_lpQuestNode->m_strQuestAward = strScript;
}
}
static void QuestSkillPointBonus(int nBonusNum)
{
if( g_QuestList.m_lpQuestNode )
{
g_QuestList.m_lpQuestNode->m_usBonusSkillPoint = (unsigned short)nBonusNum;
}
}
static void QuestCancelItemDel(bool bDelLinkItem)
{
}
static void QuestAbilityPoint(int nBonusNum)
{
if( g_QuestList.m_lpQuestNode )
{
g_QuestList.m_lpQuestNode->m_usBonusAbilityPoint = (unsigned short)nBonusNum;
}
}
static void AddPhase(int nZoneID, int nPhaseNumber, const char *strQuestDesc)
{
if (g_QuestList.m_lpQuestNode)
{
g_QuestList.m_lpPhaseNode = new PhaseNode;
g_QuestList.m_lpPhaseNode->m_dwZoneID = nZoneID;
g_QuestList.m_lpPhaseNode->m_dwPhaseNumber = nPhaseNumber;
char *strScript = new char[strlen(strQuestDesc) + 1];
strcpy(strScript, strQuestDesc);
g_QuestList.m_lpPhaseNode->m_strPhaseDesc = strScript;
g_QuestList.m_lpQuestNode->m_lstPhase.push_back(g_QuestList.m_lpPhaseNode);
g_QuestList.m_lpTriggerNode = NULL;
}
}
static void Phase_Target(int nType, int nPosX, int nPosY)
{
if (g_QuestList.m_lpPhaseNode)
{
TargetPos tpAdd;
tpAdd.m_iType = nType;
tpAdd.m_dwPosX = (unsigned long)nPosX;
tpAdd.m_dwPosY = (unsigned long)nPosY;
g_QuestList.m_lpPhaseNode->m_lstTargetPos.push_back(tpAdd);
}
}
static void Trigger_Start(void)
{
if (g_QuestList.m_lpPhaseNode)
{
g_QuestList.m_lpTriggerNode = new TriggerNode;
g_QuestList.m_lpTriggerNode->m_dwTriggerKind = TRIGGER_START;
g_QuestList.m_lpTriggerNode->m_dwTriggerID = 0;
g_QuestList.m_lpTriggerNode->m_dwZoneID = 0;
g_QuestList.m_lpTriggerNode->m_dwMaxCount = 1;
g_QuestList.m_lpTriggerNode->m_dwLevel = 0;
g_QuestList.m_lpTriggerNode->m_fDistance = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosX = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosY = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosZ = 0.0f;
bFalseEvent = FALSE;
g_QuestList.m_lpPhaseNode->m_lstTrigger.push_back(g_QuestList.m_lpTriggerNode);
}
}
static void Trigger_Puton(int nItemID, int nZoneID, float fPosX, float fPosY, float fPosZ, float fDistance)
{
if (g_QuestList.m_lpPhaseNode)
{
g_QuestList.m_lpTriggerNode = new TriggerNode;
g_QuestList.m_lpTriggerNode->m_dwTriggerKind = TRIGGER_PUTON;
g_QuestList.m_lpTriggerNode->m_dwTriggerID = nItemID;
g_QuestList.m_lpTriggerNode->m_dwZoneID = nZoneID;
g_QuestList.m_lpTriggerNode->m_dwMaxCount = 1;
g_QuestList.m_lpTriggerNode->m_dwLevel = 0;
g_QuestList.m_lpTriggerNode->m_fDistance = fDistance * 100.0f;
g_QuestList.m_lpTriggerNode->m_fPosX = fPosX * 100.0f;
g_QuestList.m_lpTriggerNode->m_fPosY = fPosY * 100.0f;
g_QuestList.m_lpTriggerNode->m_fPosZ = fPosZ * 100.0f;
bFalseEvent = FALSE;
g_QuestList.m_lpPhaseNode->m_lstTrigger.push_back(g_QuestList.m_lpTriggerNode);
}
}
static void Trigger_Geton(int nItemID, int nZoneID, float fPosX, float fPosY, float fPosZ, float fDistance)
{
if (g_QuestList.m_lpPhaseNode)
{
g_QuestList.m_lpTriggerNode = new TriggerNode;
g_QuestList.m_lpTriggerNode->m_dwTriggerKind = TRIGGER_GETON;
g_QuestList.m_lpTriggerNode->m_dwTriggerID = nItemID;
g_QuestList.m_lpTriggerNode->m_dwZoneID = nZoneID;
g_QuestList.m_lpTriggerNode->m_dwMaxCount = 1;
g_QuestList.m_lpTriggerNode->m_dwLevel = 0;
g_QuestList.m_lpTriggerNode->m_fDistance = fDistance * 100.0f;
g_QuestList.m_lpTriggerNode->m_fPosX = fPosX * 100.0f;
g_QuestList.m_lpTriggerNode->m_fPosY = fPosY * 100.0f;
g_QuestList.m_lpTriggerNode->m_fPosZ = fPosZ * 100.0f;
bFalseEvent = FALSE;
g_QuestList.m_lpPhaseNode->m_lstTrigger.push_back(g_QuestList.m_lpTriggerNode);
}
}
static void Trigger_Talk(int nNpcID)
{
if (g_QuestList.m_lpPhaseNode)
{
g_QuestList.m_lpTriggerNode = new TriggerNode;
g_QuestList.m_lpTriggerNode->m_dwTriggerKind = TRIGGER_TALK;
g_QuestList.m_lpTriggerNode->m_dwTriggerID = nNpcID;
g_QuestList.m_lpTriggerNode->m_dwZoneID = 0;
g_QuestList.m_lpTriggerNode->m_dwMaxCount = 1;
g_QuestList.m_lpTriggerNode->m_dwLevel = 0;
g_QuestList.m_lpTriggerNode->m_fDistance = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosX = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosY = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosZ = 0.0f;
bFalseEvent = FALSE;
g_QuestList.m_lpPhaseNode->m_lstTrigger.push_back(g_QuestList.m_lpTriggerNode);
}
}
static void Trigger_Kill(int nCount, int nMonsterID)
{
if (g_QuestList.m_lpPhaseNode)
{
g_QuestList.m_lpTriggerNode = new TriggerNode;
g_QuestList.m_lpTriggerNode->m_dwTriggerKind = TRIGGER_KILL;
g_QuestList.m_lpTriggerNode->m_dwTriggerID = nMonsterID;
g_QuestList.m_lpTriggerNode->m_dwZoneID = 0;
g_QuestList.m_lpTriggerNode->m_dwMaxCount = nCount;
g_QuestList.m_lpTriggerNode->m_dwLevel = 0;
g_QuestList.m_lpTriggerNode->m_fDistance = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosX = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosY = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosZ = 0.0f;
bFalseEvent = FALSE;
g_QuestList.m_lpPhaseNode->m_lstTrigger.push_back(g_QuestList.m_lpTriggerNode);
}
}
static void Trigger_Pick(int nCount, int nItemID)
{
if (g_QuestList.m_lpPhaseNode)
{
g_QuestList.m_lpTriggerNode = new TriggerNode;
g_QuestList.m_lpTriggerNode->m_dwTriggerKind = TRIGGER_PICK;
g_QuestList.m_lpTriggerNode->m_dwTriggerID = nItemID;
g_QuestList.m_lpTriggerNode->m_dwZoneID = 0;
g_QuestList.m_lpTriggerNode->m_dwMaxCount = nCount;
g_QuestList.m_lpTriggerNode->m_dwLevel = 0;
g_QuestList.m_lpTriggerNode->m_fDistance = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosX = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosY = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosZ = 0.0f;
bFalseEvent = FALSE;
g_QuestList.m_lpPhaseNode->m_lstTrigger.push_back(g_QuestList.m_lpTriggerNode);
}
}
static void Trigger_Fame(int nFame)
{
if (g_QuestList.m_lpPhaseNode)
{
g_QuestList.m_lpTriggerNode = new TriggerNode;
g_QuestList.m_lpTriggerNode->m_dwTriggerKind = TRIGGER_FAME;
g_QuestList.m_lpTriggerNode->m_dwTriggerID = nFame;
g_QuestList.m_lpTriggerNode->m_dwZoneID = 0;
g_QuestList.m_lpTriggerNode->m_dwMaxCount = 1;
g_QuestList.m_lpTriggerNode->m_dwLevel = 0;
g_QuestList.m_lpTriggerNode->m_fDistance = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosX = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosY = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosZ = 0.0f;
bFalseEvent = FALSE;
g_QuestList.m_lpPhaseNode->m_lstTrigger.push_back(g_QuestList.m_lpTriggerNode);
}
}
static void Trigger_AbilityTalk(int nAbilityID, int nAbilityLV, int nNPCID, const char* strElseMsg)
{
if (g_QuestList.m_lpPhaseNode)
{
g_QuestList.m_lpTriggerNode = new TriggerNode;
g_QuestList.m_lpTriggerNode->m_dwTriggerKind = TRIGGER_ABILITY_TALK;
g_QuestList.m_lpTriggerNode->m_dwTriggerID = nNPCID;
g_QuestList.m_lpTriggerNode->m_dwZoneID = nAbilityID;
g_QuestList.m_lpTriggerNode->m_dwMaxCount = 1;
g_QuestList.m_lpTriggerNode->m_dwLevel = nAbilityLV;
g_QuestList.m_lpTriggerNode->m_fDistance = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosX = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosY = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosZ = 0.0f;
bFalseEvent = FALSE;
if (0 != strcmp(strElseMsg, ""))
{
g_QuestList.m_lpTriggerNode->m_strElseMsg = strElseMsg;
}
else
{
g_QuestList.m_lpTriggerNode->m_strElseMsg.clear();
}
g_QuestList.m_lpPhaseNode->m_lstTrigger.push_back(g_QuestList.m_lpTriggerNode);
}
}
static void Trigger_LevelTalk(int nLevel, int nNPCID, const char* strElseMsg)
{
if (g_QuestList.m_lpPhaseNode)
{
g_QuestList.m_lpTriggerNode = new TriggerNode;
g_QuestList.m_lpTriggerNode->m_dwTriggerKind = TRIGGER_LEVEL_TALK;
g_QuestList.m_lpTriggerNode->m_dwTriggerID = nNPCID;
g_QuestList.m_lpTriggerNode->m_dwZoneID = 0;
g_QuestList.m_lpTriggerNode->m_dwMaxCount = 1;
g_QuestList.m_lpTriggerNode->m_dwLevel = nLevel;
g_QuestList.m_lpTriggerNode->m_fDistance = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosX = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosY = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosZ = 0.0f;
bFalseEvent = FALSE;
if (0 != strcmp(strElseMsg, ""))
{
g_QuestList.m_lpTriggerNode->m_strElseMsg = strElseMsg;
}
else
{
g_QuestList.m_lpTriggerNode->m_strElseMsg.clear();
}
g_QuestList.m_lpPhaseNode->m_lstTrigger.push_back(g_QuestList.m_lpTriggerNode);
}
}
static void Trigger_FameTalk(int nFame, int nNPCID, const char* strElseMsg)
{
if (g_QuestList.m_lpPhaseNode)
{
g_QuestList.m_lpTriggerNode = new TriggerNode;
g_QuestList.m_lpTriggerNode->m_dwTriggerKind = TRIGGER_FAME_TALK;
g_QuestList.m_lpTriggerNode->m_dwTriggerID = nNPCID;
g_QuestList.m_lpTriggerNode->m_dwZoneID = 0;
g_QuestList.m_lpTriggerNode->m_dwMaxCount = 1;
g_QuestList.m_lpTriggerNode->m_dwLevel = nFame;
g_QuestList.m_lpTriggerNode->m_fDistance = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosX = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosY = 0.0f;
g_QuestList.m_lpTriggerNode->m_fPosZ = 0.0f;
bFalseEvent = FALSE;
if (0 != strcmp(strElseMsg, ""))
{
g_QuestList.m_lpTriggerNode->m_strElseMsg = strElseMsg;
}
else
{
g_QuestList.m_lpTriggerNode->m_strElseMsg.clear();
}
g_QuestList.m_lpPhaseNode->m_lstTrigger.push_back(g_QuestList.m_lpTriggerNode);
}
}
static void Else(void)
{
bFalseEvent = TRUE;
}
static void Event_Disappear(int nAmount, int nItemID, int nGold)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_DISAPPEAR;
lpEventNode->m_dwEventNumber = nItemID;
lpEventNode->m_dwEventAmount = nAmount;
lpEventNode->m_dwEventAmount2 = nGold;
lpEventNode->m_fPosX = 0.0f;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
static void Event_Get(int nAmount, int nItemID)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_GET;
lpEventNode->m_dwEventNumber = nItemID;
lpEventNode->m_dwEventAmount = nAmount;
lpEventNode->m_dwEventAmount2 = 0;
lpEventNode->m_fPosX = 0.0f;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
static void Event_Spawn(int nMonsterID, float fPosX, float fPosY, float fPosZ)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_SPAWN;
lpEventNode->m_dwEventNumber = nMonsterID;
lpEventNode->m_dwEventAmount = 0;
lpEventNode->m_dwEventAmount2 = 0;
lpEventNode->m_fPosX = fPosX * 100.0f;
lpEventNode->m_fPosY = fPosY * 100.0f;
lpEventNode->m_fPosZ = fPosZ * 100.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
static void Event_MonsterDrop(int nAmount, int nItemID)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_MONSTERDROP;
lpEventNode->m_dwEventNumber = nItemID;
lpEventNode->m_dwEventAmount = nAmount;
lpEventNode->m_dwEventAmount2 = 0;
lpEventNode->m_fPosX = 0.0f;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
/*
static void Event_Award(int nExp, int nGold)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_AWARD;
lpEventNode->m_dwEventNumber = nExp;
lpEventNode->m_dwEventAmount = nGold;
lpEventNode->m_dwEventAmount2 = 0;
lpEventNode->m_fPosX = 0.0f;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
*/
static void Event_Award(int nExp, int nGold, int nFame , int nMedal )
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_AWARD;
lpEventNode->m_dwEventNumber = nExp;
lpEventNode->m_dwEventAmount = nGold;
lpEventNode->m_dwEventAmount2 = 0;
lpEventNode->m_fPosX = 0.0f;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
static void Event_AddQuest( int nUID, int nQuestID )
{
}
static void Event_AwardItem( int nOptionType, int nLevel, int nGrade, int nBaseNum )
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_AWARDITEM;
lpEventNode->m_dwEventNumber = nOptionType;
lpEventNode->m_dwEventAmount = nLevel;
lpEventNode->m_dwEventAmount2 = nGrade;
lpEventNode->m_dwEventAmount3 = nBaseNum;
lpEventNode->m_fPosX = 0.0f;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
static void Event_AwardItemID(int nOptionType, int nID, int nGrade, int nBaseNum)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_AWARDITEM;
lpEventNode->m_dwEventNumber = nOptionType;
lpEventNode->m_dwEventAmount = nID;
lpEventNode->m_dwEventAmount2 = nGrade;
lpEventNode->m_dwEventAmount3 = nBaseNum;
lpEventNode->m_fPosX = 0.0f;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
static void Event_AwardItemClass(int nOptionType, int nClass, int nLevel, int nGrade, int nBaseNum)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_AWARDITEM;
lpEventNode->m_dwEventNumber = nOptionType;
lpEventNode->m_dwEventAmount = nClass;
lpEventNode->m_dwEventAmount2 = nLevel;
lpEventNode->m_dwEventAmount3 = nGrade;
lpEventNode->m_fPosX = (float)nBaseNum;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
static void Event_AlarmBox(const char *strMessage)
{
if (g_QuestList.m_lpTriggerNode)
{
char *strScript = new char[strlen(strMessage) + 1];
strcpy(strScript, strMessage);
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseMsgBox.push_back(strScript);
else
g_QuestList.m_lpTriggerNode->m_lstMsgBox.push_back(strScript);
}
}
static void Event_AwardAbility( int nAbilityID, int nAbilityLV )
{
}
static void Event_MsgBox(const char *strMessage)
{
if (g_QuestList.m_lpTriggerNode)
{
char *strScript = new char[strlen(strMessage) + 1];
strcpy(strScript, strMessage);
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseMsgBox.push_back(strScript);
else
g_QuestList.m_lpTriggerNode->m_lstMsgBox.push_back(strScript);
}
}
static void Event_Phase(int nPhaseNumber)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_PHASE;
lpEventNode->m_dwEventNumber = nPhaseNumber;
lpEventNode->m_dwEventAmount = 0;
lpEventNode->m_dwEventAmount2 = 0;
lpEventNode->m_fPosX = 0.0f;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
static void Event_End(void)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_END;
lpEventNode->m_dwEventNumber = 0;
lpEventNode->m_dwEventAmount = 0;
lpEventNode->m_dwEventAmount2 = 0;
lpEventNode->m_fPosX = 0.0f;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
static void Event_Move(int nZone, float fPosX, float fPosY, float fPosZ)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_MOVE;
lpEventNode->m_dwEventNumber = nZone;
lpEventNode->m_dwEventAmount = 0;
lpEventNode->m_dwEventAmount2 = 0;
lpEventNode->m_fPosX = fPosX;
lpEventNode->m_fPosY = fPosY;
lpEventNode->m_fPosZ = fPosZ;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
static void Event_TheaterMode(void)
{
if (g_QuestList.m_lpTriggerNode)
{
LPEventNode lpEventNode = new EventNode;
lpEventNode->m_dwEventKind = EVENT_THEATERMODE;
lpEventNode->m_dwEventNumber = 0;
lpEventNode->m_dwEventAmount = 0;
lpEventNode->m_dwEventAmount2 = 0;
lpEventNode->m_fPosX = 0.0f;
lpEventNode->m_fPosY = 0.0f;
lpEventNode->m_fPosZ = 0.0f;
lpEventNode->m_strWord = NULL;
if (bFalseEvent)
g_QuestList.m_lpTriggerNode->m_lstFalseEvent.push_back(lpEventNode);
else
g_QuestList.m_lpTriggerNode->m_lstEvent.push_back(lpEventNode);
}
}
CQuestList::CQuestList()
{
m_lpQuestNode = NULL;
m_lpPhaseNode = NULL;
m_lpTriggerNode = NULL;
}
CQuestList::~CQuestList()
{
DestroyQuestList();
}
VOID CQuestList::DestroyQuestList()
{
vector<LPQuestNode>::iterator itQuest;
vector<LPPhaseNode>::iterator itPhase;
vector<LPTriggerNode>::iterator itTrigger;
vector<LPEventNode>::iterator itEvent;
vector<char *>::iterator itString;
LPQuestNode lpQuest;
LPPhaseNode lpPhase;
LPTriggerNode lpTrigger;
LPEventNode lpEvent;
char *strDelete;
for (itQuest = m_lstQuestNode.begin(); itQuest != m_lstQuestNode.end();)
{
lpQuest = (*itQuest);
itQuest = m_lstQuestNode.erase(itQuest);
for (itPhase = lpQuest->m_lstPhase.begin(); itPhase != lpQuest->m_lstPhase.end();)
{
lpPhase = (*itPhase);
itPhase = lpQuest->m_lstPhase.erase(itPhase);
for (itTrigger = lpPhase->m_lstTrigger.begin(); itTrigger != lpPhase->m_lstTrigger.end();)
{
lpTrigger = (*itTrigger);
itTrigger = lpPhase->m_lstTrigger.erase(itTrigger);
for (itEvent = lpTrigger->m_lstEvent.begin(); itEvent != lpTrigger->m_lstEvent.end();)
{
lpEvent = (*itEvent);
itEvent = lpTrigger->m_lstEvent.erase(itEvent);
if (lpEvent->m_strWord) delete[] lpEvent->m_strWord;
delete lpEvent;
}
lpTrigger->m_lstEvent.clear();
for (itString = lpTrigger->m_lstMsgBox.begin(); itString != lpTrigger->m_lstMsgBox.end();)
{
strDelete = (*itString);
itString = lpTrigger->m_lstMsgBox.erase(itString);
delete[] strDelete;
}
lpTrigger->m_lstMsgBox.clear();
for (itEvent = lpTrigger->m_lstFalseEvent.begin(); itEvent != lpTrigger->m_lstFalseEvent.end();)
{
lpEvent = (*itEvent);
itEvent = lpTrigger->m_lstFalseEvent.erase(itEvent);
if (lpEvent->m_strWord) delete[] lpEvent->m_strWord;
delete lpEvent;
}
lpTrigger->m_lstFalseEvent.clear();
for (itString = lpTrigger->m_lstFalseMsgBox.begin(); itString != lpTrigger->m_lstFalseMsgBox.end();)
{
strDelete = (*itString);
itString = lpTrigger->m_lstFalseMsgBox.erase(itString);
delete[] strDelete;
}
lpTrigger->m_lstFalseMsgBox.clear();
delete lpTrigger;
}
lpPhase->m_lstTrigger.clear();
delete[] lpPhase->m_strPhaseDesc;
delete lpPhase;
}
lpQuest->m_lstPhase.clear();
if (lpQuest->m_strQuestTitle) delete[] lpQuest->m_strQuestTitle;
if (lpQuest->m_strQuestDesc) delete[] lpQuest->m_strQuestDesc;
if (lpQuest->m_strQuestShortDesc) delete[] lpQuest->m_strQuestShortDesc;
if (lpQuest->m_strQuestLevel) delete[] lpQuest->m_strQuestLevel;
if (lpQuest->m_strQuestAward) delete[] lpQuest->m_strQuestAward;
delete lpQuest;
}
m_lstQuestNode.clear();
}
BOOL CQuestList::Load(const char *strQuestScriptFile)
{
DestroyQuestList();
SCRIPT Script = _SE_Create(strQuestScriptFile);
if (!Script) return FALSE;
_SE_SetMessageFunction(ScriptErrorMessage);
//_SE_RegisterFunction(Script, QuestStart, T_VOID, "QuestStart", T_INT, T_INT, T_INT, T_INT, T_INT, 0);
//_SE_RegisterFunction(Script, QuestStart, T_VOID, "QuestStart", T_INT, T_INT, T_INT, T_INT, T_INT, T_INT, 0);
_SE_RegisterFunction(Script, QuestStartLevel, T_VOID, "QuestStartLevel", T_INT, T_INT, T_INT, T_INT, T_INT, T_INT, T_BOOL, 0);
_SE_RegisterFunction(Script, QuestStartFame, T_VOID, "QuestStartFame", T_INT, T_INT, T_INT, T_INT, T_INT, T_INT, T_BOOL, 0);
_SE_RegisterFunction(Script, QuestEnd, T_VOID, "QuestEnd", 0);
_SE_RegisterFunction(Script, QuestType, T_VOID, "QuestType", T_INT, T_INT, 0);
_SE_RegisterFunction(Script, QuestArea, T_VOID, "QuestArea", T_INT, T_FLOAT, T_FLOAT, T_FLOAT, T_FLOAT, 0);
_SE_RegisterFunction(Script, QuestTitle, T_VOID, "QuestTitle", T_STRING, 0);
_SE_RegisterFunction(Script, QuestDesc, T_VOID, "QuestDesc", T_STRING, 0);
_SE_RegisterFunction(Script, QuestShortDesc, T_VOID, "QuestShortDesc", T_STRING, 0);
_SE_RegisterFunction(Script, QuestIcon, T_VOID, "QuestIcon", T_STRING, T_INT, T_INT, T_INT, T_INT, 0);
_SE_RegisterFunction(Script, QuestCompleteSave, T_VOID, "QuestCompleteSave", T_BOOL, 0);
_SE_RegisterFunction(Script, QuestLevel, T_VOID, "QuestLevel", T_STRING, 0);
_SE_RegisterFunction(Script, QuestAward, T_VOID, "QuestAward", T_STRING, 0);
_SE_RegisterFunction(Script, QuestSkillPointBonus, T_VOID, "QuestSkillPointBonus", T_INT, 0);
_SE_RegisterFunction(Script, QuestCancelItemDel, T_VOID, "QuestCancelItemDel", T_BOOL, 0);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ <20>ý<EFBFBD><C3BD><EFBFBD>
_SE_RegisterFunction(Script, QuestAbilityPoint, T_VOID, "QuestAbilityPoint", T_INT, 0);
_SE_RegisterFunction(Script, AddPhase, T_VOID, "AddPhase", T_INT, T_INT, T_STRING, 0);
_SE_RegisterFunction(Script, Phase_Target, T_VOID, "Phase_Target", T_INT, T_INT, T_INT, 0);
_SE_RegisterFunction(Script, Trigger_Start, T_VOID, "Trigger_Start", 0);
_SE_RegisterFunction(Script, Trigger_Puton, T_VOID, "Trigger_Puton", T_INT, T_INT, T_FLOAT, T_FLOAT, T_FLOAT, T_FLOAT, 0);
_SE_RegisterFunction(Script, Trigger_Geton, T_VOID, "Trigger_Geton", T_INT, T_INT, T_FLOAT, T_FLOAT, T_FLOAT, T_FLOAT, 0);
_SE_RegisterFunction(Script, Trigger_Talk, T_VOID, "Trigger_Talk", T_INT, 0);
_SE_RegisterFunction(Script, Trigger_Kill, T_VOID, "Trigger_Kill", T_INT, T_INT, 0);
_SE_RegisterFunction(Script, Trigger_Pick, T_VOID, "Trigger_Pick", T_INT, T_INT, 0);
_SE_RegisterFunction(Script, Trigger_Fame, T_VOID, "Trigger_Fame", T_INT, 0);
_SE_RegisterFunction(Script, Trigger_LevelTalk, T_VOID, "Trigger_LevelTalk", T_INT, T_INT, T_STRING, 0);
_SE_RegisterFunction(Script, Trigger_FameTalk, T_VOID, "Trigger_FameTalk", T_INT, T_INT, T_STRING, 0);
_SE_RegisterFunction(Script, Else, T_VOID, "Else", 0);
_SE_RegisterFunction(Script, Event_Disappear, T_VOID, "Event_Disappear", T_INT, T_INT, T_INT, 0);
_SE_RegisterFunction(Script, Event_Get, T_VOID, "Event_Get", T_INT, T_INT, 0);
_SE_RegisterFunction(Script, Event_Spawn, T_VOID, "Event_Spawn", T_INT, T_FLOAT, T_FLOAT, T_FLOAT, 0);
_SE_RegisterFunction(Script, Event_MonsterDrop, T_VOID, "Event_MonsterDrop", T_INT, T_INT, 0);
_SE_RegisterFunction(Script, Event_Award, T_VOID, "Event_Award", T_INT, T_INT, T_INT, T_INT, 0);
_SE_RegisterFunction(Script, Event_MsgBox, T_VOID, "Event_MsgBox", T_STRING, 0);
_SE_RegisterFunction(Script, Event_Phase, T_VOID, "Event_Phase", T_INT, 0);
_SE_RegisterFunction(Script, Event_End, T_VOID, "Event_End", T_VOID, 0);
_SE_RegisterFunction(Script, Event_AddQuest, T_VOID, "Event_AddQuest", T_INT, T_INT, 0 );
_SE_RegisterFunction(Script, Event_AwardItem, T_VOID, "Event_AwardItem", T_INT, T_INT, T_INT, T_INT, 0 );
_SE_RegisterFunction(Script, Event_AwardItemID, T_VOID, "Event_AwardItemID", T_INT, T_INT, T_INT, T_INT, 0);
_SE_RegisterFunction(Script, Event_AwardItemClass, T_VOID, "Event_AwardItemClass", T_INT, T_INT, T_INT, T_INT, T_INT, 0);
_SE_RegisterFunction(Script, Event_Move, T_VOID, "Event_Move", T_INT, T_FLOAT, T_FLOAT, T_FLOAT, 0);
_SE_RegisterFunction(Script, Event_TheaterMode, T_VOID, "Event_TheaterMode", 0);
_SE_RegisterFunction(Script, Event_AlarmBox, T_VOID, "Event_AlarmBox", T_STRING, 0);
_SE_RegisterFunction(Script, Event_AwardAbility, T_VOID, "Event_AwardAbility", T_INT, T_INT, 0 );
_SE_RegisterFunction(Script, Trigger_AbilityTalk, T_VOID, "Trigger_AbilityTalk", T_INT, T_INT, T_INT, T_STRING, 0);
_SE_Execute(Script);
_SE_Destroy(Script);
return TRUE;
}
unsigned long QuestNode::CheckQuest(unsigned long dwLevel, unsigned long dwFame, unsigned long dwClass, unsigned long dwNation, unsigned short *lstCompleted, unsigned short wNumCompleted, unsigned short *lstQuestList)
{
unsigned long count = 0;
unsigned long i = 0;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
bool bEnableQuest = false ;
if ( 0 == m_usNation )
{
bEnableQuest = true ;
}
else
{
unsigned long dwQuestNation = m_usNation ;
unsigned long dwNationRes = 0 ;
while ( dwQuestNation != 0 )
{
dwNationRes = dwQuestNation % 10 ;
dwQuestNation /= 10 ;
if ( 0 == dwNationRes || dwNationRes == dwNation )
{
bEnableQuest = true ;
break;
}
}
}
if ( !bEnableQuest )
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
return QuestNode::RES_MISMATCH_NATION ;
}
if ( !(m_dwClass & (0x00000001 << (dwClass - 1))) )
{
// Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
return QuestNode::RES_MISMATCH_CLASS ;
}
// <20>̹<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20>˻<EFBFBD><CBBB><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>ߴ<EFBFBD><DFB4><EFBFBD> <20>˻<EFBFBD>
for (unsigned long t = 0; t < wNumCompleted ; t++)
{
if (lstCompleted[t] == m_wQuestID)
{
// <20>̹<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD>̴<EFBFBD>.
return QuestNode::RES_ALREADY_TAKEN ;
}
}
for (t = 0; t < 10; t++)
{
if (lstQuestList[t] == m_wQuestID)
{
// <20><><EFBFBD><EFBFBD> <20>ϰ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD>̴<EFBFBD>.
return QuestNode::RES_ALREADY_TAKEN ;
}
}
BOOL bCompletePriorQuest = FALSE;
if (m_dwCompletedQuest)
{
for (unsigned long t = 0; t < wNumCompleted ; t++)
{
if (lstCompleted[t] == m_dwCompletedQuest)
{
bCompletePriorQuest = TRUE;
}
}
if ( !bCompletePriorQuest )
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20>ʾҴ<CABE>.
return QuestNode::RES_NOT_COMPLETE_PRIOR_QUEST ;
}
}
if(m_wMinLevel != 0 && m_wMaxLevel != 0)
{
if (m_wMinLevel <= dwLevel && dwLevel <= m_wMaxLevel)
{
// <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20><> <20>ִ<EFBFBD>.
return QuestNode::RES_SUCCESS ;
}
if ( dwLevel > m_wMaxLevel )
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
return QuestNode::RES_HIGH_THAN_MAX_LEVEL ;
}
if ( dwLevel + 10 <= m_wMinLevel )
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10 <20><><EFBFBD><EFBFBD> <20>̻<EFBFBD> <20><><EFBFBD><EFBFBD>.
return QuestNode::RES_10_LOW_THAN_MIN_LEVEL ;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
return QuestNode::RES_LOW_LEVEL ;
}
if(m_dwMinFame != 0 && m_dwMaxFame != 0)
{
// <20><><EFBFBD><EFBFBD>üũ
if (m_dwMinFame <= dwFame && dwFame <= m_dwMaxFame)
{
// <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20><> <20>ִ<EFBFBD>.
return QuestNode::RES_SUCCESS ;
}
if ( dwFame > m_dwMaxFame )
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
return QuestNode::RES_HIGH_THAN_MAX_FAME ;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
return QuestNode::RES_LOW_FAME;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
return QuestNode::RES_LOW_LEVEL ;
}
LPQuestNode CQuestList::GetQuest(unsigned short wQuestID)
{
vector<LPQuestNode>::iterator it;
for (it = m_lstQuestNode.begin(); it != m_lstQuestNode.end(); it++)
{
if ((*it)->m_wQuestID == wQuestID) return (*it);
}
return NULL;
}