Raised This Month: $ Target: $400
 0% 

[HELP] Jailbreak Gangs


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
ObeliX
Junior Member
Join Date: Feb 2019
Old 02-05-2019 , 07:36   [HELP] Jailbreak Gangs
Reply With Quote #1

Hi, sorry for my English,
I have a problem with Gangs on my server. :v

LOGS
L 02/04/2019 - 00:48:50: [gangi.amxx] <Zapytanie> Blad: Table '730803_gangi2.StatystykiGraczy' doesn't exist

My database is correctly because the plugin is working. My database is called "730803_gangi2"
I do not know why the database is overwritten as "730803_gangi2.StatystykiGraczy"

Gangi.sma :
http://www.wklejto.pl/710352

Thanks, for Help!
ObeliX is offline
DjSoftero
Veteran Member
Join Date: Nov 2014
Location: Lithuania
Old 02-05-2019 , 10:10   Re: [HELP] Jailbreak Gangs
Reply With Quote #2

Please post the source code directly here in [php] or [code] tags instead of redirecting us to external Polish pages.
DjSoftero is offline
ObeliX
Junior Member
Join Date: Feb 2019
Old 02-05-2019 , 13:38   Re: [HELP] Jailbreak Gangs
Reply With Quote #3

Okay, I'm sorry.
The "Gangs" plugin is connected to the "Stats" plugin, but no wishes or rebellions are saved, I do not know why

Gangs.sma
Code:
#include <amxmodx>
#include <sqlx>
#include <naxe_jailbreak>

new ranga_gracza[][] = { "", " (Zalozyciel)", " (Zastepca)" };
new flagi_gracza[33];

new gang_gracza[33];
new bool:wczytalo_gracza[33];
new bool:stworz_gang[33];

new nazwa_gracza[33][128];

new Handle:info, Handle:info2;
new gszQuery[768];

new Trie:gnGangName
new Trie:gnGangIle;

new zyczenia_gracza[33];

new MenuOpusc, MenuUsun;

public plugin_init()  {
	register_plugin("Gangi", "1.0", "naXe");

	register_clcmd("say /gangi", "MenuGang");
	register_clcmd("say /gang", "MenuGang");
	register_clcmd("nazwa_gangu", "StworzNazweGangu");
	register_clcmd("say_team", "GangSay");

	register_message(76, "PrefiksSay");
}

public plugin_cfg() {
	info = SQL_MakeDbTuple("XXX", "XXX", "XXX", "730803_gangi");
	info2 = SQL_MakeDbTuple("XXX", "XXX", "XXX", "730803_staty");

	new error, error2, szError[128], szError2[128];
	new Handle:hConn, Handle:hConn2;
	hConn = SQL_Connect(info, error, szError, 127);
	hConn2 = SQL_Connect(info2, error2, szError2, 127);
	if(error) {
		log_amx("[Gangi] Blad: %s", szError);
		return;
	}
	if(error2) {
		log_amx("[Gangi] Blad: %s", szError2);
		return;
	}
	gnGangName = TrieCreate();
	gnGangIle = TrieCreate();

	new Handle:query;

	SQL_FormatQuery("CREATE TABLE IF NOT EXISTS `NazwaGangu` (`id` int(10) NOT NULL AUTO_INCREMENT, `Nick` varchar(32) NOT NULL, `Ilosc` int(10) NOT NULL DEFAULT '1', PRIMARY KEY (`id`))")
	query = SQL_PrepareQuery(hConn, gszQuery)

	SQL_Execute(query)
	SQL_FreeHandle(query);

	SQL_FormatQuery("CREATE TABLE IF NOT EXISTS `CzlonekGangu` (`id` int(10) NOT NULL DEFAULT '0', `Nick` varchar(32) NOT NULL, `Flaga` int(5) NOT NULL DEFAULT '0', PRIMARY KEY (`Nick`))");
	query = SQL_PrepareQuery(hConn, gszQuery);

	SQL_Execute(query)
	SQL_FreeHandle(query);

	query = SQL_PrepareQuery(hConn,"SELECT * FROM `NazwaGangu` WHERE 1");
	if(!SQL_Execute(query)) {
		SQL_QueryError(query, szError, 127);
		log_amx("[Gangi] Nie mozna zaladowac gangow (%s)", szError);
	} 
	else if(SQL_NumResults(query)) {
		new szNazwa[32], szInt[32];
		while(SQL_MoreResults(query)) {
			num_to_str(SQL_ReadResult(query, 0), szInt, 31);
			SQL_ReadResult(query, 1, szNazwa, 31);

			TrieSetCell(gnGangIle, szInt, SQL_ReadResult(query, 2));
			TrieSetString(gnGangName, szInt, szNazwa);

			SQL_NextRow(query);
		}
		SQL_FreeHandle(query);
	}
	SQL_FreeHandle(hConn);
	SQL_FreeHandle(hConn2);

	MenuOpusc = menu_create("Czy napewno chcesz opuscic swoj gang?", "Handel_OpuscGang");
	menu_additem(MenuOpusc, "\yTak");
	menu_additem(MenuOpusc, "Nie");
	menu_setprop(MenuOpusc, 4, "Wyjdz");

	MenuUsun = menu_create("Czy napewno chcesz usunac swoj gang?", "Handel_UsunGang");
	menu_additem(MenuUsun, "\yTak");
	menu_additem(MenuUsun, "Nie");
	menu_setprop(MenuUsun, 4, "Wyjdz");
}

