Here I created two small zones for tests..
PHP Code:
#include <amxmodx>
#include <engine>
#include <ColorChat>
#define PLUGIN "HNS Where"
#define VERSION "1.0"
#define MAX_ZONES 2
#define MAX_SOUNDS 1
#pragma semicolon 1
new bool:RoofMap = false;
new bool:Sound[33];
new bool:Message[33];
new cvar_tag;
static const Where_Ent[] = "trigger_where";
new const Float: Mins[MAX_ZONES][3] =
{
{-445.2, 386.7, 1025.0},
{-477.7, -1112.5, 641.5}
};
new const Float: Maxs[MAX_ZONES][3] =
{
{-323.2, 444.7, 1027.0},
{-455.7, -1090.5, 643.5}
};
new const Types[MAX_ZONES] =
{
1, 2
};
new const Messages[MAX_ZONES+1][] =
{
"",
"Boxes, pop dog",
"Box, umbrellas"
};
public plugin_precache()
{
new mapName[33];
get_mapname(mapName, 32);
if(!equali(mapName, "awp_rooftops", 12) || equali(mapName, "awp_rooftops_remake", 19))
{
RoofMap = false;
}
else
RoofMap = true;
}
public plugin_init()
{
if(!RoofMap)
{
new pluginName[33];
format(pluginName, 32, "%s dezactivated", PLUGIN);
register_plugin(pluginName, VERSION, "Rap");
pause("ade");
}
else if(RoofMap)
{
register_plugin(PLUGIN, VERSION, "Rap");
register_clcmd( "say", "hook_say" );
register_touch(Where_Ent, "player", "FwdTriggerTouch");
register_concmd("amx_where", "cmdWhere", ADMIN_ALL, "<name>");
cvar_tag = register_cvar("where_tag", "[Where]");
}
}
public CreateWhereZones()
{
for (new i = 0; i < MAX_ZONES; i++)
{
CreateTrigger(Types[i], Mins[i], Maxs[i]);
}
}
CreateTrigger(const EntType, const Float:flMins[3], const Float:flMaxs[3])
{
new iEntity = create_entity("info_target");
if(!is_valid_ent(iEntity))
{
return 0;
}
entity_set_string(iEntity, EV_SZ_classname, Where_Ent);
entity_set_int(iEntity, EV_INT_iuser1, EntType);
entity_set_int(iEntity, EV_INT_movetype, MOVETYPE_NONE);
entity_set_int(iEntity, EV_INT_solid, SOLID_TRIGGER);
entity_set_size(iEntity, flMins, flMaxs);
return iEntity;
}
public DeleteWhereZones()
{
//HERE I REALLY NEED HELP!
//HERE I REALLY NEED HELP!
//HERE I REALLY NEED HELP!
//HERE I REALLY NEED HELP!
}
public WhereMenu(id)
{
new WhereMenuMsg[64];
formatex(WhereMenuMsg, 63, "\rHide'N'Seek Where");
new MenuWhere = menu_create(WhereMenuMsg, "WhereMenuHandler", 0);
new wheremsg[64], wheresound[64];
formatex(wheremsg, 63, "\yMessages: %s", Message[id] ? "\w Activated" : "\d Dezactivated");
formatex(wheresound, 63, "\ySounds: %s", Sound[id] ? "\w Activated" : "\d Dezactivated");
menu_additem(MenuWhere, wheremsg, "1", 0);
menu_additem(MenuWhere, wheresound, "2", 0);
menu_setprop(MenuWhere, MPROP_EXITNAME, "\yExit");
menu_display(id, MenuWhere, 0);
return 1;
}
public WhereMenuHandler(id, menu, item)
{
if(item == MENU_EXIT)
{
return 1;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key) {
case 1: {
WhereMsg(id);
WhereMenu(id);
}
case 2: {
WhereSound(id);
WhereMenu(id);
}
}
return 1;
}
public WhereMsg(id)
{
new tag[32];
get_pcvar_string(cvar_tag, tag, sizeof(tag) -1);
if(Message[id])
{
Message[id] = false;
ColorChat(id, RED, "^x04%s^x01 The messages are now^x03 dezactivated^x01!", tag);
return PLUGIN_HANDLED;
}
else if(!Message[id])
{
Message[id] = true;
ColorChat(id, BLUE, "^x04%s^x01 The messages are now^x03 activated^x01!", tag);
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public WhereSound(id)
{
new tag[32];
get_pcvar_string(cvar_tag, tag, sizeof(tag) -1);
if(Sound[id])
{
Sound[id] = false;
ColorChat(id, RED, "^x04%s^x01 The sounds are now^x03 dezactivated^x01!", tag);
return PLUGIN_HANDLED;
}
else if(!Sound[id])
{
Sound[id] = true;
ColorChat(id, BLUE, "^x04%s^x01 The sounds are now^x03 activated^x01!", tag);
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public FwdTriggerTouch(const iEntity, const id)
{
if(is_user_ok(id))
{
static Type;
Type = entity_get_int(iEntity, EV_INT_iuser1);
new Players[32], name[32], tag[32];
new PlayersNum, player;
get_pcvar_string(cvar_tag, tag, sizeof(tag) -1);
get_user_name(id, name, sizeof(name) - 1);
get_players(Players, PlayersNum, "ch");
for(new i=0; i<PlayersNum; i++)
{
player = Players[i];
if(Message[player])
{
ColorChat(player, RED, "^x04%s^x03 %s^x01 is now[^x04 %s^x01]!",tag, name, Messages[Type]);
}
if(Sound[player])
{
client_cmd(player,"spk vox/doop");
}
}
DeleteWhereZones();
}
return 0;
}
public cmdWhere(id)
{
CreateWhereZones();
return 1;
}
public hook_say(id)
{
static args[192], command[192];
read_args(args,charsmax(args));
if(!args[0]) {
return PLUGIN_CONTINUE;
}
remove_quotes(args[0]);
if(equal(args, "/where", strlen("/where")))
{
replace(args,charsmax(args), "/", "" );
formatex( command, charsmax(command) , "amx_%s", args );
client_cmd(id, command);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
stock is_user_ok(id)
{
if(is_user_alive(id) && is_user_connected(id) && !is_user_bot(id))
return 1;
return 0;
}