Files
test/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgNPC.cs
T
2025-11-17 14:31:20 +07:00

2594 lines
124 KiB
C#

using BrewMonster.Common;
using BrewMonster.Managers;
using BrewMonster.Network;
using BrewMonster.Scripts.Task;
using CSNetwork;
using CSNetwork.GPDataType;
using ModelRenderer.Scripts.Common;
using ModelRenderer.Scripts.GameData;
using System;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using TMPro;
using UnityEngine;
namespace BrewMonster.UI
{
public class DlgNPC : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI m_pTxt_npc;
[SerializeField] private TextMeshProUGUI m_pTxt_Content;
[SerializeField] private AUIListBox m_pLst_Main;
int m_iTracedTaskID;
int m_iTracedTaskNPCID;
CECTimeSafeChecker m_tracedTaskTimer;
bool m_bShow = false;
string m_strDataName = "";
uint m_dwData;
object m_pvData;
bool HasTracedTask()
{
return m_iTracedTaskID > 0;
}
void ResetTraceTaskInfo()
{
m_iTracedTaskNPCID = 0;
m_iTracedTaskID = 0;
m_tracedTaskTimer.Reset();
}
public static class NPC_DIALOG
{
public const uint NPC_DIALOG_NULL = 0,
NPC_DIALOG_ESSENCE = 1,
NPC_DIALOG_TALK = 2,
NPC_DIALOG_TASK_LIST = 3,
NPC_DIALOG_TASK_TALK = 4,
NPC_DIALOG_TASK_AWARD = 5;
};
public static class CDLGNPC
{
public const uint CDLGNPC_FORGET = 0xFFFFF01,
CDLGNPC_FACTION_CREATE = 0xFFFFF02,
CDLGNPC_FACTION_UPGRADE = 0xFFFFF03,
CDLGNPC_FACTION_DISMISS = 0xFFFFF04,
CDLGNPC_FACE = 0xFFFFF05,
CDLGNPC_MAIL = 0xFFFFF06,
CDLGNPC_AUCTION = 0xFFFFF07,
CDLGNPC_DOUBLEEXP = 0xFFFFF08,
CDLGNPC_PETHATCH = 0xFFFFF09,
CDLGNPC_PETREC = 0xFFFFF0A,
CDLGNPC_BATTLECHALLENGE = 0xFFFFF0B,
CDLGNPC_BATTLEENTER = 0xFFFFF0C,
CDLGNPC_BATTLELEAVE = 0xFFFFF0D,
CDLGNPC_GOLDTRADE = 0xFFFFF0E,
CDLGNPC_EQUIPREFINE = 0xFFFFF10,
CDLGNPC_EQUIPDYE = 0xFFFFF11,
CDLGNPC_REFINETRANS = 0xFFFFF12,
CDLGNPC_EQUIPSLOT = 0xFFFFF13,
CDLGNPC_ELFPRORESET = 0xFFFFF14,
CDLGNPC_ELFGENIUSRESET = 0xFFFFF15,
CDLGNPC_ELFFORGET = 0xFFFFF16,
CDLGNPC_ELFREFINE = 0xFFFFF17,
CDLGNPC_ELFREFINETRANS = 0xFFFFF18,
CDLGNPC_ELFTOPILL = 0xFFFFF19,
CDLGNPC_ELFEQUIPOFF = 0xFFFFF1A,
CDLGNPC_EQUIPREPAIR = 0xFFFFF1B,
CDLGNPC_WEBTRADE = 0xFFFFF1C,
CDLGNPC_GODEVILCONVERT = 0xFFFFF1D,
CDLGNPC_WEDDING_BOOK = 0xFFFFF1E,
CDLGNPC_WEDDING_INVITE = 0xFFFFF1F,
CGLDNPC_FORTRESS_CREATE = 0xFFFFF20,
CGLDNPC_FORTRESS_WAR = 0xFFFFF21,
CGLDNPC_FORTRESS_UPGRADE = 0xFFFFF22,
CGLDNPC_FORTRESS_HANDIN_MATERIAL = 0xFFFFF23,
CGLDNPC_FORTRESS_HANDIN_CONTRIB = 0xFFFFF24,
CGLDNPC_FORTRESS_EXCHANGE_MATERIAL = 0xFFFFF25,
CGLDNPC_FORTRESS_ENTER = 0xFFFFF26,
CGLDNPC_FORTRESS_WARLIST = 0xFFFFF27,
CGLDNPC_FORTRESS_LEAVE = 0xFFFFF28,
CDLGNPC_PETDYE = 0xFFFFF29,
CDLGNPC_VIEW_TRASHBOX = 0xFFFFF30,
CDLGNPC_VIEW_DPS_DPH_RANK = 0xFFFFF31,
CDLGNPC_FORCE_JOIN = 0xFFFFF32,
CDLGNPC_FORCE_QUIT = 0xFFFFF33,
CDLGNPC_JOIN_COUNTRY = 0xFFFFF34,
CDLGNPC_QUIT_COUNTRY = 0xFFFFF35,
CDLGNPC_LEAVE_COUNTRY_WAR = 0xFFFFF36,
CDLGNPC_EQUIP_MARK = 0xFFFFF37,
CDLGNPC_GOTO_SPECIALSERVER = 0xFFFFF38,
CDLGNPC_GOTO_ORIGINALSERVER = 0xFFFFF39,
CDLGNPC_PLAYER_RENAME = 0xFFFFF40,
CDLGNPC_STONE_CHANGE = 0xFFFFF41,
CDLGNPC_KING_SERVICE = 0xFFFFF42,
CDLGNPC_SPLIT_FASHION = 0xFFFFF43,
CDLGNPC_OFFLINESHOP_SETTING = 0xFFFFF44,
CDLGNPC_OFFLINESHOP_SELLBUY = 0xFFFFF45,
CDLGNPC_REINCARNATION = 0xFFFFF46,
CDLGNPC_GIFTCARD = 0xFFFFF47,
CDLGNPC_TRICKBATTLE = 0xFFFFF48, // 跨服活动, 战车
CDLGNPC_CARDRESPAWN = 0xFFFFF49, // 卡牌转生
CDLGNPC_QUERYCHARIOTAMOUNT = 0xFFFFF50, // 战车数量
CDLGNPC_FLYSWORDIMPROVE = 0xFFFFF51, // 飞剑强化
CDLGNPC_OPEN_FACTION_PVP = 0xFFFFF52, // 开启帮派掠夺
CDLGNPC_FACTION_RENAME = 0xFFFFF53,
CDLGNPC_GOLD_SHOP = 0xFFFFF54,
CDLGNPC_PLAYER_CHANGE_GENDER = 0xFFFFF55; // 修改性别
};
bool PopupTracedTaskDialog(NPC_ESSENCE pEssence)
{
PopupNPCDialog(pEssence);
//if (GetData() == NPC_DIALOG.NPC_DIALOG_ESSENCE)
//{
// for (int i = 0; i < m_pLst_Main.GetCount() - 1; ++i)
// {
// object pData = m_pLst_Main.GetItemDataPtr(i, 0, "");
// uint iService = m_pLst_Main.GetItemData(i, 0, "");
// DATA_TYPE DataType = DATA_TYPE.DT_INVALID;
// EC_Game.GetElementDataMan().get_data_ptr(iService, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
// if (DataType == DATA_TYPE.DT_NPC_TASK_IN_SERVICE ||
// DataType == DATA_TYPE.DT_NPC_TASK_OUT_SERVICE ||
// DataType == DATA_TYPE.DT_NPC_TASK_MATTER_SERVICE)
// {
// SelectListItem(i);
// break;
// }
// }
//}
//if (GetData() == NPC_DIALOG.NPC_DIALOG_TASK_LIST)
//{
// for (int i = 0; i < m_pLst_Main.GetCount() - 1; ++i)
// {
// UINT64 taskid = m_pLst_Main.GetItemData64(i, 0, "TaskID");
// if (taskid == m_iTracedTaskID)
// {
// SelectListItem(i);
// return GetData() == NPC_DIALOG.NPC_DIALOG_TASK_TALK;
// }
// }
//}
return false;
}
public void PopupDialog(NPC_ESSENCE pEssence)
{
if (HasTracedTask())
{
if (m_tracedTaskTimer.IsTimeArrived())
{
ResetTraceTaskInfo();
}
}
if (HasTracedTask())
{
CECNPC pNPC = (EC_ManMessageMono.Instance._CECNPCMan.SeekOutNPC(m_iTracedTaskNPCID));
if (pNPC)
{
if (pEssence.id == pNPC.GetNPCID())
{
if (!PopupTracedTaskDialog(pEssence))
{
if (!m_bShow)
{
ResetTraceTaskInfo();
return;
}
PopupNPCDialog(pEssence);
}
}
}
else
{
GetGameUIMan().EndNPCService();
}
ResetTraceTaskInfo();
}
else
{
PopupNPCDialog(pEssence);
}
}
private string GetStringFromTable(int idString)
{
CECGameUIMan gameUIMan = EC_Game.GetGameRun().GetUIManager().GetInGameUIMan();
string str = gameUIMan.GetStringFromAuiDialogTable(idString);
if(str == null)
{
return gameUIMan.GetStringFromTable(idString);
}
return str;
}
private void Show(bool value)
{
}
private CECGameUIMan GetGameUIMan()
{
return EC_Game.GetGameRun().GetUIManager().GetInGameUIMan();
}
private CECHostPlayer GetHostPlayer()
{
return EC_ManMessageMono.Instance.EC_ManPlayer.GetHostPlayer();
}
void PopupNPCDialog(NPC_ESSENCE pEssence)
{
int i;
object pData;
DATA_TYPE DataType = new DATA_TYPE();
string strText = GetStringFromTable(249);
elementdataman pDataMan = EC_Game.GetElementDataMan();
Show(true);
//test
// pEssence.id_goblin_skill_service = 1;
uint[] a_uiService =
{
pEssence.id_talk_service, // 交谈的服务ID
pEssence.id_sell_service, // 出售商品的服务ID
pEssence.id_buy_service, // 收购品的服务ID
pEssence.id_install_service, // 安装镶嵌品的服务ID
pEssence.id_uninstall_service, // 拆除镶嵌品的服务ID
pEssence.id_skill_service, // 教授技能的服务ID
pEssence.id_heal_service, // 治疗的服务ID
pEssence.id_transmit_service, // 传送的服务ID
pEssence.id_transport_service, // 运输的服务ID
pEssence.id_proxy_service, // 代售的服务ID
pEssence.id_storage_service, // 仓库的服务ID
pEssence.id_make_service, // 生产的服务ID
pEssence.id_decompose_service, // 分解的服务ID
pEssence.id_identify_service, // 鉴定的服务ID
pEssence.id_war_towerbuild_service,// 建造箭塔的服务ID
pEssence.id_resetprop_service, // 洗点的服务ID
pEssence.id_petname_service, // 宠物改名服务
pEssence.id_petlearnskill_service, // 宠物学习技能服务
pEssence.id_petforgetskill_service,// 宠物遗忘技能服务
pEssence.id_equipbind_service, // 装备绑定服务
pEssence.id_equipdestroy_service, // 装备销毁服务
pEssence.id_equipundestroy_service,// 装备解除销毁服务
pEssence.id_goblin_skill_service, // 小精灵学习服务
pEssence.id_engrave_service, // 镌刻服务
pEssence.id_randprop_service, // 随机属性
pEssence.id_force_service, // 势力属性
};
GetGameUIMan().m_pCurNPCEssence = (NPC_ESSENCE)pEssence;
SetData(NPC_DIALOG.NPC_DIALOG_ESSENCE, "");
m_pTxt_npc.SetText(Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pEssence.name)));
m_pTxt_Content.SetText(Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pEssence.hello_msg)));
//m_pLst_Main.SetHOver(true);
m_pLst_Main.ResetContent();
//add for test by czx
// int old = pEssence.combined_services | 0xFFFE0000;
// ((NPC_ESSENCE *)pEssence).combined_services = old;
//if ((pEssence.combined_services & 0x01) != 0) // Add "forget" skill.
//{
// CECSkill pSkill;
// for (i = 0; i < GetHostPlayer().GetPassiveSkillNum(); i++)
// {
// pSkill = GetHostPlayer().GetPassiveSkillByIndex(i);
// if (pSkill.GetType() == CECSkill::TYPE_PRODUCE)
// {
// m_pLst_Main.AddString(strText + GetStringFromTable(558));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC_FORGET);
// m_pLst_Main.SetItemDataPtr(m_pLst_Main.GetCount() - 1, (void*)pSkill);
// break;
// }
// }
//}
if ((pEssence.combined_services & 0x02) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(885));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_EQUIPSLOT);
}
if ((pEssence.combined_services & 0x10) != 0) // Add "faction" service.
{
if (GetHostPlayer().GetFactionID() <= 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(592));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_FACTION_CREATE);
}
else if (GetHostPlayer().GetFRoleID() == GNETRoles._R_MASTER)
{
int idFaction = GetHostPlayer().GetFactionID();
CECFactionMan pFMan = EC_Game.GetFactionMan();
Faction_Info pInfo = pFMan.GetFaction((uint)idFaction, false);
if (pInfo != null && pInfo.GetLevel() <= 1)
{
m_pLst_Main.AddString(strText + GetStringFromTable(593));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_FACTION_UPGRADE);
}
m_pLst_Main.AddString(strText + GetStringFromTable(11436));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_FACTION_RENAME);
m_pLst_Main.AddString(strText + GetStringFromTable(594));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_FACTION_DISMISS);
}
}
if ((pEssence.combined_services & 0x20) != 0 &&
!GetHostPlayer().HasEffectType(CECPlayer.Effect_type.EFF_FACEPILL))
{
m_pLst_Main.AddString(strText + GetStringFromTable(595));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_FACE);
}
if ((pEssence.combined_services & 0x40) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(634));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_MAIL);
}
if ((pEssence.combined_services & 0x80) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(644));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_AUCTION);
}
// if( pEssence.combined_services & 0x100 )
// {
// m_pLst_Main.AddString(strText + GetStringFromTable(683));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC_DOUBLEEXP);
// }
if ((pEssence.combined_services & 0x200) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(691));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_PETHATCH);
}
if ((pEssence.combined_services & 0x400) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(692));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_PETREC);
}
if ((pEssence.combined_services & 0x2000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(734));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_GOLDTRADE);
}
if ((pEssence.combined_services & 0x4000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(769));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_EQUIPREFINE);
}
if ((pEssence.combined_services & 0x8000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(874));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_EQUIPDYE);
m_pLst_Main.AddString(strText + GetStringFromTable(9323));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_PETDYE);
}
if ((pEssence.combined_services & 0x10000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(878));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_REFINETRANS);
}
if ((pEssence.combined_services & 0x800000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(7921));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_EQUIPREPAIR);
}
if ((pEssence.combined_services & 0x1000000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(8600));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_WEBTRADE);
}
if ((pEssence.combined_services & 0x2000000) != 0)
{
if (GetHostPlayer().GetBasicProps().iLevel2 >= 20)
{
m_pLst_Main.AddString(strText + GetStringFromTable(8601));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_GODEVILCONVERT);
}
}
if ((pEssence.combined_services & 0x4000000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(8740));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_WEDDING_BOOK);
m_pLst_Main.AddString(strText + GetStringFromTable(8741));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_WEDDING_INVITE);
}
bool bFortressOK = false;
while (true)
{
int idFaction = GetHostPlayer().GetFactionID();
if (idFaction <= 0 ||
EC_Game.GetFactionMan().GetFaction((uint)idFaction, false) == null)
{
// 无帮派、或者帮派信息尚未查询到
break;
}
if (GetHostPlayer().GetFactionFortressConfig().require_level == int.MinValue) // this replace logic == null
{
// 没有基地配置表
break;
}
bFortressOK = true;
break;
}
bool bMaster = false, bViceMaster = false, bBodyGuard = false;
CECHostPlayer pHost = GetHostPlayer();
if (pHost.GetFactionID() > 0)
{
switch (pHost.GetFRoleID())
{
case GNETRoles._R_MASTER:
bMaster = true;
break;
case GNETRoles._R_VICEMASTER:
bViceMaster = true;
break;
case GNETRoles._R_BODYGUARD:
bBodyGuard = true;
break;
}
}
bool bInFortressNow = pHost.IsInFortress();
if (bFortressOK)
{
// 帮派基地相关
if ((pEssence.combined_services & 0x8000000) != 0)
{
if (bMaster)
{
// 帮主可以创建基地
m_pLst_Main.AddString(strText + GetStringFromTable(9101));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CGLDNPC_FORTRESS_CREATE);
}
// if (bMaster || bViceMaster)
// {
// // 帮主、副帮主可以处理战斗事宜
// m_pLst_Main.AddString(strText + GetStringFromTable(9102));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CGLDNPC_FORTRESS_WAR);
// }
if (!bInFortressNow)
{
// 帮众随时可进入我方基地
m_pLst_Main.AddString(strText + GetStringFromTable(9107));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CGLDNPC_FORTRESS_ENTER);
}
// 帮众随时可查看对战表
// m_pLst_Main.AddString(strText + GetStringFromTable(9108));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CGLDNPC_FORTRESS_WARLIST);
}
if ((pEssence.combined_services & 0x10000000) != 0)
{
if (bMaster)
{
if (!GetHostPlayer().IsInFortressWar())
{
// 帮主非战时可以升级基地设施
m_pLst_Main.AddString(strText + GetStringFromTable(9103));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CGLDNPC_FORTRESS_UPGRADE);
}
}
// 帮众可以缴纳材料
m_pLst_Main.AddString(strText + GetStringFromTable(9104));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CGLDNPC_FORTRESS_HANDIN_MATERIAL);
// 帮众可以缴纳贡献度
m_pLst_Main.AddString(strText + GetStringFromTable(9105));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CGLDNPC_FORTRESS_HANDIN_CONTRIB);
if (bInFortressNow)
{
// 帮众可以离开基地
m_pLst_Main.AddString(strText + GetStringFromTable(9109));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CGLDNPC_FORTRESS_LEAVE);
}
}
if ((pEssence.combined_services & 0x20000000) != 0)
{
if (bMaster)
{
// 帮主可以兑换材料
m_pLst_Main.AddString(strText + GetStringFromTable(9106));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CGLDNPC_FORTRESS_EXCHANGE_MATERIAL);
}
}
}
if ((pEssence.combined_services & 0x8000000) != 0)
{
if (EC_Game.g_bEnableFortressDeclareWar)
{
m_pLst_Main.AddString(strText + GetStringFromTable(9102));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CGLDNPC_FORTRESS_WAR);
}
}
// check the storage without password
if ((pEssence.combined_services & 0x40000000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(9299));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_VIEW_TRASHBOX);
}
if ((pEssence.combined_services & 0x80000000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(9340));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_VIEW_DPS_DPH_RANK);
}
if ((pEssence.combined_services2 & 0x00000001) != 0)
{
bool bHasCountry = GetHostPlayer().GetCountry() > 0;
m_pLst_Main.AddString(strText + GetStringFromTable(bHasCountry ? 9763 : 9762));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, bHasCountry ? CDLGNPC.CDLGNPC_QUIT_COUNTRY : CDLGNPC.CDLGNPC_JOIN_COUNTRY);
}
if ((pEssence.combined_services2 & 0x00000002) != 0)
{
//if (GetHostPlayer().IsInCountryWar())
//{
// m_pLst_Main.AddString(strText + GetStringFromTable(9914));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_LEAVE_COUNTRY_WAR);
//}
}
if ((pEssence.combined_services2 & 0x00000004) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(9994));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_EQUIP_MARK);
}
if ((pEssence.combined_services2 & 0x00000008) != 0)
{
//if (!CECCrossServer.Instance().IsOnSpecialServer())
//{
// m_pLst_Main.AddString(strText + GetStringFromTable(10132));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_GOTO_SPECIALSERVER);
//}
}
if ((pEssence.combined_services2 & 0x00000010) != 0)
{
//if (CECCrossServer.Instance().IsOnSpecialServer())
//{
// m_pLst_Main.AddString(strText + GetStringFromTable(10133));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_GOTO_ORIGINALSERVER);
//}
}
// 改名服务
if ((pEssence.combined_services2 & 0x00000020) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(10150));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_PLAYER_RENAME);
}
// 宝石转换
bool bHasStoneChange = (pEssence.combined_services2 & 0x00000040) != 0;
if (bHasStoneChange)
{
m_pLst_Main.AddString(strText + GetStringFromTable(10172));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_STONE_CHANGE);
}
// 国王相关
if ((pEssence.combined_services2 & 0x00000080) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(10304));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_KING_SERVICE);
}
// 寄卖服务
if ((pEssence.combined_services2 & 0x00000100) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(10508));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_OFFLINESHOP_SETTING);
m_pLst_Main.AddString(strText + GetStringFromTable(10513));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_OFFLINESHOP_SELLBUY);
}
// 时装拆分
if ((pEssence.combined_services2 & 0x00000200) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(10430));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_SPLIT_FASHION);
}
if ((pEssence.combined_services2 & 0x00000400) != 0)
{
// 转生版本上限
if (GetHostPlayer().GetReincarnationCount() < CECPlayer.MAX_REINCARNATION)
{
m_pLst_Main.AddString(strText + GetStringFromTable(10800));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_REINCARNATION);
}
}
if ((pEssence.combined_services2 & 0x00000800) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(10820));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_GIFTCARD);
}
if ((pEssence.combined_services2 & 0x00001000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(10890));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_TRICKBATTLE);
}
if ((pEssence.combined_services2 & 0x00002000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(11000));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_CARDRESPAWN);
}
if ((pEssence.combined_services2 & 0x00001000) != 0) // 战车开启npc 自动带有改服务器,(纯客户端)
{
m_pLst_Main.AddString(strText + GetStringFromTable(10912));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_QUERYCHARIOTAMOUNT);
}
if ((pEssence.combined_services2 & 0x00004000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(11193));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_FLYSWORDIMPROVE);
}
if ((pEssence.combined_services2 & 0x00008000) != 0)
{
if (!pHost.IsInFactionPVP() && (bMaster || bViceMaster || bBodyGuard))
{
m_pLst_Main.AddString(strText + GetStringFromTable(11270));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_OPEN_FACTION_PVP);
}
}
if ((pEssence.combined_services2 & 0x00010000) != 0 ||
(pEssence.combined_services2 & 0x00020000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(11437));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_GOLD_SHOP);
}
if ((pEssence.combined_services2 & 0x00040000) != 0)
{
//if (CECProfConfig::Instance().IsExist(GetHostPlayer().GetProfession(), CECProfConfig::Instance().GetCounterpartGender(GetHostPlayer().GetGender())))
//{
// m_pLst_Main.AddString(strText + GetStringFromTable(11438));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_PLAYER_CHANGE_GENDER);
//}
}
for (i = 0; i < a_uiService.Length; i++)
{
if (a_uiService[i] == 0) continue;
pData = ElementDataManProvider.GetElementDataMan().get_data_ptr(a_uiService[i], ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
if (DataType == DATA_TYPE.DT_NPC_TALK_SERVICE)
{
NPC_TALK_SERVICE pService = (NPC_TALK_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_SELL_SERVICE)
{
NPC_SELL_SERVICE pService = (NPC_SELL_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_BUY_SERVICE)
{
continue;
}
else if (DataType == DATA_TYPE.DT_NPC_REPAIR_SERVICE)
{
NPC_REPAIR_SERVICE pService = (NPC_REPAIR_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_INSTALL_SERVICE)
{
NPC_INSTALL_SERVICE pService = (NPC_INSTALL_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_UNINSTALL_SERVICE)
{
NPC_UNINSTALL_SERVICE pService = (NPC_UNINSTALL_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_SKILL_SERVICE)
{
NPC_SKILL_SERVICE pService = (NPC_SKILL_SERVICE)pData;
if (i >= 18)
{
m_pLst_Main.AddString(strText + GetStringFromTable(7107));
}
else
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_HEAL_SERVICE)
{
NPC_HEAL_SERVICE pService = (NPC_HEAL_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_TRANSMIT_SERVICE)
{
NPC_TRANSMIT_SERVICE pService = (NPC_TRANSMIT_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_TRANSPORT_SERVICE)
{
NPC_TRANSPORT_SERVICE pService = (NPC_TRANSPORT_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_PROXY_SERVICE)
{
NPC_PROXY_SERVICE pService = (NPC_PROXY_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_STORAGE_SERVICE)
{
NPC_STORAGE_SERVICE pService = (NPC_STORAGE_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, a_uiService[i]);
m_pLst_Main.AddString(strText + GetStringFromTable(253));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, a_uiService[i]);
m_pLst_Main.AddString(strText + GetStringFromTable(8080));
}
else if (DataType == DATA_TYPE.DT_NPC_MAKE_SERVICE)
{
NPC_MAKE_SERVICE pService = (NPC_MAKE_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_DECOMPOSE_SERVICE)
{
//NPC_DECOMPOSE_SERVICE pService = (NPC_DECOMPOSE_SERVICE)pData;
//CECHostPlayer pHost = GetHostPlayer();
//CECSkill pSkill;
//int j = 0;
//for (j = 0; j < pHost.GetPassiveSkillNum(); j++)
//{
// pSkill = pHost.GetPassiveSkillByIndex(j);
// if ((pSkill.GetType() == CECSkill::TYPE_LIVE ||
// pSkill.GetType() == CECSkill::TYPE_PRODUCE) &&
// (int)pService.id_decompose_skill == pSkill.GetSkillID())
// {
// m_pLst_Main.AddString(strText + pService.name);
// break;
// }
//}
//if (j == pHost.GetPassiveSkillNum())
// continue;
}
else if (DataType == DATA_TYPE.DT_NPC_IDENTIFY_SERVICE)
{
NPC_IDENTIFY_SERVICE pService = (NPC_IDENTIFY_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_WAR_TOWERBUILD_SERVICE)
{
NPC_WAR_TOWERBUILD_SERVICE pService = (NPC_WAR_TOWERBUILD_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_RESETPROP_SERVICE)
{
NPC_RESETPROP_SERVICE pService = (NPC_RESETPROP_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_PETNAME_SERVICE)
{
NPC_PETNAME_SERVICE pService = (NPC_PETNAME_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_PETLEARNSKILL_SERVICE)
{
NPC_PETLEARNSKILL_SERVICE pService = (NPC_PETLEARNSKILL_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_PETFORGETSKILL_SERVICE)
{
NPC_PETFORGETSKILL_SERVICE pService = (NPC_PETFORGETSKILL_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_EQUIPBIND_SERVICE)
{
NPC_EQUIPBIND_SERVICE pService = (NPC_EQUIPBIND_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_EQUIPDESTROY_SERVICE)
{
NPC_EQUIPDESTROY_SERVICE pService = (NPC_EQUIPDESTROY_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_EQUIPUNDESTROY_SERVICE)
{
NPC_EQUIPUNDESTROY_SERVICE pService = (NPC_EQUIPUNDESTROY_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_ENGRAVE_SERVICE)
{
NPC_ENGRAVE_SERVICE pService = (NPC_ENGRAVE_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_RANDPROP_SERVICE)
{
NPC_RANDPROP_SERVICE pService = (NPC_RANDPROP_SERVICE)pData;
m_pLst_Main.AddString(strText + Encoding.Unicode.GetString(MemoryMarshal.AsBytes<ushort>(pService.name)));
}
else if (DataType == DATA_TYPE.DT_NPC_FORCE_SERVICE)
{
//NPC_FORCE_SERVICE pService = (NPC_FORCE_SERVICE)pData;
//uint npcForce = pService.force_id;
//int playerForce = GetHostPlayer().GetForce();
//FORCE_CONFIG pConfig = CECForceMgr::GetForceData(npcForce);
//if (pConfig && (npcForce == playerForce || !playerForce))
//{
// string strForce;
// strForce.Format(GetStringFromTable(playerForce ? 9401 : 9400), pConfig.name);
// m_pLst_Main.AddString(strText + strForce);
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, playerForce ? CDLGNPC_FORCE_QUIT : CDLGNPC_FORCE_JOIN);
// m_pLst_Main.SetItemDataPtr(m_pLst_Main.GetCount() - 1, (void*)pData);
//}
// hide the invalid force option
continue;
}
else
{
// 未识别的服务
continue;
}
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, a_uiService[i]);
m_pLst_Main.SetItemDataPtr(m_pLst_Main.GetCount() - 1, pData);
}
//add for goblin by czx
if ((pEssence.combined_services & 0x400000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(7106));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_ELFEQUIPOFF);
}
if ((pEssence.combined_services & 0x200000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(7100));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_ELFPRORESET);
}
if ((pEssence.combined_services & 0x40000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(7101));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_ELFGENIUSRESET);
}
if ((pEssence.combined_services & 0x80000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(7102));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_ELFFORGET);
}
if ((pEssence.combined_services & 0x200000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(7105));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_ELFTOPILL);
}
if ((pEssence.combined_services & 0x100000) != 0)
{
m_pLst_Main.AddString(strText + GetStringFromTable(7103));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_ELFREFINE);
m_pLst_Main.AddString(strText + GetStringFromTable(7104));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC.CDLGNPC_ELFREFINETRANS);
}
//if (UnityGameSession.GetServerAttr().battle == 1)
//{
// if (GetGameUIMan().m_pDlgGuildMap.IsBattleOpen() &&
// (pEssence.combined_services & 0x800))
// {
// long stime = GetGame().GetServerGMTTime();
// stime -= GetGame().GetTimeZoneBias() * 60; // localtime = UTC - bias, in which bias is minute
// tm* gtime = gmtime(&stime);
// // if( gtime.tm_wday == 1 && gtime.tm_hour >= 19 )
// if (GetGameUIMan().m_pDlgGuildMap.IsBattleChallengeOpen())
// // && GetHostPlayer().GetFRoleID() == GNETRoles._R_MASTER )
// {
// m_pLst_Main.AddString(strText + GetStringFromTable(699));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC_BATTLECHALLENGE);
// }
// // if( gtime.tm_wday == 5 && gtime.tm_hour >= 18 ||
// // gtime.tm_wday == 6 ||
// // gtime.tm_wday == 0 )
// if (GetHostPlayer().GetFRoleID() != GNETRoles._R_UNMEMBER)
// {
// m_pLst_Main.AddString(strText + GetStringFromTable(722));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC_BATTLEENTER);
// }
// }
// if (pEssence.combined_services & 0x1000)
// {
// m_pLst_Main.AddString(strText + GetStringFromTable(724));
// m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, CDLGNPC_BATTLELEAVE);
// }
//}
// 任务相关末尾添加,以判断是以“任务相关”显示在列表里,还是直接显示任务列表
CheckTaskService(pEssence);
if (pEssence.domain_related == 1)
{
if (GetHostPlayer().GetFRoleID() == GNETRoles._R_UNMEMBER)
m_pLst_Main.ResetContent();
//else
//{
// CECNPCMan pNPCMan = GetWorld().GetNPCMan();
// CECNPC pNPC = pNPCMan.GetNPC(GetHostPlayer().GetCurServiceNPC());
// if (pNPC)
// {
// A3DVECTOR3 pos = pNPC.GetServerPos();
// CECWorld pWorld = GetWorld();
// CELPrecinct pPrecinct = pWorld.GetPrecinctSet().IsPointIn(
// pos.x, pos.z, pWorld.GetInstanceID());
// if (pPrecinct)
// {
// int idDomain = pPrecinct.GetDomainID();
// DOMAIN_INFO* pInfo = CECDomainGuildInfo::Instance().Find(idDomain);
// int idFaction = pInfo ? pInfo.id_owner : -1;
// if (GetHostPlayer().GetFactionID() != idFaction)
// m_pLst_Main.ResetContent();
// }
// }
//}
}
// Add "EXIT" choice.
m_pLst_Main.AddString(GetStringFromTable(503));
// Update list height for diffent service count
//if (pEssence.id != m_lastNPCID)
//{
// m_lastNPCID = pEssence.id;
// // Compute new list height
// const float fScale = GetGameUIMan().GetWindowScale();
// const int c_heightPerItem = int(18 * fScale);
// const int c_minListHeight = int(101 * fScale);
// const int c_minTextHeight = int(135 * fScale);
// int itemCount = m_pLst_Main.GetCount();
// int newListHeight = itemCount * c_heightPerItem + 1;
// newListHeight = max(newListHeight, c_minListHeight);
// SIZE sizeText = m_pTxt_Content.GetSize();
// SIZE sizeList = m_pLst_Main.GetSize();
// if (sizeText.cy - (newListHeight - sizeList.cy) < c_minTextHeight)
// newListHeight = sizeText.cy - c_minTextHeight + sizeList.cy;
// // Compute list height change
// int deltaListHeight = newListHeight - sizeList.cy;
// // Adjust controls according to height change
// if (deltaListHeight)
// {
// POINT pos = m_pLst_Main.GetPos(true);
// m_pLst_Main.SetPos(pos.x, pos.y - deltaListHeight);
// m_pLst_Main.SetSize(sizeList.cx, sizeList.cy + deltaListHeight);
// m_pTxt_Content.SetSize(sizeText.cx, sizeText.cy - deltaListHeight);
// }
//}
//GetGameUIMan().m_bShowAllPanels = true;
}
void PopupNPCDialog(talk_proc pTalk)
{
if (pTalk.num_window == 0) return;
//int i, nIndex;
//string strText;
//CECTaskInterface pTask = GetHostPlayer().GetTaskInterface();
//m_pTxt_Content.SetText(pTask.FormatTaskTalk(pTalk.windows[0].talk_text));
//m_pTxt_npc.SetText("");
//m_pLst_Main.ResetContent();
//for (i = 0; i < pTalk.windows[0].num_option; i++)
//{
// strText = GetStringFromTable(249);
// strText += pTalk.windows[0].options[i].text;
// m_pLst_Main.AddString(strText);
// nIndex = m_pLst_Main.GetCount() - 1;
// m_pLst_Main.SetItemData(nIndex, pTalk.windows[0].options[i].id);
// m_pLst_Main.SetItemDataPtr(nIndex, &pTalk.windows[0].options[i]);
//}
//SetDataPtr(pTalk, "ptr_talk_proc");
//if (!IsShow()) Show(true);
}
void CheckTaskService(NPC_ESSENCE pEssence)
{
uint[] a_uiService2 =
{
pEssence.id_task_out_service, // 任务相关的服务ID: 发放任务服务
pEssence.id_task_in_service, // 任务相关的服务ID: 验证完成任务服务
pEssence.id_task_matter_service, // 任务相关的服务ID: 发放任务物品服务
};
object pData;
DATA_TYPE DataType = new DATA_TYPE();
string strText = GetStringFromTable(249);
elementdataman pDataMan = EC_Game.GetElementDataMan();
// flag if this NPC contains task related service
uint validTaskService = 0;
// flag if we only got storage task service
bool isStorageTaskOnly = true;
// flag if storage task exists
NPC_TASK_OUT_SERVICE pStorageService = new NPC_TASK_OUT_SERVICE();
pStorageService.storage_deliver_per_day = int.MinValue;
//
// this loop will set values to these flags by checking current NPC data
//
for (int i = 0; i < a_uiService2.Length; i++)
{
if (a_uiService2[i] == 0) continue;
pData = ElementDataManProvider.GetElementDataMan().get_data_ptr(a_uiService2[i], ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
// ignore other service
if (DataType != DATA_TYPE.DT_NPC_TASK_IN_SERVICE &&
DataType != DATA_TYPE.DT_NPC_TASK_OUT_SERVICE &&
DataType != DATA_TYPE.DT_NPC_TASK_MATTER_SERVICE)
{
continue;
}
if (DataType != DATA_TYPE.DT_NPC_TASK_OUT_SERVICE)
{
validTaskService = a_uiService2[i];
isStorageTaskOnly = false;
}
else
{
// do not update if we got other task service already
if (validTaskService == 0) validTaskService = a_uiService2[i];
// check whether this is a task storage
NPC_TASK_OUT_SERVICE pService = (NPC_TASK_OUT_SERVICE)pData;
if (pService.storage_id == 0 || pService.storage_open_item == 0)
{
isStorageTaskOnly = false;
}
else
{
pStorageService = pService;
}
}
}
// make sure this flag is not conflicted with others
isStorageTaskOnly = isStorageTaskOnly && validTaskService != 0 && pStorageService.storage_deliver_per_day != int.MinValue;
// setup the menu item based on these flags
if (validTaskService != 0)
{
bool isEmptyMenu = (m_pLst_Main.GetCount() <= 0);
if (isEmptyMenu && pStorageService.storage_deliver_per_day == int.MinValue)
{
// 没有非任务选项,直接弹出任务内容
PopupTaskDialog(true);
}
else
{
if (pStorageService.storage_deliver_per_day != int.MinValue)
{
// add a menu item for task storage
m_pLst_Main.AddString(strText + ("<color=#FF0000>") + pStorageService.name + "</color>");
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, pEssence.id_task_out_service);
m_pLst_Main.SetItemDataPtr(m_pLst_Main.GetCount() - 1, pStorageService);
}
isEmptyMenu = (m_pLst_Main.GetCount() <= 0);
if (!isEmptyMenu && !isStorageTaskOnly)
{
pData = pDataMan.get_data_ptr(validTaskService, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
// 有其它非任务内容,把所有任务相关集中放在“任务相关”栏里
m_pLst_Main.AddString(strText + GetStringFromTable(244));
m_pLst_Main.SetItemData(m_pLst_Main.GetCount() - 1, validTaskService);
m_pLst_Main.SetItemDataPtr(m_pLst_Main.GetCount() - 1, pData);
}
}
}
}
void PopupTaskDialog(bool bTaskNPC)
{
// NPC_ESSENCE pCurNPCEssence = GetGameUIMan().m_pCurNPCEssence;
// NPC_ESSENCE pEssence = pCurNPCEssence;
// //if (!pEssence) return;
// int i, j, idTask;
// object pData;
// DATA_TYPE DataType = new DATA_TYPE();
// unsigned int* a_idTask;
// uint[] a_uiService =
// {
// pEssence.id_task_out_service, // 任务相关的服务ID: 发放任务服务
// pEssence.id_task_in_service, // 任务相关的服务ID: 验证完成任务服务
// pEssence.id_task_matter_service // 任务相关的服务ID: 发放任务物品服务
// };
// int idLastTask = 0, nLastTaskTime = 0, nFinishTime;
// elementdataman pDataMan = EC_Game.GetElementDataMan();
// abase::vector<TASK_ITEM> taskIn, taskOut, taskMatter;
// CECTaskInterface* pTask = GetHostPlayer().GetTaskInterface();
// for (i = 0; i < sizeof(a_uiService) / sizeof(unsigned int) ; i++ )
//{
// pData = pDataMan.get_data_ptr(a_uiService[i], ID_SPACE_ESSENCE, DataType);
// if (DataType == DT_NPC_TASK_IN_SERVICE ||
// DataType == DT_NPC_TASK_OUT_SERVICE)
// {
// int total_count = 0;
// if (DataType == DT_NPC_TASK_IN_SERVICE)
// {
// NPC_TASK_IN_SERVICE* pService = (NPC_TASK_IN_SERVICE*)pData;
// a_idTask = pService.id_tasks;
// total_count = sizeof(pService.id_tasks) / sizeof(pService.id_tasks[0]);
// }
// else
// {
// NPC_TASK_OUT_SERVICE* pService = (NPC_TASK_OUT_SERVICE*)pData;
// // if storage task not exists
// if (pService.storage_id == 0 || pService.storage_open_item == 0)
// {
// a_idTask = pService.id_tasks;
// total_count = sizeof(pService.id_tasks) / sizeof(pService.id_tasks[0]);
// }
// }
// for (j = 0; j < total_count; j++)
// {
// idTask = a_idTask[j];
// if (idTask <= 0) continue;
// if (DataType == DT_NPC_TASK_IN_SERVICE)
// taskIn.push_back(TASK_ITEM(idTask, a_uiService[i]));
// else
// taskOut.push_back(TASK_ITEM(idTask, a_uiService[i]));
// nFinishTime = (int)pTask.GetTaskFinishedTime(idTask);
// if (nFinishTime > nLastTaskTime)
// {
// idLastTask = idTask;
// nLastTaskTime = nFinishTime;
// }
// }
// }
// else if (DataType == DT_NPC_TASK_MATTER_SERVICE)
// {
// NPC_TASK_MATTER_SERVICE* pService = (NPC_TASK_MATTER_SERVICE*)pData;
// for (j = 0; j < 16; j++)
// {
// idTask = pService.tasks[j].id_task;
// if (idTask > 0)
// {
// taskMatter.push_back(TASK_ITEM(idTask, a_uiService[i]));
// }
// }
// }
// }
// A3DCOLOR color;
// ACString strText;
// const talk_proc* pTalk;
// ATaskTempl* pTemp, *pTempRoot;
// int nIndex, nNumTasks = 0;
// int nHostLevel = GetHostPlayer().GetBasicProps().iLevel;
// ATaskTemplMan* pTempMan = g_pGame.GetTaskTemplateMan();
// m_pLst_Main.ResetContent();
// abase::vector<TASK_ITEM>* a_uiTasks[] = { &taskIn, &taskOut, &taskMatter };
// for (int idx = 0; idx < sizeof(a_uiTasks) / sizeof(a_uiTasks[0]); idx++)
// {
// abase::vector<TASK_ITEM>::iterator it;
// for (it = a_uiTasks[idx].begin(); it != a_uiTasks[idx].end(); ++it)
// {
// idTask = it.task_id;
// color = 0;
// bool bNeedSetSpecialColor = false;
// pTemp = NULL;
// pTalk = NULL;
// color = m_pLst_Main.GetColor();
// strText = GetStringFromTable(249);
// if (idx == 1)
// {
// if (pTask.HasTask(idTask))
// {
// if (!pTask.CanFinishTask(idTask))
// {
// pTemp = pTempMan.GetTaskTemplByID(idTask);
// pTalk = pTemp.GetUnfinishedTalk();
// }
// }
// else if (pTask.CanShowTask(idTask))
// {
// pTemp = pTempMan.GetTaskTemplByID(idTask);
// if (0 == pTask.CanDeliverTask(idTask))
// pTalk = pTemp.GetDeliverTaskTalk();
// else
// {
// pTalk = pTemp.GetUnqualifiedTalk();
// color = A3DCOLORRGB(128, 128, 128);
// bNeedSetSpecialColor = true;
// }
// }
// }
// if (idx == 0 && pTask.HasTask(idTask)
// && pTask.CanFinishTask(idTask) && !pTalk)
// {
// pTemp = pTempMan.GetTaskTemplByID(idTask);
// pTalk = pTemp.GetAwardTalk();
// strText = GetStringFromTable(302);
// }
// if (pTemp && pTalk && (pTalk.num_window > 1 || pTalk.num_window == 1 && wcslen(pTalk.windows[0].talk_text)))
// {
// if (pTemp.IsKeyTask())
// {
// color = A3DCOLORRGB(255, 162, 0);
// bNeedSetSpecialColor = true;
// }
// else if (color != 0)
// {
// // 去掉根据人物和任务级别差来改变颜色的逻辑
// /*
// nLevel = pTemp.GetSuitableLevel();
// if( nHostLevel <= nLevel - 2 )
// color = A3DCOLORRGB(255, 54, 0);
// else if( nHostLevel >= nLevel + 3 )
// color = A3DCOLORRGB(22, 142, 54);
// */
// }
// pTempRoot = (ATaskTempl*)pTemp.GetTopTask();
// if (pTemp != pTempRoot)
// {
// if (bNeedSetSpecialColor)
// {
// strText += CDlgTask::GetTaskNameWithOutColor(pTempRoot);
// }
// else
// {
// strText += CDlgTask::GetTaskNameWithColor(pTempRoot);
// }
// strText += _AL(" - ");
// }
// if (bNeedSetSpecialColor)
// {
// strText += CDlgTask::GetTaskNameWithOutColor(pTemp);
// }
// else
// {
// strText += CDlgTask::GetTaskNameWithColor(pTemp);
// }
// m_pLst_Main.AddString(strText);
// nIndex = m_pLst_Main.GetCount() - 1;
// m_pLst_Main.SetItemData(nIndex, it.service); // Service ID.
// m_pLst_Main.SetItemDataPtr(nIndex, (void*)pTalk); // Talk data.
// m_pLst_Main.SetItemData64(nIndex, pTemp.GetID(), 0, "TaskID");
// if (bNeedSetSpecialColor)
// {
// m_pLst_Main.SetItemTextColor(nIndex, color);
// }
// nNumTasks++;
// }
// }
// }
// if (idLastTask > 0)
// {
// pTemp = pTempMan.GetTaskTemplByID(idLastTask);
// if (a_strlen(pTemp.GetTribute()) > 0)
// m_pTxt_Content.SetText(pTemp.GetTribute());
// else
// {
// if (nNumTasks > 0)
// m_pTxt_Content.SetText(GetStringFromTable(502));
// else
// m_pTxt_Content.SetText(GetStringFromTable(501));
// }
// }
// else if (bTaskNPC)
// m_pTxt_Content.SetText(pCurNPCEssence.hello_msg);
// else
// {
// if (nNumTasks > 0)
// m_pTxt_Content.SetText(GetStringFromTable(502));
// else
// m_pTxt_Content.SetText(GetStringFromTable(501));
// }
// SetData(NPC_DIALOG_TASK_LIST);
}
void SetData(uint dwData, string strName)
{
m_strDataName = strName;
m_dwData = dwData;
}
uint GetData()
{
return m_dwData;
}
object GetDataPtr(string strName)
{
//if (0 != m_pvData && strName != m_strDataPtrName)
// AUI_ReportError(__LINE__, 1, "AUIDialog::GetDataPtr(), data name not match");
return m_pvData;
}
//void SelectListItem(int index)
//{
// m_pLst_Main.SetCurSel(index);
// int nCurSel = m_pLst_Main.GetCurSel();
// if (nCurSel < 0 || nCurSel >= m_pLst_Main.GetCount())
// return;
// int i, j, nIndex;
// string strText;
// DATA_TYPE DataType;
// CECTaskInterface pTask = GetHostPlayer().GetTaskInterface();
// if (GetData() == NPC_DIALOG.NPC_DIALOG_TALK ||
// GetData() == NPC_DIALOG.NPC_DIALOG_TASK_TALK)
// {
// uint id = m_pLst_Main.GetItemData(nCurSel, 0, "");
// talk_proc pTalk = (talk_proc)GetDataPtr("ptr_talk_proc");
// if (CECGameUIMan.TALKPROC_IS_TERMINAL(id)) // Ternimal.
// {
// for (i = 0; i < pTalk.num_window; i++)
// {
// if (id != pTalk.windows[i].id) continue;
// // TO DO: fix later
// // TO DO: show popup with content is talk_text and 1 btn OK
// //GetGameUIMan().MessageBox("", pTask.FormatTaskTalk(pTalk.windows[i].talk_text),
// // MB_OK, A3DCOLORRGBA(255, 255, 255, 160));
// GetGameUIMan().EndNPCService();
// Show(false);
// break;
// }
// }
// else if (CECGameUIMan.TALKPROC_IS_FUNCTION(id)) // Function.
// {
// if (GetGameUIMan().m_pCurNPCEssence != null)
// {
// NPC_ESSENCE pEssence = GetGameUIMan().m_pCurNPCEssence.Value;
// int nIndex1 = (int)CECGameUIMan.TALKPROC_GET_FUNCTION_ID(id);
// uint[] a_uiService =
// {
// pEssence.id_talk_service, // 交谈的服务ID
// pEssence.id_sell_service, // 出售商品的服务ID
// pEssence.id_buy_service, // 收购品的服务ID
// pEssence.id_repair_service, // 修理商品的服务ID
// pEssence.id_install_service, // 安装镶嵌品的服务ID
// pEssence.id_uninstall_service, // 拆除镶嵌品的服务ID
// pEssence.id_task_out_service, // 任务相关的服务ID: 发放任务服务
// pEssence.id_task_in_service, // 任务相关的服务ID: 验证完成任务服务
// pEssence.id_task_matter_service, // 任务相关的服务ID: 发放任务物品服务
// pEssence.id_skill_service, // 教授技能的服务ID
// pEssence.id_heal_service, // 治疗的服务ID
// pEssence.id_transmit_service, // 传送的服务ID
// pEssence.id_transport_service, // 运输的服务ID
// pEssence.id_proxy_service, // 代售的服务ID
// pEssence.id_storage_service, // 仓库的服务ID
// pEssence.id_make_service, // 生产的服务ID
// pEssence.id_decompose_service, // 分解的服务ID
// pEssence.id_identify_service, // 鉴定的服务ID
// 0, // Talk return.
// 0, // Talk exit.
// 0 // Storage password.
// };
// //TO DO: fix later
// // This show popup service NPC
// //PopupCorrespondingServiceDialog(id,
// // a_uiService[nIndex], m_pLst_Main.GetItemDataPtr(nCurSel));
// }
// else
// {
// //TO DO: fix later
// // This show popup service NPC
// //PopupCorrespondingServiceDialog(
// // id, 0, m_pLst_Main.GetItemDataPtr(nCurSel));
// }
// }
// else // Window.
// {
// for (i = 0; i < pTalk.num_window; i++)
// {
// if (id != pTalk.windows[i].id) continue;
// m_pTxt_Content.SetText(pTask.FormatTaskTalk(pTalk.windows[i].talk_text));
// m_pTxt_Content.SetData(pTalk.windows[i].id_parent);
// m_pLst_Main.ResetContent();
// for (j = 0; j < pTalk.windows[i].num_option; j++)
// {
// strText = GetStringFromTable(249);
// strText += pTalk.windows[i].options[j].text;
// m_pLst_Main.AddString(strText);
// nIndex = m_pLst_Main.GetCount() - 1;
// m_pLst_Main.SetItemData(nIndex, pTalk.windows[i].options[j].id);
// m_pLst_Main.SetItemDataPtr(nIndex, &pTalk.windows[i].options[j]);
// }
// break;
// }
// }
// }
// else if (GetData() == NPC_DIALOG_TASK_LIST)
// {
// if (nCurSel == m_pLst_Main.GetCount() - 1)
// {
// GetGameUIMan().EndNPCService();
// Show(false);
// }
// else
// {
// if (CDlgAutoHelp::IsAutoHelp())
// {
// UINT64 taskid = m_pLst_Main.GetItemData64(nCurSel, 0, "TaskID");
// CDlgWikiShortcut::PopQuestWiki(GetGameUIMan(), (int)taskid);
// }
// else
// {
// talk_proc* pTalk = (talk_proc*)m_pLst_Main.GetItemDataPtr(nCurSel);
// GetGameUIMan().PopupNPCDialog(pTalk);
// m_pTxt_Content.SetData(0xFFFFFFFF);
// SetData(NPC_DIALOG_TASK_TALK);
// }
// }
// }
// else if (GetData() == NPC_DIALOG_ESSENCE)
// {
// if (nCurSel == m_pLst_Main.GetCount() - 1)
// {
// GetGameUIMan().EndNPCService();
// Show(false);
// return;
// }
// int iService = (int)m_pLst_Main.GetItemData(nCurSel);
// NPC_ESSENCE* pEssence = GetGameUIMan().m_pCurNPCEssence;
// if (pEssence)
// {
// if (iService == CDLGNPC_FORGET && pEssence.combined_services & 0x01)
// {
// PAUIDIALOG pMsgBox;
// GetGameUIMan().MessageBox("Game_ForgetSkill", GetStringFromTable(559),
// MB_OKCANCEL, A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox);
// pMsgBox.SetDataPtr(m_pLst_Main.GetItemDataPtr(nCurSel));
// GetGameUIMan().EndNPCService();
// Show(false);
// return;
// }
// else if (iService == CDLGNPC_EQUIPSLOT && pEssence.combined_services & 0x02)
// {
// Show(false);
// GetGameUIMan().m_pDlgInventory.Show(true);
// GetGameUIMan().m_pDlgEquipSlot.Show(true);
// return;
// }
// else if (pEssence.combined_services & 0x10
// && (iService == CDLGNPC_FACTION_CREATE
// || iService == CDLGNPC_FACTION_UPGRADE
// || iService == CDLGNPC_FACTION_RENAME
// || iService == CDLGNPC_FACTION_DISMISS))
// {
// if (CECCrossServer::Instance().IsOnSpecialServer())
// {
// GetGameUIMan().ShowErrorMsg(10130);
// }
// else if (iService == CDLGNPC_FACTION_CREATE)
// {
// if (GetHostPlayer().GetBasicProps().iLevel < 20 ||
// GetHostPlayer().GetMoneyAmount() < 100000)
// {
// GetGameUIMan().MessageBox("", GetStringFromTable(607),
// MB_OK, A3DCOLORRGBA(255, 255, 255, 160));
// }
// else
// GetGameUIMan().m_pDlgGuildCreate.Show(true);
// }
// else if (iService == CDLGNPC_FACTION_UPGRADE)
// {
// int idFaction = GetHostPlayer().GetFactionID();
// CECFactionMan* pFMan = GetGame().GetFactionMan();
// Faction_Info* pInfo = pFMan.GetFaction(idFaction);
// if (pInfo)
// {
// if (pInfo.GetLevel() == 0)
// {
// GetGameUIMan().MessageBox(
// "Faction_Upgrade", GetStringFromTable(608),
// MB_OKCANCEL, A3DCOLORRGBA(255, 255, 255, 160));
// }
// else if (pInfo.GetLevel() == 1)
// {
// GetGameUIMan().MessageBox(
// "Faction_Upgrade", GetStringFromTable(690),
// MB_OKCANCEL, A3DCOLORRGBA(255, 255, 255, 160));
// }
// else if (pInfo.GetLevel() == 2)
// {
// GetGameUIMan().MessageBox("", GetStringFromTable(609),
// MB_OK, A3DCOLORRGBA(255, 255, 255, 160));
// }
// else
// {
// GetGameUIMan().MessageBox("", GetStringFromTable(610),
// MB_OK, A3DCOLORRGBA(255, 255, 255, 160));
// }
// }
// }
// else if (iService == CDLGNPC_FACTION_RENAME)
// {
// CDlgModifyName* pDlgModifyName = GetGameUIMan().m_pDlgModifyName;
// if (!pDlgModifyName.IsShow())
// {
// pDlgModifyName.SetPolicy(new CDlgFactionRenamePolicy());
// pDlgModifyName.Show(true);
// }
// }
// else if (iService == CDLGNPC_FACTION_DISMISS)
// {
// GetGameUIMan().MessageBox("Faction_Dismiss", GetStringFromTable(596),
// MB_OKCANCEL, A3DCOLORRGBA(255, 255, 255, 160));
// }
// GetGameUIMan().EndNPCService();
// Show(false);
// return;
// }
// else if (iService == CDLGNPC_FACE && pEssence.combined_services & 0x20)
// {
// if (GetHostPlayer().IsFlying() ||
// GetHostPlayer().IsSitting() ||
// GetHostPlayer().IsShapeChanged())
// {
// GetGameUIMan().MessageBox("", GetStringFromTable(603),
// MB_OK, A3DCOLORRGBA(255, 255, 255, 160));
// }
// else
// {
// GetGameUIMan().m_pDlgInventory.Show(true);
// GetGameUIMan().m_pDlgFaceLift.Show(true);
// GetGameUIMan().EndNPCService();
// Show(false);
// }
// return;
// }
// else if (iService == CDLGNPC_MAIL && pEssence.combined_services & 0x40)
// {
// Show(false);
// GetGameUIMan().m_pDlgMailList.Show(true);
// return;
// }
// else if (iService == CDLGNPC_AUCTION && pEssence.combined_services & 0x80)
// {
// Show(false);
// if (CECCrossServer::Instance().IsOnSpecialServer())
// {
// GetGameUIMan().ShowErrorMsg(10130);
// GetGameUIMan().EndNPCService();
// }
// else
// {
// GetGameSession().auction_AttendList();
// GetGameUIMan().m_pDlgAuctionBuyList.Show(true);
// GetGameUIMan().m_pDlgAuctionBuyList.m_nIDNext = 0;
// GetGameUIMan().m_pDlgAuctionBuyList.m_nPageNext = 0;
// ACString szText;
// szText.Format(GetStringFromTable(3501), GetStringFromTable(3509));
// GetGameUIMan().m_pDlgAuctionBuyList.m_pTxt_RefreshStatus.SetText(szText);
// GetGameUIMan().m_pDlgAuctionBuyList.m_pTxt_Search.
// SetText(GetStringFromTable(3509));
// }
// return;
// }
// else if (iService == CDLGNPC_DOUBLEEXP && pEssence.combined_services & 0x100)
// {
// Show(false);
// GetGameUIMan().m_pDlgDoubleExp.Show(true);
// return;
// }
// else if (iService == CDLGNPC_PETHATCH && pEssence.combined_services & 0x200)
// {
// Show(false);
// GetGameUIMan().m_pDlgInventory.Show(true);
// GetGameUIMan().m_pDlgPetHatch.Show(true);
// return;
// }
// else if (iService == CDLGNPC_PETREC && pEssence.combined_services & 0x400)
// {
// Show(false);
// GetGameUIMan().m_pDlgPetList.Show(true);
// GetGameUIMan().m_pDlgPetRec.Show(true);
// return;
// }
// else if (iService == CDLGNPC_BATTLECHALLENGE && pEssence.combined_services & 0x800)
// {
// Show(false);
// GetGameUIMan().m_pDlgGuildMap.SetType(CDlgGuildMap::FACTIONMAP_TYPE_CHALLENGE);
// GetGameUIMan().m_pDlgGuildMap.Show(true);
// GetGameUIMan().m_pDlgGMapStatus2.Show(true);
// GetGameUIMan().m_pDlgGMapStatus2.SetCanMove(false);
// return;
// }
// else if (iService == CDLGNPC_BATTLEENTER && pEssence.combined_services & 0x800)
// {
// Show(false);
// GetGameUIMan().m_pDlgGuildMap.SetType(CDlgGuildMap::FACTIONMAP_TYPE_ENTER);
// GetGameUIMan().m_pDlgGuildMap.Show(true);
// GetGameUIMan().m_pDlgGMapStatus1.Show(true);
// GetGameUIMan().m_pDlgGMapStatus1.SetCanMove(false);
// return;
// }
// else if (iService == CDLGNPC_BATTLELEAVE && pEssence.combined_services & 0x1000)
// {
// Show(false);
// GetGameUIMan().MessageBox("Game_BattleLeave", GetStringFromTable(725),
// MB_OKCANCEL, A3DCOLORRGBA(255, 255, 255, 160));
// return;
// }
// else if (iService == CDLGNPC_GOLDTRADE && pEssence.combined_services & 0x2000)
// {
// Show(false);
// GetGameUIMan().m_pDlgGoldTrade.Show(true);
// return;
// }
// else if (iService == CDLGNPC_EQUIPREFINE && pEssence.combined_services & 0x4000)
// {
// Show(false);
// GetGameUIMan().m_pDlgEquipRefine.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_EQUIPDYE && pEssence.combined_services & 0x8000)
// {
// Show(false);
// GetGameUIMan().m_pDlgEquipDye.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// GetGameUIMan().m_pDlgFittingRoom.Show(true);
// return;
// }
// else if (iService == CDLGNPC_PETDYE && pEssence.combined_services & 0x8000)
// {
// Show(false);
// GetGameUIMan().m_pDlgPetDye.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// GetGameUIMan().m_pDlgPetList.Show(true);
// return;
// }
// else if (iService == CDLGNPC_REFINETRANS && pEssence.combined_services & 0x10000)
// {
// Show(false);
// GetGameUIMan().m_pDlgRefineTrans.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_ELFPRORESET && pEssence.combined_services & 0x20000)
// {
// Show(false);
// GetGameUIMan().m_pDlgELFXiDian.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_ELFGENIUSRESET && pEssence.combined_services & 0x40000)
// {
// //新的对话框
// Show(false);
// GetGameUIMan().m_pDlgELFGeniusReset.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_ELFFORGET && pEssence.combined_services & 0x80000)
// {
// Show(false);
// GetGameUIMan().m_pDlgELFRetrain.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_ELFREFINE && pEssence.combined_services & 0x100000)
// {
// Show(false);
// GetGameUIMan().m_pDlgELFRefine.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_ELFREFINETRANS && pEssence.combined_services & 0x100000)
// {
// Show(false);
// GetGameUIMan().m_pDlgELFRefineTrans.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_ELFTOPILL && pEssence.combined_services & 0x200000)
// {
// Show(false);
// GetGameUIMan().m_pDlgELFToPill.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_ELFEQUIPOFF && pEssence.combined_services & 0x400000)
// {
// Show(false);
// GetGameUIMan().m_pDlgELFEquipRemove.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_EQUIPREPAIR && pEssence.combined_services & 0x800000)
// {
// Show(false);
// GetGameUIMan().m_pDlgDamageRep.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_WEBTRADE && pEssence.combined_services & 0x1000000)
// {
// Show(false);
// if (GetGameUIMan().m_pDlgAutoLock.IsLocked())
// {
// GetGameUIMan().AddChatMessage(GetStringFromTable(5520), GP_CHAT_MISC);
// GetGameUIMan().EndNPCService();
// }
// else if (CECCrossServer::Instance().IsOnSpecialServer())
// {
// GetGameUIMan().ShowErrorMsg(10130);
// GetGameUIMan().EndNPCService();
// }
// else
// {
// GetGameUIMan().m_pDlgWebViewProduct.Show(true);
// }
// return;
// }
// else if (iService == CDLGNPC_GODEVILCONVERT && pEssence.combined_services & 0x2000000)
// {
// Show(false);
// GetGameUIMan().m_pDlgGodEvilConvert.Show(true);
// return;
// }
// else if (iService == CDLGNPC_WEDDING_BOOK && pEssence.combined_services & 0x4000000)
// {
// Show(false);
// GetGameUIMan().m_pDlgWedding.Show(true);
// return;
// }
// else if (iService == CDLGNPC_WEDDING_INVITE && pEssence.combined_services & 0x4000000)
// {
// Show(false);
// GetGameUIMan().m_pDlgWeddingInvite.Show(true);
// return;
// }
// else if (iService == CGLDNPC_FORTRESS_CREATE && pEssence.combined_services & 0x8000000)
// {
// // 创建基地
// CECHostPlayer* pHost = GetHostPlayer();
// int idFaction = pHost.GetFactionID();
// CECFactionMan* pFMan = GetGame().GetFactionMan();
// Faction_Info* pInfo = pFMan.GetFaction(idFaction);
// const FACTION_FORTRESS_CONFIG* pConfig = pHost.GetFactionFortressConfig();
// if (pInfo && pConfig)
// {
// ACString strMsg = GetStringFromTable(9114);
// ACString strTemp;
// ACString strColorRed = _AL("^FF0000");
// ACString strColorWhite = _AL("^FFFFFF");
// ACString strNextLine = _AL("\r");
// bool bOK(true);
// // 帮派等级
// if (pInfo.GetLevel() < pConfig.require_level)
// bOK = false;
// strTemp.Format(GetStringFromTable(9112)
// , (pInfo.GetLevel() < pConfig.require_level) ? strColorRed : strColorWhite
// , pConfig.require_level + 1);
// strMsg += strNextLine;
// strMsg += strTemp;
// // 道具需求
// CECInventory* pPack = pHost.GetPack();
// int nItems = sizeof(pConfig.require_item) / sizeof(pConfig.require_item[0]);
// for (int i = 0; i < nItems; ++i)
// {
// if (pConfig.require_item[i].id && pConfig.require_item[i].count > 0)
// {
// int count = pPack.GetItemTotalNum(pConfig.require_item[i].id);
// if (count < pConfig.require_item[i].count)
// bOK = false;
// CECIvtrItem* pItem = CECIvtrItem::CreateItem(pConfig.require_item[i].id, 0, 1);
// strTemp.Format(GetStringFromTable(9113)
// , (count < pConfig.require_item[i].count) ? strColorRed : strColorWhite
// , pItem.GetName()
// , pConfig.require_item[i].count);
// delete pItem;
// strMsg += strNextLine;
// strMsg += strTemp;
// }
// }
// strMsg += strNextLine;
// strMsg += GetStringFromTable(bOK ? 9110 : 9111);
// if (!bOK)
// {
// // 条件不满足,显示具体信息
// GetGameUIMan().MessageBox("", strMsg, MB_OK, A3DCOLORRGB(255, 255, 255));
// GetGameUIMan().EndNPCService();
// }
// else
// {
// // 条件满足,弹出对话框确认
// GetGameUIMan().MessageBox("Fortress_Create", strMsg, MB_YESNO, A3DCOLORRGBA(255, 255, 255, 160));
// }
// }
// else
// {
// GetGameUIMan().EndNPCService();
// }
// Show(false);
// return;
// }
// else if (iService == CGLDNPC_FORTRESS_WAR && pEssence.combined_services & 0x8000000)
// {
// // 基地战
// PAUIDIALOG pDlg1 = GetGameUIMan().GetDialog("Win_FortressWar");
// if (pDlg1)
// {
// pDlg1.Show(true);
// }
// else
// {
// GetGameUIMan().EndNPCService();
// }
// Show(false);
// return;
// }
// else if (iService == CGLDNPC_FORTRESS_ENTER && pEssence.combined_services & 0x8000000)
// {
// // 进入基地
// GetGameSession().factionFortress_Enter(GetHostPlayer().GetFactionID());
// GetGameUIMan().EndNPCService();
// Show(false);
// return;
// }
// else if (iService == CGLDNPC_FORTRESS_WARLIST && pEssence.combined_services & 0x8000000)
// {
// // 基地对战表
// PAUIDIALOG pDlg1 = GetGameUIMan().GetDialog("Win_FortressWarList");
// if (pDlg1)
// {
// pDlg1.Show(true);
// }
// else
// {
// GetGameUIMan().EndNPCService();
// }
// Show(false);
// return;
// }
// else if (iService == CGLDNPC_FORTRESS_UPGRADE && pEssence.combined_services & 0x10000000)
// {
// // 基地升级
// PAUIDIALOG pDlg1 = GetGameUIMan().GetDialog("Win_FortressInfo");
// PAUIDIALOG pDlg2 = GetGameUIMan().GetDialog("Win_FortressBuild");
// if (pDlg1 && pDlg2)
// {
// pDlg1.Show(true);
// pDlg2.Show(true);
// }
// else
// {
// GetGameUIMan().EndNPCService();
// }
// Show(false);
// return;
// }
// else if (iService == CGLDNPC_FORTRESS_HANDIN_MATERIAL && pEssence.combined_services & 0x10000000)
// {
// // 缴纳材料
// PAUIDIALOG pDlg1 = GetGameUIMan().GetDialog("Win_FortressInfo");
// PAUIDIALOG pDlg2 = GetGameUIMan().GetDialog("Win_FortressMaterial");
// if (pDlg1 && pDlg2)
// {
// pDlg1.Show(true);
// pDlg2.Show(true);
// }
// else
// {
// GetGameUIMan().EndNPCService();
// }
// Show(false);
// return;
// }
// else if (iService == CGLDNPC_FORTRESS_HANDIN_CONTRIB && pEssence.combined_services & 0x10000000)
// {
// // 缴纳贡献度
// PAUIDIALOG pDlg1 = GetGameUIMan().GetDialog("Win_FortressInfo");
// PAUIDIALOG pDlg2 = GetGameUIMan().GetDialog("Win_FortressContrib");
// if (pDlg1 && pDlg2)
// {
// pDlg1.Show(true);
// pDlg2.Show(true);
// }
// else
// {
// GetGameUIMan().EndNPCService();
// }
// Show(false);
// return;
// }
// else if (iService == CGLDNPC_FORTRESS_LEAVE && pEssence.combined_services & 0x10000000)
// {
// // 离开基地
// GetGameSession().c2s_CmdNPCSevFactionFortressLeave();
// GetGameUIMan().EndNPCService();
// Show(false);
// return;
// }
// else if (iService == CGLDNPC_FORTRESS_EXCHANGE_MATERIAL && pEssence.combined_services & 0x20000000)
// {
// // 兑换材料
// PAUIDIALOG pDlg1 = GetGameUIMan().GetDialog("Win_FortressInfo");
// PAUIDIALOG pDlg2 = GetGameUIMan().GetDialog("Win_FortressExchange");
// if (pDlg1 && pDlg2)
// {
// pDlg1.Show(true);
// pDlg2.Show(true);
// }
// else
// {
// GetGameUIMan().EndNPCService();
// }
// Show(false);
// return;
// }
// else if (iService == CDLGNPC_VIEW_TRASHBOX && pEssence.combined_services & 0x40000000)
// {
// GetGameSession().c2s_CmdNPCSevViewTrash();
// Show(false);
// return;
// }
// else if (iService == CDLGNPC_VIEW_DPS_DPH_RANK && pEssence.combined_services & 0x80000000)
// {
// GetGameUIMan().m_pDlgEarthBagRank.Show(true);
// Show(false);
// return;
// }
// else if ((iService == CDLGNPC_FORCE_QUIT || iService == CDLGNPC_FORCE_JOIN) && pEssence.id_force_service > 0)
// {
// void* pData = m_pLst_Main.GetItemDataPtr(nCurSel);
// NPC_FORCE_SERVICE* pService = (NPC_FORCE_SERVICE*)pData;
// int npcForce = pService.force_id;
// PAUIDIALOG pDlg = NULL;
// if (iService == CDLGNPC_FORCE_QUIT) pDlg = GetGameUIMan().GetDialog("Win_ForceQuit");
// else if (iService == CDLGNPC_FORCE_JOIN) pDlg = GetGameUIMan().GetDialog("Win_ForceJoin");
// if (CECCrossServer::Instance().IsOnSpecialServer())
// {
// GetGameUIMan().ShowErrorMsg(10130);
// GetGameUIMan().EndNPCService();
// }
// else if (pDlg)
// {
// pDlg.SetData(npcForce);
// pDlg.Show(true);
// }
// Show(false);
// return;
// }
// else if ((iService == CDLGNPC_JOIN_COUNTRY || iService == CDLGNPC_QUIT_COUNTRY) && pEssence.combined_services2 & 0x00000001)
// {
// if (iService == CDLGNPC_JOIN_COUNTRY)
// {
// CECHostPlayer* pHost = GetHostPlayer();
// ACString strMsg = GetStringFromTable(9765);
// ACString strTemp;
// ACString strColorRed = _AL("^FF0000");
// ACString strColorWhite = _AL("^FFFFFF");
// ACString strNextLine = _AL("\r");
// bool bOK(true);
// // 玩家等级
// const int REQUIRE_LEVEL = CECUIConfig::Instance().GetGameUI().nCountryWarEnterLevel;
// int iLevel = GetHostPlayer().GetMaxLevelSofar();
// if (iLevel < REQUIRE_LEVEL) bOK = false;
// strTemp.Format(GetStringFromTable(9766)
// , (iLevel < REQUIRE_LEVEL) ? strColorRed : strColorWhite
// , REQUIRE_LEVEL);
// strMsg += strNextLine;
// strMsg += strTemp;
// // 道具需求
// const int REQUIRE_ITEM = CECUIConfig::Instance().GetGameUI().nCountryWarEnterItem;
// const int REQUIRE_COUNT = CECUIConfig::Instance().GetGameUI().nCountryWarEnterItemCount;
// CECInventory* pPack = pHost.GetPack();
// int count = pPack.GetItemTotalNum(REQUIRE_ITEM);
// if (count < REQUIRE_COUNT) bOK = false;
// CECIvtrItem* pItem = CECIvtrItem::CreateItem(REQUIRE_ITEM, 0, 1);
// strTemp.Format(GetStringFromTable(9767)
// , (count < REQUIRE_COUNT) ? strColorRed : strColorWhite
// , pItem.GetName()
// , REQUIRE_COUNT);
// delete pItem;
// strMsg += strNextLine;
// strMsg += strTemp;
// // 组队要求是队长
// CECTeam* pTeam = pHost.GetTeam();
// if (pTeam != NULL)
// {
// bool bLeader = (pTeam.GetLeaderID() == pHost.GetCharacterID());
// if (!bLeader) bOK = false;
// strTemp.Format(GetStringFromTable(9771)
// , (!bLeader) ? strColorRed : strColorWhite
// , GetStringFromTable(bLeader ? 9772 : 9773));
// strMsg += strNextLine;
// strMsg += strTemp;
// }
// // 冷却检查
// bool bCoolDown = pHost.GetCoolTime(GP_CT_COUNTRY_BATTLE_APPLY) > 0;
// if (bCoolDown) bOK = false;
// strTemp.Format(GetStringFromTable(9774)
// , bCoolDown ? strColorRed : strColorWhite
// , GetStringFromTable(bCoolDown ? 9772 : 9773));
// strMsg += strNextLine;
// strMsg += strTemp;
// strMsg += strNextLine;
// strMsg += GetStringFromTable(bOK ? 9768 : 9769);
// if (!bOK)
// {
// // 条件不满足,显示具体信息
// GetGameUIMan().MessageBox("", strMsg, MB_OK, A3DCOLORRGB(255, 255, 255));
// GetGameUIMan().EndNPCService();
// }
// else
// {
// // 条件满足,弹出对话框确认
// PAUIDIALOG pDlgMsgBox = NULL;
// GetGameUIMan().MessageBox("Country_JoinLeave", strMsg, MB_YESNO, A3DCOLORRGBA(255, 255, 255, 160), &pDlgMsgBox);
// pDlgMsgBox.SetData(1);
// }
// }
// else
// {
// // 离开确定
// PAUIDIALOG pDlgMsgBox = NULL;
// ACString strMsg = GetStringFromTable(9770);
// GetGameUIMan().MessageBox("Country_JoinLeave", strMsg, MB_YESNO, A3DCOLORRGBA(255, 255, 255, 160), &pDlgMsgBox);
// pDlgMsgBox.SetData(2);
// }
// Show(false);
// return;
// }
// else if (iService == CDLGNPC_LEAVE_COUNTRY_WAR && pEssence.combined_services2 & 0x00000002)
// {
// // 离开确定
// ACString strMsg = GetStringFromTable(9915);
// GetGameUIMan().MessageBox("Country_LeaveWar", strMsg, MB_YESNO, A3DCOLORRGBA(255, 255, 255, 160));
// Show(false);
// return;
// }
// else if (iService == CDLGNPC_EQUIP_MARK && pEssence.combined_services2 & 0x00000004)
// {
// Show(false);
// GetGameUIMan().m_pDlgEquipMark.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_GOTO_SPECIALSERVER && pEssence.combined_services2 & 0x00000008)
// {
// if (!CECCrossServer::Instance().IsOnSpecialServer())
// {
// CECHostPlayer* pHost = GetHostPlayer();
// ACString strMsg = GetStringFromTable(10134);
// ACString strTemp;
// ACString strColorRed = _AL("^FF0000");
// ACString strColorWhite = _AL("^FFFFFF");
// ACString strNextLine = _AL("\r");
// bool bOK(true);
// // 玩家等级
// const int REQUIRE_LEVEL = CECUIConfig::Instance().GetGameUI().nCrossServerEnterLevel;
// int iLevel = GetHostPlayer().GetMaxLevelSofar();
// if (iLevel < REQUIRE_LEVEL) bOK = false;
// strTemp.Format(GetStringFromTable(9766)
// , (iLevel < REQUIRE_LEVEL) ? strColorRed : strColorWhite
// , REQUIRE_LEVEL);
// strMsg += strNextLine;
// strMsg += strTemp;
// // 修真要求
// const int REQUIRE_LEVEL2 = CECUIConfig::Instance().GetGameUI().nCrossServerEnterLevel2;
// int iLevel2 = GetHostPlayer().GetBasicProps().iLevel2;
// if (iLevel2 < REQUIRE_LEVEL2) bOK = false;
// strTemp.Format(GetStringFromTable(10135)
// , (iLevel2 < REQUIRE_LEVEL2) ? strColorRed : strColorWhite
// , GetGameRun().GetLevel2NameForCondition(REQUIRE_LEVEL2));
// strMsg += strNextLine;
// strMsg += strTemp;
// // 冷却检查
// bool bCoolDown = pHost.GetCoolTime(GP_CT_CROSS_SERVER_APPLY) > 0;
// if (bCoolDown) bOK = false;
// strTemp.Format(GetStringFromTable(9774)
// , bCoolDown ? strColorRed : strColorWhite
// , GetStringFromTable(bCoolDown ? 9772 : 9773));
// strMsg += strNextLine;
// strMsg += strTemp;
// strMsg += strNextLine;
// strMsg += GetStringFromTable(bOK ? 10136 : 10137);
// if (!bOK)
// {
// // 条件不满足,显示具体信息
// GetGameUIMan().MessageBox("", strMsg, MB_OK, A3DCOLORRGB(255, 255, 255));
// GetGameUIMan().EndNPCService();
// }
// else
// {
// // 条件满足,弹出对话框确认
// GetGameUIMan().MessageBox("CrossServer_GetIn", strMsg, MB_YESNO, A3DCOLORRGBA(255, 255, 255, 160));
// }
// }
// Show(false);
// return;
// }
// else if (iService == CDLGNPC_GOTO_ORIGINALSERVER && pEssence.combined_services2 & 0x00000010)
// {
// if (CECCrossServer::Instance().IsOnSpecialServer())
// {
// ACString strMsg = GetStringFromTable(10138);
// GetGameUIMan().MessageBox("CrossServer_GetOut", strMsg, MB_YESNO, A3DCOLORRGBA(255, 255, 255, 160));
// }
// Show(false);
// return;
// }
// else if (iService == CDLGNPC_PLAYER_RENAME && pEssence.combined_services2 & 0x00000020)
// {// 改名服务
// if (CECCrossServer::Instance().IsOnSpecialServer())
// {
// GetGameUIMan().ShowErrorMsg(10130);
// GetGameUIMan().EndNPCService();
// }
// else if (!CECUIConfig::Instance().GetGameUI().bEnablePlayerRename)
// {
// // 未开启改名服务则不显示该对话框
// GetGameUIMan().ShowErrorMsg(10152);
// GetGameUIMan().EndNPCService();
// }
// else
// {
// CDlgModifyName* pDlgModifyName = GetGameUIMan().m_pDlgModifyName;
// if (!pDlgModifyName.IsShow())
// {
// pDlgModifyName.SetPolicy(new CDlgPlayerRenamePolicy());
// pDlgModifyName.Show(true);
// }
// }
// Show(false);
// return;
// }
// else if (iService == CDLGNPC_STONE_CHANGE && (pEssence.combined_services2 & 0x00000040))
// {
// Show(false);
// GetGameUIMan().m_pDlgStoneChange.SetType(CDlgStoneChange::EM_ALL);
// GetGameUIMan().m_pDlgStoneChange.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_KING_SERVICE && (pEssence.combined_services2 & 0x00000080))
// {
// Show(false);
// GetGameSession().king_GetCandidateStatus();
// GetHostPlayer().SetInKingService(true);
// return;
// }
// else if (iService == CDLGNPC_OFFLINESHOP_SETTING && (pEssence.combined_services2 & 0x00000100))
// {
// Show(false);
// if (g_pGame.GetConfigs().IsMiniClient() || glb_IsInMapForMiniClient())
// {
// GetGameUIMan().MessageBox("", GetStringFromTable(10713), MB_OK, A3DCOLORRGBA(255, 255, 255, 160));
// return;
// }
// // Get shop info
// GetGameSession().OffShop_GetMyShopInfo();
// GetHostPlayer().GetOfflineShopCtrl().SetNPCSevFlag(COfflineShopCtrl::NPCSEV_SETTING);
// return;
// }
// else if (iService == CDLGNPC_OFFLINESHOP_SELLBUY && (pEssence.combined_services2 & 0x00000100))
// {
// Show(false);
// GetGameUIMan().EndNPCService();
// if (g_pGame.GetConfigs().IsMiniClient() || glb_IsInMapForMiniClient())
// {
// GetGameUIMan().MessageBox("", GetStringFromTable(10713), MB_OK, A3DCOLORRGBA(255, 255, 255, 160));
// return;
// }
// if (GetGameUIMan().m_pDlgAutoLock.IsLocked())
// {
// GetGameUIMan().AddChatMessage(GetStringFromTable(10524), GP_CHAT_MISC);
// }
// else
// {
// // Get shop info
// GetGameSession().OffShop_QueryShops(COfflineShopCtrl::OSTM_ALL);
// GetHostPlayer().GetOfflineShopCtrl().SetNPCSevFlag(COfflineShopCtrl::NPCSEV_SELLBUY);
// }
// return;
// }
// else if (iService == CDLGNPC_SPLIT_FASHION && (pEssence.combined_services2 & 0x00000200))
// {
// Show(false);
// GetGameUIMan().m_pDlgFashionSplit.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_REINCARNATION && (pEssence.combined_services2 & 0x00000400))
// {
// Show(false);
// GetGameUIMan().m_pDlgReincarnation.Show(true);
// return;
// }
// else if (iService == CDLGNPC_GIFTCARD && (pEssence.combined_services2 & 0x00000800))
// {
// Show(false);
// GetGameUIMan().m_pDlgGiftCard.Show(true);
// return;
// }
// else if (iService == CDLGNPC_TRICKBATTLE && (pEssence.combined_services2 & 0x00001000))
// {
// Show(false);
// GetGameUIMan().m_pDlgChariotWarApply.Show(true);
// return;
// }
// else if (iService == CDLGNPC_CARDRESPAWN && (pEssence.combined_services2 & 0x00002000))
// {
// Show(false);
// GetGameUIMan().m_pDlgGenCardRespawn.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_QUERYCHARIOTAMOUNT && (pEssence.combined_services2 & 0x00001000))
// {
// Show(false);
// GetGameSession().tankBattle_GetRank();
// GetGameUIMan().m_pDlgChariotRankList.SetNPCSevFlag(true);
// if (!GetGameUIMan().m_pDlgChariotRankList.IsShow())
// GetGameUIMan().m_pDlgChariotRankList.Show(true);
// return;
// }
// else if (iService == CDLGNPC_FLYSWORDIMPROVE && (pEssence.combined_services2 & 0x00004000))
// {
// Show(false);
// GetGameUIMan().m_pDlgFlySwordImprove.Show(true);
// GetGameUIMan().m_pDlgInventory.Show(true);
// return;
// }
// else if (iService == CDLGNPC_OPEN_FACTION_PVP && (pEssence.combined_services2 & 0x00008000))
// {
// Show(false);
// ACString strMsg = GetStringFromTable(11271);
// GetGameUIMan().MessageBox("Faction_PVP_Open", strMsg, MB_YESNO, A3DCOLORRGBA(255, 255, 255, 160));
// return;
// }
// else if (iService == CDLGNPC_GOLD_SHOP && ((pEssence.combined_services2 & 0x00010000) || (pEssence.combined_services2 & 0x00020000)))
// {
// Show(false);
// bool bEnableQShop = (pEssence.combined_services2 & 0x00010000);
// bool bEnableBackShop = (pEssence.combined_services2 & 0x00020000);
// if (bEnableQShop)
// {
// CECUIHelper::ShowQShop(pEssence.id, bEnableBackShop);
// }
// else if (bEnableBackShop)
// {
// CECUIHelper::ShowBackShop(pEssence.id, bEnableQShop);
// }
// return;
// }
// else if (iService == CDLGNPC_PLAYER_CHANGE_GENDER && pEssence.combined_services2 & 0x00040000)
// {
// if (GetGameUIMan().m_pDlgAutoLock.IsLocked())
// {
// GetGameUIMan().AddChatMessage(GetGameUIMan().GetStringFromTable(10524), GP_CHAT_MISC);
// GetGameUIMan().EndNPCService();
// }
// else if (CECCrossServer::Instance().IsOnSpecialServer())
// {
// GetGameUIMan().ShowErrorMsg(10130);
// GetGameUIMan().EndNPCService();
// }
// else if (!CECUIConfig::Instance().GetGameUI().bEnablePlayerChangeGender)
// {
// GetGameUIMan().ShowErrorMsg(10152);
// GetGameUIMan().EndNPCService();
// }
// else
// {
// CDlgSimpleCostItemService* pDlgSimpleCostItemService = GetGameUIMan().m_pDlgSimpleCostItemService;
// if (!pDlgSimpleCostItemService.IsShow())
// {
// GetHostPlayer().StopAutoFashion();
// pDlgSimpleCostItemService.SetPolicy(new CDlgChangeGenderPolicy());
// pDlgSimpleCostItemService.Show(true);
// }
// }
// Show(false);
// return;
// }
// }
// int idFunction, id_dialog = 0;
// void* pData = m_pLst_Main.GetItemDataPtr(nCurSel);
// g_pGame.GetElementDataMan().get_data_ptr(iService, ID_SPACE_ESSENCE, DataType);
// if (DataType == DT_NPC_TASK_IN_SERVICE ||
// DataType == DT_NPC_TASK_OUT_SERVICE ||
// DataType == DT_NPC_TASK_MATTER_SERVICE)
// {
// // pop-up storage task dialog
// if (DataType == DT_NPC_TASK_OUT_SERVICE)
// {
// NPC_TASK_OUT_SERVICE* pService = (NPC_TASK_OUT_SERVICE*)pData;
// if (!(pService.storage_id == 0 || pService.storage_open_item == 0))
// {
// PopupStorageTaskDialog(pService, false);
// return;
// }
// }
// PopupTaskDialog(false);
// m_pLst_Main.AddString(GetStringFromTable(503));
// return;
// }
// else if (DataType == DT_NPC_TALK_SERVICE)
// {
// NPC_TALK_SERVICE* pService = (NPC_TALK_SERVICE*)pData;
// id_dialog = pService.id_dialog;
// idFunction = NPC_TALK;
// }
// else if (DataType == DT_NPC_SELL_SERVICE)
// {
// NPC_SELL_SERVICE* pService = (NPC_SELL_SERVICE*)pData;
// id_dialog = pService.id_dialog;
// idFunction = NPC_SELL;
// }
// else if (DataType == DT_NPC_BUY_SERVICE)
// {
// NPC_BUY_SERVICE* pService = (NPC_BUY_SERVICE*)pData;
// id_dialog = pService.id_dialog;
// idFunction = NPC_BUY;
// }
// else if (DataType == DT_NPC_REPAIR_SERVICE)
// {
// NPC_REPAIR_SERVICE* pService = (NPC_REPAIR_SERVICE*)pData;
// id_dialog = pService.id_dialog;
// idFunction = NPC_REPAIR;
// }
// else if (DataType == DT_NPC_INSTALL_SERVICE)
// {
// NPC_INSTALL_SERVICE* pService = (NPC_INSTALL_SERVICE*)pData;
// id_dialog = pService.id_dialog;
// idFunction = NPC_INSTALL;
// }
// else if (DataType == DT_NPC_UNINSTALL_SERVICE)
// {
// NPC_UNINSTALL_SERVICE* pService = (NPC_UNINSTALL_SERVICE*)pData;
// id_dialog = pService.id_dialog;
// idFunction = NPC_UNINSTALL;
// }
// else if (DataType == DT_NPC_SKILL_SERVICE)
// {
// NPC_SKILL_SERVICE* pService = (NPC_SKILL_SERVICE*)pData;
// id_dialog = pService.id_dialog;
// idFunction = NPC_SKILL;
// }
// else if (DataType == DT_NPC_HEAL_SERVICE)
// {
// NPC_HEAL_SERVICE* pService = (NPC_HEAL_SERVICE*)pData;
// id_dialog = pService.id_dialog;
// idFunction = NPC_HEAL;
// }
// else if (DataType == DT_NPC_TRANSMIT_SERVICE)
// {
// NPC_TRANSMIT_SERVICE* pService = (NPC_TRANSMIT_SERVICE*)pData;
// idFunction = NPC_TRANSMIT;
// }
// else if (DataType == DT_NPC_TRANSPORT_SERVICE)
// {
// NPC_TRANSPORT_SERVICE* pService = (NPC_TRANSPORT_SERVICE*)pData;
// id_dialog = pService.id_dialog;
// idFunction = NPC_TRANSPORT;
// }
// else if (DataType == DT_NPC_PROXY_SERVICE)
// {
// NPC_PROXY_SERVICE* pService = (NPC_PROXY_SERVICE*)pData;
// id_dialog = pService.id_dialog;
// idFunction = NPC_PROXY;
// }
// else if (DataType == DT_NPC_STORAGE_SERVICE)
// {
// NPC_STORAGE_SERVICE* pService = (NPC_STORAGE_SERVICE*)pData;
// ACString strText = m_pLst_Main.GetText(nCurSel);
// ACString strComp1 = ACString(GetStringFromTable(249)) + ACString(GetStringFromTable(253));
// ACString strComp2 = ACString(GetStringFromTable(249)) + ACString(GetStringFromTable(8080));
// if (0 == a_stricmp(strText, strComp1))
// idFunction = NPC_STORAGE_PASSWORD;
// else if (0 == a_stricmp(strText, strComp2))
// idFunction = NPC_ACCOUNT_STORAGE;
// else
// idFunction = NPC_STORAGE;
// }
// else if (DataType == DT_NPC_MAKE_SERVICE)
// {
// NPC_MAKE_SERVICE* pService = (NPC_MAKE_SERVICE*)pData;
// idFunction = NPC_MAKE;
// }
// else if (DataType == DT_NPC_DECOMPOSE_SERVICE)
// {
// NPC_DECOMPOSE_SERVICE* pService = (NPC_DECOMPOSE_SERVICE*)pData;
// idFunction = NPC_DECOMPOSE;
// }
// else if (DataType == DT_NPC_IDENTIFY_SERVICE)
// {
// NPC_IDENTIFY_SERVICE* pService = (NPC_IDENTIFY_SERVICE*)pData;
// idFunction = NPC_IDENTIFY;
// }
// else if (DataType == DT_NPC_WAR_TOWERBUILD_SERVICE)
// {
// NPC_WAR_TOWERBUILD_SERVICE* pService = (NPC_WAR_TOWERBUILD_SERVICE*)pData;
// idFunction = NPC_WAR_TOWERBUILD;
// }
// else if (DataType == DT_NPC_RESETPROP_SERVICE)
// {
// NPC_RESETPROP_SERVICE* pService = (NPC_RESETPROP_SERVICE*)pData;
// idFunction = NPC_RESETPROP;
// }
// else if (DataType == DT_NPC_PETNAME_SERVICE)
// {
// NPC_PETNAME_SERVICE* pService = (NPC_PETNAME_SERVICE*)pData;
// idFunction = NPC_PETNAME;
// }
// else if (DataType == DT_NPC_PETLEARNSKILL_SERVICE)
// {
// NPC_PETLEARNSKILL_SERVICE* pService = (NPC_PETLEARNSKILL_SERVICE*)pData;
// idFunction = NPC_PETLEARNSKILL;
// }
// else if (DataType == DT_NPC_PETFORGETSKILL_SERVICE)
// {
// NPC_PETFORGETSKILL_SERVICE* pService = (NPC_PETFORGETSKILL_SERVICE*)pData;
// idFunction = NPC_PETFORGETSKILL;
// }
// else if (DataType == DT_NPC_EQUIPBIND_SERVICE)
// {
// NPC_EQUIPBIND_SERVICE* pService = (NPC_EQUIPBIND_SERVICE*)pData;
// idFunction = NPC_EQUIPBIND;
// }
// else if (DataType == DT_NPC_EQUIPDESTROY_SERVICE)
// {
// NPC_EQUIPDESTROY_SERVICE* pService = (NPC_EQUIPDESTROY_SERVICE*)pData;
// idFunction = NPC_EQUIPDESTROY;
// }
// else if (DataType == DT_NPC_EQUIPUNDESTROY_SERVICE)
// {
// NPC_EQUIPUNDESTROY_SERVICE* pService = (NPC_EQUIPUNDESTROY_SERVICE*)pData;
// idFunction = NPC_EQUIPUNDESTROY;
// }
// else if (DataType == DT_NPC_ENGRAVE_SERVICE)
// {
// NPC_ENGRAVE_SERVICE* pService = (NPC_ENGRAVE_SERVICE*)pData;
// idFunction = NPC_ENGRAVE;
// }
// else if (DataType == DT_NPC_RANDPROP_SERVICE)
// {
// NPC_RANDPROP_SERVICE* pService = (NPC_RANDPROP_SERVICE*)pData;
// idFunction = NPC_RANDPROP;
// }
// if (id_dialog > 0)
// {
// talk_proc* pTalk = (talk_proc*)g_pGame.GetElementDataMan()
// .get_data_ptr(id_dialog, ID_SPACE_TALK, DataType);
// if (pTalk)
// {
// GetGameUIMan().PopupNPCDialog(pTalk);
// m_pTxt_Content.SetData(0xFFFFFFFF);
// SetData(NPC_DIALOG_TALK);
// }
// }
// else
// {
// void* pData = m_pLst_Main.GetItemDataPtr(nCurSel);
// PopupCorrespondingServiceDialog(idFunction, iService, pData);
// }
// }
//}
}
}