Untitled

 avatar
unknown
plain_text
9 months ago
7.2 kB
8
Indexable
bool player_login(ENetPeer* peer, string cch) {

	rtvar var = rtvar::parse(cch);
	replaceAll(cch, "\n", "|");
	pi(peer)->game_version = var.get("game_version");
	double client_version = 4.00;
	if (is_number(pi(peer)->game_version)) client_version = stod(pi(peer)->game_version);
	if (client_version >= 4.61) pi(peer)->temporary_tankIDName = var.get("growId");
	else pi(peer)->temporary_tankIDName = var.get("tankIDName");
	pi(peer)->player_device = var.get("platformID");
	pi(peer)->protocol = (var.get("protocol").empty() ? 1 : stoi(var.get("protocol")));
	pi(peer)->klv = var.get("klv");
	pi(peer)->meta = var.get("meta");
	pi(peer)->rid = var.get("rid");
	pi(peer)->mac = var.get("mac");
	pi(peer)->wk = var.get("wk");
	pi(peer)->aid = var.get("aid");
	pi(peer)->gid = var.get("gid");
	if (client_version >= 4.61 && pi(peer)->temporary_tankIDName == "_register_") pi(peer)->requestedName = generate_guest_name();
	//if (pi(peer)->requestedName == "lifedev" && beta_mode) pi(peer)->superdev = true, pi(peer)->dev = true, pi(peer)->rank = 6;
	pi(peer)->country = var.get("country");
	if (client_version >= 4.61) pi(peer)->tankIDPass = var.get("password");
	else pi(peer)->tankIDPass = var.get("tankIDPass");
	pi(peer)->pc_player = (var.get("platformID") == "0,1,1" ? true : false);
	pi(peer)->android_player = (var.get("platformID") == "4" ? true : false);
	pi(peer)->vid = var.get("vid");
	if (var.get("platformID") == "1" || var.get("platformID") == "2") pi(peer)->ios_player = true;
	//if (pi(peer)->tankIDName == "avare" || pi(peer)->tankIDName == "Lambent") pi(peer)->country = "rt";

	cout << "sa: " << var.get("country") << endl;

	if (pi(peer)->tankIDPass != "_register_") {
		if (not Server_Security.log_player.empty() && Server_Security.log_player == to_lower(pi(peer)->tankIDName)) {
			cout << "LOGGING: " << pi(peer)->tankIDName << " | " << "logging in parsing info" << "|" << endl;
		}
		double client_version = 4.00;
		if (is_number(pi(peer)->game_version)) client_version = stod(pi(peer)->game_version);
		ostringstream strs;
		strs << Server_Security.version;
		string str = strs.str();
		if (client_version >= 4.31) pi(peer)->new_version = true;
		if ((Server_Security.version > client_version || pi(peer)->protocol < 199 || pi(peer)->klv.empty() || client_version >= Server_Security.maximum_version) && !beta_mode) {
			failed_login(peer, "`4UPDATE REQUIRED!`` : The `$V" + str + "`` update is now available for your device.  Go get it!  You'll need to install it before you can play online.", true);
			return false;
		}
		if (to_lower(pi(peer)->country) == "ha" or pi(peer)->country.length() != 2 or find(Server_Security.ridbans.begin(), Server_Security.ridbans.end(), pi(peer)->rid) != Server_Security.ridbans.end() or find(Server_Security.ridbans.begin(), Server_Security.ridbans.end(), pi(peer)->ip) != Server_Security.ridbans.end() or find(Server_Security.ridbans.begin(), Server_Security.ridbans.end(), pi(peer)->gid) != Server_Security.ridbans.end() or find(Server_Security.ridbans.begin(), Server_Security.ridbans.end(), pi(peer)->wk) != Server_Security.ridbans.end()) {
			failed_login(peer, "CT:[S]_ `4Sorry, you are not allowed to enter the game from this location. Contact `5Discord Staff Team `4if you have any questions.");
			Server_Security.banned_ip_temporary.push_back(make_pair(pi(peer)->ip, (duration_cast<milliseconds>(system_clock::now().time_since_epoch())).count()));
			return false;
		}
		if (server_port != 17778) {
			gamepacket_t s;
			s.Insert("OnDialogRequest");
			s.Insert("\nadd_label|big|`wConnect to Server``|\nadd_spacer|small|\nadd_friend_image_label_button|connect_ltps_1|`w LTPS SEASON I `2(2/150)|game/tiles_page14.rttex|1.6|28|23|32|false|false|\nadd_friend_image_label_button|connect_ltps_2|`w LTPS SEASON II `4(0/800)|game/tiles_page14.rttex|1.6|30|23|32|false|false|");
			s.CreatePacket(peer);
			return false;
		}
		else
		{
			switch (auth_(peer)) {
			case -1: /*blogas pass arba nera acc*/
			{
				packet_(peer, "`4Unable to log on to Lifetopia: `oThat `wGrowID`` doesn't seem valid, or the password is wrong. If you don't have one, press `wCancel``, un-check `w'I have a GrowID'``, then click `wConnect``.", "Retrieve lost password");
				packet_(peer, "action|logon_fail");
				enet_peer_disconnect_later(peer, 0);
				return false;
			}
			case 2: return false;
			default:
			{
				break;
			}
			}
			if (peer != NULL) {
				pi(peer)->selected_port = 17778;
				save_player(pi(peer), false);
				if (pi(peer)->b_t + pi(peer)->b_s < (duration_cast<milliseconds>(system_clock::now().time_since_epoch())).count()) {
					if (not pi(peer)->b_r.empty() or not pi(peer)->b_b.empty()) {
						packet_(peer, "action|play_sfx\nfile|audio/dialog_confirm.wav\ndelayMS|0");
					}
					pi(peer)->b_t = 0, pi(peer)->b_s = 0, pi(peer)->b_b = "", pi(peer)->b_r = "";
					OnSetGems(peer);
				}
				else {
					pi(peer)->name_color = (perm(peer, MOD) ? r_color(pi(peer)->rank) : "`0");
					long long int time = (duration_cast<milliseconds>(system_clock::now().time_since_epoch())).count();
					int actualseconds = (pi(peer)->b_t + pi(peer)->b_s - time) / 1000, days = 0;
					string time_counted = "";
					if (actualseconds / 86400 >= 1) {
						days = actualseconds / (24 * 3600);
						time_counted += to_string(actualseconds / (24 * 3600)) + " days, ";
						actualseconds = actualseconds % (24 * 3600);
					}
					if (actualseconds / 3600 >= 1) {
						time_counted += to_string(actualseconds / 3600) + " hours, ";
						actualseconds %= 3600;
					}
					if (actualseconds / 60 >= 1) {
						time_counted += to_string(actualseconds / 60) + " mins, ";
						actualseconds %= 60;
					}
					time_counted += to_string(actualseconds) + " secs";
					if (days < 33) {
						packet_(peer, "action|log\nmsg|CT:[S]_ `4Sorry, this account, device or location has been temporarily suspended.``", "");
						if (pi(peer)->b_r != "No reason") packet_(peer, "action|log\nmsg|CT:[S]_ `4Ban Reason: " + pi(peer)->b_r + "``", "");
						packet_(peer, "action|log\nmsg|CT:[S]_ If you didn't do anything wrong, it could be because you're playing from the same place or on the same device as someone who did. Contact support at `5" + web_url + "`` if you have any questions.", "");
						packet_(peer, "action|log\nmsg|CT:[S]_ This is a temporary ban caused by " + pi(peer)->name_color + pi(peer)->tankIDName + "`` and will be removed in `0" + time_counted + "``. If that's not your name, try playing from another location or device to fix it.", "");
					}
					else {
						packet_(peer, "action|log\nmsg|CT:[S]_ `4Sorry, this account (```5" + pi(peer)->tankIDName + "```4) has been suspended. Contact`` `5" + web_url + "`` `4if you have any questions.``", "");
						if (pi(peer)->b_r != "No reason") packet_(peer, "action|log\nmsg|CT:[S]_ `4Ban Reason: " + pi(peer)->b_r + "``", "");
					}
					packet_(peer, "action|logon_fail");
					enet_peer_disconnect_later(peer, 0);
				}
			}
			onsupermain(peer);
			if (pi(peer)->mod or pi(peer)->dev) pi(peer)->m_h = 0;
			return true;
		}
	}
	return false;
}
Editor is loading...
Leave a Comment