Veteran Member
|
12-11-2020
, 09:08
problem
|
#1
|
hi guys. i have this plugin. sometimes, when i scan a player and he leave, he get banned. but after this, when a player leave server, he get banned too.
PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <ColorChat>
#include <nvault>
#include <hamsandwich>
#define PLUGIN "WarGods"
#define VERSION "3.0"
#define AUTHOR "lexzor"
#define ADMIN_FLAG ADMIN_LEVEL_D
new const tag[] = "JoiNET"
new const reason[] = "Leaving while was under a WarGods request"
new bool:Scanning[32]
new scanned[10]
new iTeam[32]
new SyncHudMessage;
new message[256]
new vaultdata[256]
new const nVaultName[] = "wargods"
new nVault
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("amx_scan", "scan")
register_clcmd("amx_clean", "clean")
register_clcmd("amx_info", "infowargods")
register_clcmd("amx_resetscans", "resetscans")
register_clcmd("amx_getscans", "getscans")
SyncHudMessage = CreateHudSyncObj( );
nVault = nvault_open(nVaultName)
if ( nVault == INVALID_HANDLE )
set_fail_state("[WARGODS] NVault file can't be opened!")
}
public scan(id){
if(get_user_flags(id) & ADMIN_FLAG){
new arg[32]
read_argv(1, arg, charsmax(arg))
new player = cmd_target(id, arg, 2)
if (player){
new aName[32]
new pName[32]
get_user_name(id, aName, charsmax(aName))
get_user_name(player, pName, charsmax(pName))
Scanning[player] = true
ColorChat(0, GREEN, "^x04[%s]^x01 Admin^x04 %s^x01 is requesting an WarGods from^x04 %s^x01!", tag, aName, pName)
set_task( 1.0, "hudmsg", player, _, _, "b", 0 );
iTeam[player] = get_user_team(player)
if(is_user_alive(player))
user_kill(player)
cs_set_user_team(player, CS_TEAM_SPECTATOR)
} else if (!player){
ColorChat(id, GREEN, "^x04[%s]^x01 Player is not online!", tag)
}
}
}
public clean(id){
if(get_user_flags(id) & ADMIN_FLAG){
new arg[32]
read_argv(1, arg, charsmax(arg))
new player = cmd_target(id, arg, 2)
if(player && Scanning[player]){
new AuthID[MAX_PLAYERS + 1][34]
new aName[32], pName[32], szScanned[10], day[10], month[10], year[10], hour[10], minute[10], seconds[10]
get_time("%d", day, charsmax(day))
get_time("%m", month, charsmax(month))
get_time("%Y", year, charsmax(year))
get_time("%H", hour, charsmax(hour))
get_time("%M", minute, charsmax(minute))
get_time("%S", seconds, charsmax(seconds))
Scanning[player] = false
switch(iTeam[player]){
case 1: cs_set_user_team(player, CS_TEAM_T)
case 2: cs_set_user_team(player, CS_TEAM_CT)
}
remove_task(player)
get_user_name(player, pName, charsmax(pName))
get_user_name(id, aName, charsmax(aName))
get_user_authid(player, AuthID[player], charsmax(AuthID[]))
nvault_get(nVault, AuthID[player], vaultdata, charsmax(vaultdata))
replace_all(vaultdata, charsmax(vaultdata), "#", " ")
parse(vaultdata, szScanned, charsmax(szScanned))
if(containi(aName, " "))
replace_all(aName, charsmax(aName), " ", "@")
scanned[player] = str_to_num(szScanned)
scanned[player]++
formatex(vaultdata, charsmax(vaultdata), "%i#%s#%s#%s#%s#%s#%s#%s", scanned[player], day, month, year, hour, minute, seconds, aName)
nvault_set(nVault, AuthID[player], vaultdata)
ColorChat(0, GREEN, "^x04[%s]^x01 Player^x04 %s^x01 is clean and he has been scanned^x04 %i times^x01!", tag, pName, scanned[player])
} else if (player && !Scanning[player]){
new nonscanned[32]
get_user_name(player, nonscanned, charsmax(nonscanned))
ColorChat(id, GREEN, "^x04[%s]^x01 Player^x04 %s^x01 was not asked for a WarGods!", tag, nonscanned)
} else if (!player){
ColorChat(id, GREEN, "^x04[%s]^x01 Player is not online!", tag)
}
}
}
public infowargods(id){
if(get_user_flags(id) & ADMIN_FLAG){
new arg[32]
read_argv(1, arg, charsmax(arg))
new player = cmd_target(id, arg, 2)
if (player){
new AuthID[MAX_PLAYERS + 1][34]
get_user_authid(player, AuthID[player], charsmax(AuthID[]))
new pName[32], szScanned[32], adminname[10], day[10], month[10], year[10], hour[10], minute[10], seconds[10]
nvault_get(nVault, AuthID[player], vaultdata, charsmax(vaultdata))
replace_all(vaultdata, charsmax(vaultdata), "#", " ")
parse(vaultdata, szScanned, charsmax(szScanned), day, charsmax(day), month, charsmax(month), year, charsmax(year), hour, charsmax(hour), minute, charsmax(minute), seconds, charsmax(seconds), adminname, charsmax(adminname))
if(containi(adminname, "@"))
replace_all(adminname, charsmax(adminname), "@", " ")
szScanned[player] = str_to_num(vaultdata)
get_user_name(player, pName, charsmax(pName))
if (szScanned[player] > 0){
ColorChat(id, GREEN, "^x04[%s]^x01 Player^x04 %s^x01 has been scanned^x04 %i times^x01!", tag, pName, szScanned[player])
ColorChat(id, GREEN, "^x04[%s]^x01 Last scan has been made by admin:^x04 %s^x01.",tag, adminname)
ColorChat(id, GREEN, "^x04[%s]^x01 Last scan data:^x04 %s^x01.^x04%s^x01.^x04%s^x01 at^x04 %s^x01:^x04%s^x01:%^x04%s^x01.", tag, day, month, year, hour, minute, seconds)
} else if (szScanned[player] == 0 ){
ColorChat(id, GREEN, "^x04[%s]^x01 Player^x04 %s^x01 has not been scanned!", tag, pName)
}
} else if ( !player ){
ColorChat(id, GREEN, "^x04[%s]^x01 Player is not online!", tag)
}
}
}
public hudmsg(id){
if (Scanning[id] == true){
new name2[32]
get_user_name(id, name2, charsmax(name2))
formatex(message, charsmax(message), "Good luck, %s!^nYou have to do an WarGods and show it to our admin.^nIf you leave you will be permanently banned.", name2)
set_hudmessage( 255, 0, 0, -1.0 , -1.0, 0, 0.0, 1.0, 0.1, 0.1, -1 );
ShowSyncHudMsg( id, SyncHudMessage, message );
}
}
public client_disconnected(id){
if (Scanning[id] == true){
new name[32]
new AuthID[MAX_PLAYERS + 1][34]
get_user_authid(id, AuthID[id], charsmax(AuthID[]))
get_user_name(id, name, charsmax(name))
remove_task(id)
ColorChat(0, GREEN, "^x03[%s]^x01 Player^x03 %s^x01 disconnected during a^x03 WarGods request^x01 and^x03 he was banned^x01 for^x03 2 days^x01!", tag, name)
ColorChat(0, GREEN, "^x03[%s]^x01 SteamID:^x03 %s^x01.", tag, AuthID[id])
server_cmd("amx_addban ^"%s^" ^"%s^" 2880 ^"%s^"", name[id], AuthID[id], reason)
}
}
public resetscans(id){
if( get_user_flags(id) & ADMIN_IMMUNITY ){
new arg[32]
read_argv(1, arg, charsmax(arg))
new player = cmd_target(id, arg, 2)
if(player){
new name[32]
new AuthID[MAX_PLAYERS + 1][34]
get_user_authid(player, AuthID[id], charsmax(AuthID[]))
get_user_name(player, name, charsmax(name))
nvault_remove(nVault, AuthID[id])
ColorChat(id, GREEN, "^x04[%s]^x01 Data of player^x04 %s^x01 has been reseted!", tag, name)
} else if (!player){
ColorChat(id, GREEN, "^x04[%s]^x01 Player is not online!", tag)
}
}
}
public getscans(id){
if(get_user_flags(id) & ADMIN_FLAG){
new arg[32]
read_argv(1, arg, charsmax(arg))
new szScanned, adminname[10], day[10], month[10], year[10], hour[10], minute[10], seconds[10]
nvault_get(nVault, arg, vaultdata, charsmax(vaultdata))
replace_all(vaultdata, charsmax(vaultdata), "#", " ")
parse(vaultdata, szScanned, charsmax(szScanned), day, charsmax(day), month, charsmax(month), year, charsmax(year), hour, charsmax(hour), minute, charsmax(minute), seconds, charsmax(seconds), adminname, charsmax(adminname))
if(containi(adminname, "@"))
replace_all(adminname, charsmax(adminname), "@", " ")
szScanned = str_to_num(vaultdata)
if (szScanned > 0){
ColorChat(id, GREEN, "^x04[%s]^x01 SteamID^x04 %s^x01 has been scanned^x04 %i times^x01!", tag, arg, szScanned)
ColorChat(id, GREEN, "^x04[%s]^x01 Last scan has been made by admin:^x04 %s^x01.",tag, adminname)
ColorChat(id, GREEN, "^x04[%s]^x01 Last scan data:^x04 %s^x01.^x04%s^x01.^x04%s^x01 at^x04 %s^x01:^x04%s^x01:%^x04%s^x01.", tag, day, month, year, hour, minute, seconds)
} else if (szScanned == 0 ){
ColorChat(id, GREEN, "^x04[%s]^x01 SteamID^x04 %s^x01 has not been scanned!", tag, arg)
}
}
}
also, can u guys give me some advice about how can i improve and optimize the code above and my scripting skiils?
|
|