#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <engine>
#include <fakemeta>
#include <fun>
#include <cstrike>
#define UnlockBlock(%1) ( entity_set_int( %1, EV_INT_iuser1, 0 ) )
#define UnsetEntMover(%1) ( entity_set_int( %1, EV_INT_iuser3, 0 ) )
#define UnsetLastMover(%1) ( entity_set_int( %1, EV_INT_iuser4, 0 ) )
#define PLUGIN "BB Beepites Gatlo"
#define VERSION "1.0"
#define AUTHOR "IrOn"
#define ADMINLEVEL ADMIN_RCON
#define MAXKOCKA 50
new kord1[MAXKOCKA+1][3];
new kord2[MAXKOCKA+1][3];
new osszeskocka=0;
new kockafajl[256];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /beepites", "BeepitesGatloMenu")
register_touch("func_wall", "player", "FwdPlayerTouchWall");
register_clcmd("say /noclipbe", "noclipbe")
register_clcmd("say /noclipki", "noclipki")
}
public noclipbe(id)
if(get_user_flags(id) & ADMINLEVEL)
set_user_noclip(id,1)
public noclipki(id)
if(get_user_flags(id) & ADMINLEVEL)
set_user_noclip(id,0)
public plugin_cfg()
{
get_configsdir(kockafajl,255)
new mapname[51];
get_mapname(mapname, 50)
format(kockafajl,255,"%s/beepites/%s.ini",kockafajl, mapname)
Kockafajlbeolvasas();
}
public FwdPlayerTouchWall(ent, id) {
if(is_user_alive(id))
{
static targetName[32];
entity_get_string(ent, EV_SZ_targetname, targetName, charsmax(targetName));
new porigin[3];
get_user_origin(id, porigin, 0)
if(equal(targetName, ""))
{
for(new i=1;i<=osszeskocka;i++)
{
if(kozott(porigin[0], kord1[i][0], kord2[i][0]) && kozott(porigin[1], kord1[i][1], kord2[i][1]) && kozott(porigin[2], kord1[i][2], kord2[i][2]))
{
UnlockBlock(ent)
set_pev(ent,pev_rendermode,kRenderNormal)
engfunc( EngFunc_SetOrigin, ent, Float:{ 0.0, 0.0, 0.0 } );
UnsetLastMover(ent);
UnsetEntMover(ent);
}
}
}
}
}
stock bool:kozott(value,this,this2)
{
if((this<this2&&value>=this&&value<=this2)||(this>this2&&value<=this&&value>=this2))
return true
return false
}
public BeepitesGatloMenu(id)
{
if(get_user_flags(id) & ADMINLEVEL)
{
new menu = menu_create( "\rBeepites Gatlo Menu:", "BeepitesGatloMenu_handler" );
menu_additem( menu, "\rUj kocka letrehozasa", "1", 0 );
menu_additem( menu, "\rJelenlegi kockak(torleshez)", "2", 0 );
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
else
{
ColorChat(id, RED, "Sajnalom, ezt a menut te nem nyithatod meg!")
}
}
public BeepitesGatloMenu_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
Ujkockamenu(id)
}
case 2:
{
Jelenlegikockakmenu(id)
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public Jelenlegikockakmenu(id)
{
if(get_user_flags(id) & ADMINLEVEL)
{
new szoveg[512], s[5];
new menu = menu_create( "\rKocka torlese:", "Jelenlegikockakmenu_handler" );
menu_additem( menu, "\wVissza a fomenube", "0", 0);
for(new i=1;i<=osszeskocka;i++)
{
num_to_str(i, s, 4)
format(szoveg, 511, "\r%d %d %d %d %d %d",kord1[i][0],kord1[i][1],kord1[i][2],kord2[i][0],kord2[i][1],kord2[i][2])
menu_additem( menu, szoveg, s, 0 );
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
else
{
ColorChat(id, RED, "Sajnalom, ezt a menut te nem nyithatod meg!")
}
}
public Jelenlegikockakmenu_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
if(key == 0)
BeepitesGatloMenu(id)
else
Kockafajlmentes(key)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public Ujkockamenu(id)
{
if(get_user_flags(id) & ADMINLEVEL)
{
if(osszeskocka >= MAXKOCKA)
{
ColorChat(id, RED, "Elerted a limitet!")
BeepitesGatloMenu(id);
}
else
{
new szoveg[512];
new menu = menu_create( "\rUj kocka letrehozasa:", "Ujkockamenu_handler" );
format(szoveg, 511, "\r1. kordinata: %d %d %d",kord1[osszeskocka+1][0],kord1[osszeskocka+1][1],kord1[osszeskocka+1][2])
menu_additem( menu, szoveg, "1", 0 );
format(szoveg, 511, "\r2. kordinata: %d %d %d",kord2[osszeskocka+1][0],kord2[osszeskocka+1][1],kord2[osszeskocka+1][2])
menu_additem( menu, szoveg, "2", 0 );
menu_additem( menu, "\wMentes a fajlba", "3", 0 );
menu_additem( menu, "\wVissza a fomenube", "4", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
}
else
{
ColorChat(id, RED, "Sajnalom, ezt a menut te nem nyithatod meg!")
}
}
public Ujkockamenu_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
get_user_origin(id, kord1[osszeskocka+1],0)
}
case 2:
{
get_user_origin(id, kord2[osszeskocka+1],0)
}
case 3:
{
if((kord1[osszeskocka+1][0] == 0 && kord1[osszeskocka+1][1] == 0 && kord1[osszeskocka+1][2] == 0) || (kord2[osszeskocka+1][0] == 0 && kord2[osszeskocka+1][1] == 0 && kord2[osszeskocka+1][2] == 0))
{
ColorChat(id, RED, "Az egyik kordinata meg nincs megadva!")
}
else
{
osszeskocka++;
Kockafajlmentes(0);
ColorChat(id, RED, "Hozzaadva!")
}
}
}
Ujkockamenu(id)
if(key == 4)
BeepitesGatloMenu(id)
return PLUGIN_HANDLED;
}
public Kockafajlmentes(torles)
{
new file = fopen(kockafajl,"w+")
if(file)
{
for(new i = 1;i<=osszeskocka;i++)
{
if(i!=torles)
{
fprintf(file, "%d %d %d %d %d %d^n",kord1[i][0],kord1[i][1],kord1[i][2],kord2[i][0],kord2[i][1],kord2[i][2])
}
}
fclose(file);
if(torles)
{
kord1[osszeskocka][0] = 0;
kord1[osszeskocka][1] = 0;
kord1[osszeskocka][2] = 0;
kord2[osszeskocka][0] = 0;
kord2[osszeskocka][1] = 0;
kord2[osszeskocka][2] = 0;
osszeskocka--;
}
Kockafajlbeolvasas();
}
}
public Kockafajlbeolvasas()
{
new file = fopen(kockafajl,"r")
if(file)
{
osszeskocka=0;
new beolvasott[512];
new parsedkord[6][32];
while(fgets(file,beolvasott,511))
{
osszeskocka++;
parse(beolvasott,parsedkord[0],31,parsedkord[1],31,parsedkord[2],31,parsedkord[3],31,parsedkord[4],31,parsedkord[5],31)
kord1[osszeskocka][0] = str_to_num(parsedkord[0])
kord1[osszeskocka][1] = str_to_num(parsedkord[1])
kord1[osszeskocka][2] = str_to_num(parsedkord[2])
kord2[osszeskocka][0] = str_to_num(parsedkord[3])
kord2[osszeskocka][1] = str_to_num(parsedkord[4])
kord2[osszeskocka][2] = str_to_num(parsedkord[5])
}
fclose(file);
}
}