#include #include #include #include #include #include #include #define PLUGIN "Jail Gangi" #define VERSION "1.0" #define AUTHOR "Cypis" #define MAX_PEOPLE 5 #define MIN_ZYCZENIA 10 enum GANG_FLAGS { USER = 0, ADMINS, ASSIST } new const user_ranga[][] = {"", " (Zalozyciel)", " (Zastepca)"}; new GANG_FLAGS:user_flags[33]; new user_gang[33]; new bool:user_wczytalo[33]; new bool:create_gang[33]; new nazwa_gracza[33][35]; new Handle:info; new gszQuery[512+256]; new Trie:gnGangName new Trie:gnGangIle; new user_zyczenia[33]; new user_bunty[33]; new bool:nielicz; new msgid_sayText; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); RegisterHam(Ham_Killed, "player", "SmiercGraczaPost", 1); register_clcmd("say /rankg", "RankStats"); register_clcmd("say /topg", "Top15"); register_clcmd("say /gang", "MenuGang"); register_clcmd("say /gangi", "MenuGang"); register_clcmd("nazwa_gangu", "CreateNameGang"); register_clcmd("say_team", "cmdSayGang"); msgid_sayText = get_user_msgid("SayText"); register_message(msgid_sayText,"handleSayText"); } public plugin_cfg() { new pcvar_host, pcvar_user, pcvar_pass, pcvar_db; new szHost[32], szUser[32], szPass[32], szDb[32]; pcvar_host = register_cvar("jail_gang_host", "ip"); pcvar_user = register_cvar("jail_gang_user", "login"); pcvar_pass = register_cvar("jail_gang_pass", "haslo"); pcvar_db = register_cvar("jail_gang_db", "database"); get_pcvar_string(pcvar_host, szHost, 31); get_pcvar_string(pcvar_user, szUser, 31); get_pcvar_string(pcvar_pass, szPass, 31); get_pcvar_string(pcvar_db, szDb, 31); info = SQL_MakeDbTuple(szHost, szUser, szPass, szDb); new error, szError[128]; new Handle:hConn = SQL_Connect(info, error, szError, 127); if(error){ log_amx("[Gangi] Error: %s", szError); return; } gnGangName = TrieCreate(); gnGangIle = TrieCreate(); new Handle:query; SQL_FormatQuery("CREATE TABLE IF NOT EXISTS `GangName` (`id` int(10) NOT NULL AUTO_INCREMENT, `Name` 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 `GangUser` (`id` int(10) NOT NULL DEFAULT '0', `Name` varchar(32) NOT NULL, `Zabicia` int(10) NOT NULL DEFAULT '0', `Zyczenia` int(10) NOT NULL DEFAULT '0', `Flaga` int(5) NOT NULL DEFAULT '0', PRIMARY KEY (`Name`));"); query = SQL_PrepareQuery(hConn, gszQuery); SQL_Execute(query) SQL_FreeHandle(query); query = SQL_PrepareQuery(hConn,"SELECT * FROM `GangName` 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[10]; while(SQL_MoreResults(query)) { num_to_str(SQL_ReadResult(query, 0), szInt, 9); SQL_ReadResult(query, 1, szNazwa, 31); TrieSetCell(gnGangIle, szInt, SQL_ReadResult(query, 2)); // numer gangu przypisany do ilosci ludzi w nim TrieSetString(gnGangName, szInt, szNazwa); // numeru gangu przypisana do nazwy gangu SQL_NextRow(query); } SQL_FreeHandle(query); } SQL_FreeHandle(hConn); } //RANK STATS public RankStats(id) { new menu = menu_create("Rank Stats:", "Handel_RankStats"); menu_additem(menu, "Twoj rank Buntów"); menu_additem(menu, "Twoj rank Zyczen"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu); } public Handel_RankStats(id, menu, item) { if(item == MENU_EXIT) return; new data[2]; data[0] = id; data[1] = item; SQL_FormatQuery("SELECT COUNT(*) FROM `GangUser` WHERE `%s` >= %d;", item? "Zyczenia": "Zabicia", item? user_zyczenia[id]: user_bunty[id]); SQL_ThreadQuery(info, "PobierzRank", gszQuery, data, 2); } public PobierzRank(failstate, Handle:query, error[], errnum, data[], size){ if(failstate != TQUERY_SUCCESS){ log_amx(" Error: %s", error); return; } new id = data[0]; if(!is_user_connected(id) && !is_user_connecting(id)) return; ColorChat(id, TEAM_COLOR, "^x04[RANK]^x01 Masz ^x03%i^x01 %s zajmujesz miejsce ^x03%i", data[1]? user_zyczenia[id]: user_bunty[id], data[1]? "zyczen": "buntow", SQL_ReadResult(query, 0)); } //TOP 15 public Top15(id) { new menu = menu_create("Top 15:", "Handel_Top"); menu_additem(menu, "Top 15 Buntów"); menu_additem(menu, "Top 15 Zyczen"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu); } public Handel_Top(id, menu, item) { if(item == MENU_EXIT) return; new data[2]; data[0] = id; data[1] = item; SQL_FormatQuery("SELECT * FROM `GangUser` ORDER BY `%s` DESC LIMIT 15", item? "Zyczenia": "Zabicia"); SQL_ThreadQuery(info, "PobierzTop", gszQuery, data, 2); } public PobierzTop(failstate, Handle:query, error[], errnum, data[], size){ if(failstate != TQUERY_SUCCESS){ log_amx(" Error: %s", error); return; } new id = data[0]; if(!is_user_connected(id) && !is_user_connecting(id)) return; if(SQL_NumRows(query)) { new buffer[2048], szName[41], iLen=0, i=0; iLen = copy(buffer[iLen], 2047-iLen, ""); iLen += formatex(buffer[iLen], 2047-iLen, "
# Gracz: Najwiecej %s", (data[1]? "йcze