Add obtain gold mission

This commit is contained in:
Ethan O'Brien 2024-05-08 22:05:18 -05:00
parent 0ee281895e
commit f3d045649c
7 changed files with 47 additions and 31 deletions

View file

@ -1,4 +1,4 @@
use json::{JsonValue, object}; use json::{JsonValue, object, array};
use actix_web::{HttpResponse, HttpRequest}; use actix_web::{HttpResponse, HttpRequest};
use lazy_static::lazy_static; use lazy_static::lazy_static;
@ -37,6 +37,8 @@ pub fn exchange_post(req: HttpRequest, body: String) -> HttpResponse {
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 mut user = userdata::get_acc(&key); let mut user = userdata::get_acc(&key);
let mut missions = userdata::get_acc_missions(&key);
let mut cleared_missions = array![];
let item = &EXCHANGE_LIST[body["master_exchange_item_id"].to_string()]; let item = &EXCHANGE_LIST[body["master_exchange_item_id"].to_string()];
@ -49,9 +51,10 @@ pub fn exchange_post(req: HttpRequest, body: String) -> HttpResponse {
let mut gift = EXCHANGE_REWARD[item["masterExchangeItemRewardId"].to_string()].clone(); let mut gift = EXCHANGE_REWARD[item["masterExchangeItemRewardId"].to_string()].clone();
gift["reward_type"] = gift["type"].clone(); gift["reward_type"] = gift["type"].clone();
gift["amount"] = (gift["amount"].as_i64().unwrap() * body["count"].as_i64().unwrap()).into(); gift["amount"] = (gift["amount"].as_i64().unwrap() * body["count"].as_i64().unwrap()).into();
items::give_gift(&gift, &mut user); items::give_gift(&gift, &mut user, &mut missions, &mut cleared_missions);
userdata::save_acc(&key, user.clone()); userdata::save_acc(&key, user.clone());
userdata::save_acc_missions(&key, missions);
let resp = object!{ let resp = object!{
"code": 0, "code": 0,
@ -63,7 +66,7 @@ pub fn exchange_post(req: HttpRequest, body: String) -> HttpResponse {
"item_list": user["item_list"].clone(), "item_list": user["item_list"].clone(),
"point_list": user["point_list"].clone() "point_list": user["point_list"].clone()
}, },
"clear_mission_ids": [] "clear_mission_ids": cleared_missions
} }
}; };
global::send(resp, req) global::send(resp, req)

View file

@ -84,6 +84,9 @@ lazy_static! {
for i in 1158001..=1158082 { for i in 1158001..=1158082 {
missions.push(i).unwrap(); missions.push(i).unwrap();
} }
for i in 1121001..=1121019 {
missions.push(i).unwrap();
}
missions missions
}; };
} }

View file

