Files
caliverse_server/Protocol/proto/Game_Define.proto
2025-11-28 16:54:56 +09:00

2211 lines
52 KiB
Protocol Buffer

syntax = "proto3";
import "google/protobuf/timestamp.proto";
import "Define_Common.proto";
import "Define_Result.proto";
option java_multiple_files = true;
option java_package = "com.caliverse.admin.domain.RabbitMq.message";
//=================================================================================================
// 본 파일은 게임과 관련된 속성을 정의 한다. - kangms
//=================================================================================================
//=================================================================================================
// 엔티티 종류
// Enum Description 규칙 : 계층단위 자릿수 - 00
//=================================================================================================
enum EntityType
{
EntityType_None = 0;
// User 계열 : HFSM, Control by Manual
EntityType_Player = 1;
EntityType_BattlePlayer = 101; //일단 여기에 두자
// Character 계열
EntityType_Character = 2;
// Npc 계열 : HFSM, Control by AI
EntityType_Npc = 3;
// Monster 계열 : 전투가 가능한 객체
EntityType_Monster = 301;
// 일반 Npc
EntityType_GeneralNpc = 302;
// 장애물
EntityType_Barrier = 303;
// Volume 계열
EntityType_Volume = 305;
// 이벤트
EntityType_EventVolume = 30501;
// 효과
EntityType_EffectVolume = 30502;
// 퀘스트 볼륨
EntityType_QuestVolume = 30503;
// UGC Npc
EntityType_UgcNpc = 306;
EntityType_Beacon = 30601;
EntityType_UgcNpcRank = 30602;
// 이펙트 : 효과
EntityType_Effect = 307;
// 파밍
EntityType_Farming = 30701;
// 인벤토리 계열
EntityType_Inventory = 4;
// 보관 인벤토리 : 특정 위치에 장착 불필요
EntityType_BagInven = 401;
// 의상 장착 인벤토리 : 특정 위치에 장착 필요
EntityType_ClothEquipInven = 402;
// 도구 장착 인벤토리 : 특정 위치에 장착 필요
EntityType_ToolEquipInven = 403;
// 타투 장착 인벤토리 : 특정 위치에 장착 필요
EntityType_TattooEquipInven = 404;
// 비컨 상점 인벤토리 : 개별 구현
EntityType_BeaconShopInven = 405;
// 아이템 계열
EntityType_Item = 5;
// Ground 계열 : HFSM, Control by AI
EntityType_GroundEntity = 6;
// 보상등을 담고 있는 드랍 오브젝트
EntityType_DropObject = 601;
//
EntityType_Land = 602;
//
EntityType_OwnedLand = 60201;
//
EntityType_Building = 603;
//
EntityType_OwnedBuilding = 60301;
//
EntityType_BuildingFloor = 60302;
//
EntityType_BuildingProfit = 60303;
//
EntityType_BuildingProfitHistory = 60304;
//
EntityType_BuildingRentalHistory = 60305;
//
EntityType_MyHome = 604;
// 재화 계열
EntityType_Money = 7;
// 상점 계열
EntityType_Shop = 8;
// 상점 Product Meter
EntityType_MyShopProductMeter = 801;
// 판매된 Product List
EntityType_ShopSoldProduct = 802;
// 인스턴스 룸
EntityType_Room = 9;
EntityType_BattleInstance = 901; //일단 여기에 두자
EntityType_BattleEvent = 902; //일단 여기에 두자
EntityType_SystemBattleEvent = 903; //일단 여기에 두자
EntityType_GameRoom = 904;
EntityType_GameModeTPSFreeForAll = 90401;
EntityType_GameModeTPSTeamDeathMatch = 90402;
EntityType_GameModeRunAdventure = 90411;
EntityType_GameModeRunRace = 90412;
EntityType_GameModeRunPractice = 90413;
EntityType_GameModeRunHonor = 90414;
EntityType_GameObject = 905;
EntityType_GameObjectWeapon = 90501;
EntityType_GameObjectBuff = 90502;
EntityType_GameObjectPodStorage = 90503;
EntityType_GameObjectCombatPod = 90504;
EntityType_GameObjectPickupPod = 90505;
EntityType_GameObjectSavePoint = 90506;
// 글로벌 파티
EntityType_Party = 10;
// 전역적 관리 파티 엔티티
EntityType_GlobalParty = 1001;
// 파티
EntityType_GlobalPartyDetail = 100101;
// Player 귀속 관리 파티 엔티티
EntityType_PersonalParty = 1002;
// 파티
EntityType_PersonalPartyDetail = 100201;
// 소셜 액션
EntityType_SocialAction = 11;
// 친구
EntityType_Friend = 12;
// 미니맵 마커
EntityType_MinimapMarker = 13;
// Ticker
EntityType_Ticker = 14;
EntityType_UserLoginCacheRefreshTicker = 1401;
EntityType_EntityUpdateTicker = 1402;
EntityType_EventUpdateTicker = 1403;
EntityType_TimeEventTicker = 1404;
EntityType_ChannelUpdateTicker = 1405;
EntityType_NoticeChatTicker = 1406;
EntityType_PartyCacheRefreshTicker = 1408;
EntityType_ReservationCheckTicker = 1409;
EntityType_NormalQuestCheckTicker = 1411;
EntityType_ShopProductCheckTicker = 1412;
EntityType_UgcNpcRankTicker = 1413;
EntityType_SystemMailCheckTicker = 1414;
EntityType_LargePacketCheckTicker = 1415;
EntityType_BuildingUpdateTicker = 1416;
EntityType_CaliumEventTicker = 1417;
EntityType_BattleEventCheckTicker = 1418;
EntityType_BattleInstanceStateCheckTicker = 1419;
EntityType_LandAuctionReservationConfigureTicker = 1420;
EntityType_LandAuctionCheckTicker = 1421;
EntityType_GameModeLifeCycleTicker = 1422;
EntityType_RankingScheduleUpdateTicker = 1423;
EntityType_RankingUpdateTicker = 1424;
EntityType_MatchServerListTicker = 1431;
EntityType_GameEventCheckTicker = 1432;
// 차단 유저
EntityType_BlockUser = 15;
// 퀘스트
EntityType_Quest = 16;
EntityType_EndQuest = 1601;
// 메일 계열
EntityType_Mail = 20;
EntityType_QuestMail = 2001;
// Galbal
EntityType_Golbal = 21;
// 시스템 메일의 owner
EntityType_SystemMailManager = 2101;
// 시스템 메일 (유저들이 로그인시 받을 시스템 메일 정보)
EntityType_SystemMail = 210101;
// 공지 채팅의 owner
EntityType_NoticeChatManager = 2102;
// 공지 채팅 (유저들이 받을 공지 채팅 정보)
EntityType_NoticeChat = 210201;
// 시즌 패스의 owner
EntityType_SeasonPassManager = 2103;
// 배너의 owner
EntityType_BannerManager = 2104;
// 배너의
EntityType_Banner = 210401;
// 카트
EntityType_Cart = 22;
// 클레임
EntityType_Claim = 23;
// 제작
EntityType_Craft = 24;
// 레시피
EntityType_Recipe = 2401;
// 도구 액션
EntityType_ToolAction = 25;
// Task 예약 액션
EntityType_Task_Reservation_Action = 26;
// 제품 패키지 액션
EntityType_Package_Action = 27;
// Calium
EntityType_Calium = 28;
EntityType_CaliumConverter = 2801;
EntityType_Rental = 29;
// 경매
EntityType_Auction = 30;
// 랜드 경매
EntityType_LandAuction = 3001;
// 랜드 경매 환급 입찰금
EntityType_LandAuctionRefundBidPrice = 3002;
// 비컨 상점 거래
EntityType_BeaconShopSold = 31;
// 비컨 상점 거래 내역 영수증
EntityType_BeaconShopSoldRecord = 3101;
// 비컨 상점 거래 정산 금액
EntityType_BeaconShopSoldPrice = 3102;
// 랭킹 스케쥴
EntityType_RankingSchedule = 32;
// 랭킹
EntityType_Ranking = 33;
// 랭커
EntityType_Ranker = 3201;
EntityType_EventScore = 34;
EntityType_WorldEventScore = 3401;
EntityType_PlanetUser = 41;
EntityType_GameEvent = 51;
EntityType_GameEventCollector = 5101;
// 사용자 정의 UI
EntityType_CustomDefinedUi = 99;
// 검색용 : 모든 종류의 엔티티를 검색 !!!
EntityType_All = 1000000000;
}
//=============================================================================================
// 엔티티 상태 종류
//=============================================================================================
enum EntityStateType
{
EntityStateType_None = 0;
// 생성된 (Root) : UserAuthServer, ChannelServer, IndunServer, ChatServer
EntityStateType_Created = 1;
// 초기화중인
EntityStateType_Initializing = 2;
// 로딩하고있는
EntityStateType_Loading = 3;
// 로그인중인
EntityStateType_Login = 11;
// 로그아웃된
EntityStateType_Logout = 111;
// 던전에 입장중인
EntityStateType_GameZoneEnter = 15;
// 플레이가 준비된
EntityStateType_PlayReady = 16;
// 게임존에 소환중인
EntityStateType_Spawning = 17;
// 소환후 연출중인
EntityStateType_SpawnedCutScene = 18;
// 살아있는
EntityStateType_Alive = 51;
// 대기중인
EntityStateType_Idle = 511;
// 다음 상태를 생각중인
EntityStateType_Think = 512;
// 이동중인
EntityStateType_Move = 513;
// 주변 랜덤 배회
EntityStateType_Roam = 5131;
// 걷기
EntityStateType_Walk = 5132;
// 뛰기
EntityStateType_Run = 5133;
// 순찰
EntityStateType_Patrol = 5134;
// 추적
EntityStateType_Chase = 5135;
// 질주
EntityStateType_Dash = 5136;
// 홈으로 설정된 위치로
EntityStateType_GoHome = 5137;
// 댄스 상태
EntityStateType_Dancing = 5138;
// 전투중인
EntityStateType_Battle = 514;
// 스킬 사용
EntityStateType_SkillFire = 5141;
// 제어 불능중인
EntityStateType_Uncontrol = 515;
// 은신중인
EntityStateType_Hide = 516;
// 중지중인
EntityStateType_Pause = 519;
// 사망한
EntityStateType_Dead = 61;
// 부활중인
EntityStateType_Revive = 611;
// 던전내에서 나가는
EntityStateType_GameZoneExit = 99;
// 활성화된
EntityStateType_Activate = 101;
// 비활성화된
EntityStateType_Deactivate = 102;
// 던전의 그라운드에 떨어진
EntityStateType_Drop = 201;
// 아이템 제작에 사용중
EntityStateType_UsingByCrafting = 301;
// 파밍에 사용중
EntityStateType_UsingByFarming = 302;
// 마이홈에 사용중
EntityStateType_UsingByMyHome = 303;
}
//=============================================================================================
// 엔티티 상태 트리거 종류
//=============================================================================================
enum EntityStateTriggerType
{
EntityStateTriggerType_None = 0;
// 시간 만료
EntityStateTriggerType_Timeout = 1;
// 엔티티 던전 입장/나가기
EntityStateTriggerType_GameZoneEnter = 11;
EntityStateTriggerType_GameZoneExit = 12;
// 엔티티 기본 관련
EntityStateTriggerType_Spawn = 51;
EntityStateTriggerType_Alive = 52;
// 엔티티 AI 관련
EntityStateTriggerType_Think = 61;
EntityStateTriggerType_Roam = 62;
EntityStateTriggerType_Chase = 63;
// 전투(스킬, 버프) 관련
EntityStateTriggerType_BuffActive = 101;
EntityStateTriggerType_Attack = 102;
EntityStateTriggerType_SkillFire = 111;
EntityStateTriggerType_SkillCancel = 112;
EntityStateTriggerType_SkillClose = 113;
// 피아식별 관련
EntityStateTriggerType_NoEnemy = 131;
EntityStateTriggerType_TargetFound = 132;
EntityStateTriggerType_TargetDead = 133;
// 특수 기능 관련
EntityStateTriggerType_NoHp = 301;
EntityStateTriggerType_Revive = 302;
EntityStateTriggerType_HomeGo = 303;
EntityStateTriggerType_ArrivedHome = 304;
EntityStateTriggerType_Activate = 305;
EntityStateTriggerType_Deactivate = 306;
// 특수 효과 관련
EntityStateTriggerType_UncontrolStart = 601;
EntityStateTriggerType_UncontrolEnd = 602;
// 플레이 관련
EntityStateTriggerType_PlayReady = 1001;
}
//=============================================================================================
// OwnerEntityType 종류
//=============================================================================================
enum OwnerEntityType
{
OwnerEntityType_None = 0;
OwnerEntityType_User = 1;
OwnerEntityType_Character = 2;
OwnerEntityType_UgcNpc = 3;
OwnerEntityType_Myhome = 4;
OwnerEntityType_Land = 5;
OwnerEntityType_Building = 6;
OwnerEntityType_Item = 7;
}
message P2PGroupType
{
int32 Type = 1; // 1 Grid, 2 Map
}
// 레벨
message LevelExp
{
int32 level = 1;
int64 expInLevel = 2;
int64 expInTotal = 3;
}
// 메타 아이디별 레벨
message LevelExpById
{
//<MetaId, LevelExp>
map<uint32, LevelExp> levelExpsByMetaId = 1;
//<Guid, LevelExp>
map<string, LevelExp> levelExpsByGuid = 2;
}
// 레벨과 경험치의 변화량
message LevelExpDeltaAmount
{
AmountDeltaType expDeltaType = 1;
int64 expAmount = 2;
int64 levelAmount = 3;
}
// 아이디별 경험치의 변화량
message LevelExpDeltaAmountById
{
//<MetaId, ExpDeltaAmount>
map<uint32, LevelExpDeltaAmount> deltasByMetaId = 1;
//<Guid, ExpDeltaAmount>
map<string, LevelExpDeltaAmount> deltasByGuid = 2;
}
// 레벨의 경험치 종류
enum LevelExpType
{
LevelExpType_None = 0;
LevelExpType_Item = 10; // 아이템 레벨
LevelExpType_SeasonPass = 20; // 시즌 패스 레벨
}
// 외형 커스터마이징 : 패킷용
message AppearanceCustomization
{
int32 basicStyle = 1;
int32 bodyShape = 2;
int32 hairStyle = 3;
repeated int32 customValues = 5;
}
// 외형 프로필 : 패킷용
message AppearanceProfile
{
// 클라이언트가 설정한 임의의 값 !!!, Key & Value 각각 최대 길이 제한 설정 및 방어 로직 필요 !!!, 서버에서 참조 필요시 설정값을 proto 파일에 추가 필요 !!! (Key & Value: Json 가능)
map<string, string> values = 1;
}
// 능력치 정보 : 패킷용
message AbilityInfo
{
// <AttributeType, 능력치>
map<int32, int32> values = 1;
}
message Buff
{
int32 buffId = 1;
google.protobuf.Timestamp buffStartTime = 2;
}
// map이 Unreal에서 컴파일 에러발생으로 repeated로 변경
message BuffInfo
{
repeated Buff buff = 1; //:Buff
}
message AvatarInfo
{
int32 avatar_id = 1; // 사용하지 않음
// 서버 삭제 완료 !!! => 클라이언트 삭제 필요 - kangms
//uint32 BASICSTYLE = 2;
//uint32 BODYSHAPE = 3;
//uint32 HAIRSTYLE = 4;
//repeated int32 customValue = 5;
AppearanceCustomization appearCustomize = 7;
uint32 Init = 6; // 1: 커스터마이징화면 필요 0: 필요없음.
}
message ClothInfo
{
string cloth_avatar_itemGuid = 1;
string cloth_headwear_itemGuid = 2;
string cloth_mask_itemGuid = 3;
string cloth_bag_itemGuid = 4;
string cloth_shoes_itemGuid = 5;
string cloth_outer_itemGuid = 6;
string cloth_tops_itemGuid = 7;
string cloth_bottoms_itemGuid = 8;
string cloth_gloves_itemGuid = 9;
string cloth_earrings_itemGuid = 10;
string cloth_neckless_itemGuid = 11;
string cloth_socks_itemGuid = 12;
uint32 cloth_avatar = 13;
uint32 cloth_headwear = 14;
uint32 cloth_mask = 15;
uint32 cloth_bag = 16;
uint32 cloth_shoes = 17;
uint32 cloth_outer = 18;
uint32 cloth_tops = 19;
uint32 cloth_bottoms = 20;
uint32 cloth_gloves = 21;
uint32 cloth_earrings = 22;
uint32 cloth_neckless = 23;
uint32 cloth_socks = 24;
}
message ClothInfoOfAnotherUser
{
uint32 cloth_avatar = 1;
uint32 cloth_headwear = 2;
uint32 cloth_mask = 3;
uint32 cloth_bag = 4;
uint32 cloth_shoes = 5;
uint32 cloth_outer = 6;
uint32 cloth_tops = 7;
uint32 cloth_bottoms = 8;
uint32 cloth_gloves = 9;
uint32 cloth_earrings = 10;
uint32 cloth_neckless = 11;
uint32 cloth_socks = 12;
}
message CartItemInfo
{
string itemGuid = 1;
int32 itemId = 2;
int32 count = 3;
string buyType = 4;
}
message EquipInfo
{
string toolItemGuid = 1;
int32 toolItemId = 2;
int32 toolItemStep = 3;
int32 toolItemRandomState = 4;
int64 actionStartTime = 5;
}
message TattooInfo
{
int32 ItemId = 1;
int32 level = 2;
repeated int32 attributeids = 3;
}
message TattooSlotInfo
{
TattooInfo ItemInfo = 1;
int32 isVisible = 2;
}
message MyTattooSlotInfo
{
string ItemGuid = 1;
int32 isVisible = 2;
}
message AttributeInfo
{
int32 attributeid = 1;
int32 value = 2;
}
message Inventory
{
repeated Item etcItem = 1;
repeated Item costumeItem = 2;
repeated Item interiorItem = 3;
repeated Item beautyItem = 4;
repeated Item tattooItem = 5;
repeated Item etcItemNft = 6;
repeated Item costumeItemNft = 7;
repeated Item interiorItemNft = 8;
repeated Item beautyItemNft = 9;
repeated Item tattooItemNft = 10;
}
message CharInfo
{
int32 level = 1;
int64 exp = 2;
double gold = 3;
double sapphire = 4;
double calium = 5;
double beam = 6;
double ruby = 7;
string usergroup = 8;
int32 operator = 9;
string displayName = 10;
int32 languageInfo = 11;
int32 isIntroComplete = 12;
}
message CharPos
{
int32 map_id = 1;
Pos pos = 2;
}
message GameCharacter
{
string name = 1; // 추후 Id로 변경예정
string guid = 2;
CharInfo charInfo =3;
EquipInfo equipInfo = 4;
AvatarInfo avatarInfo = 5;
ClothInfo clothInfo = 6;
CharPos charPos= 7;
Inventory inventory = 8;
repeated string toolSlot = 9;
repeated int32 SlotCount = 10;
ChannelInfo channelInfo = 12;
repeated MyTattooSlotInfo tattooInfoList = 13;
}
// 플레이어 정보 : MS5 이후에 체계적으로 수정 하자 - kangms
message GameActor
{
string actorGuid = 1;
string name = 2;
AvatarInfo avatarInfo = 3;
ClothInfoOfAnotherUser clothInfo = 4;
EquipInfo equipInfo = 5;
Pos pos = 6;
repeated TattooSlotInfo tattooInfoList = 7;
BuffInfo BuffInfo = 11;
string usergroup = 12;
int32 operator = 13;
string displayName = 14;
string occupiedAnchorGuid = 15;
int32 state = 16;
int32 hostId = 17;
EntityStateInfo entityStateInfo = 21;
}
// 엔티티의 상태 정보, GameActor 정보 리뉴얼전에 임시로 사용한다 - kangms
message EntityStateInfo
{
EntityStateType stateType = 21; //EntityStateType 참조 (UsingByCrafting, UsingByFarming, UsingByMyHome)
string anchorMetaGuid = 22; //Map내에 있는 Anchor Meta Guid
int32 metaIdOfStateType = 23; //stateType에 해당하는 Meta 테이블의 Meta Id (UsingByFarming:FarmingPropMetaId, UsingByCrafting:?)
}
// Attribute 종류 : AttributeDefinitionData.xlsx 파일 확인
enum AttributeType
{
AttributeType_None = 0;
AttributeType_Rapidity = 1;
AttributeType_Elasticity = 2;
AttributeType_Acceleration = 3;
AttributeType_Endurance = 4;
AttributeType_Intelligence = 5;
AttributeType_Wits = 6;
AttributeType_Charisma = 7;
AttributeType_Manipulation = 8;
AttributeType_Perception = 9;
AttributeType_Strength = 10;
AttributeType_Hacking = 11;
AttributeType_Gathering = 12;
AttributeType_Cooking = 13;
AttributeType_Tailoring = 14;
}
message PropInfo
{
string anchorGuid = 1;
string owner = 2;
string occupiedActorGuid = 3;
int32 tableId = 4;
string itemGuid = 5;
repeated int32 mannequins = 6;
int32 isUsable = 7;
google.protobuf.Timestamp startTime = 11;
google.protobuf.Timestamp endTime = 12;
google.protobuf.Timestamp respawnTime = 13;
}
message SlotInfo
{
int32 slot = 1;
int32 id = 2;
}
message LandInfo
{
int32 landMetaId = 1;
string landName = 2;
string landDescription = 3;
string ownerUserGuid = 4;
string ownerUserNickname = 5;
}
message BuildingInfo
{
int32 buildingMetaId = 1;
string buildingName = 2;
string buildingDescription = 3;
string ownerUserGuid = 4;
string ownerUserNickname = 5;
CurrencyType rentalCurrencyType = 6;
double rentalCurrencyAmount = 7;
int32 rentalFloorCount = 8;
BoolType isRentalOpen = 9;
}
message BuildingFloorInfo
{
int32 floor = 2;
string instanceName = 3;
string renteeUserGuid = 4;
string renteeUserNickname = 5;
google.protobuf.Timestamp rentalFinishTime = 6;
}
message LandLinkedInfo
{
int32 landId = 1;
map<int32, FloorLinkedInfo> FloorLinkedInfos = 2;
}
message FloorLinkedInfo
{
repeated string ugcNpcGuids = 1;
}
message RoomInfo
{
int32 id = 1;
string owner = 2;
string name = 3;
string description = 4;
repeated PropInfo propList = 6;
}
message ElevatorFloorInfo
{
int32 floor = 1;
int32 instanceId = 2;
int32 currentUser = 3;
string ownerName = 4;
string instanceName = 5;
int32 thumbnailImageId = 6;
int32 listImageId = 7;
int32 enterPlayerCount = 8;
}
message MyHomeObjectSlotInfo
{
int32 slotNum = 1;
int32 objectId = 2;
}
enum ModifyType
{
ModifyType_None = 0;
ModifyType_Add = 1;
ModifyType_Delete = 2;
ModifyType_Modify = 3;
}
message ModifyFloorLinkedInfo
{
ModifyType modifyType = 1;
int32 landId = 2;
int32 buildingId = 3;
int32 floor = 4;
FloorLinkedInfo floorLinkedInfo = 5;
}
// 채팅 종류
enum ChatType
{
ChatType_None = 0;
ChatType_Normal = 1; // 일반/지역
ChatType_Channel = 2; // 채널/서버
ChatType_Whisper = 3; // 귓속말
ChatType_Total = 4; // 전체(확성기)
ChatType_Party = 5; // 파티
ChatType_Notice = 10; // 알림
ChatType_NoticeToast = 11; // 알림 + 토스트
ChatType_System = 12; // 시스템 메시지 - 클라에서만 사용
}
message MailItem
{
int32 itemId = 1;
double count = 2;
}
message MailInfo
{
string MailKey = 1;
int32 isRead = 2;
int32 isGetItem = 3;
string nickName = 4;
string title = 5;
string text = 6;
google.protobuf.Timestamp createTime = 7;
google.protobuf.Timestamp expireTime = 8;
int32 isSystemMail = 9;
int32 mailType = 10;
BoolType isTextByMetaData = 11;
repeated MailItem itemList = 12;
string guid = 13;
BoolType isPermanentMail = 14;
repeated string contentsArguments = 15; // isTextByMetaData == true 일때 TextString.SourceString에 {index} ... 에 넘겨주기 위한 바인딩할 데이터 목록
}
// 엔티티에 배치되어 있는 인스턴스 정보 : 추가
message LocatedInstanceContext
{
int32 locatedinstanceMetaId = 1; // 배치된 InstanceMetaId, InstanceData.xlsx 참조
google.protobuf.Timestamp locatedTime = 11; // 배치된 시간
}
message QuestMailInfo
{
int32 isRead = 1;
int64 composedQuestId = 2;
google.protobuf.Timestamp createTime = 3;
}
message FriendInfo
{
string guid = 1;
string nickName = 2;
string folderName = 3;
int32 isNew = 4;
}
message FriendNickNameInfo
{
string targetGuid = 1;
string targetNickName = 2;
}
message QuestInfo
{
int64 composedQuestId = 1;
google.protobuf.Timestamp questAssignTime = 2;
int32 currentTaskNum = 3;
google.protobuf.Timestamp taskStartTime = 4;
google.protobuf.Timestamp questCompleteTime = 5;
repeated int32 activeIdxList = 6; //activeEvents로 변환후 에 문제 없을때 삭제 처리
int32 hasCounter = 7;
int32 minCounter = 8;
int32 maxCounter = 9;
int32 currentCounter = 10;
int32 isComplete = 11;
int32 replacedRewardGroupId = 12;
int32 hasTimer = 13;
google.protobuf.Timestamp timerCompleteTime = 14;
repeated string activeEvents = 15;
//int32 questRevision = 16; //int 64로 바꿨으니 이건 필요 없다.
}
message QuestMetaInfo
{
int32 index = 1;
int64 composedQuestId = 2;
string eventTarget = 3;
string eventName = 4;
string eventCondition1 = 5;
string eventCondition2 = 6;
string eventCondition3 = 7;
string functionTarget = 8;
string functionName = 9;
string functionCondition1 = 10;
string functionCondition2 = 11;
string functionCondition3 = 12;
}
message QuestAssignMetaInfo
{
int64 composedQuestId = 1;
string questType = 2;
int32 reveal = 3;
string questName = 4;
string assignType = 5;
string requirementType = 6;
uint32 requirementValue = 7;
int32 forceAccept = 8;
string mailTitle = 9;
string mailSender = 10;
string mailDesc = 11;
string dialogue = 12;
string dialogueResult = 13;
int32 rewardGroupId = 14;
int32 priority = 15;
}
message QuestTaskMetaInfo
{
int32 idx = 1;
int64 composedQuestId = 2;
int32 taskNum = 3;
string taskName = 4;
string taskCondition = 5;
string taskConditionDesc = 6;
int32 setCounter = 7;
int32 worldId = 8;
}
message QuestEndInfo
{
int64 composedQuestId = 1;
int32 endCount = 2;
google.protobuf.Timestamp lastEndTime = 3;
//int32 questRevision = 4;
}
message BlockInfo
{
string guid = 1;
string nickName = 2;
int32 isNew = 3;
google.protobuf.Timestamp createTime = 4;
}
message FriendFolder
{
string folderName = 1;
int32 isHold = 2;
google.protobuf.Timestamp holdTime = 3;
google.protobuf.Timestamp createTime = 4;
}
message FriendRequestInfo
{
string guid = 1;
string nickName = 2;
int32 isNew = 3;
google.protobuf.Timestamp requestTime = 4;
}
message FriendErrorMember
{
ServerErrorCode errorCode = 1;
string guid = 2;
}
message ClaimEventActiveInfo
{
int32 activeRewardIdx = 1;
int32 isComplete = 2;
int64 rewardRemainSecond = 3;
}
message InvitePartyErrorMember
{
ServerErrorCode errorCode = 1;
string inviteUserNickname = 2;
string inviteUserGuid = 3;
}
message InvitePartyState
{
string invitePartyGuid = 1;
string invitePartyLeaderNickname = 2;
string invitePartyLeaderGuid = 3;
int32 currentPartyMemberCount = 4;
google.protobuf.Timestamp endTime = 5;
}
message InvitePartySendState
{
string inviteUserNickname = 1;
string inviteUserGuid = 2;
google.protobuf.Timestamp endTime = 3;
}
message PartyState
{
string partyName = 1;
string partyLeaderNickname = 2;
repeated string partyMemberList = 3;
}
message PartyMemberState
{
string memberGuid = 1;
string memberNickname = 2;
int32 markId = 3;
Pos pos = 4;
UserLocationInfo locationInfo = 5;
}
message ShopItemInfo
{
int32 ProductID = 1;
double LeftCount = 2;
}
message ShopPacketInfo
{
repeated ShopItemInfo ShopItemList = 1;
int32 LeftTimeAsSecond = 2;
int32 maxRenewalCount = 3;
int32 currentRenewalCount = 4;
}
message SelledItem
{
string ItemGuid = 1;
int32 ItemId = 2;
int32 Count = 3;
}
message ItemGuidCount
{
string ItemGuid = 1;
int32 ItemCount = 2;
}
message TattooRagisterInfo
{
string itemGuid = 1;
int32 slotIndex = 2;
}
// 인벤토리 종류 : 보관
enum InvenBagType
{
InvenBagType_None = 0;
InvenBagType_Cloth = 1; //의상 보관
InvenBagType_Prop = 2; //프랍 보관
InvenBagType_Beauty = 3; //미용 보관
InvenBagType_Tattoo = 4; //타투 보관
InvenBagType_Etc = 5; //기타 보관
}
// 인벤토리 종류 : 장착
enum InvenEquipType
{
InvenEquipType_None = 0;
InvenEquipType_Cloth = 1; //의상 장착
InvenEquipType_Tool = 2; //도구 장착
InvenEquipType_Tattoo = 3; //타투 장착
}
// 아이템 : 패킷용
message Item
{
string itemGuid = 1;
int32 itemId = 2;
google.protobuf.Timestamp createTime = 3;
google.protobuf.Timestamp updateTime = 4;
int32 count = 5;
int32 slot = 6; // Bag : 1부터 ~, Equip : 0부터 ~
int32 level = 7;
repeated int32 attributeids = 8;
}
// 아이템의 크기
message ItemAmount
{
uint32 metaId = 1; // 아이템 메타 id
int32 amount = 2; // 수량
}
// 아이템의 변화량
message ItemDeltaAmount
{
AmountDeltaType deltaType = 1;
ItemAmount delta = 2;
}
// 인벤토리내의 아이템 변동 내용 : 패킷용
message ItemResult
{
// <ITEM_GUID, Item> : 갱신된 아이템 목록
map<string, Item> updatedItems = 1;
// <ITEM_GUID, Item> : 신규 생성된 아이템 목록
map<string, Item> newItems = 2;
// ITEM_GUID : 삭제된 아이템 목록
repeated string deletedItems = 3;
// <ITEM_META_ID, ItemDeltaAmount> : 아이템 메타별 변화량 목록
map<uint32, ItemDeltaAmount> deltaPerMeta = 4;
// <ITEM_GUID, DeltaCount> : 수량이 변경된 아이템 목록(삭제는 제외), 양수는 증가, 음수는 감소
map<string, int32> deltaPerItems = 5;
}
// 금전 변동 내용 : 패킷용
message MoneyResult
{
// <CurrencyType, Money> : 최종값
map<int32, Money> moneys = 1;
// <CurrencyType, MoneyDeltaAmount> : 변화량
map<int32, MoneyDeltaAmount> deltas = 2;
}
// 경험치 및 레벨 변동 내용 : 패킷용
message ExpResult
{
// <LevelExpType, LevelExpById> : Id별 최종값, 업데이트 레벨/경험치
map<int32, LevelExpById> levelExps = 1;
// <LevelExpType, ExpDeltaAmountById> : Id별 레벨/경험치 변화량
map<int32, LevelExpDeltaAmountById> levelExpDeltas = 2;
}
// 주요 정보별 결과 내용
message EntityCommonResult
{
EntityType entityType = 1; // 소유자의 엔티티 종류 : EntityType 참조 (적용: EntityType.Player, EntityType.UgcNpc)
string entityGuid = 2; // 소유자 엔티티의 Guid : EntityGuid
MoneyResult money = 5; // 금전
ExpResult exp = 6; // 업데이트 레벨/경험치
ItemResult item = 11; // 아이템
}
// 주요 정보별 결과 내용 : 패킷용
message CommonResult
{
repeated EntityCommonResult entityCommonResults = 1; // 소유자별 EntityCommonResult 정보 목록
}
enum SummonPartyMemberResultType
{
SummonPartyMemberResultType_None = 0;
SummonPartyMemberResultType_Accept = 1;
SummonPartyMemberResultType_Refuse = 2;
SummonPartyMemberResultType_DoNotDisturb = 3;
SummonPartyMemberResultType_LogOut = 4;
SummonPartyMemberResultType_LeaveParty = 5;
SummonPartyMemberResultType_NotParty = 6;
SummonPartyMemberResultType_ServerFull = 7;
SummonPartyMemberResultType_SummonFail = 8;
SummonPartyMemberResultType_NotSummon = 9;
SummonPartyMemberResultType_NotPartyMember = 10;
}
// 메일 종류
enum MailType
{
MailType_None = 0;
MailType_ReceivedMail = 1; // 받은 메일
MailType_SentMail = 2; // 보낸 메일
}
// 파티 투표 응답 타입
enum VoteType
{
VoteType_None = 0;
VoteType_Agreement = 1; // 찬성
VoteType_DisAgreement = 2; // 반대
VoteType_Abstain = 3; // 기권
}
message CraftInfo
{
string anchor_guid = 1;
int32 craftMetaId = 2;
google.protobuf.Timestamp craftStartTime = 3;
google.protobuf.Timestamp craftFinishTime = 4;
string beaconGuid = 5;
int32 craftCount = 6;
}
// EntityType.Beacon 메타 요약 : 추후 Beacon 으로 수정 한다. - kangms
message UgcNpcSummary
{
string ugcNpcMetaGuid = 1; // Ugc Npc Meta Id (GUID)
string ownerUserGuid = 2; // Ugc Npc Meta 정보의 소유자의 UserGuid
int32 bodyItemMetaId = 3; // ItemData.xlsx 참조
string title = 4; // 타이틀
string nickname = 5; // Ugc Npc 닉네임
string greeting = 6; // 인사말
string introduction = 7; // 자기소개
AbilityInfo abilities = 8; // 보유 능력치들, Game_Define.AbilityInfo 참조
repeated int32 hashTagMetaIds = 20; // 태그 목록 (검색용), BeaconTagData.xlsx 참조
EntityStateInfo entityStateInfo = 21; // 엔티티의 상태 정보
string description = 31; // 캐릭터 설명
string worldScenario = 32; // 세계관
int32 defaultSocialActionId = 33; // 기본 SocialAction Meta Id
repeated int32 habitSocialActionIds = 34; // 자주 사용하는 SocialAction Meta Id 목록
repeated int32 dialogueSocialActionIds = 35; // 대화중 기본 SocialAction Meta Id 목록
AppearanceCustomization appearCustomize = 41; // 외형 커스터마이징
LocatedInstanceContext locatedInstanceContext = 51; // 현재 접속중인 인스턴스 정보 <= 추가
BoolType hasBeaconShopItem = 61; // 비컨샵 아이템 등록 유무
BoolType hasReceivePayment = 62; // 비컨샵 남은정산 유무
google.protobuf.Timestamp createdTime = 101; // 비컨 생성 DateTime
}
// EntityType.Beacon 간소한 요약 : 추후 Beacon 으로 수정 한다. - kangms
message UgcNpcCompact
{
string ugcNpcMetaGuid = 1; // Ugc Npc Meta Id (GUID)
string ownerUserGuid = 2; // Ugc Npc Meta 정보의 소유자의 UserGuid
int32 bodyItemMetaId = 3; // ItemData.xlsx 참조
string title = 4; // 타이틀
string nickname = 5; // Ugc Npc 닉네임
EntityStateInfo entityStateInfo = 21; // 엔티티의 상태 정보
LocatedInstanceContext locatedInstanceContext = 41; // 현재 접속중인 인스턴스 정보
google.protobuf.Timestamp createdTime = 101; // 비컨 생성 DateTime
}
// UGC NPC 보유 아이템
message UgcNpcItems
{
// <ITEM_GUID, Item>
map<string, Item> hasItems = 1; // 보유 Item들의 정보
// <TattooSlotType, TattooSlotInfo>
map<int32, TattooSlotInfo > hasTattooInfos = 5; // 보유 타투들의 Visible 정보
}
// EntityType.Beacon 외형 : 추후 Beacon 으로 수정 한다. - kangms
message UgcNpcAppearance
{
string ugcNpcMetaGuid = 1; // Ugc Npc Meta Id (GUID)
string ownerUserGuid = 2; // Ugc Npc Meta 정보의 소유자의 UserGuid
int32 bodyItemMetaId = 3; // ItemData.xlsx 참조
string title = 4; // 타이틀
string nickname = 5; // Ugc Npc 닉네임
AppearanceCustomization appearCustomize = 6; // 커스터마이징
AbilityInfo abilities = 11; // 보유 능력치들, Game_Define.AbilityInfo 참조
UgcNpcItems hasItems = 15; // 보유 아이템들
EntityStateInfo entityStateInfo = 21; // 엔티티의 상태 정보
int32 defaultSocialActionId = 31; // 기본 SocialAction Meta Id
repeated int32 habitSocialActionIds = 32; // 자주 사용하는 SocialAction Meta Id 목록
repeated int32 dialogueSocialActionIds = 33; // 대화중 기본 SocialAction Meta Id 목록
BoolType hasBeaconShopItem = 41; // 비컨샵 아이템 등록 유무
}
// EntityType.Beacon 엔티티 : 추후 Beacon 으로 수정 한다. - kangms
message UgcNpcEntity
{
string entityInstantGuid = 1; // 인스턴스내에 엔티티의 휘발성(Instant) Guid
Pos CurrentPos = 2; // 현재의 위치
UgcNpcAppearance ugcNpcAppearance = 5; // UgcNpc.Beacon 외형 정보
}
message UgcNpcRank
{
int32 rank = 1; // 현재 순위
string title = 2; // ugc npc 타이틀
string npcNickname = 3; // ugc npc 닉네임
string ugcNpcMetaGuid = 4; // ugc npc meta guid
int32 bodyItemMetaId = 5; // ugc npc body meta Id
string ownerUserNickname = 6; // 소유주 닉네임
string ownerUserGuid = 7; // 소유주 UserGuid
int32 score = 8; // ranking 지표
}
enum UgcNpcRankState
{
UgcNpcRankState_None = 0;
UgcNpcRankState_Trend = 1; // 트랜드
UgcNpcRankState_Total = 2; // 총 누적
}
enum UgcNpcRankType
{
UgcNpcRankType_None = 0;
UgcNpcRankType_Like = 1; // Like 순
UgcNpcRankType_Communication = 2; // 대화 순
UgcNpcRankType_Quest = 3; // UGQ 완료 순
}
// EntityType.Beacon 상호작용 : 추후 Beacon 으로 수정 한다. - kangms
message UgcNpcInteraction
{
string ugcNpcMetaGuid = 1; // Ugc Npc Meta Id (GUID)
string ownerUserGuid = 2; // Ugc Npc Meta 정보의 소유자의 UserGuid
BoolType IsCheckLikeFlag = 5; // Ugc Npc 좋아요 체크/해제 여부(true: 체크, false: 체크해제)
}
enum UgqStateType
{
UgqStateType_None = 0; // None 인경우 시스템 퀘스트를 의미
UgqStateType_Test = 1; // Ugq Test 상태의 퀘스트를 의미
UgqStateType_Live = 2; // Ugq Live 상태의 퀘스트를 의미
UgqStateType_Shutdown = 3; // Ugq Shutdown 상태
UgqStateType_RevisionChanged = 4; // Ugq 리비전이 변경됨
UgqStateType_Standby = 5; // 라이브에서 개시 해제
}
// UGQ 검색 카테고리 별 타입
enum UgqSearchCategoryType
{
UgqSearchCategoryType_None = 0;
UgqSearchCategoryType_SpotLight = 1; //일, 주 월간 좋아요 최대, 북마크 최대 달성한 UGQ 조회
UgqSearchCategoryType_GradeAmateur = 2;
UgqSearchCategoryType_GradeRisingStar = 3;
UgqSearchCategoryType_GradeMaster = 4;
UgqSearchCategoryType_Bookmark = 5; //북마크 많은 순
}
enum UgqUICategoryGradeType
{
UgqUICategoryGradeType_None = 0;
UgqUICategoryGradeType_Amateur = 1;
UgqUICategoryGradeType_RisingStar = 2;
UgqUICategoryGradeType_Master = 3;
}
// UGQ 사용자 등급
enum UgqGradeType
{
UgqGradeType_None = 0;
UgqGradeType_Amature = 1;
UgqGradeType_RisingStar = 2;
UgqGradeType_Master1 = 3;
UgqGradeType_Master2 = 4;
UgqGradeType_Master3 = 5;
}
// UGQ 게시판 정렬 타입
enum UgqSortType
{
UgqSortType_None = 0;
UgqSortType_New = 1; //신규
UgqSortType_Like = 2; //좋아요 많은 순
UgqSortType_Bookmark = 3; //북마크 많은 순
}
enum UgqSearchType
{
UgqSearchType_None = 0;
UgqSearchType_Title = 1;
UgqSearchType_Beacon = 2;
}
//message UgqQuestId
//{
// int2 questId = 1;
// int32 questRevision = 2;
//}
message UgqCurrentState
{
//UgqQuestId ugqQuestId = 1;
int64 composedQuestId = 1;
UgqStateType ugqState = 2;
}
message UgqQuestInTestState
{
//UgqQuestId ugqQuestId = 1;
int64 composedQuestId = 1;
optional string title = 2;
optional string titleImagePath = 3;
}
message UgqBoardItem
{
//UgqQuestId ugqQuestId = 1;
int64 composedQuestId = 1;
optional string title = 2;
optional string titleImagePath = 3;
int32 likeCount = 4;
int32 bookmarkCount = 5;
optional string author = 6;
UgqGradeType gradeType = 7;
int32 cost = 8;
}
message UgqBoardItemDetail
{
//UgqQuestId ugqQuestId = 1;
int64 composedQuestId = 1;
optional string title = 2;
optional string titleImagePath = 3;
int32 likeCount = 4;
int32 bookmarkCount = 5;
optional string author = 6;
optional string description = 7;
repeated string langs = 8;
optional string beacon = 9;//NPC 닉네밍
BoolType liked = 10;
BoolType bookmarked = 11;
UgqGradeType gradeType = 12;
int32 cost = 13;
int32 acceptCount = 14;
int32 completeCount = 15;
}
message UgqGameTextDataForClient
{
optional string kr = 1;
optional string en = 2;
optional string jp = 3;
}
message UgqGameTaskDataForClient
{
int32 taskNum = 1;
UgqGameTextDataForClient goalText = 2;
optional string dialogueId = 3;
string ugcBeaconGuid = 4;
string ugcBeaconNickname = 5;
int32 ActionId = 6;
int32 ActionValue = 7;
BoolType IsShowNpcLocation = 8;
}
enum UgqDialogueTalker
{
Player = 0;
Npc = 1;
}
message UgqDialogSequenceAction
{
string contition = 1;
int32 actionType = 2;
int32 subType = 3;
int32 actionNumber = 4;
int32 actionIndex = 5;
UgqDialogueTalker talker = 6;
UgqGameTextDataForClient talk = 7;
int32 isDialogue = 8;
int32 NpcAction = 9;
}
message UgqDialogueSequences
{
int32 sequenceId = 1;
repeated UgqDialogSequenceAction actions = 2;
}
message UgqDialogueReturns
{
int32 actionIndex = 1;
int32 returnIdx = 2;
}
message UgqGameQuestDialogue
{
string dialogueId = 1;
repeated UgqDialogueSequences sequences = 2;
repeated UgqDialogueReturns returns = 3;
}
message UgqGameQuestDataForClient
{
int64 composedQuestId = 1;
string author = 2;
string authorGuid = 3;
int32 beaconId = 4;
string ugcBeaconGuid = 5;
string ugcBeaconNickname = 6;
UgqGameTextDataForClient title = 7;
repeated UgqGameTaskDataForClient task = 8;
repeated UgqGameQuestDialogue dialogues = 9;
UgqStateType ugqStateType = 10;
UgqGradeType ugqGradeType = 11;
}
message UgqDailyRewardCount
{
UgqGradeType gradeType = 1;
int32 dailyMaxCount = 2;
int32 currentCount = 3;
}
message UgqBoardSearchResult
{
int32 pageNumber = 1;
int32 pageSize = 2;
int32 totalPages = 3;
repeated UgqBoardItem items = 4;
}
message DateRangeUgqBoardItem
{
optional UgqBoardItem today = 1;
optional UgqBoardItem thisWeek = 2;
optional UgqBoardItem thisMonth = 3;
}
message UgqBoardSportlightResult
{
DateRangeUgqBoardItem mostLiked = 1;
DateRangeUgqBoardItem mostBookmarked = 2;
}
enum ShopBuyType
{
ShopBuyType_None = 0;
ShopBuyType_Currency = 1;
ShopBuyType_Item = 2;
}
enum GameNpcPlayType
{
GameNpcPlayType_None = 0;
}
message UgqNpcInfo
{
string npcMetaGuid = 1;
string ownerGuid = 2;
int32 ownerEntityType = 3; //None = 0, User = 1, Character = 2, UgcNpc = 3
string nickname = 4;
string title = 5;
string greeting = 6;
string introduction = 7;
string description = 8;
string worldScenario = 9;
uint32 defaultSocialActionMetaId = 10;
repeated uint32 habitSocialActionMetaIds = 11;
repeated uint32 DialogueSocialActionMetaIds = 12;
uint32 bodyItemMetaId = 13;
repeated uint32 hashTagMetaIds = 14;
EntityStateType state = 15;
BoolType isRegisteredAiChatServer = 16;
}
message AllUgqInfos
{
repeated QuestInfo quests = 1;
repeated QuestMetaInfo questMetaInfos = 2;
repeated UgqGameQuestDataForClient ugqGameQuestDataForClients = 3;//대화 정보, 타이틀 정보
}
message UgqGameQuestDataSimple
{
int64 composedQuestId = 1;
int32 revision = 2;
string userGuid = 3;
string author = 4;
UgqGradeType gradeType = 5;
string state = 6;
int32 cost = 7;
BoolType shutdown = 8;
}
//=================================================================================================
// 파밍 관련 - kangms
//=================================================================================================
// 파밍 소환 엔티티의 종류
enum FarmingSummonedEntityType
{
FarmingSummonedEntityType_None = 0;
FarmingSummonedEntityType_User = 1; //파밍을 위해 유저를 소환
FarmingSummonedEntityType_Beacon = 2; //파밍을 위해 비컨을 소환
}
// 파밍 상태
enum FarmingStateType
{
FarmingStateType_None = 0;
FarmingStateType_StandBy = 1;
FarmingStateType_Progress = 2;
FarmingStateType_CoolingTime = 3;
}
// 파밍 프랍 요약
message FarmingSummary
{
string farmingAnchorMetaId = 1; //MapMetaData에 있는 파밍 Anchor Id
int32 farmingPropMetaId = 2; //FarmingPropMeta Id
string farmingUserGuid = 5; //파밍을 진행한 UserGuid
FarmingSummonedEntityType farmingSummonType = 6; //파밍을 위해 소환된 엔티티의 종류
string farmingEntityGuid = 7; //파밍을 위해 소환된 엔티티의 식별키 (FarmingSummonedEntityType.User: UserGuid, FarmingSummonedEntityType.Beacon: UgcNpcMetaGuid)
FarmingStateType farmingState = 11; //파밍 상태
google.protobuf.Timestamp startTime = 21; //시작된 시각 : 시작된 시각 or 최소 시각
google.protobuf.Timestamp endTime = 22; //종료될 시각 : 시작된 시간이 있는 경우에만 종료될 시각이 설정 or 최소시각
}
// 소유 종류
enum OwnedType
{
OwnedType_None = 0;
OwnedType_Own = 1; // 소유중
OwnedType_Rent = 2; // 임차중
}
message RentalLandInfo
{
int32 landId = 1;
int32 buildingId = 2;
int32 rentalCount = 3;
}
message RentalFloorInfo
{
int32 floor = 1;
string instanceName = 2;
}
message OwnedRentalInfo
{
int32 landId = 1;
int32 buildingId = 2;
int32 floor = 3;
string myhomeGuid = 4;
google.protobuf.Timestamp rentalFinishTime = 5;
}
message ModifyOwnedRentalInfo
{
ModifyType modifyType = 1;
OwnedRentalInfo ownedRentalInfo = 2;
}
message RentFloorRequestInfo
{
int32 landId = 1;
int32 buildingId = 2;
int32 floor = 3;
string ownerGuid = 4;
string myhomeGuid = 5;
string instanceName = 6;
int32 thumbnailImageId = 7;
int32 listImageId = 8;
int32 enterPlayerCount = 9;
int32 rentalPeriod = 10;
google.protobuf.Timestamp rentalStartTime = 11;
google.protobuf.Timestamp rentalFinishTime = 12;
}
message OperationSystemMessage
{
LanguageType languageType = 1;
string text = 2;
}
message MeetingRoomInfo
{
int32 screenPageNo = 1; // 스크린 페이지 넘버 : 최초 - 0
}
message FloorProfitInfo
{
// <CurrencyType, Money>
map<int32, Money> profits = 1;
}
message BuildingRentalHistoryInfo
{
google.protobuf.Timestamp historyDate = 1;
string userGuid = 2;
string userName = 3;
int32 rentalPeriod = 4;
int32 floor = 5;
}
message BuildingProfitHistoryInfo
{
google.protobuf.Timestamp historyDate = 1;
int32 floor = 2;
ProfitHistoryType profitHistoryType = 3;
FloorProfitInfo floorProfit = 4;
}
enum ProfitHistoryType
{
ProfitHistoryType_None = 0;
ProfitHistoryType_Stack = 1;
ProfitHistoryType_Gain = 2;
}
message BannerInfo
{
int32 bannerId = 1;
BannerType bannerType = 2;
google.protobuf.Timestamp startTime = 3;
google.protobuf.Timestamp endTime = 4;
int32 orderId = 5;
map<int32, string> imageUrl = 6; // Key : LanguageType
map<int32, string> linkAddress = 7; // Key : LanguageType
}
message SortInfo
{
SortColumnType sortColumnType = 1;
SortType sortType = 2;
}
message RankingScheduleInfo
{
string rankingGuid = 1;
int32 rankingMetaId = 2;
int32 eventActionScoreGroupId = 3;
google.protobuf.Timestamp startTime = 4;
google.protobuf.Timestamp endTime = 5;
}
message RankInfo
{
string rankerGuid = 1;
EntityType rankerEntityType = 2;
string rankerName = 3;
int32 rankNum = 4;
int32 prevRankNum = 5;
int32 score = 6;
ScoreType scoreType = 7;
}
//=================================================================================================
// 랜드 경매 관련 - kangms
//=================================================================================================
// 랜드 경매 상태
enum LandAuctionState
{
LandAuctionState_None = 0; // 아무것도 아님
LandAuctionState_Waiting = 1; // 대기
LandAuctionState_Scheduled = 2; // 예약
LandAuctionState_Started = 3; // 시작된 후
LandAuctionState_Ended = 4; // 종료된 후
}
// 랜드 경매 결과
enum LandAuctionResult
{
LandAuctionResult_None = 0; // 아무것도 아님
LandAuctionResult_Successed = 1; // 낙찰 (정상 종료)
LandAuctionResult_Failed = 2; // 유찰 (정상 종료)
LandAuctionResult_Canceled = 3; // 취소 (비정상 종료)
}
// 랜드 경매 입찰 종류
enum LandAuctionBidType
{
LandAuctionBidType_None = 0; // 아무것도 아님
LandAuctionBidType_Normal = 1; // 일반 입찰
LandAuctionBidType_Blind = 2; // 블라인드 입찰
}
// 랜드 경매 입찰 호가 단위별 종류 (서버 비참조)
enum LandAuctionBidIncrementType
{
LandAuctionBidIncrementType_None = 0;
LandAuctionBidIncrementType_Low = 1; // 최고 입찰가 1 ~ 499 칼리움 일때 비컨 입찰 호가 => (GameConfigData.LandAuctionAskPriceLow 참조)
LandAuctionBidIncrementType_Mid = 2; // 최고 입찰가 500 ~ 999 칼리움 일때 비컨 입찰 호가 => (GameConfigData.LandAuctionAskPriceMid 참조)
LandAuctionBidIncrementType_High = 3; // 최고 입찰가 1000 ~ 칼리움 일때 비컨 입찰 호가 => (GameConfigData.LandAuctionAskPriceHigh 참조)
}
// 랜드 경매 간소한 요약
message LandAuctionCompact
{
int32 landMetaId = 1; // 경매 대상 LandData Meta Id
int32 auctionNumber = 2; // 경매 번호
google.protobuf.Timestamp auctionReservationNoticeStartTime = 3; // 경매 예약 공지 시작 시간
double highestBid = 5; // 최고 입찰가
string winningUserGuid = 6; // 경매 최고 입찰자 식별키
string winningUserNickname = 7; // 경매 최고 입찰자 닉네임
CurrencyType currencyType = 12; // 입찰 재화의 종류
google.protobuf.Timestamp auctionStartTime = 15; // 경매 시작 시간
google.protobuf.Timestamp auctionEndTime = 16; // 경매 종료 시간
LandAuctionState landAuctionState = 17; // 경매 상태
LandAuctionResult LandAuctionResult = 18; // 경매 결과
}
// 랜드 경매
message LandAuctionInfo
{
int32 landMetaId = 1; // 경매 대상 LandData Meta Id
int32 auctionNumber = 2; // 경매 번호
google.protobuf.Timestamp auctionReservationNoticeStartTime = 3; // 경매 예약 공지 시작 시간
double highestBid = 5; // 최고 입찰가
string winningUserGuid = 6; // 경매 최고 입찰자 식별키 (LandActionState.Ended 상태인 경우는 낙찰자)
string winningUserNickname = 7; // 경매 최고 입찰자 닉네임 (LandActionState.Ended 상태인 경우는 낙찰자)
double startingBid = 9; // 경매 시작가
CurrencyType currencyType = 12; // 입찰 재화의 종류
google.protobuf.Timestamp auctionStartTime = 15; // 경매 시작 시간
google.protobuf.Timestamp auctionEndTime = 16; // 경매 종료 시간
LandAuctionState landAuctionState = 17; // 경매 상태
LandAuctionResult LandAuctionResult = 18; // 경매 결과
BoolType isLandOwnerChanged = 22; // 랜드 소유권 변경 상태 (완료:true, 미완료:false)
}
// 랜드 경매 개요
message LandAuctionSummary
{
LandAuctionInfo landAuctionInfo = 1;
}
message SwitchingPropState
{
int32 switchingPropId = 1;
int32 propState = 2;
}
message BeaconShopInfo
{
string BeaconGuid = 1;
string ItemGuid = 2;
int32 ItemMetaid = 3;
google.protobuf.Timestamp SellingFinishTime = 4;
double PriceForUnit = 5;
int32 Amount = 6;
BoolType isActiveSelling = 7;
}
message BeaconShopItemBoardInfo
{
string ItemGuid = 1;
int32 ItemMetaid = 2;
string BeaconGuid = 3;
string BeaconNickName = 4;
string BeaconTitle = 5;
int32 BeaconBodyItemMetaId = 6;
double PriceForUnit = 7;
int32 Amount = 8;
string OwnerGuid = 9;
string OwnerNickName = 10;
string BeaconMyHomeGuid = 11;
google.protobuf.Timestamp SellingFinishTime = 12;
}
message BeaconShopSoldRecordInfo
{
string BeaconGuid = 1;
int32 ItemMetaid = 2;
string BuyerNickName = 3;
double PriceForUnit = 4;
int32 Amount = 5;
double SoldPrice = 6;
double TaxPrice = 7;
double GivenPrice = 8;
}
enum LargePacketProcess
{
LargePacketProcess_None = 0;
LargePacketProcess_Start = 1;
LargePacketProcess_Processing = 2;
LargePacketProcess_End = 3;
}
// 운영툴에서 설정한 월드이벤트 스케줄 정보
message WordEventSchedule {
int32 WorldEventId = 1; // 월드이벤트 아이디
google.protobuf.Timestamp startTime = 2; // 시작 시간
google.protobuf.Timestamp endTime = 3; // 종료 시간
int32 GlobalContributionPointMax = 4; // 월드이벤트 기여도 포인트 최대값
int32 GlobalEventActionScoreGroupId = 5; // EventActionScoreData 테이블의 GroupId (이벤트 행동 내용 정의)
int32 PersonalEventActionScoreGroupId = 6; // EventActionScoreData 테이블의 GroupId (이벤트 행동 내용 정의)
}
//=================================================================================================
// 전투 관련 - khlee
//=================================================================================================
enum BattleInstanceType
{
BattleInstanceType_None = 0;
BattleInstanceType_Normal = 1;
BattleInstanceType_Event = 2;
}
enum BattlePlayMode
{
BattlePlayMode_None = 0;
BattlePlayMode_PodCombat = 1;
}
enum PodCombatStateType
{
PodCombatStateType_None = 0;
PodCombatStateType_Active = 1;
PodCombatStateType_Possesion = 2;
PodCombatStateType_Dropped = 3;
PodCombatStateType_DeActive = 4;
}
//enum BattleRoundStateType
//{
// BattleRoundStateType_None = 0;
//
// BattleRoundStateType_Rounding = 1;
// BattleRoundStateType_RoundWait = 2;
// BattleRoundStateType_RoundEndAll = 3;
// BattleRoundStateType_Destroyed = 4;
//}
message BattlePodCombatState
{
string podCombatGuid = 1; //podCombat의 고유 guid
string ownerPodCombatStandGuid = 2; //생성되는 stand의 anchorguid
PodCombatStateType podCombatStateType = 3; //deactive, possesion, dropped
google.protobuf.Timestamp statechangeTime = 4; //podCombatStateType 가 바뀐 시간
Pos currentPos = 5; //pod 위치
string currentOwnerGuid = 6; //현재 pod를 들고 있는 player Guid
google.protobuf.Timestamp currentTime = 7; //podCombatNoti를 보내기 바로전 시간을 채워 넣는다.(싱크 확인용)
}
message BattleObjectInfo
{
string anchorGuid = 1;
BoolType isActive = 2;
}
message BattleEventInfo
{
int32 eventId = 1;
int32 gameModeId = 2;
int32 instanceId = 3;//추후 삭제 예정
google.protobuf.Timestamp startTime = 4;
google.protobuf.Timestamp endTime = 5;
int32 configDataId = 6; //추후 삭제 예정
int32 rewardGroupId = 7; //추후 삭제 예정
int32 hotTime = 8; //보상 배수
int32 roundCount = 9;//추후 삭제 예정
}
//=================================================================================================
// 전투 관련 - khlee
//=================================================================================================
message GameModeObjectInfo
{
string anchorGuid = 1;
BoolType isActive = 2;
}
message GameModePlayerPositionInfo
{
string respawnUserGuid = 1;
Pos pos = 2;
string anchorGuid = 3;
}
enum GameModeState
{
GameModeState_None = 0;
GameModeState_Loading = 1;
GameModeState_Created = 2;
GameModeState_Destroyed = 3;
GameModeState_LoadingWait = 11;
GameModeState_Wait = 12;
GameModeState_Ready = 13;
GameModeState_Play = 14;
GameModeState_Result = 15;
GameModeState_RewardSummary = 16;
GameModeState_End = 17;
//TPS FFA 현재 FFA에서 사용중
GameModeState_Rounding = 31;
GameModeState_RoundWait = 32;
GameModeState_RoundEndAll = 33;
GameModeState_EventEnd = 34;
}
enum GameModePlayerState
{
GameModePlayerState_None = 0;
GameModePlayerState_Join = 1;
GameModePlayerState_MatchReserve = 2;
GameModePlayerState_LoadComplete = 3;
GameModePlayerState_Wait = 4;
}//이건 서버 내에서만 처리 해줄 내용
enum GameModeKickReason
{
GameModeKickReason_None = 0;
GameModeKickReason_LoadingTimeExpired = 1;
}
enum GameModeDeadType
{
GameModeDeadType_None = 0;
GameModeDeadType_ByOthers = 1;
GameModeDeadType_Fall = 2;
}
enum GameModeRewardType
{
GameModeRewardType_None = 0;
GameModeRewardType_GetPickUpPod = 1;
GameModeRewardType_ObtainedByOwningForTime = 2;
GameModeRewardType_FinishRankReward = 3;
GameModeRewardType_MinRespawnBonusReward = 4;
GameModeRewardType_UnfinishRankReward = 5;
}
enum StateUpdateReasonType
{
StateUpdateReasonType_None = 0;
StateUpdateReasonType_NormalFlow = 1;
StateUpdateReasonType_NotEnoughPlayableUser = 2;
StateUpdateReasonType_EventTimeEnd = 3;
StateUpdateReasonType_UserLoadComplete = 4;
StateUpdateReasonType_LoadingWaitTimeExceeded = 5;
}
message MatchRestriction
{
string gameModeType = 1;
int32 matchCount = 2;
google.protobuf.Timestamp nextRefreshTime = 3;
}
message GameModePlayPenalty
{
string gameModeType = 1;
int32 penaltyCount = 2;
google.protobuf.Timestamp penaltyStartTime = 3;
google.protobuf.Timestamp penaltyEndTime = 4;
}
message GameModeRewardResult
{
string UserGuid = 1;
GameModeRewardType RewardType = 2;
CommonResult CommonResult = 3;
}
message GameModeRewardResultWithRank
{
int32 rank = 1;
GameModeRewardResult rewardResult = 2;
}
message RunRaceResult
{
string userGuid = 1;
int32 rank = 2;
int32 respawnCount = 3;
int32 completionTime = 4; // 이번 완주 기록
int32 prevPersonalBestTime = 5; // 이전 개인 최고 기록
bool isNewBest = 6; // 개인 최고 기록 갱신 여부
}
message MatchTeamInfo
{
string TeamId = 1;
repeated string UserGuids = 2;
}
message MatchRoomInfo
{
string RoomId = 1;
repeated MatchTeamInfo Teams = 2;
repeated MatchTeamMetaInfo MatchTeamMetaInfos = 3;
}
message MatchTeamMetaInfo
{
string TeamId = 1;
int32 MinMemberCount = 2;
int32 MaxMemberCount = 3;
}
message MatchRoomMetaInfo
{
}
enum MatchGameStateType
{
MatchGameStateType_None = 0;
MatchGameStateType_Idle = 1;
MatchGameStateType_Ready = 2;
MatchGameStateType_Start = 3;
MatchGameStateType_Finish = 4;
MatchGameStateType_Destroy = 5;
}