public MenuGang(id) {
	if(!wczytalo_gracza[id] || stworz_gang[id]) {
		ColorChat(id, 0, "^4[Gang]^1 Zaczekaj az gang sie utworzy lub zostaniesz wczytany!");
		return 1;
	}
	new menu = menu_create("Menu gangu:", "Handel_Gang");
	if(!gang_gracza[id]) menu_additem(menu, "Stworz gang \y(40+ Zyczen)", "0");
	else {
		if(flagi_gracza[id] == 1) {
			menu_additem(menu, "Dodaj czlonka do swojego gangu", "2");
			menu_additem(menu, "Usun czlonka gangu^n", "3");
			menu_additem(menu, "Czlonkowie gangu", "5");
			menu_additem(menu, "Ustaw range dla czlonka^n", "7");
			menu_additem(menu, "\yUsun swoj gang", "4");
		} else {
			menu_additem(menu, "\yOpusc gang^n", "1");

			if(flagi_gracza[id] == 2) {
				menu_additem(menu, "Dodaj czlonka do swojego gangu", "2");
				menu_additem(menu, "Usun czlonka gangu^n", "3");
			}
			menu_additem(menu, "Czlonkowie gangu", "5");
		}
	}
	menu_setprop(menu, 4, "Wyjdz");
	menu_display(id, menu);
	return 1;
}

public Handel_Gang(id, menu, item) {
	if(item == -3) return;

	new szItem[3], id2; 
	menu_item_getinfo(menu, item, id2, szItem, 2, _,  _, id2);
	switch(str_to_num(szItem)) {
		case 0: {
			if(!WymaganiaDoGangu(id)) return;

			client_cmd(id, "messagemode nazwa_gangu");
		}
		case 1: menu_display(id, MenuOpusc);
		case 2: {
			new szInt[3], menu2 = menu_create("Wyslij zaproszenie do gangu:", "Handel_ZaproszenieDoGangu");
			for(new i = 1; i <= MaxClients; i++) {
				if(!is_user_connected(i) || gang_gracza[i] || zyczenia_gracza[i] < 10 || is_user_hltv(i) || is_user_bot(i)) continue;

				num_to_str(i, szInt, 2);
				menu_additem(menu2, nazwa_gracza[i], szInt);
			}
			menu_setprop(menu2, 2, "Poprzednia strona");
			menu_setprop(menu2, 3, "Nastepna strona");
			menu_setprop(menu2, 4, "Wyjdz");
			menu_display(id, menu2);
		}
		case 3: {
			new data[1]; data[0] = id;
			SQL_FormatQuery("SELECT `Nick` FROM `CzlonekGangu` WHERE `id` = '%i' AND NOT `Flaga` = '1'", gang_gracza[id]);
			SQL_ThreadQuery(info, "UsunCzlonkaGangu", gszQuery, data, 1);
		}
		case 4: menu_display(id, MenuUsun);
		case 5: {
			new data[1]; data[0] = id;
			SQL_FormatQuery("SELECT `Nick`,`Flaga` FROM `CzlonekGangu` WHERE `id` = '%i'", gang_gracza[id]);
			SQL_ThreadQuery(info, "PokazCzlonkaGangu", gszQuery, data, 1);
		}
		case 7: {
			new data[1]; data[0] = id;
			SQL_FormatQuery("SELECT `Nick`,`Flaga` FROM `CzlonekGangu` WHERE `id` = '%i' AND NOT `Flaga` = '1'", gang_gracza[id]);
			SQL_ThreadQuery(info, "UstawRangCzlonka", gszQuery, data, 1);
		}
	}
}

public Handel_OpuscGang(id, menu, item) {
	if(item == -3 || item == 1) return;

	UstawIloscGangu(gang_gracza[id], -1);

	gang_gracza[id] = 0;
	flagi_gracza[id] = 0;

	SQL_FormatQuery("UPDATE `CzlonekGangu` SET `id` = '0', `Flaga` = '0' WHERE `Nick` = '%s'", nazwa_gracza[id]);
	SQL_ThreadQuery(info, "ZapiszDane", gszQuery);

	ColorChat(id, 0, "^4[Gang]^1 Opusciles swoj gang.");
}

public Handel_UsunGang(id, menu, item) {
	if(item == -3 || item == 1) return;

	for(new i = 1; i <= MaxClients; i++) {
		if(gang_gracza[id] == gang_gracza[i] && id != i) {
			gang_gracza[i] = 0;
			flagi_gracza[i] = 0;
		}
	}
	SQL_FormatQuery("UPDATE `CzlonekGangu` SET `id` = '0', `Flaga` = '0' WHERE `id` = '%i'", gang_gracza[id]);
	SQL_ThreadQuery(info, "ZapiszDane", gszQuery);

	SQL_FormatQuery("DELETE FROM `NazwaGangu` WHERE `id` = '%i'", gang_gracza[id]);
	SQL_ThreadQuery(info, "ZapiszDane", gszQuery);

	new StrItem[32];
	num_to_str(gang_gracza[id], StrItem, 31);
	TrieDeleteKey(gnGangIle, StrItem);

	gang_gracza[id] = 0;
	flagi_gracza[id] = 0;

	ColorChat(id, 0, "^4[Gang]^1 Usunales swoj gang.");
}

