PHP Code:
#include <amxmodx>
#include <reapi>
#include <hamsandwich>
#pragma semicolon 1
#define MAX_BUTTONS 30
new ButtonIDs;
new g_iButtons[MAX_BUTTONS];
public plugin_init() {
register_plugin("Buton Engel", "1.0", "PurposeLess");
register_clcmd("say /info", "button_info");
RegisterHam(Ham_Use, "func_button", "RHam_Use");
LoadButtons();
}
public RHam_Use(ent, id)
{
if(get_user_team(id) == 1)
{
if(get_godmode())
{
client_print(id, print_center, "[LeaderGaming] You cannot use buttons while godmode is on");
return 4;
}
if(ent == g_iButtons[ButtonIDs])
{
client_print(id, print_center, "[LeaderGaming] You cannot use this button");
return 4;
}
}
return 1;
}
public LoadButtons()
{
static filename[64], mapname[32];
get_localinfo("amxx_configsdir", filename, charsmax(filename));
get_mapname(mapname, charsmax(mapname));
format(filename, charsmax(filename), "%s/block_buttons/%s.ini", filename, mapname);
new iFileHandle = fopen(filename, "rt");
new sData[128];
if(iFileHandle)
{
while(!feof(iFileHandle))
{
fgets(iFileHandle, sData, charsmax(sData));
trim(sData);
g_iButtons[ButtonIDs] = str_to_num( sData );
ButtonIDs++;
}
fclose(iFileHandle);
}
else
{
set_fail_state("Couldn't read from a file");
}
}
public get_godmode()
{
new a=0, b=0;
for(new id = 1; id <= MAX_CLIENTS; id++)
{
if(!is_user_connected(id)) continue;
new team = get_user_team(id);
if(team == 2 && is_user_alive(id))
{
a++;
if(!get_entvar(id, var_takedamage))
{
b++;
}
}
}
return (a > 0 && b > 0) ? 1:0;
}
public button_info(id)
{
if(get_user_flags(id) & ADMIN_RCON)
{
new menu = menu_create("Button Menu", "button_info2");
menu_additem(menu, "\yFind Button ID", "1");
menu_additem(menu, "\yBlock Button ID in map", "2");
//menu_additem(menu, "\yUnBlock Button ID in map", "3"); ; I Couldn't have done.
menu_setprop(menu, MPROP_EXITNAME, "Exit");
menu_display(id, menu);
}
return PLUGIN_HANDLED;
}
public button_info2(id, menu, item)
{
if(item == MENU_EXIT)
{
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_color(id, id, "^1[^4LeaderGaming^1] ^3Button ID^1: ^4%d", ent);
}
menu_display(id, menu);
}
case 2: {
new ent, aim;
get_user_aiming(id, ent, aim);
if(ent)
{
static filename[64], mapname[32], buttonID[10];
get_localinfo("amxx_configsdir", filename, charsmax(filename));
get_mapname(mapname, charsmax(mapname));
format(filename, charsmax(filename), "%s/block_buttons/%s.ini", filename, mapname);
format(buttonID, charsmax(buttonID), "%d", ent);
write_file(filename, buttonID);
}
}
}
return PLUGIN_HANDLED;
}