This commit is contained in:
azw 2023-10-30 13:03:24 +00:00
parent 9a59abdb5e
commit b890957b71
4 changed files with 605 additions and 66 deletions

3
.gitignore vendored
View File

@ -6,4 +6,5 @@ node_modules/
*#
*#*
cs_msgid.rs
cs_proto.rs
cs_proto.rs
*auto_gen*

View File

@ -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;
}

View File

@ -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(

View File

@ -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<MsgHandler>;
type CsNetMsgHandler f5.NetMsgHandler[MsgHandler];
type MsgHandlerImpl struct {
pub struct MsgHandlerImpl {
}
var handlers [2000]*CsNetMsgHandler
static mut handlers [2000]Option<CsNetMsgHandler>
func GetNetMsgHandler(msgId uint16) *CsNetMsgHandler {
handler := handlers[msgId]
return handler
func GetNetMsgHandler(msgId uint16) Option<CsNetMsgHandler> {
// 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<i32>`;
}
break;
case 'int64':
{
return `int64`;
return `Option<i64>`;
}
break;
case 'float':
{
return `float32`;
return `Option<f32>`;
}
break;
case 'double':
{
return `float64`;
return `Option<f64>`;
}
break;
case 'string':
{
return `string`;
return `Option<String>`;
}
break;
default: