Witajcie, mam problem z pluginem głowię sie już trochę i sam nie wiem w czym problem.
Mianowicie chodzi o to że ten plugin (niżej code) robi screen'y ale potem nie banuje tego gracza amxbans. Plugin jest połączony z bazą danych na stronie pokazuje że zrobił ss'y no ale w amxbans już cisza nic się nie dzieje i w trakcie robienia screenów w grze po prostu po zrobieniu ss gracza wywala ale nie pisze nic od amxbans i gracz może na nowo wejść na serwer.
Link do pluginu ScreenShoot https://amxx.pl/topi...hoty-zapis-sql/
Link do pluginu amxbans https://amxx.pl/topi...alacja-amxbans/
#include <amxmodx>
#include <amxmisc>
#define SQL_ZAPIS
#define TASK_SCREEN 56323
enum _:cvary { HOST, USER, PASS, DBNAME, MAXSS, INTERVAL, SITE, BAN, BANTIME, BANREASON }
new const tag[] = "[USS]";
new gCvars[cvary];
new gScreens[33];
new g_SyncHud;
#if defined SQL_ZAPIS
#include <sqlx>
new gMapa[33];
new gNazwa[101];
new Handle: g_SqlTuple;
public SqlInit() {
new t[4][33];
get_pcvar_string(gCvars[HOST], t[HOST], 32);
get_pcvar_string(gCvars[USER], t[USER], 32);
get_pcvar_string(gCvars[PASS], t[PASS], 32);
get_pcvar_string(gCvars[DBNAME], t[DBNAME], 32);
g_SqlTuple = SQL_MakeDbTuple(t[HOST], t[USER], t[PASS], t[DBNAME]);
if(g_SqlTuple == Empty_Handle)
set_fail_state("Nie mozna utworzyc uchwytu do polaczenia");
new iErr, szError[32];
new Handle:link = SQL_Connect(g_SqlTuple, iErr, szError, 31);
if(link == Empty_Handle) {
log_amx("Error (%d): %s", iErr, szError);
set_fail_state("Brak polaczenia z baza danych");
}
new Handle:query;
query = SQL_PrepareQuery(link,
"CREATE TABLE IF NOT EXISTS `screeny` ( \
`id` int(11) NOT NULL auto_increment, \
`uname` varchar(32) NOT NULL, \
`aname` varchar(32) NOT NULL, \
`uip` varchar(20) NOT NULL, \
`usid` varchar(32) NOT NULL, \
`map` varchar(32) NOT NULL, \
`time` int(15) NOT NULL, \
`type` int(1) NOT NULL, \
`amount` int(3) NOT NULL, \
`server` varchar(100) NOT NULL, \
PRIMARY KEY (`id`) \
)");
SQL_Execute(query);
SQL_FreeHandle(query);
}
public Query(failstate, Handle:query, error[]) {
if(failstate != TQUERY_SUCCESS) {
log_amx("SQL Insert error: %s", error);
return;
}
}
#endif
public plugin_init() {
register_plugin("Ultimate ScreenShot", "1.0", "byCZEK");
gCvars[HOST] = register_cvar("ss_hostname", "");
gCvars[USER] = register_cvar("ss_username", "");
gCvars[PASS] = register_cvar("ss_password", "");
gCvars[DBNAME] = register_cvar("ss_database", "");
gCvars[MAXSS] = register_cvar("ss_mscreens", "10");
gCvars[INTERVAL] = register_cvar("ss_interval", "1.0");
gCvars[SITE] = register_cvar("ss_sitemap", "http://amxx.pl");
gCvars[BAN] = register_cvar("ss_banplayer", "1");
gCvars[BANTIME] = register_cvar("ss_bantime", "0");
gCvars[BANREASON] = register_cvar("ss_banreason", "Wrzuc screeny na forum");
register_concmd("amx_ss", "ZrobScreena", ADMIN_BAN, "<authid, nick or #userid> [screens] [type 0/1]");
register_concmd("amx_screen", "ZrobScreena", ADMIN_BAN, "<authid, nick or #userid> [screens] [type 0/1]");
g_SyncHud = CreateHudSyncObj();
#if defined SQL_ZAPIS
get_mapname(gMapa, 32);
get_user_name(0, gNazwa, 100);
SqlInit();
#endif
}
public client_putinserver(id) {
gScreens[id] = 0;
}
public ZrobScreena(id, level, cid) {
if(!cmd_access(id, level, cid, 2)) {
return PLUGIN_HANDLED;
}
new t[3][33], pid;
read_argv(1, t[0], 32);
read_argv(2, t[1], 3);
read_argv(3, t[2], 3);
new Screens = str_to_num(t[1]);
new Type = str_to_num(t[2]);
new MScreens = get_pcvar_num(gCvars[MAXSS]);
if(!Screens) Screens = 5;
if(Screens > MScreens) {
console_print(id, "%s Nie mozesz zrobic tylu screenow.", tag);
return PLUGIN_HANDLED;
}
pid = cmd_target(id, t[0]);
if(!pid)
return PLUGIN_HANDLED;
new dane[4];
new Float: Interval = get_pcvar_float(gCvars[INTERVAL]);
dane[0] = id;
dane[1] = pid;
dane[2] = Type;
dane[3] = Screens;
gScreens[pid] = Screens;
set_task(Interval, "ZrobScreena_", TASK_SCREEN + pid, dane, 4, "a", Screens);
#if defined SQL_ZAPIS
new z[4][33], buffer[512];
get_user_name(id, z[0], 32);
get_user_name(pid, z[1], 32);
get_user_ip(pid, z[2], 32, 1);
get_user_authid(pid, z[3], 32);
replace_all(z[0], 32, "'", "\'");
replace_all(z[0], 32, "`", "\`");
replace_all(z[1], 32, "'", "\'");
replace_all(z[1], 32, "`", "\`");
formatex(buffer, charsmax(buffer), "INSERT INTO `screeny` VALUES (NULL, '%s', '%s', '%s', '%s', '%s', %d, %d, %d, '%s');", z[1], z[0], z[2], z[3], gMapa, get_systime(), Type, Screens, gNazwa);
SQL_ThreadQuery(g_SqlTuple, "Query", buffer);
#endif
return PLUGIN_HANDLED;
}
public ZrobScreena_(dane[4]) {
new id = dane[0];
new pid = dane[1];
new tid = dane[2];
new t[6][33];
get_user_name(id, t[0], 32);
get_user_name(pid, t[1], 32);
get_user_ip(pid, t[2], 20, 1);
get_time("%m/%d/%Y - %H:%M:%S", t[3], 31);
set_hudmessage(0, 255, 0, -1.0, 0.3, 0, 0.25, 1.0, 0.0, 0.0, 4);
ShowSyncHudMsg(pid, g_SyncHud, "** %s **^n%s", t[1], t[3]);
client_print(0, print_chat, "%s Admin: %s zrobil screen graczowi: %s (%s) %s %s", tag, t[0], t[1], t[2], t[3], tid ? "TGA" : "BMP");
client_cmd(pid, tid ? "screenshot" : "snapshot");
if(get_pcvar_num(gCvars[BAN]) && !--gScreens[pid]) {
new czas = get_pcvar_num(gCvars[BANTIME]);
get_pcvar_string(gCvars[BANREASON], t[4], 32);
get_pcvar_string(gCvars[SITE], t[5], 32);
console_print(pid, "%s ==========================================", tag);
console_print(pid, "%s Admin %s zrobil Ci screeny", tag, t[0]);
console_print(pid, "%s Ilosc: %d", tag, dane[3]);
console_print(pid, "%s Typ: %s", tag, tid ? "TGA" : "BMP");
console_print(pid, "%s Umiesc screeny na: %s", tag, t[5]);
console_print(pid, "%s ==========================================", tag);
client_cmd(id, "amx_ban %d #%d ^"%s^"", czas, get_user_userid(pid), t[4]);
}
}
Użytkownik MisterMalpa edytował ten post 24.01.2018 13:38


Dodatki SourceMod












