Leírás:
Ezzel a pluginnal karácsonyi égősorokat helyezhetsz el szervereden, amiket akár be is programozhatsz. Ez annyit takar, hogy beállíthatod a villogások (ugye felgyullad, kialszik) módját, rendszerét. Hogy néhányat kiragadjak: felváltva, színek szerint, egyszerre vagy akár random (ebből két fajta is van, az elsőben sűrűn villognak össze-vissza, a másodikban pedig programokat váltogatva, ez egy kevésbé rendezett összképet alkot). Természetesen el lehet menteni ezeket az égősorokat, és ezek mápváltáskor be is töltődnek maguktól. Alap beállítás szerint 64 égősor lehet maximum, és égősoronként 64 égő, de ha valaki szeretné, könnyen át tudja írni ezeket az értékeket az sma elején.
a menü előhozásához írd a chatbe: /ego
Menü:
1. Válassz egosort
Itt tudod kiválasztani hogy melyik égősorral szeretnél dolgozni, vagy kezdhetsz újat. Az égősoroknak nem neveik hanem számaik vannak, mint 1-es, 2-es, stb....
2. Egosor megkezdese/ Ego lerakasa
Ezzel tudsz lerakni égőket. Az itt megjelenő parancs aszerint változik hogy új égősort kezdesz, egy már létezőt folytatsz, vagy esetleg tele van már a kiválasztott égősor. Ekkor természetesen nem tudsz lerakni több égőt, csak ha új égősort kezdesz.
3. Egosor eltavolitasa - nezz ra!
Ez eltávolítja azt az égősort amelyiknek egy égőjére nézel éppen. (Ehhez kapcsolódóan kicsit lejjebb)
4. Valasztott egosor eltavolitasa
Ez az 1-es menüpontban kiválasztott égősort törli.
5. Osszes egosor eltavolitasa
Az összes égősort eltávolítja.
6. Programozas
Ez a programozás menüt hozza elő. Erről kicsit lejjebb.
7. Kijelzes
Ha ezt bekapcsolod ( [ON] -t ír ) akkor ha ránézel egy égőre kiír róla pár hasznos infót. Ez segít a 3-as menüpont használatában, és ha esetleg utólag akarsz programozni egy égősort ezzel megtudhatod hányas égősor az.
8. Mentes
Elmenti a mapon található égősorokat.
9. Betoltes
Betölti a maphoz tartozó égősorokat, már ha vannak ilyenek.
0. Kilepes
Bezárod a menüt vele.
Programozás menü:
1.Nincs
Nincs program. Minden égő világít.
2. egyszerre villogas
Felváltva világít, és nem világít az összes
3. felvaltott villogas
Fálváltva villognak az egymás mellett lévők.
4. elejetol a vegeig
Ennél egy jel "fut végig" az egész égősoron
5. elejetol a vegeig es vissza
Ez ugyanaz az mint az előző, csak ha végig ért akkor "vissza fordul" a jel
6. random
Ekkor gyorsan villognak össze-vissza az égők.
7. random2
Ennél viszont a programok váltakoznak össze-vissza.
8. szinek szerint
Ennél pedig színek szerint villognak, tehát egyszer a sárgák, egyszer a pirosak stb.
9. Gyakorisag: sec
Ezzel pedig azt lehet állítani hogy milyen sűrűn történjen változás az égősorral. Pl.: milyen gyorsan haladjon a jel rajta végig, milyen gyorsan váltakozzanak a színek stb.
Telepítés:
egosor.amxx
cstrike/addons/amxmodx/plugins mappába másold, eztán írd be a configs mappában található plugins.ini be egy új sorba "egosor.amxx", persze "-ek nélkül.
egosor.zip
Ha megnyitod, végig követheted a mappa szerkezetet hogy hova másold de leírom ide is. A cstrike/spites mappába másold a fireworks mappát minden tartalmával együtt.
Egyéb:
A a random programok kicsit megnövelhetek a "choke" értéket, amit akkor láthatsz ha beírod a konzolba "net_graph 3".
A szín szerinti programot javasolta OroSzRuLetT.
Igen, ez a plugin a fireworks(tüzijáték) plugin sprite fájljait használja.
Úgyérzem mindent leírtam amit kell, de ha valakinek kérdése van írja ide kommentbe.
Idarav
Kód:
#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 betoltve. [ %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);
}
}