Compare commits

..

3 Commits

23 changed files with 747611 additions and 34 deletions

View File

@ -9,7 +9,7 @@ namespace Elisa.Controllers;
public class CommandController : ControllerBase public class CommandController : ControllerBase
{ {
[HttpGet("command")] [HttpGet("command")]
public IResult Command([FromQuery] string command) public async Task<IResult> Command([FromQuery] string command)
{ {
CommandHandlerFactory.HandleCommand(command); CommandHandlerFactory.HandleCommand(command);

View File

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Http; using Elisa.Utils;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace Elisa.Controllers; namespace Elisa.Controllers;
@ -8,18 +9,18 @@ namespace Elisa.Controllers;
public class IndexController : ControllerBase public class IndexController : ControllerBase
{ {
[HttpGet("version")] [HttpGet("version")]
public IResult Version([FromQuery] string req_id) public async Task<IResult> Version([FromQuery] string req_idreturn)
{ {
return Results.Json(new return Results.Json(new
{ {
now = "1716182820", now = DateTime.Now.ToUnixSeconds(),
tomorrow_zero = "1716192000", tomorrow_zero = Time.GetTomorrowZero(),
month_zero = 1714550400, month_zero = Time.GetCurrentMonthZero(),
next_month_zero = 1717228800, next_month_zero = Time.GetNextMonthZero(),
timezone = "PST8PDT", timezone = "PST8PDT",
data_version = "d630eea53a1b869fa4d7d1479a3d09e7", data_version = Program.DataVersion,
client_version = "30400", client_version = Program.ClientVersion,
ab_version = "2024051417", ab_version = Program.ABVersion,
is_kick = "0", is_kick = "0",
weekday = 1, weekday = 1,
authentication_url = $"http://realauth.ucenter.ppgame.com/authoriz.html?appid={0}&openid={1}&accounttype=1&language=zh" authentication_url = $"http://realauth.ucenter.ppgame.com/authoriz.html?appid={0}&openid={1}&accounttype=1&language=zh"

View File

@ -22,11 +22,67 @@ public class LoadDataAttribute(string fileName, LoadDataType dataType) : Attribu
public static class Table public static class Table
{ {
#region CatchData
[LoadData("gun_exp_info.json", LoadDataType.CatchData)] [LoadData("gun_exp_info.json", LoadDataType.CatchData)]
public static List<gun_exp_info> gun_exp_info { get; private set; } = null!; public static List<GunExpInfo> gun_exp_info { get; private set; } = null!;
#endregion
#region STC
[LoadData("daily.json", LoadDataType.STC)]
public static List<Daily> daily { get; private set; } = null!;
[LoadData("equip.json", LoadDataType.STC)]
public static List<Equip> equip { get; private set; } = null!;
[LoadData("fairy.json", LoadDataType.STC)]
public static List<Fairy> fairy { get; private set; } = null!;
[LoadData("furniture.json", LoadDataType.STC)]
public static List<Furniture> furniture { get; private set; } = null!;
[LoadData("gift_item.json", LoadDataType.STC)]
public static List<GiftItem> gift_item { get; private set; } = null!;
[LoadData("gun.json", LoadDataType.STC)]
public static List<Gun> gun { get; private set; } = null!;
[LoadData("item.json", LoadDataType.STC)]
public static List<Item> item { get; private set; } = null!;
[LoadData("mission.json", LoadDataType.STC)]
public static List<Mission> mission { get; private set; } = null!;
[LoadData("present.json", LoadDataType.STC)]
public static List<Present> present { get; private set; } = null!;
[LoadData("prize.json", LoadDataType.STC)]
public static List<Prize> prize { get; private set; } = null!;
[LoadData("sangvis.json", LoadDataType.STC)]
public static List<Sangvis> sangvis { get; private set; } = null!;
[LoadData("skin.json", LoadDataType.STC)]
public static List<Skin> skin { get; private set; } = null!;
[LoadData("spot.json", LoadDataType.STC)] [LoadData("spot.json", LoadDataType.STC)]
public static List<spot> spot { get; private set; } = null!; public static List<Spot> spot { get; private set; } = null!;
[LoadData("squad.json", LoadDataType.STC)]
public static List<Squad> squad { get; private set; } = null!;
[LoadData("vehicle.json", LoadDataType.STC)]
public static List<Vehicle> vehicle { get; private set; } = null!;
[LoadData("vehicle_component.json", LoadDataType.STC)]
public static List<VehicleComponent> vehicle_component { get; private set; } = null!;
[LoadData("weekly.json", LoadDataType.STC)]
public static List<Weekly> weekly { get; private set; } = null!;
#endregion
public static void Load() public static void Load()
{ {

View File

@ -1,7 +1,7 @@
namespace Elisa.Data.Tables; namespace Elisa.Data.Tables;
public class gun_exp_info : Model public class GunExpInfo : Model
{ {
public string lv;
public string exp; public string exp;
public string lv;
} }

View File

@ -1,31 +1,745 @@
namespace Elisa.Data.Tables; namespace Elisa.Data.Tables;
public class spot : Model public class Daily : Model
{ {
public int ammo;
public string content;
public int core;
public int count;
public int exchange_prize_id;
public int function_control_id;
public int gem;
public int goto_page_id;
public int gun_id;
public int identity;
public string item_ids;
public int mission_type;
public int mp;
public int mre;
public int part;
public int prize_id;
public string title;
public string type;
public int user_exp;
}
public class Equip : Model
{
public string armor;
public string armor_piercing;
public int auto_select_id;
public string bonus_type;
public string bullet_number_up;
public int category;
public string code;
public string company;
public string critical_harm_rate;
public string critical_percent;
public string damage_amplify;
public string damage_reduction;
public string description;
public int description_skill;
public int develop_duration;
public string dodge;
public int dot_damage;
public int dot_percent;
public int dot_time;
public string equip_introduction;
public double exclusive_rate;
public string fit_guns;
public string group_id;
public string hit;
public int id; public int id;
public int mission_id; public int is_addition;
public int is_show;
public int max_level;
public string name;
public string night_view_percent;
public string obtain_ids;
public string passive_skill;
public string pow;
public double powerup_ammo;
public double powerup_mp;
public double powerup_mre;
public double powerup_part;
public int rank;
public string rate;
public int retire_ammo;
public int retire_mp;
public int retire_mre;
public int retire_part;
public string shield;
public int skill;
public int skill_effect;
public int skill_effect_per;
public int skill_level_up;
public int slow_down_percent;
public int slow_down_rate;
public int slow_down_time;
public string sp_description;
public string speed;
public int type; public int type;
public int special_eft; }
public string route;
public class Fairy : Model
{
public int ai;
public int armor;
public int armor_mod;
public int armor_piercing;
public string avatar_offset;
public string avatar_scale;
public int category;
public string code;
public int critical_harm_rate;
public int critical_harm_rate_mod;
public string description;
public int develop_duration;
public int dodge;
public int dodge_mod;
public int grow;
public int hit;
public int hit_mod;
public int id;
public int if_mod;
public string introduce;
public int is_additional;
public int mod_exp;
public string name;
public string obtain_ids;
public int org_id;
public string passive_skill_mod;
public string picture_offset;
public string picture_scale;
public int pow;
public int pow_mod;
public int powerup_ammo;
public int powerup_mp;
public int powerup_mre;
public int powerup_part;
public string proportion;
public int quality_exp;
public string quality_need_number;
public int retireammo;
public int retiremp;
public int retiremre;
public int retirepart;
public string skill_id;
public string skill_id_mod;
public int type;
}
public class Furniture : Model
{
public int ai;
public int bonus_id;
public int classes;
public string code;
public int deco_rate;
public int decompose_gift;
public string description;
public string furniture_bgm;
public int id;
public string interact_point;
public string interact_point_offset;
public string name;
public string offset;
public string position;
public string rotate;
public string sorting;
public string space;
public string texture_type;
public string touch_area;
public int type;
}
public class GiftItem : Model
{
public string bonus_description;
public string code;
public string description;
public string detail_introduction;
public int exp;
public int favor;
public int fit_gun;
public int id;
public int is_hidden;
public string item_access;
public string name;
public string normal_description;
public int poster;
public int profile_pic;
public int rank;
public int skin;
public int sort;
public int type;
}
public class Gun : Model
{
public int ai;
public int ammo_add_withnumber;
public int armor_piercing;
public int atk_speed_max;
public int baseammo;
public int basemre;
public string character;
public string code;
public int crit;
public int develop_duration;
public string dialogue;
public string dynamic_passive_skill;
public int eat_ratio;
public int effect_grid_center;
public string effect_grid_effect;
public string effect_grid_pos;
public string effect_guntype;
public string en_introduce;
public string en_name;
public string explore_tag;
public string extra;
public string gun_detail_bg;
public string gun_tag_ids;
public int id;
public string introduce;
public int is_additional;
public string item_id;
public string launch_time;
public int max_equip;
public string mindupdate_consume;
public int mre_add_withnumber;
public string name;
public int normal_attack;
public string obtain_ids;
public int org_id;
public string passive_skill;
public int prize_id;
public int rank;
public int rank_display;
public int ratio_armor;
public int ratio_dodge;
public int ratio_hit;
public int ratio_life;
public int ratio_pow;
public int ratio_range;
public int ratio_rate;
public int ratio_rec;
public int ratio_speed;
public string recommended_team_ids;
public int related_story_id;
public int retireammo;
public int retiremp;
public int retiremre;
public int retirepart;
public string show_damage_skin;
public int skill1;
public int skill2;
public int special;
public int type;
public string type_equip1;
public string type_equip2;
public string type_equip3;
public string type_equip4;
}
public class Item : Model
{
public string arg;
public string code;
public int consume_type;
public string daily_limit;
public string detail_introduction;
public int id;
public string initial_num;
public string introduction;
public int is_hide_info;
public string item_access;
public string item_name;
public int rank;
public int sort;
public int type;
public int upper_limit;
}
public class Mission : Model
{
public string adaptive_gun;
public string ally_boss_team_id;
public string ally_code;
public int auto_battle;
public string boss_team_id;
public string branch_next_mission_id;
public int campaign;
public string close_mission_control;
public string close_missions;
public int coin_ap;
public int coin_type;
public string color_change_number;
public string color_change_result;
public string color_change_type;
public int costbp;
public string daily_demand;
public int difficulty;
public string difficulty_recommend;
public string difficulty_recommend_addendum;
public string draw_code;
public string draw_event_s_id;
public string drop_item_count;
public string drop_key_info;
public string drop_mission_item;
public string drop_mission_key;
public int duplicate_type;
public int endless_mode;
public int enemy_ai_type;
public int enemy_quickmove;
public string environment_transform_config;
public string event_score;
public int exp_parameter;
public int expect_defend_line_turn;
public int expect_enemy_die_num;
public int expect_gun_die_num;
public string expect_hostage_num;
public int expect_turn;
public string fight_environment_group;
public string fog_color;
public string fog_length;
public string force_type;
public string getcoin;
public string getcoin_parameter;
public string guide_cdn;
public int id;
public int if_emergency;
public string integration_switch;
public int is_hide;
public string is_snow;
public string limit_component_pool;
public string limit_equip_pool;
public string limit_gun_pool;
public int limit_sangvis;
public int limit_squad;
public string limit_team;
public int limit_vehicle;
public string lose_type;
public string map_information;
public string map_res_name;
public int mapped_mission_id;
public string medal_type_silver;
public string mission_describe;
public string mission_group_draw_event;
public int mission_group_id;
public string mission_intensify_item_config;
public string mission_tip;
public string name;
public string open_mission_items;
public string open_mission_keys;
public int order;
public string random_line_spot;
public int recommend_gun_level;
public string recommended_team_ids;
public string reinforce_ally_spot;
public string reinforce_ally_team;
public int reinforce_ally_turn;
public int reset_drop_key_once;
public int restart_hide;
public string round_config;
public string score_prize;
public string special_spot_id;
public int special_type;
public string spot_reset;
public int sub;
public string supply_parameter;
public int support_available;
public string title_logo;
public long turn_duration;
public int turn_limit;
public string type;
public string win_spot_id;
public string win_step;
public int win_turn;
public string win_type;
}
public class Present : Model
{
public int drop_package_id;
public int due_prize_id;
public string due_time;
public int function;
public int item_id;
public int multi_num;
public string poster;
public string present_info;
public int prize_id;
public int type;
}
public class Prize : Model
{
public int ammo;
public int bp_pay;
public string chip;
public string coins;
public string commander_uniform;
public string content;
public int core;
public string equip_ids;
public string fairy_ids;
public string furniture;
public int gem;
public int gem_pay;
public string gift;
public string gun_id;
public string icon;
public int id;
public string item_ids;
public int mp;
public int mre;
public string name;
public int part;
public string sangvis;
public int send_limit;
public int skin;
public int user_exp;
public string vehicle_component;
}
public class Sangvis : Model
{
public int ai;
public int ammo_add_withnumber;
public int ap_add;
public int ap_cost;
public int armor_piercing;
public int assist_attack_range;
public int attack_range_type;
public int baseammo;
public int basemre;
public string character;
public string code;
public int crit;
public int crit_dmg;
public string dialogue;
public int display_enemy_team;
public int dorm_scale;
public string dynamic_passive_skill;
public int eat_ratio;
public string effect_grid_effect;
public string en_introduce;
public string en_name;
public string extra;
public int forces;
public int formation;
public string gun_tag_ids;
public int id;
public int illustration_id;
public string introduce;
public int is_additional;
public string launch_time;
public int mre_add_withnumber;
public string name;
public int normal_attack;
public string obtain_ids;
public int org_id;
public string passive_skill2;
public string picture_offset;
public string picture_scale;
public int rank;
public int ratio_armor;
public int ratio_dodge;
public int ratio_hit;
public int ratio_hp;
public int ratio_pow;
public int ratio_range;
public int ratio_rate;
public int ratio_rec;
public int ratio_speed;
public string recommended_team_ids;
public int resolution;
public int search_range;
public string shape_scale;
public int skill_advance;
public string skill_resolution;
public int skill1;
public int skill2;
public int skill2_type;
public int skill3;
public int special;
public int type;
public string type_chip1;
public string type_chip2;
public string type_chip3;
}
public class Skin : Model
{
public int ai;
public int class_id;
public string dialog;
public string explore_tag;
public int extra;
public int fit_gun;
public string gift_position;
public int id;
public string illustrator_cv;
public int is_hidden;
public string name;
public string note;
public int order;
public int skin_source;
public string substitute_voice;
public int voice;
}
public class Spot : Model
{
public string access_type;
public string active_cycle;
public int ally_team_id;
public string auto_teleport;
public int belong;
public int building_id;
public string code;
public int coordinator_x; public int coordinator_x;
public int coordinator_y; public int coordinator_y;
public int enemy_team_id;
public int ally_team_id;
public int belong;
public string random_get;
public int map_type;
public string curve_control; public string curve_control;
public string active_cycle;
public string durability; public string durability;
public string map_route; public int enemy_team_id;
public string map_code;
public string hostage_info;
public int building_id;
public string forbid_specialspot; public string forbid_specialspot;
public string hostage_info;
public int id;
public string map_code;
public int map_num; public int map_num;
public string map_route;
public int map_type;
public int mission_id;
public int package; public int package;
public string auto_teleport; public string random_get;
public string route;
public int special_eft;
public string spot_effect; public string spot_effect;
public string access_type; public int type;
public string code;
} }
public class Squad : Model
{
public int advanced_bonus;
public int ammo_part;
public int armor_piercing;
public int assist_armor_piercing;
public int assist_attack_round;
public int assist_damage;
public int assist_damage_destroy_coef;
public int assist_def_break;
public int assist_hit;
public int assist_reload;
public int assist_type;
public int atk_speed;
public int attack_range;
public int attack_round;
public int baseammo;
public int basemre;
public int basic_rate;
public string battle_assist_range;
public string code;
public int cpu_id;
public int cpu_rate;
public int crit_damage;
public int crit_rate;
public int damage;
public int deploy_round;
public int destroy_coef;
public int develop_duration;
public string dialogue;
public int display_assist_area_coef;
public int display_assist_damage_area;
public int dodge;
public string dorm_ai;
public string dynamic_passive_skill;
public string en_introduce;
public string en_name;
public string extra;
public int hit;
public int hp;
public int id;
public string introduce;
public int is_additional;
public int is_piece_only;
public int is_show;
public string launch_time;
public string mission_skill_repair;
public int move;
public int mre_part;
public string name;
public int night_vision;
public int normal_attack;
public int normal_attack_description;
public string obtain_ids;
public int org_id;
public string passive_skill;
public int performance_skill;
public int piece_item_id;
public int population;
public int skill1;
public int skill2;
public int skill3;
public int type;
}
public class Vehicle : Model
{
public int ammo_part;
public int assist_attack_round;
public int assist_damage_destroy_coef;
public int assist_type;
public string assit_passive_skill;
public int assit_skill;
public int attack_round;
public int baseammo;
public int basemre;
public int basic_armor;
public int basic_atk_speed;
public int basic_dodge;
public int basic_effect;
public int basic_heavy_damage;
public int basic_hit;
public int basic_hp;
public int basic_light_damage;
public int basic_precision;
public int basic_reload;
public string battle_assist_range;
public string C_off;
public int capacity;
public string code;
public int common_component_num;
public string crew_ids;
public int crit;
public int crit_dmg;
public int def_break;
public int deploy_round;
public int destroy_coef;
public int display_assist_damage_area;
public string dorm_interact;
public string dynamic_passive_skill;
public string effect_rank;
public string en_name;
public int energy_bak_max;
public int energy_cost;
public int energy_max;
public int H_armor_piercing;
public int H_attack_rang;
public int id;
public string interact_point;
public string interact_point_offset;
public string introduce;
public int L_armor_piercing;
public int L_attack_rang;
public string launch_times;
public string long_attack_range;
public string mission_skill;
public int mission_skill_repair;
public int move;
public int mre_part;
public string name;
public string name_component1;
public string name_component2;
public string name_component3;
public string name_component4;
public string name_component5;
public int night_vision;
public int normal_attack;
public int original_component1;
public int original_component2;
public int original_component3;
public string passive_skill;
public int performance_skill;
public int population;
public string talent_skill;
public int type;
public string type_component1;
public string type_component2;
public string type_component3;
public string type_component4;
public string type_component5;
public string unlock_mission;
}
public class VehicleComponent : Model
{
public int armor;
public int atk_speed;
public int atk_speed_ratio;
public int att_roll;
public int attack_type;
public string basic_effect;
public string bonus_type;
public string code;
public int critical_harm_rate;
public int critical_percent;
public string custom_type;
public int def_break;
public string description;
public int dodge;
public string effect_range;
public int energy;
public int energy_bak;
public int exp_provide;
public int group;
public int H_armor_piercing;
public int h_weapon_ratio;
public int heavy_damage;
public int hit;
public int hit_ratio;
public int id;
public string inherent_mission_skill;
public string interact_point;
public string interact_point_offset;
public string introduction;
public int is_addition;
public int is_show;
public int L_armor_piercing;
public int l_weapon_ratio;
public int light_damage;
public string name;
public int night_view_percent;
public int normal_attack;
public string obtain_ids;
public int precision;
public int precision_ratio;
public int rank;
public int reload;
public int reload_ratio;
public int search_range;
public string skill;
public string skill_group;
public string sp_description;
public int speed;
public string turn_mission_skill;
public int type;
public string unable_buff_id;
public string unable_buff_type;
public string unlock_lv;
}
public class Weekly : Model
{
public int ammo;
public string content;
public int core;
public int count;
public int exchange_prize_id;
public int function_control_id;
public int gem;
public int goto_page_id;
public int gun_id;
public int identity;
public string item_ids;
public int mp;
public int mre;
public int part;
public int prize_id;
public string title;
public string type;
public int user_exp;
}

View File

@ -3,6 +3,7 @@ using Elisa.Data;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
using Serilog.Sinks.SystemConsole.Themes;
using System.Diagnostics; using System.Diagnostics;
using System.Reflection; using System.Reflection;
@ -10,6 +11,10 @@ namespace Elisa;
internal static class Program internal static class Program
{ {
public static string ClientVersion = 30400.ToString();
public static string DataVersion = "d630eea53a1b869fa4d7d1479a3d09e7";
public static string ABVersion = 2024051417.ToString();
static IConfiguration config = null!; static IConfiguration config = null!;
public static void Main(string[] args) public static void Main(string[] args)
@ -18,6 +23,9 @@ internal static class Program
SetupSerilog(); SetupSerilog();
Log.Information($"Version {Assembly.GetEntryAssembly()?.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion}"); Log.Information($"Version {Assembly.GetEntryAssembly()?.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion}");
Log.Information($"Client Version: {ClientVersion}");
Log.Information($"Data Version: {DataVersion}");
Log.Information($"AB Version: {ABVersion}");
Log.Information($"Starting {Assembly.GetEntryAssembly()?.GetName().Name}..."); Log.Information($"Starting {Assembly.GetEntryAssembly()?.GetName().Name}...");
Stopwatch stopwatch = Stopwatch.StartNew(); Stopwatch stopwatch = Stopwatch.StartNew();
@ -26,7 +34,7 @@ internal static class Program
Table.Load(); Table.Load();
} }
stopwatch.Stop(); stopwatch.Stop();
Log.Information($"Done! loaded in {stopwatch.ElapsedMilliseconds}ms"); Log.Information($"Done! Loaded in {stopwatch.ElapsedMilliseconds}ms");
Task.Run(GameServer.Start).Wait(); Task.Run(GameServer.Start).Wait();
} }
@ -54,7 +62,7 @@ internal static class Program
} }
Log.Logger = new LoggerConfiguration() Log.Logger = new LoggerConfiguration()
.WriteTo.Console() .WriteTo.Console(theme: AnsiConsoleTheme.Literate)
.WriteTo.File(logFilePath, restrictedToMinimumLevel: LogEventLevel.Verbose, shared: true) .WriteTo.File(logFilePath, restrictedToMinimumLevel: LogEventLevel.Verbose, shared: true)
.ReadFrom.Configuration(config) .ReadFrom.Configuration(config)
.CreateBootstrapLogger(); .CreateBootstrapLogger();

View File

@ -0,0 +1,485 @@
[
{
"identity": 1,
"mission_type": 1,
"type": "win_normal",
"count": 50,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000001",
"content": "daily-20000001",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 2,
"mission_type": 1,
"type": "win_boss",
"count": 2,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000002",
"content": "daily-20000002",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 3,
"mission_type": 1,
"type": "s_win",
"count": 8,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000003",
"content": "daily-20000003",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 4,
"mission_type": 1,
"type": "rescue",
"count": 5,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000004",
"content": "daily-20000004",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 5,
"mission_type": 1,
"type": "mission",
"count": 2,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000005",
"content": "daily-20000005",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 6,
"mission_type": 2,
"type": "get_vehicle_component",
"count": 6,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000006",
"content": "daily-20000006",
"function_control_id": 30,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 7,
"mission_type": 2,
"type": "develop_equip",
"count": 4,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000007",
"content": "daily-20000007",
"function_control_id": 2,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 8,
"mission_type": 2,
"type": "develop_gun",
"count": 2,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000008",
"content": "daily-20000008",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 9,
"mission_type": 2,
"type": "recycle",
"count": 3,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000009",
"content": "daily-20000009",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 10,
"mission_type": 3,
"type": "upgrade_value",
"count": 3,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000010",
"content": "daily-20000010",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 11,
"mission_type": 3,
"type": "adjust_equip",
"count": 1,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000011",
"content": "daily-20000011",
"function_control_id": 6,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 12,
"mission_type": 3,
"type": "upgrade_equip",
"count": 3,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000012",
"content": "daily-20000012",
"function_control_id": 5,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 13,
"mission_type": 4,
"type": "operation",
"count": 3,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000013",
"content": "daily-20000013",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 14,
"mission_type": 4,
"type": "coin_mission",
"count": 3,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000014",
"content": "daily-20000014",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 15,
"mission_type": 4,
"type": "sangvis_exercise",
"count": 3,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000015",
"content": "daily-20000015",
"function_control_id": 21,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 16,
"mission_type": 4,
"type": "auto_battle",
"count": 1,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000016",
"content": "daily-20000016",
"function_control_id": 15,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 17,
"mission_type": 5,
"type": "from_friend_build_coin",
"count": 5,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000017",
"content": "daily-20000017",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 18,
"mission_type": 5,
"type": "like",
"count": 5,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000018",
"content": "daily-20000018",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 19,
"mission_type": 5,
"type": "borrow_friend_team",
"count": 2,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000019",
"content": "daily-20000019",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 20,
"mission_type": 6,
"type": "explore",
"count": 1,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000020",
"content": "daily-20000020",
"function_control_id": 17,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 21,
"mission_type": 6,
"type": "sangvis_daily_retrieval",
"count": 1,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000021",
"content": "daily-20000021",
"function_control_id": 21,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 22,
"mission_type": 6,
"type": "heart_collect",
"count": 5,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000022",
"content": "daily-20000022",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
},
{
"identity": 23,
"mission_type": 6,
"type": "gift",
"count": 1,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "daily-10000023",
"content": "daily-20000023",
"function_control_id": 0,
"prize_id": 8308,
"exchange_prize_id": 8315,
"goto_page_id": 0
}
]

19826
Elisa/Resources/stc/equip.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

39327
Elisa/Resources/stc/gun.json Normal file

File diff suppressed because it is too large Load Diff

35158
Elisa/Resources/stc/item.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

209582
Elisa/Resources/stc/prize.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

13430
Elisa/Resources/stc/skin.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,230 @@
[
{
"id": 1,
"name": "vehicle-10000001",
"en_name": "vehicle-20000001",
"code": "TankM1",
"introduce": "vehicle-30000001",
"type": 1,
"population": 2,
"capacity": 0,
"energy_max": 60,
"energy_bak_max": 180,
"energy_cost": 20,
"baseammo": 40,
"basemre": 40,
"ammo_part": 10,
"mre_part": 10,
"type_component1": "1",
"type_component2": "3,4",
"type_component3": "1,2",
"type_component4": "2",
"type_component5": "3",
"name_component1": "vehicle-40000001",
"name_component2": "vehicle-50000001",
"name_component3": "vehicle-60000001",
"name_component4": "vehicle-70000001",
"name_component5": "vehicle-80000001",
"common_component_num": 4,
"crew_ids": "1001,1002,1003,1004",
"launch_times": "2016-05-20 00:00:00",
"basic_hp": 3600,
"basic_heavy_damage": 290,
"basic_light_damage": 220,
"basic_reload": 136,
"basic_atk_speed": 64,
"basic_precision": 102,
"basic_hit": 24,
"basic_armor": 10,
"basic_dodge": 12,
"H_armor_piercing": 85,
"L_armor_piercing": 45,
"def_break": 180,
"crit": 10,
"crit_dmg": 150,
"night_vision": 2,
"move": 12,
"L_attack_rang": 8,
"H_attack_rang": 20,
"long_attack_range": "1,2",
"assist_type": 1,
"battle_assist_range": "1,2",
"display_assist_damage_area": 100,
"deploy_round": 0,
"assist_attack_round": 0,
"attack_round": 0,
"original_component1": 12,
"original_component2": 13,
"original_component3": 0,
"talent_skill": "220156,220202",
"passive_skill": "0",
"dynamic_passive_skill": "",
"normal_attack": 900107,
"performance_skill": 220220,
"assit_skill": 220200,
"assit_passive_skill": "",
"mission_skill": "",
"mission_skill_repair": 0,
"destroy_coef": 0,
"assist_damage_destroy_coef": 0,
"basic_effect": 25000,
"effect_rank": "",
"interact_point": "",
"interact_point_offset": "",
"C_off": "1.6,5.2",
"unlock_mission": "11485,11487;11483",
"dorm_interact": "1;0.75;0"
},
{
"id": 2,
"name": "vehicle-10000002",
"en_name": "vehicle-20000002",
"code": "Warjack",
"introduce": "vehicle-30000002",
"type": 2,
"population": 2,
"capacity": 0,
"energy_max": 80,
"energy_bak_max": 240,
"energy_cost": 20,
"baseammo": 40,
"basemre": 40,
"ammo_part": 10,
"mre_part": 10,
"type_component1": "1,2",
"type_component2": "2",
"type_component3": "2",
"type_component4": "3,4",
"type_component5": "3",
"name_component1": "vehicle-40000002",
"name_component2": "vehicle-50000002",
"name_component3": "vehicle-60000002",
"name_component4": "vehicle-70000002",
"name_component5": "vehicle-80000002",
"common_component_num": 4,
"crew_ids": "2001",
"launch_times": "2016-05-20 00:00:00",
"basic_hp": 4400,
"basic_heavy_damage": 220,
"basic_light_damage": 290,
"basic_reload": 104,
"basic_atk_speed": 80,
"basic_precision": 81,
"basic_hit": 30,
"basic_armor": 10,
"basic_dodge": 12,
"H_armor_piercing": 65,
"L_armor_piercing": 60,
"def_break": 140,
"crit": 40,
"crit_dmg": 150,
"night_vision": 2,
"move": 12,
"L_attack_rang": 8,
"H_attack_rang": 20,
"long_attack_range": "0,0",
"assist_type": 0,
"battle_assist_range": "0,0",
"display_assist_damage_area": 100,
"deploy_round": 0,
"assist_attack_round": 0,
"attack_round": 0,
"original_component1": 22,
"original_component2": 23,
"original_component3": 24,
"talent_skill": "220154",
"passive_skill": "220203",
"dynamic_passive_skill": "",
"normal_attack": 900107,
"performance_skill": 900001,
"assit_skill": 0,
"assit_passive_skill": "",
"mission_skill": "",
"mission_skill_repair": 0,
"destroy_coef": 0,
"assist_damage_destroy_coef": 0,
"basic_effect": 25000,
"effect_rank": "",
"interact_point": "",
"interact_point_offset": "",
"C_off": "1.6,5.2",
"unlock_mission": "11484,11486;11482",
"dorm_interact": "2;0.6;0"
},
{
"id": 1001,
"name": "vehicle-10001001",
"en_name": "vehicle-20001001",
"code": "Tachikoma",
"introduce": "vehicle-30001001",
"type": 2,
"population": 2,
"capacity": 0,
"energy_max": 80,
"energy_bak_max": 240,
"energy_cost": 20,
"baseammo": 40,
"basemre": 40,
"ammo_part": 10,
"mre_part": 10,
"type_component1": "1,2",
"type_component2": "2",
"type_component3": "2",
"type_component4": "3,4",
"type_component5": "3",
"name_component1": "vehicle-40001001",
"name_component2": "vehicle-50001001",
"name_component3": "vehicle-60001001",
"name_component4": "vehicle-70001001",
"name_component5": "vehicle-80001001",
"common_component_num": 4,
"crew_ids": "2001",
"launch_times": "2035-12-31 00:00:00",
"basic_hp": 4400,
"basic_heavy_damage": 220,
"basic_light_damage": 290,
"basic_reload": 104,
"basic_atk_speed": 80,
"basic_precision": 81,
"basic_hit": 30,
"basic_armor": 10,
"basic_dodge": 12,
"H_armor_piercing": 65,
"L_armor_piercing": 60,
"def_break": 140,
"crit": 40,
"crit_dmg": 150,
"night_vision": 2,
"move": 12,
"L_attack_rang": 8,
"H_attack_rang": 20,
"long_attack_range": "0,0",
"assist_type": 0,
"battle_assist_range": "0,0",
"display_assist_damage_area": 100,
"deploy_round": 0,
"assist_attack_round": 0,
"attack_round": 0,
"original_component1": 101,
"original_component2": 102,
"original_component3": 103,
"talent_skill": "",
"passive_skill": "",
"dynamic_passive_skill": "",
"normal_attack": 900107,
"performance_skill": 900001,
"assit_skill": 0,
"assit_passive_skill": "",
"mission_skill": "1,640104",
"mission_skill_repair": 0,
"destroy_coef": 0,
"assist_damage_destroy_coef": 0,
"basic_effect": 25000,
"effect_rank": "",
"interact_point": "",
"interact_point_offset": "",
"C_off": "1.6,5.2",
"unlock_mission": "",
"dorm_interact": "2;0.6;0"
}
]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,162 @@
[
{
"identity": 1,
"type": "battery_collect",
"count": 3,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "weekly-10000001",
"content": "weekly-20000001",
"function_control_id": 0,
"prize_id": 8309,
"exchange_prize_id": 8316,
"goto_page_id": 0
},
{
"identity": 2,
"type": "procurement",
"count": 1,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "weekly-10000002",
"content": "weekly-20000002",
"function_control_id": 0,
"prize_id": 8309,
"exchange_prize_id": 8316,
"goto_page_id": 0
},
{
"identity": 3,
"type": "win_armor",
"count": 150,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "weekly-10000003",
"content": "weekly-20000003",
"function_control_id": 0,
"prize_id": 8309,
"exchange_prize_id": 8316,
"goto_page_id": 0
},
{
"identity": 4,
"type": "sangvis_daily_retrieval",
"count": 8,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "weekly-10000004",
"content": "weekly-20000004",
"function_control_id": 21,
"prize_id": 8309,
"exchange_prize_id": 8316,
"goto_page_id": 0
},
{
"identity": 5,
"type": "chess",
"count": 3,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "weekly-10000005",
"content": "weekly-20000005",
"function_control_id": 0,
"prize_id": 8309,
"exchange_prize_id": 8316,
"goto_page_id": 0
},
{
"identity": 6,
"type": "upgrade_skill",
"count": 3,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "weekly-10000006",
"content": "weekly-20000006",
"function_control_id": 4,
"prize_id": 8309,
"exchange_prize_id": 8316,
"goto_page_id": 0
},
{
"identity": 7,
"type": "sp_develop",
"count": 4,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "weekly-10000007",
"content": "weekly-20000007",
"function_control_id": 3,
"prize_id": 8309,
"exchange_prize_id": 8316,
"goto_page_id": 0
},
{
"identity": 8,
"type": "map_capture",
"count": 20,
"user_exp": 0,
"mp": 0,
"ammo": 0,
"mre": 0,
"part": 0,
"core": 0,
"gem": 0,
"gun_id": 0,
"item_ids": "",
"title": "weekly-10000008",
"content": "weekly-20000008",
"function_control_id": 29,
"prize_id": 8309,
"exchange_prize_id": 8316,
"goto_page_id": 0
}
]

19
Elisa/Utils/Time.cs Normal file
View File

@ -0,0 +1,19 @@
namespace Elisa.Utils;
internal static class DateTimeExtensions
{
public static long ToUnixSeconds(this DateTime dateTime)
=> (long)(dateTime - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
}
public static class Time
{
public static long GetTomorrowZero()
=> new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0, DateTimeKind.Utc).AddDays(1).ToUnixSeconds();
public static long GetCurrentMonthZero()
=> new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, 0, 0, 0, DateTimeKind.Utc).ToUnixSeconds();
public static long GetNextMonthZero()
=> new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, 0, 0, 0, DateTimeKind.Utc).AddMonths(1).ToUnixSeconds();
}