#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, // ¾È¾¸ 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, // ¾È¾¸ 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, // ¾È¾¸ // 30 OnCoopFailed, // ¾È¾¸ 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 ´­·¯¼­ ½ºÅ×ÀÌÁö Æ÷±âÇÒ¶§ 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½Ã¼¥¿Àǽà OnMasterSystemGraduate, // V(o) G(o) // 45)Á¦ÀÚ Á¹¾÷ OnMasterSystemGraduated,// V(o) G(o) // 46)Á¦ÀÚ Á¹¾÷ ½ÃÅ´ OnMasterSystemJoin, // V(o) G(o) // 47)»çÁ¦ °ü°è ¸Î±â OnPvPEventFinished, // V(x) G(o) // 48)PvPÀ̺¥Æ®¹æ Ŭ¸®¾î OnKillMonster2, // V(x) G(o) // 49)ÇØ´ç KillMonster ´Â Á×¾úÀ»¶§ ¸·Å¸°¡ À¯Àú¿´À» °æ¿ì µî ¸ðµç Á¶°Ç üũÇÏÁö ¾ÊÀ½. OnDailyFatigue, // 50)ÀÏÀÏ ÇǷεµ ¼Ò¸ð½Ã OnWeeklyFatigue, // 51)ÁÖ°£ ÇǷεµ ¼Ò¸ð½Ã OnPCBangFatigue, // 52)PC¹æ ÇǷεµ ¼Ò¸ð½Ã OnVIPFatigue, // 53)VIP ÇǷεµ ¼Ò¸ð½Ã OnCountingDungeonClear, // 54)¿¬¼Ó´øÀüŬ¸®¾î½Ã OnDailyMissionClear, // 55)ÀÏÀÏ¹Ì¼Ç Å¬¸®¾î½Ã OnWeeklyMissionClear, // 56)ÁÖ°£¹Ì¼Ç Ŭ¸®¾î½Ã OnPCBang_Item = 57, // 57)PC¹æÀϰæ¿ì-¾ÆÀÌÅÛÁö±Þ OnPCBang_Fatigue = 58, // 58)PC¹æÀϰæ¿ì-ÇǷεµÁö±Þ OnPCBang_RebirthCoin = 59, // 59)PC¹æÀϰæ¿ì-»ý¸í¼®Áö±Þ OnRoundFinished = 60, // V(x) G(o) // 60)PvP ¶ó¿îµå°¡ ³¡³¯¶§ OnOccupyArea = 61, // V(x) G(o) // 61)°ÅÁ¡ Á¡·É OnStealArea = 62, // V(x) G(o) // 62)°ÅÁ¡ ÀïÅ» OnTrigger = 63, // V(x) G(o) // 63)Æ®¸®°Å ¹ßµ¿½Ã OnLadderFinished = 64, // V(x) G(o) // 64)·¡´õ Ŭ¸®¾î OnPetLevelUp = 65, // V(o) G(o) // 65)Æê ·¹º§¾÷½Ã OnGiftToCadger = 66, // 66)Á¶¸£±â ¼±¹°½Ã OnSetRevengeTarget = 67, // 67)º¹¼ö ´ë»óÀÌ »ý°åÀ» ½Ã OnPvPLevelChange = 68, // 68)PvP µî±Þ º¯°æ½Ã OnHPChanged = 69, // V(x) G(o) // 69)HP º¯°æ½Ã OnMPChanged = 70, // V(x) G(o) // 70)MP º¯°æ½Ã OnPetExpired = 71, // V(o) G(o) // ÀåÂøÁßÀÎ Æê ±â°£ ¸¸·á½Ã OnActiveMissionClear = 72, // V(x) G(o) // 72)¾×Ƽºê ¹Ì¼Ç Ŭ¸®¾î½Ã OnChatMission = 73, // 73)äÆÃ ¹Ì¼Ç Ŭ¸®¾î½Ã 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, // Ç÷¹ÀÌ¾î ·¹º§ PartyCount = 2, // ÆÄƼ¿ø¼ö MapID = 3, // ¸Ê ID MapLevel = 4, // ¸Ê Level InvenCoin = 5, // Àκ¥Å丮 µ· WarehouseCoin = 6, // â°í¿¡ ÀÖ´Â µ· JobID = 7, // ÇöÀç Á÷¾÷ ID ClassID = 8, // ÇöÀç Ŭ·¡½º ID MonsterID = 9, // ¸ó½ºÅÍ ID NpcID = 10, // NPC ID SkillID = 11, // ½ºÅ³ ID SkillLevel = 12, // ½ºÅ³ Level ItemID = 13, // ¾ÆÀÌÅÛ ID StageClearRank = 14, // ½ºÅ×ÀÌÁö Ŭ¸®¾î ·©Å© StageClearTime = 15, // ½ºÅ×ÀÌÁö Ŭ¸®¾î ŸÀÓ MaxComboCount = 16, // ½ºÅ×ÀÌÁö Ŭ¸®¾î½Ã ÃÖ´ë ÄÞº¸ Ä«¿îÆ® UseCoinCount = 17, // °Å·¡, ¼ö¸® µîµî »ç¿ëµÈ µ· EnchantLevel = 18, // °­È­½Ã °­È­·¹º§ TotalDamageCount = 19, // ½ºÅ×ÀÌÁö Ŭ¸®¾î½Ã ÇÇ°Ý È½¼ö MissionID = 20, // ´Þ¼º ¹Ì¼Ç ID DieCount = 21, // »ç¸Á Ƚ¼ö GenocideCount = 22, // ¸ó½ºÅÍ µ¿½Ã¿¡ ¸î¸¶¸® »ç³ÉÇß³ª. PartyMemberDieCount = 23,// ÆÄƼ¿ø »ç¸Á Ƚ¼ö KOClassIDinPvP = 24, // pvpÁ¤º¸. Á×ÀΠŬ·¡½ºID KOClassCountinPvP = 25, // pvpÁ¤º¸. Á×ÀΠŬ·¡½º ¼ö·® KObyClassIDinPvP = 26, // pvpÁ¤º¸. Á×Àº Ŭ·¡½ºID KObyClassCountinPvP = 27,// pvpÁ¤º¸. Á×Àº Ŭ·¡½º ¼ö·® PvPWin = 28, PvPLose = 29, AllPartsMinLevel = 30, // Àåºñ5Á¾ ÃÖ¼Ò °­È­ ·¹º§ QuestID = 31, // Äù½ºÆ® ID DarkLairRoundCount = 32, SocialActionID = 33, // Á¦½ºÃ³ ID KOCountinPvP = 34, // pvpÁ¤º¸. ųī¿îÆ® KObyCountinPvP = 35, // pvpÁ¤º¸. µ¥½ºÄ«¿îÆ® StartPartyCount = 36, // ½ºÅ×ÀÌÁö ½ÃÀÛÇÒ¶§ÀÇ ÆÄƼ¿ø¼ö NpcReputaionFavor = 37, NpcReputaionMalice = 38, MasterCount = 39, // ½º½Â ¼ö PupilCount = 40, // Á¦ÀÚ ¼ö GraduateCount = 41, // Á¹¾÷»ý ¼ö PartyMasterCount = 42, // ÆÄƼ³» ½º½Â ¼ö PartyPupilCount = 43, // ÆÄƼ³» Á¦ÀÚ ¼ö PartyClassmateCount = 44,// ÆÄƼ³» µ¿±â ¼ö MapSubType = 45, // ¸Ê SubType DungeonClearCount = 46, // ´øÁ¯ Ŭ¸®¾î ¼ö DailyFatigue = 47, // ÀÏÀÏ ÇǷεµ WeeklyFatigue = 48, // ÁÖ°£ ÇǷεµ PCBangFatigue = 49, // PC¹æ ÇǷεµ VIPFatigue = 50, // VIP ÇǷεµ ItemType = 51, // ¾ÆÀÌÅÛ Type PCBangGrade = 52, // ÇǾ¾¹æ µî±Þ(1-ÀÏ¹Ý 2-·¹µå 3-½Ç¹ö 4-°ñµå) PCBang::Grade PvPGameMode = 53, // PvP °ÔÀÓ¸ðµå(0-¸®½ºÆù, 1-¶ó¿îµå, 2-´ëÀåÀü, 3-°³ÀÎÀü, 11-Á»ºñ, 12-±æµåÀü,13-Á¡·ÉÀü) PvPTeam = 54, // PvP Team üũ(A = 1000, B = 1001, Human = 1000, Zombie = 1001) PvPRoundCount = 55, // PvP ¶ó¿îµå¼ö PvPWinCondition=56, // PvP ½Â¸® Á¶°Ç(1-ŸÀÓ¿À¹ö, 2-»ó´ëÆÀ ¸ðµÎ ³ª°¨, 3-»ó´ëÆÀ ¸ðµÎ Á×À½, 4-»ó´ëÆÀ ´ëÀå ³ª°¨, 5-»ó´ëÆÀ ´ëÀå Á×À½..±âŸ. HolyWaterUse=57, // ±¸¿ï ¼º¼ö »ç¿ë Ƚ¼ö GhoulModeWin=58, // ±¸¿ï ¸ðµÎ ½Â¸® Ƚ¼ö BossKillCount=59, // º¸½ºÅ³Ä«¿îÆ® PvPModePlayCount = 60, // PvP °ÔÀÓ¸ðµåº° Ç÷¹ÀÌ ¼ö PvPModeWinCount = 61, // PvP °ÔÀÓ¸ðµåº° ½Â¸® ¼ö PvPModeOccupyCount = 62,// PvP °ÔÀÓ¸ðµåº° Á¡·É ¼ö PvPModeStealCount = 63,// PvP °ÔÀÓ¸ðµåº° ÀïÅ» ¼ö PvPModeKillCount = 64,// PvP °ÔÀÓ¸ðµåº° ų ¼ö MonsterGrade = 65, // ¸ó½ºÅÍ µî±Þ MonsterRaceID = 66, // ¸ó½ºÅÍ Á¾Á· ID DiffMapToUserLevel= 67, // ¸Ê ±ÇÀå·¹º§°ú À¯Àú·¹º§ Â÷À̰ª(Àý´ë°ª) GuildPartyCount= 68, // ÆÄƼ³» ±æµå¿ø ¼ö PetLevel=69, // °¡Áö°í ÀÖ´Â ÆêÁß °¡Àå ³ôÀº ·¹º§ PartyMasterAndPupilCount = 70, // ÆÄƼ³» ½º½Â+Á¦ÀÚ ¼ö PartyType = 71, //ÆÄƼŸÀÔ (ePartyType °ª ÂüÁ¶) PvPRevengeSuccess = 72, //PvP ¸ðµå¿¡¼­ ų or Die ½Ã ¸®º¥Áö ¼º°ø¿©ºÎ PvPLevel = 73, //PvP µî±Þ PvPTournamentWin = 74, // PvP Åä³Ê¸ÕÆ® ½Â¸®(½Â, ÆÐ) PvPTournamentType = 75, // PvP Åä³Ê¸ÕÆ® ŸÀÔ(32°­, 16°­, 8°­, 4°­) PvPTournamentAdvance = 76, // PvP Åä³Ê¸ÕÆ® ÁøÃâ(16°­, 8°­, 4°­, °á½Â) ItemCount = 77, // ¾ÆÀÌÅÛ °¹¼ö (OnItemGain À̺¥Æ®¿¡¼­¸¸ ÇØ´ç ¾ÆÀÌÅÛID ·Î ó¸®) PlayerHpPercent = 78, // Ç÷¹À̾î HP PlayerMpPercent = 79, // Ç÷¹À̾î MP TotalRebirthCount = 80, // ³²Àº ºÎȰ °¹¼ö SkillPoint = 81, // ÇöÀç ¼±Åà Ʈ¸®ÀÇ ³²Àº ½ºÅ³Æ÷ÀÎÆ® PvPWorldCombine = 82, // ¿ùµåÅëÇÕ ÀüÀå ActiveMissionID = 83, // ¾×Ƽºê ¹Ì¼Ç ID ( Event Variable ) UIStringMID = 84, //UIString.xml ³» MID unk1, unk2, unk3, unk4, unk5, unk6, unk7, unk8, unk9, unk10, unk11, unk12, unk13, unk14, unk15, unk16, unk17, EventValueTypeEnum_Amount, }; }; class CDNEventSystem:public TBoostMemoryPool { 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 ); };