public Handel_ZaproszenieDoGangu(id, menu, item) {
	if(item == -3) return;

	if(PobierzIloscGangu(gang_gracza[id]) >= 25) {
		ColorChat(id, 0, "^4[Gang]^1 Masz za duzo czlonkow w gangu (25)");
		return;
	}
	new szInt[3], id2; 
	menu_item_getinfo(menu, item, id2, szInt, 2, _,  _, id2);

	id2 = str_to_num(szInt);
	if(zyczenia_gracza[id2] < 10) {
		ColorChat(id, 0, "^4[Gang]^1 Gracz nie ma minimalnej ilosci zyczen (10)");
		return;
	}
	ColorChat(id, 0, "^4[Gang]^1 Wyslales^3 %s^1 zaproszenie do swojego gangu", nazwa_gracza[id2]);

	new szTemp[128], menu2, gszInt[32], szGang[64];
	num_to_str(gang_gracza[id], gszInt, 31);
	TrieGetString(gnGangName, gszInt, szGang, 63);

	formatex(szTemp, 127, "%s zaprosil cie, abys dolaczyl do gangu ^"%s^"", nazwa_gracza[id], szGang);
	menu2 = menu_create(szTemp, "Handel_DostalZaproszenie");

	num_to_str(id, szInt, 2);
	menu_additem(menu2, "Akceptuj", szInt);
	menu_additem(menu2, "Odrzuc", szInt);

	menu_setprop(menu2, 4, "Wyjdz");
	menu_display(id2, menu2);

	ColorChat(id2, 0, "^4[Gang]^3 %s^1 wyslal Ci zaproszenie do swojego gangu", nazwa_gracza[id]);
}

public Handel_DostalZaproszenie(id, menu, item) {
	if(item == -3) return;

	new szInt[3], id2; 
	menu_item_getinfo(menu, item, id2, szInt, 2, _,  _, id2);

	id2 = str_to_num(szInt);
	if(PobierzIloscGangu(gang_gracza[id2]) >= 25) return;

	ColorChat(id2, 0, "^4[Gang]^3 %s^1%s przyjal Twoje%s zaproszeni%s do gangu", nazwa_gracza[id], item ? " nie" : "", item ? "go" : "", item ? "a" : "e");

	if(item == 1) return;

	UstawIloscGangu(gang_gracza[id2], 1);
	SQL_FormatQuery("UPDATE `CzlonekGangu` SET `id` = '%i' WHERE `Nick` = '%s'", gang_gracza[id2], nazwa_gracza[id]);
	SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
	gang_gracza[id] = gang_gracza[id2];
}

public PokazCzlonkaGangu(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	new id = data[0];
	if(!is_user_connected(id) && !is_user_connecting(id)) return;

	if(SQL_NumRows(query)) {
		new szName[50], menu = menu_create("Czlonkowie gangu:", "Handel_CzlonkowieGangu");	
		while(SQL_MoreResults(query)) {
			SQL_ReadResult(query, 0, szName, 31);
			add(szName, 49, ranga_gracza[SQL_ReadResult(query, 1)]);
			
			menu_additem(menu, szName);
			SQL_NextRow(query);
		}
		menu_setprop(menu, 2, "Poprzednia strona");
		menu_setprop(menu, 3, "Nastepna strona");
		menu_setprop(menu, 4, "Wyjdz");
		menu_display(id, menu);
	}
}

public Handel_CzlonkowieGangu(id, menu, item) {
	if(item == -3) return;

	menu_display(id, menu, item/7);
}

public UsunCzlonkaGangu(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	new id = data[0];
	if(!is_user_connected(id) && !is_user_connecting(id)) return;

	if(SQL_NumRows(query)) {
		new szName[32], menu = menu_create("Usun z gangu:", "Handel_UsunZGangu");	
		while(SQL_MoreResults(query)) {
			SQL_ReadResult(query, 0, szName, 31);
			menu_additem(menu, szName, szName);
			SQL_NextRow(query);
		}
		menu_setprop(menu, 2, "Poprzednia strona");
		menu_setprop(menu, 3, "Nastepna strona");
		menu_setprop(menu, 4, "Wyjdz");
		menu_display(id, menu);
	}
}

public Handel_UsunZGangu(id, menu, item) {
	if(item == -3) return;

	new szName[32], id2; 
	menu_item_getinfo(menu, item, id2, szName, 32, _,  _, id2);

	SQL_FormatQuery("UPDATE `CzlonekGangu` SET `id` = '0', `Flaga` = '0' WHERE `Nick` = '%s'", szName);
	SQL_ThreadQuery(info, "ZapiszDane", gszQuery);

	UstawIloscGangu(gang_gracza[id], -1);

	id2 = get_user_index(szName);
	if(is_user_connected(id2)) {
		gang_gracza[id2] = 0;
		flagi_gracza[id2] = 0;
	}
	ColorChat(id, 0, "^4[Gang]^1 Usunales^3 %s^1 z gangu", szName);
}

