Merge pull request #37 from SunTrustDev/bugfix/std-1
This commit is contained in:
@@ -132,6 +132,7 @@ class CInputMain : public CInputProcessor
|
|||||||
|
|
||||||
void QuestInputString(LPCHARACTER ch, const void * pvData);
|
void QuestInputString(LPCHARACTER ch, const void * pvData);
|
||||||
void QuestConfirm(LPCHARACTER ch, const void* pvData);
|
void QuestConfirm(LPCHARACTER ch, const void* pvData);
|
||||||
|
void QuestCancel(LPCHARACTER ch);
|
||||||
void Target(LPCHARACTER ch, const char * pcData);
|
void Target(LPCHARACTER ch, const char * pcData);
|
||||||
void Warp(LPCHARACTER ch, const char * pcData);
|
void Warp(LPCHARACTER ch, const char * pcData);
|
||||||
void SafeboxCheckin(LPCHARACTER ch, const char * c_pData);
|
void SafeboxCheckin(LPCHARACTER ch, const char * c_pData);
|
||||||
|
|||||||
@@ -2056,6 +2056,12 @@ void CInputMain::QuestConfirm(LPCHARACTER ch, const void* c_pData)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CInputMain::QuestCancel(LPCHARACTER ch)
|
||||||
|
{
|
||||||
|
sys_log(0, "QuestCancel from %s pid %u", ch->GetName(), ch->GetPlayerID());
|
||||||
|
quest::CQuestManager::Instance().Cancel(ch->GetPlayerID());
|
||||||
|
}
|
||||||
|
|
||||||
void CInputMain::Target(LPCHARACTER ch, const char * pcData)
|
void CInputMain::Target(LPCHARACTER ch, const char * pcData)
|
||||||
{
|
{
|
||||||
TPacketCGTarget * p = (TPacketCGTarget *) pcData;
|
TPacketCGTarget * p = (TPacketCGTarget *) pcData;
|
||||||
@@ -3272,6 +3278,10 @@ int CInputMain::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
|
|||||||
QuestConfirm(ch, c_pData);
|
QuestConfirm(ch, c_pData);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case HEADER_CG_QUEST_CANCEL:
|
||||||
|
QuestCancel(ch);
|
||||||
|
break;
|
||||||
|
|
||||||
case HEADER_CG_TARGET:
|
case HEADER_CG_TARGET:
|
||||||
Target(ch, c_pData);
|
Target(ch, c_pData);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ enum
|
|||||||
HEADER_CG_SCRIPT_ANSWER = 29,
|
HEADER_CG_SCRIPT_ANSWER = 29,
|
||||||
HEADER_CG_QUEST_INPUT_STRING = 30,
|
HEADER_CG_QUEST_INPUT_STRING = 30,
|
||||||
HEADER_CG_QUEST_CONFIRM = 31,
|
HEADER_CG_QUEST_CONFIRM = 31,
|
||||||
|
HEADER_CG_QUEST_CANCEL = 32,
|
||||||
|
|
||||||
HEADER_CG_SHOP = 50,
|
HEADER_CG_SHOP = 50,
|
||||||
HEADER_CG_FLY_TARGETING = 51,
|
HEADER_CG_FLY_TARGETING = 51,
|
||||||
@@ -806,6 +807,11 @@ typedef struct command_quest_confirm
|
|||||||
uint32_t requestPID;
|
uint32_t requestPID;
|
||||||
} TPacketCGQuestConfirm;
|
} TPacketCGQuestConfirm;
|
||||||
|
|
||||||
|
typedef struct command_quest_cancel
|
||||||
|
{
|
||||||
|
uint8_t header;
|
||||||
|
} TPacketCGQuestCancel;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 서버 측에서 보내는 패킷
|
* 서버 측에서 보내는 패킷
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ CPacketInfoCG::CPacketInfoCG()
|
|||||||
Set(HEADER_CG_SCRIPT_BUTTON, sizeof(TPacketCGScriptButton), "ScriptButton", true);
|
Set(HEADER_CG_SCRIPT_BUTTON, sizeof(TPacketCGScriptButton), "ScriptButton", true);
|
||||||
Set(HEADER_CG_QUEST_INPUT_STRING, sizeof(TPacketCGQuestInputString), "QuestInputString", true);
|
Set(HEADER_CG_QUEST_INPUT_STRING, sizeof(TPacketCGQuestInputString), "QuestInputString", true);
|
||||||
Set(HEADER_CG_QUEST_CONFIRM, sizeof(TPacketCGQuestConfirm), "QuestConfirm", true);
|
Set(HEADER_CG_QUEST_CONFIRM, sizeof(TPacketCGQuestConfirm), "QuestConfirm", true);
|
||||||
|
Set(HEADER_CG_QUEST_CANCEL, sizeof(TPacketCGQuestCancel), "QuestCancel", true);
|
||||||
|
|
||||||
Set(HEADER_CG_MOVE, sizeof(TPacketCGMove), "Move", true);
|
Set(HEADER_CG_MOVE, sizeof(TPacketCGMove), "Move", true);
|
||||||
Set(HEADER_CG_SYNC_POSITION, sizeof(TPacketCGSyncPosition), "SyncPosition", true);
|
Set(HEADER_CG_SYNC_POSITION, sizeof(TPacketCGSyncPosition), "SyncPosition", true);
|
||||||
|
|||||||
@@ -381,6 +381,23 @@ namespace quest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CQuestManager::Cancel(unsigned int pc)
|
||||||
|
{
|
||||||
|
PC * pPC = GetPC(pc);
|
||||||
|
|
||||||
|
if (pPC && pPC->IsRunning())
|
||||||
|
{
|
||||||
|
sys_log(0, "QUEST: Dialog cancelled by player %u, cleaning up quest state (quest: %s)", pc, pPC->GetCurrentQuestName().c_str());
|
||||||
|
|
||||||
|
CloseState(*pPC->GetRunningQuestState());
|
||||||
|
pPC->CancelRunning();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sys_log(0, "QUEST: Cancel requested for player %u but no quest is running", pc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Quest Event 관련
|
// Quest Event 관련
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ namespace quest
|
|||||||
void SelectItem(unsigned int pc, unsigned int selection);
|
void SelectItem(unsigned int pc, unsigned int selection);
|
||||||
|
|
||||||
void LogoutPC(LPCHARACTER ch);
|
void LogoutPC(LPCHARACTER ch);
|
||||||
|
void Cancel(unsigned int pc);
|
||||||
void DisconnectPC(LPCHARACTER ch);
|
void DisconnectPC(LPCHARACTER ch);
|
||||||
|
|
||||||
QuestState * GetCurrentState() { return m_CurrentRunningState; }
|
QuestState * GetCurrentState() { return m_CurrentRunningState; }
|
||||||
|
|||||||
Reference in New Issue
Block a user