mirror of
https://git.ethanthesleepy.one/ethanaobrien/ew.git
synced 2025-05-13 11:37:33 -05:00
Implement base star event handler
This commit is contained in:
parent
ea84ffdc65
commit
05aecd02c6
7 changed files with 240 additions and 31 deletions
|
@ -64,6 +64,11 @@ async fn request(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
"/api/live/mission" => router::live::mission(req, body),
|
"/api/live/mission" => router::live::mission(req, body),
|
||||||
"/api/live/ranking" => router::clear_rate::ranking(req, body),
|
"/api/live/ranking" => router::clear_rate::ranking(req, body),
|
||||||
"/api/event" => router::event::event(req, body),
|
"/api/event" => router::event::event(req, body),
|
||||||
|
"/api/event/star_event" => router::event::star_event(req, body),
|
||||||
|
"/api/event_star_live/change_target_music" => router::event::change_target_music(req, body),
|
||||||
|
"/api/event_star_live/start" => router::live::event_start(req, body),
|
||||||
|
"/api/event_star_live/end" => router::live::event_end(req, body),
|
||||||
|
// "/api/event_star_live/skip" => router::live::event_skip(req, body),
|
||||||
"/api/live/start" => router::live::start(req, body),
|
"/api/live/start" => router::live::start(req, body),
|
||||||
"/api/live/end" => router::live::end(req, body),
|
"/api/live/end" => router::live::end(req, body),
|
||||||
"/api/live/skip" => router::live::skip(req, body),
|
"/api/live/skip" => router::live::skip(req, body),
|
||||||
|
@ -74,6 +79,7 @@ async fn request(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
"/api/lottery/get_tutorial" => router::lottery::tutorial(req, body),
|
"/api/lottery/get_tutorial" => router::lottery::tutorial(req, body),
|
||||||
"/api/lottery" => router::lottery::lottery_post(req, body),
|
"/api/lottery" => router::lottery::lottery_post(req, body),
|
||||||
"/api/login_bonus" => router::login::bonus(req, body),
|
"/api/login_bonus" => router::login::bonus(req, body),
|
||||||
|
"/api/login_bonus/event" => router::login::bonus_event(req, body),
|
||||||
"/api/notice/reward" => router::notice::reward_post(req, body),
|
"/api/notice/reward" => router::notice::reward_post(req, body),
|
||||||
"/api/user/getmigrationcode" => router::user::get_migration_code(req, body),
|
"/api/user/getmigrationcode" => router::user::get_migration_code(req, body),
|
||||||
"/api/user/registerpassword" => router::user::register_password(req, body),
|
"/api/user/registerpassword" => router::user::register_password(req, body),
|
||||||
|
|
|
@ -138,7 +138,7 @@ lazy_static! {
|
||||||
info
|
info
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
fn get_live_id(id: i64) -> i64 {
|
pub fn get_live_id(id: i64) -> i64 {
|
||||||
LIVE_LIST[id.to_string()].as_i64().unwrap()
|
LIVE_LIST[id.to_string()].as_i64().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,79 @@
|
||||||
use json::object;
|
use json::{JsonValue, object};
|
||||||
use actix_web::{HttpResponse, HttpRequest};
|
use actix_web::{HttpResponse, HttpRequest};
|
||||||
|
|
||||||
use crate::router::global;
|
use crate::router::{userdata, global};
|
||||||
|
|
||||||
pub fn event(_req: HttpRequest, _body: String) -> HttpResponse {
|
pub fn event(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
let key = global::get_login(req.headers(), &body);
|
||||||
|
let mut event = userdata::get_acc_event(&key);
|
||||||
|
|
||||||
|
init_star_event(&mut event);
|
||||||
|
|
||||||
|
userdata::save_acc_event(&key, event.clone());
|
||||||
|
|
||||||
let resp = object!{
|
let resp = object!{
|
||||||
"code": 0,
|
"code": 0,
|
||||||
"server_time": global::timestamp(),
|
"server_time": global::timestamp(),
|
||||||
"data":{"point_ranking":{"point":0},"score_ranking":[],"member_ranking":[],"lottery_box":[],"mission_list":[],"policy_agreement":0,"incentive_lottery":0,"star_event":{"star_level":0,"last_event_star_level":0,"star_music_list":[],"is_star_event_update":1,"music_change_count":0,"star_event_bonus_daily_count":0,"star_event_bonus_count":0,"star_event_play_times_bonus_count":0,"star_assist_bonus":1}}
|
"data": event["event_data"].clone()
|
||||||
|
};
|
||||||
|
global::send(resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn switch_music(event: &mut JsonValue, music_id: i32, target_score: i64, index: i32) {
|
||||||
|
if index <= 4 {
|
||||||
|
//todo
|
||||||
|
}
|
||||||
|
let to_push = object!{
|
||||||
|
master_music_id: music_id,
|
||||||
|
position: event["event_data"]["star_event"]["star_music_list"].len(),
|
||||||
|
is_cleared: 0,
|
||||||
|
goal_score: target_score
|
||||||
|
};
|
||||||
|
event["event_data"]["star_event"]["star_music_list"].push(to_push).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn init_star_event(event: &mut JsonValue) {
|
||||||
|
if event["event_data"]["star_event"]["star_level"].as_i32().unwrap() != 0 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
event["event_data"]["star_event"]["star_level"] = 1.into();
|
||||||
|
switch_music(event, 1014, 53407, 5);
|
||||||
|
switch_music(event, 2101, 34557, 5);
|
||||||
|
switch_music(event, 2120, 38222, 5);
|
||||||
|
switch_music(event, 2151, 46076, 5);
|
||||||
|
switch_music(event, 2160, 21991, 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn star_event(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
let key = global::get_login(req.headers(), &body);
|
||||||
|
let mut event = userdata::get_acc_event(&key);
|
||||||
|
init_star_event(&mut event);
|
||||||
|
|
||||||
|
userdata::save_acc_event(&key, event.clone());
|
||||||
|
|
||||||
|
let resp = object!{
|
||||||
|
"code": 0,
|
||||||
|
"server_time": global::timestamp(),
|
||||||
|
"data": {
|
||||||
|
star_event: event["event_data"]["star_event"].clone(),
|
||||||
|
gift_list: [],
|
||||||
|
reward_list: []
|
||||||
|
}
|
||||||
|
};
|
||||||
|
global::send(resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
//todo - randomize
|
||||||
|
pub fn change_target_music(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
let key = global::get_login(req.headers(), &body);
|
||||||
|
let event = userdata::get_acc_event(&key);
|
||||||
|
|
||||||
|
//event["star_event"]["music_change_count"] += 1;
|
||||||
|
|
||||||
|
let resp = object!{
|
||||||
|
"code": 0,
|
||||||
|
"server_time": global::timestamp(),
|
||||||
|
"data": event["event_data"]["star_event"].clone()
|
||||||
};
|
};
|
||||||
global::send(resp)
|
global::send(resp)
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,6 +188,15 @@ pub fn start(_req: HttpRequest, _body: String) -> HttpResponse {
|
||||||
global::send(resp)
|
global::send(resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn event_start(_req: HttpRequest, _body: String) -> HttpResponse {
|
||||||
|
let resp = object!{
|
||||||
|
"code": 0,
|
||||||
|
"server_time": global::timestamp(),
|
||||||
|
"data": []
|
||||||
|
};
|
||||||
|
global::send(resp)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn continuee(req: HttpRequest, body: String) -> HttpResponse {
|
pub fn continuee(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let key = global::get_login(req.headers(), &body);
|
let key = global::get_login(req.headers(), &body);
|
||||||
let mut user = userdata::get_acc(&key);
|
let mut user = userdata::get_acc(&key);
|
||||||
|
@ -374,9 +383,9 @@ fn give_mission_rewards(user: &mut JsonValue, missions: &JsonValue, multiplier:
|
||||||
rv
|
rv
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn end(req: HttpRequest, body: String) -> HttpResponse {
|
fn live_end(req: &HttpRequest, body: &String) -> JsonValue {
|
||||||
let key = global::get_login(req.headers(), &body);
|
let key = global::get_login(req.headers(), body);
|
||||||
let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap();
|
let body = json::parse(&encryption::decrypt_packet(body).unwrap()).unwrap();
|
||||||
let user2 = userdata::get_acc_home(&key);
|
let user2 = userdata::get_acc_home(&key);
|
||||||
let mut user = userdata::get_acc(&key);
|
let mut user = userdata::get_acc(&key);
|
||||||
let live = update_live_data(&mut user, &body, true);
|
let live = update_live_data(&mut user, &body, true);
|
||||||
|
@ -400,7 +409,7 @@ pub fn end(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
|
||||||
userdata::save_acc(&key, user.clone());
|
userdata::save_acc(&key, user.clone());
|
||||||
|
|
||||||
let resp = object!{
|
object!{
|
||||||
"code": 0,
|
"code": 0,
|
||||||
"server_time": global::timestamp(),
|
"server_time": global::timestamp(),
|
||||||
"data": {
|
"data": {
|
||||||
|
@ -421,7 +430,60 @@ pub fn end(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
"event_member": [],
|
"event_member": [],
|
||||||
"event_ranking_data": []
|
"event_ranking_data": []
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn end(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
let resp = live_end(&req, &body);
|
||||||
|
global::send(resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn event_end(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
let mut resp = live_end(&req, &body);
|
||||||
|
let key = global::get_login(req.headers(), &body);
|
||||||
|
let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap();
|
||||||
|
let mut event = userdata::get_acc_event(&key);
|
||||||
|
|
||||||
|
let live_id = crate::router::clear_rate::get_live_id(body["master_live_id"].as_i64().unwrap());
|
||||||
|
|
||||||
|
let mut all_clear = 1;
|
||||||
|
for (_i, data) in event["event_data"]["star_event"]["star_music_list"].members_mut().enumerate() {
|
||||||
|
if data["master_music_id"].as_i64().unwrap() == live_id {
|
||||||
|
data["is_cleared"] = 1.into();
|
||||||
|
}
|
||||||
|
if !data["is_cleared"].as_i32().unwrap() == 0 {
|
||||||
|
all_clear = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resp["event_point_list"] = array![];
|
||||||
|
resp["event_ranking_data"] = object!{
|
||||||
|
"event_point_rank": event["event_data"]["point_ranking"]["point"].clone(),
|
||||||
|
"next_reward_rank_point": 0,
|
||||||
|
"event_score_rank": 0,
|
||||||
|
"next_reward_rank_score": 0,
|
||||||
|
"next_reward_rank_level": 0
|
||||||
};
|
};
|
||||||
|
resp["star_level"] = event["event_data"]["star_event"]["star_level"].clone();
|
||||||
|
resp["music_data"] = event["event_data"]["star_event"]["star_music_list"].clone();
|
||||||
|
resp["is_star_all_clear"] = all_clear.into();
|
||||||
|
resp["star_event_bonus_list"] = object!{
|
||||||
|
"star_event_bonus": 0,
|
||||||
|
"star_event_bonus_score": 0,
|
||||||
|
"star_play_times_bonus": 0,
|
||||||
|
"star_play_times_bonus_score": 0,
|
||||||
|
"card_bonus": 0,
|
||||||
|
"card_bonus_score": 0
|
||||||
|
};
|
||||||
|
resp["total_score"] = body["live_score"]["score"].clone();
|
||||||
|
resp["star_event"] = object!{
|
||||||
|
"star_event_bonus_daily_count": event["event_data"]["point_ranking"]["star_event_bonus_daily_count"].clone(),
|
||||||
|
"star_event_bonus_count": event["event_data"]["point_ranking"]["star_event_bonus_count"].clone(),
|
||||||
|
"star_event_play_times_bonus_count": event["event_data"]["point_ranking"]["star_event_play_times_bonus_count"].clone()
|
||||||
|
};
|
||||||
|
|
||||||
|
userdata::save_acc_event(&key, event);
|
||||||
|
|
||||||
global::send(resp)
|
global::send(resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,17 +51,8 @@ pub fn get_login_bonus_info(id: i64) -> JsonValue {
|
||||||
LOTTERY_INFO[id.to_string()].clone()
|
LOTTERY_INFO[id.to_string()].clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn bonus(req: HttpRequest, body: String) -> HttpResponse {
|
fn do_bonus(user_home: &mut JsonValue, bonuses: &mut JsonValue) -> JsonValue {
|
||||||
let key = global::get_login(req.headers(), &body);
|
|
||||||
let user = userdata::get_acc(&key);
|
|
||||||
let mut user_home = userdata::get_acc_home(&key);
|
|
||||||
|
|
||||||
let last_reset = global::timestamp_since_midnight();
|
let last_reset = global::timestamp_since_midnight();
|
||||||
let mut bonuses = userdata::get_acc_loginbonus(&key);
|
|
||||||
if bonuses["bonus_list"].is_empty() {
|
|
||||||
global::start_login_bonus(1, &mut bonuses);
|
|
||||||
}
|
|
||||||
|
|
||||||
let to_send;
|
let to_send;
|
||||||
if bonuses["last_rewarded"].as_u64().unwrap() < last_reset {
|
if bonuses["last_rewarded"].as_u64().unwrap() < last_reset {
|
||||||
let mut to_rm = array![];
|
let mut to_rm = array![];
|
||||||
|
@ -77,19 +68,58 @@ pub fn bonus(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
}
|
}
|
||||||
let item_id = crate::router::user::get_info_from_id(info["days"][current]["masterLoginBonusRewardId"].as_i64().unwrap());
|
let item_id = crate::router::user::get_info_from_id(info["days"][current]["masterLoginBonusRewardId"].as_i64().unwrap());
|
||||||
|
|
||||||
items::gift_item(&item_id, &format!("Login bonus day {}!", current+1), &mut user_home);
|
items::gift_item(&item_id, &format!("Event login bonus day {}!", current+1), user_home);
|
||||||
data["day_counts"].push(current + 1).unwrap();
|
data["day_counts"].push(current + 1).unwrap();
|
||||||
}
|
}
|
||||||
for (i, data) in to_rm.members().enumerate() {
|
for (i, data) in to_rm.members().enumerate() {
|
||||||
bonuses["bonus_list"].array_remove(data.as_usize().unwrap() - i);
|
bonuses["bonus_list"].array_remove(data.as_usize().unwrap() - i);
|
||||||
}
|
}
|
||||||
bonuses["last_rewarded"] = last_reset.into();
|
bonuses["last_rewarded"] = last_reset.into();
|
||||||
userdata::save_acc_loginbonus(&key, bonuses.clone());
|
|
||||||
to_send = bonuses["bonus_list"].clone();
|
to_send = bonuses["bonus_list"].clone();
|
||||||
} else {
|
} else {
|
||||||
to_send = array![];
|
to_send = array![];
|
||||||
}
|
}
|
||||||
|
to_send
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn bonus(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
let key = global::get_login(req.headers(), &body);
|
||||||
|
let user = userdata::get_acc(&key);
|
||||||
|
let mut user_home = userdata::get_acc_home(&key);
|
||||||
|
|
||||||
|
let mut bonuses = userdata::get_acc_loginbonus(&key);
|
||||||
|
if bonuses["bonus_list"].is_empty() {
|
||||||
|
global::start_login_bonus(1, &mut bonuses);
|
||||||
|
}
|
||||||
|
let to_send = do_bonus(&mut user_home, &mut bonuses);
|
||||||
|
|
||||||
|
userdata::save_acc_loginbonus(&key, bonuses.clone());
|
||||||
|
userdata::save_acc_home(&key, user_home);
|
||||||
|
|
||||||
|
let resp = object!{
|
||||||
|
"code": 0,
|
||||||
|
"server_time": global::timestamp(),
|
||||||
|
"data": {
|
||||||
|
"login_bonus_list": to_send,
|
||||||
|
"start_time": bonuses["start_time"].clone(),
|
||||||
|
"clear_mission_ids": user["clear_mission_ids"].clone()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
global::send(resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn bonus_event(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
let key = global::get_login(req.headers(), &body);
|
||||||
|
let user = userdata::get_acc(&key);
|
||||||
|
let mut user_home = userdata::get_acc_home(&key);
|
||||||
|
|
||||||
|
let mut bonuses = userdata::get_acc_eventlogin(&key);
|
||||||
|
if bonuses["bonus_list"].is_empty() {
|
||||||
|
global::start_login_bonus(20039, &mut bonuses);
|
||||||
|
}
|
||||||
|
let to_send = do_bonus(&mut user_home, &mut bonuses);
|
||||||
|
|
||||||
|
userdata::save_acc_eventlogin(&key, bonuses.clone());
|
||||||
userdata::save_acc_home(&key, user_home);
|
userdata::save_acc_home(&key, user_home);
|
||||||
|
|
||||||
let resp = object!{
|
let resp = object!{
|
||||||
|
|
|
@ -33,7 +33,10 @@ fn setup_tables(conn: &SQLite) {
|
||||||
loginbonus TEXT NOT NULL,
|
loginbonus TEXT NOT NULL,
|
||||||
sifcards TEXT NOT NULL,
|
sifcards TEXT NOT NULL,
|
||||||
friends TEXT NOT NULL,
|
friends TEXT NOT NULL,
|
||||||
friend_request_disabled INT NOT NULL
|
friend_request_disabled INT NOT NULL,
|
||||||
|
event TEXT NOT NULL,
|
||||||
|
eventloginbonus TEXT NOT NULL,
|
||||||
|
server_data TEXT NOT NULL
|
||||||
)");
|
)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +78,7 @@ fn create_acc(uid: i64, login: &str) {
|
||||||
new_user["user"]["id"] = uid.into();
|
new_user["user"]["id"] = uid.into();
|
||||||
new_user["stamina"]["last_updated_time"] = global::timestamp().into();
|
new_user["stamina"]["last_updated_time"] = global::timestamp().into();
|
||||||
|
|
||||||
DATABASE.lock_and_exec("INSERT INTO users (user_id, userdata, userhome, missions, loginbonus, sifcards, friends, friend_request_disabled) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)", params!(
|
DATABASE.lock_and_exec("INSERT INTO users (user_id, userdata, userhome, missions, loginbonus, sifcards, friends, friend_request_disabled, event, eventloginbonus, server_data) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)", params!(
|
||||||
uid,
|
uid,
|
||||||
json::stringify(new_user),
|
json::stringify(new_user),
|
||||||
include_str!("new_user_home.json"),
|
include_str!("new_user_home.json"),
|
||||||
|
@ -83,7 +86,10 @@ fn create_acc(uid: i64, login: &str) {
|
||||||
format!(r#"{{"last_rewarded": 0, "bonus_list": [], "start_time": {}}}"#, global::timestamp()),
|
format!(r#"{{"last_rewarded": 0, "bonus_list": [], "start_time": {}}}"#, global::timestamp()),
|
||||||
"[]",
|
"[]",
|
||||||
r#"{"friend_user_id_list":[],"request_user_id_list":[],"pending_user_id_list":[]}"#,
|
r#"{"friend_user_id_list":[],"request_user_id_list":[],"pending_user_id_list":[]}"#,
|
||||||
0
|
0,
|
||||||
|
include_str!("new_user_event.json"),
|
||||||
|
format!(r#"{{"last_rewarded": 0, "bonus_list": [], "start_time": {}}}"#, global::timestamp()),
|
||||||
|
"{}"
|
||||||
));
|
));
|
||||||
|
|
||||||
DATABASE.lock_and_exec("DELETE FROM tokens WHERE token=?1", params!(login));
|
DATABASE.lock_and_exec("DELETE FROM tokens WHERE token=?1", params!(login));
|
||||||
|
@ -175,6 +181,16 @@ pub fn get_acc_sif(auth_key: &str) -> JsonValue {
|
||||||
pub fn get_acc_friends(auth_key: &str) -> JsonValue {
|
pub fn get_acc_friends(auth_key: &str) -> JsonValue {
|
||||||
get_data(auth_key, "friends")
|
get_data(auth_key, "friends")
|
||||||
}
|
}
|
||||||
|
pub fn get_acc_event(auth_key: &str) -> JsonValue {
|
||||||
|
let event = get_data(auth_key, "event");
|
||||||
|
if event.is_empty() {
|
||||||
|
return json::parse(include_str!("new_user_event.json")).unwrap();
|
||||||
|
}
|
||||||
|
event
|
||||||
|
}
|
||||||
|
pub fn get_acc_eventlogin(auth_key: &str) -> JsonValue {
|
||||||
|
get_data(auth_key, "eventloginbonus")
|
||||||
|
}
|
||||||
|
|
||||||
pub fn save_data(auth_key: &str, row: &str, data: JsonValue) {
|
pub fn save_data(auth_key: &str, row: &str, data: JsonValue) {
|
||||||
let key = get_key(&auth_key);
|
let key = get_key(&auth_key);
|
||||||
|
@ -198,6 +214,12 @@ pub fn save_acc_loginbonus(auth_key: &str, data: JsonValue) {
|
||||||
pub fn save_acc_friends(auth_key: &str, data: JsonValue) {
|
pub fn save_acc_friends(auth_key: &str, data: JsonValue) {
|
||||||
save_data(auth_key, "friends", data);
|
save_data(auth_key, "friends", data);
|
||||||
}
|
}
|
||||||
|
pub fn save_acc_event(auth_key: &str, data: JsonValue) {
|
||||||
|
save_data(auth_key, "event", data);
|
||||||
|
}
|
||||||
|
pub fn save_acc_eventlogin(auth_key: &str, data: JsonValue) {
|
||||||
|
save_data(auth_key, "eventloginbonus", data);
|
||||||
|
}
|
||||||
|
|
||||||
fn generate_salt() -> Vec<u8> {
|
fn generate_salt() -> Vec<u8> {
|
||||||
let mut rng = rand::thread_rng();
|
let mut rng = rand::thread_rng();
|
||||||
|
|
24
src/router/userdata/new_user_event.json
Normal file
24
src/router/userdata/new_user_event.json
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"event_data": {
|
||||||
|
"point_ranking": {
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"score_ranking": [],
|
||||||
|
"member_ranking": [],
|
||||||
|
"lottery_box": [],
|
||||||
|
"mission_list": [],
|
||||||
|
"policy_agreement": 0,
|
||||||
|
"incentive_lottery": 0,
|
||||||
|
"star_event": {
|
||||||
|
"star_level": 0,
|
||||||
|
"last_event_star_level": 0,
|
||||||
|
"star_music_list": [],
|
||||||
|
"music_change_count": 0,
|
||||||
|
"star_event_bonus_daily_count": 0,
|
||||||
|
"star_event_bonus_count": 0,
|
||||||
|
"star_event_play_times_bonus_count": 0,
|
||||||
|
"star_assist_bonus": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"server_event_data": {}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue