/* / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * [Rejestracja Nicku www] Skrypt do rejestracji nicku na stronie www. wersja 0.1 Cvary: amx_rejestracja_host - host (Do bazy danych) amx_rejestracja_user - nazwa uzytkownika (Do bazy danych) amx_rejestracja_password - haslo (Do bazy danych) amx_rejestracja_db - nazwa bazy danych (Do bazy danych) amx_rejestracja_site - strona na ktorej znajduje sie skrypt amx_rejestracja_maxwarn - maksymalna ilosc pomylek przy wpisywaniu hasel amx_rejestracja_seckick - czas na wpisanie hasla (po tym czasie KICK) amx_rejestracja_name - blokuje zmiane nicka na serwerze by F.E.A.R.&Many Edit: kyku - - - - - - - - - - - - - - - Logi zmian. 0.1 - wydanie | _ _| * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / * / */ #include #include #include #include #define NAZWA "[Rejestracja Nicku www]" #define WERSJA "0.1" #define AUTOR "kyku" #define tag "RNW" #define table "users" new Handle:g_SqlX new Handle:g_SqlConnection new g_error[512] new warn[33]; new zalogowany[33]; public plugin_init(){ register_plugin(NAZWA, WERSJA, AUTOR) register_cvar("amx_rejestracja_host", "localhost"); // Host register_cvar("amx_rejestracja_user", "root"); // Uzytkownik register_cvar("amx_rejestracja_password", ""); // Haslo register_cvar("amx_rejestracja_db", "fragtrade"); // Nazwa bazy danych register_cvar("amx_rejestracja_site", "fragtrade.net"); // Strona na ktorej jest skrypt register_cvar("amx_rejestracja_maxwarn", "3"); // Maksymalna ilosc pomylek przy wpisywaniu hasel register_cvar("amx_rejestracja_seckick", "10"); // Czas na wpisanie hasla (po tym czasie KICK) register_cvar("amx_rejestracja_name", "1"); // Blokuje zmiane nicka na serwerze (by F.E.A.R.&Many) register_message(get_user_msgid("SayText"), "message") register_clcmd("say", "login") set_task(0.1, "check_sql") return PLUGIN_CONTINUE } public message() { new arg[32] get_msg_arg_string(2, arg, 31) if(containi(arg,"name")!=-1 && get_cvar_num("amx_rejestracja_name")) { return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public client_infochanged(id) // by F.E.A.R.&Many edit: kyku { new newname[32],oldname[32] get_user_info(id, "name", newname,31) get_user_name(id,oldname,31) if(!is_user_connected(id) || is_user_bot(id)) return PLUGIN_CONTINUE; if(!equali(newname, oldname) && get_cvar_num("amx_rejestracja_name")) { set_user_info(id,"name",oldname) ColorChat(id, GREEN, "[%s]^x01 Zakaz zmiany nicka!", tag); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } public client_authorized(id){ warn[id] = 0; zalogowany[id] = 0; set_task(3.0, "client_start", id) } public client_disconnect(id){ warn[id] = 0; zalogowany[id] = 0; } public client_start(id){ new data[1]; data[0] = id-1337; new query[1001]; new name[31]; get_user_name(id, name, 30); format(query,1000,"SELECT pass FROM `%s` WHERE name='%s'",table,name) SQL_ThreadQuery(g_SqlX,"QueryHandle",query, data, 1) } public delaykick(id){ if(id>1000){ id-=1000; if(is_user_connected(id)){ new strona[64]; get_cvar_string("amx_rejestracja_site", strona, 63); server_cmd("kick #%d ^"Zarejestruj sie na %s^"",get_user_userid(id), strona) } } else if(is_user_connected(id)){ new name[33]; get_user_name(id, name, 32); ColorChat(id, GREEN, "[%s]^x01 Gracz %s zostal wyrzucony przez serwer. Powod: Czas na zalogowanie skonczyl sie.",tag , name) server_cmd("kick #%d ^"Przekroczono czas na zalogowanie sie!^"",get_user_userid(id)) } } public login(id){ new haslo[192] read_args(haslo,191) if ( containi (haslo, "/login") != -1){ if(zalogowany[id]){ ColorChat(id, GREEN, "[%s]^x01 Jestes juz zalogowany.",tag ); return PLUGIN_HANDLED; } replace_all(haslo, 191, "\", "") replace_all(haslo, 191, "/login ", "") remove_quotes(haslo) new name[32]; get_user_name(id, name, 31); new query[1001] format(query,1000,"SELECT pass, name FROM `%s` WHERE name='%s'",table,name) SQL_ThreadQuery(g_SqlX,"LoginH",query, haslo,192) return PLUGIN_HANDLED; } if(!zalogowany[id]){ ColorChat(id, GREEN, "[%s]^x01 By pisac musisz byc zalgowanym! (Wpisz:^x03 /login haslo ^x01)",tag ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } public LoginH(FailState,Handle:Query,Error[],Errcode,Data[],DataSize){ if(FailState == TQUERY_CONNECT_FAILED){ return log_amx("[Rejestracja]: Brak polaczenia z baza danych.") }else if(FailState == TQUERY_QUERY_FAILED){ return log_amx("[Rejestracja]: Zle zbudowane zapytanie") }else if(Errcode){ return log_amx("[Rejestracja]: Blad w zapytaniu: %s",Error) } new haslo[50]; new nick[33]; new tab = SQL_FieldNameToNum(Query, "pass"); new tab2 = SQL_FieldNameToNum(Query, "name"); if(SQL_MoreResults(Query)) { SQL_ReadResult(Query, tab, haslo, 49); SQL_ReadResult(Query, tab2, nick, 32); new id = get_user_index(nick); if(is_user_connected(id)){ if(equal(Data,haslo)){ ColorChat(id, GREEN, "[%s]^x01 Zalogowales sie.",tag ); warn[id] = 0; zalogowany[id] = 1; if(task_exists(id)) remove_task(id); } else { warn[id]++; ColorChat(id, GREEN, "[%s]^x01 Podano zle haslo. (%d/%d)",tag , warn[id], get_cvar_num("amx_rejestracja_maxwarn")); if(warn[id] >= get_cvar_num("amx_rejestracja_maxwarn")){ server_cmd("kick #%d ^"Za duzo prob wpisania hasla.^"",get_user_userid(id)); warn[id] = 0; } } } } return PLUGIN_CONTINUE } public QueryHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { new id=Data[0]; if(FailState == TQUERY_CONNECT_FAILED){ return log_amx("[Rejestracja]: Brak polaczenia z baza danych.") }else if(FailState == TQUERY_QUERY_FAILED){ return log_amx("[Rejestracja]: Zle zbudowane zapytanie") }else if(Errcode){ return log_amx("[Rejestracja]: Blad w zapytaniu: %s",Error) } if(id < 0){ id += 1337; if(is_user_connected(id)){ if(SQL_NumResults(Query) <= 0){ new strona[64]; get_cvar_string("amx_rejestracja_site", strona, 63); ColorChat(id, GREEN, "[%s]^x01 By grac na serwerze musisz sie zarejestrowac na stronie serwera.",tag ) ColorChat(id, GREEN, "[%s]^x01 Wejdz na %s i zarejestruj sie!",tag , strona) set_task(1.5, "delaykick", id+1000); } else { new ilesekund = get_cvar_num("amx_rejestracja_seckick"); if(ilesekund < 10){ ilesekund = 10; } new str[11]; num_to_str(ilesekund, str, 10) ColorChat(id, GREEN, "[%s]^x01 Twoj nick jest juz zarejestrowany. Zaloguj sie wpisujac^x03 /login haslo",tag ) ColorChat(id, GREEN, "[%s]^x01 Masz %s sekund na zalogowanie sie.",tag , str) set_task(str_to_float(str), "delaykick", id); } } } return PLUGIN_CONTINUE } public plugin_end() { SQL_FreeHandle(g_SqlConnection) return } public check_sql() { new errorcode new host[64], user[64], pass[64], db[64]; get_cvar_string("amx_rejestracja_host", host, 63); get_cvar_string("amx_rejestracja_user", user, 63); get_cvar_string("amx_rejestracja_password", pass, 63); get_cvar_string("amx_rejestracja_db", db, 63); g_SqlX = SQL_MakeDbTuple(host, user, pass, db) g_SqlConnection = SQL_Connect(g_SqlX,errorcode,g_error,511); if (!g_SqlConnection) { console_print(0,"[Rejestracja]: Nie mozna polaczyc sie z baza danych.") return log_amx("[Rejestracja]: Nie mozna polaczyc sie z baza danych.") } new query_create[1001] format(query_create,1000,"CREATE TABLE IF NOT EXISTS `%s`(`id` int(11) NOT NULL auto_increment,`name` varchar(100) NOT NULL default '',`pass` varchar(100) NOT NULL default '',PRIMARY KEY (`id`));",table) SQL_ThreadQuery(g_SqlX,"QueryHandle",query_create) console_print(0,"[AMXX SQL] Connected!") return PLUGIN_CONTINUE }