Add user rank mission
This commit is contained in:
parent
40593c45ff
commit
6a49047e94
@ -78,6 +78,9 @@ lazy_static! {
|
|||||||
for i in 1105001..=1105017 {
|
for i in 1105001..=1105017 {
|
||||||
missions.push(i).unwrap();
|
missions.push(i).unwrap();
|
||||||
}
|
}
|
||||||
|
for i in 1101001..=1101030 {
|
||||||
|
missions.push(i).unwrap();
|
||||||
|
}
|
||||||
missions
|
missions
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -262,17 +262,24 @@ pub fn get_user_rank_data(exp: i64) -> JsonValue {
|
|||||||
return ranks[ranks.len() - 1].clone();
|
return ranks[ranks.len() - 1].clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn give_exp(amount: i32, user: &mut JsonValue) {
|
pub fn give_exp(amount: i32, user: &mut JsonValue, mission: &mut JsonValue) {
|
||||||
let current_rank = get_user_rank_data(user["user"]["exp"].as_i64().unwrap());
|
let current_rank = get_user_rank_data(user["user"]["exp"].as_i64().unwrap());
|
||||||
user["user"]["exp"] = (user["user"]["exp"].as_i32().unwrap() + amount).into();
|
user["user"]["exp"] = (user["user"]["exp"].as_i32().unwrap() + amount).into();
|
||||||
let new_rank = get_user_rank_data(user["user"]["exp"].as_i64().unwrap());
|
let new_rank = get_user_rank_data(user["user"]["exp"].as_i64().unwrap());
|
||||||
if current_rank["rank"].to_string() != new_rank["rank"].to_string() {
|
if current_rank["rank"].to_string() != new_rank["rank"].to_string() {
|
||||||
user["stamina"]["stamina"] = (user["stamina"]["stamina"].as_i64().unwrap() + new_rank["maxLp"].as_i64().unwrap()).into();
|
user["stamina"]["stamina"] = (user["stamina"]["stamina"].as_i64().unwrap() + new_rank["maxLp"].as_i64().unwrap()).into();
|
||||||
user["stamina"]["last_updated_time"] = global::timestamp().into();
|
user["stamina"]["last_updated_time"] = global::timestamp().into();
|
||||||
|
|
||||||
|
let status = get_mission_status(get_variable_mission_num(1101001, 1101030, mission), mission);
|
||||||
|
if status.is_empty() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let to_advance = new_rank["rank"].as_i64().unwrap() - status["progress"].as_i64().unwrap();
|
||||||
|
advance_variable_mission(1101001, 1101030, to_advance, mission);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_mission_status(master_mission_id: i64, expire: u64, completed: bool, claimed: bool, advance: bool, missions: &mut JsonValue) -> Option<i64> {
|
pub fn update_mission_status(master_mission_id: i64, expire: u64, completed: bool, claimed: bool, advance: i64, missions: &mut JsonValue) -> Option<i64> {
|
||||||
for (_i, mission) in missions.members_mut().enumerate() {
|
for (_i, mission) in missions.members_mut().enumerate() {
|
||||||
if mission["master_mission_id"].as_i64().unwrap() == master_mission_id {
|
if mission["master_mission_id"].as_i64().unwrap() == master_mission_id {
|
||||||
mission["status"] = if claimed { 3 } else if completed { 2 } else { 1 }.into();
|
mission["status"] = if claimed { 3 } else if completed { 2 } else { 1 }.into();
|
||||||
@ -283,8 +290,8 @@ pub fn update_mission_status(master_mission_id: i64, expire: u64, completed: boo
|
|||||||
if (mission["expire_date_time"].as_u64().unwrap() < global::timestamp() || expire != 0) && (mission["expire_date_time"].as_u64().unwrap() != 0 || expire != 0) {
|
if (mission["expire_date_time"].as_u64().unwrap() < global::timestamp() || expire != 0) && (mission["expire_date_time"].as_u64().unwrap() != 0 || expire != 0) {
|
||||||
mission["progress"] = 0.into();
|
mission["progress"] = 0.into();
|
||||||
}
|
}
|
||||||
if advance {
|
if advance > 0 {
|
||||||
mission["progress"] = (mission["progress"].as_i32().unwrap() + 1).into();
|
mission["progress"] = (mission["progress"].as_i64().unwrap() + advance).into();
|
||||||
}
|
}
|
||||||
|
|
||||||
if completed && !claimed {
|
if completed && !claimed {
|
||||||
@ -296,7 +303,7 @@ pub fn update_mission_status(master_mission_id: i64, expire: u64, completed: boo
|
|||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_mission_status_multi(master_mission_id: JsonValue, expire: u64, completed: bool, claimed: bool, advance: bool, missions: &mut JsonValue) -> JsonValue {
|
pub fn update_mission_status_multi(master_mission_id: JsonValue, expire: u64, completed: bool, claimed: bool, advance: i64, missions: &mut JsonValue) -> JsonValue {
|
||||||
let mut rv = array![];
|
let mut rv = array![];
|
||||||
for (_i, mission) in master_mission_id.members().enumerate() {
|
for (_i, mission) in master_mission_id.members().enumerate() {
|
||||||
let val = update_mission_status(mission.as_i64().unwrap(), expire, completed, claimed, advance, missions);
|
let val = update_mission_status(mission.as_i64().unwrap(), expire, completed, claimed, advance, missions);
|
||||||
@ -325,7 +332,18 @@ pub fn change_mission_id(old: i64, new: i64, missions: &mut JsonValue) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn advance_variable_mission(min: i64, max: i64, missions: &mut JsonValue) -> JsonValue {
|
pub fn get_variable_mission_num(min: i64, max: i64, missions: &JsonValue) -> i64 {
|
||||||
|
for i in min..=max {
|
||||||
|
let mission_status = get_mission_status(i, missions);
|
||||||
|
if mission_status.is_empty() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn advance_variable_mission(min: i64, max: i64, count: i64, missions: &mut JsonValue) -> JsonValue {
|
||||||
let mut rv = array![];
|
let mut rv = array![];
|
||||||
for i in min..=max {
|
for i in min..=max {
|
||||||
let mission_status = get_mission_status(i, missions);
|
let mission_status = get_mission_status(i, missions);
|
||||||
@ -337,11 +355,11 @@ pub fn advance_variable_mission(min: i64, max: i64, missions: &mut JsonValue) ->
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if mission_info["conditionNumber"].as_i64().unwrap() > mission_status["progress"].as_i64().unwrap() + 1 {
|
if mission_info["conditionNumber"].as_i64().unwrap() > mission_status["progress"].as_i64().unwrap() + 1 {
|
||||||
if !update_mission_status(i, 0, false, false, true, missions).is_none() {
|
if !update_mission_status(i, 0, false, false, count, missions).is_none() {
|
||||||
rv.push(i).unwrap();
|
rv.push(i).unwrap();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if !update_mission_status(i, 0, true, false, true, missions).is_none() {
|
if !update_mission_status(i, 0, true, false, count, missions).is_none() {
|
||||||
rv.push(i).unwrap();
|
rv.push(i).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -359,24 +377,24 @@ pub fn completed_daily_mission(id: i64, missions: &mut JsonValue) -> JsonValue {
|
|||||||
}
|
}
|
||||||
let mut rv = array![];
|
let mut rv = array![];
|
||||||
if id == 1253003 {
|
if id == 1253003 {
|
||||||
rv = advance_variable_mission(1153001, 1153019, missions);
|
rv = advance_variable_mission(1153001, 1153019, 1, missions);
|
||||||
}
|
}
|
||||||
let mission = get_mission_status(1224003, missions);
|
let mission = get_mission_status(1224003, missions);
|
||||||
let next_reset = global::timestamp_since_midnight() + (24 * 60 * 60);
|
let next_reset = global::timestamp_since_midnight() + (24 * 60 * 60);
|
||||||
if mission["expire_date_time"].as_u64().unwrap() < global::timestamp() {
|
if mission["expire_date_time"].as_u64().unwrap() < global::timestamp() {
|
||||||
update_mission_status_multi(all_daily_missions, next_reset, false, false, false, missions);
|
update_mission_status_multi(all_daily_missions, next_reset, false, false, 0, missions);
|
||||||
}
|
}
|
||||||
|
|
||||||
if mission["progress"].as_i32().unwrap() == 4 {
|
if mission["progress"].as_i32().unwrap() == 4 {
|
||||||
if !update_mission_status(1224003, 0, true, false, true, missions).is_none() {
|
if !update_mission_status(1224003, 0, true, false, 1, missions).is_none() {
|
||||||
rv.push(1224003).unwrap();
|
rv.push(1224003).unwrap();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if !update_mission_status(1224003, 0, false, false, true, missions).is_none() {
|
if !update_mission_status(1224003, 0, false, false, 1, missions).is_none() {
|
||||||
rv.push(1224003).unwrap();
|
rv.push(1224003).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !update_mission_status(id, next_reset, true, false, true, missions).is_none() {
|
if !update_mission_status(id, next_reset, true, false, 1, missions).is_none() {
|
||||||
rv.push(id).unwrap();
|
rv.push(id).unwrap();
|
||||||
}
|
}
|
||||||
rv
|
rv
|
||||||
|
@ -400,7 +400,7 @@ fn live_end(req: &HttpRequest, body: &String) -> JsonValue {
|
|||||||
let live = update_live_data(&mut user, &body, true);
|
let live = update_live_data(&mut user, &body, true);
|
||||||
|
|
||||||
//1273009, 1273010, 1273011, 1273012
|
//1273009, 1273010, 1273011, 1273012
|
||||||
let mut cleared_missions = items::advance_variable_mission(1105001, 1105017, &mut user_missions);
|
let mut cleared_missions = items::advance_variable_mission(1105001, 1105017, 1, &mut user_missions);
|
||||||
if body["master_live_id"].to_string().len() > 1 {
|
if body["master_live_id"].to_string().len() > 1 {
|
||||||
let id = body["master_live_id"].to_string().split("").collect::<Vec<_>>()[2].parse::<i64>().unwrap_or(0);
|
let id = body["master_live_id"].to_string().split("").collect::<Vec<_>>()[2].parse::<i64>().unwrap_or(0);
|
||||||
if id <= 4 && id >= 1 {
|
if id <= 4 && id >= 1 {
|
||||||
@ -425,10 +425,10 @@ fn live_end(req: &HttpRequest, body: &String) -> JsonValue {
|
|||||||
|
|
||||||
items::lp_modification(&mut user, body["use_lp"].as_u64().unwrap(), true);
|
items::lp_modification(&mut user, body["use_lp"].as_u64().unwrap(), true);
|
||||||
|
|
||||||
items::give_exp(body["use_lp"].as_i32().unwrap(), &mut user);
|
items::give_exp(body["use_lp"].as_i32().unwrap(), &mut user, &mut user_missions);
|
||||||
|
|
||||||
userdata::save_acc(&key, user.clone());
|
userdata::save_acc(&key, user.clone());
|
||||||
userdata::save_acc_missions(&key, user_missions.clone());
|
userdata::save_acc_missions(&key, user_missions);
|
||||||
|
|
||||||
object!{
|
object!{
|
||||||
"code": 0,
|
"code": 0,
|
||||||
@ -513,7 +513,7 @@ pub fn skip(req: HttpRequest, body: String) -> HttpResponse {
|
|||||||
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 mut user_missions = userdata::get_acc_missions(&key);
|
let mut user_missions = userdata::get_acc_missions(&key);
|
||||||
let live = update_live_data(&mut user, &object!{
|
let live = update_live_data(&mut user, &object!{
|
||||||
master_live_id: body["master_live_id"].clone(),
|
master_live_id: body["master_live_id"].clone(),
|
||||||
level: 1,
|
level: 1,
|
||||||
@ -534,12 +534,12 @@ pub fn skip(req: HttpRequest, body: String) -> HttpResponse {
|
|||||||
|
|
||||||
items::lp_modification(&mut user, 10 * body["live_boost"].as_u64().unwrap(), true);
|
items::lp_modification(&mut user, 10 * body["live_boost"].as_u64().unwrap(), true);
|
||||||
|
|
||||||
items::give_exp(10 * body["live_boost"].as_i32().unwrap(), &mut user);
|
items::give_exp(10 * body["live_boost"].as_i32().unwrap(), &mut user, &mut user_missions);
|
||||||
|
|
||||||
items::use_item(21000001, body["live_boost"].as_i64().unwrap(), &mut user);
|
items::use_item(21000001, body["live_boost"].as_i64().unwrap(), &mut user);
|
||||||
|
|
||||||
userdata::save_acc(&key, user.clone());
|
userdata::save_acc(&key, user.clone());
|
||||||
//userdata::save_acc_missions(&key, user_missions.clone());
|
userdata::save_acc_missions(&key, user_missions);
|
||||||
|
|
||||||
let resp = object!{
|
let resp = object!{
|
||||||
"code": 0,
|
"code": 0,
|
||||||
|
@ -85,9 +85,9 @@ pub fn receive(req: HttpRequest, body: String) -> HttpResponse {
|
|||||||
if mission.as_i64().unwrap() >= 1153001 && mission.as_i64().unwrap() < 1153019 ||
|
if mission.as_i64().unwrap() >= 1153001 && mission.as_i64().unwrap() < 1153019 ||
|
||||||
mission.as_i64().unwrap() >= 1105001 && mission.as_i64().unwrap() < 1105017 {
|
mission.as_i64().unwrap() >= 1105001 && mission.as_i64().unwrap() < 1105017 {
|
||||||
items::change_mission_id(mission.as_i64().unwrap(), mission.as_i64().unwrap() + 1, &mut missions);
|
items::change_mission_id(mission.as_i64().unwrap(), mission.as_i64().unwrap() + 1, &mut missions);
|
||||||
items::update_mission_status(mission.as_i64().unwrap() + 1, 0, false, false, false, &mut missions);
|
items::update_mission_status(mission.as_i64().unwrap() + 1, 0, false, false, 0, &mut missions);
|
||||||
} else {
|
} else {
|
||||||
items::update_mission_status(mission.as_i64().unwrap(), 0, true, true, false, &mut missions);
|
items::update_mission_status(mission.as_i64().unwrap(), 0, true, true, 0, &mut missions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user