DragonNest/Server/ServerCommon/DNEventSystem.h

232 lines
8.1 KiB
C
Raw Permalink Normal View History

#pragma once
class CDNUserSession;
namespace EventSystem
{
enum EventTypeEnum {
OnNone,
OnLevelUp, // V(o) G(o)
OnDungeonEnter, // V(o) G(o)
OnDungeonClear, // V(x) G(o)
OnItemGain, // V(o) G(o)
OnItemUse, // V(o) G(o)
OnItemEquip, // V(o) G(o)
OnItemCompound, // V(o) G(x)
OnItemDisjoint, // V(x) G(o)
OnItemEnchantSuccess, // V(o) G(o)
OnItemEnchantFailed, // V(o) G(o) // 10
OnItemRepair, // V(o) G(o)
OnNpcTalk, // V(o) G(o)
OnMissionClear, // V(o) G(o)
OnQuestClear, // V(o) G(o)
OnAppelationGain, // <20>Ⱦ<EFBFBD>
OnRebirth, // V(x) G(o)
OnDie, // V(x) G(o)
OnRebirthAny, // V(x) G(o)
OnKillMonster, // V(x) G(o)
OnGuildCreate, // V(o) G(x) // 20
OnGuildJoin, // V(o) G(x)
OnJobChange, //
OnAirshipRiding, // <20>Ⱦ<EFBFBD>
OnSocialAction, // V(o) G(o)
OnMarketBuy, // V(o) G(x)
OnMarketSell, // V(o) G(x)
OnExchange, // V(o) G(o)
OnPvPVictory, // V(x) G(o)
OnPvPLoss, // V(x) G(o)
OnCoopClear, // <20>Ⱦ<EFBFBD> // 30
OnCoopFailed, // <20>Ⱦ<EFBFBD>
OnSkillUse, // V(x) G(o)
OnSkillLevelUp, // V(o) G(o)
OnSkillAdd, // V(o) G(x)
OnWarehouseKeep, // V(o) G(x)
OnPvPFinished, // V(x) G(o)
OnKillPlayer, // V(x) G(o)
OnQuestGain, // V(o) G(o)
OnDungeonGiveup, // V(x) G(o) // F9 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD>
OnFriendFull, // V(o) G(o) // 40
OnDarklairClearRound, // V(x) G(o)
OnPvPKillCaptain, // V(x) G(o)
OnNpcReputaionChange, // V(o) G(o)
OnCashShopOpen, // V(x) G(o) // ij<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD>½<EFBFBD>
OnMasterSystemGraduate, // V(o) G(o) // 45)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
OnMasterSystemGraduated,// V(o) G(o) // 46)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŵ
OnMasterSystemJoin, // V(o) G(o) // 47)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>α<EFBFBD>
OnPvPEventFinished, // V(x) G(o) // 48)PvP<76>̺<EFBFBD>Ʈ<EFBFBD><C6AE> Ŭ<><C5AC><EFBFBD><EFBFBD>
OnKillMonster2, // V(x) G(o) // 49)<29>ش<EFBFBD> KillMonster <20><> <20>׾<EFBFBD><D7BE><EFBFBD><EFBFBD><EFBFBD> <20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ<C3BC><C5A9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
OnDailyFatigue, // 50)<29><><EFBFBD><EFBFBD> <20>Ƿε<C7B7> <20>Ҹ<EFBFBD><D2B8><EFBFBD>
OnWeeklyFatigue, // 51)<29>ְ<EFBFBD> <20>Ƿε<C7B7> <20>Ҹ<EFBFBD><D2B8><EFBFBD>
OnPCBangFatigue, // 52)PC<50><43> <20>Ƿε<C7B7> <20>Ҹ<EFBFBD><D2B8><EFBFBD>
OnVIPFatigue, // 53)VIP <20>Ƿε<C7B7> <20>Ҹ<EFBFBD><D2B8><EFBFBD>
OnCountingDungeonClear, // 54)<29><><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>Ŭ<EFBFBD><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnDailyMissionClear, // 55)<29><><EFBFBD>Ϲ̼<CFB9> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnWeeklyMissionClear, // 56)<29>ְ<EFBFBD><D6B0>̼<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnPCBang_Item = 57, // 57)PC<50><43><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnPCBang_Fatigue = 58, // 58)PC<50><43><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD>-<2D>Ƿε<C7B7><CEB5><EFBFBD><EFBFBD><EFBFBD>
OnPCBang_RebirthCoin = 59, // 59)PC<50><43><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnRoundFinished = 60, // V(x) G(o) // 60)PvP <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnOccupyArea = 61, // V(x) G(o) // 61)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
OnStealArea = 62, // V(x) G(o) // 62)<29><><EFBFBD><EFBFBD> <20><>Ż
OnTrigger = 63, // V(x) G(o) // 63)Ʈ<><C6AE><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5><EFBFBD>
OnLadderFinished = 64, // V(x) G(o) // 64)<29><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
OnPetLevelUp = 65, // V(o) G(o) // 65)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnGiftToCadger = 66, // 66)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnSetRevengeTarget = 67, // 67)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
OnPvPLevelChange = 68, // 68)PvP <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnHPChanged = 69, // V(x) G(o) // 69)HP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnMPChanged = 70, // V(x) G(o) // 70)MP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnPetExpired = 71, // V(o) G(o) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnActiveMissionClear = 72, // V(x) G(o) // 72)<29><>Ƽ<EFBFBD><C6BC> <20>̼<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnChatMission = 73, // 73)ä<><C3A4> <20>̼<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
achievetype_unk1,
achievetype_unk2,
achievetype_unk3,
achievetype_unk4,
achievetype_unk5,
achievetype_unk6,
achievetype_unk7,
achievetype_unk8,
achievetype_unk9,
achievetype_unk10,
achievetype_unk11,
EventTypeEnum_Amount,
};
enum EventValueTypeEnum {
None,
PlayerLevel = 1, // <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD><EFBFBD>
PartyCount = 2, // <20><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>
MapID = 3, // <20><> ID
MapLevel = 4, // <20><> Level
InvenCoin = 5, // <20>κ<EFBFBD><CEBA><20><>
WarehouseCoin = 6, // â<><C3A2><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><>
JobID = 7, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ID
ClassID = 8, // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> ID
MonsterID = 9, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID
NpcID = 10, // NPC ID
SkillID = 11, // <20><>ų ID
SkillLevel = 12, // <20><>ų Level
ItemID = 13, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID
StageClearRank = 14, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>ũ
StageClearTime = 15, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> Ÿ<><C5B8>
MaxComboCount = 16, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20>޺<EFBFBD> ī<><C4AB>Ʈ
UseCoinCount = 17, // <20>ŷ<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
EnchantLevel = 18, // <20><>ȭ<EFBFBD><C8AD> <20><>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD>
TotalDamageCount = 19, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǰ<EFBFBD> Ƚ<><C8BD>
MissionID = 20, // <20>޼<EFBFBD> <20>̼<EFBFBD> ID
DieCount = 21, // <20><><EFBFBD><EFBFBD> Ƚ<><C8BD>
GenocideCount = 22, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD> <20><EFBFBD><EEB8B6> <20><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>.
PartyMemberDieCount = 23,// <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD> Ƚ<><C8BD>
KOClassIDinPvP = 24, // pvp<76><70><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>ID
KOClassCountinPvP = 25, // pvp<76><70><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
KObyClassIDinPvP = 26, // pvp<76><70><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>ID
KObyClassCountinPvP = 27,// pvp<76><70><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
PvPWin = 28,
PvPLose = 29,
AllPartsMinLevel = 30, // <20><><EFBFBD><EFBFBD>5<EFBFBD><35> <20>ּ<EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD>
QuestID = 31, // <20><><EFBFBD><EFBFBD>Ʈ ID
DarkLairRoundCount = 32,
SocialActionID = 33, // <20><><EFBFBD><EFBFBD>ó ID
KOCountinPvP = 34, // pvp<76><70><EFBFBD><EFBFBD>. ųī<C5B3><C4AB>Ʈ
KObyCountinPvP = 35, // pvp<76><70><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD>ī<EFBFBD><C4AB>Ʈ
StartPartyCount = 36, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD> <20><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>
NpcReputaionFavor = 37,
NpcReputaionMalice = 38,
MasterCount = 39, // <20><><EFBFBD><EFBFBD> <20><>
PupilCount = 40, // <20><><EFBFBD><EFBFBD> <20><>
GraduateCount = 41, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
PartyMasterCount = 42, // <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD> <20><>
PartyPupilCount = 43, // <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD> <20><>
PartyClassmateCount = 44,// <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD> <20><>
MapSubType = 45, // <20><> SubType
DungeonClearCount = 46, // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>
DailyFatigue = 47, // <20><><EFBFBD><EFBFBD> <20>Ƿε<C7B7>
WeeklyFatigue = 48, // <20>ְ<EFBFBD> <20>Ƿε<C7B7>
PCBangFatigue = 49, // PC<50><43> <20>Ƿε<C7B7>
VIPFatigue = 50, // VIP <20>Ƿε<C7B7>
ItemType = 51, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Type
PCBangGrade = 52, // <20>Ǿ<EFBFBD><C7BE><EFBFBD> <20><><EFBFBD><EFBFBD>(1-<2D>Ϲ<EFBFBD> 2-<2D><><EFBFBD><EFBFBD> 3-<2D>ǹ<EFBFBD> 4-<2D><><EFBFBD><EFBFBD>) PCBang::Grade
PvPGameMode = 53, // PvP <20><><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD>(0-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 3-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 11-<2D><><EFBFBD><EFBFBD>, 12-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,13-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
PvPTeam = 54, // PvP Team üũ(A = 1000, B = 1001, Human = 1000, Zombie = 1001)
PvPRoundCount = 55, // PvP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PvPWinCondition=56, // PvP <20>¸<EFBFBD> <20><><EFBFBD><EFBFBD>(1-Ÿ<>ӿ<EFBFBD><D3BF><EFBFBD>, 2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 3-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 5-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..<2E><>Ÿ.
HolyWaterUse=57, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ƚ<><C8BD>
GhoulModeWin=58, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>¸<EFBFBD> Ƚ<><C8BD>
BossKillCount=59, // <20><><EFBFBD><EFBFBD>ųī<C5B3><C4AB>Ʈ
PvPModePlayCount = 60, // PvP <20><><EFBFBD>Ӹ<EFBFBD><D3B8><20>÷<EFBFBD><C3B7><EFBFBD> <20><>
PvPModeWinCount = 61, // PvP <20><><EFBFBD>Ӹ<EFBFBD><D3B8><20>¸<EFBFBD> <20><>
PvPModeOccupyCount = 62,// PvP <20><><EFBFBD>Ӹ<EFBFBD><D3B8><20><><EFBFBD><EFBFBD> <20><>
PvPModeStealCount = 63,// PvP <20><><EFBFBD>Ӹ<EFBFBD><D3B8><20><>Ż <20><>
PvPModeKillCount = 64,// PvP <20><><EFBFBD>Ӹ<EFBFBD><D3B8>庰 ų <20><>
MonsterGrade = 65, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
MonsterRaceID = 66, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ID
DiffMapToUserLevel= 67, // <20><> <20><><EFBFBD><EFBFBD><E5B7B9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̰<EFBFBD>(<28><><EFBFBD>밪)
GuildPartyCount= 68, // <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
PetLevel=69, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
PartyMasterAndPupilCount = 70, // <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD> <20><>
PartyType = 71, //<2F><>ƼŸ<C6BC><C5B8> (ePartyType <20><> <20><><EFBFBD><EFBFBD>)
PvPRevengeSuccess = 72, //PvP <20><><EFBFBD><EFBFBD><E5BFA1> ų or Die <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PvPLevel = 73, //PvP <20><><EFBFBD><EFBFBD>
PvPTournamentWin = 74, // PvP <20><><EFBFBD>ʸ<EFBFBD>Ʈ <20>¸<EFBFBD>(<28><>, <20><>)
PvPTournamentType = 75, // PvP <20><><EFBFBD>ʸ<EFBFBD>Ʈ Ÿ<><C5B8>(32<33><32>, 16<31><36>, 8<><38>, 4<><34>)
PvPTournamentAdvance = 76, // PvP <20><><EFBFBD>ʸ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>(16<31><36>, 8<><38>, 4<><34>, <20><><EFBFBD><EFBFBD>)
ItemCount = 77, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (OnItemGain <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID <20><> ó<><C3B3>)
PlayerHpPercent = 78, // <20>÷<EFBFBD><C3B7>̾<EFBFBD> HP
PlayerMpPercent = 79, // <20>÷<EFBFBD><C3B7>̾<EFBFBD> MP
TotalRebirthCount = 80, // <20><><EFBFBD><EFBFBD> <20><>Ȱ <20><><EFBFBD><EFBFBD>
SkillPoint = 81, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ʈ<><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD>Ʈ
PvPWorldCombine = 82, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ActiveMissionID = 83, // <20><>Ƽ<EFBFBD><C6BC> <20>̼<EFBFBD> ID ( Event Variable )
UIStringMID = 84, //UIString.xml <20><> MID
unk1,
unk2,
unk3,
unk4,
unk5,
unk6,
unk7,
unk8,
unk9,
unk10,
unk11,
unk12,
unk13,
unk14,
unk15,
unk16,
unk17,
EventValueTypeEnum_Amount,
};
};
class CDNEventSystem:public TBoostMemoryPool<CDNEventSystem>
{
public:
CDNEventSystem( CDNUserSession *pUser );
virtual ~CDNEventSystem();
public:
struct EventValueFuncStruct {
EventSystem::EventValueTypeEnum Type;
int(_cdecl *pFunc)( CDNUserSession *pSession );
};
static EventValueFuncStruct s_EventValueFuncList[];
protected:
CDNUserSession *m_pUserSession;
int m_nEventParamValue[EventSystem::EventValueTypeEnum_Amount];
public:
void RegisterEventParam( EventSystem::EventValueTypeEnum Index, int nValue );
int GetEventParam( EventSystem::EventValueTypeEnum Index );
bool OnEvent( EventSystem::EventTypeEnum Event );
bool OnEvent( EventSystem::EventTypeEnum Event, int nParamCount, ... );
bool CheckEventCondition( const TEventCondition *pEventCondition );
};