public UstawRangCzlonka(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	new id = data[0];
	if(!is_user_connected(id) && !is_user_connecting(id)) return;

	if(SQL_NumRows(query)) {
		new szName[2][50], menu = menu_create("Ustaw range:", "Handel_UstawRangeCzlonka");
		while(SQL_MoreResults(query)) {
			SQL_ReadResult(query, 0, szName[0], 31);
			formatex(szName[1], 49, "%s%s", szName[0], ranga_gracza[SQL_ReadResult(query, 1)]);

			menu_additem(menu, szName[1], szName[0]);
			SQL_NextRow(query);
		}
		menu_setprop(menu, 2, "Poprzednia strona");
		menu_setprop(menu, 3, "Nastepna strona");
		menu_setprop(menu, 4, "Wyjdz");
		menu_display(id, menu);
	}
}

public Handel_UstawRangeCzlonka(id, menu, item) {
	if(item == -3) return;

	new szName[32], id2;
	menu_item_getinfo(menu, item, id2, szName, 31, _,  _, id2);

	new szTemp[128], menu2;
	format(szTemp, 127, "Ustaw range dla %s", szName);
	menu2 = menu_create(szTemp, "Handel_UstawRangeCzlonkaGangu");

	menu_additem(menu2, "Zadna", szName);
	menu_additem(menu2, "Zastepca", szName);

	menu_setprop(menu2, 4, "Wyjdz");
	menu_display(id, menu2);	
}

public Handel_UstawRangeCzlonkaGangu(id, menu, item) {
	if(item == -3) return;

	new szName[32], id2; 
	menu_item_getinfo(menu, item, id2, szName, 32, _,  _, id2);

	item = item ? 2 : 0;

	SQL_FormatQuery("UPDATE `CzlonekGangu` SET `Flaga` = '%i' WHERE `Nick` = '%s'", item, szName);
	SQL_ThreadQuery(info, "ZapiszDane", gszQuery);

	id2 = get_user_index(szName);
	if(is_user_connected(id2)) {
		flagi_gracza[id2] = item;
		ColorChat(id2, 0, "^4[Gang]^3 %s^1 ustawil ci range%s", nazwa_gracza[id], ranga_gracza[item]);
	}
	ColorChat(id, 0, "^4[Gang]^1 Ustawiles range%s czlonkowi^3 %s", ranga_gracza[item], szName);
}

public GangSay(id) {
	new said[3]; read_argv(1, said, 2);
	if(said[0] != '*' || !said[1] || !gang_gracza[id]) return 0;

	new message[192];
	read_args(message, 191);
	remove_quotes(message);

	for(new i = 1; i <= MaxClients; i++) {
		if(!is_user_connected(i) || gang_gracza[i] != gang_gracza[id]) continue;

		ColorChat(i, 0, "^3(GANG)^4 %s^3 :  %s", nazwa_gracza[id], message[2]);
	}
	return 1;
}
	
public OnPlayerConnected(id) {
	stworz_gang[id] = false;
	wczytalo_gracza[id] = false;
	gang_gracza[id] = 0;
	flagi_gracza[id] = 0;
	zyczenia_gracza[id] = 0;

	get_user_name(id, nazwa_gracza[id], 127);
	replace_all(nazwa_gracza[id], 127, "\\", "\\\\");
	replace_all(nazwa_gracza[id], 127, "\0", "\\0");
	replace_all(nazwa_gracza[id], 127, "\n", "\\n");
	replace_all(nazwa_gracza[id], 127, "\r", "\\r");
	replace_all(nazwa_gracza[id], 127, "\x1a", "\Z");
	replace_all(nazwa_gracza[id], 127, "'", "\'");
	replace_all(nazwa_gracza[id], 127, "^"", "\^"");
	replace_all(nazwa_gracza[id], 127, "`", "\`");
	replace_all(nazwa_gracza[id], 127, "%", "\%");

	static data[1]; data[0] = id;

	SQL_FormatQuery("SELECT * FROM `CzlonekGangu` WHERE `Nick` = '%s'", nazwa_gracza[id]);
	SQL_ThreadQuery(info, "PobierzGang", gszQuery, data, 1);

	SQL_FormatQuery("SELECT `Zyczenia` FROM `StatystykiGraczy` WHERE `Nick` = '%s'", nazwa_gracza[id]);
	SQL_ThreadQuery(info2, "PobierzStaty", gszQuery, data, 1);
}

public client_infochanged(id) {
	if(!is_user_connected(id)) return;

	new name[128]; get_user_info(id, "name", name, 127);
	if(equal(name, nazwa_gracza[id])) return;

	replace_all(name, 127, "\\", "\\\\");
	replace_all(name, 127, "\0", "\\0");
	replace_all(name, 127, "\n", "\\n");
	replace_all(name, 127, "\r", "\\r");
	replace_all(name, 127, "\x1a", "\Z");
	replace_all(name, 127, "'", "\'");
	replace_all(name, 127, "^"", "\^"");
	replace_all(name, 127, "`", "\`");
	replace_all(name, 127, "%", "\%");
	formatex(nazwa_gracza[id], 127, name);
}

