From b890957b7143384f35cec83183560d60944e4f27 Mon Sep 17 00:00:00 2001 From: azw Date: Mon, 30 Oct 2023 13:03:24 +0000 Subject: [PATCH] 1 --- .gitignore | 3 +- server/notifyserver/proto/mt.proto | 607 +++++++++++++++++++++-- server/notifyserver/src/main.rs | 1 + server/notifyserver/tools/pbtools/app.js | 60 +-- 4 files changed, 605 insertions(+), 66 deletions(-) diff --git a/.gitignore b/.gitignore index 87f6f2c..1529aec 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ node_modules/ *# *#* cs_msgid.rs -cs_proto.rs \ No newline at end of file +cs_proto.rs +*auto_gen* \ No newline at end of file diff --git a/server/notifyserver/proto/mt.proto b/server/notifyserver/proto/mt.proto index 30cc3d0..9eadd4d 100644 --- a/server/notifyserver/proto/mt.proto +++ b/server/notifyserver/proto/mt.proto @@ -1,69 +1,612 @@ package mt; -option go_package = ".;mt"; - -message AliKeyConf +message Parameter { - optional int32 value = 3; - optional string access_keyid = 1; - optional string access_secret = 2; + optional string param_name = 1; + optional string param_value = 2; } -message AliKeyInfoMetas +message Attr { - repeated AliKeyConf values = 1; + required int32 attr_id = 1; + required string attr_cname = 2; + required string attr_ename = 3; } -message TxKeyConf +message Map { - optional string key = 1; - optional string secret_key = 2; + optional int32 map_id = 1; + optional string template_list = 2; + optional string map_name = 3; + optional float map_width = 4; + optional float map_height = 5; + optional string airdrops = 6; + optional int32 terminator_airdrop = 7; + optional int32 player = 8; + optional string refresh_robot = 9; + optional int32 map_mode = 10; + optional string safearea = 11; + optional string game_start_buff_list = 12; + optional string map_pic = 13; + optional string first_safearea_center = 14; + optional int32 init_gas_ring = 15; + optional string airraids = 16; + optional string car_num_limit = 17; + optional float scale = 18; + optional string map_collider = 19; + optional string world_object_file = 20; + optional string terrain_file = 21; } -message TxKeyInfoMetas +message MapArea { - repeated TxKeyConf values = 1; + optional int32 map_id = 1; + optional int32 area_type = 2; + optional int32 area_subtype = 3; + optional string area_center = 4; + optional float area_width = 5; + optional float area_height = 6; } -message ServerInfo +message MapThing { - optional int32 instance_id = 1; - optional string listen_ip = 2; - optional int32 listen_port = 3; - optional int32 testing = 4; + optional int32 thing_id = 1; //物件id + optional int32 thing_type = 16; + optional int32 time = 17; + optional int32 type = 2; //类型 + optional int32 height = 3; //高度 + optional int32 width = 4; //宽度 + optional int32 hp = 5; //生命 + optional float damage = 6; //伤害 + optional float damage_dia = 7; //伤害半径 + optional string drop = 8; //掉落 + optional int32 is_door = 10; //是否门 + optional int32 is_house = 11; //是否房间 + optional int32 is_tree = 12; //是否树 + optional int32 house_id = 13; //房间id + optional string buff_list = 14; + optional int32 explosion_effect = 15; + optional int32 explosion_interval = 18; + optional int32 explosion_dmg_delay = 37; + optional int32 explosion_times = 19; + optional int32 explosion_float = 20; + optional string preexplosion_summon = 35; + optional string monster_list = 21; + optional string special_damage_type = 22; + optional string receive_special_damage_type = 23; + optional string param1 = 24; + optional string param2 = 25; + optional int32 interaction_mode = 26; + optional int32 view_mode = 27; + optional int32 bullet_hit = 28; + optional int32 collision_hit = 29; + optional int32 explosion_hit = 30; + optional string sweep_tags = 31; + optional int32 prebattle_hide = 32; + optional int32 life_time = 33; + optional int32 summon_born_rad = 34; + optional string shapes = 36; + optional int32 delay_destroy = 38; } -message ServerInfoMetas +message SafeArea { - repeated ServerInfo values = 1; + optional int32 id = 1; //id + optional int32 level = 2; //安全区登记 + optional int32 rad = 3; //半径 + optional int32 wait_time = 4; //等待时间 + optional int32 shrink_speed = 5; //收缩速度 + optional float hurt = 6; //伤害/秒 + optional int32 type = 7; + optional int32 x1 = 8; + optional int32 y1 = 9; } -message SceneWhiteList +message SafeAreaPos { - repeated string list = 1; + optional int32 id = 1; + optional int32 x1 = 2; + optional int32 y1 = 3; + optional int32 x2 = 4; + optional int32 y2 = 5; + optional int32 x3 = 6; + optional int32 y3 = 7; + optional int32 x4 = 8; + optional int32 y4 = 9; + optional int32 x5 = 10; + optional int32 y5 = 11; + optional int32 x6 = 12; + optional int32 y6 = 13; + optional int32 x7 = 14; + optional int32 y7 = 15; + optional int32 x8 = 16; + optional int32 y8 = 17; + optional int32 x9 = 18; + optional int32 y9 = 19; + optional int32 x10 = 20; + optional int32 y10 = 21; } -message SceneWhiteListMetas +message Item { - repeated SceneWhiteList values = 1; + optional int32 id = 1; + optional int32 type = 2; + optional int32 sub_type = 3; + optional int32 quality = 4; + optional int32 use = 5; + optional int32 skinid = 6; + optional int32 isdefaultskin = 7; + optional int32 playerid = 8; + optional int32 relationship = 9; + optional string name = 10; } -message LaunchWhiteList +message Equip { - repeated string list = 1; + optional int32 id = 1; //装备id + optional int32 equip_type = 2; //装备类型 + optional int32 equip_subtype = 3; //装备子类型 + optional int32 equip_lv = 4; //装备等级 + optional int32 fire_mode = 5; //开火模式 + optional int32 use_bullet = 6; //使用子弹 + optional int32 clip_volume = 7; //弹夹数量 + optional int32 reload_time = 8; //装弹时间 + optional int32 fire_rate = 9; //武器射速 + optional string atk = 10; //攻击力 + optional int32 def = 11; //防御力 + optional string max_hp = 41; + optional int32 explosion_range = 12; //子弹爆炸范围 + optional int32 bullet_speed = 13; //子弹速度 + optional int32 range = 14; //射程 + optional int32 use_time = 15; //使用时间 + optional string heal = 16; //瞬间生命恢复 + optional int32 time = 17; //时间 + optional string volume = 19; //装备容量 + optional int32 bullet_rad = 20; //子弹半径 + optional int32 group_num = 21; //每组数量 + optional int32 is_luck = 22; //是否吉利服 + optional string bullet_born_offset = 30; //子弹出生偏移 + optional float bullet_angle = 34; //子弹浮动方向 + optional string name = 35; //装备名字 + optional float rad = 36; //半径 + optional float rad2 = 37; + optional int32 buffid = 38; + optional int32 drop_id = 40; + optional int32 explosion_effect = 42; + optional string param1 = 43; + optional string param2 = 44; + optional int32 reloadtype = 46; + optional float recoil_force = 47; + optional int32 missiles_time = 48; + optional int32 heroid = 49; + optional string launch_dev = 50; + optional string power_time = 51; + optional string power_gun = 52; + optional string power_buff = 53; + optional int32 through_teammate = 54; + optional string text_icon = 55; + optional string special_damage_type = 56; + optional float max_oil = 57; + optional float average_oil = 58; + optional float atk_mech = 59; + optional int32 use_scene = 60; + optional int32 ispenetrate = 61; + optional int32 is_penetrate_thing = 62; + optional int32 reload_delay_time = 63; + optional int32 cast_time = 64; + optional int32 aiming_cast_time = 80; + optional int32 auto_switch_weapon_time = 65; + optional int32 quality = 66; + optional int32 explosion_damage_delay = 67; + optional int32 bullet_consume_type = 68; + + optional string inventory_slot = 31; + optional int32 _inventory_slot = 32; + + optional float critical = 70; + optional float cri_damage = 71; + + optional int32 shootfire = 73; + optional string hit_buff = 75; + + optional int32 auto_trace = 76; + optional int32 trace_range = 77; + + optional int32 double_gun = 78; } -message LaunchWhiteListMetas +message Hero { - repeated LaunchWhiteList values = 1; + optional int32 id = 1; //唯一id + optional float radius = 2; //半径 + + optional float move_speed = 4; //移动速度 + optional float jump_speed = 5; //跳伞速度 + optional float fall_speed = 6; + optional float aim_speed = 8; + optional float shoot_speed = 7; + optional float reload_speed = 9; + optional float medicine_speed = 10; //移动速度4 + optional float swim_speed = 49; + + optional string volume = 12; //初始库存 + optional int32 level = 13; + optional int32 race = 14; + optional string name = 23; + optional float hit_offset_x = 42; + optional float hit_offset_y = 43; + optional float hit_radius = 25; + optional string ai_script = 26; + optional string init_buffs = 27; + optional int32 default_weapon = 28; + optional string dead_drop = 29; + optional int32 delay_delete = 39; + optional int32 ai = 46; + optional int32 delay_remove = 47; + optional int32 skinlist = 48; + optional string pre_appear_effect = 50; + + optional string pve_score = 51; + + optional int32 hp = 52; + optional int32 damage = 53; + optional int32 defence = 54; + optional float crit_atk = 55; + optional float crit_atk_ratio = 56; + optional float miss = 57; + optional float miss_damage_ruduce = 58; + + optional int32 skill1list = 60; + optional int32 skill2list = 61; + optional int32 skill3list = 62; + + optional float hp_ratio = 63; + optional float damage_ratio = 64; + optional float defence_ratio = 65; + + optional string bt = 70; } -message BlockProvinceCity +message Robot { - repeated string list = 1; + optional int32 id = 1; + optional string name = 2; + optional int32 hero_id = 3; + optional string skin_id = 10; + optional int32 weapon_id = 4; + optional int32 weapon_lv = 5; + + optional int32 sex = 8; + optional float dmg_ratio = 20; + optional string bullet_offset = 21; } -message BlockProvinceCityMetas +message Skill { - repeated BlockProvinceCity values = 1; + required int32 skill_id = 1; + required int32 skill_type = 2; + required string value_up = 6; + required int32 skill_cd = 7; + required int32 skill_target = 8; + required string buff_list = 9; + required float skill_distance = 10; + required int32 cold_time_up = 11; + required int32 max_times = 12; + + optional int32 phase1_time_offset = 20; + optional int32 phase1_func = 21; + optional string phase1_param1 = 22; + optional string phase1_param2 = 23; + optional string phase1_param3 = 24; + + optional int32 phase2_time_offset = 30; + optional int32 phase2_func = 31; + optional string phase2_param1 = 32; + optional string phase2_param2 = 33; + optional string phase2_param3 = 34; + + optional int32 phase3_time_offset = 40; + optional int32 phase3_func = 41; + optional string phase3_param1 = 42; + optional string phase3_param2 = 43; + optional string phase3_param3 = 44; + optional int32 cast_time = 45; + + optional int32 up_exp = 50; + optional int32 nextlv_skill = 51; + + optional int32 attack_dir_lock_time = 52; +} + +message SkillNumber +{ + required int32 skill_id = 1; + optional int32 skill_type = 2; + optional float number = 3; + optional float damage = 4; + optional float damage_addition = 5; + optional float damage_change = 6; + optional float shield = 7; + optional float shield_addition = 8; + optional float resume = 9; + optional float resume_addition = 10; + optional string speed = 11; + optional string range = 12; + optional string range2 = 13; + optional string range3 = 21; + optional string time = 14; + optional string cd = 15; + optional int32 buff_id = 16; + optional float buff_time = 17; + optional string probability = 18; + optional int32 explosion_effect = 19; + optional string effect_list = 20; +} + +message NpcStandard +{ + required int32 id = 1; + optional int32 quality = 2; + optional int32 hp = 3; + optional int32 damage = 4; + optional int32 defence = 5; +} + +message Buff +{ + required int32 buff_id = 1; + required string name = 20; + required int32 buff_target = 2; + required int32 buff_effect = 3; + required int32 trigger_type = 4; + required string buff_param1 = 6; + required string buff_param2 = 7; + required string buff_param3 = 8; + required string buff_param4 = 9; + optional string buff_param5 = 19; + optional string buff_param6 = 37; + required string duration_time = 10; + optional float buff_valueup = 11; + required string immune_buffeffect_list = 12; + optional string post_remove_action = 13; + optional int32 only_server = 14; + optional int32 only_self = 15; + optional int32 depend_effect = 16; + optional string child_buff = 17; + optional int32 coexist_num = 18; + optional int32 dead_valid = 23; + optional string buff_interval = 24; + optional string tag = 25; + optional int32 post_battle_valid = 26; + optional string only_spec_race = 27; + optional string exclude_spec_race = 28; + optional int32 dead_remove = 29; + optional int32 no_immune = 30; + optional int32 lock_move = 31; + optional int32 lock_dir = 34; + optional int32 lock_move_dir = 36; + optional int32 disable_shot = 32; + optional int32 disable_useskill = 33; + optional string effect_list = 35; + optional string res_scale = 39; + optional int32 tenacity = 40; +} + +message Drop +{ + optional int32 drop_id = 1; + optional string item_id = 2; + optional string num = 3; + optional string weight = 4; + optional int32 type = 5; +} + +message AirDrop +{ + optional int32 id = 1; + optional int32 time = 2; + optional int32 appear_time = 3; + optional string drop_id = 4; +} + +message AirRaid +{ + optional int32 id = 1; + optional int32 time = 2; + optional int32 appear_time = 3; + optional string bomb_id = 4; + optional string raid_wave = 5; + optional float rad = 6; +} + +message AirLine +{ + optional int32 id = 1; + optional string start_point = 2; + optional string end_point = 3; + optional float plane_speed = 4; + optional int32 weight = 5; + optional int32 map_id = 6; +} + +message RankReward +{ + optional int32 rank = 1; + optional float parameter = 2; + optional int32 drop = 3; +} + +message RankPoint +{ + optional int32 rank = 1; + optional int32 parameter = 2; + optional int32 parameter2 = 3; + optional int32 parameter3 = 4; +} + +message KillReward +{ + optional int32 kill_num = 1; + optional float parameter = 2; +} + +message KillPoint +{ + optional int32 kill_num = 1; + optional int32 parameter = 2; + optional int32 parameter2 = 3; +} + +message AI +{ + optional int32 id = 13; + //optional int32 ai_level = 1; + optional int32 pursuit_radius = 2; + optional int32 attack_interval = 3; + optional int32 attack_times = 4; + optional int32 attack_type = 5; + optional int32 shot_offset_angle = 6; + optional string random_move_idle_time = 8; + optional string random_move_time = 9; + optional int32 attack_range = 10; + optional float attack_rate = 11; + optional int32 ai_mode = 12; + optional int32 ai_kind = 14; + optional string param1 = 15; + optional string param2 = 16; + optional string param3 = 17; + optional string param4 = 18; + optional string param5 = 19; + optional int32 peace_time = 20; +} + +message Text +{ + optional string textid = 1; + optional string text = 2; +} + +message GunTalentGrow +{ + optional int32 id = 1; + optional int32 talent_id = 2; + optional int32 talent_lv = 3; + optional int32 addtype = 4; + optional string addattr = 5; +} + +message HeroQuality +{ + optional int32 id = 1; + optional int32 quality = 2; + optional int32 gold_limit = 3; + optional int32 lucky = 4; +} + +message GunQuality +{ + optional int32 id = 1; + optional int32 quality = 2; + optional int32 gold_limit = 3; + optional int32 lucky = 4; +} + +message FormulaPvp +{ + optional float top = 1; + optional float ranked_topx = 2; + optional float kills_topx = 3; + optional float hero_topx = 4; + optional float weapon_topx = 5; + optional float survival_topx = 6; +} + +message PveGemini +{ + optional int32 gemini_id = 1; + optional int32 gemini_lv = 2; + optional int32 gemini_limit = 3; + optional string multiplayer_enemy_hp_mul = 4; + optional string born_point = 5; +} + +message PveGeminiContent +{ + optional int32 id = 1; + optional int32 mode_id = 2; + optional int32 round = 3; + optional string spawn_point = 4; + optional string enemy_id = 5; +} + +message PveGeminiMode +{ + optional int32 id = 1; + optional int32 map_id = 2; + optional string mode_time = 3; + optional string area = 4; + optional string score_reward = 5; + optional string round_score = 7; + optional string next_door = 6; + optional int32 wave_prepare_time = 8; +} + +message RankRoom +{ + optional int32 id = 1; + optional int32 elo_min = 2; + optional int32 elo_max = 3; + optional int32 elo_expansion1 = 4; + optional int32 elo_expansion2 = 5; + optional int32 expand_time1 = 6; + optional int32 expand_time2 = 7; + optional int32 player_num_standard = 8; + optional int32 final_time = 9; + optional int32 final_player_num = 10; +} + +message Grasp +{ + optional int32 grasp_id = 1; + optional int32 hero_id = 2; + optional int32 hero_lv = 3; + optional int32 graspbuff_id1 = 4; + optional int32 graspbuff_id1_floor2 = 5; + optional int32 graspbuff_id2 = 6; + optional int32 weapon_id = 7; + optional string add_buff_list = 8; + optional string remove_buff_list = 9; +} + +message GraspBuff +{ + optional int32 graspbuff_id = 1; + optional int32 graspbuff_floor = 2; + optional string graspbuff_trigger = 4; + optional int32 graspbuff_target = 5; + optional string graspbuff_time = 6; + optional int32 attr_id = 7; + optional int32 attr_add_pattern = 8; + optional int32 attr_add_pattern2 = 9; + optional string attr_num = 10; + optional string effect_list = 11; +} + +message GuideStep +{ + optional int32 id = 1; + optional int32 target = 2; + optional string param1 = 3; + optional string param2 = 4; + optional string param3 = 5; + optional string param4 = 6; +} + +message WorldObject +{ + optional int32 object_id= 1; + optional int32 object_type = 2; + optional float x = 3; + optional float y = 4; + optional float z = 5; } diff --git a/server/notifyserver/src/main.rs b/server/notifyserver/src/main.rs index 4cbbdab..2de99e9 100755 --- a/server/notifyserver/src/main.rs +++ b/server/notifyserver/src/main.rs @@ -5,6 +5,7 @@ pub mod app; pub mod mt; pub mod cs_msgid; pub mod cs_proto; +pub mod cs_auto_gen; fn main() { App::instance().borrow_mut().init( diff --git a/server/notifyserver/tools/pbtools/app.js b/server/notifyserver/tools/pbtools/app.js index 95ff98a..2ba5638 100644 --- a/server/notifyserver/tools/pbtools/app.js +++ b/server/notifyserver/tools/pbtools/app.js @@ -33,6 +33,7 @@ class PBTools { this.csCmMsgId = this.csMsgIdPb.lookup('CMMessageId_e'); this.csSmMsgId = this.csMsgIdPb.lookup('SMMessageId_e'); } + /* { this.ssProtoPb = await (new protobuf.Root()).load( this.protoDir + 'ss_proto.proto', @@ -49,7 +50,7 @@ class PBTools { } ); this.ssSSmMsgId = this.ssMsgIdPb.lookup('SSMMessageId_e'); - } + }*/ { this.mtPb = await (new protobuf.Root()).load( this.protoDir + 'mt.proto', @@ -60,27 +61,25 @@ class PBTools { } await this.genCsAutoGen(); await this.genMtbAutoGen(); - await this.genSsAutoGen(); + //await this.genSsAutoGen(); } async genCsAutoGen() { - let data = `package cs + let data = ` +use std::rc::{Rc, Weak}; +use std::cell::RefCell; -import ( - "f5" - proto "github.com/golang/protobuf/proto" -) +pub type CsNetMsgHandler = f9.NetMsgHandler; -type CsNetMsgHandler f5.NetMsgHandler[MsgHandler]; - -type MsgHandlerImpl struct { +pub struct MsgHandlerImpl { } -var handlers [2000]*CsNetMsgHandler +static mut handlers [2000]Option -func GetNetMsgHandler(msgId uint16) *CsNetMsgHandler { - handler := handlers[msgId] - return handler +func GetNetMsgHandler(msgId uint16) Option { +// handler := handlers[msgId] +// return handler + return None } func DispatchMsg(handler *CsNetMsgHandler, hdr *f5.MsgHdr, msgHandler MsgHandler) { @@ -165,7 +164,7 @@ func init() { }); data += ` }`; - fs.writeFileSync('./cs/cs.auto_gen.go', data); + fs.writeFileSync('./src/cs_auto_gen.rs', data); } async genSsAutoGen() { @@ -274,32 +273,27 @@ func init() { } async genMtbAutoGen() { - let data = `package mtb - -import ( - "f5" -) + let data = `use std::rc::{Rc, Weak}; +use std::cell::RefCell; `; this.mtPb.nested.mt.nestedArray.forEach( (item) => { - data += `type ${item.name} struct {\n`; + data += `pub struct ${item.name} {\n`; item.fieldsArray.forEach ( (item2, index) => { assert(item2.id <= 127); - data += ` ${item2.name} ` + this.dumpClassField(item, item2, index) + `\n`; + data += ` ${item2.name}: ` + this.dumpClassField(item, item2, index) + `,\n`; } ); - data += ` - _flags1_ uint64 - _flags2_ uint64 -} + data += `} `; } ); data += ''; + /* this.mtPb.nested.mt.nestedArray.forEach( (item) => { item.fieldsArray.forEach @@ -338,8 +332,8 @@ func (this *${item.name}) LoadFromKv(kv map[string]interface{}) { ); data += '}\n'; } - ); - fs.writeFileSync('./mtb/mtb.auto_gen.go', data); + );*/ + fs.writeFileSync('./src/mtb/mtb_auto_gen.rs', data); } dumpClassField(cls, field, index) { @@ -347,27 +341,27 @@ func (this *${item.name}) LoadFromKv(kv map[string]interface{}) { switch (field.type) { case 'int32': { - return `int32`; + return `Option`; } break; case 'int64': { - return `int64`; + return `Option`; } break; case 'float': { - return `float32`; + return `Option`; } break; case 'double': { - return `float64`; + return `Option`; } break; case 'string': { - return `string`; + return `Option`; } break; default: