diff --git a/Campofinale.Protocol/Campofinale.Protocol.csproj b/Campofinale.Protocol/Campofinale.Protocol.csproj
index 4b595fb..230ae6f 100644
--- a/Campofinale.Protocol/Campofinale.Protocol.csproj
+++ b/Campofinale.Protocol/Campofinale.Protocol.csproj
@@ -19,6 +19,10 @@
+
+
+
+
@@ -897,5 +901,8 @@
+
+
+
\ No newline at end of file
diff --git a/Campofinale.Protocol/Campofinale.proto b/Campofinale.Protocol/Campofinale.proto
new file mode 100644
index 0000000..eb58019
--- /dev/null
+++ b/Campofinale.Protocol/Campofinale.proto
@@ -0,0 +1,6678 @@
+syntax = "proto3";
+
+message Vector2 {
+ int32 x = 1;
+ int32 y = 2;
+}
+
+message SubPort {
+ Vector2 pos = 1;
+ Direction direction = 2;
+}
+
+enum Direction {
+ Direction_Up = 0;
+ Direction_Right = 1;
+ Direction_Down = 2;
+ Direction_Left = 3;
+ Direction_Max = 4;
+}
+
+message ItemUnit {
+ string id = 1;
+ uint64 count = 2;
+}
+
+message ItemBox {
+ string id = 1;
+ uint64 count = 2;
+ int32 index = 3;
+ int64 offset = 4;
+}
+
+message Formula {
+ string id = 1;
+ int64 progress_per_round = 2;
+ repeated ItemUnit from = 3;
+ repeated ItemUnit to = 4;
+}
+
+message SDShape {
+ ShapeType type = 1;
+ repeated Vector2 points = 2;
+}
+
+enum ShapeType {
+ ShapeType_Invalid = 0;
+ ShapeType_Rect = 1;
+ ShapeType_Line = 2;
+ ShapeType_Max = 3;
+}
+
+message SDTemplate {
+ string id = 1;
+ NodeType type = 2;
+ SDShape shape = 3;
+ oneof s_d_node {
+ SDNodeBus bus = 21;
+ SDNodeBusUnloader bus_unloader = 22;
+ SDNodeBusLoader bus_loader = 23;
+ SDNodeCollector collector = 24;
+ SDNodeProducer producer = 25;
+ SDNodeBoxConveyor box_conveyor = 26;
+ SDNodeBoxRouter box_router = 27;
+ }
+}
+
+enum NodeType {
+ NodeType_Invalid = 0;
+ NodeType_Inventory = 1;
+ NodeType_Bus = 2;
+ NodeType_Hub = 3;
+ NodeType_Collector = 4;
+ NodeType_Producer = 5;
+ NodeType_BoxConveyor = 6;
+ NodeType_BoxRouter = 7;
+ NodeType_BusUnloader = 8;
+ NodeType_BusLoader = 9;
+ NodeType_Max = 10;
+}
+
+message SDNodeBus {
+ SDComponentBus bus = 1;
+}
+
+message SDComponentBus {
+ repeated SubPort ports = 1;
+}
+
+message SDNodeBusUnloader {
+ SDComponentBusUnloader bus_unloader = 1;
+ SDComponentSelector selector = 2;
+}
+
+message SDComponentBusUnloader {
+ repeated SubPort ports = 1;
+}
+
+message SDComponentSelector {
+ repeated SubPort ports = 1;
+}
+
+message SDNodeBusLoader {
+ SDComponentBusLoader bus_loader = 1;
+}
+
+message SDComponentBusLoader {
+ repeated SubPort ports_in = 1;
+ repeated SubPort ports_out = 2;
+}
+
+message SDNodeCollector {
+ SDComponentCollector collector = 1;
+ repeated SDComponentCache caches = 2;
+}
+
+message SDComponentCollector {
+ int64 progress_per_round = 1;
+}
+
+message SDComponentCache {
+ int32 size = 1;
+ repeated SubPort ports = 2;
+}
+
+message SDNodeProducer {
+ SDComponentProducer producer = 1;
+ SDComponentFormulaMan formula_man = 2;
+ repeated SDComponentCache caches_in = 3;
+ repeated SDComponentCache caches_out = 4;
+}
+
+message SDComponentProducer {
+ int64 produce_scale = 1;
+}
+
+message SDComponentFormulaMan {
+ repeated string formula_ids = 1;
+}
+
+message SDNodeBoxConveyor {
+ SDComponentBoxConveyor box_conveyor = 1;
+}
+
+message SDComponentBoxConveyor {
+ int64 m_s_per_step = 1;
+}
+
+message SDNodeBoxRouter {
+ SDComponentBoxRouter box_router = 1;
+}
+
+message SDComponentBoxRouter {
+ int64 m_s_hold = 1;
+ repeated SubPort ports = 2;
+}
+
+message LayoutShape {
+ ShapeType type = 1;
+ repeated Vector2 points = 2;
+ repeated Direction dynamic_dir_in = 3;
+ repeated Direction dynamic_dir_out = 4;
+}
+
+message Node {
+ uint64 node_id = 1;
+ NodeType type = 2;
+ string template_id = 3;
+ LayoutShape shape = 4;
+ repeated Component component = 11;
+}
+
+message Component {
+ uint64 component_id = 1;
+ ComponentType type = 2;
+ oneof content {
+ ComponentCache cache = 11;
+ ComponentInventory inventory = 12;
+ ComponentCollector collector = 13;
+ ComponentProducer producer = 14;
+ ComponentSelector selector = 15;
+ ComponentBoxConveyor box_conveyor = 16;
+ ComponentBoxRouter box_router = 17;
+ ComponentMap map = 18;
+ ComponentTransform transform = 19;
+ }
+}
+
+enum ComponentType {
+ ComponentType_Invalid = 0;
+ ComponentType_Map = 1;
+ ComponentType_Transform = 2;
+ ComponentType_Bus = 3;
+ ComponentType_Inventory = 4;
+ ComponentType_Cache = 5;
+ ComponentType_Selector = 6;
+ ComponentType_Collector = 7;
+ ComponentType_Producer = 8;
+ ComponentType_FormulaMan = 9;
+ ComponentType_BoxConveyor = 10;
+ ComponentType_BoxRouter = 11;
+ ComponentType_BusUnloader = 12;
+ ComponentType_BusLoader = 13;
+ ComponentType_Max = 14;
+}
+
+message ComponentCache {
+ repeated ItemUnit cache = 1;
+}
+
+message ComponentInventory {
+ repeated ItemUnit store = 1;
+}
+
+message ComponentCollector {
+ int64 current_progress = 1;
+ int64 progress_per_round = 2;
+ repeated ItemUnit items_per_round = 3;
+}
+
+message ComponentProducer {
+ int64 current_progress = 1;
+ string current_formula_id = 2;
+}
+
+message ComponentSelector {
+ string selected_item_id = 1;
+}
+
+message ComponentBoxConveyor {
+ SubPort port_in = 1;
+ SubPort port_out = 2;
+ repeated ItemBox list = 6;
+}
+
+message ComponentBoxRouter {
+ ItemBox content = 1;
+}
+
+message ComponentMap {
+ map com_as_kind = 1;
+}
+
+message ComponentTransform {
+ Vector2 position = 1;
+ Direction direction = 2;
+}
+
+message ContextBrief {
+ uint64 c_d = 1;
+ int64 now = 2;
+ bool is_active = 3;
+}
+
+message ContextBlackboard {
+ int64 electric_current = 1;
+ int64 electric_max = 2;
+}
+
+message ContextStatus {
+ ContextBrief brief = 1;
+ ContextBlackboard blackboard = 2;
+ repeated uint64 node_ids = 3;
+}
+
+message Event {
+ int64 timestamp_m_s = 1;
+ uint64 sequence = 2;
+ EventType type = 3;
+ oneof payload {
+ EventPrepared prepared = 11;
+ EventLayoutChg layout_chg = 12;
+ EventComponentChg component_chg = 13;
+ EventRelationChg relation_chg = 14;
+ }
+}
+
+enum EventType {
+ EventType_Invalid = 0;
+ EventType_Prepared = 1;
+ EventType_LayoutChg = 2;
+ EventType_ComponentChg = 3;
+ EventType_RelationChg = 4;
+ EventType_Max = 5;
+}
+
+message EventPrepared {
+}
+
+message EventLayoutChg {
+ repeated uint64 node_ids = 1;
+}
+
+message EventComponentChg {
+ repeated uint64 component_ids = 1;
+}
+
+message EventRelationChg {
+ bool is_got = 1;
+ repeated uint64 com_id = 2;
+}
+
+message Operate {
+ OperateType type = 1;
+ oneof payload {
+ OperatePayloadPlace place = 11;
+ OperatePayloadPlaceConveyor place_conveyor = 12;
+ OperatePayloadDismantle dismantle = 13;
+ OperatePayloadSetCollectTarget set_collect_target = 14;
+ OperatePayloadSetUnloaderSelect set_unloader_select = 15;
+ OperatePayloadPutInItemsToCache put_in_items_to_cache = 16;
+ OperatePayloadTakeOutItemsFromCache take_out_items_from_cache = 17;
+ OperatePayloadAddNewArea add_new_area = 18;
+ OperatePayloadSetEventEnable set_event_enable = 19;
+ }
+}
+
+enum OperateType {
+ OperateType_Invalid = 0;
+ OperateType_Place = 1;
+ OperateType_PlaceConveyor = 2;
+ OperateType_Dismantle = 3;
+ OperateType_SetCollectTarget = 4;
+ OperateType_SetUnloaderSelect = 5;
+ OperateType_PutInItemsToCache = 6;
+ OperateType_TakeOutItemsFromCache = 7;
+ OperateType_AddNewArea = 8;
+ OperateType_SetEventEnable = 9;
+}
+
+message OperatePayloadPlace {
+ string template_id = 1;
+ Vector2 pos = 2;
+ Direction direction = 3;
+}
+
+message OperatePayloadPlaceConveyor {
+ string template_id = 1;
+ Direction direction_in = 2;
+ Direction direction_out = 3;
+ repeated Vector2 points = 4;
+}
+
+message OperatePayloadDismantle {
+ uint64 node_id = 1;
+}
+
+message OperatePayloadSetCollectTarget {
+ uint64 node_id = 1;
+ repeated ItemUnit items_per_round = 2;
+}
+
+message OperatePayloadSetUnloaderSelect {
+ uint64 node_id = 1;
+ string item_id = 2;
+}
+
+message OperatePayloadPutInItemsToCache {
+ uint64 com_id = 1;
+ repeated ItemUnit items = 2;
+}
+
+message OperatePayloadTakeOutItemsFromCache {
+ uint64 com_id = 1;
+ repeated ItemUnit items = 2;
+}
+
+message OperatePayloadAddNewArea {
+ repeated Vector2 area = 1;
+}
+
+message OperatePayloadSetEventEnable {
+ bool enable = 1;
+ repeated EventType event_type_list = 2;
+}
+
+message OperateReturn {
+ OperateRetCode ret_code = 1;
+ int64 timestamp_m_s = 2;
+ uint64 sequence = 3;
+ oneof payload {
+ OperateReturnPlace place = 11;
+ OperateReturnPlaceConveyor place_conveyor = 12;
+ OperateReturnPutInItemsToCache put_in_items_to_cache = 13;
+ OperateReturnTakeOutItemsFromCache take_out_items_from_cache = 14;
+ }
+}
+
+enum OperateRetCode {
+ OperateRetCode_OK = 0;
+ OperateRetCode_Unknown = 1;
+ OperateRetCode_Fail = 2;
+ OperateRetCode_InvalidParameter = 3;
+ OperateRetCode_UnknownTemplate = 4;
+ OperateRetCode_MeshConflict = 5;
+}
+
+message OperateReturnPlace {
+ uint64 node_id = 1;
+}
+
+message OperateReturnPlaceConveyor {
+ uint64 node_id = 1;
+}
+
+message OperateReturnPutInItemsToCache {
+ repeated ItemUnit least_items = 1;
+}
+
+message OperateReturnTakeOutItemsFromCache {
+ repeated ItemUnit got_items = 1;
+}
+
+message MeshArea {
+ repeated Vector2 range = 1;
+}
+
+message MeshAreaBitmap {
+ repeated Vector2 area = 1;
+ repeated uint64 bitmaps = 2;
+}
+
+message ContextArchive {
+ ContextBrief brief = 1;
+ ContextBlackboard blackboard = 2;
+ repeated MeshArea areas = 3;
+ repeated Node nodes = 11;
+}
+
+message BattleClientData {
+ repeated BattleClientOpData op_list = 1;
+}
+
+message BattleClientOpData {
+ uint64 owner_id = 1;
+ BattleActionOperateType op_type = 2;
+ uint32 generation = 3;
+ int32 chapter_map_id = 17;
+ oneof op_data_impl {
+ BattleAddBuffOpData add_buff_op_data = 4;
+ BattleFinishBuffOpData finish_buff_op_data = 5;
+ BattleSkillAttachOpData skill_attach_op_data = 6;
+ BattleSkillDetachOpData skill_detach_op_data = 7;
+ BattleSkillStartCastOpData skill_start_cast_op_data = 8;
+ BattleSkillEndCastOpData skill_end_cast_op_data = 9;
+ BattleSwitchModeOpData skill_switch_mode_op_data = 10;
+ BattleTriggerActionOpData trigger_action_op_data = 11;
+ BattleUpdateHubOpData update_hub_op_data = 12;
+ BattleEntityDieOpData entity_die_op_data = 13;
+ BattleEntityValueModifyData entity_value_modify_data = 14;
+ BattleResetBattleDataOpData reset_battle_op_data = 15;
+ BattleUpdateDataVersionOpData update_data_version_op_data = 16;
+ }
+}
+
+enum BattleActionOperateType {
+ BATTLE_OP_NONE = 0;
+ BATTLE_OP_ADD_BUFF = 1;
+ BATTLE_OP_FINISH_BUFF = 2;
+ BATTLE_OP_SKILL_ATTACH = 3;
+ BATTLE_OP_SKILL_DETACH = 4;
+ BATTLE_OP_SKILL_START_CAST = 5;
+ BATTLE_OP_SKILL_END_CAST = 6;
+ BATTLE_OP_SWITCH_MODE = 7;
+ BATTLE_OP_TRIGGER_ACTION = 8;
+ BATTLE_OP_UPDATE_HUB = 9;
+ BATTLE_OP_ENTITY_DIE = 10;
+ BATTLE_OP_ENTITY_VALUE_MODIFY = 11;
+ BATTLE_OP_RESET_BATTLE_DATA = 12;
+ BATTLE_OP_UPDATE_DATA_VERSION = 13;
+}
+
+message BattleAddBuffOpData {
+ uint64 src_inst_id = 1;
+ uint64 target_inst_id = 2;
+ string buff_id = 3;
+ uint64 buff_inst_id = 4;
+ int64 client_add_ts = 5;
+ BattleBlackboard assigned_items = 6;
+ int32 buff_src_type = 7;
+ string buff_src_args = 8;
+}
+
+message BattleBlackboard {
+ map blackboard = 1;
+}
+
+message BattleBlackboardData {
+ string str_value = 1;
+ double float_value = 2;
+ bool is_dynamic = 3;
+}
+
+message BattleFinishBuffOpData {
+ uint64 buff_inst_id = 1;
+ int32 reduce_layer = 2;
+ bool force = 3;
+}
+
+message BattleSkillAttachOpData {
+ uint64 src_inst_id = 1;
+ string skill_id = 2;
+ int32 skill_lv = 3;
+ BattleSkillSource skill_source = 4;
+ uint64 skill_inst_id = 5;
+}
+
+enum BattleSkillSource {
+ BATTLE_SKILL_SOURCE_DEFAULT = 0;
+ BATTLE_SKILL_SOURCE_MODE = 1;
+ BATTLE_SKILL_SOURCE_WEAPON = 2;
+ BATTLE_SKILL_SOURCE_EQUIP_SUIT = 3;
+ BATTLE_SKILL_SOURCE_OTHER = 4;
+ BATTLE_SKILL_SOURCE_INTERACTIVE = 5;
+ BATTLE_SKILL_SOURCE_SUMMON = 6;
+ BATTLE_SKILL_SOURCE_PLUNGING_ATTACK = 7;
+ BATTLE_SKILL_SOURCE_POWER_ATTACK = 8;
+ BATTLE_SKILL_SOURCE_TALENT_NODE_SKILL = 9;
+ BATTLE_SKILL_SOURCE_POTENTIAL_LV_SKILL = 10;
+}
+
+message BattleSkillDetachOpData {
+ uint64 skill_inst_id = 1;
+}
+
+message BattleSkillStartCastOpData {
+ uint64 inst_id = 1;
+ BattleTargetHandle target = 2;
+}
+
+message BattleTargetHandle {
+ repeated BattleTargetWrapper targets = 1;
+}
+
+message BattleTargetWrapper {
+ uint64 target_id = 1;
+ Vector target_pos = 2;
+}
+
+message Vector {
+ float x = 1;
+ float y = 2;
+ float z = 3;
+}
+
+message BattleSkillEndCastOpData {
+ uint64 inst_id = 1;
+}
+
+message BattleSwitchModeOpData {
+ uint32 mode_inst_id = 1;
+ string mode_id = 2;
+ int32 mode_change_type = 3;
+ bool is_enable = 4;
+}
+
+message BattleTriggerActionOpData {
+ uint64 owner_id = 1;
+ uint64 inst_id = 2;
+ string template_id = 3;
+ BattleTargetHandle input_targets = 4;
+ BattleActionInst action = 5;
+ BattleTriggerType trigger_type = 6;
+ BattleActionOwnerType owner_type = 7;
+}
+
+message BattleActionInst {
+ int32 action_id = 1;
+ ServerBattleActionType action_type = 2;
+ oneof inst_impl {
+ BattleDamageActionRuntime damage_action = 3;
+ BattleCreateBuffActionRuntime create_buff_action = 4;
+ BattleFinishBuffActionRuntime finish_buff_action = 5;
+ BattleGainCostActionRuntime gain_cost_action = 6;
+ BattleHealActionRuntime heal_action = 7;
+ BattleSwitchModeActionRuntime switch_mode_action = 8;
+ BattleModifyDynamicBlackboardActionRuntime modify_dynamic_blackboard_action = 9;
+ BattleSpawnEnemyActionRuntime spawn_enemy_action = 10;
+ BattleCheckDamageTypeActionRuntime check_damage_type_action = 11;
+ BattleCheckDamageDecorateMaskActionRuntime check_damage_decorate_mask_action = 12;
+ BattleCheckDistanceConditionActionRuntime check_distance_condition_action = 13;
+ BattleCheckEntityNumActionRuntime check_entity_num_action = 14;
+ BattleCheckHpActionRuntime check_hp_action = 15;
+ BattleCheckIsCriticalDamageActionRuntime check_is_critical_damage_action = 16;
+ BattleCheckMainCharacterActionRuntime check_main_character_action = 17;
+ BattleCheckObjectTypeMatchActionRuntime check_object_type_match_action = 18;
+ BattleCheckSkillTypeActionRuntime check_skill_type_action = 19;
+ BattleCheckSquadInFightActionRuntime check_squad_in_fight_action = 20;
+ BattleCheckTagMatchActionRuntime check_tag_match_action = 21;
+ BattleCheckTargetAngleActionRuntime check_target_angle_action = 22;
+ BattleCompareFloatActionRuntime compare_float_action = 23;
+ BattleProbabilityActionRuntime probability_action = 24;
+ BattleLaunchProjectileActionRuntime launch_projectile_action = 25;
+ BattleSpawnAbilityEntityActionRuntime spawn_ability_entity_action = 26;
+ BattleSpawnCustomSummonActionRuntime spawn_custom_summon_action = 27;
+ BattleRefreshBuffAttrModifierValueActionRuntime refresh_buff_attr_modifier_value_action = 28;
+ BattleStoreAttributeValueActionRuntime store_attribute_value_action = 29;
+ BattleSetBlackboardFromPresetRuntime set_blackboard_from_preset_action = 30;
+ EmptyBattleAction empty_action = 999;
+ }
+}
+
+enum ServerBattleActionType {
+ BATTLE_ACTION_NONE = 0;
+ BATTLE_ACTION_DAMAGE = 1;
+ BATTLE_ACTION_CREATE_BUFF = 2;
+ BATTLE_ACTION_FINISH_BUFF = 3;
+ BATTLE_ACTION_GAIN_COST = 4;
+ BATTLE_ACTION_HEAL = 5;
+ BATTLE_ACTION_SWITCH_MODE = 6;
+ BATTLE_ACTION_MODIFY_DYNAMIC_BLACKBOARD = 7;
+ BATTLE_ACTION_SPAWN_ENEMY = 8;
+ BATTLE_ACTION_CHECK_DAMAGE_TYPE = 9;
+ BATTLE_ACTION_CHECK_DAMAGE_DECORATE_MASK = 10;
+ BATTLE_ACTION_CHECK_DISTANCE_CONDITION = 11;
+ BATTLE_ACTION_CHECK_ENTITY_NUM = 12;
+ BATTLE_ACTION_CHECK_HP = 13;
+ BATTLE_ACTION_CHECK_IS_CRITICAL_DAMAGE = 14;
+ BATTLE_ACTION_CHECK_MAIN_CHARACTER = 15;
+ BATTLE_ACTION_CHECK_OBJECT_TYPE_MATCH = 16;
+ BATTLE_ACTION_CHECK_SKILL_TYPE = 17;
+ BATTLE_ACTION_CHECK_SQUAD_IN_FIGHT = 18;
+ BATTLE_ACTION_CHECK_TAG_MATCH = 19;
+ BATTLE_ACTION_CHECK_TARGET_ANGLE = 20;
+ BATTLE_ACTION_COMPARE_FLOAT = 21;
+ BATTLE_ACTION_PROBABILITY = 22;
+ BATTLE_ACTION_LAUNCH_PROJECTILE = 23;
+ BATTLE_ACTION_SPAWN_ABILITY_ENTITY = 24;
+ BATTLE_ACTION_IF_ELSE = 25;
+ BATTLE_ACTION_FOR_EACH = 26;
+ BATTLE_ACTION_AURA = 27;
+ BATTLE_ACTION_SPAWN_CUSTOM_SUMMON = 28;
+ BATTLE_ACTION_CHANNELING = 29;
+ BATTLE_ACTION_STORE_ATTRIBUTE_VALUE = 30;
+ BATTLE_ACTION_REFRESH_BUFF_ATTR_MODIFIER_VALUE = 31;
+ BATTLE_ACTION_SET_BLACKBOARD_FROM_PRESET = 32;
+}
+
+message BattleDamageActionRuntime {
+ uint64 attacker_id = 1;
+ repeated BattleDamageDetail details = 2;
+}
+
+message BattleDamageDetail {
+ uint64 target_id = 1;
+ int32 damage_unit_index = 2;
+ bool is_crit = 3;
+ double value = 4;
+ BattleDamageModifierArgs modifier_args = 5;
+ double cur_hp = 6;
+}
+
+message BattleDamageModifierArgs {
+ uint64 attacker_id = 1;
+ uint64 defender_id = 2;
+ repeated BattleModifierHandle attacker_modifiers = 3;
+ repeated BattleModifierHandle defender_modifiers = 4;
+}
+
+message BattleModifierHandle {
+ uint64 buff_inst_id = 1;
+ int32 index = 2;
+}
+
+message BattleCreateBuffActionRuntime {
+ repeated BattleCreateBuffActionDetail details = 2;
+}
+
+message BattleCreateBuffActionDetail {
+ uint64 source_id = 1;
+ uint64 target_id = 2;
+ uint64 buff_inst_id = 3;
+ int32 buff_input_index = 4;
+ repeated BattleBlackboardAssignItem assigned_items = 5;
+}
+
+message BattleBlackboardAssignItem {
+ string target_key = 1;
+ string input_value_key = 2;
+ bool use_direct_value = 3;
+ float numeric_value = 4;
+ string string_value = 5;
+}
+
+message BattleFinishBuffActionRuntime {
+ repeated BattleFinishBuffActionDetail finish_buffs = 1;
+}
+
+message BattleFinishBuffActionDetail {
+ uint64 target_id = 1;
+ uint64 buff_inst_id = 2;
+}
+
+message BattleGainCostActionRuntime {
+ uint64 source_id = 1;
+ uint64 target_id = 2;
+ double final_value = 3;
+}
+
+message BattleHealActionRuntime {
+ repeated BattleHealActionDetail details = 1;
+}
+
+message BattleHealActionDetail {
+ uint64 source_id = 1;
+ uint64 target_id = 2;
+ double value = 3;
+ BattleHealModifierArgs modifier_args = 4;
+ double cur_hp = 5;
+}
+
+message BattleHealModifierArgs {
+ uint64 healer_id = 1;
+ uint64 heal_receive_id = 2;
+ repeated BattleModifierHandle healer_modifiers = 3;
+ repeated BattleModifierHandle heal_receive_modifiers = 4;
+}
+
+message BattleSwitchModeActionRuntime {
+ uint64 source_id = 1;
+ string mode_id = 2;
+ uint32 mode_inst_id = 3;
+}
+
+message BattleModifyDynamicBlackboardActionRuntime {
+ double client_value = 1;
+}
+
+message BattleSpawnEnemyActionRuntime {
+ uint32 client_key = 1;
+ repeated BattleSpawnEnemyActionDetail details = 2;
+}
+
+message BattleSpawnEnemyActionDetail {
+ uint64 source_id = 1;
+ uint32 enemy_lv = 2;
+ Vector pos = 3;
+ Vector rotation = 4;
+ int32 scene_num_id = 5;
+}
+
+message BattleCheckDamageTypeActionRuntime {
+ bool result = 1;
+}
+
+message BattleCheckDamageDecorateMaskActionRuntime {
+ bool result = 1;
+}
+
+message BattleCheckDistanceConditionActionRuntime {
+ Vector pos_a = 1;
+ Vector pos_b = 2;
+ float distance = 4;
+ bool result = 3;
+}
+
+message BattleCheckEntityNumActionRuntime {
+ bool result = 1;
+}
+
+message BattleCheckHpActionRuntime {
+ uint64 source_id = 1;
+ bool result = 2;
+}
+
+message BattleCheckIsCriticalDamageActionRuntime {
+ bool result = 1;
+}
+
+message BattleCheckMainCharacterActionRuntime {
+ uint64 check_target_id = 1;
+ bool result = 2;
+}
+
+message BattleCheckObjectTypeMatchActionRuntime {
+ bool result = 3;
+}
+
+message BattleCheckSkillTypeActionRuntime {
+ bool result = 1;
+}
+
+message BattleCheckSquadInFightActionRuntime {
+ bool result = 1;
+}
+
+message BattleCheckTagMatchActionRuntime {
+ repeated uint64 target_ids = 1;
+ bool result = 2;
+}
+
+message BattleCheckTargetAngleActionRuntime {
+ Vector source_Vector = 1;
+ Vector target_Vector = 2;
+ bool result = 3;
+}
+
+message BattleCompareFloatActionRuntime {
+ bool result = 1;
+}
+
+message BattleProbabilityActionRuntime {
+ bool result = 1;
+}
+
+message BattleLaunchProjectileActionRuntime {
+ uint64 source_id = 1;
+ repeated BattleProjectileDetail details = 2;
+}
+
+message BattleProjectileDetail {
+ uint64 client_projectile_id = 1;
+}
+
+message BattleSpawnAbilityEntityActionRuntime {
+ repeated BattleAbilityEntityDetail details = 1;
+}
+
+message BattleAbilityEntityDetail {
+ uint64 client_ability_entity_id = 1;
+ uint64 source_id = 2;
+ Vector init_pos = 3;
+ Vector rotation = 4;
+}
+
+message BattleSpawnCustomSummonActionRuntime {
+ repeated BattleSpawnCustomSummonDetail details = 1;
+}
+
+message BattleSpawnCustomSummonDetail {
+ string summon_id = 1;
+ string summon_skill_id = 2;
+ uint64 client_ability_entity_id = 3;
+ Vector init_pos = 4;
+ Vector rotation = 5;
+ BattleBlackboard blackboard = 6;
+ uint64 source_id = 7;
+}
+
+message BattleRefreshBuffAttrModifierValueActionRuntime {
+}
+
+message BattleStoreAttributeValueActionRuntime {
+ float value = 1;
+}
+
+message BattleSetBlackboardFromPresetRuntime {
+ string modified_value = 1;
+}
+
+message EmptyBattleAction {
+}
+
+enum BattleTriggerType {
+ BATTLE_TRIGGER_TYPE_EXECUTE = 0;
+ BATTLE_TRIGGER_TYPE_TICK = 1;
+ BATTLE_TRIGGER_TYPE_END = 2;
+}
+
+enum BattleActionOwnerType {
+ BATTLE_ACTION_OWNER_TYPE_NONE = 0;
+ BATTLE_ACTION_OWNER_TYPE_BUFF = 1;
+ BATTLE_ACTION_OWNER_TYPE_SKILL = 2;
+}
+
+message BattleUpdateHubOpData {
+ uint64 owner_id = 1;
+ uint64 inst_id = 2;
+ string template_id = 3;
+ repeated BattleHubItem hub_data = 4;
+ BattleActionOwnerType owner_type = 5;
+}
+
+message BattleHubItem {
+ BattleHubKeyType key_type = 1;
+ repeated double numeric_values = 2;
+ repeated string string_values = 3;
+ repeated BattleTargetHandle target_handles = 4;
+}
+
+enum BattleHubKeyType {
+ BATTLE_HUB_KEY_TYPE_NONE = 0;
+ DAMAGE_TYPE = 1;
+ DAMAGE_DECORATE_MASK = 2;
+ DAMAGE_IS_CRIT = 3;
+ ENTITY_NUM = 4;
+ SKILL_TYPE = 5;
+}
+
+message BattleEntityDieOpData {
+ uint64 entity_inst_id = 1;
+ int32 scene_num_id = 2;
+ bool disable_anti_cheat = 3;
+}
+
+message BattleEntityValueModifyData {
+ uint64 entity_inst_id = 1;
+ int32 scene_num_id = 2;
+ BattleInfo value = 3;
+ int32 source = 4;
+}
+
+message BattleInfo {
+ double hp = 1;
+ float ultimatesp = 2;
+}
+
+message BattleResetBattleDataOpData {
+}
+
+message BattleUpdateDataVersionOpData {
+ string client_data_version = 1;
+}
+
+message BattleActionJump {
+ int32 action_type = 1;
+ string jump_to_tag = 2;
+}
+
+message BuffRes {
+ string buff_id = 1;
+ int32 life_type = 2;
+ repeated BattleAttrModifier attr_modifiers = 3;
+ repeated BuffDamageModifierRes damage_modifiers = 4;
+ repeated BuffHealModifierRes heal_modifiers = 5;
+ BattleBlackboard blackboard = 6;
+ map action_map = 7;
+ repeated int32 apply_tags = 8;
+ BuffStackingSettings stacking_settings = 9;
+ BattleBlackboardFloat duration = 10;
+ bool remove_on_repatriate = 11;
+ string stacking_id = 101;
+ int32 stacking_type = 102;
+ int32 max_stack_cnt = 103;
+ int32 priority = 104;
+}
+
+message BattleAttrModifier {
+ int32 modify_attr_type = 1;
+ int32 attr_type = 2;
+ int32 formula_item = 3;
+ BattleBlackboardFloat param = 4;
+}
+
+message BattleBlackboardFloat {
+ bool use_blackboard_key = 1;
+ string blackboard_key = 2;
+ double default_value = 3;
+}
+
+message BuffDamageModifierRes {
+ int32 enable_side = 1;
+ int32 index = 2;
+ repeated BattleActionRes cond_actions = 3;
+ repeated BattleDamageProcessor damage_processors = 4;
+}
+
+message BattleActionRes {
+ int32 action_id = 1;
+ ServerBattleActionType action_type = 2;
+ oneof inst_impl {
+ BattleDamageActionData damage_action = 3;
+ BattleCreateBuffActionData create_buff_action = 4;
+ BattleFinishBuffActionData finish_buff_action = 5;
+ BattleGainCostActionData gain_cost_action = 6;
+ BattleHealActionData heal_action = 7;
+ BattleSwitchModeActionData switch_mode_action = 8;
+ BattleModifyDynamicBlackboardActionData modify_dynamic_blackboard_action = 9;
+ BattleSpawnEnemyActionData spawn_enemy_action = 10;
+ BattleCheckDamageTypeActionData check_damage_type_action = 11;
+ BattleCheckDamageDecorateMaskActionData check_damage_decorate_mask_action = 12;
+ BattleCheckDistanceConditionActionData check_distance_condition_action = 13;
+ BattleCheckEntityNumActionData check_entity_num_action = 14;
+ BattleCheckHpActionData check_hp_action = 15;
+ BattleCheckIsCriticalDamageActionData check_is_critical_damage_action = 16;
+ BattleCheckMainCharacterActionData check_main_character_action = 17;
+ BattleCheckObjectTypeMatchActionData check_object_type_match_action = 18;
+ BattleCheckSkillTypeActionData check_skill_type_action = 19;
+ BattleCheckSquadInFightActionData check_squad_in_fight_action = 20;
+ BattleCheckTagMatchActionData check_tag_match_action = 21;
+ BattleCheckTargetAngleActionData check_target_angle_action = 22;
+ BattleCompareFloatActionData compare_float_action = 23;
+ BattleProbabilityActionData probability_action = 24;
+ BattleLaunchProjectileActionData launch_projectile_action = 25;
+ BattleSpawnAbilityEntityActionData spawn_ability_entity_action = 26;
+ BattleSpawnCustomSummonActionData spawn_custom_summon_action = 27;
+ BattleRefreshBuffAttrModifierValueActionData refresh_buff_attr_modifier_value_action = 28;
+ BattleStoreAttributeValueActionData store_attribute_value_action = 29;
+ BattleSetBlackboardFromPresetData set_blackboard_from_preset_action = 30;
+ BattleActionEmptyRes empty_res = 999;
+ }
+}
+
+message BattleDamageActionData {
+ BattleActionTargetSetting target = 1;
+ int32 attacker_type = 2;
+ repeated BattleActionDamageUnit damage_unit = 3;
+}
+
+message BattleActionTargetSetting {
+ int32 target_source = 1;
+ string target_group_key = 2;
+}
+
+message BattleActionDamageUnit {
+ int32 damage_type = 1;
+ int32 damage_attribute_type = 2;
+ int32 damage_decorate_mask = 3;
+ bool simple_calculation = 4;
+ BattleBlackboardFloat atk_scale = 5;
+ BattleDamageAtkCalculation atk_calculation = 6;
+ repeated BattleDamageProcessor damage_processors = 7;
+ bool gain_cost = 8;
+ repeated SkillCostData cost_data = 9;
+ bool reduce_damage_for_guard = 10;
+ float reduce_damage_for_guard_ratio = 11;
+}
+
+message BattleDamageAtkCalculation {
+ AtkCalculationType type = 1;
+ oneof calculation_impl {
+ AtkScaleCalculation atk_scale_calculation = 2;
+ DefiniteValueCalculation definite_value_calculation = 3;
+ MultiplyAttributeCalculation multiply_attribute_calculation = 4;
+ BreakingAttackCalculation breaking_attack_calculation = 5;
+ PrimaryAttrCalculation primary_attr_calculation = 6;
+ }
+}
+
+enum AtkCalculationType {
+ ATK_SCALE = 0;
+ DEFINITE_VALUE = 1;
+ MULTIPLY_ATTRIBUTE = 2;
+ BREAKING_ATK_CALC = 3;
+ PRIMARY_ATTR_CALC = 4;
+}
+
+message AtkScaleCalculation {
+ AtkCalculationType type = 1;
+ BattleBlackboardFloat atk_scale = 2;
+}
+
+message DefiniteValueCalculation {
+ AtkCalculationType type = 1;
+ BattleBlackboardFloat definite_value = 2;
+ bool apply_scale = 3;
+ BattleBlackboardFloat value_scale = 4;
+}
+
+message MultiplyAttributeCalculation {
+ AtkCalculationType type = 1;
+ int32 value_source = 2;
+ int32 attr_type = 3;
+ BattleBlackboardFloat multiplier = 4;
+ BattleBlackboardFloat add_value = 5;
+}
+
+message BreakingAttackCalculation {
+ AtkCalculationType type = 1;
+ BattleBlackboardFloat atk_scale = 2;
+ BattleBlackboardFloat multiplier = 3;
+}
+
+message PrimaryAttrCalculation {
+ int32 value_source = 1;
+ int32 attr_type = 2;
+ bool apply_scale = 3;
+ BattleBlackboardFloat value_scale = 4;
+}
+
+message BattleDamageProcessor {
+ DamageProcessorType type = 1;
+ oneof processor_impl {
+ AttackerCritRateProcessor attacker_crit_rate_processor = 2;
+ AttackerAtkProcessor attacker_atk_processor = 3;
+ AttackerCritDamageProcessor attacker_crit_damage_processor = 4;
+ AttackerPenProcessor attacker_pen_processor = 5;
+ DamageScaleProcessor damage_scale_processor = 6;
+ DefenderDefProcessor defender_def_processor = 7;
+ ModifyCalculateResultProcessor modify_calulate_result_processor = 8;
+ InstantModifyAttributeProcessor instant_modify_attribute_processor = 9;
+ }
+}
+
+enum DamageProcessorType {
+ ATTACKER_CRIT_RATE = 0;
+ ATTACKER_ATK = 1;
+ ATTACKER_CRIT_DAMAGE = 2;
+ ATTACKER_PEN = 3;
+ DAMAGE_SCALE = 4;
+ DEFENDER_DEF = 5;
+ MODIFY_CALCULATE_RESULT = 6;
+ INSTANT_MODIFY_ATTRIBUTE = 7;
+}
+
+message AttackerCritRateProcessor {
+ DamageProcessorType type = 1;
+ BattleBlackboardFloat addition = 2;
+}
+
+message AttackerAtkProcessor {
+ DamageProcessorType type = 1;
+ BattleBlackboardFloat scale = 2;
+}
+
+message AttackerCritDamageProcessor {
+ DamageProcessorType type = 1;
+ BattleBlackboardFloat scale = 2;
+}
+
+message AttackerPenProcessor {
+ DamageProcessorType type = 1;
+ BattleBlackboardFloat scale = 2;
+}
+
+message DamageScaleProcessor {
+ DamageProcessorType type = 1;
+ int32 damage_scale_side = 2;
+ string zone_name = 3;
+ BattleBlackboardFloat addition = 4;
+}
+
+message DefenderDefProcessor {
+ DamageProcessorType type = 1;
+ BattleBlackboardFloat multiplier = 2;
+}
+
+message ModifyCalculateResultProcessor {
+ DamageProcessorType type = 1;
+ int32 cal_type = 2;
+ BattleBlackboardFloat base_multiplier = 3;
+ BattleBlackboardFloat multiplier_cnt = 4;
+}
+
+message InstantModifyAttributeProcessor {
+ DamageProcessorType type = 1;
+ int32 target_side = 2;
+ BattleAttrModifier attr_modifier = 3;
+}
+
+message SkillCostData {
+ SkillCostType cost_type = 1;
+ float cost_value = 2;
+}
+
+enum SkillCostType {
+ SKILL_COST_ULT_SP = 0;
+ SKILL_COST_ATB = 1;
+}
+
+message BattleCreateBuffActionData {
+ repeated BuffInput buff_input = 1;
+ BattleBlackboardFloat count = 2;
+ BattleActionTargetSetting target = 3;
+ int32 buff_source_type = 4;
+ bool auto_finish_by_action = 5;
+}
+
+message BuffInput {
+ string buff_id = 1;
+ bool assign_blackboard = 2;
+ repeated BattleBlackboardAssignItem assigned_items = 3;
+ bool read_id_from_blackboard = 4;
+}
+
+message BattleFinishBuffActionData {
+ BattleActionTargetSetting buff_owner = 1;
+ repeated string buff_ids = 2;
+ bool finish_all_buff = 3;
+ BattleBlackboardFloat finish_layer_cnt = 4;
+}
+
+message BattleGainCostActionData {
+ SkillCostData cost_data = 2;
+}
+
+message BattleHealActionData {
+ int32 heal_type = 1;
+ BattleDamageAtkCalculation heal_calculation = 2;
+}
+
+message BattleSwitchModeActionData {
+ string mode_id = 1;
+ bool reset_on_end = 2;
+}
+
+message BattleModifyDynamicBlackboardActionData {
+ string key = 1;
+ BattleBlackboardFloat value = 2;
+ int32 modify_type = 3;
+}
+
+message BattleSpawnEnemyActionData {
+ string enemy_id = 1;
+ BattleBlackboardFloat hp_ratio = 2;
+}
+
+message BattleCheckDamageTypeActionData {
+ int32 damage_type = 1;
+}
+
+message BattleCheckDamageDecorateMaskActionData {
+ int32 damage_decorate_mask = 1;
+}
+
+message BattleCheckDistanceConditionActionData {
+ float distance = 1;
+ bool less_than = 2;
+}
+
+message BattleCheckEntityNumActionData {
+ bool zero_always_return_true = 1;
+ int32 min_num = 2;
+ int32 compare_type = 3;
+}
+
+message BattleCheckHpActionData {
+ int32 compare_type = 1;
+ bool is_ratio = 2;
+ BattleBlackboardFloat value = 3;
+}
+
+message BattleCheckIsCriticalDamageActionData {
+ bool is_inverse = 1;
+}
+
+message BattleCheckMainCharacterActionData {
+}
+
+message BattleCheckObjectTypeMatchActionData {
+ int32 object_type_mask = 1;
+}
+
+message BattleCheckSkillTypeActionData {
+ int32 skill_type = 1;
+}
+
+message BattleCheckSquadInFightActionData {
+ bool is_inverse = 1;
+}
+
+message BattleCheckTagMatchActionData {
+ GameplayTagQuery query = 1;
+}
+
+message GameplayTagQuery {
+ int32 query_type = 1;
+ repeated int32 tag_ids = 2;
+}
+
+message BattleCheckTargetAngleActionData {
+ BattleBlackboardFloat angle = 1;
+}
+
+message BattleCompareFloatActionData {
+ int32 compare_type = 1;
+ BattleBlackboardFloat value_a = 2;
+ BattleBlackboardFloat value_b = 3;
+}
+
+message BattleProbabilityActionData {
+ BattleBlackboardFloat probability = 1;
+}
+
+message BattleLaunchProjectileActionData {
+ string projectile_id = 1;
+ bool assign_blackboard = 3;
+}
+
+message BattleSpawnAbilityEntityActionData {
+ string ability_entity_id = 1;
+ bool assign_blackboard = 3;
+ bool set_spawner_as_source = 4;
+}
+
+message BattleSpawnCustomSummonActionData {
+}
+
+message BattleRefreshBuffAttrModifierValueActionData {
+}
+
+message BattleStoreAttributeValueActionData {
+ string key = 1;
+}
+
+message BattleSetBlackboardFromPresetData {
+ repeated string valid_values = 1;
+ string key = 2;
+}
+
+message BattleActionEmptyRes {
+}
+
+message BuffHealModifierRes {
+ int32 enable_side = 1;
+ int32 index = 2;
+ repeated BattleActionRes cond_actions = 3;
+ repeated BattleHealProcessor heal_processors = 4;
+}
+
+message BattleHealProcessor {
+ HealProcessorType type = 1;
+ oneof processor_impl {
+ HealProcessorEmpty heal_processor_empty = 2;
+ BattleModifyHealCalcResult heal_modify_calc_result = 3;
+ InstantModifyAttributeForHealProcessor instant_modify_attribute_for_heal_processor = 4;
+ }
+}
+
+enum HealProcessorType {
+ HEAL_PROCESSOR_EMPTY_TYPE = 0;
+ HEAL_MODIFY_RESULT = 1;
+ HEAL_INSTANT_MODIFY_ATTRIBUTE = 2;
+}
+
+message HealProcessorEmpty {
+}
+
+message BattleModifyHealCalcResult {
+ int32 modify_type = 1;
+ BattleBlackboardFloat multiplier = 2;
+ BattleBlackboardFloat multiplier_cnt = 3;
+}
+
+message InstantModifyAttributeForHealProcessor {
+ HealProcessorType type = 1;
+ int32 target_side = 2;
+ BattleAttrModifier attr_modifier = 3;
+}
+
+message BuffStackingSettings {
+ int32 identifier_type = 1;
+ int32 stacking_type = 2;
+ string stacking_key = 3;
+ string priority_key = 4;
+ int32 priority = 5;
+ int32 max_stack_cnt = 6;
+}
+
+message SkillRes {
+ string skill_id = 1;
+ SkillCostType cost_type = 2;
+ int32 skill_lv = 3;
+ float cost_value = 4;
+ repeated int32 tag_during_attach = 5;
+ BattleBlackboard blackboard = 6;
+ map action_map = 7;
+ bool is_passive = 8;
+ repeated BattleAttrModifier attr_modifiers = 9;
+}
+
+message BattleBlackboardString {
+ bool use_blackboard_key = 1;
+ string blackboard_key = 2;
+ string default_value = 3;
+}
+
+message BattleSequenceRes {
+ int32 sequence_id = 1;
+ repeated BattleActionRes actions = 2;
+}
+
+message ServerBuff {
+ string buff_id = 1;
+ uint64 inst_id = 2;
+ BattleBlackboard blackboard = 3;
+}
+
+message ServerSkill {
+ string skill_id = 1;
+ uint64 inst_id = 2;
+ int32 potential_lv = 3;
+ int32 level = 4;
+ BattleBlackboard blackboard = 5;
+ BattleSkillSource source = 6;
+ repeated string talent_node_ids = 7;
+}
+
+message BattleMgrInfo {
+ repeated ServerBuff buff_list = 1;
+ repeated ServerSkill skill_list = 2;
+ uint32 msg_generation = 3;
+}
+
+message DynamicParameter {
+ int32 value_type = 1;
+ int32 real_type = 2;
+ repeated bool value_bool_list = 3;
+ repeated int64 value_int_list = 4;
+ repeated float value_float_list = 5;
+ repeated string value_string_list = 6;
+}
+
+message EquipAttr {
+ int32 attr_type = 1;
+ int32 modifier_type = 2;
+ double modifier_value = 3;
+ int32 modify_attribute_type = 4;
+}
+
+message EquipData {
+ uint64 equipid = 1;
+ int32 templateid = 2;
+ uint64 equip_char_id = 3;
+ repeated EquipAttr attrs = 4;
+}
+
+message GemData {
+ uint64 gem_id = 1;
+ int32 template_id = 2;
+ int32 total_cost = 3;
+ repeated GemTerm terms = 4;
+ uint64 weapon_id = 5;
+}
+
+message GemTerm {
+ int32 term_num_id = 1;
+ int32 cost = 2;
+}
+
+message ItemBundle {
+ string id = 1;
+ int32 count = 2;
+}
+
+message WeaponData {
+ uint64 inst_id = 1;
+ int32 template_id = 2;
+ uint64 exp = 3;
+ uint64 weapon_lv = 4;
+ uint64 refine_lv = 5;
+ uint64 breakthrough_lv = 6;
+ uint64 equip_char_id = 7;
+ uint64 attach_gem_id = 8;
+}
+
+message ItemInst {
+ uint64 inst_id = 1;
+ bool is_lock = 101;
+ bool is_new = 102;
+ oneof inst_impl {
+ EquipData equip = 2;
+ GemData gem = 3;
+ WeaponData weapon = 4;
+ ItemInstEmpty empty = 31;
+ }
+}
+
+message ItemInstEmpty {
+}
+
+message ScdItemGrid {
+ int32 grid_index = 1;
+ string id = 2;
+ int32 count = 3;
+ ItemInst inst = 4;
+}
+
+message ScdItemGridV2 {
+ int32 grid_index = 1;
+ int32 id = 2;
+ int32 count = 3;
+ ItemInst inst = 4;
+}
+
+message SubmitItem {
+ string item_id = 1;
+ uint32 count = 2;
+ bool is_inst = 3;
+ uint64 inst_id = 4;
+}
+
+message SendMailDef {
+ MailContent mail_content = 1;
+ repeated RewardItem item_list = 2;
+ int64 send_time = 3;
+ int64 expire_time = 4;
+ int32 mail_type = 5;
+ int32 mail_sub_type = 6;
+ bool is_global = 7;
+ bool is_star = 8;
+}
+
+message MailContent {
+ string template_id = 1;
+ string title = 2;
+ string content = 3;
+ string sender_name = 4;
+ string sender_icon = 5;
+ map params = 6;
+}
+
+message RewardItem {
+ string id = 1;
+ int64 count = 2;
+ ItemInst inst = 3;
+}
+
+message GameCondition {
+ string condition_id = 1;
+ int32 condition_type = 2;
+ repeated string params = 3;
+ int32 compare_operator = 4;
+ int32 progress_to_compare = 5;
+ repeated int32 sub_condition_id_logics = 6;
+ repeated GameCondition sub_conditions = 7;
+ int32 scope_mask = 8;
+ bool use_current_scope = 9;
+}
+
+message SendQuestionnaireMailDef {
+ uint64 mail_id = 1;
+ GameCondition condition = 2;
+ repeated RewardItem completed_item_list = 3;
+ int64 expire_time = 4;
+ bool is_star = 5;
+ string unique_id = 6;
+}
+
+message CostItemListDef {
+ repeated SubmitItem item_list = 1;
+}
+
+message SkillLevelInfo {
+ string skill_id = 1;
+ int32 skill_level = 2;
+ int32 skill_max_level = 3;
+ int32 skill_enhanced_level = 4;
+}
+
+message Talent {
+ string latest_break_node = 1;
+ repeated string attr_nodes = 2;
+ repeated string latest_passive_skill_nodes = 3;
+ repeated string latest_factory_skill_nodes = 4;
+}
+
+message RoleBaseInfo {
+ uint64 leader_char_id = 1;
+ Vector leader_position = 2;
+ Vector leader_rotation = 3;
+ string scene_name = 4;
+ uint64 server_ts = 11;
+}
+
+message FriendStrangerUserInfo {
+ uint64 role_id = 1;
+ string uid = 2;
+ string name = 3;
+ string short_id = 4;
+ int64 last_login_time = 5;
+}
+
+message FriendFriendUserInfo {
+ uint64 role_id = 1;
+ string uid = 2;
+ string name = 3;
+ string short_id = 4;
+ int64 last_login_time = 5;
+}
+
+message FriendFriendInfo {
+ FriendFriendUserInfo friend_user_info = 1;
+ int64 create_time = 2;
+}
+
+message FriendRequestInfo {
+ FriendStrangerUserInfo stranger_user_info = 1;
+ int64 create_time = 2;
+}
+
+message FriendFriendSInfo {
+ uint64 role_id = 1;
+ int64 create_time = 2;
+}
+
+message FriendRequestSInfo {
+ uint64 role_id = 1;
+ int64 create_time = 2;
+}
+
+message TempTeamCharSaveData {
+ TrialCharData trial_char_data = 1;
+ int32 hp = 2;
+ int32 ultimate_sp = 3;
+}
+
+message TrialCharData {
+ int32 equip_medicine_num = 2;
+}
+
+message TeamCharId {
+ TeamCharIdType id_type = 1;
+ oneof char_id {
+ uint64 obj_id = 2;
+ string preset_char_id = 3;
+ }
+}
+
+enum TeamCharIdType {
+ obj_id = 0;
+ preset_char_id = 1;
+}
+
+message PassThroughData {
+ repeated string str_args = 1;
+ repeated int64 int_args = 2;
+}
+
+message SceneTrackPoint {
+ string inst_id = 1;
+}
+
+message SceneStaticMapMark {
+ int32 index = 1;
+}
+
+message CsAchieveComplete {
+ string achieve_id = 1;
+}
+
+message ScAchieveComplete {
+ string achieve_id = 1;
+}
+
+message CsAchieveTakeReward {
+ string achieve_id = 1;
+}
+
+message ScActivitySync {
+ repeated ActivityInfo info = 1;
+}
+
+message ActivityInfo {
+ uint64 version = 1;
+ bool is_enable = 2;
+ string id = 3;
+ string name = 4;
+ int64 start_time = 5;
+ int64 end_time = 6;
+ ActivityType typ = 7;
+ ActivityInfoSpecified data = 8;
+}
+
+enum ActivityType {
+ ACTIVITY_TYPE_DEFAULT = 0;
+ ACTIVITY_TYPE_CHECKIN = 1;
+}
+
+message ActivityInfoSpecified {
+ oneof data {
+ ActivityInfoSpecifiedCheckin checkin = 15;
+ }
+}
+
+message ActivityInfoSpecifiedCheckin {
+ int32 login_days = 1;
+ int32 reward_days = 2;
+}
+
+message ScActivityModify {
+ ActivityInfo info = 1;
+}
+
+message CsDailyCheckin {
+ string id = 1;
+}
+
+message ScDailyCheckin {
+ string id = 1;
+}
+
+message CsAdventureTakeRewardAll {
+}
+
+message ScAdventureLevelModify {
+ int32 level = 1;
+ int64 exp = 2;
+}
+
+message ScAdventureSyncAll {
+ int32 level = 1;
+ int64 exp = 2;
+}
+
+message AdventureTask {
+ string task_id = 1;
+ int32 progress = 2;
+ int32 state = 3;
+}
+
+message ScAdventureBookSync {
+ int32 adventure_book_stage = 1;
+ repeated AdventureTask tasks = 2;
+ int32 daily_activation = 3;
+}
+
+message ScDailyActivationModify {
+ int32 daily_activation = 1;
+}
+
+message CsTakeAdventureTaskReward {
+ string task_id = 1;
+}
+
+message CsTakeAllAdventureTaskReward {
+ int32 task_type = 1;
+}
+
+message ScAdventureTaskModify {
+ repeated AdventureTask tasks = 1;
+}
+
+message CsTakeAdventureBookStageReward {
+ int32 adventure_book_stage = 1;
+}
+
+message ScAdventureBookStageModify {
+ int32 adventure_book_stage = 1;
+}
+
+message ScResetDailyAdventureTask {
+}
+
+message CsDevClearBattleInfo {
+}
+
+message CsBattleOp {
+ BattleClientData client_data = 1;
+}
+
+message ScSpawnEnemy {
+ uint32 client_key = 1;
+ repeated uint64 enemy_inst_ids = 2;
+}
+
+message SpawnServerSummonData {
+ uint64 owner_inst_id = 1;
+ uint64 summon_inst_id = 2;
+}
+
+message ScEntityPropertyChange {
+ uint64 inst_id = 1;
+ BattleInfo info = 2;
+}
+
+message ScBattleDebugInfo {
+ string msg = 1;
+}
+
+message ScBattleGenerationChange {
+ uint64 inst_id = 1;
+ uint32 generation = 2;
+}
+
+message ScAttachServerSkill {
+ uint64 inst_id = 1;
+ repeated ServerSkill skills = 2;
+ uint32 generation = 3;
+}
+
+message ScDetachServerSkill {
+ uint64 inst_id = 1;
+ repeated uint64 del_inst_ids = 2;
+ uint32 generation = 3;
+}
+
+message ScAddServerBuff {
+ uint64 inst_id = 1;
+ repeated ServerBuff buffs = 2;
+ uint32 generation = 3;
+}
+
+message ScRemoveServerBuff {
+ uint64 inst_id = 1;
+ repeated uint64 del_inst_ids = 2;
+ uint32 generation = 3;
+}
+
+message ScSyncAllBitset {
+ repeated BitsetData bitset = 1;
+}
+
+message BitsetData {
+ int32 type = 1;
+ repeated uint64 value = 2;
+}
+
+message CsBitsetAdd {
+ int32 type = 1;
+ repeated uint32 value = 2;
+}
+
+message CsBitsetRemoveAll {
+ int32 type = 1;
+}
+
+message CsBitsetRemove {
+ int32 type = 1;
+ repeated uint32 value = 2;
+}
+
+message ScBitsetAdd {
+ int32 type = 1;
+ repeated uint32 value = 2;
+ int32 source = 3;
+}
+
+message ScBitsetRemove {
+ int32 type = 1;
+ repeated uint32 value = 2;
+ int32 source = 3;
+}
+
+message ScBitsetRemoveAll {
+ int32 type = 1;
+ int32 source = 2;
+}
+
+message BlocInfo {
+ string blocid = 1;
+ int32 level = 2;
+ int32 exp = 3;
+}
+
+message ScSyncAllBloc {
+ repeated BlocInfo blocs = 1;
+ repeated ShopInfo shops = 2;
+}
+
+message ShopInfo {
+ string shopid = 1;
+ int32 type = 2;
+ map already_sell_count = 3;
+ repeated DiscountInfo discount_info = 4;
+}
+
+message DiscountInfo {
+ int32 posid = 1;
+ int32 discount = 2;
+}
+
+message ScBlocSyncLevel {
+ string blocid = 1;
+ int32 level = 2;
+ int32 exp = 3;
+}
+
+message CsBlocShopBuy {
+ string shopid = 1;
+ int32 posid = 2;
+ int32 count = 3;
+}
+
+message ScBlocShopBuy {
+ string shopid = 2;
+ int32 posid = 3;
+ int32 count = 4;
+}
+
+message ItemInfo {
+ string res_id = 1;
+ int32 res_count = 2;
+}
+
+message CsCharLevelUp {
+ uint64 char_obj_i_d = 1;
+ repeated ItemInfo items = 2;
+}
+
+message ScCharLevelUp {
+ uint64 char_obj_i_d = 1;
+}
+
+message ScCharSyncLevelExp {
+ uint64 char_obj_i_d = 1;
+ int32 level = 2;
+ int32 exp = 3;
+}
+
+message CsCharSetNormalSkill {
+ uint64 char_obj_i_d = 1;
+ string normal_skillid = 2;
+}
+
+message ScCharSetNormalSkill {
+ uint64 char_obj_i_d = 1;
+ string normal_skillid = 2;
+}
+
+message ScCharSetTeamSkill {
+ uint64 objid = 1;
+ int32 team_idx = 2;
+ string normal_skillid = 3;
+}
+
+message ScCharUnlockSkill {
+ uint64 objid = 1;
+ SkillLevelInfo level_info = 2;
+}
+
+message ScCharGainExpToast {
+ int32 exp = 1;
+ int32 exp_type = 2;
+}
+
+message ScCharSyncStatus {
+ uint64 objid = 1;
+ bool is_dead = 2;
+ BattleInfo battle_info = 3;
+}
+
+message CsCharPotentialUnlock {
+ uint64 char_obj_id = 1;
+ uint32 level = 2;
+ int32 item_id = 3;
+}
+
+message ScCharPotentialUnlock {
+ uint64 char_obj_id = 1;
+ uint32 level = 2;
+}
+
+message ScCharSkillInfos {
+ uint64 char_obj_id = 1;
+ repeated SkillLevelInfo level_infos = 2;
+}
+
+message CsCharSkillLevelUp {
+ uint64 char_obj_id = 1;
+ string skill_id = 2;
+ int32 skill_type = 3;
+}
+
+message ScCharSkillLevelUp {
+ uint64 char_obj_id = 1;
+ SkillLevelInfo level_info = 2;
+}
+
+message CsCharUnlockTalentNode {
+ uint64 char_obj_id = 1;
+ string node_id = 2;
+}
+
+message ScCharUnlockTalentNode {
+ uint64 char_obj_id = 1;
+ string node_id = 2;
+}
+
+message CharInfo {
+ uint64 objid = 1;
+ string templateid = 2;
+ int32 level = 3;
+ int32 exp = 4;
+ map equip_col = 6;
+ string normal_skill = 7;
+ bool is_dead = 8;
+ BattleInfo battle_info = 9;
+ SkillInfo skill_info = 10;
+ map equip_suit = 11;
+ uint64 weapon_id = 12;
+ int64 own_time = 13;
+ int32 equip_medicine_id = 14;
+ uint32 potential_level = 15;
+ Talent talent = 16;
+ BattleMgrInfo battle_mgr_info = 17;
+ CharType char_type = 18;
+ TrialCharData trial_data = 19;
+}
+
+message SkillInfo {
+ repeated SkillLevelInfo level_info = 1;
+ string normal_skill = 2;
+ string ultimate_skill = 3;
+ string combo_skill = 4;
+ string disp_normal_attack_skill = 5;
+}
+
+enum CharType {
+ default_type = 0;
+ trial_type = 1;
+}
+
+message CsCharBagSetTeam {
+ int32 team_index = 1;
+ repeated uint64 char_team = 2;
+ uint64 leader_id = 3;
+}
+
+message CsCharBagSetCurrTeamIndex {
+ int32 team_index = 1;
+ uint64 leader_id = 2;
+}
+
+message CsCharBagSetTeamName {
+ int32 team_index = 1;
+ string team_name = 2;
+}
+
+message CsCharBagTeamChangeFinish {
+ uint64 team_change_token = 1;
+}
+
+message CsCharBagSetTeamLeader {
+ CharBagTeamType team_type = 1;
+ int32 team_index = 2;
+ uint64 leaderid = 3;
+}
+
+enum CharBagTeamType {
+ CHAR_BAG_TEAM_TYPE_MAIN = 0;
+ CHAR_BAG_TEAM_TYPE_TEMP = 1;
+}
+
+message ScCharBagRemoveTrialCharacter {
+ int32 scope_name = 1;
+}
+
+message ScCharBagSetTeam {
+ CharBagTeamType team_type = 1;
+ int32 team_index = 2;
+ uint64 leader_id = 5;
+ repeated uint64 char_team = 3;
+ int32 scope_name = 4;
+}
+
+message CharTeamMemberInfo {
+ string normal_skillid = 1;
+}
+
+message CharTeamInfo {
+ string team_name = 1;
+ repeated uint64 char_team = 2;
+ uint64 leaderid = 3;
+}
+
+message ScSyncCharBagInfo {
+ repeated CharInfo char_info = 1;
+ repeated CharTeamInfo team_info = 2;
+ int32 curr_team_index = 3;
+ uint32 max_char_team_member_count = 4;
+ CharTeamInfo temp_team_info = 5;
+ int32 scope_name = 10;
+ bool is_scope_delete = 11;
+}
+
+message ScCharBagAddChar {
+ CharInfo char = 1;
+ int32 scope_name = 2;
+}
+
+message ScCharBagSetTeamName {
+ int32 team_index = 1;
+ string team_name = 2;
+ int32 scope_name = 3;
+}
+
+message ScCharBagSetTeamLeader {
+ CharBagTeamType team_type = 1;
+ int32 team_index = 2;
+ uint64 leaderid = 3;
+ int32 scope_name = 4;
+}
+
+message ScCharBagSetMaxTeamMemberCount {
+ uint32 max_char_team_member_count = 1;
+ int32 scope_name = 2;
+}
+
+message ScCharBagTeamLeaderNotMatchNtf {
+ CharBagTeamType team_type = 1;
+ int32 team_index = 2;
+ uint64 leaderid = 3;
+ int32 scope_name = 4;
+}
+
+message ScCharBagDelChar {
+ uint64 char_inst_id = 1;
+ int32 scope_name = 2;
+}
+
+message ScCharBagAddCharWithConversionNotify {
+ string char_template_id = 1;
+ int32 scope_name = 2;
+ bool is_converted = 3;
+ string converted_item_id = 4;
+ string converted_reward_id = 5;
+ int32 source_reason = 6;
+}
+
+message SceneCollection {
+ string scene_name = 1;
+ string prefab_id = 2;
+ int32 count = 3;
+}
+
+message ScSceneCollectionSync {
+ repeated SceneCollection collection_list = 1;
+}
+
+message ScSceneCollectionModify {
+ string scene_name = 1;
+ string prefab_id = 2;
+ int32 count = 3;
+}
+
+message Dialog {
+ int32 dialog_id = 1;
+ repeated int32 option_ids = 2;
+ repeated int32 finish_nums = 3;
+}
+
+message CsFinishDialog {
+ int32 dialog_id = 1;
+ repeated int32 option_ids = 2;
+ repeated int32 finish_nums = 3;
+}
+
+message ScFinishDialog {
+ int32 dialog_id = 1;
+ repeated int32 option_ids = 2;
+ repeated int32 finish_nums = 3;
+}
+
+message ScSyncAllDialog {
+ repeated Dialog dialog_list = 1;
+}
+
+message CsEnterDungeon {
+ repeated TeamCharId char_team = 1;
+ string dungeon_id = 2;
+ EnterRacingDungeonParam racing_param = 10;
+}
+
+message EnterRacingDungeonParam {
+ int32 level = 1;
+ string tactics_id = 2;
+}
+
+message CsEnterTrainDungeon {
+ repeated TeamCharId char_team = 1;
+ string dungeon_id = 2;
+ EnterRacingDungeonParam racing_param = 10;
+}
+
+message CsRestartDungeon {
+ string dungeon_id = 1;
+}
+
+message CsLeaveDungeon {
+ string dungeon_id = 1;
+}
+
+message CsDungeonRecoverAp {
+ repeated ItemBundle items = 1;
+ bool use_money = 2;
+}
+
+message CsDungeonTouchEntrance {
+ string dungeon_series_id = 1;
+}
+
+message ScEnterDungeon {
+ string dungeon_id = 3;
+ string scene_id = 4;
+}
+
+message ScRestartDungeon {
+ string dungeon_id = 1;
+}
+
+message ScLeaveDungeon {
+ string dungeon_id = 1;
+}
+
+message ScSyncStamina {
+ uint32 cur_stamina = 1;
+ uint32 max_stamina = 2;
+ int64 next_recover_time = 3;
+ int32 delta = 4;
+}
+
+message ScSyncFullDungeonStatus {
+ uint32 cur_stamina = 1;
+ uint32 max_stamina = 2;
+ int64 next_recover_time = 3;
+}
+
+message CsEquipPuton {
+ uint64 charid = 1;
+ int32 slotid = 2;
+ uint64 equipid = 3;
+}
+
+message ScEquipPuton {
+ uint64 charid = 1;
+ int32 slotid = 2;
+ uint64 equipid = 3;
+ map suitinfo = 4;
+ uint64 put_off_charid = 5;
+ map old_owner_suitinfo = 6;
+}
+
+message CsEquipPutoff {
+ uint64 charid = 1;
+ int32 slotid = 2;
+}
+
+message ScEquipPutoff {
+ uint64 charid = 1;
+ int32 slotid = 2;
+ map suitinfo = 3;
+}
+
+message CsEquipMedicineModify {
+ uint64 char_id = 1;
+ int32 equip_medicine_id = 2;
+}
+
+message ScEquipMedicineModify {
+ uint64 char_id = 1;
+ int32 equip_medicine_id = 2;
+}
+
+message CsEquipRecycle {
+ repeated uint64 equip_instid_list = 1;
+ int32 scope_name = 2;
+}
+
+message ScEquipRecycle {
+ repeated uint64 equip_instid_list = 1;
+ repeated string item_id = 2;
+ repeated int32 item_count = 3;
+ int32 scope_name = 4;
+}
+
+message CsEquipEnhance {
+ uint64 equip_inst_id = 1;
+ uint64 ingredient_inst_id = 2;
+ uint32 attr_index = 3;
+}
+
+message ScEquipEnhance {
+ uint64 equip_inst_id = 1;
+ repeated uint32 enhance = 2;
+ repeated EquipAttr enhance_attrs = 3;
+ EquipAttr base_attr = 4;
+}
+
+message CsEquipProduce {
+ string formula_id = 1;
+}
+
+message ScEquipProduce {
+ string formula_id = 1;
+ uint64 equip_instid = 2;
+}
+
+message ScdFactorySttNode {
+ string id = 1;
+ int32 state = 2;
+ map values = 3;
+ map flags = 4;
+}
+
+message ScdFactorySttPackage {
+ string id = 1;
+ int32 state = 2;
+ map values = 3;
+ map flags = 4;
+ bool hidden = 5;
+}
+
+message ScdFactorySttLayer {
+ string id = 1;
+ int32 state = 2;
+}
+
+message ScdFactorySyncStt {
+ repeated ScdFactorySttNode nodes = 1;
+ repeated ScdFactorySttPackage packages = 2;
+ repeated ScdFactorySttLayer layers = 3;
+}
+
+message ScdFactorySyncFormulaMan {
+ repeated string unlocked = 1;
+ repeated string visible = 2;
+ map modes = 3;
+ repeated string level_up = 4;
+ repeated string product_manual = 5;
+}
+
+message ScdFactorySyncFormulaMode {
+ repeated string building_ids = 1;
+}
+
+message ScdFactorySyncQuickbar {
+ int32 type = 1;
+ repeated string list = 2;
+}
+
+message ScFactorySync {
+ ScdFactorySyncFormulaMan formula_man = 1;
+ ScdFactorySyncStt stt = 2;
+}
+
+message ScFactoryModifyFormulaMan {
+ repeated string new_unlocked = 1;
+ repeated string new_product_manual = 2;
+ repeated string new_level_up = 3;
+}
+
+message ScFactoryModifyStt {
+ repeated ScdFactorySttNode nodes = 1;
+ repeated ScdFactorySttPackage packages = 2;
+ repeated ScdFactorySttLayer layers = 3;
+}
+
+message FactoryFormulaVisiable {
+ repeated string formula_list = 1;
+ repeated string output_list = 2;
+ repeated string source = 3;
+ FactoryFormulaVisibleReason reason = 4;
+}
+
+enum FactoryFormulaVisibleReason {
+ VISIBLE_REASON_GET_NEW_ITEM = 0;
+ VISIBLE_REASON_UNLOCK = 1;
+ VISIBLE_REASON_ITEM_VISIBLE = 2;
+ VISIBLE_REASON_NEW_BUILDING = 3;
+ VISIBLE_REASON_NEW_BUILDING_MODE = 4;
+ VISIBLE_REASON_NEW_FORMULA_DONE = 5;
+}
+
+message ScFactoryModifyVisibleFormula {
+ FactoryFormulaVisiable new_visible = 1;
+}
+
+message ScFactoryModifyFormulaMode {
+ string mode = 1;
+ repeated string new_building_ids = 2;
+}
+
+message ScFactorySyncScope {
+ int32 scope_name = 1;
+ string current_chapter_id = 2;
+ repeated ScdFactorySyncQuickbar quickbars = 4;
+ ScdFactorySyncHubTransportRouteManager transport_route = 5;
+ ScdFactoryStatisticBookmark book_mark = 6;
+}
+
+message ScdFactorySyncHubTransportRouteManager {
+ int64 update_ts = 1;
+ repeated ScdFactoryHubTransportRoute routes = 2;
+}
+
+message ScdFactoryHubTransportRoute {
+ string chapter_id = 1;
+ int32 index = 2;
+ string target_chapter_id = 3;
+ string item_id = 4;
+ int32 item_num = 5;
+ int32 item_num_max = 6;
+ int32 status = 7;
+ int64 progress = 8;
+}
+
+message ScdFactoryStatisticBookmark {
+ repeated string bookmark_item_ids = 1;
+}
+
+message CsFactoryStatisticSetBookmarkItemIds {
+ repeated string item_ids = 1;
+ bool is_remove = 2;
+ int32 scope_name = 11;
+}
+
+message ScFactoryModifyStatisticBookmark {
+ ScdFactoryStatisticBookmark book_mark = 1;
+ int32 scope_name = 11;
+}
+
+message CsFactoryHubTransportRouteSet {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ int32 index = 3;
+ string target_chapter_id = 4;
+ string item_id = 5;
+ int32 item_num_max = 6;
+}
+
+message CsFactoryHubTransportRouteReset {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ int32 index = 3;
+}
+
+message CsFactoryHubTransportRouteRestart {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ int32 index = 3;
+}
+
+message ScFactoryHubTransportRouteModify {
+ ScdFactorySyncHubTransportRouteManager transport_route_modified = 1;
+}
+
+message ScFactoryReleaseScope {
+ int32 scope_name = 1;
+ repeated string delete_chapter_id_list = 11;
+}
+
+message ScFactoryModifyScope {
+ int32 scope_name = 1;
+ string current_chapter_id = 2;
+ repeated string delete_chapter_id_list = 11;
+}
+
+message ScFactoryModifyQuickbar {
+ int32 scope_name = 1;
+ repeated ScdFactorySyncQuickbar quickbars = 2;
+}
+
+message ScFactorySoilReclaim {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ uint32 node_id = 3;
+ bool result = 4;
+}
+
+message ScFactorySoilWater {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ uint32 node_id = 3;
+ bool result = 4;
+}
+
+message ScFactorySoilHarvest {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ uint32 node_id = 3;
+ bool result = 4;
+}
+
+message ScFactorySoilCancel {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ uint32 node_id = 3;
+ bool result = 4;
+}
+
+message CsFactorySttUnlockLayer {
+ string layer_id = 1;
+}
+
+message CsFactorySttUnlockNode {
+ string node_id = 1;
+}
+
+message CsFactoryQuickbarSetOne {
+ int32 scope_name = 1;
+ int32 type = 2;
+ int32 index = 3;
+ string item_id = 4;
+}
+
+message CsFactoryQuickbarMoveOne {
+ int32 scope_name = 1;
+ int32 type = 2;
+ int32 from_index = 3;
+ int32 to_index = 4;
+}
+
+message CsFactorySoilReclaim {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ uint32 node_id = 3;
+ uint64 char_object_id = 4;
+}
+
+message CsFactorySoilWater {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ uint32 node_id = 3;
+ uint64 char_object_id = 4;
+}
+
+message CsFactorySoilHarvest {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ uint32 node_id = 3;
+ uint64 char_object_id = 4;
+}
+
+message CsFactorySoilCancel {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ uint32 node_id = 3;
+}
+
+message CsFactorySoilFarmlandLevelUp {
+ int32 scope_name = 1;
+ string chapter_id = 2;
+ string scene_name = 3;
+ int32 index = 4;
+ int32 to_level = 5;
+}
+
+message ScFactorySyncOfflineInfo {
+ int64 max_offline_calc_sec = 1;
+ int64 end_offline_calc_ts = 2;
+ int64 offline_sec = 3;
+ int64 miss_offline_sec = 4;
+}
+
+message CsFactoryHubWorkshopMake {
+ int32 scope_name = 1;
+ uint32 node_id = 2;
+ string formula_id = 3;
+ int32 multi = 4;
+}
+
+message ScFactoryHubWorkshopMake {
+ bool success = 1;
+}
+
+message CsFactoryProductManualUnlock {
+ int32 scope_name = 1;
+ repeated string id_list = 2;
+}
+
+message ScFactoryProductManualUnlock {
+ int32 scope_name = 1;
+ repeated string id_list = 2;
+}
+
+message CsFactoryManuallyWorkExec {
+ int32 scope_name = 1;
+ string formula_id = 2;
+ int32 count = 3;
+}
+
+message ScFactoryManuallyWorkExec {
+ int32 scope_name = 1;
+ string formula_id = 2;
+ int32 count = 3;
+}
+
+message ScdVec3Int {
+ int32 x = 1;
+ int32 y = 2;
+ int32 z = 3;
+}
+
+message ScdRectInt {
+ int32 x = 1;
+ int32 y = 2;
+ int32 z = 3;
+ int32 l = 4;
+ int32 w = 5;
+ int32 h = 6;
+}
+
+message ScdFacSubPort {
+ ScdVec3Int position = 1;
+ ScdVec3Int direction = 2;
+}
+
+message ScdFactorySyncItem {
+ string id = 1;
+ int32 count = 2;
+ int64 tms = 11;
+}
+
+message ScdFacFluidReactionFormula {
+ string formula_id = 1;
+ int64 current_progress = 2;
+ bool in_block = 3;
+}
+
+message ScdFactoryHsCt {
+ uint32 component_id = 1;
+ repeated uint32 item_in = 2;
+ repeated uint32 item_out = 3;
+ repeated int32 index_in = 4;
+ repeated int32 index_out = 5;
+}
+
+message ScdFactoryHsFb {
+ uint32 component_id = 1;
+ oneof component_payload {
+ ScdFactoryHsFbCache cache = 2;
+ ScdFactoryHsFbProducer producer = 3;
+ ScdFactoryHsFbCollector collector = 4;
+ ScdFactoryHsFbBurnPower burn_power = 5;
+ ScdFactoryHsFbCacheTransport cache_transport = 6;
+ ScdFactoryHsFbGridBox grid_box = 7;
+ ScdFactoryHsFbBoxRouterM1 box_router_m1 = 8;
+ ScdFactoryHsFbBoxBridge box_bridge = 9;
+ ScdFactoryHsFbFluidBridge fluid_bridge = 12;
+ ScdFactoryHsFbFluidRouterM1 fluid_router_m1 = 13;
+ ScdFactoryHsFbFluidContainer fluid_container = 14;
+ ScdFactoryHsFbFluidPumpIn fluid_pump_in = 15;
+ ScdFactoryHsFbBattle battle = 16;
+ ScdFactoryHsFbBatteryBurn battery_burn = 17;
+ ScdFactoryHsFbFluidSpray fluid_spray = 18;
+ ScdFactoryHsFbFluidPumpOut fluid_pump_out = 19;
+ ScdFactoryHsFbFluidConsume fluid_consume = 20;
+ ScdFactoryHsFbFluidReaction fluid_reaction = 21;
+ ScdFactoryHsFbWaterCollector water_collector = 22;
+ }
+}
+
+message ScdFactoryHsFbCache {
+ repeated uint32 items = 1;
+}
+
+message ScdFactoryHsFbProducer {
+ int64 progress_incr_per_ms = 1;
+ string formula_id = 2;
+ int64 current_progress = 3;
+}
+
+message ScdFactoryHsFbCollector {
+ int64 progress_incr_per_ms = 1;
+ int64 current_progress = 2;
+}
+
+message ScdFactoryHsFbBurnPower {
+ int64 progress_decr_per_ms = 1;
+ int64 current_least_progress = 2;
+}
+
+message ScdFactoryHsFbCacheTransport {
+ int64 progress_incr_per_ms = 1;
+ int64 current_progress = 2;
+}
+
+message ScdFactoryHsFbGridBox {
+ repeated uint32 items = 1;
+}
+
+message ScdFactoryHsFbBoxRouterM1 {
+ repeated uint32 items = 1;
+}
+
+message ScdFactoryHsFbBoxBridge {
+ repeated uint32 items = 1;
+}
+
+message ScdFactoryHsFbFluidBridge {
+ repeated uint32 items = 1;
+}
+
+message ScdFactoryHsFbFluidRouterM1 {
+ repeated uint32 items = 1;
+}
+
+message ScdFactoryHsFbFluidContainer {
+ repeated uint32 items = 1;
+ bool infinite = 2;
+}
+
+message ScdFactoryHsFbFluidPumpIn {
+ int64 progress_incr_per_ms = 1;
+ int64 current_progress = 2;
+}
+
+message ScdFactoryHsFbBattle {
+ int32 energy_current = 1;
+ int32 energy_max = 2;
+ bool in_overloading = 3;
+}
+
+message ScdFactoryHsFbBatteryBurn {
+ int32 energy_loaded = 1;
+ int32 energy_current = 2;
+}
+
+message ScdFactoryHsFbFluidSpray {
+ int64 progress_incr_per_ms = 1;
+ int64 current_progress = 2;
+ int32 last_round_spray_count = 3;
+}
+
+message ScdFactoryHsFbFluidPumpOut {
+ int64 progress_incr_per_ms = 1;
+ int64 current_progress = 2;
+ int32 last_round_pump_count = 3;
+}
+
+message ScdFactoryHsFbFluidConsume {
+ int64 progress_incr_per_ms = 1;
+ int64 current_progress = 2;
+}
+
+message ScdFactoryHsFbFluidReaction {
+ repeated ScdFacFluidReactionFormula formulas = 1;
+ int64 progress_incr_per_ms = 2;
+}
+
+message ScdFactoryHsFbWaterCollector {
+ int64 progress_incr_per_ms = 1;
+ int64 current_progress = 2;
+}
+
+message ScdFactoryHsCe {
+ ScdFactoryHsCeEventtype event_type = 1;
+ repeated uint32 event_param = 2;
+}
+
+enum ScdFactoryHsCeEventtype {
+ SCD_FACTORY_HS_CE_None = 0;
+ SCD_FACTORY_HS_CE_InPowerUp = 1;
+ SCD_FACTORY_HS_CE_InPowerDown = 2;
+ SCD_FACTORY_HS_CE_FluidHeightChange = 3;
+ SCD_FACTORY_HS_CE_FluidContentChange = 4;
+ SCD_FACTORY_HS_CE_ProducerChangeFormula = 5;
+ SCD_FACTORY_HS_CE_BusLoaderChangeLastPutIn = 6;
+ SCD_FACTORY_HS_CE_BattleEnergyChange = 7;
+ SCD_FACTORY_HS_CE_JoinWorking = 8;
+ SCD_FACTORY_HS_CE_LeaveWorking = 9;
+ SCD_FACTORY_HS_CE_RegionPower = 10;
+ SCD_FACTORY_HS_CE_BlockComponent = 11;
+ SCD_FACTORY_HS_CE_UnBlockComponent = 12;
+ SCD_FACTORY_HS_CE_SubPortBlock = 21;
+ SCD_FACTORY_HS_CE_SubPortUnBlock = 22;
+ SCD_FACTORY_HS_CE_ChangeProduct = 31;
+}
+
+message ScdFactoryHsBb {
+ ScdFactoryHsBbPower power = 1;
+}
+
+message ScdFactoryHsBbPower {
+ bool is_stop_by_power = 1;
+ int64 power_cost_sum = 2;
+ int64 power_save_max = 3;
+ int64 power_save_current = 4;
+ int64 power_gen_last_sec = 5;
+}
+
+message ScdFacCom {
+ uint32 component_id = 1;
+ int32 component_type = 2;
+ oneof component_payload {
+ ScdFacComPortManager port_manager = 9;
+ ScdFacComInventory inventory = 10;
+ ScdFacComCache cache = 11;
+ ScdFacComSelector selector = 12;
+ ScdFacComCollector collector = 13;
+ ScdFacComProducer producer = 14;
+ ScdFacComBoxConveyor box_conveyor = 15;
+ ScdFacComBoxRouterM1 box_router_m1 = 16;
+ ScdFacComBurnPower burn_power = 17;
+ ScdFacComCacheTransport cache_transport = 18;
+ ScdFacComStablePower stable_power = 19;
+ ScdFacComPowerPole power_pole = 20;
+ ScdFacComPowerSave power_save = 22;
+ ScdFacComBusLoader bus_loader = 23;
+ ScdFacComTravelPole travel_pole = 24;
+ ScdFacComGridBox grid_box = 25;
+ ScdFacComBoxBridge box_bridge = 26;
+ ScdFacComBattle battle = 27;
+ ScdFacComFluidConveyor fluid_conveyor = 28;
+ ScdFacComFluidBridge fluid_bridge = 29;
+ ScdFacComFluidRouterM1 fluid_router_m1 = 30;
+ ScdFacComFormulaMan formula_man = 31;
+ ScdFacComFluidContainer fluid_container = 32;
+ ScdFacComFluidPumpIn fluid_pump_in = 33;
+ ScdFacComBatteryBurn battery_burn = 34;
+ ScdFacComSubHub sub_hub = 35;
+ ScdFacComWaterCollector water_collector = 36;
+ ScdFacComSoil soil = 37;
+ ScdFacComFluidSpray fluid_spray = 38;
+ ScdFacComFluidPumpOut fluid_pump_out = 39;
+ ScdFacComFluidConsume fluid_consume = 40;
+ ScdFacComFluidReaction fluid_reaction = 41;
+ }
+}
+
+message ScdFacComPortManager {
+ repeated ScdFacComSubPort ports = 1;
+}
+
+message ScdFacComSubPort {
+ int32 index = 1;
+ uint32 owner_com_id = 2;
+ uint32 touch_com_id = 3;
+ bool in_block = 4;
+}
+
+message ScdFacComInventory {
+ map items = 1;
+}
+
+message ScdFacComCache {
+ repeated ScdFactorySyncItem items = 1;
+ int32 size = 2;
+}
+
+message ScdFacComSelector {
+ string selected_item_id = 1;
+}
+
+message ScdFacComCollector {
+ repeated ScdFactorySyncItem items_round = 1;
+ int64 current_progress = 2;
+ bool in_block = 4;
+}
+
+message ScdFacComProducer {
+ string formula_id = 1;
+ int64 current_progress = 2;
+ bool in_block = 4;
+ bool in_produce = 5;
+ string last_formula_id = 11;
+}
+
+message ScdFacComBoxConveyor {
+ int64 last_pop_tms = 1;
+ repeated ScdFactorySyncItem items = 2;
+}
+
+message ScdFacComBoxRouterM1 {
+ ScdFactorySyncItem hold_item = 1;
+ bool m_in = 2;
+}
+
+message ScdFacComBurnPower {
+ int64 current_least_progress = 1;
+ string current_burn_item_id = 2;
+ int64 power_gen_per_sec = 3;
+}
+
+message ScdFacComCacheTransport {
+ int64 current_progress = 1;
+ int64 total_progress = 2;
+ bool auto_transport = 3;
+ bool in_use = 5;
+}
+
+message ScdFacComStablePower {
+ int64 power_gen_per_sec = 3;
+}
+
+message ScdFacComPowerPole {
+}
+
+message ScdFacComPowerSave {
+ int64 power_save = 1;
+}
+
+message ScdFacComBusLoader {
+ string last_putin_item_id = 1;
+}
+
+message ScdFacComTravelPole {
+ uint32 default_next = 11;
+}
+
+message ScdFacComGridBox {
+ repeated ScdFactorySyncItem items = 1;
+}
+
+message ScdFacComBoxBridge {
+ ScdFactorySyncItem hold_item = 1;
+}
+
+message ScdFacComBattle {
+ int32 energy_current = 1;
+ int32 energy_max = 2;
+ bool in_overloading = 3;
+}
+
+message ScdFacComFluidConveyor {
+ string item_id = 1;
+ int32 fluid_height = 2;
+ repeated int64 box_tms_list = 3;
+}
+
+message ScdFacComFluidBridge {
+ ScdFactorySyncItem hold_item = 1;
+}
+
+message ScdFacComFluidRouterM1 {
+ ScdFactorySyncItem hold_item = 1;
+ bool m_in = 2;
+}
+
+message ScdFacComFormulaMan {
+ repeated string formula_ids = 1;
+ string locked_formula_id = 2;
+ string current_mode = 11;
+ string current_group = 12;
+}
+
+message ScdFacComFluidContainer {
+ ScdFactorySyncItem hold_item = 1;
+ bool infinite = 2;
+}
+
+message ScdFacComFluidPumpIn {
+ ScdFactorySyncItem item_round = 1;
+ int64 current_progress = 2;
+ string source_inst_key = 3;
+ bool in_block = 4;
+ bool in_produce = 5;
+}
+
+message ScdFacComBatteryBurn {
+ int32 energy_loaded = 1;
+ int32 energy_current = 2;
+}
+
+message ScdFacComSubHub {
+ int32 level = 1;
+}
+
+message ScdFacComWaterCollector {
+ repeated ScdFactorySyncItem items_round = 1;
+ int64 current_progress = 2;
+ bool in_block = 4;
+ bool in_produce = 5;
+}
+
+message ScdFacComSoil {
+ int32 step_cursor = 1;
+ int32 water_got = 2;
+ int64 in_grow_tms = 3;
+}
+
+message ScdFacComFluidSpray {
+ int64 current_progress = 1;
+ bool in_produce = 2;
+ int32 last_round_spray_count = 3;
+ bool in_block = 11;
+}
+
+message ScdFacComFluidPumpOut {
+ int32 round_count = 1;
+ int64 current_progress = 2;
+ string target_inst_key = 3;
+ bool in_block = 4;
+ bool in_produce = 5;
+}
+
+message ScdFacComFluidConsume {
+ int32 round_count = 1;
+ int64 current_progress = 2;
+ bool in_block = 3;
+ bool in_produce = 4;
+ string latest_item_id = 5;
+}
+
+message ScdFacComFluidReaction {
+ repeated ScdFacFluidReactionFormula formulas = 1;
+ bool in_block = 2;
+ bool in_produce = 3;
+}
+
+message ScdFacNode {
+ uint32 node_id = 1;
+ int32 node_type = 2;
+ string template_id = 3;
+ ScdFacTransform transform = 4;
+ bool is_deactive = 5;
+ ScdFacInteractiveObject interactive_object = 6;
+ ScdFacDynamicProperty dynamic_property = 7;
+ ScdFacNodePower power = 8;
+ string inst_key = 9;
+ uint32 flag = 10;
+ map component_pos = 11;
+ repeated ScdFacCom components = 12;
+ uint64 stable_id = 13;
+}
+
+message ScdFacTransform {
+ ScdVec3Int position = 1;
+ ScdVec3Int direction = 2;
+ ScdFacMesh mesh = 3;
+ int32 map_id = 4;
+ Vector world_position = 9;
+ Vector world_rotation = 10;
+ ScdFacSubPort bc_port_in = 11;
+ ScdFacSubPort bc_port_out = 12;
+}
+
+message ScdFacMesh {
+ int32 mesh_type = 1;
+ repeated ScdVec3Int points = 2;
+}
+
+message ScdFacInteractiveObject {
+ uint64 object_id = 1;
+}
+
+message ScdFacDynamicProperty {
+ map values = 1;
+}
+
+message ScdFacDynamicPropertyValue {
+ oneof value {
+ bool bool_value = 1;
+ int64 int_value = 2;
+ uint64 uint_value = 3;
+ double double_value = 4;
+ string string_value = 5;
+ }
+}
+
+message ScdFacNodePower {
+ bool in_power = 1;
+ int64 power_cost = 2;
+ bool need_in_power = 11;
+ int64 power_cost_show = 12;
+}
+
+message ScdFactorySyncScene {
+ int32 scene_id = 1;
+ ScdFactorySyncSceneBandwidth bandwidth = 5;
+ repeated ScdFactorySyncScenePanel panels = 6;
+ repeated ScdFactorySyncScenePanel soil_panels = 7;
+ map settlements = 10;
+}
+
+message ScdFactorySyncSceneBandwidth {
+ int32 current = 1;
+ int32 max = 2;
+ int32 travel_pole_current = 3;
+ int32 travel_pole_max = 4;
+ int32 battle_current = 5;
+ int32 battle_max = 6;
+ int32 sp_current = 11;
+ int32 sp_max = 12;
+}
+
+message ScdFactorySyncScenePanel {
+ int32 index = 1;
+ int32 level = 2;
+ repeated ScdRectInt main_mesh = 3;
+}
+
+message ScdFactorySyncMap {
+ int32 map_id = 1;
+ repeated ScdFactorySyncMapWire wires = 2;
+}
+
+message ScdFactorySyncMapWire {
+ uint64 index = 1;
+ uint64 from_com_id = 2;
+ uint64 to_com_id = 3;
+}
+
+message ScdFactorySyncBlackboard {
+ uint32 inventory_node_id = 1;
+ ScdFactorySyncBlackboardPower power = 11;
+}
+
+message ScdFactorySyncBlackboardPower {
+ int64 power_cost = 1;
+ int64 power_gen = 2;
+ int64 power_save_max = 3;
+ int64 power_save_current = 4;
+ bool is_stop_by_power = 5;
+}
+
+message ScdFactoryStatisticLastday {
+ repeated ScdFactoryStatisticLastdayDay days = 1;
+}
+
+message ScdFactoryStatisticLastdayDay {
+ int64 day_ts = 1;
+ map from_productivity = 2;
+}
+
+message ScdFactoryStatisticOther {
+ int32 power_net_length_sum = 1;
+ int32 in_power_building = 2;
+ float power_net_coverage = 3;
+}
+
+message ScdFactoryStatisticRecord {
+ int32 rank = 1;
+ repeated int64 points_gen = 2;
+ repeated int64 points_cost = 3;
+}
+
+message ScdFactorySyncPinBoard {
+ repeated ScdFactoryPinCard cards = 1;
+}
+
+message ScdFactoryPinCard {
+ int32 pos = 1;
+ string str_id = 2;
+ uint64 num_id = 3;
+}
+
+message ScFactorySyncChapter {
+ int64 tms = 1;
+ string chapter_id = 2;
+ repeated ScdFacNode nodes = 3;
+ repeated ScdFactorySyncScene scenes = 4;
+ ScdFactorySyncBlackboard blackboard = 5;
+ ScdFactorySyncPinBoard pin_board = 6;
+ repeated ScdFactorySyncMap maps = 7;
+ ScdFactorySyncStatistic statistic = 9;
+}
+
+message ScdFactorySyncStatistic {
+ ScdFactoryStatisticOther other = 3;
+ ScdFactoryStatisticLastday last_day = 4;
+}
+
+message ScFactoryModifyChapterNodes {
+ int64 tms = 1;
+ string chapter_id = 2;
+ repeated ScdFacNode nodes = 3;
+ repeated uint32 remove_nodes = 4;
+}
+
+message ScFactoryModifyChapterComponents {
+ int64 tms = 1;
+ string chapter_id = 2;
+ repeated ScdFacCom components = 3;
+}
+
+message ScFactoryModifyChapterMap {
+ int64 tms = 1;
+ string chapter_id = 2;
+ int32 map_id = 3;
+ repeated ScdFactorySyncMapWire wires = 11;
+ repeated uint64 remove_wires = 12;
+}
+
+message ScFactoryModifyChapterScene {
+ int64 tms = 1;
+ string chapter_id = 2;
+ int32 scene_id = 3;
+ ScdFactorySyncSceneBandwidth bandwidth = 13;
+ repeated ScdFactorySyncScenePanel panels = 14;
+ repeated ScdFactorySyncScenePanel soil_panels = 15;
+ map settlements = 20;
+}
+
+message ScFactoryModifyChapterBlackboard {
+ int64 tms = 1;
+ string chapter_id = 2;
+ ScdFactorySyncBlackboard blackboard = 3;
+}
+
+message ScFactoryModifyChapterPinBoard {
+ int64 tms = 1;
+ string chapter_id = 2;
+ repeated ScdFactoryPinCard modified = 3;
+ repeated int32 release_pos = 4;
+}
+
+message ScFactoryHs {
+ int64 tms = 1;
+ repeated ScdFactoryHsCt ct_list = 2;
+ repeated ScdFactoryHsFb fb_list = 3;
+ repeated ScdFactoryHsCe ce_list = 4;
+ ScdFactoryHsBb blackboard = 5;
+ string chapter_id = 11;
+}
+
+message ScFactoryHsSync {
+ int64 tms = 1;
+ repeated ScdFacCom cc_list = 2;
+ repeated ScdFactoryHsFb fb_list = 3;
+ ScdFactorySyncBlackboard blackboard = 4;
+ string chapter_id = 11;
+}
+
+message ScFactoryModifyStatistic {
+ string chapter_id = 1;
+ ScdFactoryStatisticOther other = 3;
+ ScdFactoryStatisticLastday last_day = 4;
+}
+
+message ScFactoryStatisticRequire {
+ string chapter = 1;
+ ScdFactoryStatisticRecord power = 2;
+ map productivity = 3;
+}
+
+message CsFactoryHsFb {
+ string chapter_id = 1;
+ repeated uint32 node_id_list = 21;
+ bool undo = 3;
+}
+
+message CsFactoryStatisticRequire {
+ int32 rank_power = 1;
+ int32 rank_productivity = 2;
+ repeated string productivity_item_ids = 3;
+ bool all_productivity = 4;
+ string chapter_id = 12;
+}
+
+message CsFactoryPinSet {
+ int32 scope_name = 1;
+ int32 pos = 3;
+ string str_id = 4;
+ uint64 num_id = 5;
+ bool release = 11;
+}
+
+message CsFactoryObserverOp {
+ string index = 1;
+ string chapter_id = 2;
+ int32 map_id = 3;
+ uint32 node_id = 4;
+ uint64 node_stable_id = 5;
+ uint32 component_id = 6;
+ string op_type = 11;
+ oneof op_payload {
+ CsdFactoryObserverPayloadOpCheckoutRelationBoard checkout_relation_board = 21;
+ CsdFactoryObserverPayloadOpCheckoutPowerConnectionMap checkout_power_connection_map = 22;
+ CsdFactoryObserverPayloadOpCheckoutOutsideResource checkout_outside_resource = 23;
+ }
+}
+
+message CsdFactoryObserverPayloadOpCheckoutRelationBoard {
+}
+
+message CsdFactoryObserverPayloadOpCheckoutPowerConnectionMap {
+}
+
+message CsdFactoryObserverPayloadOpCheckoutOutsideResource {
+}
+
+message ScFactoryObserverRet {
+ string op_index = 1;
+ bool success = 2;
+ string err_message = 3;
+ string chapter_id = 4;
+ string ret_type = 11;
+ oneof ret_payload {
+ ScdFactoryObserverPayloadRetCheckoutRelationBoard checkout_relation_board = 21;
+ ScdFactoryObserverPayloadRetCheckoutPowerConnectionMap checkout_power_connection_map = 22;
+ ScdFactoryObserverPayloadRetCheckoutOutsideResource checkout_outside_resource = 23;
+ }
+}
+
+message ScdFactoryObserverPayloadRetCheckoutRelationBoard {
+ repeated ScdFactoryObserverPayloadRetCheckoutRelationBoardConveyorElem conveyor_elems = 1;
+}
+
+message ScdFactoryObserverPayloadRetCheckoutRelationBoardConveyorElem {
+ uint32 conveyor_com_id = 1;
+ uint32 conveyor_node_id = 2;
+ uint32 from_com_id = 11;
+ uint32 from_node_id = 12;
+ uint64 from_node_stable_id = 13;
+ string from_node_template_id = 14;
+ uint32 to_com_id = 21;
+ uint32 to_node_id = 22;
+ uint64 to_node_stable_id = 23;
+ string to_node_template_id = 24;
+}
+
+message ScdFactoryObserverPayloadRetCheckoutPowerConnectionMap {
+ repeated ScdFactoryObserverPayloadRetCheckoutPowerConnectionMapConnection connections = 1;
+ repeated ScdFactoryObserverPayloadRetCheckoutPowerConnectionMapNodeElem node_elems = 2;
+}
+
+message ScdFactoryObserverPayloadRetCheckoutPowerConnectionMapConnection {
+ uint64 index = 1;
+ uint32 from_com_id = 11;
+ uint32 from_node_id = 12;
+ uint64 from_node_stable_id = 13;
+ string from_node_template_id = 14;
+ uint32 to_com_id = 21;
+ uint32 to_node_id = 22;
+ uint64 to_node_stable_id = 23;
+ string to_node_template_id = 24;
+}
+
+message ScdFactoryObserverPayloadRetCheckoutPowerConnectionMapNodeElem {
+ uint32 node_id = 1;
+ uint64 node_stable_id = 2;
+ string node_template_id = 3;
+ uint32 com_id = 4;
+ uint64 logic_id = 7;
+ int32 distance = 11;
+ repeated uint32 neighbors = 12;
+}
+
+message ScdFactoryObserverPayloadRetCheckoutOutsideResource {
+ map place_bandwidth = 1;
+ map place_bandwidth_use = 2;
+ repeated ScdFactoryObserverPayloadRetCheckoutOutsideResourceNodeUse place_bandwidth_node_uses = 3;
+ map place_bandwidth_sp = 11;
+ map place_bandwidth_sp_use = 12;
+ repeated ScdFactoryObserverPayloadRetCheckoutOutsideResourceNodeUse place_bandwidth_sp_node_uses = 13;
+}
+
+message ScdFactoryObserverPayloadRetCheckoutOutsideResourceNodeUse {
+ uint32 node_id = 1;
+ string scene_name = 2;
+ int32 use = 3;
+}
+
+message CsFactoryOp {
+ string index = 1;
+ FactoryOpType op_type = 2;
+ string chapter_id = 3;
+ oneof op_payload {
+ CsdFactoryOpPlace place = 11;
+ CsdFactoryOpPlaceConveyor place_conveyor = 12;
+ CsdFactoryOpDismantle dismantle = 13;
+ CsdFactoryOpSetSelectTarget set_select_target = 15;
+ CsdFactoryOpEnableNode enable_node = 16;
+ CsdFactoryOpMoveNode move_node = 17;
+ CsdFactoryOpDismantleBoxConveyor dismantle_box_conveyor = 18;
+ CsdFactoryOpRepairNode repair_node = 19;
+ CsdFactoryOpMoveItemCacheToCache move_item_cache_to_cache = 20;
+ CsdFactoryOpMoveItemBagToCache move_item_bag_to_cache = 21;
+ CsdFactoryOpMoveItemCacheToBag move_item_cache_to_bag = 22;
+ CsdFactoryOpMoveItemDepotToCache move_item_depot_to_cache = 23;
+ CsdFactoryOpMoveItemCacheToDepot move_item_cache_to_depot = 24;
+ CsdFactoryOpMoveItemConveyorToBag move_item_conveyor_to_bag = 25;
+ CsdFactoryOpCacheTransportTransfer cache_transport_transfer = 26;
+ CsdFactoryOpCacheTransportEnable cache_transport_enable = 27;
+ CsdFactoryOpSetTravelPoleDefaultNext set_travel_pole_default_next = 28;
+ CsdFactoryOpUseHealTowerPoint use_heal_tower_point = 29;
+ CsdFactoryOpBattleRepair battle_repair = 30;
+ CsdFactoryOpAddConnection add_connection = 31;
+ CsdFactoryOpDelConnection del_connection = 32;
+ CsdFactoryOpGridBoxInnerMove grid_box_inner_move = 41;
+ CsdFactoryOpGridBoxInnerSplit grid_box_inner_split = 42;
+ CsdFactoryOpMoveItemBagToGridBox move_item_bag_to_grid_box = 43;
+ CsdFactoryOpMoveItemGridBoxToBag move_item_grid_box_to_bag = 44;
+ CsdFactoryOpMoveItemDepotToGridBox move_item_depot_to_grid_box = 45;
+ CsdFactoryOpMoveItemGridBoxToDepot move_item_grid_box_to_depot = 46;
+ CsdFactoryOpMoveAllCacheOutItemToBag move_all_cache_out_item_to_bag = 47;
+ CsdFactoryOpQuickPutBattery quick_put_battery = 48;
+ CsdFactoryOpChangeProducerMode change_producer_mode = 51;
+ CsdFactoryOpReverseFluidConveyorDirection reverse_fluid_conveyor_direction = 52;
+ CsdFactoryOpDismantleBatch dismantle_batch = 53;
+ CsdFactoryOpTakeOutFluidFromLiquidBody take_out_fluid_from_liquid_body = 61;
+ CsdFactoryOpPutInFluidToLiquidBody put_in_fluid_to_liquid_body = 62;
+ CsdFactoryOpFillingFluidComWithBag filling_fluid_com_with_bag = 63;
+ CsdFactoryOpFillingFluidComWithDepot filling_fluid_com_with_depot = 64;
+ }
+}
+
+enum FactoryOpType {
+ NONE = 0;
+ PLACE = 1;
+ PLACE_CONVEYOR = 2;
+ DISMANTLE = 3;
+ SET_SELECT_TARGET = 5;
+ ENABLE_NODE = 6;
+ MOVE_NODE = 7;
+ DISMANTLE_BOX_CONVEYOR = 8;
+ REPAIR_NODE = 9;
+ MOVE_ITEM_CACHE_TO_CACHE = 10;
+ MOVE_ITEM_BAG_TO_CACHE = 11;
+ MOVE_ITEM_CACHE_TO_BAG = 12;
+ MOVE_ITEM_DEPOT_TO_CACHE = 13;
+ MOVE_ITEM_CACHE_TO_DEPOT = 14;
+ MOVE_ITEM_CONVEYOR_TO_BAG = 15;
+ CACHE_TRANSPORT_TRANSFER = 16;
+ CACHE_TRANSPORT_ENABLE = 17;
+ SET_TRAVEL_POLE_DEFAULT_NEXT = 18;
+ USE_HEAL_TOWER_POINT = 19;
+ BATTLE_REPAIR = 20;
+ ADD_CONNECTION = 21;
+ DEL_CONNECTION = 22;
+ GRID_BOX_INNER_MOVE = 31;
+ GRID_BOX_INNER_SPLIT = 32;
+ MOVE_ITEM_BAG_TO_GRID_BOX = 33;
+ MOVE_ITEM_GRID_BOX_TO_BAG = 34;
+ MOVE_ITEM_DEPOT_TO_GRID_BOX = 35;
+ MOVE_ITEM_GRID_BOX_TO_DEPOT = 36;
+ MOVE_ALL_CACHE_OUT_ITEM_TO_BAG = 37;
+ QUICK_PUT_BATTERY = 38;
+ CHANGE_PRODUCER_MODE = 41;
+ REVERSE_FLUID_CONVEYOR_DIRECTION = 42;
+ DISMANTLE_BATCH = 43;
+ TAKE_OUT_FLUID_FROM_LIQUID_BODY = 51;
+ PUT_IN_FLUID_TO_LIQUID_BODY = 52;
+ FILLING_FLUID_COM_WITH_BAG = 53;
+ FILLING_FLUID_COM_WITH_DEPOT = 54;
+}
+
+message CsdFactoryOpPlace {
+ string template_id = 1;
+ ScdVec3Int position = 2;
+ ScdVec3Int direction = 3;
+ int32 map_id = 4;
+ CsdFactoryInteractiveParam interactive_param = 5;
+}
+
+message CsdFactoryInteractiveParam {
+ Vector position = 1;
+ Vector rotation = 2;
+ map properties = 3;
+}
+
+message CsdFactoryOpPlaceConveyor {
+ string template_id = 1;
+ ScdVec3Int direction_in = 2;
+ ScdVec3Int direction_out = 3;
+ repeated ScdVec3Int points = 4;
+ int32 map_id = 5;
+}
+
+message CsdFactoryOpDismantle {
+ uint32 node_id = 1;
+}
+
+message CsdFactoryOpSetSelectTarget {
+ uint32 component_id = 1;
+ string item_id = 2;
+}
+
+message CsdFactoryOpEnableNode {
+ uint32 node_id = 1;
+ bool enable = 2;
+}
+
+message CsdFactoryOpMoveNode {
+ uint32 node_id = 1;
+ ScdVec3Int position = 2;
+ ScdVec3Int direction = 3;
+ CsdFactoryInteractiveParam interactive_param = 5;
+}
+
+message CsdFactoryOpDismantleBoxConveyor {
+ uint32 node_id = 1;
+ repeated int32 index_list = 2;
+}
+
+message CsdFactoryOpRepairNode {
+ uint32 node_id = 1;
+}
+
+message CsdFactoryOpMoveItemCacheToCache {
+ uint32 from_component_id = 1;
+ uint32 to_component_id = 2;
+ string item_id = 3;
+}
+
+message CsdFactoryOpMoveItemBagToCache {
+ int32 grid_index = 1;
+ uint32 component_id = 2;
+ int32 cache_grid_index = 3;
+}
+
+message CsdFactoryOpMoveItemCacheToBag {
+ uint32 component_id = 1;
+ string item_id = 2;
+ bool all = 3;
+ int32 cache_grid_index = 4;
+ int32 grid_index = 5;
+}
+
+message CsdFactoryOpMoveItemDepotToCache {
+ string item_id = 1;
+ uint32 component_id = 2;
+ int32 cache_grid_index = 3;
+}
+
+message CsdFactoryOpMoveItemCacheToDepot {
+ uint32 component_id = 1;
+ string item_id = 2;
+ bool all = 3;
+ int32 cache_grid_index = 4;
+}
+
+message CsdFactoryOpMoveItemConveyorToBag {
+ uint32 component_id = 1;
+ int32 index = 2;
+ bool all = 3;
+}
+
+message CsdFactoryOpCacheTransportTransfer {
+ uint32 component_id = 1;
+}
+
+message CsdFactoryOpCacheTransportEnable {
+ uint32 component_id = 1;
+ bool enable = 2;
+}
+
+message CsdFactoryOpSetTravelPoleDefaultNext {
+ uint32 component_id = 1;
+ uint32 default_next = 2;
+}
+
+message CsdFactoryOpUseHealTowerPoint {
+ uint32 component_id = 1;
+ uint32 use_count = 2;
+}
+
+message CsdFactoryOpBattleRepair {
+ uint32 node_id = 1;
+}
+
+message CsdFactoryOpAddConnection {
+ int32 map_id = 1;
+ uint64 from_com_id = 4;
+ uint64 to_com_id = 5;
+}
+
+message CsdFactoryOpDelConnection {
+ int32 map_id = 1;
+ uint64 index = 2;
+}
+
+message CsdFactoryOpGridBoxInnerMove {
+ uint32 component_id = 1;
+ int32 from_index = 2;
+ int32 to_index = 3;
+}
+
+message CsdFactoryOpGridBoxInnerSplit {
+ uint32 component_id = 1;
+ int32 from_index = 2;
+ int32 to_index = 3;
+ int32 count = 4;
+}
+
+message CsdFactoryOpMoveItemBagToGridBox {
+ int32 bag_grid_index = 1;
+ uint32 component_id = 2;
+ int32 grid_box_index = 3;
+}
+
+message CsdFactoryOpMoveItemGridBoxToBag {
+ uint32 component_id = 1;
+ int32 grid_box_index = 2;
+ int32 bag_grid_index = 3;
+}
+
+message CsdFactoryOpMoveItemDepotToGridBox {
+ string item_id = 1;
+ uint32 component_id = 2;
+ int32 grid_box_index = 3;
+}
+
+message CsdFactoryOpMoveItemGridBoxToDepot {
+ uint32 component_id = 1;
+ int32 grid_box_index = 2;
+}
+
+message CsdFactoryOpMoveAllCacheOutItemToBag {
+ uint32 node_id = 1;
+}
+
+message CsdFactoryOpQuickPutBattery {
+ uint32 com_id = 1;
+}
+
+message CsdFactoryOpChangeProducerMode {
+ uint32 node_id = 1;
+ string to_mode = 2;
+}
+
+message CsdFactoryOpReverseFluidConveyorDirection {
+ uint32 node_id = 1;
+}
+
+message CsdFactoryOpDismantleBatch {
+ repeated CsdFactoryOpDismantle dismantles = 1;
+ repeated CsdFactoryOpDismantleBoxConveyor dismantle_conveyors = 2;
+}
+
+message CsdFactoryOpTakeOutFluidFromLiquidBody {
+ string liquid_body_inst_key = 1;
+ repeated ItemBundle bottle_items = 4;
+}
+
+message CsdFactoryOpPutInFluidToLiquidBody {
+ string liquid_body_inst_key = 1;
+ repeated ItemBundle bottle_water_items = 4;
+}
+
+message CsdFactoryOpFillingFluidComWithBag {
+ uint32 component_id = 1;
+ int32 bag_grid_index = 2;
+}
+
+message CsdFactoryOpFillingFluidComWithDepot {
+ uint32 component_id = 1;
+ string item_id = 2;
+}
+
+message ScFactoryOpRet {
+ string index = 1;
+ FactoryOpRetCode ret_code = 2;
+ FactoryOpType op_type = 3;
+ string err_message = 4;
+ oneof op_payload {
+ ScdFactoryOpRetPlace place = 11;
+ ScdFactoryOpRetPlaceConveyor place_conveyor = 12;
+ ScdFactoryOpRetDismantle dismantle = 13;
+ ScdFactoryOpRetSetSelectTarget set_select_target = 15;
+ ScdFactoryOpRetEnableNode enable_node = 16;
+ ScdFactoryOpRetMoveNode move_node = 17;
+ ScdFactoryOpRetDismantleBoxConveyor dismantle_box_conveyor = 18;
+ ScdFactoryOpRetRepairNode repair_node = 19;
+ ScdFactoryOpRetMoveItemCacheToCache move_item_cache_to_cache = 20;
+ ScdFactoryOpRetMoveItemBagToCache move_item_bag_to_cache = 21;
+ ScdFactoryOpRetMoveItemCacheToBag move_item_cache_to_bag = 22;
+ ScdFactoryOpRetMoveItemDepotToCache move_item_depot_to_cache = 23;
+ ScdFactoryOpRetMoveItemCacheToDepot move_item_cache_to_depot = 24;
+ ScdFactoryOpRetMoveItemConveyorToBag move_item_conveyor_to_bag = 25;
+ ScdFactoryOpRetCacheTransportTransfer cache_transport_transfer = 26;
+ ScdFactoryOpRetCacheTransportEnable cache_transport_enable = 27;
+ ScdFactoryOpRetSetTravelPoleDefaultNext set_travel_pole_default_next = 28;
+ ScdFactoryOpRetUseHealTowerPoint use_heal_tower_point = 29;
+ ScdFactoryOpRetBattleRepair battle_repair = 30;
+ ScdFactoryOpRetAddConnection add_connection = 31;
+ ScdFactoryOpRetDelConnection del_connection = 32;
+ ScdFactoryOpRetGridBoxInnerMove grid_box_inner_move = 41;
+ ScdFactoryOpRetGridBoxInnerSplit grid_box_inner_split = 42;
+ ScdFactoryOpRetMoveItemBagToGridBox move_item_bag_to_grid_box = 43;
+ ScdFactoryOpRetMoveItemGridBoxToBag move_item_grid_box_to_bag = 44;
+ ScdFactoryOpRetMoveItemDepotToGridBox move_item_depot_to_grid_box = 45;
+ ScdFactoryOpRetMoveItemGridBoxToDepot move_item_grid_box_to_depot = 46;
+ ScdFactoryOpRetMoveAllCacheOutItemToBag move_all_cache_out_item_to_bag = 47;
+ ScdFactoryOpRetQuickPutBattery quick_put_battery = 48;
+ ScdFactoryOpRetChangeProducerMode change_producer_mode = 51;
+ ScdFactoryOpRetReverseFluidConveyorDirection reverse_fluid_conveyor_direction = 52;
+ ScdFactoryOpRetDismantleBatch dismantle_batch = 53;
+ ScdFactoryOpRetTakeOutFluidFromLiquidBody take_out_fluid_from_liquid_body = 61;
+ ScdFactoryOpRetPutInFluidToLiquidBody put_in_fluid_to_liquid_body = 62;
+ ScdFactoryOpRetFillingFluidComWithBag filling_fluid_com_with_bag = 63;
+ ScdFactoryOpRetFillingFluidComWithDepot filling_fluid_com_with_depot = 64;
+ }
+}
+
+enum FactoryOpRetCode {
+ OK = 0;
+ FAIL = 1;
+ UNKNOWN_OP_TYPE = 2;
+ MESH_CONFLICT = 3;
+ MUST_IN_MAIN = 4;
+ NO_BUILDING_ITEM = 5;
+}
+
+message ScdFactoryOpRetPlace {
+ uint32 node_id = 1;
+}
+
+message ScdFactoryOpRetPlaceConveyor {
+ repeated uint32 node_id = 1;
+}
+
+message ScdFactoryOpRetDismantle {
+}
+
+message ScdFactoryOpRetSetSelectTarget {
+}
+
+message ScdFactoryOpRetEnableNode {
+}
+
+message ScdFactoryOpRetMoveNode {
+}
+
+message ScdFactoryOpRetDismantleBoxConveyor {
+ repeated uint32 node_id = 1;
+}
+
+message ScdFactoryOpRetRepairNode {
+}
+
+message ScdFactoryOpRetMoveItemCacheToCache {
+}
+
+message ScdFactoryOpRetMoveItemBagToCache {
+}
+
+message ScdFactoryOpRetMoveItemCacheToBag {
+}
+
+message ScdFactoryOpRetMoveItemDepotToCache {
+}
+
+message ScdFactoryOpRetMoveItemCacheToDepot {
+}
+
+message ScdFactoryOpRetMoveItemConveyorToBag {
+}
+
+message ScdFactoryOpRetCacheTransportTransfer {
+ bool success = 1;
+}
+
+message ScdFactoryOpRetCacheTransportEnable {
+}
+
+message ScdFactoryOpRetSetTravelPoleDefaultNext {
+}
+
+message ScdFactoryOpRetUseHealTowerPoint {
+ uint32 used_count = 1;
+}
+
+message ScdFactoryOpRetBattleRepair {
+}
+
+message ScdFactoryOpRetAddConnection {
+ uint64 index = 1;
+}
+
+message ScdFactoryOpRetDelConnection {
+}
+
+message ScdFactoryOpRetGridBoxInnerMove {
+}
+
+message ScdFactoryOpRetGridBoxInnerSplit {
+}
+
+message ScdFactoryOpRetMoveItemBagToGridBox {
+}
+
+message ScdFactoryOpRetMoveItemGridBoxToBag {
+}
+
+message ScdFactoryOpRetMoveItemDepotToGridBox {
+}
+
+message ScdFactoryOpRetMoveItemGridBoxToDepot {
+ bool not_all_success = 1;
+}
+
+message ScdFactoryOpRetMoveAllCacheOutItemToBag {
+}
+
+message ScdFactoryOpRetQuickPutBattery {
+ repeated ItemBundle cost_items = 1;
+}
+
+message ScdFactoryOpRetChangeProducerMode {
+}
+
+message ScdFactoryOpRetReverseFluidConveyorDirection {
+}
+
+message ScdFactoryOpRetDismantleBatch {
+}
+
+message ScdFactoryOpRetTakeOutFluidFromLiquidBody {
+ repeated ItemBundle cost_bottle_items = 1;
+ repeated ItemBundle gain_bottle_water_items = 2;
+ int32 cost_liquid = 3;
+ RetFluidWithLiquidBody ret = 4;
+}
+
+enum RetFluidWithLiquidBody {
+ RET_FLUID_WITH_LIQUID_BODY_OK = 0;
+ RET_FLUID_WITH_LIQUID_BODY_None = 1;
+ RET_FLUID_WITH_LIQUID_BODY_PartialByBag = 2;
+ RET_FLUID_WITH_LIQUID_BODY_PartialByLiquidBody = 3;
+}
+
+message ScdFactoryOpRetPutInFluidToLiquidBody {
+ repeated ItemBundle cost_bottle_water_items = 1;
+ repeated ItemBundle gain_bottle_items = 2;
+ int32 gain_liquid = 3;
+ RetFluidWithLiquidBody ret = 4;
+}
+
+message ScdFactoryOpRetFillingFluidComWithBag {
+}
+
+message ScdFactoryOpRetFillingFluidComWithDepot {
+}
+
+message CsFriendListSync {
+}
+
+message CsFriendRequestListSync {
+}
+
+message CsFriendSearchName {
+ string name = 1;
+}
+
+message CsFriendRequestAccept {
+ uint64 role_id = 1;
+}
+
+message CsFriendRequestReject {
+ uint64 role_id = 1;
+}
+
+message CsFriendDelete {
+ uint64 role_id = 1;
+}
+
+message CsFriendRequestSubmit {
+ uint64 role_id = 1;
+}
+
+message ScFriendListSync {
+ repeated FriendFriendInfo friend_list = 1;
+}
+
+message ScFriendRequestListSync {
+ repeated FriendRequestInfo friend_request_list = 1;
+}
+
+message ScFriendSearchName {
+ repeated FriendStrangerUserInfo stranger_list = 1;
+}
+
+message ScFriendRequestAccept {
+ uint64 role_id = 1;
+}
+
+message ScFriendRequestReject {
+ uint64 role_id = 1;
+}
+
+message ScFriendDelete {
+ uint64 role_id = 1;
+}
+
+message ScFriendRequestSubmit {
+ uint64 role_id = 1;
+}
+
+message ScFriendRequestAddNotify {
+ FriendRequestInfo friend_request_info = 1;
+}
+
+message ScFriendAddNotify {
+ FriendFriendInfo friend_info = 1;
+}
+
+message CsGachaSinglePullReq {
+ int32 gacha_type = 1;
+ string gacha_pool_id = 2;
+ map pull_costs = 3;
+}
+
+message CsGachaTenPullReq {
+ int32 gacha_type = 1;
+ string gacha_pool_id = 2;
+ map pull_costs = 3;
+}
+
+message ScdGachaPoolInfo {
+ string gacha_pool_id = 1;
+ int64 open_time = 2;
+ int64 close_time = 3;
+ bool is_closed = 4;
+ int32 public_close_reason = 5;
+}
+
+message ScdGachaPoolRoleData {
+ string gacha_pool_id = 1;
+ bool is_closed = 2;
+ int32 personal_close_reason = 3;
+ int32 total_pull_count = 4;
+ int32 hard_guarantee_progress = 5;
+ int32 soft_guarantee_progress = 6;
+ int32 star5_soft_guarantee_progress = 7;
+ int32 up_got_count = 8;
+}
+
+message ScdGachaPoolCategoryRoleData {
+ int32 gacha_pool_type = 1;
+ int32 total_pull_count = 2;
+ int32 soft_guarantee_progress = 3;
+ int32 star5_soft_guarantee_progress = 4;
+}
+
+message ScdGachaPoolMgr {
+ repeated ScdGachaPoolInfo gacha_pool_infos = 1;
+ repeated ScdGachaPoolRoleData gacha_pool_role_datas = 2;
+ repeated ScdGachaPoolCategoryRoleData gacha_pool_category_role_datas = 3;
+}
+
+message ScGachaSync {
+ ScdGachaPoolMgr char_gacha_pool = 1;
+ ScdGachaPoolMgr weapon_gacha_pool = 2;
+}
+
+message ScGachaModifyPoolInfo {
+ repeated ScdGachaPoolInfo char_gacha_pools = 1;
+ repeated ScdGachaPoolInfo weapon_gacha_pools = 2;
+}
+
+message ScdGachaFinalResult {
+ string item_id = 1;
+ string reward_item_id = 2;
+ repeated string reward_ids = 3;
+ bool is_new = 4;
+}
+
+message ScGachaSyncPullResult {
+ int32 gacha_type = 1;
+ string gacha_pool_id = 2;
+ repeated string ori_result_ids = 3;
+ repeated ScdGachaFinalResult final_results = 4;
+ int32 up_got_count = 5;
+ int32 star6_got_count = 6;
+ int32 star5_got_count = 7;
+}
+
+message ScGachaModifyPoolRoleData {
+ int32 gacha_type = 1;
+ string gacha_pool_id = 2;
+ ScdGachaPoolRoleData gacha_pool_role_data = 3;
+ ScdGachaPoolCategoryRoleData gacha_pool_category_role_data = 4;
+}
+
+message CsGameMechanicsReqActive {
+ string game_id = 1;
+}
+
+message CsGameMechanicsReqReward {
+ string game_id = 1;
+}
+
+message CsGameMechanicsNtfInstPrepareFinish {
+ string game_id = 1;
+}
+
+message ScdGameMechanicsRecord {
+ string game_id = 1;
+ int64 last_enter_game_t_s = 2;
+ int32 best_pass_time = 3;
+ int64 best_pass_t_s = 4;
+ bool is_pass = 5;
+ bool is_challenged = 6;
+ bool is_active = 7;
+ bool once_reward_got = 8;
+ repeated int32 rewarded_id_list = 9;
+}
+
+message ScdGameMechanicsUnlockConditions {
+ string id = 1;
+ int32 unlock_state = 2;
+ map unlock_condition_values = 3;
+ map unlock_condition_flags = 4;
+}
+
+message ScGameMechanicsSync {
+ repeated ScdGameMechanicsUnlockConditions game_unlock_conditions = 1;
+ repeated ScdGameMechanicsRecord game_records = 2;
+}
+
+message ScGameMechanicsSyncUnlockCondition {
+ ScdGameMechanicsUnlockConditions game_unlock_condition = 1;
+}
+
+message ScGameMechanicsModifyRecords {
+ repeated ScdGameMechanicsRecord game_records = 1;
+}
+
+message ScGameMechanicsSyncChallengeStart {
+ string game_id = 1;
+ int64 challenge_start_ts = 2;
+ int64 challenge_expire_ts = 3;
+ int32 prepare_challenge_seconds = 4;
+}
+
+message ScGameMechanicsSyncChallengeComplete {
+ string game_id = 1;
+ bool is_pass = 2;
+ int64 force_leave_ts = 3;
+ int32 pass_time = 4;
+}
+
+message ScGameMechanicsSyncCompletionReward {
+ string game_id = 1;
+ bool is_pass = 2;
+ int64 force_leave_ts = 3;
+}
+
+message ScGameMechanicsSyncEnterGameInst {
+ string game_id = 1;
+}
+
+message ScGameMechanicsSyncLeaveGameInst {
+ string game_id = 1;
+}
+
+message ScGameMechanicsSyncRestartGameInst {
+ string game_id = 1;
+}
+
+message ScdGameMechanicsInstTimeFreeze {
+ int32 time_key = 1;
+ int64 total_freeze_time_in_ms = 2;
+}
+
+message ScGameMechanicsModifyInstTimeFreeze {
+ string game_id = 1;
+ repeated ScdGameMechanicsInstTimeFreeze time_freeze_infos = 2;
+}
+
+message ScSyncGameMode {
+ string mode_id = 1;
+}
+
+message ScSyncAllGameVar {
+ map server_vars = 1;
+ map client_vars = 2;
+}
+
+message CsUpdateClientGameVar {
+ int32 key = 1;
+ int64 value = 2;
+}
+
+message ScUpdateGameVar {
+ int32 key = 1;
+ int64 value = 2;
+ int32 type = 3;
+}
+
+message CsGemRecast {
+ string formula_id = 1;
+ int32 count = 2;
+ repeated uint64 cost_gem_inst_ids = 3;
+}
+
+message ScGemRecast {
+ string formula_id = 1;
+ int32 count = 2;
+ repeated uint64 gem_inst_ids = 3;
+}
+
+message GuideGroupInfo {
+ string guide_group_id = 1;
+ int32 guide_state = 2;
+}
+
+message CsCompleteGuideGroupKeyStep {
+ string guide_group_id = 1;
+}
+
+message CsCompleteGuideGroup {
+ string guide_group_id = 1;
+ bool not_auto_accept = 2;
+ bool skip_key_step = 3;
+}
+
+message ScSyncAllGuide {
+ repeated GuideGroupInfo guide_group_list = 1;
+ repeated string completed_repeat_accept_guide_group_list = 2;
+}
+
+message ScAcceptGuideGroup {
+ string guide_group_id = 1;
+}
+
+message ScCompleteGuideGroupKeyStep {
+ string guide_group_id = 1;
+}
+
+message ScCompleteGuideGroup {
+ string guide_group_id = 1;
+}
+
+message ScdItemBag {
+ int32 grid_limit = 1;
+ repeated ScdItemGrid grids = 2;
+}
+
+message ScdItemDepot {
+ map stackable_items = 1;
+ repeated ScdItemGrid inst_list = 2;
+}
+
+message ScdItemLostAndFound {
+ map stackable_items = 1;
+ repeated ScdItemGrid inst_list = 2;
+}
+
+message ScdItemBagModify {
+ int32 grid_limit = 1;
+ repeated ScdItemGrid grids = 2;
+ repeated int32 del_list = 3;
+}
+
+message ScdItemDepotModify {
+ map items = 1;
+ repeated ScdItemGrid inst_list = 2;
+ repeated uint64 del_inst_list = 3;
+ map infinite_items = 4;
+}
+
+message ScdItemLostAndFoundModify {
+ map items = 1;
+ repeated ScdItemGrid inst_list = 2;
+ repeated uint64 del_inst_list = 3;
+}
+
+message CsItemBagTidyInBag {
+ int32 scope_name = 11;
+}
+
+message CsItemBagMoveInBag {
+ int32 from_grid = 1;
+ int32 to_grid = 2;
+ int32 scope_name = 11;
+}
+
+message CsItemBagSplitInBag {
+ int32 from_grid = 1;
+ int32 to_grid = 2;
+ int32 move_count = 3;
+ int32 scope_name = 11;
+}
+
+message CsItemBagFactoryDepotToBag {
+ map items = 1;
+ repeated uint64 inst_id_list = 2;
+ int32 scope_name = 11;
+ string chapter_id = 12;
+}
+
+message CsItemBagBagToFactoryDepot {
+ repeated int32 grid_list = 1;
+ int32 scope_name = 11;
+ string chapter_id = 12;
+}
+
+message CsItemBagFactoryDepotToBagGrid {
+ int32 grid_index = 1;
+ string id = 2;
+ int32 count = 3;
+ int32 scope_name = 11;
+ string chapter_id = 12;
+}
+
+message CsItemBagUseItem {
+ int32 grid_index = 1;
+ int32 count = 2;
+ repeated uint64 char_inst_id_list = 3;
+ uint64 equip_medicine_char_inst_id = 4;
+ repeated string item_use_args = 5;
+ int32 scope_name = 11;
+ ItemBagUseType use_type = 12;
+}
+
+enum ItemBagUseType {
+ item_bag_use_type_default = 0;
+ item_bag_use_type_equip_medicine = 1;
+ item_bag_use_type_bomb = 2;
+}
+
+message CsItemBagSetQuickBar {
+ repeated string item_id = 1;
+ int32 scope_name = 11;
+}
+
+message CsItemBagSetQuickBarPos {
+ int32 pos = 1;
+ int32 scope_name = 11;
+}
+
+message CsItemBagSetItemLock {
+ repeated ItemInstLockInfo lock_info_list = 1;
+ int32 scope_name = 11;
+}
+
+message ItemInstLockInfo {
+ string item_id = 1;
+ uint64 inst_id = 2;
+ bool is_lock = 3;
+}
+
+message CsItemBagAbandonInBag {
+ map grid_cut = 1;
+ uint64 target_object_id = 2;
+ int32 scope_name = 11;
+}
+
+message CsItemBagDestroyInDepot {
+ int32 depot = 1;
+ map items = 2;
+ repeated uint64 inst_id_list = 3;
+ int32 scope_name = 11;
+}
+
+message CsItemBagDestroyInFactoryDepot {
+ map items = 1;
+ int32 scope_name = 11;
+ string chapter_id = 12;
+}
+
+message CsItemBagDumpBottleInBag {
+ int32 grid_index = 1;
+ int32 count = 2;
+ int32 scope_name = 11;
+}
+
+message CsItemBagDumpBottleInFactoryDepot {
+ string item_id = 1;
+ int32 count = 2;
+ int32 scope_name = 11;
+ string chapter_id = 12;
+}
+
+message CsItemBagTakeoutLostAndFound {
+ bool all = 1;
+ map items = 2;
+ repeated uint64 inst_id_list = 3;
+}
+
+message CsItemBagUseItemCase {
+ string id = 1;
+ int32 count = 2;
+ repeated string select_rewards = 3;
+}
+
+message CsItemBagChgSpaceshipChapter {
+ string spaceship_chapter_id = 1;
+}
+
+message ScdItemBagSyncQuickBar {
+ repeated string item_id = 1;
+ int32 pos = 2;
+}
+
+message ScItemBagCommonSync {
+ ScdItemLostAndFound lost_and_found = 1;
+}
+
+message ScItemBagCommonModify {
+ ScdItemLostAndFoundModify lost_and_found = 1;
+}
+
+message ScItemBagScopeSync {
+ ScdItemBag bag = 1;
+ map factory_depot = 2;
+ map depot = 3;
+ ScdItemBagSyncQuickBar quick_bar = 4;
+ ScdItemBagScopeAssistant assistant = 5;
+ int32 scope_name = 11;
+ string current_chapter_id = 12;
+ string spaceship_chapter_id = 13;
+}
+
+message ScdItemBagScopeAssistant {
+ map last_use_time = 1;
+ map cannot_destroy = 2;
+}
+
+message ScTrialCharacterEquipMedicineModify {
+ uint64 trial_obj_id = 1;
+ int32 count = 2;
+}
+
+message ScItemBagTrialCharDepotModify {
+ int32 scope_name = 1;
+ ScdItemDepotModify trial_char_depot = 2;
+}
+
+message ScItemBagTrialCharDepotClear {
+ int32 scope_name = 1;
+}
+
+message ScItemBagScopeModify {
+ ScdItemBagModify bag = 1;
+ map factory_depot = 2;
+ map depot = 3;
+ ScdItemBagSyncQuickBar quick_bar = 4;
+ ScdItemBagScopeAssistantModify assistant = 5;
+ int32 scope_name = 11;
+ string current_chapter_id = 12;
+ bool is_scope_delete = 14;
+}
+
+message ScdItemBagScopeAssistantModify {
+ map last_use_time = 1;
+ map cannot_destroy = 2;
+}
+
+message ScItemBagUseItem {
+ EUseItemResult result = 1;
+ ScdItemGrid used_item = 2;
+ repeated uint64 char_inst_id_list = 3;
+ uint64 equip_medicine_char_inst_id = 4;
+ int32 scope_name = 11;
+}
+
+enum EUseItemResult {
+ E_USE_ITEM_RESULT_OK = 0;
+ E_USE_ITEM_RESULT_UnknownFail = 1;
+ E_USE_ITEM_RESULT_CondiitonFail = 2;
+}
+
+message ScItemBagSetQuickBar {
+ repeated string item_id = 1;
+ int32 scope_name = 11;
+}
+
+message ScItemBagSetQuickBarPos {
+ int32 pos = 1;
+ int32 scope_name = 11;
+}
+
+message ScItemBagSetItemLock {
+ repeated ItemInstLockInfo lock_info_list = 1;
+ int32 scope_name = 11;
+}
+
+message ScItemBagAbandonInBag {
+}
+
+message ScItemBagBagToFactoryDepot {
+ bool not_all_success = 1;
+ int32 scope_name = 21;
+}
+
+message ScItemBagTakeoutLostAndFound {
+ bool nothing_got = 1;
+}
+
+message ScItemBagGotItemToast {
+ map items = 1;
+}
+
+message ScRewardToastBegin {
+ int32 reward_source_type = 1;
+ uint64 reward_toast_inst_id = 2;
+}
+
+message ScRewardToastEnd {
+ repeated RewardItem reward_virtual_list = 1;
+ uint64 reward_toast_inst_id = 2;
+}
+
+message ScRewardDropSpItemToast {
+ string item_id = 1;
+ int64 count = 2;
+ Vector pos = 3;
+ int32 reward_source_type = 4;
+ uint64 reward_toast_inst_id = 5;
+}
+
+message ScItemBagUseItemCase {
+ string id = 1;
+ int32 count = 2;
+}
+
+message ScItemBagChgSpaceshipChapter {
+ string spaceship_chapter_id = 1;
+}
+
+message CsLogin {
+ string uid = 1;
+ string token = 2;
+ string channel = 3;
+ int32 server_group = 4;
+ uint64 last_recv_down_seqid = 5;
+ string client_version = 6;
+ string client_res_version = 7;
+ bytes client_public_key = 8;
+ ClientPlatformType platform_id = 9;
+ AreaType area = 10;
+ EnvType env = 11;
+ int32 pay_platform = 12;
+ string login_token = 13;
+}
+
+enum ClientPlatformType {
+ DEFAULT = 0;
+ ANDRIOD = 1;
+ IOS = 2;
+ WINDOWS = 3;
+ PLAYSTATION = 4;
+}
+
+enum AreaType {
+ Default = 0;
+ China = 1;
+ Oversea = 2;
+ ChinaPre = 10;
+ OverseaPre = 11;
+}
+
+enum EnvType {
+ DEV = 0;
+ STABLE = 1;
+ PROD = 2;
+}
+
+message ScLogin {
+ string uid = 1;
+ bool is_first_login = 2;
+ bytes server_public_key = 3;
+ bytes server_encryp_nonce = 4;
+ uint64 last_recv_up_seqid = 5;
+ bool is_reconnect = 6;
+ bool is_enc = 7;
+ bool is_client_reconnect = 8;
+ int64 server_time = 9;
+ int32 server_time_zone = 10;
+ string login_token = 11;
+}
+
+message CsCreateRole {
+ string role_name = 1;
+ Gender gender = 2;
+}
+
+enum Gender {
+ GEN_INVALID = 0;
+ GEN_MALE = 1;
+ GEN_FEMALE = 2;
+ GEN_TOTAL = 3;
+}
+
+message ScSyncBaseData {
+ uint64 roleid = 1;
+ string role_name = 2;
+ uint32 level = 3;
+ uint32 exp = 4;
+ string short_id = 7;
+ Gender gender = 8;
+}
+
+message ScNtfErrorCode {
+ int32 error_code = 1;
+ string details = 2;
+}
+
+message ScNtfCode {
+ int32 code = 1;
+ string details = 2;
+}
+
+message CsLogout {
+}
+
+message CsGmCommand {
+ string command = 1;
+}
+
+message ScdGmGachaStat {
+ string gacha_pool_id = 1;
+ int32 gacha_type = 2;
+ int32 total_pull_count = 3;
+ map up_got_pull_count_map = 4;
+ int32 up_got_count = 5;
+ map star6_got_pull_count_map = 6;
+ int32 star6_got_count = 7;
+ int32 star6_ge2_got_count = 8;
+ map star5_got_pull_count_map = 9;
+ int32 star5_got_count = 10;
+ int32 star5_ge2_got_count = 11;
+ map up_item_count_map = 12;
+ map star6_item_count_map = 13;
+ map star5_item_count_map = 14;
+ map starother_item_count_map = 15;
+}
+
+message ScGmCommand {
+ string result = 1;
+}
+
+message CsPing {
+ uint64 client_ts = 1;
+}
+
+message ScPing {
+ uint64 client_ts = 1;
+ uint64 server_ts = 2;
+}
+
+message ScReconnectIncr {
+ bool is_client_reconnect = 1;
+}
+
+message ScReconnectFull {
+ bool is_client_reconnect = 1;
+}
+
+message CsFlushSync {
+ uint64 client_ts = 1;
+}
+
+message ScFlushSync {
+ uint64 client_ts = 1;
+ uint64 server_ts = 2;
+}
+
+message CsSetName {
+ string name = 1;
+}
+
+message ScSetName {
+ string name = 1;
+ string short_id = 2;
+}
+
+message CsSetGender {
+ Gender gender = 1;
+}
+
+message ScSetGender {
+ Gender gender = 1;
+}
+
+message CsCheckName {
+ string name = 1;
+}
+
+message ScCheckName {
+ string name = 1;
+ bool pass = 2;
+}
+
+message ScSyncFullDataEnd {
+}
+
+message CsMailDef {
+ int32 mail_type = 1;
+ uint64 mail_id = 2;
+ int64 expire_time = 3;
+ bool is_read = 4;
+ bool is_attachment_got = 5;
+ int64 send_time = 6;
+ MailContent mail_content = 7;
+ repeated RewardItem item_list = 8;
+ bool is_star = 9;
+ int32 mail_sub_type = 10;
+}
+
+message CsGetMail {
+ repeated uint64 mail_id_list = 1;
+}
+
+message CsReadMail {
+ uint64 mail_id = 1;
+}
+
+message CsDeleteMail {
+ uint64 mail_id = 1;
+}
+
+message CsDeleteAllMail {
+}
+
+message CsGetMailAttachment {
+ uint64 mail_id = 1;
+}
+
+message CsGetAllMailAttachment {
+}
+
+message CsMarkStarMail {
+ uint64 mail_id = 1;
+ bool is_star = 2;
+}
+
+message ScSyncAllMail {
+ repeated uint64 mail_id_list = 1;
+ bool new_mail_tag = 2;
+ bool new_questionnaire_tag = 3;
+}
+
+message ScReadMail {
+ uint64 mail_id = 1;
+}
+
+message ScGetMail {
+ repeated CsMailDef mail_list = 1;
+}
+
+message ScGetMailAttachment {
+ repeated uint64 success_mail_id_list = 1;
+ repeated uint64 failed_mail_id_list = 2;
+}
+
+message ScDelMailNotify {
+ repeated uint64 mail_id_list = 1;
+}
+
+message ScNewMailNotify {
+ repeated uint64 mail_id_list = 1;
+ bool new_questionnaire_tag = 2;
+}
+
+message ScMarkStarMail {
+ uint64 mail_id = 1;
+ bool is_star = 2;
+}
+
+message CsdSceneStaticMapMarkUpdate {
+ SceneStaticMapMark mark = 1;
+ bool is_add = 2;
+}
+
+message CsSceneStaticMapMarkUpdate {
+ repeated CsdSceneStaticMapMarkUpdate ops = 1;
+}
+
+message CsSceneSetTrackPoint {
+ SceneTrackPoint track_point = 1;
+}
+
+message ScSceneMapMarkSync {
+ repeated SceneStaticMapMark scene_static_map_mark_list = 1;
+ SceneTrackPoint track_point = 2;
+}
+
+message ScSceneStaticMapMarkModify {
+ repeated SceneStaticMapMark added_list = 1;
+ repeated int32 deleted_list = 2;
+}
+
+message ScSceneSetTrackPoint {
+ SceneTrackPoint track_point = 1;
+}
+
+message MiniGameInfo {
+ string mini_game_id = 1;
+ int32 completed_count = 2;
+}
+
+message ScSyncAllMiniGame {
+ repeated MiniGameInfo completed_mini_game = 1;
+}
+
+message CsCompleteMiniGame {
+ string mini_game_id = 2;
+}
+
+message ScCompleteMiniGame {
+ string mini_game_id = 2;
+ int32 completed_count = 3;
+}
+
+message AttrInfo {
+ int32 attr_type = 1;
+ double basic_value = 2;
+ double value = 3;
+}
+
+message ScSyncAttr {
+ uint64 obj_i_d = 1;
+ repeated AttrInfo attr_list = 2;
+}
+
+message ScNewNoticeNotify {
+}
+
+message QuestObjectiveDetail {
+ map hash_value = 2;
+}
+
+message QuestObjective {
+ string condition_id = 1;
+ map extra_details = 2;
+ map values = 4;
+ bool is_complete = 3;
+}
+
+message Quest {
+ string quest_id = 1;
+ int32 quest_state = 2;
+ repeated QuestObjective quest_objectives = 4;
+}
+
+message Mission {
+ string mission_id = 1;
+ int32 mission_state = 2;
+ int32 succeed_id = 3;
+ map properties = 4;
+}
+
+message ObjectiveValueOp {
+ string condition_id = 1;
+ int32 value = 2;
+ bool is_add = 3;
+}
+
+message CsAcceptMission {
+ string mission_id = 1;
+}
+
+message CsFailMission {
+ string mission_id = 1;
+}
+
+message CsTrackMission {
+ string mission_id = 1;
+}
+
+message CsStopTrackingMission {
+}
+
+message CsMissionEventTrigger {
+ string mission_id = 1;
+ string event_name = 2;
+ map properties = 3;
+}
+
+message ScMissionEventTrigger {
+ string mission_id = 1;
+ string event_name = 2;
+}
+
+message CsUpdateQuestObjective {
+ string quest_id = 1;
+ repeated ObjectiveValueOp objective_value_ops = 2;
+}
+
+message ScUpdateMissionProperty {
+ string mission_id = 1;
+ map properties = 2;
+}
+
+message CsMissionClientTriggerDone {
+ string mission_id = 1;
+ string scene_name = 2;
+ string area_id = 3;
+}
+
+message CsSetNewMissionTagDone {
+ repeated NewMissionTag new_mission_tags = 5;
+}
+
+message NewMissionTag {
+ string mission_id = 1;
+ string quest_id = 2;
+}
+
+message ScSyncAllMission {
+ string track_mission_id = 1;
+ map missions = 2;
+ map cur_quests = 3;
+ string daily_mission_id = 4;
+ repeated NewMissionTag new_mission_tags = 5;
+}
+
+message ScDailyMissionInfoUpdate {
+ string daily_mission_id = 1;
+}
+
+message ScQuestStateUpdate {
+ string quest_id = 1;
+ int32 quest_state = 2;
+ bool b_rollback = 3;
+ RoleBaseInfo role_base_info = 10;
+}
+
+message ScMissionStateUpdate {
+ string mission_id = 1;
+ int32 mission_state = 2;
+ int32 succeed_id = 3;
+ map properties = 4;
+ RoleBaseInfo role_base_info = 10;
+}
+
+message ScQuestFailed {
+ string quest_id = 1;
+}
+
+message ScMissionFailed {
+ string mission_id = 1;
+}
+
+message ScMissionDeleted {
+ string mission_id = 1;
+}
+
+message ScTrackMissionChange {
+ string mission_id = 1;
+}
+
+message ScQuestObjectivesUpdate {
+ string quest_id = 1;
+ repeated QuestObjective quest_objectives = 4;
+}
+
+message ScQuestRollback {
+ string quest_id = 1;
+}
+
+message ScSceneTriggerClientMissionEvent {
+ string mission_id = 1;
+ string event_name = 2;
+}
+
+message CsRollBlocMission {
+ string bloc_id = 1;
+}
+
+message ScRollBlocMission {
+ string bloc_id = 1;
+ string mission_id = 2;
+ int64 roll_count = 3;
+ int64 next_refresh_tine = 4;
+}
+
+message ScSyncBlocMissionInfo {
+ map bloc_missions = 1;
+ bool reward_got = 2;
+ int64 roll_count = 3;
+ int64 next_refresh_tine = 4;
+ int32 completed_num = 5;
+}
+
+message ScBlocCompletedMissionNumUpdate {
+ int32 completed_num = 1;
+}
+
+message ScSceneMonsterSpawnerStart {
+ int32 scene_num_id = 1;
+ uint64 spawner_id = 2;
+ repeated string enabled_hidden_wave_key_list = 3;
+}
+
+message ScSceneMonsterSpawnerStop {
+ int32 scene_num_id = 1;
+ uint64 spawner_id = 2;
+}
+
+message ScSceneMonsterSpawnerComplete {
+ int32 scene_num_id = 1;
+ uint64 spawner_id = 2;
+}
+
+message CsSceneMonsterSpawnerBeginWave {
+ int32 scene_num_id = 1;
+ uint64 spawner_id = 2;
+ int32 wave_id = 3;
+ double client_timestamp = 4;
+}
+
+message ScSceneMonsterSpawnerWaveComplete {
+ int32 scene_num_id = 1;
+ uint64 spawner_id = 2;
+ int32 wave_id = 3;
+}
+
+message ScSceneMonsterSpawnerBeginWave {
+ int32 scene_num_id = 1;
+ uint64 spawner_id = 2;
+ int32 wave_id = 3;
+}
+
+message ScSceneMonsterSpawnerObjectDataBegin {
+ int32 scene_num_id = 1;
+ uint64 spawner_id = 2;
+ int32 wave_id = 3;
+ int32 group_id = 4;
+}
+
+message ScSceneMonsterSpawnerObjectDataEnd {
+ int32 scene_num_id = 1;
+ uint64 spawner_id = 2;
+ int32 wave_id = 3;
+ int32 group_id = 4;
+ repeated SpawnerDetail details = 5;
+}
+
+message SpawnerDetail {
+ uint64 obj_id = 1;
+ int32 action_id = 2;
+ int32 spawn_idx = 3;
+}
+
+message CsCreateOrder {
+ string product_code = 1;
+}
+
+message ScCreateOrder {
+ string sign_param = 1;
+ string product_code = 2;
+}
+
+message ScOrderMsg {
+ string product_code = 1;
+}
+
+message CSHead {
+ int32 msgid = 1;
+ uint64 up_seqid = 2;
+ uint64 down_seqid = 3;
+ uint32 total_pack_count = 4;
+ uint32 current_pack_index = 5;
+ bool is_compress = 6;
+}
+
+message CsMergeMsg {
+ bytes msg = 1;
+}
+
+message CsPrtsMarkRead {
+ string prts_id = 1;
+}
+
+message CsPrtsMarkTerminalRead {
+ string terminal_content_id = 1;
+}
+
+message CsPrtsRichContentRead {
+ string id = 1;
+}
+
+message CsPrtsFinishInvestigate {
+ string id = 1;
+}
+
+message ScSyncRacingDungeonPassedLevel {
+ map max_passed_level = 1;
+}
+
+message ScRacingDungeonEnter {
+ string dungeon_id = 1;
+ int32 level = 2;
+ string tactics_id = 3;
+ repeated uint64 char_team = 4;
+}
+
+message ScSyncRacingDungeonSettlement {
+ string dungeon_id = 1;
+ int32 level = 2;
+ bool is_passed = 3;
+ int64 total_playtime = 4;
+ float score = 5;
+ int32 battle_pass_exp = 6;
+ repeated int64 completed_room_list = 7;
+}
+
+message ScSyncRacingDungeonReconnect {
+ string dungeon_id = 1;
+ int32 level = 2;
+ int64 total_playtime = 3;
+ repeated string buff_list = 4;
+ string tactics_id = 5;
+ int32 kill_monster_counter = 6;
+ bool paused = 7;
+ repeated int64 completed_room_list = 8;
+}
+
+message CsRacingDungeonGetBattlePass {
+ string dungeon_id = 1;
+}
+
+message ScRacingDungeonGetBattlePass {
+ string dungeon_id = 1;
+ int32 battle_pass_exp = 2;
+ repeated int32 received_node_id = 3;
+ repeated int32 unlock_node_id = 4;
+}
+
+message CsRacingDungeonBattlePassReceiveReward {
+ string dungeon_id = 1;
+ bool receive_all = 2;
+ int32 received_node_id = 3;
+}
+
+message ScRacingDungeonBattlePassReceiveReward {
+ string dungeon_id = 1;
+ int32 battle_pass_exp = 2;
+ repeated string receive_rewards = 3;
+ repeated int32 received_node_id = 4;
+}
+
+message CsRacingDungeonGetAchievement {
+ string dungeon_id = 1;
+}
+
+message ScRacingDungeonGetAchievement {
+ string dungeon_id = 1;
+ repeated RacingDungeonAchievement achievements = 2;
+}
+
+message RacingDungeonAchievement {
+ int32 node_id = 1;
+ RacingAchievementStatus status = 2;
+ int32 condition_counter = 3;
+}
+
+enum RacingAchievementStatus {
+ Racing_Status_None = 0;
+ Racing_Status_Active = 1;
+ Racing_Status_Completed = 2;
+ Racing_Status_Received = 3;
+}
+
+message CsRacingDungeonAchievementReceiveReward {
+ string dungeon_id = 1;
+ bool receive_all = 2;
+ int32 received_achievement = 3;
+}
+
+message ScRacingDungeonAchievementReceiveReward {
+ string dungeon_id = 1;
+ repeated string receive_rewards = 2;
+ repeated RacingDungeonAchievement achievements = 3;
+}
+
+message CsRacingDungeonLeave {
+}
+
+message ScSyncRacingDungeonBuffModify {
+ repeated string buff_list = 1;
+ string add_buff_id = 2;
+}
+
+message CsRacingDungeonUpdateBattleInfo {
+ int32 kill_monster_counter = 1;
+}
+
+message ScSyncRacingDungeonAchievementModify {
+ int32 achievement_id = 1;
+}
+
+message ScSyncRacingTimerPause {
+ bool paused = 1;
+ int64 server_timestamp = 2;
+ int64 total_playtime = 3;
+}
+
+message ScSyncRacingDungeonCompleteRoom {
+ int64 room_id = 1;
+}
+
+message ScSyncRacingDungeonCountdownEvent {
+ string debuff_id = 1;
+}
+
+message RemoveItemNewData {
+ int32 depot_type = 1;
+ repeated uint64 inst_ids = 2;
+}
+
+message CsRemoveItemNewTags {
+ repeated uint32 item_ids = 1;
+ repeated RemoveItemNewData inst_data = 2;
+}
+
+message ScRemoveItemNewTags {
+}
+
+message CsRedDotReadFormula {
+ repeated uint32 formula_ids = 1;
+}
+
+message CsRedDotReadCharDoc {
+ uint32 id = 1;
+ repeated uint32 ids = 2;
+}
+
+message CsRedDotReadCharVoice {
+ uint32 id = 1;
+ repeated uint32 ids = 2;
+}
+
+message CsRedDotReadEquipFormula {
+ uint32 id = 1;
+}
+
+message CsRpgDungeonBuy {
+ string dungeon_id = 1;
+ string equip_item_id = 2;
+ repeated uint64 cost_equip_inst_ids = 3;
+}
+
+message ScRpgDungeonBuy {
+ string equip_item_id = 1;
+ uint64 equip_inst_id = 2;
+}
+
+message CsRpgDungeonSell {
+ uint64 equip_inst_id = 1;
+}
+
+message ScRpgDungeonSell {
+ uint64 equip_inst_id = 1;
+}
+
+message CsRpgDungeonEquipPuton {
+ int32 slotid = 1;
+ uint64 equip_inst_id = 2;
+}
+
+message ScRpgDungeonEquipPuton {
+ int32 slotid = 1;
+ uint64 equip_inst_id = 2;
+}
+
+message CsRpgDungeonEquipPutoff {
+ int32 slotid = 1;
+}
+
+message ScRpgDungeonEquipPutoff {
+ int32 slotid = 1;
+}
+
+message ScSyncRpgDungeonBuffList {
+ repeated string buff_list = 1;
+}
+
+message ScSyncRpgEquipColumn {
+ map equip_column = 1;
+}
+
+message ScSyncRpgTeamLevel {
+ int32 team_level = 1;
+ int32 team_exp = 2;
+ int32 next_level_exp = 3;
+}
+
+message ScSyncRpgDungeonAbility {
+ repeated RpgDungeonAbilityInfo fixed_abilitys = 1;
+ repeated RpgDungeonAbilityInfo random_abilitys = 2;
+}
+
+message RpgDungeonAbilityInfo {
+ string ability_id = 1;
+}
+
+message ScSyncRpgLevelUp {
+ int32 lv_up_level = 1;
+ repeated string fixed_ability = 2;
+ repeated string random_ability = 3;
+}
+
+message CsRpgDungeonPickLvAbility {
+ int32 level = 1;
+ string random_ability = 2;
+}
+
+message ScRpgDungeonPickLvAbility {
+ int32 cur_team_level = 1;
+ repeated string total_fixed_ability = 2;
+ map total_random_ability = 3;
+}
+
+message CsRpgDungeonTimeStop {
+ bool on_time_resume = 1;
+}
+
+message ScSyncRpgDungeonTimeInfo {
+ bool on_time_stop = 1;
+ int64 wave_end_time = 2;
+}
+
+message CsRpgDungeonAbilityChange {
+ string ability_id = 1;
+ int64 duration = 2;
+}
+
+message CsEnterScene {
+ int32 scene_num_id = 1;
+ Vector position = 2;
+ Vector rotation = 3;
+}
+
+message CsSceneLeavePlane {
+ Vector position = 1;
+ Vector rotation = 2;
+}
+
+message SceneObjectCommonInfo {
+ uint64 id = 1;
+ int32 type = 2;
+ string templateid = 3;
+ Vector position = 4;
+ Vector rotation = 5;
+ uint64 belong_level_script_id = 6;
+ int32 scene_num_id = 7;
+ double hp = 8;
+}
+
+message SceneCharacter {
+ SceneObjectCommonInfo common_info = 1;
+ int32 level = 2;
+ string name = 3;
+ repeated AttrInfo attrs = 4;
+ BattleMgrInfo battle_info = 5;
+}
+
+message SceneMonster {
+ SceneObjectCommonInfo common_info = 1;
+ uint64 origin_id = 2;
+ int32 level = 3;
+ repeated AttrInfo attrs = 4;
+ BattleMgrInfo battle_info = 5;
+}
+
+message SceneInteractive {
+ SceneObjectCommonInfo common_info = 1;
+ uint64 origin_id = 2;
+ map properties = 4;
+ int32 meta = 5;
+ BattleMgrInfo battle_info = 6;
+}
+
+message SceneSummonSkill {
+ string skill_id = 1;
+ BattleBlackboard assigned_items = 2;
+}
+
+message SceneSummon {
+ SceneObjectCommonInfo common_info = 1;
+ map skills = 2;
+ repeated AttrInfo attrs = 3;
+ BattleMgrInfo battle_info = 4;
+ string cast_skill_id = 5;
+ BattleBlackboard blackboard = 6;
+}
+
+message SceneNpc {
+ SceneObjectCommonInfo common_info = 1;
+}
+
+message SceneObjectDetailContainer {
+ CharBagTeamType team_type = 11;
+ int32 team_index = 6;
+ uint64 team_change_token = 7;
+ repeated SceneCharacter char_list = 1;
+ repeated SceneMonster monster_list = 2;
+ repeated SceneInteractive interactive_list = 3;
+ repeated SceneNpc npc_list = 4;
+ repeated SceneSummon summon_list = 5;
+}
+
+message CsSceneSetLevelScriptActive {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+ bool is_active = 3;
+ Vector leader_pos = 4;
+}
+
+message CsSceneSetLevelScriptStart {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+ bool is_start = 3;
+ Vector leader_pos = 4;
+}
+
+message CsSceneLevelScriptEventTrigger {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+ string event_name = 3;
+ map properties = 4;
+}
+
+message CsSceneCommitLevelScriptCacheStep {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+}
+
+message LevelScriptInfo {
+ uint64 script_id = 1;
+ int32 state = 2;
+ map properties = 3;
+ bool is_done = 4;
+}
+
+message ScSceneUpdateLevelScriptProperty {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+ map properties = 3;
+ bool client_operate = 4;
+}
+
+message ScSceneLevelScriptStateNotify {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+ int32 state = 3;
+}
+
+message ScSceneLevelScriptResetBegin {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+}
+
+message ScSceneLevelScriptResetEnd {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+}
+
+message ScSceneLevelScriptTaskStateUpdate {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+ string task_id = 3;
+ int32 task_state = 4;
+}
+
+message ScSceneLevelScriptTaskProgressUpdate {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+ string task_id = 3;
+ map condition_completed_map = 4;
+}
+
+message ScSceneLevelScriptTaskStartFinish {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+ string task_id = 3;
+}
+
+message ScSceneTriggerClientLevelScriptEvent {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+ string event_name = 3;
+}
+
+message ScSceneTriggerClientInteractiveEvent {
+ int32 scene_num_id = 1;
+ uint64 id = 2;
+ string event_name = 3;
+}
+
+message ScdSceneTeamInfo {
+ CharBagTeamType team_type = 1;
+ int32 team_index = 2;
+ uint64 team_change_token = 3;
+ uint64 cur_leader_id = 4;
+}
+
+message ScSelfSceneInfo {
+ int32 scene_num_id = 1;
+ uint64 scene_id = 2;
+ SceneObjectDetailContainer detail = 3;
+ repeated uint64 revive_chars = 7;
+ repeated LevelScriptInfo level_scripts = 8;
+ int32 self_info_reason = 9;
+ repeated string unlock_area = 10;
+ repeated SceneDrop drop_list = 14;
+ int32 scene_grade = 15;
+ ScdSceneTeamInfo team_info = 16;
+ oneof scene_impl {
+ SceneImplDungeon dungeon = 11;
+ SceneImplEmpty empty = 12;
+ }
+}
+
+message SceneDrop {
+ uint64 drop_id = 1;
+ map stackable_items = 2;
+ repeated ScdItemGrid inst_list = 3;
+}
+
+message SceneImplDungeon {
+ string dungeon_id = 1;
+ int64 challenge_expire_ts = 2;
+ int64 leave_dungeon_ts = 3;
+ bool is_reward = 4;
+ bool is_calc = 5;
+ bool is_pass = 6;
+}
+
+message SceneImplEmpty {
+}
+
+message ScSceneResetEntity {
+ int32 scene_num_id = 1;
+ uint64 id = 2;
+}
+
+message ScObjectEnterView {
+ SceneObjectDetailContainer detail = 1;
+ bool has_extra_object = 2;
+}
+
+message LeaveObjectInfo {
+ int32 obj_type = 1;
+ uint64 obj_id = 2;
+}
+
+message ScObjectLeaveView {
+ repeated LeaveObjectInfo obj_list = 1;
+}
+
+message MotionInfo {
+ Vector position = 1;
+ Vector rotation = 2;
+ Vector speed = 3;
+ MotionState state = 4;
+}
+
+enum MotionState {
+ MOTION_NONE = 0;
+ MOTION_STANDBY = 1;
+ MOTION_STANDBY_MOVE = 2;
+ MOTION_WALK = 3;
+ MOTION_RUN = 4;
+ MOTION_CLIMB = 5;
+ MOTION_CLIMB_JUMP = 6;
+}
+
+message MoveObjectMoveInfo {
+ uint64 objid = 1;
+ MotionInfo motion_info = 2;
+ uint32 server_time = 3;
+ int32 scene_num_id = 4;
+}
+
+message CsMoveObjectMove {
+ repeated MoveObjectMoveInfo move_info = 1;
+ int32 leader_move_tag_mask = 2;
+ int32 leader_index = 3;
+}
+
+message ScMoveObjectMove {
+ repeated MoveObjectMoveInfo move_info = 1;
+ bool server_notify = 2;
+}
+
+message ScEnterSceneNotify {
+ uint64 role_id = 1;
+ int32 scene_num_id = 2;
+ uint64 scene_id = 3;
+ Vector position = 4;
+ PassThroughData pass_through_data = 5;
+}
+
+message ScLeaveSceneNotify {
+ uint64 role_id = 1;
+ int32 scene_num_id = 2;
+ uint64 scene_id = 3;
+}
+
+message ScSeamlessSceneDestroyNotify {
+ uint64 role_id = 1;
+ int32 scene_num_id = 2;
+ uint64 scene_id = 3;
+}
+
+message CsSceneLoadFinish {
+ int32 scene_num_id = 1;
+}
+
+message CsSceneSetLastRecordCampid {
+ uint64 last_camp_id = 1;
+ Vector position = 2;
+ Vector rotation = 3;
+ int32 scene_num_id = 4;
+}
+
+message ScSceneSetLastRecordCampid {
+ uint64 last_camp_id = 1;
+ int32 scene_num_id = 2;
+}
+
+message CsSceneInteractiveEventTrigger {
+ int32 scene_num_id = 1;
+ uint64 id = 2;
+ string event_name = 3;
+ map properties = 4;
+}
+
+message ScSceneUpdateInteractiveProperty {
+ int32 scene_num_id = 1;
+ uint64 id = 2;
+ map properties = 3;
+ bool client_operate = 4;
+}
+
+message CsSceneSetVar {
+ string key = 1;
+ string value = 2;
+ int32 scene_num_id = 3;
+}
+
+message ScSceneSetVar {
+ string key = 1;
+ string value = 2;
+ int32 scene_num_id = 3;
+}
+
+message CsSceneRest {
+}
+
+message EntityInfo {
+ EntityOpType entity_op_type = 2;
+ uint64 id = 3;
+ int32 type = 4;
+}
+
+enum EntityOpType {
+ ENTITY_OP_TYPE_NONE = 0;
+ ENTITY_OP_TYPE_ID = 2;
+}
+
+message ScSceneCreateEntity {
+ int32 scene_num_id = 1;
+ uint64 id = 2;
+}
+
+message ScSceneDestroyEntity {
+ int32 scene_num_id = 1;
+ uint64 id = 2;
+ int32 reason = 3;
+}
+
+message ScSceneCrossSceneStatus {
+ uint64 obj_id = 1;
+ int32 scene_num_id = 2;
+}
+
+message CsSceneRevival {
+}
+
+message ScSceneRevival {
+}
+
+message CsSceneSetStorySafeZone {
+ bool in_zone = 1;
+}
+
+message ScSceneSetStorySafeZone {
+ bool in_zone = 1;
+}
+
+message CsSceneSetSafeZone {
+ bool in_zone = 1;
+ uint64 id = 2;
+}
+
+message ScSceneSetSafeZone {
+ bool in_zone = 1;
+ uint64 id = 2;
+}
+
+message CsSceneQueryEntityExist {
+ int32 scene_num_id = 1;
+ uint64 id = 2;
+}
+
+message ScSceneQueryEntityExist {
+ bool is_exist = 1;
+}
+
+message CsSceneQueryInteractiveProperty {
+ int32 scene_num_id = 1;
+ uint64 id = 2;
+ int32 key = 3;
+}
+
+message ScSceneQueryInteractiveProperty {
+ int32 scene_num_id = 1;
+ uint64 id = 2;
+ int32 key = 3;
+ DynamicParameter value = 4;
+}
+
+message CsSceneSpawnSummon {
+ string summon_id = 1;
+ Vector position = 2;
+ Vector rotation = 3;
+ string skill_id = 4;
+ BattleBlackboard blackboard = 5;
+}
+
+message ScSceneUnlockArea {
+ int32 scene_num_id = 1;
+ string area_id = 2;
+}
+
+message CsSceneInteractTree {
+ string tree_type_id = 1;
+ Vector position = 2;
+ bool is_breaked = 3;
+}
+
+message CsSceneTeleport {
+ int32 scene_num_id = 1;
+ Vector position = 2;
+ Vector rotation = 3;
+ int32 teleport_reason = 4;
+ PassThroughData pass_through_data = 5;
+}
+
+message ScSceneTeleport {
+ repeated uint64 obj_id_list = 1;
+ int32 scene_num_id = 2;
+ Vector position = 3;
+ Vector rotation = 4;
+ uint32 server_time = 5;
+ int32 teleport_reason = 6;
+ uint64 tp_uuid = 7;
+ PassThroughData pass_through_data = 8;
+}
+
+message CsSceneTeleportFinish {
+ uint64 tp_uuid = 1;
+}
+
+message CsSceneMoveStateSet {
+ bool move_record_tag = 1;
+}
+
+message CsSceneSubmitEther {
+}
+
+message ScSceneSubmitEther {
+ int32 level = 1;
+ int32 count = 2;
+}
+
+message AreaUnlockInfo {
+ string scene_id = 1;
+ repeated string unlock_area_id = 2;
+}
+
+message ScSyncAllRoleScene {
+ int32 submit_ether_level = 1;
+ int32 submit_ether_count = 2;
+ repeated AreaUnlockInfo unlock_area_info = 3;
+ repeated SceneGradeInfo scene_grade_info = 4;
+}
+
+message SceneGradeInfo {
+ int32 scene_num_id = 1;
+ int32 grade = 2;
+ int64 last_down_ts = 3;
+}
+
+message CsSceneSetLastSafeZone {
+ int32 scene_num_id = 1;
+ Vector position = 2;
+ Vector rotation = 3;
+ int32 reason = 4;
+ uint64 source_script_id = 5;
+}
+
+message CsSceneRepatriate {
+ int32 scene_num_id = 1;
+ int32 repatriate_source = 2;
+ PassThroughData pass_through_data = 3;
+}
+
+message ScSceneRepatriate {
+ int32 scene_num_id = 1;
+ int32 repatriate_source = 2;
+}
+
+message CsSceneSetBattle {
+ bool in_battle = 1;
+}
+
+message CsSceneGradeModify {
+ int32 scene_num_id = 1;
+ int32 grade = 2;
+}
+
+message ScSceneSetBattle {
+ bool in_battle = 1;
+}
+
+message ScRewardToSceneBegin {
+ int32 reward_source_type = 1;
+ string source_template_id = 2;
+}
+
+message ScRewardToSceneEnd {
+}
+
+message ScSceneLevelScriptEventTrigger {
+}
+
+message ScSceneLevelScriptSetDone {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+}
+
+message ScSceneInteractiveEventTrigger {
+}
+
+message ScSceneDropCreate {
+ SceneDrop drop_data = 1;
+}
+
+message ScSceneDropDelete {
+ uint64 drop_id = 1;
+}
+
+message ScSceneDropModify {
+ uint64 drop_id = 1;
+ map items = 2;
+ repeated ScdItemGrid inst_list = 3;
+ repeated uint64 del_inst_list = 4;
+}
+
+message ScSceneGradeChangeNotify {
+ int32 scene_num_id = 1;
+ int32 grade = 2;
+ int64 ts = 3;
+}
+
+message ScSceneClientIdInfo {
+ uint32 role_idx = 1;
+ uint64 last_max_idx = 2;
+}
+
+message ScSceneUpdateInteractiveMeta {
+ int32 scene_num_id = 1;
+ uint64 id = 2;
+ int32 meta = 3;
+}
+
+message CsSceneUpdateScriptTaskProgress {
+ int32 scene_num_id = 1;
+ uint64 script_id = 2;
+ string task_id = 3;
+ repeated ScriptTaskObjectiveValueOp objective_value_ops = 4;
+}
+
+message ScriptTaskObjectiveValueOp {
+ string condition_id = 1;
+ int32 value = 2;
+ bool is_add = 3;
+}
+
+message CsCheckSensitive {
+ string content = 1;
+}
+
+message ScCheckSensitive {
+}
+
+message CsSettlementSelectRequire {
+ string settlement_id = 1;
+ string settlement_require_id = 2;
+}
+
+message ScSettlementSelectRequire {
+ string settlement_id = 1;
+ string settlement_require_id = 2;
+}
+
+message Settlement {
+ string settlement_id = 1;
+ int32 level = 2;
+ int64 exp = 3;
+ string require_id = 4;
+ string officer_char_template_id = 5;
+ map reports = 6;
+ int64 unlock_ts = 7;
+ bool auto_submit = 8;
+ int64 last_manual_submit_time = 9;
+}
+
+message SettlementDayReport {
+ map consume = 1;
+ map output = 2;
+ int64 exp = 3;
+ int32 level_up_count = 4;
+}
+
+message ScSettlementSyncAll {
+ repeated Settlement settlements = 1;
+ int64 last_tick_time = 2;
+}
+
+message ScSettlementSyncModify {
+ repeated Settlement settlements_modify = 1;
+ int64 last_tick_time = 2;
+}
+
+message CsSettlementSetOfficer {
+ string settlement_id = 1;
+ string officer_template_id = 2;
+}
+
+message ScSettlementSetOfficer {
+ string settlement_id = 1;
+ string officer_template_id = 2;
+}
+
+message ScSettlementFinishRequires {
+ int64 next_finish_time = 1;
+}
+
+message CsSettlementSetSubmitMode {
+ string settlement_id = 1;
+ bool auto_submit = 2;
+}
+
+message ScSettlementSetSubmitMode {
+ string settlement_id = 1;
+ bool auto_submit = 2;
+}
+
+message CsSettlementSubmitRequire {
+ string settlement_id = 1;
+}
+
+message CsShopBuy {
+ string shop_id = 1;
+ string goods_id = 2;
+ int32 count = 3;
+}
+
+message CsShopSwapMoney {
+ string source_money_id = 1;
+ string target_money_id = 2;
+ int64 swap_source_money_num = 3;
+}
+
+message ScdShopDynamicGoods {
+ string goods_id = 1;
+ string goods_template_id = 2;
+}
+
+message ScdShopRandomRefresh {
+ repeated ScdShopDynamicGoods dynamic_goods = 1;
+}
+
+message ScdShopDiscount {
+ string goods_id = 1;
+ float discount = 2;
+}
+
+message ScdShopUnlockConditions {
+ string id = 1;
+ map unlock_condition_values = 2;
+ map unlock_condition_flags = 3;
+}
+
+message ScdShop {
+ string shop_id = 1;
+ int32 shop_refresh_type = 2;
+ map unlock_condition_values = 3;
+ map unlock_condition_flags = 4;
+ repeated ScdShopDiscount discounts = 5;
+ repeated ScdShopUnlockConditions goods_unlock_conditions = 6;
+ bool is_dynamic_good = 7;
+ bool is_dynamic_discount = 8;
+ oneof refresh_data {
+ ScdShopRandomRefresh random_refresh = 21;
+ }
+}
+
+message ScdShopFrequencyLimit {
+ string frequency_limit_id = 1;
+ int32 count = 2;
+}
+
+message ScShopSync {
+ repeated ScdShopUnlockConditions shop_group_conditions = 1;
+ repeated ScdShop shops = 2;
+ repeated ScdShopFrequencyLimit frequency_limits = 3;
+}
+
+message ScShopSyncShopGroupCondition {
+ ScdShopUnlockConditions shop_group_conditions = 1;
+}
+
+message ScShopModifyShop {
+ repeated ScdShop shops = 1;
+}
+
+message ScShopSyncShopCondition {
+ ScdShopUnlockConditions shop_conditions = 1;
+}
+
+message ScShopSyncGoodsCondition {
+ ScdShopUnlockConditions goods_conditions = 1;
+}
+
+message ScShopModifyFrequencyLimit {
+ repeated ScdShopFrequencyLimit frequency_limits = 1;
+}
+
+message ScShopDeleteFrequencyLimit {
+ repeated string frequency_limits = 1;
+}
+
+message ScShopBuyResp {
+ string shop_id = 1;
+ string goods_id = 2;
+ int32 count = 3;
+}
+
+message ScShopSwapMoney {
+ string source_money_id = 1;
+ string target_money_id = 2;
+ int64 cost_source_money_num = 3;
+ int64 get_target_money_num = 4;
+}
+
+message CsCastSkill {
+ uint64 skill_seraial_id = 1;
+ uint64 attacker_obj_id = 2;
+ string skill_id = 3;
+ Vector attacker_position = 4;
+ Vector attacker_rotation = 5;
+ int64 time_stamp = 6;
+ int64 scaled_time_stamp = 7;
+ repeated uint64 target_obj_id_list = 8;
+}
+
+message CsCastSkillEnd {
+ uint64 skill_seraial_id = 1;
+ uint64 attacker_obj_id = 2;
+}
+
+message CsCastSkillEffect {
+ uint64 skill_seraial_id = 1;
+ uint64 skill_stage_idx = 2;
+ uint64 attacker_obj_id = 3;
+ int64 time_stamp = 4;
+ int64 scaled_time_stamp = 5;
+}
+
+message ScCastSkill {
+ uint64 skill_seraial_id = 1;
+ uint64 attacker_obj_id = 2;
+ int64 time_stamp = 6;
+ int64 scaled_time_stamp = 7;
+}
+
+message ScSyncHp {
+ uint64 obj_id = 1;
+ int32 hp = 2;
+}
+
+message ScSyncPoise {
+ uint64 obj_id = 1;
+ int32 poise = 2;
+}
+
+message ScSyncUltimateSpCellCnt {
+ uint64 obj_id = 1;
+ int32 ultimate_sp_cell_cnt = 2;
+}
+
+message SnsMoment {
+ string moment_id = 1;
+ int64 timestamp = 2;
+ bool read = 3;
+ repeated int32 option = 4;
+ bool like = 5;
+}
+
+message SnsChatInfo {
+ string chat_id = 1;
+ int32 chat_type = 2;
+ int64 timestamp = 3;
+ int32 member_num = 4;
+ repeated SnsDialogInfo dialogs = 5;
+ string signature_id = 6;
+}
+
+message SnsDialogInfo {
+ string dialog_id = 1;
+ int64 timestamp = 2;
+ string cur_content_id = 3;
+ string chat_id = 5;
+ repeated int32 options = 4;
+ int32 dialog_type = 6;
+ bool is_end = 7;
+ bool is_read = 8;
+}
+
+message CsSnsGetList {
+ SnsGetType sns_type = 1;
+}
+
+enum SnsGetType {
+ All = 0;
+ Moment = 1;
+ Chat = 2;
+}
+
+message ScSnsGetMomentList {
+ repeated SnsMoment moment_list = 1;
+}
+
+message ScSnsGetChatList {
+ repeated SnsChatInfo chat_list = 1;
+}
+
+message ScSyncSnsChatModify {
+ string chat_id = 1;
+ int32 chat_type = 2;
+ int32 member_num = 3;
+ string signature_id = 4;
+}
+
+message CsSnsMomentRead {
+ repeated string moment_id = 1;
+}
+
+message ScSnsMomentRead {
+ repeated string moment_id = 1;
+}
+
+message ScSyncSnsAddDialog {
+ string chat_id = 1;
+ int32 chat_type = 2;
+ int64 timestamp = 3;
+ SnsDialogInfo dialog_info = 4;
+ int32 member_num = 5;
+ string signature_id = 6;
+}
+
+message ScSyncSnsAddMoment {
+ SnsMoment moment_info = 1;
+}
+
+message CsSnsMomentOption {
+ string moment_id = 1;
+ repeated int32 option = 2;
+ bool like = 3;
+ SnsMomentOption option_type = 4;
+}
+
+enum SnsMomentOption {
+ Invalid = 0;
+ Like = 1;
+ Reply = 2;
+}
+
+message ScSnsMomentOption {
+ string moment_id = 1;
+ repeated int32 option = 2;
+ bool like = 3;
+ SnsMomentOption option_type = 4;
+}
+
+message CsSnsChatDialogOption {
+ string chat_id = 1;
+ string dialog_id = 2;
+ string cur_content_id = 3;
+ string jump_content_id = 4;
+ int32 option = 5;
+}
+
+message ScSyncSnsDialogModify {
+ string chat_id = 1;
+ SnsDialogInfo dialog_info = 2;
+ bool set_option = 3;
+}
+
+message CsSnsFinishDialog {
+ string chat_id = 1;
+ string dialog_id = 2;
+}
+
+message CsSnsReadDialog {
+ string chat_id = 1;
+ string dialog_id = 2;
+}
+
+message ScSnsReadDialog {
+ string chat_id = 1;
+ string dialog_id = 2;
+}
+
+message ScdSpaceshipControlCenter {
+ map reports = 1;
+}
+
+message ScdSpaceshipReport {
+ repeated int32 char_work_record = 1;
+ map output = 2;
+}
+
+message ScdSpaceshipManufacturingStation {
+ SpaceshipManufacturingOrder remain_produce_order = 1;
+ map product_map = 2;
+ map reports = 3;
+}
+
+message SpaceshipManufacturingOrder {
+ string formula_id = 1;
+ int32 remain_produce_count = 2;
+ int32 current_progress = 3;
+}
+
+message ScdSpaceshipRoomAttrSource {
+ string char_id = 1;
+ int32 index = 2;
+ string skill_id = 3;
+ int32 source_type = 4;
+}
+
+message ScdSpaceshipRoomAttrUnit {
+ int32 type = 1;
+ float value = 2;
+ bool is_not_working = 3;
+ ScdSpaceshipRoomAttrSource source = 4;
+}
+
+message ScdSpaceshipRoomAttr {
+ float value = 1;
+ float theoretical_value = 2;
+ repeated ScdSpaceshipRoomAttrUnit base_attrs = 3;
+ repeated ScdSpaceshipRoomAttrUnit percent_attrs = 4;
+ repeated ScdSpaceshipRoomAttrUnit abs_addition_attrs = 5;
+}
+
+message ScdSpaceshipRoom {
+ string id = 1;
+ int32 type = 2;
+ int32 level = 3;
+ map level_up_conditon_values = 4;
+ map level_up_condition_flags = 5;
+ repeated string stationed_char_list = 6;
+ map attrs_map = 7;
+ bool has_char_working = 8;
+ oneof room_data {
+ ScdSpaceshipControlCenter control_center = 21;
+ ScdSpaceshipManufacturingStation manufacturing_station = 22;
+ ScdSpaceshipGrowCabin grow_cabin = 23;
+ }
+}
+
+message ScdSpaceshipGrowCabin {
+ repeated ScdSpaceshipGrowBox boxes = 1;
+ map reports = 2;
+}
+
+message ScdSpaceshipGrowBox {
+ int32 box_id = 1;
+ string recipe_id = 2;
+ string preview_recipe_id = 3;
+ float progress = 4;
+ bool is_ready = 5;
+}
+
+message ScdSpaceshipRoomLevelUp {
+ string id = 1;
+ int32 type = 2;
+ int32 level = 3;
+ map level_up_conditon_values = 4;
+ map level_up_condition_flags = 5;
+}
+
+message ScdSpaceshipRoomStation {
+ string id = 1;
+ int32 type = 2;
+ repeated string stationed_char_list = 3;
+ map attrs_map = 4;
+ bool has_char_working = 5;
+ oneof produce_status {
+ ScdSpaceshipManufacturingStationProduceStatus manufacturing_station_produce_status = 21;
+ ScdSpaceshipGrowCabinProduceStatus grow_cabin_produce_status = 22;
+ }
+}
+
+message ScdSpaceshipManufacturingStationProduceStatus {
+ SpaceshipManufacturingOrder remain_produce_order = 1;
+}
+
+message ScdSpaceshipGrowCabinProduceStatus {
+ repeated ScdSpaceshipGrowBox boxes = 1;
+}
+
+message ScdSpaceshipCharSkill {
+ int32 index = 1;
+ string skill_id = 2;
+}
+
+message ScdSpaceshipChar {
+ string char_id = 1;
+ float physical_strength = 2;
+ int32 favorability = 3;
+ string stationed_room_id = 4;
+ bool is_working = 5;
+ repeated ScdSpaceshipCharSkill skills = 6;
+ bool is_presented = 7;
+ int32 recv_gift_cnt = 8;
+ string temp_reward_id = 9;
+}
+
+message ScdSpaceshipCharSkillList {
+ string char_id = 1;
+ repeated ScdSpaceshipCharSkill skills = 2;
+}
+
+message ScdSpaceshipCharStation {
+ string char_id = 1;
+ string stationed_room_id = 2;
+ bool is_working = 3;
+ float physical_strength = 4;
+}
+
+message ScSpaceshipSync {
+ repeated ScdSpaceshipRoom rooms = 1;
+ repeated ScdSpaceshipChar chars = 2;
+}
+
+message ScSpaceshipModifyRoom {
+ repeated ScdSpaceshipRoom rooms = 1;
+}
+
+message ScSpaceshipSyncRoomLevelUp {
+ repeated ScdSpaceshipRoomLevelUp room_level_up_infos = 1;
+}
+
+message ScSpaceshipModifyChar {
+ repeated ScdSpaceshipChar chars = 1;
+}
+
+message ScSpaceshipSyncCharSkill {
+ repeated ScdSpaceshipCharSkillList char_skills = 1;
+}
+
+message ScSpaceshipSyncRoomStation {
+ repeated ScdSpaceshipRoomStation rooms = 1;
+ repeated ScdSpaceshipCharStation chars = 2;
+}
+
+message CharPresentGiftInfo {
+ string char_id = 1;
+ string reward_id = 2;
+}
+
+message ScSpaceshipPresentCharInfo {
+ repeated CharPresentGiftInfo gift_infos = 1;
+}
+
+message SpaceshipCharFavorabilityChangeInfo {
+ string char_id = 1;
+ int32 cur_fav = 2;
+}
+
+message ScSpaceshipCharFavorabilityChange {
+ repeated SpaceshipCharFavorabilityChangeInfo change_infos = 1;
+}
+
+message ScSpaceshipRecvGiftFromChar {
+ string char_id = 1;
+}
+
+message ScSpaceshipPresentGiftToChar {
+ string char_id = 1;
+ int32 cur_fav = 2;
+ int32 recv_gift_cnt = 3;
+}
+
+message ScSpaceshipManufacturingStationSync {
+ string room_id = 1;
+ SpaceshipManufacturingOrder remain_produce_order = 2;
+ map product_map = 3;
+}
+
+message ScSpaceshipManufacturingStationCancel {
+ string room_id = 1;
+}
+
+message ScSpaceshipManufacturingStationCollect {
+ string room_id = 1;
+}
+
+message ScSpaceshipModifyGrowCabin {
+ string id = 1;
+ repeated ScdSpaceshipGrowBox boxes = 2;
+}
+
+message ScSpaceshipGrowCabinBreed {
+ repeated ItemBundle items = 1;
+}
+
+message ScSpaceshipGrowCabinSow {
+}
+
+message ScSpaceshipGrowCabinHarvest {
+ repeated ItemBundle items = 1;
+}
+
+message ScSpaceshipGrowCabinCancel {
+}
+
+message ScSpaceshipReportCharWorkModify {
+ repeated ScdSpaceshipRoomReportCharWorkModify room_char_work_record = 1;
+}
+
+message ScdSpaceshipRoomReportCharWorkModify {
+ string room_id = 1;
+ int64 ts = 2;
+ repeated int32 char_work_record = 3;
+}
+
+message ScSpaceshipReportOutputModify {
+ string room_id = 1;
+ map output_report = 2;
+}
+
+message ScdSpaceshipRoomReportOutput {
+ map output = 1;
+}
+
+message ScSpaceshipManufacturingStationStart {
+ string room_id = 1;
+ SpaceshipManufacturingOrder remain_produce_order = 2;
+}
+
+message CsSpaceshipBuildRoom {
+ string room_id = 1;
+}
+
+message CsSpaceshipLevelUpRoom {
+ string room_id = 1;
+}
+
+message CsSpaceshipStationChar {
+ string room_id = 1;
+ repeated string stationed_char_list = 2;
+}
+
+message CsSpaceshipStationCharChangeWorkState {
+ string char_id = 1;
+ bool go_to_work = 2;
+}
+
+message CsSpaceshipPresentGiftToChar {
+ string char_id = 1;
+ repeated ItemBundle gifts = 2;
+}
+
+message CsSpaceshipRecvGiftFromChar {
+ string char_id = 1;
+}
+
+message CsSpaceshipManufacturingStationCollect {
+ string room_id = 1;
+}
+
+message CsSpaceshipManufacturingStationStart {
+ string room_id = 1;
+ string formula_id = 2;
+ int32 count = 3;
+}
+
+message CsSpaceshipManufacturingStationCancel {
+ string room_id = 1;
+}
+
+message CsSpaceshipManufacturingStationChangeOrder {
+ string room_id = 1;
+ string formula_id = 2;
+ int32 count = 3;
+}
+
+message CsSpaceshipGrowCabinBreed {
+ string room_id = 1;
+ string recipe_id = 3;
+ int32 multi = 4;
+}
+
+message CsSpaceshipGrowCabinSow {
+ string room_id = 1;
+ repeated CsdSpaceshipGrowCabinSow boxes = 2;
+}
+
+message CsdSpaceshipGrowCabinSow {
+ string recipe_id = 1;
+ int32 box_id = 2;
+}
+
+message CsSpaceshipGrowCabinClearPreviewRecipe {
+ string room_id = 1;
+ int32 box_id = 2;
+}
+
+message CsSpaceshipGrowCabinHarvest {
+ string room_id = 1;
+ repeated int32 box_id_list = 2;
+ bool all = 3;
+}
+
+message CsSpaceshipGrowCabinCancel {
+ string room_id = 1;
+ int32 box_id = 2;
+}
+
+message CsSceneInteractSpInteractive {
+ uint64 obj_id = 1;
+ SpInteractiveOpType op_type = 2;
+ oneof op_payload {
+ CsdSpInteractiveDoodadCommonPick doodad_common_pick = 10;
+ CsdSpInteractiveDoodadCommonBreak doodad_common_break = 11;
+ CsdSpInteractiveCommonActive common_active = 12;
+ }
+}
+
+enum SpInteractiveOpType {
+ SP_INTERACTIVE_OP_TYPE_NONE = 0;
+ DOODAD_COMMON_PICK = 1;
+ DOODAD_COMMON_BREAK = 2;
+ COMMON_ACTIVE = 3;
+ SP_INTERACTIVE_OP_TYPE_MAX = 4;
+}
+
+message CsdSpInteractiveDoodadCommonPick {
+}
+
+message CsdSpInteractiveDoodadCommonBreak {
+ int64 new_hp_ratio = 1;
+}
+
+message CsdSpInteractiveCommonActive {
+}
+
+message ScSceneInteractSpInteractive {
+ uint64 obj_id = 1;
+}
+
+message StatInfo {
+ int32 type = 1;
+ uint32 value = 2;
+ int32 param = 3;
+}
+
+message ScSyncAllStat {
+ repeated StatInfo stats_info = 1;
+}
+
+message ScSyncStat {
+ StatInfo stat_info = 1;
+}
+
+message SubmitSourceParamMission {
+ string quest_id = 1;
+}
+
+message SubmitSourceParamInteractive {
+ uint64 obj_id = 2;
+}
+
+message SubmitTerm {
+ repeated SubmitItem submit_item_list = 1;
+}
+
+message CsSceneSubmitItem {
+ string submit_id = 1;
+ repeated SubmitTerm submit_item_term_list = 6;
+ SubmitSourceType source_type = 3;
+ oneof submit_source_param {
+ SubmitSourceParamMission mission = 4;
+ SubmitSourceParamInteractive interactive = 5;
+ }
+}
+
+enum SubmitSourceType {
+ SUBMIT_SOURCE_TYPE_NONE = 0;
+ SUBMIT_SOURCE_TYPE_Mission = 1;
+ SUBMIT_SOURCE_TYPE_INTERACTIVE = 2;
+}
+
+message ScSceneSubmitItem {
+ string submit_id = 1;
+ bool ret = 2;
+}
+
+message CsSceneSubmitRecycle {
+ repeated SubmitItem submit_item_list = 1;
+}
+
+message ScSceneSubmitRecycle {
+ bool ret = 1;
+}
+
+message ScSyncTdSettlement {
+ string td_id = 1;
+ TdSettlementType settlement_type = 2;
+ string reward_id = 3;
+ int32 extra_bandwidth = 4;
+ int32 extra_battle_building_limit = 5;
+ int32 extra_travel_pole_limit = 6;
+}
+
+enum TdSettlementType {
+ TD_Settlement_None = 0;
+ TD_Settlement_Passed = 1;
+ TD_Settlement_Leave = 2;
+ TD_Settlement_Defeat = 3;
+}
+
+message CsTdGetTdList {
+ string stronghold_id = 1;
+}
+
+message ScTdGetTdList {
+ string stronghold_id = 1;
+ repeated string unlock_td_list = 2;
+ repeated string completed_td_list = 3;
+ repeated string closed_td_list = 4;
+}
+
+message ScSyncTdFullStatus {
+ repeated ScTdGetTdList full_data = 1;
+}
+
+message CsTdStart {
+ string td_id = 1;
+ bool is_restart = 2;
+}
+
+message ScTdStart {
+ string td_id = 1;
+ bool is_restart = 2;
+ int32 max_building_num = 3;
+}
+
+message CsTdLeave {
+ string td_id = 1;
+}
+
+message ScTdLeave {
+ string td_id = 1;
+}
+
+message CsTdBuyBuilding {
+ string td_id = 1;
+ string building_id = 2;
+ int32 num = 3;
+}
+
+message ScTdBuyBuilding {
+ string td_id = 1;
+ string building_id = 2;
+ int32 num = 3;
+}
+
+message ScSyncTdDropItem {
+ uint32 drop_id = 1;
+ string item_id = 2;
+ uint32 num = 3;
+ Vector position = 4;
+ uint32 duration = 5;
+}
+
+message CsTdPickDropItem {
+ repeated uint32 drop_id_list = 1;
+}
+
+message ScTdPickDropItem {
+ repeated uint32 drop_id_list = 1;
+}
+
+message CsTdDropExpired {
+ repeated uint32 drop_id_list = 1;
+}
+
+message CsGameTimeFreezeStartReq {
+ int32 reason = 1;
+}
+
+message CsGameTimeFreezeEndReq {
+ int32 reason = 1;
+}
+
+message ScGameTimeFreezeStartRsp {
+ int32 reason = 1;
+ bool in_time_freeze = 2;
+}
+
+message ScGameTimeFreezeEndRsp {
+ int32 reason = 1;
+ bool in_time_freeze = 2;
+}
+
+message ScSyncAllUnlock {
+ repeated int32 unlock_systems = 1;
+}
+
+message ScUnlockSystem {
+ int32 unlock_system_type = 1;
+}
+
+message MoneyInfo {
+ string id = 1;
+ uint64 amount = 2;
+}
+
+message CsMoneyChange {
+ string money_from_id = 1;
+ string money_to_id = 2;
+ uint64 money_from_count = 3;
+}
+
+message ScSyncWallet {
+ repeated MoneyInfo money_list = 1;
+}
+
+message ScWalletSyncMoney {
+ string id = 1;
+ uint64 amount = 2;
+ int64 op_amount = 3;
+}
+
+message ScRewardDropMoneyToast {
+ string id = 1;
+ int64 amount = 2;
+ Vector pos = 3;
+}
+
+message CsWeaponPuton {
+ uint64 charid = 1;
+ uint64 weaponid = 2;
+}
+
+message ScWeaponPuton {
+ uint64 charid = 1;
+ uint64 weaponid = 2;
+ uint64 offweaponid = 3;
+ uint64 put_off_charid = 4;
+}
+
+message CsWeaponBreakthrough {
+ uint64 weaponid = 1;
+}
+
+message ScWeaponBreakthrough {
+ uint64 weaponid = 1;
+ uint64 breakthrough_lv = 2;
+}
+
+message CsWeaponRefineUpgrade {
+ uint64 weaponid = 1;
+ uint64 upgrade_refine_lv = 2;
+ repeated uint64 cost_weapon_ids = 3;
+}
+
+message ScWeaponRefineUpgrade {
+ uint64 weaponid = 1;
+ uint64 refine_lv = 2;
+}
+
+message CsWeaponAddExp {
+ uint64 weaponid = 1;
+ map cost_item_id2_count = 2;
+ repeated uint64 cost_weapon_ids = 3;
+}
+
+message ScWeaponAddExp {
+ uint64 weaponid = 1;
+ uint64 new_exp = 2;
+ uint64 weapon_lv = 3;
+}
+
+message CsWeaponAttachGem {
+ uint64 weaponid = 1;
+ uint64 gemid = 2;
+}
+
+message ScWeaponAttachGem {
+ uint64 weaponid = 1;
+ uint64 gemid = 2;
+ uint64 detach_gemid = 3;
+ uint64 detach_gem_weaponid = 4;
+}
+
+message CsWeaponDetachGem {
+ uint64 weaponid = 1;
+}
+
+message ScWeaponDetachGem {
+ uint64 weaponid = 1;
+ uint64 detach_gemid = 2;
+}
+
+message ScSyncAllWiki {
+ repeated uint32 latest_unlock = 1;
+}
+
+message CsUnlockWiki {
+ uint32 wiki_id = 1;
+}
+
+message CsMarkWikiRead {
+ repeated uint32 wiki_ids = 1;
+}
+
+message Opts {
+ optional bool unique = 1;
+}
+
diff --git a/Campofinale/Network/Packet.cs b/Campofinale/Network/Packet.cs
index 2e0437c..f9f4515 100644
--- a/Campofinale/Network/Packet.cs
+++ b/Campofinale/Network/Packet.cs
@@ -165,6 +165,7 @@ namespace Campofinale.Network
PutUInt16(data, (ushort)body.Length, 1);
PutByteArray(data, head.ToByteArray(), 3);
PutByteArray(data, body, 3 + head.ToByteArray().Length);
+ if(Server.config!=null)
if (Server.config.logOptions.packets && !Server.scMessageToHide.Contains((ScMsgId)msgId))
Logger.Print($"Sending Packet: {((ScMsgId)msgId).ToString().Pastel(Color.LightBlue)} Id: {msgId} with {data.Length} Bytes");
@@ -193,5 +194,27 @@ namespace Campofinale.Network
seqNext = csHead_.UpSeqid;
return new Packet() { csHead = csHead_, finishedBody = BodyBytes,cmdId=csHead_.Msgid };
}
+ ///
+ /// Read the byteArray as a valid packet
+ ///
+ ///
+ /// The decoded packet
+ public static Packet Read(byte[] byteArray)
+ {
+ byte headLength = GetByte(byteArray, 0);
+ ushort bodyLength = GetUInt16(byteArray, 1);
+
+ byte[] csHeadBytes = new byte[headLength];
+ byte[] BodyBytes = new byte[bodyLength];
+ Array.Copy(byteArray, 3, csHeadBytes, 0, headLength);
+ Array.Copy(byteArray, 3 + headLength, BodyBytes, 0, bodyLength);
+ CSHead csHead_ = CSHead.Parser.ParseFrom(csHeadBytes);
+ /*if (Server.config.logOptions.packets && !Server.csMessageToHide.Contains((CsMsgId)csHead_.Msgid))
+ {
+ Logger.Print(csHead_.ToString());
+ }*/
+ seqNext = csHead_.UpSeqid;
+ return new Packet() { csHead = csHead_, finishedBody = BodyBytes, cmdId = csHead_.Msgid };
+ }
}
}
diff --git a/Campofinale/Program.cs b/Campofinale/Program.cs
index 2663065..8ae113c 100644
--- a/Campofinale/Program.cs
+++ b/Campofinale/Program.cs
@@ -1,13 +1,80 @@
using Campofinale;
using Newtonsoft.Json;
+using System.Net.Sockets;
+using System.Net;
+using Campofinale.Network;
+using Campofinale.Protocol;
+using Google.Protobuf;
+using Pastel;
+using System.Drawing;
class Program
{
static void Main(string[] args)
{
StartServer(args);
+ //FakeClientTester();
}
+ public static byte[] ConcatenateByteArrays(byte[] array1, byte[] array2)
+ {
+ return array1.Concat(array2).ToArray();
+ }
+ private static void FakeClientTester()
+ {
+ string serverIp = "beyond-ric.gryphline.com";
+ int serverPort = 30000;
+ Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ IPAddress[] addresses = Dns.GetHostAddresses(serverIp);
+
+ IPAddress ipAddress = addresses[0];
+
+ socket.Connect(new IPEndPoint(ipAddress, serverPort));
+
+ socket.Send(Packet.EncodePacket((int)CsMsgId.CsLogin,new CsLogin() { ClientVersion="0.5.5",Uid= "", Token= "", Env=EnvType.Prod,PlatformId=ClientPlatformType.Windows,Area=AreaType.Oversea,ClientResVersion="", LoginToken= "" }.ToByteArray()));
+
+ while (true)
+ {
+ byte[] buffer = new byte[3];
+ int length = socket.Receive(buffer);
+ if (length == 3)
+ {
+ Packet packet = null;
+ byte headLength = Packet.GetByte(buffer, 0);
+ ushort bodyLength = Packet.GetUInt16(buffer, 1);
+ byte[] moreData = new byte[bodyLength + headLength];
+ while (socket.Available < moreData.Length)
+ {
+
+ }
+ int mLength = socket.Receive(moreData);
+ if (mLength == moreData.Length)
+ {
+ buffer = ConcatenateByteArrays(buffer, moreData);
+ packet = Packet.Read(buffer);
+
+ switch ((ScMsgId)packet.cmdId)
+ {
+ case ScMsgId.ScLogin:
+ ScLogin p1 = ScLogin.Parser.ParseFrom(packet.finishedBody);
+ Console.WriteLine(JsonConvert.SerializeObject(p1));
+ break;
+ case ScMsgId.ScNtfErrorCode:
+ ScNtfErrorCode p2 = ScNtfErrorCode.Parser.ParseFrom(packet.finishedBody);
+ Console.WriteLine(JsonConvert.SerializeObject(p2));
+ break;
+ default:
+ string base64 = Convert.ToBase64String(packet.finishedBody);
+ Console.WriteLine($"{(ScMsgId)packet.cmdId}: {base64}");
+ break;
+ }
+
+
+
+ }
+ }
+ }
+ }
private static void StartServer(string[] args)
{
Console.Title = "Initializing...";