public PobierzGang(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	new id = data[0];
	if(!is_user_connected(id) && !is_user_connecting(id)) return;

	if(SQL_NumRows(query)) {
		gang_gracza[id] = SQL_ReadResult(query, 0);
		flagi_gracza[id] = SQL_ReadResult(query, 2);
	} else {
		SQL_FormatQuery("INSERT INTO `CzlonekGangu` (`Nick`) VALUES ('%s')", nazwa_gracza[id]);
		SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
	}
	wczytalo_gracza[id] = true;
}

public PobierzStaty(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	new id = data[0];
	if(!is_user_connected(id) && !is_user_connecting(id)) return;

	if(!SQL_NumRows(query)) return;

	zyczenia_gracza[id] += SQL_ReadResult(query, SQL_FieldNameToNum(query, "Zyczenia"));
}

public StworzNazweGangu(id) {
	if(get_user_team(id) != 1 || !wczytalo_gracza[id]) return 1;
	if(!WymaganiaDoGangu(id)) return 1;

	if(stworz_gang[id]) {
		ColorChat(id, 0, "^4[Gang]^1 Poczekaj, trwa tworzenie twojego gangu...");
		return 1;
	}
	new szArgs[32];
	read_args(szArgs, 31);
	remove_quotes(szArgs);

	if(!userFlags(id, "a") && strlen(szArgs) > 10) {
		ColorChat(id, 0, "^4[Gang]^1 Za dluga nazwa gangu! Maksymalnie 10 znakow.");
		return 1;
	}	
	if(strfind(szArgs, "'") != -1 || strfind(szArgs, "`") != -1 || strfind(szArgs, "%") != -1) {
		ColorChat(id, 0, "^4[Gang]^1 Nie mozesz uzyc niedozwolonych znakow (', ` i %)");
		return 1;
	}
	static data[32];
	copy(data[1], 31, szArgs);
	data[0] = id;

	SQL_FormatQuery("SELECT `id` FROM `NazwaGangu` WHERE `Nick` = '%s'", szArgs);
	SQL_ThreadQuery(info, "SprawdzenieDostepnosci", gszQuery, data, 32);

	stworz_gang[id] = true;
	return 1;
}

public SprawdzenieDostepnosci(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	new id = data[0]
	if(SQL_NumRows(query)) {
		ColorChat(id, 0, "^4[Gang]^1 Gang z taka nazwa juz istnieje.");
		stworz_gang[id] = false;
		return;
	}
	ColorChat(id, 0, "^4[Gang]^1 Stworzyles gang^3 %s", data[1]);

	SQL_FormatQuery("INSERT INTO `NazwaGangu` (`Nick`) VALUES ('%s')", data[1]);
	SQL_ThreadQuery(info, "ZapiszDaneGang", gszQuery, data, 32);
}

public ZapiszDaneGang(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	SQL_FormatQuery("SELECT `id` FROM `NazwaGangu` WHERE `Nick` = '%s'", data[1]);
	SQL_ThreadQuery(info, "PobierzGangID", gszQuery, data, 32);
}

public PobierzGangID(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	new id = data[0];
	if(SQL_NumRows(query)) {
		gang_gracza[id] = SQL_ReadResult(query, 0);
		flagi_gracza[id] = 1;

		new szInt[32];
		num_to_str(gang_gracza[id], szInt, 31);
		TrieSetCell(gnGangIle, szInt, 1);
		TrieSetString(gnGangName, szInt, data[1]);

		SQL_FormatQuery("UPDATE `CzlonekGangu` SET `id` = '%i', `Flaga` = '1' WHERE `Nick` = '%s'", gang_gracza[id], nazwa_gracza[id]);
		SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
	}
	stworz_gang[id] = false;
}

public ZapiszDane(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
}

public PrefiksSay(msgId, msgDest, msgEnt) {
	new id = get_msg_arg_int(1);
	if(!is_user_connected(id) || !(1 <= get_user_team(id) <= 2) || !gang_gracza[id]) return 0;

	new szInt[32], szGang[12], szPrefix[16];
	num_to_str(gang_gracza[id], szInt, 31);
	TrieGetString(gnGangName, szInt, szGang, 11);

	formatex(szPrefix, 15, "^4[%s]", szGang);

	new szTmp[196], szTmp2[196];
	get_msg_arg_string(2, szTmp, 195);

	if(!equal(szTmp, "#Cstrike_Chat_All")) {
		add(szTmp2, 195, szPrefix);
		add(szTmp2, 195, " ");
		add(szTmp2, 195, szTmp);
	} else {
		add(szTmp2, 195, szPrefix);
		add(szTmp2, 195, "^3 %s1^1 :  %s2");
	}
	set_msg_arg_string(2, szTmp2);
	return 0;
}

public OnPrisonerTakeWish(id)
	if((jail_get_tt(false) + jail_get_ct(false)) >= 5) zyczenia_gracza[id] += 1;

stock SQL_FormatQuery(szQuery[], ...) vformat(gszQuery, 767, szQuery, 2);

stock PobierzIloscGangu(gang) {
	new StrItem[32], ile;
	num_to_str(gang, StrItem, 31);
	TrieGetCell(gnGangIle, StrItem, ile);
	return ile;
}

