#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine>
#include <xs>
#define PLUGIN "Karacsonyi egosor"
#define VERSION "1.0"
#define AUTHOR "Idarav"
#define CLASSNAME "karacsonyi_ego"
#define MAX_EGOSOR 64
#define MAX_EGO 64
#define EGO_FX kRenderFxNoDissipation
#define EGO_RENDER kRenderGlow
#define TASK_VILLOG 125768
#define TASK_HUD 284471
new egosor[MAX_EGOSOR][MAX_EGO]
new egosor_szam[MAX_EGOSOR]
new egosorok
new pr[MAX_EGOSOR]
new pr_gyakorisag[MAX_EGOSOR]
new pr_status[MAX_EGOSOR]
new pr_folyamat[MAX_EGOSOR]
new pr_folyamat2[MAX_EGOSOR]
//menü
new menu_egosor[33]
new menu_egosor_oldal[33]
new bool: menu_villog[33]
new menu_villog_t[33]
//Mentés
new file[128]
new programok[][] = {
"Nincs",
"egyszerre villogas",
"felvaltott villogas",
"elejetol a vegeig",
"elejetol a vegeig es vissza",
"random",
"random2",
"szinek szerint"
}
new models[][] = {
"sprites/fireworks/bflare.spr",
"sprites/fireworks/gflare.spr",
"sprites/fireworks/oflare.spr",
"sprites/fireworks/pflare.spr",
"sprites/fireworks/rflare.spr",
"sprites/fireworks/tflare.spr",
"sprites/fireworks/yflare.spr"
}
//KEYSMENU
const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /ego", "cmdmenu", ADMIN_IMMUNITY, "Karacsonyi egosorok elhelyezesehez hoz elo egy menut")
register_menu("egosor_menu", KEYSMENU, "cmd_egosormenu")
register_menu("egosor_select_menu", KEYSMENU, "cmd_egosor_select_menu")
register_menu("egosor_program_menu", KEYSMENU, "cmd_egosor_program_menu")
//Mentes
new szDir[64];
new szMap[32];
get_basedir(szDir, 64);
add(szDir, 64, "/configs/egosor");
if (!dir_exists(szDir))
mkdir(szDir);
get_mapname(szMap, 32);
formatex(file, 96, "%s/%s.egosorbyidarav", szDir, szMap);
set_task(2.0, "betoltes", 0)
set_task(0.1, "program", _, _, _, "b")
}
public plugin_precache()
{
for(new i; i<sizeof(models); i++)
if(file_exists(models[i]))
precache_model(models[i])
}
public client_connect(id)
{
menu_egosor[id]=0
menu_egosor_oldal[id]=0
menu_villog[id]=false
menu_villog_t[id]=0
}
public client_disconnect(id)
{
menu_egosor[id]=0
menu_egosor_oldal[id]=0
menu_villog[id]=false
menu_villog_t[id]=0
}
public client_putinserver(id)
{
set_task(20.0, "showhud", id+TASK_HUD)
}
public showhud(id)
{
id-=TASK_HUD
set_hudmessage(170, 212, 255, -1.0, 0.0, 0, 6.0, 8.0)
show_hudmessage(id, "A karacsonyi egesor plugint Idarav keszitette.")
client_print(id, print_console, "** A karacsonyi egesor plugint Idarav keszitette.")
}
public spawnolas(id)
{
new sor = menu_egosor[id]
if(sor != -1 && egosor_szam[sor] >= 64)
{
client_print(id, print_chat, " * Egy egosorban csak %d ego lehet", MAX_EGO)
}else if(sor != -1 && egosorok < sor)
{
client_print(id, print_chat, " * Osszesen csak %d egosor lehet", MAX_EGOSOR)
}else{
new ent = spawn(id)
if(sor==-1)
{
for(new i; i<MAX_EGOSOR; i++)
if(egosor_szam[i] == 0) { sor=(i); break; }
menu_egosor[id]=(sor)
pr[sor]=0
pr_gyakorisag[sor]=1
pr_status[sor]=0
pr_folyamat[sor]=0
pr_folyamat2[sor]=0
egosorok++
}
egosor[sor][egosor_szam[sor]]=ent
egosor_szam[sor]++
set_pev(ent, pev_iuser1, menu_egosor[id])
}
}
public spawn(id)
{
new ent = create_entity("info_target")
if(pev_valid(ent))
{
set_pev(ent,pev_classname,CLASSNAME);
new rmodel = random_num(0, sizeof(models)-1)
engfunc(EngFunc_SetModel,ent, models[rmodel]);
set_pev(ent, pev_iuser2, rmodel)
set_pev(ent,pev_solid,SOLID_NOT);
set_pev(ent,pev_movetype,MOVETYPE_FLY);
set_pev(ent,pev_frame,0);
set_pev(ent,pev_body,0);
set_pev(ent,pev_sequence,0);
set_pev(ent,pev_framerate,1.0);
set_rendering(ent,EGO_FX,0,0,0,EGO_RENDER,255)
new Float:vOrigin[3]
new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],
Float:vTraceEnd[3]
new Float: VOfs[3]
pev(id, pev_origin, vOrigin)
pev(id, pev_view_ofs, VOfs)
xs_vec_add(vOrigin, VOfs, vOrigin)
velocity_by_aim( id, 2000, vTraceDirection );
xs_vec_add( vTraceDirection, vOrigin, vTraceEnd );
engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 );
new Float:fFraction;
get_tr2( 0, TR_flFraction, fFraction );
if ( fFraction < 1.0 )
{
get_tr2( 0, TR_vecEndPos, vTraceEnd );
get_tr2( 0, TR_vecPlaneNormal, vNormal );
}
xs_vec_mul_scalar( vNormal, 3.0, vNormal );
xs_vec_add( vTraceEnd, vNormal, vNewOrigin );
engfunc(EngFunc_SetSize, ent, Float:{ -6.0, -6.0, -6.0 }, Float:{ 6.0, 6.0, 6.0 } );
engfunc(EngFunc_SetOrigin, ent, vNewOrigin );
}else{
client_print(id, print_chat, "******** HIBA (SPAWN) ********");
}
return ent;
}
public autospawn(id, Float:vNewOrigin[3], rmodel )
{
new ent = create_entity("info_target")
if(pev_valid(ent))
{
set_pev(ent,pev_classname,CLASSNAME);
engfunc(EngFunc_SetModel,ent, models[rmodel]);
set_pev(ent, pev_iuser2, rmodel)
set_pev(ent,pev_solid,SOLID_NOT);
set_pev(ent,pev_movetype,MOVETYPE_FLY);
set_pev(ent,pev_frame,0);
set_pev(ent,pev_body,0);
set_pev(ent,pev_sequence,0);
set_pev(ent,pev_framerate,1.0);
set_rendering(ent,EGO_FX,0,0,0,EGO_RENDER,255)
engfunc(EngFunc_SetSize, ent, Float:{ -6.0, -6.0, -6.0 }, Float:{ 6.0, 6.0, 6.0 } );
engfunc(EngFunc_SetOrigin, ent, vNewOrigin );
}else{
client_print(id, print_chat, "******** HIBA (AUTOSPAWN)********");
}
return ent;
}
public nullaz(sor)
{
if(egosor_szam[sor]>0)
{
for(new i; i<MAX_EGO; i++)
{
if(pev_valid(egosor[sor][i]))
remove_entity(egosor[sor][i])
egosor[sor][i] = 0
}
egosor_szam[sor]=0
pr[sor]=0
pr_gyakorisag[sor]=0
pr_status[sor]=0
pr_folyamat[sor]=0
pr_folyamat2[sor]=0
egosorok--
for(new i; i<33; i++)
if( menu_egosor[i] == sor )
menu_egosor[i]=-1
}
}
public delete(id)
{
new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],
Float:vTraceEnd[3]
new Float:vOrigin[3], Float: VOfs[3]
pev( id, pev_origin, vOrigin );
pev( id, pev_view_ofs, VOfs );
xs_vec_add(VOfs, vOrigin, vOrigin)
velocity_by_aim( id, 2000, vTraceDirection );
xs_vec_add( vTraceDirection, vOrigin, vTraceEnd );
engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 );
new Float:fFraction;
get_tr2( 0, TR_flFraction, fFraction );
if ( fFraction < 1.0 )
{
get_tr2( 0, TR_vecEndPos, vTraceEnd );
get_tr2( 0, TR_vecPlaneNormal, vNormal );
}
xs_vec_mul_scalar( vNormal, 0.1, vNormal );
xs_vec_add( vTraceEnd, vNormal, vNewOrigin );
new entinsphere = -1;
new ent
new bool:vanvalami
new Float:mintav
while ((entinsphere = find_ent_in_sphere(entinsphere, vNewOrigin, 50.0)))
{
new class[21]
pev(entinsphere, pev_classname, class, 20)
if(equal(class, CLASSNAME))
{
vanvalami=true
new Float: entorigin[3]
pev(entinsphere, pev_origin, entorigin)
if(get_distance_f(vNewOrigin, entorigin) < mintav || mintav < 0.00001)
{
ent=entinsphere
mintav=get_distance_f(vNewOrigin, entorigin)
}
}
}
if( !vanvalami || !ent )
{
client_print(id, print_chat, "***** NINCS OTT EGO *******");
return ;
}
new sor = pev(ent, pev_iuser1)
nullaz(sor)
}
public delete_select(id)
{
if(menu_egosor[id] >= 0)
nullaz(menu_egosor[id])
else
client_print(id, print_chat, "***** NINCS KIVALASZTVA EGOSOR *******");
}
public delete_all(id)
{
for(new sor; sor<MAX_EGOSOR; sor++)
{
for(new i; i<MAX_EGO; i++)
{
if(pev_valid(egosor[sor][i]))
remove_entity(egosor[sor][i])
egosor[sor][i] = 0
}
pr[sor]=0
pr_gyakorisag[sor]=0
pr_status[sor]=0
pr_folyamat[sor]=0
pr_folyamat2[sor]=0
egosor_szam[sor]=0
}
for(new i; i<33; i++)
menu_egosor[i]=-1
egosorok=0
}
/*=================================
//===== MENÜK
=================================*/
public cmdmenu(id, level, cid)
{
if ( !cmd_access( id, level, cid, 1 ) )
{
return PLUGIN_HANDLED;
}
showmenu(id)
return PLUGIN_HANDLED;
}
/*---------------[ Main Menu ]-------------------------------->>>>>>>>>>>>*/
public showmenu(id)
{
static menu[500], len
len = 0
len += formatex(menu[len], charsmax(menu) - len, "Karacsonyi egosor menu -[by Idarav]^n^n")
if(menu_egosor[id]>egosorok || egosorok==0)
menu_egosor[id]=-1
if(menu_egosor[id]==-1)
{
len += formatex(menu[len], charsmax(menu) - len, "1. Valassz egosort \y[UJ EGOSOR]\w^n")
len += formatex(menu[len], charsmax(menu) - len, "2. Egosor megkezdese^n^n")
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "1. Valassz egosort \y[%d]\d (%d)\w^n", menu_egosor[id]+1, egosor_szam[menu_egosor[id]])
if(egosor_szam[menu_egosor[id]]<MAX_EGO)
len += formatex(menu[len], charsmax(menu) - len, "2. Ego lerakasa / Egosor folytatasa^n^n")
else
len += formatex(menu[len], charsmax(menu) - len, "2. \dEgo lerakasa / Egosor folytatasa\w^n^n")
}
len += formatex(menu[len], charsmax(menu) - len, "3. Egosor eltavolitasa - nezz ra!^n")
len += formatex(menu[len], charsmax(menu) - len, "4. Valasztott egosor eltavolitasa^n")
len += formatex(menu[len], charsmax(menu) - len, "5. Osszes egosor eltavolitasa^n^n")
len += formatex(menu[len], charsmax(menu) - len, "6. \rEgosor programozas\w^n^n")
len += formatex(menu[len], charsmax(menu) - len, "7. Kijelzes \d(Ezzel konnyebb megtalalni az egosorokat) \y[\w%s\y]\w^n^n", (menu_villog[id] ? "ON" : "OFF"))
len += formatex(menu[len], charsmax(menu) - len, "8. Mentes^n")
len += formatex(menu[len], charsmax(menu) - len, "9. Betoltes^n")
len += formatex(menu[len], charsmax(menu) - len, "^n0. Kilepes")
show_menu(id, KEYSMENU, menu, -1, "egosor_menu")
}
public cmd_egosormenu(id, key)
{
switch(key) {
case 0: {
menu_egosor_oldal[id]=0
showmenu_select(id)
}
case 1: {
spawnolas(id)
showmenu(id)
}
case 2: {
delete(id)
showmenu(id)
}
case 3: {
delete_select(id)
showmenu(id)
}
case 4: {
delete_all(id)
showmenu(id)
}
case 5: {
if(menu_egosor[id]==-1)
{
client_print(id, print_chat, " *Valassz ki egy egosort")
showmenu(id)
}else
showmenu_program(id)
}
case 6: {
if(menu_villog[id])
glow_ki(id)
else
glow_be(id)
showmenu(id)
}
case 7: {
mentes(id)
showmenu(id)
}
case 8: {
betoltes(id)
showmenu(id)
}
}
}
/*---------------[ Select Menu ]-------------------------------->>>>>>>>>>>>*/
public showmenu_select(id)
{
static menu[500], len
len = 0
len += formatex(menu[len], charsmax(menu) - len, "Karacsonyi egosor Valaszto menu^n^n")
len += formatex(menu[len], charsmax(menu) - len, "1. \yUJ EGOSOR\w^n")
new select_min = 7*menu_egosor_oldal[id]
new select_max = min(MAX_EGOSOR, select_min+7)
new szam=2
new i
for(i=select_min; i<select_max; i++)
{
if(egosor_szam[i]>0)
{
len += formatex(menu[len], charsmax(menu) - len, "\w%d.\y %d \d(%d)^n", szam, i+1, egosor_szam[i])
szam++
}else{
len += formatex(menu[len], charsmax(menu) - len, "\d%d. %d^n", szam, i+1)
szam++
}
}
if(menu_egosor_oldal[id] < floatround(MAX_EGOSOR/7+0.0, floatround_ceil))
len += formatex(menu[len], charsmax(menu) - len, "^n\w9. Tovabb")
else
len += formatex(menu[len], charsmax(menu) - len, "^n\d9. Tovabb\w")
if(menu_egosor_oldal[id]>0)
len += formatex(menu[len], charsmax(menu) - len, "^n\w0. Vissza")
else
len += formatex(menu[len], charsmax(menu) - len, "^n\w0. Kilepes")
show_menu(id, KEYSMENU, menu, -1, "egosor_select_menu")
}
public cmd_egosor_select_menu(id, key)
{
switch(key) {
case 0: {
menu_egosor[id]=-1
showmenu(id)
return ;
}
case 8: {
menu_egosor_oldal[id]++
showmenu_select(id)
return ;
}
case 9: {
if(menu_egosor_oldal[id]>0)
{
menu_egosor_oldal[id]--
showmenu_select(id)
}else{
showmenu(id)
}
return ;
}
}
new select_min = 7*menu_egosor_oldal[id]
menu_egosor[id] = select_min+key-1
if(egosor_szam[menu_egosor[id]]==0)
menu_egosor[id]=-1
showmenu(id)
}
/*---------------[ ProGraMoZás ]-------------------------------->>>>>>>>>>>>*/
public showmenu_program(id)
{
static menu[500], len
len = 0
len += formatex(menu[len], charsmax(menu) - len, "Karacsonyi egosor \rPROGRAMOZAS\w menu^n^n")
for(new i; i<sizeof(programok); i++)
{
len += formatex(menu[len], charsmax(menu) - len, "\y%d\w. \r%s^n", i+1, programok[i])
}
len += formatex(menu[len], charsmax(menu) - len, "^n\w9. \yGyakorisag: %3.1f sec^n", (pr_gyakorisag[menu_egosor[id]]+0.0)/10)
len += formatex(menu[len], charsmax(menu) - len, "\w0. Kilepes")
show_menu(id, KEYSMENU, menu, -1, "egosor_program_menu")
}
public cmd_egosor_program_menu(id, key)
{
new sor = menu_egosor[id]
if(key < 8)
{
programozas(id, key)
showmenu_program(id)
}
if(key == 8)
{
if(menu_egosor[id]==-1)
{
client_print(id, print_chat, " *Valassz ki egy egosort")
showmenu_program(id)
return ;
}
if(pr_gyakorisag[sor] >= 30)
pr_gyakorisag[sor]=0
pr_gyakorisag[sor]++
showmenu_program(id)
}
if(key == 9)
showmenu(id)
}
/*=================================
//===== PROGRAMOK
=================================*/
/*----------[ ProGraMoK ]----------
-- 1. egyszerre villogás
-- 2. felváltott villogás
-- 3. egyik végéről végig
-- 4. egyik végéről végéig és vissza
-- 5. random
-- 6. random2
-- 7. színek szerint
---------------------------------*/
public programozas(id, prog)
{
new sor = menu_egosor[id]
if(sor==-1)
{
client_print(id, print_chat, " *Valassz ki egy egosort")
return ;
}
pr[sor]=prog
pr_folyamat[sor]=0
pr_folyamat2[sor]=0
pr_status[sor]=0
if(prog == 0)
{
for(new i; i<egosor_szam[sor]; i++)
{
if(pev_valid(egosor[sor][i]))
feny_be(egosor[sor][i])
}
}
}
//-----------------
public program()
{
for(new sor; sor<MAX_EGOSOR; sor++)
{
if(pr[sor])
{
if(pr_status[sor] >= pr_gyakorisag[sor])
{
switch(pr[sor])
{
case 1: {
program1(sor)
}
case 2: {
program2(sor)
}
case 3: {
program3(sor)
}
case 4: {
program4(sor)
}
case 5: {
program5(sor)
}
case 6: {
program6(sor)
}
case 7: {
program7(sor)
}
}
pr_status[sor]=0
}
pr_status[sor]++
}
}
}
public program1(sor)
{
if(pr_folyamat[sor] == 0)
{
for(new i; i<egosor_szam[sor]; i++)
{
if(pev_valid(egosor[sor][i]))
feny_ki(egosor[sor][i])
}
pr_folyamat[sor]=1
}else{
for(new i; i<egosor_szam[sor]; i++)
{
if(pev_valid(egosor[sor][i]))
feny_be(egosor[sor][i])
}
pr_folyamat[sor]=0
}
}
public program2(sor)
{
if(pr_folyamat[sor]==1)
{
for(new i; i<egosor_szam[sor]; i++)
{
if(pev_valid(egosor[sor][i]))
{
if(floatround(i/2+0.0, floatround_floor)*2 == i)
feny_ki(egosor[sor][i])
else
feny_be(egosor[sor][i])
}
}
pr_folyamat[sor]=0
}else{
for(new i; i<egosor_szam[sor]; i++)
{
if(pev_valid(egosor[sor][i]))
{
if(floatround(i/2+0.0, floatround_floor)*2 == i)
feny_be(egosor[sor][i])
else
feny_ki(egosor[sor][i])
}
}
pr_folyamat[sor]=1
}
}
public program3(sor)
{
feny_ki(egosor[sor][pr_folyamat[sor]])
if(pr_folyamat[sor]<egosor_szam[sor]-1)
{
feny_be(egosor[sor][pr_folyamat[sor]]+1)
pr_folyamat[sor]++
}
else
{
feny_be(egosor[sor][0])
pr_folyamat[sor]=0
}
}
public program4(sor)
{
if(pr_folyamat2[sor]==0)
{
feny_ki(egosor[sor][pr_folyamat[sor]])
if(pr_folyamat[sor]<egosor_szam[sor]-1)
{
feny_be(egosor[sor][pr_folyamat[sor]]+1)
pr_folyamat[sor]++
}
else
{
feny_be(egosor[sor][pr_folyamat[sor]])
pr_folyamat2[sor]=1
}
}
else
{
feny_ki(egosor[sor][pr_folyamat[sor]])
if(pr_folyamat[sor]>0)
{
pr_folyamat[sor]--
}
else
{
pr_folyamat2[sor]=0
pr_folyamat[sor]=0
}
feny_be(egosor[sor][pr_folyamat[sor]])
}
}
public program5(sor)
{
for(new i; i<egosor_szam[sor]; i++)
{
if(pev_valid(egosor[sor][i]))
if(random_num(0, 1)==1)
feny_be(egosor[sor][i])
else
feny_ki(egosor[sor][i])
}
}
public program6(sor)
{
switch(random_num(1, 5))
{
case 1: program1(sor)
case 2: program2(sor)
case 3: program3(sor)
case 4: program4(sor)
case 5: program5(sor)
}
}
public program7(sor) //Javasolta: OroSzRuLetT.
{
new nrandom = random_num(0, sizeof(models)-1)
for(new i; i<egosor_szam[sor]; i++)
{
if(pev_valid(egosor[sor][i]))
if(pev(egosor[sor][i], pev_iuser2)==nrandom)
feny_be(egosor[sor][i])
else
feny_ki(egosor[sor][i])
}
}
/*=================================
//===== EGYEBEK
=================================*/
public feny_be(ent)
{
set_rendering(ent,EGO_FX,0,0,0,EGO_RENDER,255)
}
public feny_ki(ent)
{
set_rendering(ent, EGO_FX,0,0,0,EGO_RENDER,120)
}
/*=================================
//===== VILLOGÁS
=================================*/
public glow_be(id)
{
menu_villog[id]=true
set_task(0.1, "glow_target", id+TASK_VILLOG)
}
public glow_ki(id)
{
menu_villog[id]=false
remove_task(id+TASK_VILLOG)
}
public glow_target(taskid)
{
set_task(0.1, "glow_target", taskid)
new id=taskid-TASK_VILLOG
if(!menu_villog[id])
return ;
menu_villog_t[id]=findtarget(id)
new Float: Origin[3]
new sor
set_hudmessage(85, 85, 255, -1.0, 0.69, 0, 6.0, 0.1, 0.1, 0.2, next_hudchannel(id))
if(menu_villog_t[id])
{
pev(menu_villog_t[id], pev_origin, Origin)
sor = pev(menu_villog_t[id], pev_iuser1)
show_hudmessage(id, "Origin: %f %f %f^nSor: %d^nProgram: %d^nGyakorisag: %d^nStatus: %d^nFolyamat: %d^nFolyamat2: %d", Origin[0], Origin[1], Origin[2], sor+1, pr[sor], pr_gyakorisag[sor], pr_status[sor], pr_folyamat[sor], pr_folyamat2[sor])
}else{
show_hudmessage(id, "Origin:^nSor:^nProgram:^nGyakorisag:^nStatus:^nFolyamat:^nFolyamat2:")
}
}
//============================================================
public findtarget(id)
{
new target
new Float:vOrigin[3]
new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],
Float:vTraceEnd[3]
new Float: VOfs[3]
pev(id, pev_origin, vOrigin)
pev(id, pev_view_ofs, VOfs)
xs_vec_add(vOrigin, VOfs, vOrigin)
velocity_by_aim( id, 2000, vTraceDirection );
xs_vec_add( vTraceDirection, vOrigin, vTraceEnd );
engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 );
new Float:fFraction;
get_tr2( 0, TR_flFraction, fFraction );
// -- We hit something!
if ( fFraction < 1.0 )
{
// -- Save results to be used later.
get_tr2( 0, TR_vecEndPos, vTraceEnd );
get_tr2( 0, TR_vecPlaneNormal, vNormal );
}
xs_vec_mul_scalar( vNormal, 0.1, vNormal );
xs_vec_add( vTraceEnd, vNormal, vNewOrigin );
new entinsphere = -1;
//new bool:vanvalami
new Float:mintav=50.0
new class[21]
new Float: entorigin[3]
new Float: distance
while ((entinsphere = find_ent_in_sphere(entinsphere, vNewOrigin, 50.0)))
{
class="";
pev(entinsphere, pev_classname, class, 20)
if(equal(class, CLASSNAME))
{
xs_vec_set(entorigin, 0.0, 0.0, 0.0)
//vanvalami=true
pev(entinsphere, pev_origin, entorigin)
distance = get_distance_f(vNewOrigin, entorigin)
if(distance < mintav)
{
target=(entinsphere)
mintav=(distance)
}
}
}
return target;
}
//************ MENTÉS - BETÖLTÉS ***************
public mentes(id)
{
new tfile = fopen(file, "wt");
new Float:Origin[3];
new rmodel
new szam_sor
new szam_osszes
new szData[128];
for(new i1; i1<egosorok; i1++)
{
for(new i2; i2<egosor_szam[i1]; i2++)
{
entity_get_vector(egosor[i1][i2], EV_VEC_origin, Origin);
rmodel = pev(egosor[i1][i2],pev_iuser2)
formatex(szData, 128, "%f %f %f %d %d %d %d^n", Origin[0], Origin[1], Origin[2], rmodel, i1, pr[i1], pr_gyakorisag[i1])
fputs(tfile, szData);
szam_osszes++
}
szam_sor++
}
client_print(0, print_chat, "[Egosor] Egosorok elmentve. [ %d egosor, es osszesen %d ego ]", szam_sor, szam_osszes);
fclose(tfile);
}
public betoltes(id)
{
//Letzeik a mnteett fajl
if (file_exists(file))
{
delete_all(0)
new szData[128];
new tmpOrigin[3][16]
new Float: Origin[3]
new tmprmodel[2]
new tmpegosor[4]
new regosor
new tmppr[2]
new tmppr_gyakorisag[3]
new f = fopen(file, "rt");
new ent=-1
new lastegosor=-1
new szam_sor
new szam_osszes
while (!feof(f))
{
fgets(f, szData, 128);
if(equal(szData, "", 1))
continue;
parse(szData, tmpOrigin[0], 16, tmpOrigin[1], 16, tmpOrigin[2], 16, tmprmodel, 2, tmpegosor, 4, tmppr, 2, tmppr_gyakorisag, 3)
Origin[0] = str_to_float(tmpOrigin[0]);
Origin[1] = str_to_float(tmpOrigin[1]);
Origin[2] = str_to_float(tmpOrigin[2]);
ent = autospawn(0, Origin, str_to_num(tmprmodel))
if(ent)
{
set_pev(ent, pev_iuser2, str_to_num(tmprmodel))
regosor = str_to_num(tmpegosor)
set_pev(ent, pev_iuser1, regosor)
if(lastegosor != regosor)
{
egosorok++
szam_sor++
}
szam_osszes++
lastegosor=(regosor)
egosor[regosor][egosor_szam[regosor]] = (ent)
egosor_szam[regosor]++
pr[regosor] = str_to_num(tmppr)
pr_gyakorisag[regosor] = str_to_num(tmppr_gyakorisag)
}
}
client_print(id, print_chat, "[Egosor] Egosorok elmentve. [ %d egosor, es osszesen %d ego ]", szam_sor, szam_osszes);
fclose(f);
}else{
client_print(id, print_chat, "[Egosor] Nem talalom a mentett fajlt (Lehet hogy meg nem volt mentve?): %s", file);
}
}