2716 lines
75 KiB
C++
2716 lines
75 KiB
C++
|
|
#include "stdafx.h"
|
|||
|
|
#include "DnScriptAPI.h"
|
|||
|
|
#include "DNUserSession.h"
|
|||
|
|
#include "DNUserSessionManager.h"
|
|||
|
|
#include "DNFieldManager.h"
|
|||
|
|
#include "DNNpcObject.h"
|
|||
|
|
#include "DNNpcObjectManager.h"
|
|||
|
|
#include "DNUserItem.h"
|
|||
|
|
#include "DNGameDataManager.h"
|
|||
|
|
|
|||
|
|
#include "DNLogConnection.h"
|
|||
|
|
#include "DnLuaAPIDefine.h"
|
|||
|
|
#include "DNReplaceString.h"
|
|||
|
|
#include "EtUIXML.h"
|
|||
|
|
|
|||
|
|
#include "DNMasterConnection.h"
|
|||
|
|
#include "DNPartyManager.h"
|
|||
|
|
#include "DNQuestManager.h"
|
|||
|
|
#include "TimeSet.h"
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
#include "ReputationSystemRepository.h"
|
|||
|
|
#include "NpcReputationProcessor.h"
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
#if defined( PRE_ADD_SECONDARY_SKILL )
|
|||
|
|
#include "SecondarySkillRepository.h"
|
|||
|
|
#endif // #if defined( PRE_ADD_SECONDARY_SKILL )
|
|||
|
|
#include "DNGuildSystem.h"
|
|||
|
|
#if !defined(_FINAL_BUILD)
|
|||
|
|
extern CLog g_ScriptLog;
|
|||
|
|
#endif // #if !defined(_FINAL_BUILD)
|
|||
|
|
#include "DNGuildWarManager.h"
|
|||
|
|
#include "DNGuildVillage.h"
|
|||
|
|
#include "DNPeriodQuestSystem.h"
|
|||
|
|
#include "DNScriptAPICommon.h"
|
|||
|
|
|
|||
|
|
int CheckInvenForQuestReward(CDNUserBase* pUser, const TQuestReward& QuestReward, const bool bSelectedArray[])
|
|||
|
|
{
|
|||
|
|
return DNScriptAPI::CheckInvenForQuestReward(pUser, QuestReward, bSelectedArray);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void DefAllAPIFunc(lua_State* pLuaState)
|
|||
|
|
{
|
|||
|
|
DefineLuaAPI(pLuaState);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_NextTalk);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_NextScript);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_SetParamString);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_SetParamInt);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_log_AddLog);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_log_UserLog);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_DumpQuest);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_AddHuntingQuest);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_AddQuest);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_UserHasQuest);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_GetPlayingQuestCnt);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_CompleteQuest);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_MarkingCompleteQuest);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_IsMarkingCompleteQuest);
|
|||
|
|
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_GetNpcIndex);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_SetQuestStepAndJournalStep);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_SetQuestStep);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_GetQuestStep);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_SetJournalStep);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_GetJournalStep);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_SetQuestMemo);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_GetQuestMemo);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_CancelQuest);
|
|||
|
|
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_SetCountingInfo);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_ClearCountingInfo);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_IsAllCompleteCounting);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_CheckInvenForAddItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_CheckInvenForAddItemList);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_AddItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_DelItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_AllDelItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_HasItem);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_GetUserClassID);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_GetUserJobID);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_GetUserLevel);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_GetUserInvenBlankCount);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_GetUserQuestInvenBlankCount);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_AddExp);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_AddCoin);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_PlayCutScene);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenWareHouse);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenShop);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenSkillShop);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenMarket);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenCompoundEmblem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenUpgradeJewel);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenMailBox);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenUpgradeItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenDisjointItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenCompoundItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenCashShop);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenGuildMgrBox);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenGacha_JP);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenGiveNpcPresent);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenDarkLairRankBoard);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenPvPLadderRankBoard);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenGlyphLift);
|
|||
|
|
#ifdef PRE_ADD_OPEN_QUEST_TEXTURE_DIALOG
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenTextureDialog);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_CloseTextureDialog);
|
|||
|
|
#endif
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_UserMessage);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_AddSymbolItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_DelSymbolItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_HasSymbolItem);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_CheckQuestInvenForAddItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_CheckQuestInvenForAddItemList);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_AddQuestItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_DelQuestItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_AllDelQuestItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_HasQuestItem);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenGuildCreate);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenQuestReward);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_RewardQuestUser);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_ChangeChannel);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_ChangeMap);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_GetPartymemberCount);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_IsPartymember);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_RequestEnterPVP);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_GetStageConstructionLevel);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_GetMapIndex);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_GetLastStageClearRank);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_EnoughCoin );
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_GetCoin);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_DelCoin);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_IsMissionGained);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_IsMissionAchieved);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_HasItemWarehouse);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_HasItemEquip);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_guild_GetGuildMemberRole);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_IncQuestMemo);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_DecQuestMemo);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_SetUserJobID);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_IsJobInSameLine);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_HasCashItem);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_HasCashItemEquip);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_IncCounting);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_IsPlayingQuestMaximum);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_ForceCompleteQuest);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_ResetSkill);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_GetWorldEventStep);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_GetWorldEventCount);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_ReturnItemToNpc);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_OpenScoreWorldEvent);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_OpenFarmAreaList);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_ChangePos);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_GetFavorPoint);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_GetMalicePoint);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_GetFavorPercent);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_GetMalicePercent);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_AddFavorPoint);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_AddMalicePoint);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_SendSelectedPresent);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_Rage);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_Disappoint);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_ResetSkill);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_CreateSecondarySkill );
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_npc_CheckSecondarySkill );
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenGuildWareHouse );
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_guild_HasGuildWare );
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenMovieBrowser);
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_guildwar_IsPreparation );
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_guildwar_GetStep );
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_guildwar_GetTrialCurrentState );
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_guildWar_GetTrialStats );
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_guildWar_GetMatchList );
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_guildWar_GetPopularityVote );
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_guildWar_GetFinalProgress );
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenCompound2Item);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenBrowser);
|
|||
|
|
|
|||
|
|
#if defined (PRE_ADD_DONATION)
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenDonation);
|
|||
|
|
#endif // #if defined (PRE_ADD_DONATION)
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenInventory);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_GetPCCafe);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_SetPCCafeItem);
|
|||
|
|
#if defined(PRE_ADD_REPAIR_NPC)
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_user_RepairItem);
|
|||
|
|
#endif
|
|||
|
|
#ifdef PRE_ADD_EXCHANGE_ENCHANT
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenExchangeEnchant);
|
|||
|
|
#endif
|
|||
|
|
#if defined(PRE_ADD_CHALLENGE_DARKLAIR)
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_env_CheckCloseGateByTime);
|
|||
|
|
#endif
|
|||
|
|
#ifdef PRE_ADD_COSRANDMIX_ACCESSORY
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenCostumeRandomMix);
|
|||
|
|
#endif
|
|||
|
|
#if defined( PRE_DRAGONBUFF )
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_WorldBuffCheck);
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_quest_ApplyWorldBuff);
|
|||
|
|
#endif
|
|||
|
|
#if defined( PRE_ADD_DWC )
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenCreateDwcTeamDlg);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
LUA_TINKER_DEF(pLuaState, api_ui_OpenJobChange);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDNUserSession* __GetUserObj(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
return g_pUserSessionManager->FindUserSessionByObjectID(nUserObjectID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> Ư<><C6AF> <20>Կ<F3BDBDB7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (P.S.> api_user_CheckInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
bool __SetBlankInventorySlot(TInvenItemCnt pTempInven[INVENTORYMAX], const TItem& Item, int iIndex)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempInven, "Invalid!");
|
|||
|
|
DN_ASSERT(0 != Item.nItemID, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < Item.wCount, "Invalid!");
|
|||
|
|
DN_ASSERT(-1 < iIndex, "Invalid!");
|
|||
|
|
|
|||
|
|
if (pTempInven[iIndex].nItemID != 0) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pTempInven[iIndex].Set( Item.nItemID, Item.wCount, Item.bSoulbound, Item.cSealCount );
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20>Ե鿡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ư<><C6AF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ <20><><EFBFBD><EFBFBD> (P.S.> api_user_CheckInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
bool __SetBlankInventorySlotCount(TInvenItemCnt pTempInven[INVENTORYMAX], const TItem& Item, int nOverlapCount, int nCount /* ä<><C3A4> <20><><EFBFBD><EFBFBD><D4B0><EFBFBD> */)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempInven, "Invalid!");
|
|||
|
|
DN_ASSERT(0 != Item.nItemID, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < Item.wCount, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < nOverlapCount, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < nCount, "Invalid!");
|
|||
|
|
|
|||
|
|
// !!! <20><><EFBFBD><EFBFBD> - <20><> <20>Լ<EFBFBD> ȣ<><C8A3> <20><><EFBFBD><EFBFBD> üũ<C3BC><C5A9> Ȯ<><C8AE><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>κи<CEBA> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
int nBundle = Item.wCount / nOverlapCount;
|
|||
|
|
int nRemain = Item.wCount % nOverlapCount;
|
|||
|
|
|
|||
|
|
for (int iIndex = 0 ; INVENTORYMAX > iIndex ; ++iIndex)
|
|||
|
|
{
|
|||
|
|
if (0 < nBundle) {
|
|||
|
|
if (pTempInven[iIndex].nItemID == 0)
|
|||
|
|
{
|
|||
|
|
pTempInven[iIndex].Set( Item.nItemID, nOverlapCount, Item.bSoulbound, Item.cSealCount );
|
|||
|
|
--nBundle;
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (0 < nRemain)
|
|||
|
|
{
|
|||
|
|
if( CDNUserItem::bIsSameItem( &Item, &pTempInven[iIndex] ) && nOverlapCount >= pTempInven[iIndex].wCount + nRemain )
|
|||
|
|
{
|
|||
|
|
pTempInven[iIndex].wCount += nRemain;
|
|||
|
|
nRemain = 0;
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (0 < nBundle)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if (0 < nRemain)
|
|||
|
|
{
|
|||
|
|
for (int iIndex = 0 ; INVENTORYMAX > iIndex ; ++iIndex)
|
|||
|
|
{
|
|||
|
|
if (pTempInven[iIndex].nItemID == 0) {
|
|||
|
|
pTempInven[iIndex].Set( Item.nItemID, nRemain, Item.bSoulbound, Item.cSealCount );
|
|||
|
|
nRemain = 0;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (0 < nRemain)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> Ư<><C6AF> <20><><EFBFBD>Կ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ø <20><><EFBFBD><EFBFBD> (P.S.> api_user_CheckInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
bool __SetOverlapInventorySlot(TInvenItemCnt pTempInven[INVENTORYMAX], const TItem& Item, int nOverlapCount, int iIndex)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempInven, "Invalid!");
|
|||
|
|
DN_ASSERT(0 != Item.nItemID, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < Item.wCount, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < nOverlapCount, "Invalid!");
|
|||
|
|
DN_ASSERT(-1 < iIndex, "Invalid!");
|
|||
|
|
|
|||
|
|
if ( CDNUserItem::bIsDifferentItem( &Item, &pTempInven[iIndex] ) || nOverlapCount < pTempInven[iIndex].wCount + Item.wCount )
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pTempInven[iIndex].wCount += Item.wCount;
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><EFBFBD> ã<><C3A3> (P.S.> api_user_CheckInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
int __FindBlankInventorySlot(TInvenItemCnt pTempInven[INVENTORYMAX], int nTempInvenCount)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempInven, "Invalid!");
|
|||
|
|
DN_ASSERT(CHECK_RANGE(nTempInvenCount, 0, INVENTORYMAX), "Invalid!");
|
|||
|
|
|
|||
|
|
for (int iIndex = 0 ; nTempInvenCount > iIndex ; ++iIndex) {
|
|||
|
|
if (pTempInven[iIndex].nItemID == 0) {
|
|||
|
|
return iIndex;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><EFBFBD><F3BDBDB7><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD><EFBFBD> ã<><C3A3> (P.S.> api_user_CheckInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
int __FindBlankInventorySlotCount(TInvenItemCnt pTempInven[INVENTORYMAX], int nTempInvenCount)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempInven, "Invalid!");
|
|||
|
|
DN_ASSERT(CHECK_RANGE(nTempInvenCount, 0, INVENTORYMAX), "Invalid!");
|
|||
|
|
|
|||
|
|
int nCount = 0;
|
|||
|
|
for (int iIndex = 0 ; nTempInvenCount > iIndex ; ++iIndex) {
|
|||
|
|
if (pTempInven[iIndex].nItemID == 0) {
|
|||
|
|
++nCount;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return nCount;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> wCount <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> Index ã<><C3A3> (P.S.> api_user_CheckInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
int __FindOverlapInventorySlot(TInvenItemCnt pTempInven[INVENTORYMAX], int nTempInvenCount, const TItem& Item)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempInven, "Invalid!");
|
|||
|
|
DN_ASSERT(CHECK_RANGE(nTempInvenCount, 0, INVENTORYMAX), "Invalid!");
|
|||
|
|
|
|||
|
|
if ((Item.nItemID <= 0) || (Item.wCount <= 0)) DN_RETURN(-1);
|
|||
|
|
|
|||
|
|
TItemData *pItemData = NULL;
|
|||
|
|
for (int iIndex = 0 ; nTempInvenCount > iIndex ; ++iIndex) {
|
|||
|
|
if (pTempInven[iIndex].nItemID == 0) {
|
|||
|
|
// <20><>ĭ<EFBFBD≯<EFBFBD> <20>н<EFBFBD>
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pItemData = g_pDataManager->GetItemData(pTempInven[iIndex].nItemID);
|
|||
|
|
if (!pItemData) continue;
|
|||
|
|
|
|||
|
|
if (pItemData->nOverlapCount == 1) continue; // <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>н<EFBFBD>
|
|||
|
|
if( CDNUserItem::bIsDifferentItem( &Item, &pTempInven[iIndex] ) ) continue; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD>
|
|||
|
|
|
|||
|
|
if (pItemData->nOverlapCount >= pTempInven[iIndex].wCount + Item.wCount) {
|
|||
|
|
return iIndex;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˻<EFBFBD> (P.S.> api_user_CheckInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
bool __IsValidSpaceInventorySlotAndSet(TInvenItemCnt pTempInven[INVENTORYMAX], int nTempInvenCount, const TItem& Item )
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempInven, "Invalid!");
|
|||
|
|
DN_ASSERT(CHECK_RANGE(nTempInvenCount, 0, INVENTORYMAX), "Invalid!");
|
|||
|
|
|
|||
|
|
if ((Item.nItemID <= 0) || (Item.wCount <= 0))
|
|||
|
|
DN_RETURN(false);
|
|||
|
|
|
|||
|
|
TItemData *pItem = g_pDataManager->GetItemData(Item.nItemID);
|
|||
|
|
if (!pItem) return false;
|
|||
|
|
|
|||
|
|
if (ITEMTYPE_QUEST == pItem->nType) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int nCount = 0;
|
|||
|
|
if (pItem->nOverlapCount == 1){ // <20><>ġ<EFBFBD><C4A1> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
nCount = __FindBlankInventorySlotCount(pTempInven, nTempInvenCount);
|
|||
|
|
if (Item.wCount > nCount) {
|
|||
|
|
// <20><EFBFBD><F3BDBDB7>̶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return(__SetBlankInventorySlotCount(pTempInven, Item, 1, nCount));
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>κ<EFBFBD><CEBA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD> <20><EFBFBD><EEB0B3> <20><><EFBFBD><EFBFBD><EFBFBD>־ <20>Ű<EFBFBD><C5B0>Ⱦ<EFBFBD><C8BE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD>츸 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
if (pItem->nOverlapCount < Item.wCount){ // <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20>纸<EFBFBD><E7BAB8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int nBundle = Item.wCount / pItem->nOverlapCount;
|
|||
|
|
if ((Item.wCount % pItem->nOverlapCount) > 0) nBundle++;
|
|||
|
|
|
|||
|
|
nCount = __FindBlankInventorySlotCount(pTempInven, nTempInvenCount);
|
|||
|
|
if (nBundle > nCount) {
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD> <20><EFBFBD><F3BDBDB7>̶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return(__SetBlankInventorySlotCount(pTempInven, Item, pItem->nOverlapCount, nCount));
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
int nBlank = __FindOverlapInventorySlot(pTempInven, nTempInvenCount, Item ); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20>ѹ濡 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD>
|
|||
|
|
if (nBlank < 0){
|
|||
|
|
nBlank = __FindBlankInventorySlot(pTempInven, nTempInvenCount);
|
|||
|
|
if (nBlank < 0) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return(__SetBlankInventorySlot(pTempInven, Item, nBlank));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return(__SetOverlapInventorySlot(pTempInven, Item, pItem->nOverlapCount, nBlank));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20><><EFBFBD><EFBFBD>Ʈ <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> Ư<><C6AF> <20>Կ<F3BDBDB7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (P.S.> api_quest_CheckQuestInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
bool __SetBlankQuestInventorySlot(TQuestItemCnt pTempQuestInven[QUESTINVENTORYMAX], int nItemID, short wCount, int iIndex)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempQuestInven, "Invalid!");
|
|||
|
|
DN_ASSERT(0 != nItemID, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < wCount, "Invalid!");
|
|||
|
|
DN_ASSERT(-1 < iIndex, "Invalid!");
|
|||
|
|
|
|||
|
|
if (pTempQuestInven[iIndex].nItemID != 0) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pTempQuestInven[iIndex].Set(nItemID, wCount);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20><><EFBFBD><EFBFBD>Ʈ <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20>Ե鿡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ư<><C6AF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ <20><><EFBFBD><EFBFBD> (P.S.> api_quest_CheckQuestInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
bool __SetBlankQuestInventorySlotCount(TQuestItemCnt pTempQuestInven[QUESTINVENTORYMAX], int nItemID, short wCount, int nOverlapCount, int nCount /* ä<><C3A4> <20><><EFBFBD><EFBFBD><D4B0><EFBFBD> */)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempQuestInven, "Invalid!");
|
|||
|
|
DN_ASSERT(0 != nItemID, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < wCount, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < nOverlapCount, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < nCount, "Invalid!");
|
|||
|
|
|
|||
|
|
// !!! <20><><EFBFBD><EFBFBD> - <20><> <20>Լ<EFBFBD> ȣ<><C8A3> <20><><EFBFBD><EFBFBD> üũ<C3BC><C5A9> Ȯ<><C8AE><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>κи<CEBA> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
int nBundle = wCount / nOverlapCount;
|
|||
|
|
int nRemain = wCount % nOverlapCount;
|
|||
|
|
|
|||
|
|
for (int iIndex = 0 ; QUESTINVENTORYMAX > iIndex ; ++iIndex) {
|
|||
|
|
if (0 < nBundle) {
|
|||
|
|
if (pTempQuestInven[iIndex].nItemID == 0) {
|
|||
|
|
pTempQuestInven[iIndex].Set(nItemID, nOverlapCount);
|
|||
|
|
--nBundle;
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (0 < nRemain) {
|
|||
|
|
if (pTempQuestInven[iIndex].nItemID == nItemID &&
|
|||
|
|
nOverlapCount >= pTempQuestInven[iIndex].wCount + nRemain
|
|||
|
|
)
|
|||
|
|
{
|
|||
|
|
pTempQuestInven[iIndex].wCount += nRemain;
|
|||
|
|
nRemain = 0;
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (0 < nBundle) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if (0 < nRemain) {
|
|||
|
|
for (int iIndex = 0 ; QUESTINVENTORYMAX > iIndex ; ++iIndex) {
|
|||
|
|
if (pTempQuestInven[iIndex].nItemID == 0) {
|
|||
|
|
pTempQuestInven[iIndex].Set(nItemID, nRemain);
|
|||
|
|
nRemain = 0;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (0 < nRemain) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20><><EFBFBD><EFBFBD>Ʈ <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> Ư<><C6AF> <20><><EFBFBD>Կ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ø <20><><EFBFBD><EFBFBD> (P.S.> api_quest_CheckQuestInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
bool __SetOverlapQuestInventorySlot(TQuestItemCnt pTempQuestInven[QUESTINVENTORYMAX], int nItemID, short wCount, int nOverlapCount, int iIndex)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempQuestInven, "Invalid!");
|
|||
|
|
DN_ASSERT(0 != nItemID, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < wCount, "Invalid!");
|
|||
|
|
DN_ASSERT(0 < nOverlapCount, "Invalid!");
|
|||
|
|
DN_ASSERT(-1 < iIndex, "Invalid!");
|
|||
|
|
|
|||
|
|
if (pTempQuestInven[iIndex].nItemID != nItemID ||
|
|||
|
|
nOverlapCount < pTempQuestInven[iIndex].wCount + wCount
|
|||
|
|
)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pTempQuestInven[iIndex].wCount += wCount;
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20><><EFBFBD><EFBFBD>Ʈ <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><EFBFBD><F3BDBDB7><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD><EFBFBD> ã<><C3A3> (P.S.> api_quest_CheckQuestInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
int __FindBlankQuestInventorySlotCount(TQuestItemCnt pTempQuestInven[QUESTINVENTORYMAX])
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempQuestInven, "Invalid!");
|
|||
|
|
|
|||
|
|
int nCount = 0;
|
|||
|
|
for (int iIndex = 0 ; QUESTINVENTORYMAX > iIndex ; ++iIndex) {
|
|||
|
|
if (pTempQuestInven[iIndex].nItemID == 0) {
|
|||
|
|
++nCount;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return nCount;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20><><EFBFBD><EFBFBD>Ʈ <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><EFBFBD> ã<><C3A3> (P.S.> api_quest_CheckQuestInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
int __FindBlankQuestInventorySlot(TQuestItemCnt pTempQuestInven[QUESTINVENTORYMAX])
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempQuestInven, "Invalid!");
|
|||
|
|
|
|||
|
|
for (int iIndex = 0 ; QUESTINVENTORYMAX > iIndex ; ++iIndex) {
|
|||
|
|
if (pTempQuestInven[iIndex].nItemID == 0) {
|
|||
|
|
return iIndex;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20><><EFBFBD><EFBFBD>Ʈ <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> wCount <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> Index ã<><C3A3> (P.S.> api_quest_CheckQuestInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
int __FindOverlapQuestInventorySlot(TQuestItemCnt pTempQuestInven[QUESTINVENTORYMAX], int nItemID, short wCount)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempQuestInven, "Invalid!");
|
|||
|
|
|
|||
|
|
if ((nItemID <= 0) || (wCount <= 0)) DN_RETURN(-1);
|
|||
|
|
|
|||
|
|
bool boFlag = false;
|
|||
|
|
TItemData *pQuestItem = NULL;
|
|||
|
|
for (int iIndex = 0 ; QUESTINVENTORYMAX > iIndex ; ++iIndex) {
|
|||
|
|
if (pTempQuestInven[iIndex].nItemID == 0) continue; // <20><>ĭ<EFBFBD≯<EFBFBD> <20>н<EFBFBD>
|
|||
|
|
|
|||
|
|
pQuestItem = g_pDataManager->GetItemData(pTempQuestInven[iIndex].nItemID);
|
|||
|
|
if (!pQuestItem) continue;
|
|||
|
|
|
|||
|
|
if (pQuestItem->nOverlapCount == 1) continue; // <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>н<EFBFBD>
|
|||
|
|
if (pTempQuestInven[iIndex].nItemID != nItemID) continue; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴϴ<C6B4>
|
|||
|
|
|
|||
|
|
if (pQuestItem->nOverlapCount >= pTempQuestInven[iIndex].wCount + wCount){
|
|||
|
|
return iIndex;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// desc : <20><><EFBFBD><EFBFBD>Ʈ <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˻<EFBFBD> (P.S.> api_quest_CheckQuestInvenForAddItemList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
bool __IsValidSpaceQuestInventorySlotAndSet(TQuestItemCnt pTempQuestInven[QUESTINVENTORYMAX], int nItemID, short wCount)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(NULL != pTempQuestInven, "Invalid!");
|
|||
|
|
|
|||
|
|
if ((nItemID <= 0) || (wCount <= 0)) DN_RETURN(false);
|
|||
|
|
|
|||
|
|
TItemData *pItem = g_pDataManager->GetItemData(nItemID);
|
|||
|
|
if (!pItem) return false;
|
|||
|
|
|
|||
|
|
if (ITEMTYPE_QUEST != pItem->nType) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int nCount = 0;
|
|||
|
|
if (pItem->nOverlapCount == 1){ // <20><>ġ<EFBFBD><C4A1> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
nCount = __FindBlankQuestInventorySlotCount(pTempQuestInven);
|
|||
|
|
if (wCount > nCount) {
|
|||
|
|
// <20><EFBFBD><F3BDBDB7>̶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return(__SetBlankQuestInventorySlotCount(pTempQuestInven, nItemID, wCount, 1, nCount));
|
|||
|
|
}
|
|||
|
|
else { // <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int nRemain = 0, nBlank = 0, nBundle = 0;
|
|||
|
|
|
|||
|
|
int nCount = __FindBlankQuestInventorySlotCount(pTempQuestInven); // <20><> <20><><EFBFBD><EFBFBD><D4B0><EFBFBD>
|
|||
|
|
|
|||
|
|
if (pItem->nOverlapCount >= wCount){
|
|||
|
|
nRemain = wCount;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
nBundle = wCount / pItem->nOverlapCount;
|
|||
|
|
nRemain = wCount % pItem->nOverlapCount;
|
|||
|
|
|
|||
|
|
if (nBundle > nCount) return false; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (nRemain > 0){
|
|||
|
|
nBlank = __FindOverlapQuestInventorySlot(pTempQuestInven, nItemID, nRemain); // ¥<><C2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD>
|
|||
|
|
if (nBlank < 0){ // ¥<><C2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
if ((nBundle + 1) > nCount) return false; // <20><>ĭ<EFBFBD><C4AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD><D6B4><EFBFBD>...
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return(__SetBlankQuestInventorySlotCount(pTempQuestInven, nItemID, wCount, pItem->nOverlapCount, nCount));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void api_log_AddLog(const char* szLog)
|
|||
|
|
{
|
|||
|
|
DNScriptAPI::api_log_AddLog(szLog);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void api_log_UserLog(UINT nUserObjectID, const char* szLog)
|
|||
|
|
{
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return;
|
|||
|
|
|
|||
|
|
DNScriptAPI::api_log_UserLog(pUser, szLog);
|
|||
|
|
#endif // _FINAL_BUILD
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void api_quest_DumpQuest(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return;
|
|||
|
|
|
|||
|
|
DNScriptAPI::api_quest_DumpQuest(pUser);
|
|||
|
|
#endif // _FINAL_BUILD
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void api_npc_NextTalk(UINT nUserObjectID, UINT nNpcObjectID , const char* szTalkIndex, const char* szTargetFile)
|
|||
|
|
{
|
|||
|
|
CDNUserBase* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return;
|
|||
|
|
|
|||
|
|
DNScriptAPI::api_npc_NextTalk(pUser, nNpcObjectID, szTalkIndex, szTargetFile);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void api_npc_NextScript(UINT nUserObjectID, UINT nNpcObjectID, const char* szTalkIndex, const char* szTargetFile)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser)
|
|||
|
|
{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[CS_NPCTALK] (5-1) UID:%d, PAK:%d/%s/%s\n", nUserObjectID, nNpcObjectID, szTalkIndex,szTargetFile);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDNNpcObject* pNpc = g_pFieldManager->GetNpcObjectByNpcObjID(pUser->GetChannelID(), nNpcObjectID);
|
|||
|
|
if ( !pNpc ) return;
|
|||
|
|
|
|||
|
|
DNScriptAPI::api_npc_NextScript(pUser, pNpc, nNpcObjectID, szTalkIndex, szTargetFile);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_SetParamString(UINT nUserObjectID, const char* szParamKey, int nParamID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_SetParamString(pUser, szParamKey, nParamID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_SetParamInt(UINT nUserObjectID, const char* szParamKey, int nValue)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_SetParamInt(pUser, szParamKey, nValue);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_AddHuntingQuest(UINT nUserObjectID, int nQuestID, int nQuestStep, int nJournalStep, int nCountingSlot, int nCountingType, int nCountingIndex, int nTargetCnt)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_AddHuntingQuest(pUser, nQuestID, nQuestStep, nJournalStep, nCountingSlot, nCountingType, nCountingIndex, nTargetCnt);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// nQuestType : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
int api_quest_AddQuest(UINT nUserObjectID, int nQuestID, int nQuestType)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_AddQuest(pUser, nQuestID, nQuestType);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_CompleteQuest(UINT nUserObjectID, int nQuestID, bool bDelPlayList, bool bRepeat)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_CompleteQuest(pUser, nQuestID, bDelPlayList);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_MarkingCompleteQuest(UINT nUserObjectID, int nQuestID)
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><>ŷ<EFBFBD><C5B7> api_quest_CompleteQuest<73><74><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̻<EFBFBD> <20><> API<50><49> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_IsMarkingCompleteQuest(UINT nUserObjectID, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_IsMarkingCompleteQuest(pUser, nQuestID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_UserHasQuest(UINT nUserObjectID, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_UserHasQuest(pUser, nQuestID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_GetPlayingQuestCnt(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_GetPlayingQuestCnt(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_GetNpcIndex(UINT nUserObjectID, UINT nNpcObjID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
CDNNpcObject* pNpc = g_pFieldManager->GetNpcObjectByNpcObjID(pUser->GetChannelID(), nNpcObjID);
|
|||
|
|
if ( !pNpc )
|
|||
|
|
return -2;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_GetNpcIndex(pNpc);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_SetQuestStepAndJournalStep(UINT nUserObjectID, int nQuestID, short nQuestStep, int nJournalStep)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_SetQuestStepAndJournalStep(pUser, nQuestID, nQuestStep, nJournalStep);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_SetQuestStep(UINT nUserObjectID, int nQuestID, short nQuestStep)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_SetQuestStep(pUser, nQuestID, nQuestStep);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_GetQuestStep(UINT nUserObjectID, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_GetQuestStep(pUser, nQuestID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_SetJournalStep(UINT nUserObjectID, int nQuestID, int nJournalStep)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_SetJournalStep(pUser, nQuestID, nJournalStep);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_GetJournalStep(UINT nUserObjectID, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_GetJournalStep(pUser, nQuestID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_SetQuestMemo(UINT nUserObjectID, int nQuestID, char nMemoIndex, TP_QUESTMEMO nVal)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_SetQuestMemo(pUser, nQuestID, nMemoIndex, nVal);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_GetQuestMemo(UINT nUserObjectID, int nQuestID, char nMemoIndex)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_GetQuestMemo(pUser, nQuestID, nMemoIndex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_SetCountingInfo(UINT nUserObjectID, int nQuestID, int nSlot, int nCountingType, int nCountingIndex, int nTargetCnt)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_SetCountingInfo(pUser, nQuestID, nSlot, nCountingType, nCountingIndex, nTargetCnt);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_ClearCountingInfo(UINT nUserObjectID, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_ClearCountingInfo(pUser, nQuestID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_IsAllCompleteCounting(UINT nUserObjectID, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_IsAllCompleteCounting(pUser, nQuestID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_CancelQuest(UINT nUserObjectID, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
#if defined(_CH)
|
|||
|
|
if (pUser->GetFCMState() != FCMSTATE_NONE){
|
|||
|
|
pUser->SendQuestResult(ERROR_QUEST_FCM);
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->GetQuest()->OnCancelQuest(nQuestID);
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_CheckInvenForAddItem(UINT nUserObjectID, int nItemIndex, int nItemCnt)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_CheckInvenForAddItem(pUser, nItemIndex, nItemCnt);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_CheckInvenForAddItemList(UINT nUserObjectID, lua_tinker::table ItemTable)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_CheckInvenForAddItemList(pUser, ItemTable);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_AddItem(UINT nUserObjectID, int nItemIndex, int nItemCnt, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_AddItem(pUser, nItemIndex, nItemCnt, nQuestID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_DelItem(UINT nUserObjectID, int nItemIndex, int nItemCnt, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_DelItem(pUser, nItemIndex, nItemCnt, nQuestID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_AllDelItem(UINT nUserObjectID, int nItemIndex)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_AllDelItem(pUser, nItemIndex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_HasItem(UINT nUserObjectID, int nItemIndex, int nItemCnt)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_HasItem(pUser, nItemIndex, nItemCnt);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_GetUserClassID(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_GetUserClassID(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_GetUserJobID(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_GetUserJobID(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_GetUserLevel(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_GetUserLevel(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_GetUserInvenBlankCount(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_GetUserInvenBlankCount(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_GetUserQuestInvenBlankCount(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_GetUserQuestInvenBlankCount(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD> <EFBFBD>߰<EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
|||
|
|
*/
|
|||
|
|
int api_user_AddExp(UINT nUserObjectID, int nQuestID, int nAddExp)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
#if defined(_CH)
|
|||
|
|
if (pUser->GetFCMState() != FCMSTATE_NONE){
|
|||
|
|
pUser->SendQuestResult(ERROR_QUEST_FCM);
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->ChangeExp(nAddExp, DBDNWorldDef::CharacterExpChangeCode::Quest, nQuestID);
|
|||
|
|
|
|||
|
|
int nExp = pUser->GetExp();
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszMsg;
|
|||
|
|
wszMsg = FormatW( L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD>߰<EFBFBD> : %d <20><><EFBFBD><EFBFBD> : %d" , nAddExp, nExp);
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszMsg.size()*sizeof(WCHAR), L"", (WCHAR*)wszMsg.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>߰<EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD>
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
|||
|
|
*/
|
|||
|
|
int api_user_AddCoin(UINT nUserObjectID, int nAddCoin, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
#if defined(_CH)
|
|||
|
|
if (pUser->GetFCMState() != FCMSTATE_NONE){
|
|||
|
|
pUser->SendQuestResult(ERROR_QUEST_FCM);
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
if (!pUser->AddCoin(nAddCoin, DBDNWorldDef::CoinChangeCode::QuestReward, nQuestID))
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
INT64 nCoin = pUser->GetCoin();
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszMsg;
|
|||
|
|
wszMsg = FormatW( L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߰<EFBFBD> : %d <20><><EFBFBD><EFBFBD> : %lld" , nAddCoin, nCoin);
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszMsg.size()*sizeof(WCHAR), L"", (WCHAR*)wszMsg.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_PlayCutScene(UINT nUserObjectID, UINT nNpcObjectID, int nCutSceneTableID, bool bIgnoreFadeIn)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_PlayCutScene(pUser, nNpcObjectID, nCutSceneTableID, bIgnoreFadeIn);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenWareHouse(UINT nUserObjectID, int iItemID/*=0*/ )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenWareHouse(pUser,iItemID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -2 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 1<EFBFBD≯<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_ui_OpenShop(UINT nUserObjectID, int nShopID, Shop::Type::eCode Type/*=Shop::Type::Normal*/ )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
#if defined (PRE_MOD_GAMESERVERSHOP)
|
|||
|
|
return DNScriptAPI::api_ui_OpenShop(pUser, nShopID, Type);
|
|||
|
|
#else
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszLog;
|
|||
|
|
wszLog = FormatW( L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszLog.size()*sizeof(WCHAR), L"", (WCHAR*)wszLog.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
TShopData *pShopData = g_pDataManager->GetShopData(nShopID);
|
|||
|
|
if ( !pShopData )
|
|||
|
|
{
|
|||
|
|
if( false == g_pDataManager->IsCombinedShop( nShopID ) )
|
|||
|
|
return -2;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if defined(PRE_ADD_REMOTE_OPENSHOP)
|
|||
|
|
pUser->m_bRemoteShopOpen = false;
|
|||
|
|
#endif // #if defined(PRE_ADD_REMOTE_OPENSHOP)
|
|||
|
|
pUser->m_nShopID = nShopID;
|
|||
|
|
pUser->SendShopOpen(nShopID,Type);
|
|||
|
|
pUser->SetShopType( Type );
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ų <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD>ų <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -2 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 1<EFBFBD≯<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_ui_OpenSkillShop( UINT nUserObjectID )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
#if defined (PRE_MOD_GAMESERVERSHOP)
|
|||
|
|
return DNScriptAPI::api_ui_OpenSkillShop(pUser);
|
|||
|
|
#else
|
|||
|
|
pUser->SendSkillShopOpen();
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -2 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 1<EFBFBD≯<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_ui_OpenMarket(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszLog;
|
|||
|
|
wszLog = FormatW( L"<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>");
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszLog.size()*sizeof(WCHAR), L"", (WCHAR*)wszLog.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->SendMarketList(NULL, 0, 0, ERROR_NONE);
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenCompoundEmblem(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenCompoundEmblem(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenUpgradeJewel(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenUpgradeJewel(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenGlyphLift(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenGlyphLift(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenMailBox(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenMailBox(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȭâ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1<EFBFBD≯<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
int api_ui_OpenUpgradeItem(UINT nUserObjectID,int iItemID/*=0*/ )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszLog;
|
|||
|
|
wszLog = FormatW( L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȭâ <20><><EFBFBD><EFBFBD>");
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszLog.size()*sizeof(WCHAR), L"", (WCHAR*)wszLog.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->SendOpenUpgradeItem( iItemID );
|
|||
|
|
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
|
|||
|
|
pUser->SetRemoteEnchantItemID(iItemID);
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenDisjointItem(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenDisjointItem(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenCompoundItem(UINT nUserObjectID, int nCompoundShopID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenCompoundItem(pUser, nCompoundShopID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenCompound2Item(UINT nUserObjectID, int nCompoundGroupID, int iItemID/*=0*/ )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszLog;
|
|||
|
|
wszLog = FormatW( L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ռ<EFBFBD>â <20><><EFBFBD><EFBFBD>");
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszLog.size()*sizeof(WCHAR), L"", (WCHAR*)wszLog.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->SendOpenCompound2Item(nCompoundGroupID, iItemID );
|
|||
|
|
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
|
|||
|
|
pUser->SetRemoteItemCompoundItemID( iItemID );
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenCashShop(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenCashShop(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenGuildMgrBox(UINT nUserObjectID, int nGuildMgrNo)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenGuildMgrBox(pUser, nGuildMgrNo);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenGacha_JP( UINT nUserObjectID, int nGachaShopID )
|
|||
|
|
{
|
|||
|
|
#ifdef PRE_ADD_GACHA_JAPAN
|
|||
|
|
CDNUserSession* pUser = __GetUserObj( nUserObjectID );
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenGacha_JP(pUser, nGachaShopID);
|
|||
|
|
#else
|
|||
|
|
return -3;
|
|||
|
|
#endif // PRE_ADD_GACHA_JAPAN
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenGiveNpcPresent( UINT nUserObjectID, int nNpcID )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj( nUserObjectID );
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenGiveNpcPresent(pUser, nNpcID);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD>α<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD>ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Npc ID
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 1 <EFBFBD≯<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
*/
|
|||
|
|
int api_ui_OpenDarkLairRankBoard( UINT nUserObjectID, int nNpcID, int iMapIndex, int iPlayerCount )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj( nUserObjectID );
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
_ASSERT( iPlayerCount > 0 && iPlayerCount <= PARTYCOUNTMAX );
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszLog;
|
|||
|
|
wszLog = FormatW( L"<EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD>");
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszLog.size()*sizeof(WCHAR), L"", (WCHAR*)wszLog.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> npc <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> UI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD>.
|
|||
|
|
pUser->SendOpenDarkLairRankBoard( nNpcID, iMapIndex, iPlayerCount );
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
// <20><EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> npc <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20>׳<EFBFBD> <20><><EFBFBD>д<EFBFBD>. <20>̰<EFBFBD> ȣ<><C8A3><EFBFBD>ϸ<EFBFBD> <20><>ȭ <20><><EFBFBD>̾<EFBFBD><CCBE>αװ<CEB1> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
pUser->SetCalledNpcResponse( true, false );
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : PvP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD>α<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD>ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Npc ID
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 1 <EFBFBD≯<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
*/
|
|||
|
|
int api_ui_OpenPvPLadderRankBoard( UINT nUserObjectID, int nNpcID, int iPvPLadderCode )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj( nUserObjectID );
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
_ASSERT( LadderSystem::bIsServiceMatchType( static_cast<LadderSystem::MatchType::eCode>(iPvPLadderCode) ) == true );
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszLog;
|
|||
|
|
wszLog = FormatW( L"PvP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD>");
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszLog.size()*sizeof(WCHAR), L"", (WCHAR*)wszLog.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> npc <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> UI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD>.
|
|||
|
|
pUser->SendOpenPvPLadderRankBoard( nNpcID, static_cast<LadderSystem::MatchType::eCode>(iPvPLadderCode) );
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
// <20><EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> npc <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20>׳<EFBFBD> <20><><EFBFBD>д<EFBFBD>. <20>̰<EFBFBD> ȣ<><C8A3><EFBFBD>ϸ<EFBFBD> <20><>ȭ <20><><EFBFBD>̾<EFBFBD><CCBE>αװ<CEB1> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
pUser->SetCalledNpcResponse( true, false );
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if defined(PRE_ADD_OPEN_QUEST_TEXTURE_DIALOG)
|
|||
|
|
int api_ui_OpenTextureDialog(UINT nUserObjectID, int nFileIndex, float fX, float fY, int nPos, int nTime, int nDialogIndex, bool bAutoCloseDialog)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if(!pUser)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
SCOpenTextureDialog sDlgData;
|
|||
|
|
sDlgData.fX = fX;
|
|||
|
|
sDlgData.fY = fY;
|
|||
|
|
sDlgData.nTime = nTime;
|
|||
|
|
sDlgData.nPosition = nPos;
|
|||
|
|
sDlgData.nFileIndex = nFileIndex;
|
|||
|
|
sDlgData.nDialogIndex = nDialogIndex;
|
|||
|
|
sDlgData.bAutoCloseDialog = bAutoCloseDialog;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_Open_Texture_Dialog(pUser, sDlgData);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_CloseTextureDialog(UINT nUserObjectID, int nDlgID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if(!pUser)
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_Close_Texture_Dialog(pUser, nDlgID);
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
int api_user_UserMessage(UINT nUserObjectID, int nType, int nBaseStringIdx, lua_tinker::table ParamTable)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
{
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_UserMessage(pUser, nType, nBaseStringIdx, ParamTable);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_AddSymbolItem(UINT nUserObjectID, int nItemID, short wCount)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_AddSymbolItem(pUser, nItemID, wCount);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_DelSymbolItem(UINT nUserObjectID, int nItemID, short wCount)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_DelSymbolItem(pUser, nItemID, wCount);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_HasSymbolItem(UINT nUserObjectID, int nItemIndex, int nItemCnt)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_HasSymbolItem(pUser, nItemIndex, nItemCnt);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_CheckQuestInvenForAddItem(UINT nUserObjectID, int nItemIndex, int nItemCnt)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_CheckQuestInvenForAddItem(pUser, nItemIndex, nItemCnt);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_CheckQuestInvenForAddItemList(UINT nUserObjectID, lua_tinker::table ItemTable)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_CheckQuestInvenForAddItemList(pUser, ItemTable);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_AddQuestItem(UINT nUserObjectID, int nItemID, short wCount, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_AddQuestItem(pUser, nItemID, wCount, nQuestID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_DelQuestItem(UINT nUserObjectID, int nItemID, short wCount, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_DelQuestItem(pUser, nItemID, wCount, nQuestID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_AllDelQuestItem(UINT nUserObjectID, int nItemID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_AllDelQuestItem(pUser, nItemID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_HasQuestItem(UINT nUserObjectID, int nItemIndex, int nItemCnt)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_HasQuestItem(pUser, nItemIndex, nItemCnt);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenGuildCreate(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenGuildCreate(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenQuestReward(UINT nUserObjectID, int nRewardTableIndex, bool bActivate)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenQuestReward(pUser, nRewardTableIndex, bActivate);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_RewardQuestUser(UINT nUserObjectID, int nRewardTableIndext, int nQuestID, int nRewardCheck)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_RewardQuestUser(pUser, nRewardTableIndext, nQuestID, nRewardCheck);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ä<EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>, ä<EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD>
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ä<EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD> -3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ä<EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
int api_user_ChangeChannel(UINT nUserObjectID, int ChannelType )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
int iAttr = 0;
|
|||
|
|
switch( ChannelType )
|
|||
|
|
{
|
|||
|
|
// PvP<76>κ<EFBFBD>
|
|||
|
|
case 1:
|
|||
|
|
{
|
|||
|
|
iAttr = GlobalEnum::CHANNEL_ATT_PVPLOBBY;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
default:
|
|||
|
|
{
|
|||
|
|
return -2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
const sChannelInfo* pChannelInfo = g_pMasterConnection->GetChannelInfoFromAttr( iAttr );
|
|||
|
|
if( pChannelInfo == NULL )
|
|||
|
|
return -3;
|
|||
|
|
pUser->CmdSelectChannel( pChannelInfo->nChannelID, true );
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_ChangeMap(UINT nUserObjectID, int nMapIndex, int nGateNo)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
#if defined(_CH)
|
|||
|
|
if (pUser->GetFCMState() != FCMSTATE_NONE){
|
|||
|
|
pUser->SendQuestResult(ERROR_QUEST_FCM);
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
if (pUser->GetPartyID() > 0)
|
|||
|
|
{
|
|||
|
|
CDNParty * pParty = g_pPartyManager->GetParty(pUser->GetPartyID());
|
|||
|
|
if (pParty)
|
|||
|
|
{
|
|||
|
|
int nPermitCnt = g_pDataManager->GetMapPermitPartyCount(nMapIndex);
|
|||
|
|
if (nPermitCnt > 0 && pParty->GetMemberCount() > nPermitCnt)
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if( pUser->IsWindowState( WINDOW_BLIND ) == false )
|
|||
|
|
{
|
|||
|
|
if (!pUser->IsNoneWindowState())
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int nMapType = g_pDataManager->GetMapType( nMapIndex );
|
|||
|
|
switch( nMapType ) {
|
|||
|
|
case GlobalEnum::MAP_UNKNOWN:
|
|||
|
|
return -2;
|
|||
|
|
case GlobalEnum::MAP_VILLAGE:
|
|||
|
|
if( pUser->GetPartyID() > 0 ) {
|
|||
|
|
CDNParty *pParty = g_pPartyManager->GetParty(pUser->GetPartyID());
|
|||
|
|
if (!pParty) return -1;
|
|||
|
|
if (g_pMasterConnection && g_pMasterConnection->GetActive())
|
|||
|
|
g_pMasterConnection->SendVillageToVillage(REQINFO_TYPE_PARTY, pParty->GetPartyID(), nMapIndex, -1, -1, pParty); //pUser->GetLevel()
|
|||
|
|
else
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if (g_pMasterConnection && g_pMasterConnection->GetActive())
|
|||
|
|
g_pMasterConnection->SendVillageToVillage(REQINFO_TYPE_SINGLE, pUser->GetAccountDBID(), nMapIndex, -1, -1);
|
|||
|
|
else
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case GlobalEnum::MAP_WORLDMAP:
|
|||
|
|
case GlobalEnum::MAP_DUNGEON:
|
|||
|
|
{
|
|||
|
|
// <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD><CCB5>ÿ<EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǰڴ<C7B0><DAB4><EFBFBD>.. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.
|
|||
|
|
// <20>ϴ<EFBFBD><CFB4><EFBFBD> <20>̵<EFBFBD><CCB5>ǰ<EFBFBD> <20>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>и<EFBFBD> <20><><EFBFBD>̴<EFBFBD> <20><><EFBFBD>찡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ͽ<EFBFBD><CFBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
if( pUser->GetPartyID() > 0 ) {
|
|||
|
|
CDNParty *pParty = g_pPartyManager->GetParty(pUser->GetPartyID());
|
|||
|
|
if (!pParty) return -1;
|
|||
|
|
pParty->SetRandomSeed( timeGetTime() );
|
|||
|
|
if (g_pMasterConnection && g_pMasterConnection->GetActive())
|
|||
|
|
{
|
|||
|
|
g_pMasterConnection->SendReqGameID( GameTaskType::Normal, REQINFO_TYPE_PARTY, pParty->GetPartyID(), pUser->GetChannelID(), pParty->GetRandomSeed(), nMapIndex, nGateNo, CONVERT_TO_DUNGEONDIFFICULTY(0), true, pParty ); // GameID<49><44> <20><>û
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
pUser->m_cGateNo = nGateNo;
|
|||
|
|
pUser->m_nSingleRandomSeed = timeGetTime();
|
|||
|
|
if (g_pMasterConnection && g_pMasterConnection->GetActive())
|
|||
|
|
g_pMasterConnection->SendReqGameID( GameTaskType::Normal, REQINFO_TYPE_SINGLE, pUser->GetAccountDBID(), pUser->GetChannelID(), pUser->m_nSingleRandomSeed, nMapIndex, 1, CONVERT_TO_DUNGEONDIFFICULTY(0), true ); // GameID<49><44> <20><>û
|
|||
|
|
else
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD>ش<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD>ܴ<EFBFBD> <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD><EFBFBD><EFBFBD> !!!> <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD> 1 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ)
|
|||
|
|
*/
|
|||
|
|
int api_user_GetPartymemberCount(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
if (pUser->GetPartyID() > 0)
|
|||
|
|
{
|
|||
|
|
//<2F><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ī<EFBFBD><C4AB>Ʈ
|
|||
|
|
CDNParty* pParty = g_pPartyManager->GetParty(pUser->GetPartyID());
|
|||
|
|
if (!pParty) return -1;
|
|||
|
|
|
|||
|
|
return pParty->GetMemberCount();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȥ<>ڶ<EFBFBD><DAB6><EFBFBD> <20><><EFBFBD>̹Ƿ<CCB9> 1
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD>ش<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ<EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0 => <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʵǾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1 => <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_user_IsPartymember(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
if (pUser->GetPartyID() > 0)
|
|||
|
|
{
|
|||
|
|
//<2F><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ī<EFBFBD><C4AB>Ʈ
|
|||
|
|
CDNParty* pParty = g_pPartyManager->GetParty(pUser->GetPartyID());
|
|||
|
|
if (!pParty) return -1;
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> 0 <20><> <20><>ȯ
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//blondy
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PVP<EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ȳ<EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : 1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_user_RequestEnterPVP( UINT nUserObjectID )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
pUser->SendPvPVillageToLobby();
|
|||
|
|
return 1;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
//blondy end
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD>ش<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (P.S.> VillageServer <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : 0 ~ 4 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD> (0:<EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 1:<EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 2:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 3:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 4:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <EFBFBD><EFBFBD> <EFBFBD>ܴ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD>⺻ -1)
|
|||
|
|
*/
|
|||
|
|
int api_user_GetStageConstructionLevel(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
// DN_ASSERT(0, "Can't be Called!");
|
|||
|
|
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_GetMapIndex(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_GetMapIndex(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_GetLastStageClearRank(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_GetLastStageClearRank(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_EnoughCoin(UINT nUserObjectID, int nCoin )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_EnoughCoin(pUser, nCoin);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0 <EFBFBD>̻<EFBFBD> => <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_user_GetCoin(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if defined(_CH)
|
|||
|
|
if (pUser->GetFCMState() != FCMSTATE_NONE){
|
|||
|
|
pUser->SendQuestResult(ERROR_QUEST_FCM);
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
return (int)(pUser->GetCoin());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD> (0 <EFBFBD>ʰ<EFBFBD>)
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_user_DelCoin(UINT nUserObjectID, int nDelCoin)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(0 < nDelCoin, "Invalid!");
|
|||
|
|
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if defined(_CH)
|
|||
|
|
if (pUser->GetFCMState() != FCMSTATE_NONE){
|
|||
|
|
pUser->SendQuestResult(ERROR_QUEST_FCM);
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->DelCoin(nDelCoin, DBDNWorldDef::CoinChangeCode::Use, 0);
|
|||
|
|
|
|||
|
|
INT64 nCoin = pUser->GetCoin();
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszMsg;
|
|||
|
|
wszMsg = FormatW( L"<EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD><EFBFBD><EFBFBD> : %d <20><><EFBFBD><EFBFBD> : %lld" , nDelCoin, nCoin);
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszMsg.size()*sizeof(WCHAR), L"", (WCHAR*)wszMsg.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_IsMissionGained(UINT nUserObjectID, int nMissionIndex)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(CHECK_LIMIT(nMissionIndex, MISSIONMAX), "Invalid!");
|
|||
|
|
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_IsMissionGained(pUser, nMissionIndex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_IsMissionAchieved(UINT nUserObjectID, int nMissionIndex)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_IsMissionAchieved(pUser, nMissionIndex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_HasItemWarehouse(UINT nUserObjectID, int nItemIndex, int nItemCnt)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_HasItemWarehouse(pUser, nItemIndex, nItemCnt);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_HasItemEquip(UINT nUserObjectID, int nItemIndex)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_HasItemEquip(pUser, nItemIndex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_guild_GetGuildMemberRole(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_guild_GetGuildMemberRole(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD> <EFBFBD>˷<EFBFBD><EFBFBD>ش<EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 0 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>â<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>â<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_guild_HasGuildWare(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const TGuildUID GuildUID = pUser->GetGuildUID ();
|
|||
|
|
if (!GuildUID.IsSet())
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
CDNGuildBase* pGuild = g_pGuildManager->At (GuildUID);
|
|||
|
|
if (!pGuild)
|
|||
|
|
return 0;
|
|||
|
|
|
|||
|
|
|
|||
|
|
#if !defined( PRE_ADD_NODELETEGUILD )
|
|||
|
|
// <20><><EFBFBD>尡<EFBFBD><E5B0A1><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
|||
|
|
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
|||
|
|
if (FALSE == pGuild->IsEnable()) return 0;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
if (pGuild->GetWareSize() > 0)
|
|||
|
|
return 1;
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_IncQuestMemo(UINT nUserObjectID, int nQuestID, char nMemoIndex)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) {
|
|||
|
|
return LONG_MIN;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_IncQuestMemo(pUser, nQuestID, nMemoIndex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_DecQuestMemo(UINT nUserObjectID, int nQuestID, char nMemoIndex)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) {
|
|||
|
|
return LONG_MAX;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_DecQuestMemo(pUser, nQuestID, nMemoIndex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_SetUserJobID(UINT nUserObjectID, int nJobID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_SetUserJobID(pUser, nJobID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_IsJobInSameLine(UINT nUserObjectID, int nBaseJobID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_IsJobInSameLine(pUser, nBaseJobID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_HasCashItem(UINT nUserObjectID, int nItemIndex, int nItemCnt)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_HasCashItem(pUser, nItemIndex, nItemCnt);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_HasCashItemEquip(UINT nUserObjectID, int nItemIndex)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_HasCashItemEquip(pUser, nItemIndex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_IncCounting(UINT nUserObjectID, int nCountingType, int nCountingIndex)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_IncCounting(pUser, nCountingType, nCountingIndex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_IsPlayingQuestMaximum(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_IsPlayingQuestMaximum(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_ForceCompleteQuest(UINT nUserObjectID, int nQuestID, int nQuestCode, int bDoMark, int bDoDelete, int bDoRepeat)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_quest_ForceCompleteQuest(pUser, nQuestID, nQuestCode, bDoMark, bDoDelete, bDoRepeat);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_ResetSkill(UINT nUserObjectID, int nQuestID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDNUserQuest* pQuest = pUser->GetQuest();
|
|||
|
|
if (!pQuest) {
|
|||
|
|
return -2;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool bResult = pQuest->IsClearQuest(nQuestID);
|
|||
|
|
|
|||
|
|
if ( bResult )
|
|||
|
|
return -3;
|
|||
|
|
|
|||
|
|
#if defined(_VILLAGESERVER)
|
|||
|
|
pUser->GetSkill()->ResetSkill( pUser->GetSkillPage() );
|
|||
|
|
#elif defined(_GAMESERVER)
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined(_VILLAGESERVER)
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_GetWorldEventStep(UINT nUserObjectID, int nScheduleID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
if (!g_pPeriodQuestSystem)
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return g_pPeriodQuestSystem->GetWorldEventStep(pUser->GetWorldSetID(), nScheduleID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_GetWorldEventCount (UINT nUserObjectID, int nScheduleID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
if (!g_pPeriodQuestSystem)
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return g_pPeriodQuestSystem->GetWorldEventCount(pUser->GetWorldSetID(), nScheduleID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_ReturnItemToNpc (UINT nUserObjectID, int nScheduleID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
int nCount = pUser->GetItem()->ReturnItemToNpc(nScheduleID);
|
|||
|
|
if (nCount <= 0)
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return nCount;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void api_quest_OpenScoreWorldEvent (UINT nUserObjectID, int nScheduleID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
TGlobalEventData* pEvent = g_pDataManager->GetGlobalEventData(nScheduleID);
|
|||
|
|
if (!pEvent)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
int nMaxCount = pEvent->nCollectTotalCount;
|
|||
|
|
int nCurrentCount = g_pPeriodQuestSystem->GetWorldEventCount(pUser->GetWorldSetID(), nScheduleID);
|
|||
|
|
|
|||
|
|
if (nCurrentCount >= nMaxCount)
|
|||
|
|
nCurrentCount = nMaxCount;
|
|||
|
|
|
|||
|
|
pUser->SendScorePeriodQuest(nCurrentCount, nMaxCount);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : Ư<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>屸<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_quest_OpenFarmAreaList (UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
pUser->SendFarmOpenList();
|
|||
|
|
|
|||
|
|
pUser->ReqFarmInfo(false);
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : Ư<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD> <EFBFBD>̵<EFBFBD> <EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>, X <EFBFBD><EFBFBD>ǥ, Y <EFBFBD><EFBFBD>ǥ, Z <EFBFBD><EFBFBD>ǥ
|
|||
|
|
return : -1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_user_ChangePos(UINT nUserObjectID, int nX, int nY, int nZ, int nLookX, int nLookY )
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
#if defined(_CH)
|
|||
|
|
if (pUser->GetFCMState() != FCMSTATE_NONE){
|
|||
|
|
pUser->SendQuestResult(ERROR_QUEST_FCM);
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->ChangePos(nX, nY, nZ, float(nLookX), float(nLookY));
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
int api_npc_GetFavorPoint( UINT uiUserObjectID, int iNpcID )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if (!pUser)
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_GetFavorPoint(pUser, iNpcID);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_GetMalicePoint( UINT uiUserObjectID, int iNpcID )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_GetMalicePoint(pUser, iNpcID);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_GetFavorPercent( UINT uiUserObjectID, int iNpcID )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_GetFavorPercent(pUser, iNpcID);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_GetMalicePercent( UINT uiUserObjectID, int iNpcID )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_GetMalicePercent(pUser, iNpcID);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_AddFavorPoint( UINT uiUserObjectID, int iNpcID, int val )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_AddFavorPoint(pUser, iNpcID, val);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_AddMalicePoint( UINT uiUserObjectID, int iNpcID, int val )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_AddMalicePoint(pUser, iNpcID, val);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_SendSelectedPresent( UINT uiUserObjectID, int iNpcID )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_SendSelectedPresent(pUser, iNpcID);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_Rage( UINT uiUserObjectID, int iNpcID )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_Rage(pUser, iNpcID);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_Disappoint( UINT uiUserObjectID, int iNpcID )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_npc_Disappoint(pUser, iNpcID);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_user_ResetSkill(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser) {
|
|||
|
|
return -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pUser->GetItem()->ResetSkillFromQuestScript();
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_CreateSecondarySkill( UINT uiUserObjectID, int iSkillID )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_SECONDARY_SKILL )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if (!pUser)
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
CSecondarySkillRepository* pRepository = pUser->GetSecondarySkillRepository();
|
|||
|
|
if( pRepository == NULL )
|
|||
|
|
return 0;
|
|||
|
|
|
|||
|
|
if( pRepository->Create( iSkillID ) == false )
|
|||
|
|
return 0;
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_SECONDARY_SKILL )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_npc_CheckSecondarySkill( UINT uiUserObjectID, int iSkillID )
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_SECONDARY_SKILL )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(uiUserObjectID);
|
|||
|
|
if (!pUser)
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
CSecondarySkillRepository* pRepository = pUser->GetSecondarySkillRepository();
|
|||
|
|
if( pRepository == NULL )
|
|||
|
|
return 0;
|
|||
|
|
|
|||
|
|
if( pRepository->Get( iSkillID ) == NULL )
|
|||
|
|
return 0;
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif // #if defined( PRE_ADD_SECONDARY_SKILL )
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>â<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -2=><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ƴ<EFBFBD>, 1=><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_ui_OpenGuildWareHouse (UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
if (g_pGuildManager->OnRecvApiOpenGuildWare (pUser))
|
|||
|
|
pUser->SetCalledNpcResponse(true, false);
|
|||
|
|
else
|
|||
|
|
return -2;
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
int api_ui_OpenMovieBrowser(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszLog;
|
|||
|
|
wszLog = FormatW( L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŭ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>");
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszLog.size()*sizeof(WCHAR), L"", (WCHAR*)wszLog.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->SendOpenMovieBrowser();
|
|||
|
|
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenBrowser(UINT nUserObjectID, const char* szUrl, int nX, int nY, int nWidth, int nHeight)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszLog;
|
|||
|
|
wszLog = FormatW( L"npc <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (%s)", szUrl);
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszLog.size()*sizeof(WCHAR), L"", (WCHAR*)wszLog.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->SendOpenBrowser(szUrl, nX, nY, nWidth, nHeight);
|
|||
|
|
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>û <EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD> <EFBFBD>˷<EFBFBD><EFBFBD>ش<EFBFBD>. (<EFBFBD><EFBFBD>û<EFBFBD>Ⱓ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 0 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>û<EFBFBD>Ұ<EFBFBD><EFBFBD><EFBFBD> / 1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_guildwar_IsPreparation(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
if (g_pGuildWarManager)
|
|||
|
|
{
|
|||
|
|
if (g_pGuildWarManager->GetStepIndex() == GUILDWAR_STEP_PREPARATION && pUser->GetGuildSelfView().IsSet())
|
|||
|
|
{
|
|||
|
|
if (pUser->GetGuildSelfView().btGuildRole == GUILDROLE_TYPE_MASTER &&
|
|||
|
|
pUser->GetGuildSelfView().wWarSchduleID != g_pGuildWarManager->GetScheduleID())
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ⱓ üũ.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> / eGuildWarStepType / 0 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ⱓ <EFBFBD>ƴ<EFBFBD> / 1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>û <EFBFBD>Ⱓ / 2 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ⱓ / 3 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱓ
|
|||
|
|
*/
|
|||
|
|
int api_guildwar_GetStep(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
if (g_pGuildWarManager)
|
|||
|
|
return g_pGuildWarManager->GetStepIndex();
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ȳ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -2 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ⱓ<EFBFBD><EFBFBD> <EFBFBD>ƴ<EFBFBD>, 0 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_guildwar_GetTrialCurrentState(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
if( g_pGuildWarManager->GetStepIndex() != GUILDWAR_STEP_TRIAL)
|
|||
|
|
return -2;
|
|||
|
|
|
|||
|
|
int nGuildWarPoint = 0;
|
|||
|
|
CDNGuildBase* pGuild = g_pGuildManager->At(pUser->GetGuildUID());
|
|||
|
|
|
|||
|
|
if (pGuild)
|
|||
|
|
{
|
|||
|
|
#if !defined( PRE_ADD_NODELETEGUILD )
|
|||
|
|
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
|||
|
|
if (FALSE == pGuild->IsEnable()) return -1;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
if( pGuild->IsEnrollGuildWar() )
|
|||
|
|
{
|
|||
|
|
CDNGuildVillage* pGuildVillage = static_cast<CDNGuildVillage *>(pGuild);
|
|||
|
|
if( pGuildVillage->GetGuildWarScheduleID() != g_pGuildWarManager->GetScheduleID() )
|
|||
|
|
{
|
|||
|
|
pGuildVillage->GuildWarReset();
|
|||
|
|
pGuildVillage->SetGuildWarScheduleID(g_pGuildWarManager->GetScheduleID());
|
|||
|
|
}
|
|||
|
|
nGuildWarPoint = pGuildVillage->GetGuildWarPoint();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..(<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>â<EFBFBD>ϰ<EFBFBD> UI<55><49> <20><><EFBFBD>̽Ἥ <20>̰ɷ<CCB0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
pUser->SendGuildWarTrialResultUIOpen();
|
|||
|
|
pUser->SendGuildWarStatusOpen( g_pGuildWarManager->GetBlueTeamPoint(), g_pGuildWarManager->GetRedTeamPoint(), pUser->GetGuildWarPoint(), nGuildWarPoint);
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -2 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱓ<EFBFBD><EFBFBD> <EFBFBD>ƴ<EFBFBD>, -3 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>谡 <EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_guildWar_GetTrialStats(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
if( g_pGuildWarManager->GetStepIndex() != GUILDWAR_STEP_REWARD)
|
|||
|
|
return -2;
|
|||
|
|
if( !g_pGuildWarManager->GetGuildWarStats() )
|
|||
|
|
return -3;
|
|||
|
|
// <20><><EFBFBD>⼭ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˻<EFBFBD><CBBB>ؾ<EFBFBD><D8BE><EFBFBD>.
|
|||
|
|
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
pUser->SendGuildWarTrialResultUIOpen();
|
|||
|
|
|
|||
|
|
CDNGuildBase* pGuild = g_pGuildManager->At(pUser->GetGuildUID());
|
|||
|
|
if (pGuild)
|
|||
|
|
{
|
|||
|
|
#if !defined( PRE_ADD_NODELETEGUILD )
|
|||
|
|
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
|||
|
|
if (FALSE == pGuild->IsEnable()) return -1;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
if( pGuild->IsEnrollGuildWar() )
|
|||
|
|
{
|
|||
|
|
CDNGuildVillage* pGuildVillage = static_cast<CDNGuildVillage *>(pGuild);
|
|||
|
|
if (!pGuildVillage->GetGuildWarStats() )
|
|||
|
|
{
|
|||
|
|
// <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CDNDBConnection* pDBCon = pGuild->GetDBCon();
|
|||
|
|
if (pDBCon)
|
|||
|
|
pDBCon->QueryGetGuildWarPointGuildPartTotal(pGuild->GetDBThreadID(), pUser->GetWorldSetID(), pUser->GetAccountDBID(), 'G', pUser->GetGuildUID().nDBID);
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
else if( !pUser->GetGuildWarStats() )
|
|||
|
|
{
|
|||
|
|
CDNDBConnection* pDBCon = pUser->GetDBConnection();
|
|||
|
|
if( pDBCon )
|
|||
|
|
pDBCon->QueryGetGuildWarPointPartTotal(pUser->GetDBThreadID(), pUser->GetWorldSetID(), pUser->GetAccountDBID(), 'C', pUser->GetCharacterDBID());
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// <20><><EFBFBD>忡<EFBFBD><E5BFA1> <20><><EFBFBD>ԵǾ<D4B5> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
pUser->SendGuildWarTrialResultOpen();
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -2 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱓ<EFBFBD><EFBFBD> <EFBFBD>ƴ<EFBFBD>, -3 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>, 0: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_guildWar_GetMatchList(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
if( g_pGuildWarManager->GetStepIndex() != GUILDWAR_STEP_REWARD)
|
|||
|
|
return -2;
|
|||
|
|
if( !g_pGuildWarManager->GetGuildWarStats() )
|
|||
|
|
return -3;
|
|||
|
|
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
pUser->SendGuildWarTournamentInfoUIOpen();
|
|||
|
|
|
|||
|
|
bool bPopularityVote = false;
|
|||
|
|
CDNGuildBase* pGuild = g_pGuildManager->At(pUser->GetGuildUID());
|
|||
|
|
if (pGuild)
|
|||
|
|
{
|
|||
|
|
#if !defined( PRE_ADD_NODELETEGUILD )
|
|||
|
|
CDetachAutoEx<CDNGuildBase> AutoDetach (pGuild);
|
|||
|
|
if (FALSE == pGuild->IsEnable()) return -1;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴϰ<C6B4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD>.
|
|||
|
|
if( pGuild->IsEnrollGuildWar() && !g_pGuildWarManager->IsGuildWarFinal(pUser->GetGuildUID()) && pUser->GetGuildWarPoint() )
|
|||
|
|
{
|
|||
|
|
// <20><>ǥ<EFBFBD><C7A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> DB<44><42><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if( !pUser->GetGuildWarVote() && !pUser->GetGuildWarVoteLoading() )
|
|||
|
|
{
|
|||
|
|
CDNDBConnection* pDBCon = pUser->GetDBConnection();
|
|||
|
|
if (pDBCon)
|
|||
|
|
pDBCon->QueryGetGuildWarPopularityVote(pUser->GetDBThreadID(), pUser->GetWorldSetID(), pUser->GetAccountDBID(), 'C', pUser->GetCharacterDBID());
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
// DB<44><42><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
|||
|
|
else if( pUser->GetGuildWarVoteLoading() )
|
|||
|
|
{
|
|||
|
|
bPopularityVote = !pUser->GetGuildWarVote();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
pUser->SendGuildWarTournamentInfoOpen(bPopularityVote);
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>α<EFBFBD> <EFBFBD><EFBFBD>ǥ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -2 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>α<EFBFBD> <EFBFBD><EFBFBD>ǥ <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -3 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_guildWar_GetPopularityVote(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
if( g_pGuildWarManager->GetStepIndex() == GUILDWAR_STEP_REWARD)
|
|||
|
|
return -3;
|
|||
|
|
|
|||
|
|
if( g_pGuildWarManager->GetGuildWarVote() && g_pGuildWarManager->GetGuildWarVoteCount() == 0)
|
|||
|
|
return -2;
|
|||
|
|
|
|||
|
|
// DB<44><42><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if( !g_pGuildWarManager->GetGuildWarVote() )
|
|||
|
|
{
|
|||
|
|
CDNDBConnection* pDBCon = pUser->GetDBConnection();
|
|||
|
|
if (pDBCon)
|
|||
|
|
pDBCon->QueryGetGuildWarPopularityVote(pUser->GetDBThreadID(), pUser->GetWorldSetID(), pUser->GetAccountDBID(), 'G', 0);
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
pUser->SendGuildWarVoteTop(g_pGuildWarManager->GetGuildWarVoteCount(), g_pGuildWarManager->GetGuildWarVoteGuildName());
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return : -1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 0 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_guildWar_GetFinalProgress(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
if (g_pGuildWarManager)
|
|||
|
|
return (int)g_pGuildWarManager->GetFinalProgress();
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if defined (PRE_ADD_DONATION)
|
|||
|
|
int api_ui_OpenDonation(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenDonation(pUser);
|
|||
|
|
}
|
|||
|
|
#endif // #if defined (PRE_ADD_DONATION)
|
|||
|
|
|
|||
|
|
int api_ui_OpenInventory(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenInventory(pUser);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PC Cafe<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
param :
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0 => PC<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ƴ<EFBFBD>. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PC<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
*/
|
|||
|
|
int api_user_GetPCCafe(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if( !pUser)
|
|||
|
|
return -1;
|
|||
|
|
return pUser->GetPCBangGrade();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : PC<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, Ż<EFBFBD>Ͱ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>뿩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>־<EFBFBD><EFBFBD>ش<EFBFBD>.
|
|||
|
|
param :
|
|||
|
|
return : -1 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1 => PC<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ƴ<EFBFBD>, 2 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 3 => <EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>, 4 => <EFBFBD>̹<EFBFBD> <EFBFBD>뿩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 5 => <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
*/
|
|||
|
|
int api_user_SetPCCafeItem(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_PCBANG_RENTAL_ITEM )
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
if( pUser->GetPCBangGrade() == 0)
|
|||
|
|
return 1;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>⼭ <20>̹<EFBFBD> <20>뿩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> üũ
|
|||
|
|
if( pUser->GetItem()->IsHavePcCafeRentItem())
|
|||
|
|
return 4;
|
|||
|
|
|
|||
|
|
std::map<int,int> mapItemIDList;
|
|||
|
|
int nRequireInven = g_pDataManager->GetPcCafeRentItemID(pUser->GetLevel(), pUser->GetClassID(), pUser->GetUserJob(), pUser->GetPCBangGrade(),mapItemIDList);
|
|||
|
|
if( mapItemIDList.empty())
|
|||
|
|
return 2;
|
|||
|
|
|
|||
|
|
// <20>κ<EFBFBD> üũ..
|
|||
|
|
if( nRequireInven > pUser->GetItem()->FindBlankInventorySlotCount() )
|
|||
|
|
{
|
|||
|
|
pUser->SendPcCafeRentItem(ERROR_ITEM_INVENTORY_NOTENOUGH, nRequireInven);
|
|||
|
|
return 3;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
std::map<int,int>::iterator itor;
|
|||
|
|
for( itor=mapItemIDList.begin(); itor !=mapItemIDList.end(); ++itor )
|
|||
|
|
{
|
|||
|
|
if( !pUser->GetItem()->CreatePCRentalItem(itor->first, itor->second) )
|
|||
|
|
return 5;
|
|||
|
|
}
|
|||
|
|
pUser->SendPcCafeRentItem(ERROR_NONE, 0);
|
|||
|
|
return 0;
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
desc : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>մϴ<EFBFBD>.
|
|||
|
|
param : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>(1-<EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
return : -1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 0 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 1 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 2 : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ϸ<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
int api_user_RepairItem(UINT nUserObjectID, int iAllRepair)
|
|||
|
|
{
|
|||
|
|
#if defined(PRE_ADD_REPAIR_NPC)
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser ) return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_user_RepairItem(pUser, iAllRepair);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
int api_ui_OpenExchangeEnchant(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
#ifdef PRE_ADD_EXCHANGE_ENCHANT
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_ui_OpenExchangeEnchant(pUser);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_env_CheckCloseGateByTime(int iMapIndex)
|
|||
|
|
{
|
|||
|
|
#if defined(PRE_ADD_CHALLENGE_DARKLAIR)
|
|||
|
|
return DNScriptAPI::api_env_CheckCloseGateByTime(iMapIndex);
|
|||
|
|
#else
|
|||
|
|
return 0;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_ui_OpenCostumeRandomMix(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
#ifdef PRE_ADD_COSRANDMIX_ACCESSORY
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszLog;
|
|||
|
|
wszLog = FormatW( L"npc <20><><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD> <20><><EFBFBD><EFBFBD>");
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszLog.size()*sizeof(WCHAR), L"", (WCHAR*)wszLog.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->StartCostumeRandomMix(CostumeMix::RandomMix::OpenByNpc, 0, 0);
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_WorldBuffCheck(int nItemID)
|
|||
|
|
{
|
|||
|
|
#if defined(PRE_DRAGONBUFF)
|
|||
|
|
return DNScriptAPI::api_quest_WorldBuffCheck(nItemID);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int api_quest_ApplyWorldBuff(UINT nUserObjectID, int nItemID, int nMapIdx)
|
|||
|
|
{
|
|||
|
|
#if defined(PRE_DRAGONBUFF)
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return -1;
|
|||
|
|
return DNScriptAPI::api_quest_ApplyWorldBuff(pUser, nItemID, nMapIdx);
|
|||
|
|
#else
|
|||
|
|
return -1;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#ifdef PRE_ADD_DWC
|
|||
|
|
void api_ui_OpenCreateDwcTeamDlg(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if ( !pUser )
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
#ifndef _FINAL_BUILD
|
|||
|
|
std::wstring wszLog;
|
|||
|
|
wszLog = FormatW( L"DWC <20><> <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>");
|
|||
|
|
pUser->SendChat(CHATTYPE_NORMAL, (int)wszLog.size()*sizeof(WCHAR), L"", (WCHAR*)wszLog.c_str());
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
pUser->SendOpenDwcTeamDialog();
|
|||
|
|
pUser->SetCalledNpcResponse(true, false); // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UI <20><><EFBFBD><EFBFBD> <20><>û <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD> <20>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴѵ<C6B4><D1B5><EFBFBD> <20><><EFBFBD>Ǿƴϰ<C6B4> NPC <20><><EFBFBD>俩<EFBFBD><E4BFA9> üũ<C3BC><C5A9> <20>ɸ<EFBFBD><C9B8><EFBFBD> <20>ǹǷ<C7B9> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><>
|
|||
|
|
}
|
|||
|
|
#endif // PRE_ADD_DWC
|
|||
|
|
|
|||
|
|
int api_ui_OpenJobChange(UINT nUserObjectID)
|
|||
|
|
{
|
|||
|
|
CDNUserSession* pUser = __GetUserObj(nUserObjectID);
|
|||
|
|
if (!pUser)
|
|||
|
|
return -1;
|
|||
|
|
|
|||
|
|
return DNScriptAPI::api_Open_ChangeJobDialog(pUser);
|
|||
|
|
}
|