stock UstawIloscGangu(gang, dodaj) {
	new StrItem[32], ile;
	num_to_str(gang, StrItem, 31);
	TrieGetCell(gnGangIle, StrItem, ile);
	TrieSetCell(gnGangIle, StrItem, ile+dodaj);

	SQL_FormatQuery("UPDATE `NazwaGangu` SET `Ilosc` = (`Ilosc` + %i) WHERE `id` = '%i'", dodaj, gang);
	SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
}

stock bool:WymaganiaDoGangu(id) {
	if(!userFlags(id, "a") && zyczenia_gracza[id] < 40) {	
		ColorChat(id, 0, "^4[Gang]^1 Masz za malo zyczen, aby stworzyc swoj gang!");
		return false;
	}
	if(gang_gracza[id]) {
		ColorChat(id, 0, "^4[Gang]^1 Masz juz gang!");
		return false;
	}
	return true;
}
Stats.sma
Code:
#include <amxmodx>
#include <sqlx>
#include <naxe_jailbreak>

new Handle:info, gszQuery[768];
new sid_gracza[33][35], ip_gracza[33][16], nazwa_gracza[33][128];
new czas_gracza[33], zyczenia_gracza[33], budynie_gracza[33];
new polaczenia_gracza[33];
new mapa[64], czas[2][11], plik[65], msg[256];
new Trie:recNick;

public plugin_init() {
	register_plugin("Statystyki Graczy", "1.0", "naXe");

	register_clcmd("say /czas", "PokazCzas");
	register_clcmd("say /top15", "Top15");
	register_clcmd("say /rank", "RankStats");
}

public plugin_natives() register_native("playerGetTime", "_PobierzCzas", 1);
public _PobierzCzas(id) return czas_gracza[id] + get_user_time(id, 1);