@ -93,7 +93,7 @@ pub fn give_item(master_item_id: i64, amount: i64, user: &mut JsonValue) -> bool
false false
} }
pub fn give_gift(data: &JsonValue, user: &mut JsonValue) -> bool { pub fn give_gift(data: &JsonValue, user: &mut JsonValue, missions: &mut JsonValue, clear_missions: &mut JsonValue) -> bool {
if data.is_empty() { if data.is_empty() {
return false; return false;
} }
@ -108,7 +108,7 @@ pub fn give_gift(data: &JsonValue, user: &mut JsonValue) -> bool {
return !give_item(data["value"].as_i64().unwrap(), data["amount"].as_i64().unwrap(), user); return !give_item(data["value"].as_i64().unwrap(), data["amount"].as_i64().unwrap(), user);
} else if data["reward_type"].to_string() == "4" { } else if data["reward_type"].to_string() == "4" {
// basically moraa!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // basically moraa!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
return !give_points(data["value"].as_i64().unwrap(), data["amount"].as_i64().unwrap(), user); return !give_points(data["value"].as_i64().unwrap(), data["amount"].as_i64().unwrap(), user, missions, clear_missions);
} else if data["reward_type"].to_string() == "8" { } else if data["reward_type"].to_string() == "8" {
// title // title
let title = data["value"].as_i64().unwrap(); let title = data["value"].as_i64().unwrap();
@ -120,23 +120,29 @@ pub fn give_gift(data: &JsonValue, user: &mut JsonValue) -> bool {
println!("Redeeming reward not implemented for reward type {}", data["reward_type"].to_string()); println!("Redeeming reward not implemented for reward type {}", data["reward_type"].to_string());
return false; return false;
} }
pub fn give_gift_basic(ty_pe: i32, id: i64, amount: i64, user: &mut JsonValue) -> bool { pub fn give_gift_basic(ty_pe: i32, id: i64, amount: i64, user: &mut JsonValue, missions: &mut JsonValue, clear_missions: &mut JsonValue) -> bool {
give_gift(&object!{ give_gift(&object!{
reward_type: ty_pe, reward_type: ty_pe,
amount: amount, amount: amount,
value: id value: id
}, user) }, user, missions, clear_missions)
} }
pub fn give_points(master_item_id: i64, amount: i64, user: &mut JsonValue) -> bool { pub fn give_points(master_item_id: i64, amount: i64, user: &mut JsonValue, missions: &mut JsonValue, clear_missions: &mut JsonValue) -> bool {
if master_item_id == 1 {
let cleared = advance_variable_mission(1121001, 1121019, amount, missions);
for (_i, data) in cleared.members().enumerate() {
clear_missions.push(data.clone()).unwrap();
}
}
let mut has = false; let mut has = false;
for (_j, dataa) in user["point_list"].members_mut().enumerate() { for (_j, data) in user["point_list"].members_mut().enumerate() {
if dataa["type"].as_i64().unwrap() == master_item_id { if data["type"].as_i64().unwrap() == master_item_id {
has = true; has = true;
let new_amount = dataa["amount"].as_i64().unwrap() + amount; let new_amount = data["amount"].as_i64().unwrap() + amount;
if new_amount > LIMIT_COINS { if new_amount > LIMIT_COINS {
return true; return true;
} }
dataa["amount"] = new_amount.into(); data["amount"] = new_amount.into();
break; break;
} }
} }
@ -150,12 +156,12 @@ pub fn give_points(master_item_id: i64, amount: i64, user: &mut JsonValue) -> bo
} }
pub fn use_item(master_item_id: i64, amount: i64, user: &mut JsonValue) { pub fn use_item(master_item_id: i64, amount: i64, user: &mut JsonValue) {
for (_j, dataa) in user["item_list"].members_mut().enumerate() { for (_j, data) in user["item_list"].members_mut().enumerate() {
if dataa["master_item_id"].as_i64().unwrap() == master_item_id { if data["master_item_id"].as_i64().unwrap() == master_item_id {
if dataa["amount"].as_i64().unwrap() >= amount { if data["amount"].as_i64().unwrap() >= amount {
dataa["amount"] = (dataa["amount"].as_i64().unwrap() - amount).into(); data["amount"] = (data["amount"].as_i64().unwrap() - amount).into();
} else { } else {
dataa["amount"] = (0).into(); data["amount"] = (0).into();
} }
break; break;
} }

View file

@ -376,7 +376,7 @@ fn get_live_mission_completed_ids(user: &JsonValue, live_id: i64, score: i64, co
Some(out) Some(out)
} }
fn give_mission_rewards(user: &mut JsonValue, missions: &JsonValue, multiplier: i64) -> JsonValue { fn give_mission_rewards(user: &mut JsonValue, missions: &mut JsonValue, cleared_missions: &mut JsonValue, multiplier: i64) -> JsonValue {
let mut rv = array![]; let mut rv = array![];
for (_i, data) in MISSION_DATA.members().enumerate() { for (_i, data) in MISSION_DATA.members().enumerate() {
if !missions.contains(data["id"].as_i32().unwrap()) { if !missions.contains(data["id"].as_i32().unwrap()) {
@ -388,12 +388,12 @@ fn give_mission_rewards(user: &mut JsonValue, missions: &JsonValue, multiplier:
let mut gift = get_live_mission_info(data["masterLiveMissionRewardId"].as_i64().unwrap()); let mut gift = get_live_mission_info(data["masterLiveMissionRewardId"].as_i64().unwrap());
gift["reward_type"] = gift["type"].clone(); gift["reward_type"] = gift["type"].clone();
gift["amount"] = (gift["amount"].as_i64().unwrap() * multiplier).into(); gift["amount"] = (gift["amount"].as_i64().unwrap() * multiplier).into();
items::give_gift(&gift, user); items::give_gift(&gift, user, missions, cleared_missions);
} }
if items::give_gift_basic(3, 16005001, 10 * multiplier, user) { if items::give_gift_basic(3, 16005001, 10 * multiplier, user, missions, cleared_missions) {
rv.push(object!{"type":3,"value":16005001,"level":0,"amount":10}).unwrap(); rv.push(object!{"type":3,"value":16005001,"level":0,"amount":10}).unwrap();
} }
if items::give_gift_basic(3, 17001001, 2 * multiplier, user) { if items::give_gift_basic(3, 17001001, 2 * multiplier, user, missions, cleared_missions) {
rv.push(object!{"type":3,"value":17001001,"level":0,"amount":2}).unwrap(); rv.push(object!{"type":3,"value":17001001,"level":0,"amount":2}).unwrap();
} }
rv rv
@ -507,7 +507,7 @@ fn live_end(req: &HttpRequest, body: &String, skipped: bool) -> JsonValue {
clear_master_live_mission_ids: missions.clone() clear_master_live_mission_ids: missions.clone()
}); });
let reward_list = give_mission_rewards(&mut user, &missions, body["live_boost"].as_i64().unwrap_or(1)); let reward_list = give_mission_rewards(&mut user, &mut user_missions, &mut cleared_missions, body["live_boost"].as_i64().unwrap_or(1));
let lp_used: i32 = body["use_lp"].as_i32().unwrap_or(10 * body["live_boost"].as_i32().unwrap_or(0)); let lp_used: i32 = body["use_lp"].as_i32().unwrap_or(10 * body["live_boost"].as_i32().unwrap_or(0));

View file

@ -153,6 +153,8 @@ pub fn lottery_post(req: HttpRequest, body: String) -> HttpResponse {
println!("lottery: {}", body); println!("lottery: {}", body);
let mut user = userdata::get_acc(&key); let mut user = userdata::get_acc(&key);
let user2 = userdata::get_acc(&key); let user2 = userdata::get_acc(&key);
let mut missions = userdata::get_acc_missions(&key);
let mut cleared_missions = array![];
let mut cardstogive; let mut cardstogive;
@ -212,11 +214,11 @@ pub fn lottery_post(req: HttpRequest, body: String) -> HttpResponse {
} }
lottery_list.push(to_push).unwrap(); lottery_list.push(to_push).unwrap();
} }
items::give_gift_basic(3, 15540034, 10, &mut user); items::give_gift_basic(3, 15540034, 10, &mut user, &mut missions, &mut cleared_missions);
} else if lottery_type == 2 { } else if lottery_type == 2 {
for (_i, data) in cardstogive.members().enumerate() { for (_i, data) in cardstogive.members().enumerate() {
let info = get_card(data["master_lottery_item_id"].to_string(), data["master_lottery_item_number"].to_string()); let info = get_card(data["master_lottery_item_id"].to_string(), data["master_lottery_item_number"].to_string());
items::give_gift_basic(info["type"].as_i32().unwrap(), info["value"].as_i64().unwrap(), info["amount"].as_i64().unwrap(), &mut user); items::give_gift_basic(info["type"].as_i32().unwrap(), info["value"].as_i64().unwrap(), info["amount"].as_i64().unwrap(), &mut user, &mut missions, &mut cleared_missions);
let to_push = object!{ let to_push = object!{
"master_lottery_item_id": data["master_lottery_item_id"].clone(), "master_lottery_item_id": data["master_lottery_item_id"].clone(),
"master_lottery_item_number": data["master_lottery_item_number"].clone(), "master_lottery_item_number": data["master_lottery_item_number"].clone(),
@ -227,8 +229,8 @@ pub fn lottery_post(req: HttpRequest, body: String) -> HttpResponse {
} }
userdata::save_acc(&key, user.clone()); userdata::save_acc(&key, user.clone());
userdata::save_acc_missions(&key, missions);
//todo
let resp = object!{ let resp = object!{
"code": 0, "code": 0,
"server_time": global::timestamp(), "server_time": global::timestamp(),
@ -239,7 +241,7 @@ pub fn lottery_post(req: HttpRequest, body: String) -> HttpResponse {
"item_list": user["item_list"].clone() "item_list": user["item_list"].clone()
}, },
"gift_list": user2["home"]["gift_list"].clone(), "gift_list": user2["home"]["gift_list"].clone(),
"clear_mission_ids": [], "clear_mission_ids": cleared_missions,
"draw_count_list": [] "draw_count_list": []
} }
}; };

View file

@ -79,10 +79,10 @@ pub fn receive(req: HttpRequest, body: String) -> HttpResponse {
let mut gift = MISSION_REWARD[mission_info["masterMissionRewardId"].to_string()].clone(); let mut gift = MISSION_REWARD[mission_info["masterMissionRewardId"].to_string()].clone();
gift["reward_type"] = gift["type"].clone(); gift["reward_type"] = gift["type"].clone();
gift["amount"] = gift["amount"].as_i64().unwrap().into(); gift["amount"] = gift["amount"].as_i64().unwrap().into();
items::give_gift(&gift, &mut user); items::give_gift(&gift, &mut user, &mut missions, &mut array![]);
rewards.push(gift).unwrap(); rewards.push(gift).unwrap();
let variable_missions = array![[1153001, 1153019], [1105001, 1105017], [1101001, 1101030]]; let variable_missions = array![[1153001, 1153019], [1105001, 1105017], [1101001, 1101030], [1121001, 1121019]];
let mut variable = false; let mut variable = false;
for (_i, id) in variable_missions.members().enumerate() { for (_i, id) in variable_missions.members().enumerate() {
if mission.as_i64().unwrap() >= id[0].as_i64().unwrap() && mission.as_i64().unwrap() < id[1].as_i64().unwrap() { if mission.as_i64().unwrap() >= id[0].as_i64().unwrap() && mission.as_i64().unwrap() < id[1].as_i64().unwrap() {
@ -116,7 +116,6 @@ pub fn receive(req: HttpRequest, body: String) -> HttpResponse {
"point_list": user["point_list"].clone() "point_list": user["point_list"].clone()
}, },
"mission_list": missions "mission_list": missions
} }
}; };
global::send(resp, req) global::send(resp, req)

View file

@ -78,7 +78,9 @@ pub fn gift(req: HttpRequest, body: String) -> HttpResponse {
let mut user = userdata::get_acc_home(&key); let mut user = userdata::get_acc_home(&key);
let mut userr = userdata::get_acc(&key); let mut userr = userdata::get_acc(&key);
let mut missions = userdata::get_acc_missions(&key);
let mut cleared_missions = array![];
let mut rewards = array![]; let mut rewards = array![];
let mut failed = array![]; let mut failed = array![];
@ -88,7 +90,7 @@ pub fn gift(req: HttpRequest, body: String) -> HttpResponse {
if data["id"].to_string() != gift_id.to_string() { if data["id"].to_string() != gift_id.to_string() {
continue; continue;
} }
if !items::give_gift(&data, &mut userr) { if !items::give_gift(&data, &mut userr, &mut missions, &mut cleared_missions) {
failed.push(gift_id.clone()).unwrap(); failed.push(gift_id.clone()).unwrap();
break; break;
} }
@ -108,6 +110,7 @@ pub fn gift(req: HttpRequest, body: String) -> HttpResponse {
} }
} }
userdata::save_acc_missions(&key, missions);
userdata::save_acc_home(&key, user); userdata::save_acc_home(&key, user);
userdata::save_acc(&key, userr.clone()); userdata::save_acc(&key, userr.clone());
let userr = userdata::get_acc(&key); let userr = userdata::get_acc(&key);
@ -122,7 +125,7 @@ pub fn gift(req: HttpRequest, body: String) -> HttpResponse {
"item_list": userr["item_list"].clone(), "item_list": userr["item_list"].clone(),
"point_list": userr["point_list"].clone() "point_list": userr["point_list"].clone()
}, },
"clear_mission_ids": [], "clear_mission_ids": cleared_missions,
"reward_list": rewards "reward_list": rewards
} }
}; };