Hello friends, I have still a problem about block buttons and unblock from file.
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#pragma semicolon 1
new filename[128];
new g_iButtonCounter;
new g_iButtons[900];
public plugin_init() {
register_plugin("Buton Engelleme", "1.2", "PurposeLess");
register_clcmd("say /buton", "cmd_buton");
register_clcmd("say /button", "cmd_buton");
RegisterHam(Ham_Use, "func_button", "RHam_Use");
new mapname[32];
get_mapname(mapname, charsmax(mapname));
get_localinfo("amxx_configsdir", filename, charsmax(filename));
format(filename, charsmax(filename), "%s/buton_engelleme/%s.ini", filename, mapname);
LoadButtons();
}
public cmd_buton(id)
{
if(get_user_flags(id) & ADMIN_RCON)
{
new menu = menu_create("Button Menu", "cmd_buton2");
menu_additem(menu, "\yButon ID Ogren^n", "1");
menu_additem(menu, "\yButonu Yasakla", "2");
menu_additem(menu, "\yButonun Yasagini Kaldir", "3");
menu_setprop(menu, MPROP_EXITNAME, "Cikis");
menu_display(id, menu);
}
return PLUGIN_HANDLED;
}
public cmd_buton2(id, menu, item)
{
if(item == MENU_EXIT || !(get_user_flags(id) & ADMIN_RCON))
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
static data[6], access, callback;
menu_item_getinfo(menu, item, access, data, charsmax(data), _, _, callback);
new key = str_to_num(data);
switch(key)
{
case 1: {
new ent, aim;
get_user_aiming(id, ent, aim);
if(ent)
{
client_print(id, print_center, "[LeaderGaming] Buton ID : %d", ent);
}
menu_display(id, menu);
}
case 2: {
new ent, aim;
get_user_aiming(id, ent, aim);
if(ent)
{
if(is_button_blocked(ent))
{
client_print_color(id, id, "^1[^4LeaderGaming^1] ^3Bu buton ^4zaten ^3yasaklanmis^1.");
}
else
{
new ID[4];
format(ID, charsmax(ID), "%d", ent);
//fputs(filename, ID, true); WRONG COMMAND
// What is correct?
LoadButtons();
client_print_color(id, id, "^1[^4LeaderGaming^1] ^3Bu buton ^4yasaklanmistir^1. ^3Buton ID^1: ^4%d", ent);
}
}
menu_display(id, menu);
}
case 3: {
new ent, aim;
get_user_aiming(id, ent, aim);
if(ent)
{
if(!is_button_blocked(ent))
{
client_print_color(id, id, "^1[^4LeaderGaming^1] ^3Bu buton ^4zaten ^3yasaklanmamis^1.");
}
else
{
DeleteButton(ent);
client_print_color(id, id, "^1[^4LeaderGaming^1] ^3Bu butonun yasagi ^4kaldirilmistir^1. ^3Buton ID^1: ^4%d", ent);
}
}
menu_display(id, menu);
}
}
return PLUGIN_HANDLED;
}
public RHam_Use(ent, id)
{
if(get_user_team(id) == 1)
{
if(get_godmode())
{
client_print(id, print_center, "[LeaderGaming] Godmode varken bu butonu kullanamazsin.");
return HAM_SUPERCEDE;
}
if(is_button_blocked(id))
{
client_print(id, print_center, "[LeaderGaming] Bu butonu kullanamazsin.");
return HAM_SUPERCEDE;
}
}
return HAM_IGNORED;
}
public LoadButtons()
{
new filehandle = fopen(filename, "rt");
new data[128];
if(filehandle)
{
while(!feof(filehandle))
{
fgets(filehandle, data, charsmax(data));
trim(data);
if(equal(data, " "))
{
replace(data, charsmax(data), " ","");
continue;
}
g_iButtons[g_iButtonCounter] = str_to_num(data);
if(!pev_valid(g_iButtons[g_iButtonCounter]))
{
continue;
}
g_iButtonCounter++;
}
fclose(filehandle);
}
else
{
set_fail_state("Couldn't read from a file");
}
}
public DeleteButton(ent)
{
new filehandle = fopen(filename, "rt");
new data[128], PurposeLess[600];
if(filehandle)
{
while(!feof(filehandle))
{
fgets(filehandle, data, charsmax(data));
trim(data);
g_iButtons[g_iButtonCounter] = str_to_num(data);
if(g_iButtons[g_iButtonCounter] == ent)
{
continue;
}
copy(g_iButtons, charsmax(g_iButtons), PurposeLess);
}
fclose(filehandle);
}
filehandle = fopen(filename, "rt");
if(filehandle)
{
while(!feof(filehandle))
{
fgets(filehandle, data, charsmax(data));
trim(data);
g_iButtons[g_iButtonCounter] = str_to_num(data);
replace_all(data, charsmax(data), g_iButtons[g_iButtonCounter], "");
//fprintf(filename, PurposeLess);
//AGAIN WRONG NUMBER [ Puts all buttons to file again ]
}
fclose(filehandle);
}
}
public get_godmode()
{
new a=0, b=0;
for(new id = 1; id <= 32; id++)
{
if(!is_user_connected(id)) continue;
new team = get_user_team(id);
if(team == 2 && is_user_alive(id))
{
a++;
if(!pev(id, pev_takedamage))
{
b++;
}
}
}
return (a > 0 && b > 0) ? 1:0;
}
bool:is_button_blocked(ent)
{
for(new i = 0; i < g_iButtonCounter; i++)
{
if(!g_iButtons[i]) continue;
if(ent== g_iButtons[i]) return true;
}
return false;
}