public plugin_cfg() {
	recNick = TrieCreate();
	get_mapname(mapa, 63);
	info = SQL_MakeDbTuple("xxx", "xxx", xxx", "730803_staty");

	new error, szError[128];
	new Handle:hConn = SQL_Connect(info, error, szError, 127);
	if(error) {
		log_amx("Blad: %s", szError);
		return;
	}
	new Handle: query = SQL_PrepareQuery(hConn, "CREATE TABLE IF NOT EXISTS `StatystykiGraczy` (\
		`id` int(11) NOT NULL AUTO_INCREMENT,\
		`Nick` varchar(32) NOT NULL,\
		`SteamID` varchar(35) NOT NULL,\
		`IP` varchar(16) NOT NULL,\
		`Ostatnie` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\
		`Czas` int(10) NOT NULL,\
		`Zabicia` int(10) NOT NULL,\
		`Zyczenia` int(10) NOT NULL,\
		`Polaczenia` int(10) NOT NULL,\
		PRIMARY KEY (`id`)\
	)");
	SQL_Execute(query)
	SQL_FreeHandle(query);
	SQL_FreeHandle(hConn);
}

public plugin_end() SQL_FreeHandle(info);

public PokazCzas(id) {
	new czas = _PobierzCzas(id);
	new d = czas / 86400;
	new h = czas % 86400 / 3600;
	new m = czas % 3600 / 60;

	ColorChat(id, 0, "^4[CzasGry]^1 Spedziles na serwerze^3 %i^1 d%s,^3 %i^1 godzin%s^3 %i^1 minut%s", d, d == 1 ? "zien" : "ni", h, h == 1 ? "e" : (1 < h < 5) ? "y," : ",", m, m == 1 ? "e" : (1 < m < 5) ? "y" : "");
	return 1;
}

public Top15(id) {
	new menu = menu_create("Top 15", "HandleTop");
	menu_additem(menu, "Top 15 budyniow");
	menu_additem(menu, "Top 15 zyczen");
	menu_additem(menu, "Top 15 czasow");
	menu_setprop(menu, 4, "Wyjdz");
	menu_display(id, menu);
	return 1;
}

public HandleTop(id, menu, item) {
	if(item == -3) return;

	static data[2];
	data[0] = id;
	data[1] = item;

	SQL_FormatQuery("SELECT * FROM `StatystykiGraczy` ORDER BY `%s` DESC LIMIT 15", item == 1 ? "Zyczenia" : item == 2 ? "Czas" : "Zabicia");
	SQL_ThreadQuery(info, "PobierzTop", gszQuery, data, 2);
}

public PobierzTop(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	new id = data[0];
	if(!is_user_connected(id) && !is_user_connecting(id)) return;
	if(!SQL_NumRows(query)) return;

	new buffer[2048], szName[41], iLen, i;
	iLen = copy(buffer[iLen], 2047-iLen, "<body bgcolor=#FFFFFF><table width=100%% cellpadding=2 cellspacing=0 border=0>");
	if(0 <= data[1] <= 1) {
		iLen += formatex(buffer[iLen], 2047-iLen, "<tr align=center bgcolor=#52697B><th width=5%%> # <th width=35%% align=left> Gracz: <th width=20%%> %s:", data[1] ? "Zyczen" : "Budyniow");
		while(SQL_MoreResults(query)) {
			SQL_ReadResult(query, SQL_FieldNameToNum(query, "Nick"), szName, 40);
			replace_all(szName, 40, "<", "&lt;");
			replace_all(szName, 40, ">", "&gt;");

			iLen += formatex(buffer[iLen], 2047-iLen, "<tr align=center%s><td> %i. <td align=left> %s <td> %i", (i%2) ? " bgcolor=#A4BED6" : "", i+1, szName, SQL_ReadResult(query, SQL_FieldNameToNum(query, data[1] == 1 ? "Zyczenia" : "Zabicia")));

			i++;
			SQL_NextRow(query);
		}
	}
	if(data[1] == 2) {
		iLen += formatex(buffer[iLen], 2047-iLen, "<tr align=center bgcolor=#52697B><th width=5%%> # <th width=35%% align=left> Gracz: <th width=20%%> Czas gry:");
		while(SQL_MoreResults(query)) {
			SQL_ReadResult(query, SQL_FieldNameToNum(query, "Nick"), szName, 40);
			replace_all(szName, 40, "<", "&lt;");
			replace_all(szName, 40, ">", "&gt;");

			new czas = SQL_ReadResult(query, SQL_FieldNameToNum(query, "Czas"));

			iLen += formatex(buffer[iLen], 2047-iLen, "<tr align=center%s><td> %i. <td align=left> %s <td> %i d %i h %i m", (i%2) ? " bgcolor=#A4BED6" : "", i+1, szName, czas / 86400, czas % 86400 / 3600, czas % 3600 / 60);

			i++;
			SQL_NextRow(query);
		}
	}
	iLen += copy(buffer[iLen], 2047-iLen, "</table></body>");
	show_motd(id, buffer, "Top 15")
}

public RankStats(id) {
	new menu = menu_create("Rank Stats:", "HandleRankStats");
	menu_additem(menu, "Twoj rank budyniow");
	menu_additem(menu, "Twoj rank zyczen");
	menu_additem(menu, "Twoj rank czasu");
	menu_setprop(menu, 4, "Wyjdz");
	menu_display(id, menu);
	return 1;
}
	
public HandleRankStats(id, menu, item) {
	if(item == -3) return;

	new data[2];
	data[0] = id;
	data[1] = item;

	SQL_FormatQuery("SELECT COUNT(*) FROM `StatystykiGraczy` WHERE `%s` >= %i", item == 2 ? "Czas" : item == 1 ? "Zyczenia" : "Zabicia", item == 2 ? _PobierzCzas(id) : item == 1 ? zyczenia_gracza[id] : budynie_gracza[id]);
	SQL_ThreadQuery(info, "PobierzRank", gszQuery, data, 2);	
}

public PobierzRank(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	new id = data[0];
	if(!is_user_connected(id) && !is_user_connecting(id)) return;

	if(0 <= data[1] <= 1) ColorChat(id, 0, "^4[RANK]^1 Masz^3 %i^1 %s zajmujesz^3 %i^1 miejsce", data[1] ? zyczenia_gracza[id] : budynie_gracza[id], data[1] ? "zyczen" : "budyniow", SQL_ReadResult(query, 0));
	else {
		PokazCzas(id);
		ColorChat(id, 0, "^4[RANK]^1 Zajmujesz^3 %i^1 miejsce", SQL_ReadResult(query, 0));
	}
}

public OnPrisonerTakeWish(id, guard, num) {
	if((jail_get_ct(false) + jail_get_tt(false)) < 4) return 0;

	zyczenia_gracza[id]++;

	SQL_FormatQuery("UPDATE `StatystykiGraczy` SET `Zyczenia` = (`Zyczenia` + 1) WHERE `Nick` = '%s'", nazwa_gracza[id]);
	SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
	return 0;
}

public OnPlayerDie(id, killer) {
	if(!is_user_connected(id) || !is_user_connected(killer) || get_user_team(id) != 2 || get_user_team(killer) != 1 || jail_get_wish() || jail_get_last() || (jail_get_ct(false) + jail_get_tt(false)) < 4) return;

	budynie_gracza[killer]++;
	SQL_FormatQuery("UPDATE `StatystykiGraczy` SET `Zabicia` = (`Zabicia` + 1) WHERE `Nick` = '%s'", nazwa_gracza[killer]);
	SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
}

public OnPlayerConnected(id) {
	get_user_name(id, nazwa_gracza[id], 127);
	get_user_authid(id, sid_gracza[id], 34);
	get_user_ip(id, ip_gracza[id], 15, 1);

	replace_all(nazwa_gracza[id], 127, "\\", "\\\\");
	replace_all(nazwa_gracza[id], 127, "\0", "\\0");
	replace_all(nazwa_gracza[id], 127, "\n", "\\n");
	replace_all(nazwa_gracza[id], 127, "\r", "\\r");
	replace_all(nazwa_gracza[id], 127, "\x1a", "\Z");
	replace_all(nazwa_gracza[id], 127, "'", "\'");
	replace_all(nazwa_gracza[id], 127, "^"", "\^"");
	replace_all(nazwa_gracza[id], 127, "`", "\`");
	replace_all(nazwa_gracza[id], 127, "%", "\%");

	czas_gracza[id] = 0;
	budynie_gracza[id] = 0;
	zyczenia_gracza[id] = 0;
	polaczenia_gracza[id] = 0;

	if(!TrieKeyExists(recNick, nazwa_gracza[id])) {
		TrieSetCell(recNick, nazwa_gracza[id], 1);
		polaczenia_gracza[id]++;
		SQL_FormatQuery("UPDATE `StatystykiGraczy` SET `Polaczenia` = (`Polaczenia` + 1) WHERE `Nick` = '%s';", nazwa_gracza[id]);
		SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
	}
	static data[1]; data[0] = id;
	SQL_FormatQuery("SELECT * FROM `StatystykiGraczy` WHERE `Nick` = '%s'", nazwa_gracza[id]);
	SQL_ThreadQuery(info, "PobierzDane", gszQuery, data, 1);
}

public client_infochanged(id) {
	if(!is_user_connected(id)) return;

	new name[128]; get_user_info(id, "name", name, 127);
	if(equal(name, nazwa_gracza[id])) return;

	replace_all(name, 127, "\\", "\\\\");
	replace_all(name, 127, "\0", "\\0");
	replace_all(name, 127, "\n", "\\n");
	replace_all(name, 127, "\r", "\\r");
	replace_all(name, 127, "\x1a", "\Z");
	replace_all(name, 127, "'", "\'");
	replace_all(name, 127, "^"", "\^"");
	replace_all(name, 127, "`", "\`");
	replace_all(name, 127, "%", "\%");
	formatex(nazwa_gracza[id], 127, name);
}

public PobierzDane(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
	new id = data[0];

	if(!is_user_connected(id) && !is_user_connecting(id)) return;
	if(SQL_NumRows(query)) {
		budynie_gracza[id] += SQL_ReadResult(query, SQL_FieldNameToNum(query, "Zabicia"));
		zyczenia_gracza[id] += SQL_ReadResult(query, SQL_FieldNameToNum(query, "Zyczenia"));
		czas_gracza[id] += get_user_time(id, 1) + SQL_ReadResult(query, SQL_FieldNameToNum(query, "Czas"));
		polaczenia_gracza[id] += SQL_ReadResult(query, SQL_FieldNameToNum(query, "Polaczenia"));
	} else {
		SQL_FormatQuery("INSERT INTO `StatystykiGraczy` (`Nick`, `SteamID`, `IP`, `Ostatnie`, `Czas`, `Zabicia`, `Zyczenia`, `Polaczenia`) VALUES ('%s', '%s', '%s', NOW(), %i, 0, 0, 1)", nazwa_gracza[id], sid_gracza[id], ip_gracza[id], get_user_time(id, 1));
		//SQL_FormatQuery("INSERT INTO `StatystykiGraczy` (`Nick`, `SteamID`, `IP`) VALUES ('%s', '%s', '%s')", nazwa_gracza[id], sid_gracza[id], ip_gracza[id]);
		SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
	}
	get_time("%d.%m.%Y", czas[0], 10);
	get_time("%H:%M", czas[1], 5);

	formatex(plik, 64, "addons/amxmodx/logs/polaczenia/%s.log", czas[0]);
	format(msg, 255, "[%s] Nick: %s | IP: %s | SID: %s | Godzina: %s", mapa, nazwa_gracza[id], ip_gracza[id], sid_gracza[id], czas[1]);
	write_file(plik, msg, -1);

	ColorChat(0, 0, "^1 Gracz^3 %s^1 (^3%s^1) dolaczyl do gry. (Polaczen:^3 %i^1).", nazwa_gracza[id], getStatus(id), polaczenia_gracza[id]);
}

public OnPlayerDisconnected(id) {
	SQL_FormatQuery("UPDATE `StatystykiGraczy` SET `Czas` = `Czas` + %i, `Ostatnie` = NOW() WHERE `Nick` = '%s'", get_user_time(id, 1), nazwa_gracza[id]);
	SQL_ThreadQuery(info, "ZapiszDane", gszQuery);
}

public ZapiszDane(failstate, Handle:query, error[], errnum, data[], size) {
	if(failstate != 0) {
		log_amx("<Zapytanie> Blad: %s", error);
		return;
	}
}

stock getStatus(id) {
	new status[20]
	if(polaczenia_gracza[id] <= 19) status = "Nowy";
	else if(20 <= polaczenia_gracza[id] <= 59) status = "Poczatkujacy"
	else if(60 <= polaczenia_gracza[id] <= 149) status = "Gracz";
	else if(150 <= polaczenia_gracza[id] <= 339) status = "Zaawansowany";
	else if(340 <= polaczenia_gracza[id] <= 599) status = "Wszechobecny";
	else if(600 <= polaczenia_gracza[id] <= 799) status = "No Lifer";
	else if(800 <= polaczenia_gracza[id] <= 1399) status = "Serwer narkotykiem";
	else if(1400 <= polaczenia_gracza[id] <= 1699) status = "Uzalezniony na maxa";
	else if(1700 <= polaczenia_gracza[id] <= 1999) status = "Madafaker";
	else if(polaczenia_gracza[id] >= 2000) status = "Jol Madafaker";

	return status;
}

stock SQL_FormatQuery(szQuery[], ...) vformat(gszQuery, 767, szQuery, 2);

Last edited by ObeliX; 02-05-2019 at 19:35.
ObeliX is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 07:25.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode