#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <engine>
#include <fakemeta>
#define MAX_GIFT 12
#define WINNER_JUMPS 1
#define RESPAWN_TIMER 5
#define TID_RESP 2551
#define FL_WATERJUMP (1<<11)
#define FL_ONGROUND (1<<9)
enum _:GiftDatas
{
/* Ajándék neve Ajandék leírása Kapott uzenet, false ,másik plugin-e? funckció plugin*/
ItemName[128], ItemDesc[192], ItemGived[128],bool:item[33],bool:aPlugin,ItemFunc[128],ItemPlugin[128]
};
new const PLUGIN[] = "Questions and Answers";
new const VERSION[] = "1.0";
new const AUTHOR[] = "#CantStopWontStop";
new const g_gift[MAX_GIFT][GiftDatas] =
{
{ "XM1014 Shotgun", "1:4-höz az esélyed az azonnali ölésre!", "Kaptál egy XM1014 Shotgun-t!", false, false },
{ "Láthatatlanság", "Láthatatlan leszel a kör végéig!", "Láthatatlan lettél a kör végéig!", false, false },
{ "Gránát Csomag", "Kapsz egy gránát csomagot.", "Kaptál egy gránát csomagot!", false, false },
{ "Kisebb Gravitáció", "Kisebb gravitációt kapsz.", "Kisebb gravitációt kaptál!", false, false },
{ "Wallhack", "Egy kisebb wallhacket kapsz. Látod ellenfeleid falon keresztül.", "Wallhacket nyertél!", false, false },
{ "Gyorsaság", "Nagyobb gyorsaságot kapsz.", "Nagyobb gyorsaságot kaptál!", false, false },
{ "BunnyHop", "Folyamatosan tudsz ugrani.", "Bunnyhop-ot nyertél!", false, false },
{ "DuplaUgrás", "Többet tudsz ugrani.", "Több ugrást nyertél!", false, false },
{ "Regeneráció", "Az életed visszatöltődik.", "Regenerációt nyertél!", false, false },
{ "Újraéledés", "Újraéledsz ,ha még a kör nem ért véget.", "Halálod után újraéledsz!", false, false },
{ "M4A1 + Deagle", "Kapsz egy M4A1-et és egy Deagle-t.", "Kaptál egy M4A1-et és egy Deagle-t!", false, false },
{ "NoRecoil", "Fegyvered nem fog rángatózni mikor lősz.", "NoRecoil-t nyertél!", false, false }
};
new const secwpns[][] =
{
"weapon_p228",
"weapon_elite",
"weapon_fiveseven",
"weapon_usp",
"weapon_glock18",
"weapon_deagle"
};
new valasz[112],valasz2[112],
valasz3[112],valasz4[112],
valasz5[112],valasz6[112];
new bool:elso = false;
new r,g,b;
new g_win_speed,g_win_grav;
new winnername[32];
new const inifile[] = "addons/amxmodx/configs/questions.ini";
new const qna_prefix[] = "QnA"; //Plugin Prefix
//Multijump//
new jumpnum[33] = 0;
new bool:dojump[33] = false;
//Regeneration//
new bool:g_p_alive[33];
new g_max_players;
new g_max_health[33];
//Respawn
new g_timeleft[33];
new g_msg[64];
new g_HudSync;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent( "RoundStart", 2, "1=Round_Start");
register_event( "DeathMsg", "fwd_ClientKill", "a")
register_event( "ScreenFade", "Event_noFlash", "be", "4=255", "5=255", "6=255", "7>199");
register_logevent( "RoundEnd", 2, "1=Round_End");
RegisterHam(Ham_TakeDamage, "player", "fwd_TakeDamage");
RegisterHam(Ham_Spawn, "player", "fwd_Player_Spawn", 1);
RegisterHam(Ham_Killed, "player", "fwd_Player_Killed" );
register_forward(FM_PlayerPreThink, "FM_PreThink");
register_forward(FM_TraceLine, "FM_traceLine", 1);
register_clcmd("say", "hooksay");
register_clcmd("say_team", "hooksay");
register_clcmd("say /nyeremenyek", "Nyeremenyek");
register_concmd("qna_give", "cmd_givegift", ADMIN_LEVEL_B, "qna_give <nev> <item>");
g_win_speed = register_cvar("amx_qna_speed","1000.0");
g_win_grav = register_cvar("amx_qna_gravity","0.6");
g_max_players = get_maxplayers();
g_HudSync = CreateHudSyncObj();
set_task(1.0, "regen", 2152, _, _, "b");
set_cvar_num("sv_airaccelerate", 100); //this is for (SPARTA') bunnyhop.
}
// ===============================================================================
// Player Respawn
// ===============================================================================
public fwd_ClientKill()
{
static id, CsTeams:team;
id = read_data(2);
if(g_gift[9][item][id])
{
team = cs_get_user_team(id);
if(!is_user_connected(id) || is_user_alive(id) || (team != CS_TEAM_T && team != CS_TEAM_CT))
return;
g_timeleft[id] = RESPAWN_TIMER;
set_task(1.0, "count", TID_RESP+id);
if(is_user_bot(id))
return;
set_hudmessage(0, 255, 0, 0.38, 0.35, _, _, 1.0, _, _, -1)
format(g_msg, 63, "ĂjraĂŠledsz %d mĂĄsodperc mĂşlva.", g_timeleft[id]);
ShowSyncHudMsg(id, g_HudSync, g_msg)
}
}
public count(tid)
{
static id, CsTeams:team;
id = tid-TID_RESP;
team = cs_get_user_team(id)
if(!is_user_connected(id) || is_user_alive(id) || (team != CS_TEAM_T && team != CS_TEAM_CT))
return;
g_timeleft[id] -= 1;
if(g_timeleft[id] <= 0)
{
set_pev(id,pev_deadflag,DEAD_RESPAWNABLE);
set_task(0.2, "respawn", id)
return;
}
else
{
set_task(1.0, "count", TID_RESP+id);
}
if(is_user_bot(id))
return;
set_hudmessage(0, 255, 0, 0.38, 0.35, _, _, 1.0, _, _, -1);
format(g_msg, 63, "ĂjraĂŠledsz %d mĂĄsodperc mĂşlva.", g_timeleft[id]);
ShowSyncHudMsg(id, g_HudSync, g_msg);
}
// ===============================================================================
// Player Respawn
// ===============================================================================
public respawn(id)
{
static CsTeams:team;
team = cs_get_user_team(id);
if(!is_user_connected(id) || is_user_alive(id) || (team != CS_TEAM_T && team != CS_TEAM_CT))
{
return;
}
ExecuteHamB(Ham_CS_RoundRespawn, id)
}
public RoundEnd()
{
new i;
for(i=1; i<=g_max_players; i++)
{
if(task_exists(TID_RESP+i))
remove_task(TID_RESP+i)
}
}
// ===============================================================================
// Player Renegeration
// ===============================================================================
public fwd_Player_Spawn(id)
{
if(!is_user_alive(id))
return;
g_max_health[id] = get_user_health(id);
g_p_alive[id] = true;
}
public fwd_Player_Killed(id)
{
g_p_alive[id] = false;
}
// ===============================================================================
// Player Renegeration
// ===============================================================================
public regen()
{
static id, hp;
for(id=1; id<=g_max_players; id++)
{
if(g_gift[8][item][id])
{
if(!g_p_alive[id])
{
continue;
}
hp = get_user_health(id);
if(hp >= g_max_health[id])
{
g_max_health[id] = hp;
}
else
{
set_user_health(id, hp+1);
}
}
}
}
// ===============================================================================
// Anti Flash for the winner of the Grenade Pack
// ===============================================================================
public Event_noFlash(id)
{
if(g_gift[2][item][id])
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0},id)
write_short(1)
write_short(1)
write_short(1)
write_byte(0)
write_byte(0)
write_byte(0)
write_byte(255)
message_end()
}
}
// ===============================================================================
// MultiJump
// ===============================================================================
public client_putinserver(id)
{
jumpnum[id] = 0;
dojump[id] = false;
}
public client_disconnect(id)
{
jumpnum[id] = 0;
dojump[id] = false;
g_p_alive[id] = false;
}
// ===============================================================================
// Gifts
// ===============================================================================
public Nyeremenyek(id)
{
new menu = menu_create("Nyeremények:", "Nyeremenyekh");
for(new i; i<sizeof(g_gift); i++)
{
menu_additem(menu, g_gift[i][ItemName],_,0)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_BACKNAME, "Vissza");
menu_setprop(menu, MPROP_NEXTNAME, "Előre");
menu_setprop(menu, MPROP_EXITNAME, "Kilép");
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public Nyeremenyekh(id, iMenu, iItem)
{
if(iItem == MENU_EXIT)
{
menu_cancel(id);
return PLUGIN_HANDLED;
}
print_color(id, "!g[%s]!t %s",qna_prefix, g_gift[iItem][ItemDesc])
Nyeremenyek(id);
return PLUGIN_HANDLED;
}
// ===============================================================================
// Player Hurt
// ===============================================================================
public fwd_TakeDamage(victim, inflictor, attacker, Float:damage)
{
if (victim != attacker && is_user_connected(attacker))
{
if(get_user_weapon(attacker) == CSW_XM1014)
{
if(g_gift[0][item][attacker])
{
static num
num = random_num(1,4)
if(num == 2)
{
SetHamParamFloat(4, damage * get_user_health(victim))
}
}
}
}
}
// ===============================================================================
// Reset
// ===============================================================================
public RoundStart()
{
elso = false;
new players[32], count;
get_players(players, count);
for(new i=0; i<count; i++)
{
new id = players[i];
for(new i; i<sizeof(g_gift); i++)
{
g_gift[i][item][id] = false;
}
if(!g_gift[5][item][id]) //reset speed
{
set_user_maxspeed(id,-1.0)
engclient_cmd(id, "weapon_knife");
}
if(!g_gift[3][item][id]) //reset gravity
{
set_user_gravity(id,1.0)
engclient_cmd(id, "weapon_knife");
}
if(!g_gift[1][item][id]) //reset glow
{
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255)
}
ham_strip_weapon(id,"weapon_flashbang")
ham_strip_weapon(id,"weapon_flashbang")
ham_strip_weapon(id,"weapon_smokegrenade")
if(get_user_weapon(id) == CSW_XM1014)
{
ham_strip_weapon(id, "weapon_xm1014");
}
}
valasz = "";
valasz2 = "";
valasz3 = "";
valasz4 = "";
valasz5 = "";
valasz6 = "";
winnername = "";
readfile();
return PLUGIN_CONTINUE;
}
// ===============================================================================
// Read Random Line from an ini file.
// ===============================================================================
public readfile()
{
new parsedkerdes[112],parsedvalasz[112],parsedvalasz2[112],parsedvalasz3[112],parsedvalasz4[112],parsedvalasz5[112],parsedvalasz6[112]
new lines = file_size(inifile, 1);
if(lines > 0)
{
new randomLine = random(lines);
new lineBuffer[256], len;
read_file(inifile, randomLine, lineBuffer, charsmax(lineBuffer), len);
parse(lineBuffer,parsedkerdes,111,parsedvalasz,111,parsedvalasz2,111,parsedvalasz3,111,parsedvalasz4,111,parsedvalasz5,111,parsedvalasz6,111);
static msg[192];
format(msg,charsmax(msg), "[%s]^nÍrd le chatbe a választ!",parsedkerdes)
r = random(255);
g = random(255);
b = random(255);
ekezet_show(0, msg, r, g, b, -1.0, -1.0, 1, 6.0, 10.0); //id, formázott szöveg, r, g, b, x, y, effekt, fxtime, show_time
valasz = parsedvalasz;
valasz2 = parsedvalasz2;
valasz3 = parsedvalasz3;
valasz4 = parsedvalasz4;
valasz5 = parsedvalasz5;
valasz6 = parsedvalasz6;
}
}
// ===============================================================================
// Read Chat
// ===============================================================================
public hooksay(id)
{
if(is_user_bot(id) || !is_user_alive(id))
{
return PLUGIN_CONTINUE;
}
static message[192];
read_args (message, 191);
remove_quotes (message);
new name[32];
get_user_name(id,name,31)
if(equali(message,valasz) || equali(message,valasz2) || equali(message,valasz3) || equali(message,valasz4) || equali(message,valasz5) || equali(message,valasz6))
{
if(!elso)
{
print_color(0,"!t[%s]!g A győztes:!t %s",qna_prefix,name);
elso = true;
give_gift(id,random(MAX_GIFT));
winnername = name;
}
else
{
print_color(id,"!g[%s]!t Elkéstél! A győztes:!g %s",qna_prefix,winnername);
}
}
return PLUGIN_CONTINUE;
}
// ===============================================================================
// Giving Gifts
// ===============================================================================
public give_gift(id,iItem)
{
new gift = iItem;
g_gift[gift][item][id] = true;
print_color(id, "!g[%s]!t %s",qna_prefix, g_gift[gift][ItemGived])
if(g_gift[0][item][id])
{
give_item(id, "weapon_xm1014");
cs_set_user_bpammo(id,CSW_XM1014,90);
}
if(g_gift[1][item][id])
{
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 20);
}
if(g_gift[2][item][id])
{
give_item(id, "weapon_hegrenade");
give_item(id,"weapon_flashbang");
give_item(id,"weapon_flashbang");
give_item(id,"weapon_smokegrenade");
}
if(g_gift[10][item][id])
{
drop_sec(id);
give_item(id, "weapon_m4a1");
give_item(id,"weapon_deagle");
cs_set_user_bpammo(id, CSW_M4A1,90);
cs_set_user_bpammo(id, CSW_DEAGLE, 35);
}
if(g_gift[gift][item][id] && g_gift[gift][aPlugin])
{
if(gift == 13)
{
drop_sec(id);
}
if( callfunc_begin(g_gift[gift][ItemFunc], g_gift[gift][ItemPlugin]) == 1 )
{
callfunc_push_int(id)
callfunc_end()
}
}
}
public FM_PreThink(id)
{
if(is_user_alive(id))
{
static Float:origin[3], players[32], num, num2, team
team = get_user_team(id)
arrayset(players,0,32)
if(g_gift[4][item][id])
{
pev(id,pev_origin,origin)
get_players_distance(origin,players,num,"a")
static Float:hudpos[2]
static Float:distance
static Float:origin2[3]
num2=0
for(new i=0;i<num;i++)
{
if(players[i] && get_user_team(players[i])!=team)
{
pev(players[i],pev_origin,origin2)
if(get_hudmessage_locs(id,origin2,hudpos))
{
distance = vector_distance(origin,origin2)
num2++
set_hudmessage(255,0,0,hudpos[0],hudpos[1],0,6.0,0.2,0.1, 0.2,num2)
show_hudmessage(id, "%d",floatround(distance / 10.0))
if(num2==4) break;
}
}
}
}
else if(g_gift[3][item][id])
{
set_user_gravity(id, get_pcvar_float(g_win_grav))
}
else if(g_gift[5][item][id])
{
set_user_maxspeed(id, get_pcvar_float(g_win_speed))
}
if(g_gift[6][item][id])
{
entity_set_float(id, EV_FL_fuser2, 0.0)
if (entity_get_int(id, EV_INT_button) & 2)
{
new flags = entity_get_int(id, EV_INT_flags)
if (flags & FL_WATERJUMP)
return PLUGIN_CONTINUE
if ( entity_get_int(id, EV_INT_waterlevel) >= 2 )
return PLUGIN_CONTINUE
if ( !(flags & FL_ONGROUND) )
return PLUGIN_CONTINUE
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
velocity[2] += 250.0
entity_set_vector(id, EV_VEC_velocity, velocity)
entity_set_int(id, EV_INT_gaitsequence, 6)
}
}
if(g_gift[7][item][id])
{
new nbut = get_user_button(id)
new obut = get_user_oldbutton(id)
if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
{
if(jumpnum[id] < WINNER_JUMPS)
{
dojump[id] = true
jumpnum[id]++
return PLUGIN_CONTINUE
}
}
if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
{
jumpnum[id] = 0
return PLUGIN_CONTINUE
}
}
if(g_gift[11][item][id])
{
if(get_user_button(id) & IN_ATTACK)
entity_set_vector(id, EV_VEC_punchangle, Float:{0.0, 0.0, 0.0});
}
}
return PLUGIN_CONTINUE;
}
public FM_traceLine(Float:v1[3], Float:v2[3], noMonsters, id)
{
if(!is_user_connected(id) || !is_user_alive(id))
return FMRES_IGNORED;
if(g_gift[11][item][id])
{
new hit[3], Float:fHit[3];
get_user_origin(id, hit, 4);
IVecFVec(hit, fHit);
set_tr(TR_vecEndPos, fHit);
}
return FMRES_IGNORED;
}
public client_PostThink(id)
{
if(g_gift[7][item][id])
{
if(!is_user_alive(id)) return PLUGIN_CONTINUE;
if(dojump[id] == true)
{
new Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity,velocity)
velocity[2] = random_float(265.0,285.0)
entity_set_vector(id,EV_VEC_velocity,velocity)
dojump[id] = false
return PLUGIN_CONTINUE
}
}
return PLUGIN_CONTINUE
}
public cmd_givegift(id)
{
if(get_user_flags(id) & ADMIN_KICK)
{
new Arg1[64]
read_argv(1, Arg1, 63)
new Target = cmd_target(id, Arg1, 0);
if(!Target)
{
client_print(id, print_console, "[%s] Jatekos nem talalhato!",qna_prefix)
return PLUGIN_HANDLED;
}
new iLevel[32], Value;
read_argv(2, iLevel, 31);
Value = str_to_num(iLevel);
if(Value > MAX_GIFT-1)
{
client_print(id, print_console, "Az item nem lehet nagyobb ,mint %d",MAX_GIFT-1)
return PLUGIN_HANDLED;
}
g_gift[Value][item][Target] = true;
give_gift(Target,Value);
}
else
{
client_print(id, print_chat, "Nem vagy Admin")
client_print(id, print_console, "Nem vagy Admin")
}
return PLUGIN_CONTINUE;
}
// ===============================================================================
// Stocks
// ===============================================================================
stock ham_strip_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0;
new wId = get_weaponid(weapon);
if(!wId) return 0;
new wEnt;
while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
if(!wEnt) return 0;
if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);
if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0;
ExecuteHamB(Ham_Item_Kill,wEnt);
set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));
if(wId == CSW_C4)
{
cs_set_user_plant(id,0,0);
cs_set_user_bpammo(id,CSW_C4,0);
}
else if(wId == CSW_SMOKEGRENADE || wId == CSW_FLASHBANG || wId == CSW_HEGRENADE)
cs_set_user_bpammo(id,wId,0);
return 1;
}
stock print_color(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^3");
replace_all(msg, 190, "á", "ĂĄ")
replace_all(msg, 190, "é", "ĂŠ")
replace_all(msg, 190, "í", "Ă")
replace_all(msg, 190, "ó", "Ăł")
replace_all(msg, 190, "ö", "Ăś")
replace_all(msg, 190, "ő", "Ĺ")
replace_all(msg, 190, "ú", "Ăş")
replace_all(msg, 190, "ü", "Ăź")
replace_all(msg, 190, "ű", "Ĺą")
replace_all(msg, 190, "Á", "Ă")
replace_all(msg, 190, "É", "Ă")
replace_all(msg, 190, "Í", "Ă")
replace_all(msg, 190, "Ó", "Ă")
replace_all(msg, 190, "Ö", "Ă")
replace_all(msg, 190, "Ő", "Ĺ")
replace_all(msg, 190, "Ú", "Ă")
replace_all(msg, 190, "Ü", "Ă")
replace_all(msg, 190, "Ű", "Ĺ°")
if (id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
return PLUGIN_HANDLED;
}
stock ekezet_show(const id, const hud[], r, g, b, Float:x, Float:y, effect, Float:fxtime, Float:show_time)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, hud, 3);
replace_all(msg, 190, "á", "ĂĄ");
replace_all(msg, 190, "é", "ĂŠ");
replace_all(msg, 190, "í", "Ă");
replace_all(msg, 190, "ó", "Ăł");
replace_all(msg, 190, "ö", "Ăś");
replace_all(msg, 190, "ő", "Ĺ");
replace_all(msg, 190, "ú", "Ăş");
replace_all(msg, 190, "ü", "Ăź");
replace_all(msg, 190, "ű", "Ĺą");
replace_all(msg, 190, "Á", "Ă");
replace_all(msg, 190, "É", "Ă");
replace_all(msg, 190, "Í", "Ă");
replace_all(msg, 190, "Ó", "Ă");
replace_all(msg, 190, "Ö", "Ă");
replace_all(msg, 190, "Ő", "Ĺ");
replace_all(msg, 190, "Ú", "Ă");
replace_all(msg, 190, "Ü", "Ă");
replace_all(msg, 190, "Ű", "Ĺ°");
if (id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
set_hudmessage(r, g, b, Float:x, Float:y, effect, Float:fxtime, Float:show_time);
show_hudmessage(players[i],msg);
}
}
}
}
stock drop_sec(id)
{
for(new j = 0; j < sizeof secwpns; j++)
{
engclient_cmd(id,"drop", secwpns[j])
}
}
// ===============================================================================
// Stocks From CHR_Engine
// ===============================================================================
stock get_players_distance(const Float:origin2[3],players[32], &num,const flags[]="",index=0,const team[]="")
{
new bool:flag1, bool:flag2
if(containi(flags,"j")!=-1) flag2 = true
if(containi(flags,"i")!=-1)
{
if(!pev_valid(index))
return 0;
flag1 = true
}
static Float:origin[3]
origin[0] = origin2[0]
origin[1] = origin2[1]
origin[2] = origin2[2]
static players2[32]
new num2
arrayset(players2,0,32)
get_players(players2,num2,flags,team)
static Float:origin3[3]
static Float:distance[32]
for(new i=0;i<32;i++) distance[i]=0.0
num = num2
static Float:hit[3]
new bool:continuea=true
for(new i=0;i<num2;i++)
{
pev(players2[i],pev_origin,origin3)
if(flag2)
{
engfunc(EngFunc_TraceLine,origin2,origin3,1,index,0)
get_tr2(0,TR_vecEndPos,hit)
if(hit[0]==origin3[0] && hit[1]==origin3[1] && hit[2]==origin3[2])
{
distance[i] = vector_distance(origin,origin3)
}
else
{
continuea=false
distance[i] = 9999999.1337
num--
}
}
if(flag1 && continuea)
{
static Float:angles[3], Float:diff[3], Float:reciprocalsq, Float:norm[3], Float:dot, Float:fov
pev(index, pev_angles, angles)
engfunc(EngFunc_MakeVectors, angles)
global_get(glb_v_forward, angles)
angles[2] = 0.0
pev(index, pev_origin, origin)
diff[0] = origin3[0] - origin[0]
diff[1] = origin3[1] - origin[1]
diff[2] = origin3[2] - origin[2]
//diff[2]=0.0// - for 2D viewcone
reciprocalsq = 1.0 / floatsqroot(diff[0]*diff[0] + diff[1]*diff[1] + diff[2]*diff[2])
norm[0] = diff[0] * reciprocalsq
norm[1] = diff[1] * reciprocalsq
norm[2] = diff[2] * reciprocalsq
dot = norm[0]*angles[0] + norm[1]*angles[1] + norm[2]*angles[2]
pev(index, pev_fov, fov)
if(dot >= floatcos(fov * 3.1415926535 / 360.0))
{
distance[i] = vector_distance(origin,origin3)
}
else
{
continuea=false
distance[i] = 9999999.1337
num--
}
}
if(continuea)
{
distance[i] = vector_distance(origin,origin3)
}
}
static distance_cnt[32]
arrayset(distance_cnt,0,32)
for(new i=0;i<num2;i++)
{
if(distance[i]!=9999999.1337)
{
for(new i2=0;i2<num;i2++)
{
if(distance[i2]<distance[i]) distance_cnt[i]++
}
players[distance_cnt[i]]=players2[i]
}
}
return 1;
}
stock get_hudmessage_locs(ent,const Float:origin[3],Float:hudpos[2])
{
if(!is_user_connected(ent))
return 0;
static Float:origin2[3]
origin2[0] = origin[0]
origin2[1] = origin[1]
origin2[2] = origin[2]
static Float:ent_origin[3]
pev(ent,pev_origin,ent_origin)
static Float:ent_angles[3]
pev(ent,pev_v_angle,ent_angles)
origin2[0] -= ent_origin[0]
origin2[1] -= ent_origin[1]
origin2[2] -= ent_origin[2]
new Float:v_length
v_length = vector_length(origin2)
static Float:aim_vector[3]
aim_vector[0] = origin2[0] / v_length
aim_vector[1] = origin2[1] / v_length
aim_vector[2] = origin2[2] / v_length
static Float:new_angles[3]
vector_to_angle(aim_vector,new_angles)
new_angles[0] *= -1
if(new_angles[1]>180.0) new_angles[1] -= 360.0
if(new_angles[1]<-180.0) new_angles[1] += 360.0
if(new_angles[1]==180.0 || new_angles[1]==-180.0) new_angles[1]=-179.999999
if(new_angles[0]>180.0) new_angles[0] -= 360.0
if(new_angles[0]<-180.0) new_angles[0] += 360.0
if(new_angles[0]==90.0) new_angles[0]=89.999999
else if(new_angles[0]==-90.0) new_angles[0]=-89.999999
new Float:fov
pev(ent,pev_fov,fov)
if(!fov)
fov = 90.0
if(floatabs(ent_angles[0] - new_angles[0]) <= fov/2 && floatabs((180.0 - floatabs(ent_angles[1])) - (180.0 - floatabs(new_angles[1]))) <= fov/2)
{
hudpos[1] = 1 - ( ( (ent_angles[0] - new_angles[0]) + fov/2 ) / fov )
hudpos[0] = ( (ent_angles[1] - new_angles[1]) + fov/2 ) / fov
}
else
return 0;
return 1;
}
// =============================================================================== ===============================================================================//
// Thanks everybody for watching I hope you are enjoyed. Leave a like and a comment. Seeya Guys Later. <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D -->
// =============================================================================== ===============================================================================//