231 lines
15 KiB
C++
231 lines
15 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 );
|
||
};
|