#include <amxmodx>
#define PLUGIN "Cheater Report System"
#define VERSION "1.0"
#define AUTHOR "mforce"
new const PREFIX[] = "ReportSystem"
// A megadott másodperc múlva lehet újra jelenteni. ( tizedestört )
#define JELENT_IDOKOZ 120.0
// HA SQL-t szeretnél használni, vedd ki a # elől a //-t és írd be az adatokat lentebb. ( alapból logba ment. )
//#define SQL
#if defined SQL
#include <sqlx>
new Handle:g_SqlTuple
new const SQL_INFO[][] = {
"127.0.0.1", // Host
"username", // User
"password", // Password
"database" // Database
}
#endif
new csalo;
new bool:jelenthet[33] = true;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("cheater_report_system", AUTHOR, FCVAR_SERVER | FCVAR_SPONLY);
register_clcmd("say /jelent", "playermenu")
register_clcmd("say_team /jelent", "playermenu")
register_clcmd("Indok", "jelentok");
set_task(172.0, "jelenteshez", 0, _, _, "b");
}
public jelenteshez() {
ChatColor(0, "^4[%s]^1 A csalók jelentéséhez írd be: ^3/jelent", PREFIX)
}
public client_authorized(id) {
jelenthet[id] = true;
}
public client_disconnect(id) {
if(task_exists(id)) remove_task(id);
}
public playermenu(id) {
if(jelenthet[id]) {
new temp[128]
formatex(temp, charsmax(temp), "\r[%s] \wCsaló jelentése by %s^nVálassz játékost!\y", AUTHOR, PREFIX)
new menu = menu_create( temp, "playermenu_handler" );
new players[32], pnum, tempid;
new szName[32], szUserId[32];
get_players( players, pnum, "ch" );
for ( new i; i<pnum; i++ ) {
tempid = players[i];
if(tempid != id) {
get_user_name( tempid, szName, charsmax( szName ) );
formatex( szUserId, charsmax( szUserId ), "%d", get_user_userid( tempid ) );
menu_additem( menu, szName, szUserId, 0 );
}
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_BACKNAME, "Vissza");
menu_setprop(menu, MPROP_NEXTNAME, "Következő");
menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
menu_display( id, menu, 0 );
}
else ChatColor(id, "^4[%s]^1 Várnod kell még, hogy újra tudj jelenteni.", PREFIX)
}
public playermenu_handler( id, menu, item ) {
if ( item == MENU_EXIT ) {
menu_destroy( menu );
return PLUGIN_HANDLED;
}
new szData[6], szName[64];
new _access, item_callback;
menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
new userid = str_to_num( szData );
csalo = find_player( "k", userid ); // flag "k" : find player from userid
client_cmd(id, "messagemode Indok")
menu_destroy( menu );
return PLUGIN_HANDLED;
}
public jelentok(id) {
new indok[32]
read_args(indok, charsmax(indok))
remove_quotes(indok)
if(strlen(indok) < 2) {
ChatColor(id, "^4[%s]^1 Az indoknak legalább 2 karakternek kell lennie.", PREFIX)
}
else {
new kuldo[32], jelentett[32], jelentettid[32], jelentettip[32]
get_user_name(id, kuldo, charsmax(kuldo))
get_user_name(csalo, jelentett, charsmax(jelentett))
get_user_authid(csalo, jelentettid, charsmax(jelentettid))
get_user_ip(csalo, jelentettip, charsmax(jelentettip), 1)
#if defined SQL
new text[512], ido[64];
get_time("%Y.%m.%d %H:%M:%S", ido, charsmax(ido));
formatex(text, charsmax(text), "INSERT INTO `jelentesek` (`ido`, `kuldo`, `jelentett`, `steamid`, `ip`, `indok`) VALUES (^"%s^", ^"%s^", ^"%s^", ^"%s^", ^"%s^", ^"%s^");", ido, kuldo, jelentett, jelentettid, jelentettip, indok)
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text)
#else
log_to_file("jelentesek.txt", "%s jelentette %s-t. Indok: %s. SteamID: %s IP: %s", kuldo, jelentett, indok, jelentettid, jelentettip);
#endif
ChatColor(id, "^4[%s]^1 Sikeresen jelentetted^3 %s ^1-t,^3 %s^1 indokkal.", PREFIX, jelentett, indok)
jelenthet[id] = false;
set_task(JELENT_IDOKOZ, "jelentenged", id)
new players[32], pnum, tempid;
get_players( players, pnum, "ch" );
for ( new i; i<pnum; i++ ) {
tempid = players[i];
if(get_user_flags(tempid) & ADMIN_KICK) {
ChatColor(tempid, "^4* %s ^1jelentette ^3%s ^1-t. Indok: ^3%s ^4*", kuldo, jelentett, indok)
ChatColor(tempid, "^4*^1 Kötelességed megnézni! ^4*")
}
}
}
}
public jelentenged(id) {
jelenthet[id] = true;
}
stock ChatColor(const id, const szMessage[], any:...) {
static pnum, players[32], szMsg[190], IdMsg;
vformat(szMsg, charsmax(szMsg), szMessage, 3);
if(!IdMsg) IdMsg = get_user_msgid("SayText");
if(id) {
if(!is_user_connected(id)) return;
players[0] = id;
pnum = 1;
}
else get_players(players, pnum, "ch");
for(new i; i < pnum; i++) {
message_begin(MSG_ONE, IdMsg, .player = players[i]);
write_byte(players[i]);
write_string(szMsg);
message_end();
}
}
#if defined SQL
public plugin_cfg() {
new Query[512];
g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3])
formatex(Query, charsmax(Query), "CREATE TABLE IF NOT EXISTS `jelentesek` (`ido` varchar(64) NOT NULL,`kuldo` varchar(32) NOT NULL,`jelentett` varchar(32) NOT NULL,`steamid` varchar(32) NOT NULL,`ip` varchar(32) NOT NULL,`indok` varchar(32) NOT NULL,`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
SQL_ThreadQuery(g_SqlTuple,"createTableThread", Query)
}
public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
if(FailState == TQUERY_CONNECT_FAILED)
set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
else if(FailState == TQUERY_QUERY_FAILED)
set_fail_state("Query Error");
if(Errcode)
log_amx("Hibat dobtam: %s",Error);
}
public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
log_amx("%s", Error)
return
}
}
public plugin_end() {
SQL_FreeHandle(g_SqlTuple)
}
#endif