231 lines
8.1 KiB
C++
231 lines
8.1 KiB
C++
#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) // 캐시샵오픈시
|
|
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<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 );
|
|
};
|