/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <codmod>
#include <colorchat>
#include <fakemeta>
new const nazwa[] = "Skrytobojca [P]";
new const opis[] = "Jestes lekko widoczny, ukrywasz swoj team w promieniu 50(+int) za co dostajesz EXP'a";
new const bronie = 1<<CSW_MP5NAVY | 1<<CSW_USP;
new const zdrowie = 10;
new const kondycja = 10;
new const inteligencja = 10;
new const wytrzymalosc = 10;
new bool:ma_klase[33];
new jest_ukrywany[33];
new sprite_line;
new SyncHudObj;
new cvar_zabicie_z_ukrycia;
public plugin_init() {
register_plugin(nazwa, "1.0", "QTM_Peyote");
cvar_zabicie_z_ukrycia = register_cvar("cod_camoxp", "8");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1);
register_forward(FM_PlayerPreThink, "PreThink");
register_event("DeathMsg", "Death", "ade");
SyncHudObj = CreateHudSyncObj();
}
public plugin_precache()
sprite_line = precache_model("sprites/dot.spr");
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
ColorChat(id, RED, "[Nazwa]^x01 Nie mozesz korzystac z tej klasy!");
return COD_STOP;
}
ma_klase[id] = true;
}
public cod_class_disabled(id)
ma_klase[id] = false;
public Death()
{
new killer = read_data(1);
if(!is_user_connected(killer)) return;
if(!jest_ukrywany[killer]) return;
new xp = get_pcvar_num(cvar_zabicie_z_ukrycia);
cod_set_user_xp(jest_ukrywany[killer], cod_get_user_xp(jest_ukrywany[killer])+xp);
set_hudmessage(0, 212, 255, 0.04, 0.69, 0, 6.0, 4.0)
ShowSyncHudMsg(jest_ukrywany[killer], SyncHudObj, "Otrzymales %i XP za ukrywanie gracza, ktory zabil wroga!", xp);
}
public PreThink(id)
{
if(!is_user_alive(id))
return;
if(!ma_klase[id])
return;
new Float:origin[3], Float:dist = cod_get_user_intelligence(id)*0.5+50.0;
pev(id, pev_origin, origin);
static Float:zmiana[33];
zmiana[id] += 0.5;
if(zmiana[id] > 360.0)
zmiana[id] = 0.0;
new LineBegin[3], LineEnd[3];
for(new i = 0; i < 2; i++)
{
LineBegin[0] = floatround(origin[0]-floatsin(zmiana[id]+i*90.0, degrees)*dist);
LineBegin[1] = floatround(origin[1]-floatcos(zmiana[id]+i*90.0, degrees)*dist);
LineBegin[2] = floatround(origin[2]);
LineEnd[0] = floatround(origin[0]+floatsin(zmiana[id]+i*90.0, degrees)*dist);
LineEnd[1] = floatround(origin[1]+floatcos(zmiana[id]+i*90.0, degrees)*dist);
LineEnd[2] = floatround(origin[2]);
for(new i = 0; i <= 32; i++)
{
if(!is_user_connected(i))
continue;
if(get_user_team(i) != get_user_team(id))
continue;
Create_Line(i, LineBegin, LineEnd);
}
}
arrayset(jest_ukrywany, 0, 33);
new index = -1;
while((index = engfunc(EngFunc_FindEntityInSphere, index, origin, dist)))
{
if(!is_user_alive(index))
continue;
if(get_user_team(index) != get_user_team(id) || ma_klase[index])
continue;
set_hudmessage(0, 212, 255, 0.04, 0.69, 0, 6.0, 0.1)
ShowSyncHudMsg(index, SyncHudObj, "Jestes ukryty!^n Nie strzelaj, aby pozostac niezauwazonym.")
jest_ukrywany[index] = id;
}
}
public FwdAddToFullPack(es_handle, e, ent, host, hostflags, player, pSet)
{
if(!player)
return;
if(pev(ent, pev_button) & IN_ATTACK)
return;
if(ma_klase[ent])
{
set_es(es_handle, ES_RenderMode, kRenderTransAdd);
set_es(es_handle, ES_RenderFx, kRenderFxGlowShell);
set_es(es_handle, ES_RenderColor, {0, 100, 255});
set_es(es_handle, ES_RenderAmt,40);
return;
}
if(!jest_ukrywany[ent])
return;
if(get_user_team(ent) == get_user_team(host))
{
set_es(es_handle, ES_RenderMode, kRenderTransAdd);
set_es(es_handle, ES_RenderColor, {0, 180, 255});
set_es(es_handle, ES_RenderAmt, 180);
return;
}
set_es(es_handle, ES_Effects, EF_NODRAW);
}
public Create_Line(id, start[], stop[])
{
message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},id)
write_byte(0)
write_coord(start[0])
write_coord(start[1])
write_coord(start[2])
write_coord(stop[0])
write_coord(stop[1])
write_coord(stop[2])
write_short(sprite_line)
write_byte(1)
write_byte(5)
write_byte(1)
write_byte(3)
write_byte(0)
write_byte(0) // RED
write_byte(100) // GREEN
write_byte(255) // BLUE
write_byte(255) // brightness
write_byte(5)
message_end()
}