PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <xs>
const iKillStreak = 4
new Ubistva[33] = {0,...};
new iLevels[iKillStreak] = {3, 4, 5, 6};
new sounds[iKillStreak][] =
{
"mw2/killstreaks/uav_give",
"mw2/killstreaks/counter_give",
"mw2/killstreaks/air_give",
"mw2/killstreaks/emp_give"
};
new messages[iKillStreak][] =
{
"UAV^n^tUkucaj /ks da aktiviras!",
"Counter-UAV^n^tUkucaj /ks da aktiviras!",
"AIRSTRIKE^n^tUkucaj /ks da aktiviras!",
"EMP^n^tUkucaj /ks da aktiviras!"
};
new g_msgHostageAdd, g_msgHostageDel, g_maxplayers;
new imauav[33], imacounteruav[33], imaavion[33], imaemp[33]
new bool:uav[33], cblocked[33], empblocked[33]
new Float:angles3[33][3];
new Float:origin3[33][3];
new sprite_blast;
new g_bombe[15]
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("KS","1.0","OvidiuS")
register_forward(FM_PlayerPreThink, "prethink")
register_forward(FM_Touch, "PipnuoPaIspario")
register_event("DeathMsg", "event_death", "a");
register_menu("Game Menu", KEYSMENU, "menu_game")
register_clcmd("say /ks", "killstrk")
g_maxplayers = get_maxplayers();
}
public plugin_precache()
{
for (new i = 0; i <iKillStreak; i++)
engfunc(EngFunc_PrecacheSound, sounds[i])
precache_sound("ambience/jetflyby1.wav") // Leti Leti Avion
precache_sound("mw2/killstreaks/uav_friend.wav") // Dobio si ku*ac
precache_sound("mw2/killstreaks/uav_enemy.wav") // Pozvao si ku*ac
precache_sound("mw2/killstreaks/air_friend.wav") // kolega ti je mocan
precache_sound("mw2/killstreaks/air_enemy.wav") // najebase
precache_sound("mw2/killstreaks/emp_effect.wav") // EMP CALL
precache_sound("mw2/killstreaks/emp_enemy.wav") // EMP
precache_sound("mw2/killstreaks/emp_friend.wav") // EMP
precache_model("models/rpgrocket.mdl") // Amerikanci
precache_model("models/Mig29.mdl") // f117 samo da se ne srusi
sprite_blast = precache_model("sprites/dexplo.spr"); // ka booom
}
public PipnuoPaIspario(ent, id) // jebena baba
{
if (!pev_valid(ent))
return FMRES_IGNORED
new EntClassName[32]
entity_get_string(ent, EV_SZ_classname, EntClassName, charsmax(EntClassName))
if(equal(EntClassName, "Bomb"))
{
ka_boom(ent)
remove_entity(ent)
return FMRES_IGNORED
}
if(equal(EntClassName, "Airplane"))
{
remove_entity(ent)
return FMRES_IGNORED
}
return FMRES_IGNORED
}
public prethink(id) // magija
{
if(uav[id])
{
new PlayerCoords[3];
new Players[32];
new id;
new i;
new playerCount = 0;
for (id=1; id<=g_maxplayers; id++)
{
if(get_players(Players, playerCount, "a") && is_user_alive(id))
{
playerCount++;
}
for (i=1;i<=playerCount;i++)
{
get_user_origin(i, PlayerCoords)
message_begin(MSG_ONE_UNRELIABLE, g_msgHostageAdd, {0,0,0}, id)
write_byte(id)
write_byte(i)
write_coord(PlayerCoords[0])
write_coord(PlayerCoords[1])
write_coord(PlayerCoords[2])
message_end()
message_begin(MSG_ONE_UNRELIABLE, g_msgHostageDel, {0,0,0}, id)
write_byte(i)
message_end()
}
}
}
if(cblocked[id])
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Radar"), _, id)
write_byte(id)
write_coord(0)
write_coord(0)
write_coord(0)
message_end()
}
if(empblocked[id])
{
message_begin(MSG_ONE, get_user_msgid("HideWeapon"), _, id)
write_byte(1<<2)
message_end()
}
}
public event_death(id) // smrt
{
new killer = read_data(1);
new victim = read_data(2);
if(get_user_team(victim) != get_user_team(killer))
Ubistva[killer] += 1;
Ubistva[victim] = 0;
set_hudmessage(0, 255, 255, 0.50, 0.33, 1, 7.0, 1.0);
show_hudmessage(killer, "%i", Ubistva[killer]);
for (new i = 0; i <iKillStreak; i++)
{
if (Ubistva[killer] == iLevels[i])
{
informisi(killer, i);
return PLUGIN_CONTINUE;
}
}
return PLUGIN_CONTINUE;
}
informisi(killer, level) // daje se na znanje
{
set_hudmessage(255, 255, 255, -1.0, 0.33, 0, 5.0, 2.4);
show_hudmessage(killer, messages[level]);
client_cmd(killer, "spk %s", sounds[level]);
return PLUGIN_CONTINUE;
}
public client_connect(id) // novajlija
{
Ubistva[id] = 0
uav[id] = false
cblocked[id] = false
empblocked[id] = false
imauav[id] = false
imacounteruav[id] = false
imaemp[id] = false
}
public killstrk(id) // koliko ih je ubio
{
if (!is_user_alive(id))
return PLUGIN_HANDLED
if(Ubistva[id] >= 3)
imauav[id] = true
if(Ubistva[id] >= 4)
imacounteruav[id] = true
if(Ubistva[id] >= 5)
imaavion[id] = true
if(Ubistva[id] >= 6)
imaemp[id] = true
show_menu_game(id)
return PLUGIN_CONTINUE;
}
show_menu_game(id) // sta zelite da narucite
{
static menu[250], len
len = 0
len += formatex(menu[len], charsmax(menu) - len, "yOvidiuS | Call Of Duty : Modern Warfare 2^n^n")
if (imauav[id] && is_user_alive(id))
len += formatex(menu[len], charsmax(menu) - len, "r1.w UAV^n", id)
else
len += formatex(menu[len], charsmax(menu) - len, "d1. UAV^n", id)
if (imacounteruav[id] && is_user_alive(id))
len += formatex(menu[len], charsmax(menu) - len, "r2.w Conter-UAV^n", id)
else
len += formatex(menu[len], charsmax(menu) - len, "d2. Conter-UAV^n", id)
if (imaavion[id] && is_user_alive(id))
len += formatex(menu[len], charsmax(menu) - len, "r3.w Airstrike^n", id)
else
len += formatex(menu[len], charsmax(menu) - len, "d3. Airstrike^n", id)
if (imaemp[id] && is_user_alive(id))
len += formatex(menu[len], charsmax(menu) - len, "r4.w EMP^n", id)
else
len += formatex(menu[len], charsmax(menu) - len, "d4. EMP^n", id)
len += formatex(menu[len], charsmax(menu) - len, "^n^nr0.w Exit", id)
show_menu(id, KEYSMENU, menu, -1, "Game Menu")
}
public menu_game(id, key) // meni, a za sve ostalo tu je mastercard
{
switch (key)
{
case 0:
{
uav_player(id)
Ubistva[id] -= 3
}
case 1:
{
radar_block(id)
Ubistva[id] -= 4
}
case 2:
{
if (imaavion[id])
{
Ubistva[id] -= 5
Create_raid(id)
return PLUGIN_HANDLED;
}
}
case 3:
{
emp_block(id)
Ubistva[id] -= 6
}
}
return PLUGIN_HANDLED;
}
public uav_player(id) // postajem balkanska prorocica
{
imauav[id] = false
set_task(15.0, "remove_uav", id)
if(is_user_connected(id) && is_user_alive(id))
{
uav[id] = true
for(new i = 1; i <= g_maxplayers; i++)
{
if(get_user_team(i) != get_user_team(id))
{
emit_sound(i, CHAN_ITEM, "mw2/killstreaks/uav_enemy.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
}
else if(get_user_team(i) == get_user_team(id))
{
emit_sound(i, CHAN_ITEM, "mw2/killstreaks/uav_friend.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
}
}
}
}
public radar_block(id) // i ode radar komsiji
{
imacounteruav[id] = false
for(new i = 1; i <= g_maxplayers; i++)
{
if(is_user_connected(i) && is_user_alive(i))
{
if(get_user_team(i) != get_user_team(id))
{
emit_sound(i, CHAN_ITEM, "mw2/killstreaks/counter_enemy.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
cblocked[i] = true
set_task(15.0, "remove_block", i)
}
else if(get_user_team(i) == get_user_team(id))
{
emit_sound(i, CHAN_ITEM, "mw2/killstreaks/counter_friend.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
}
}
}
}
public emp_block(id) // slepci
{
imaemp[id] = false
emit_sound(id, CHAN_ITEM, "mw2/killstreaks/emp_effect.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
for(new i = 1; i <= g_maxplayers; i++)
{
if(is_user_connected(i) && is_user_alive(i))
{
if(get_user_team(i) != get_user_team(id))
{
emit_sound(i, CHAN_ITEM, "mw2/killstreaks/emp_enemy.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
empblocked[i] = true
set_task(15.0, "remove_eblock", i)
}
else if(get_user_team(i) == get_user_team(id))
{
emit_sound(i, CHAN_ITEM, "mw2/killstreaks/emp_friend.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
}
}
}
}
public remove_uav(id)
uav[id] = false
public remove_cblock(i)
cblocked[i] = false
public remove_eblock(i)
empblocked[i] = false
public Create_raid(id) // leti-leti avion
{
if (!is_user_alive(id) || !imaavion[id])
return PLUGIN_HANDLED
get_user_hitpoint(id, origin3[id])
if(engfunc(EngFunc_PointContents,origin3) == CONTENTS_SKY)
{
client_print(id, print_center, "Ne mozes da pozoves airstrike na to mesto!");
return PLUGIN_HANDLED;
}
imaavion[id] = false;
entity_get_vector(id,EV_VEC_angles,angles3[id])
angles3[id][0] = (angles3[id][0] * 0)
new Players[32]
new playerCount, i, player
get_players(Players, playerCount, "c")
for (i=0; i<playerCount; i++)
{
player = Players[i]
if (get_user_team(player) == get_user_team(id))
emit_sound(player, CHAN_ITEM, "mw2/killstreaks/air_friend.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
else if (get_user_team(player) != get_user_team(id))
emit_sound(player, CHAN_ITEM, "mw2/killstreaks/air_enemy.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
}
set_task(7.0, "Create_jet", id)
set_task(8.0, "Create_bombs", id)
set_task(8.0, "Create_jet", id)
set_task(9.5, "Create_bombs", id)
set_task(9.0, "Create_jet", id)
set_task(11.0, "Create_bombs", id)
return PLUGIN_HANDLED
}
public Create_bombs(id) // miljenko pazi bombina
{
if(is_user_alive(id))
{
emit_sound(id, CHAN_ITEM, "ambience/jetflyby1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
new Float:radlocation[3];
new Float:endlocation[3];
new Float:randomx;
new Float:randomy;
static Float:neworigin[3];
neworigin = origin3[id]
neworigin[2] += 50;
for(new konj = 0; konj<15; konj++)
{
randomx = random_float(-180.0, 180.0);
randomy = random_float(-180.0, 180.0);
radlocation[0] = neworigin[0]+1*randomx;
radlocation[1] = neworigin[1]+1*randomy;
radlocation[2] = neworigin[2];
endlocation[0] = radlocation[0];
endlocation[1] = radlocation[1];
endlocation[2] = radlocation[2] - 5;
new Float: VeloVec[3];
VeloVec[0] = (endlocation[0] - radlocation[0])*1+1;
VeloVec[1] = (endlocation[1] - radlocation[1])*1+1;
VeloVec[2] = (endlocation[2] - radlocation[2])*1+1;
g_bombe[konj] = create_entity("info_target");
entity_set_string(g_bombe[konj], EV_SZ_classname, "Bomb");
entity_set_int(g_bombe[konj], EV_INT_solid, SOLID_TRIGGER);
entity_set_int(g_bombe[konj], EV_INT_movetype, MOVETYPE_BOUNCE);
entity_set_edict(g_bombe[konj], EV_ENT_owner, id);
entity_set_model(g_bombe[konj], "models/rpgrocket.mdl");
entity_set_size(g_bombe[konj], Float:{- 16.0, - 16.0, 0.0 }, Float:{ 16.0, 16.0, 12.0 });
entity_set_origin(g_bombe[konj], radlocation);
}
}
}
public Create_jet(id) // f117 ce zagine preko srbije
{
new Float: Velocity[3];
static Float:neworigin[3];
neworigin = origin3[id]
neworigin[2] = neworigin[2] + 250;
static Float:newangles[3];
newangles = angles3[id]
new g_samolot = create_entity("info_target");
entity_set_string(g_samolot, EV_SZ_classname, "Airplane");
entity_set_vector(g_samolot, EV_VEC_angles, newangles);
entity_set_int(g_samolot, EV_INT_solid, SOLID_TRIGGER);
entity_set_int(g_samolot, EV_INT_movetype, MOVETYPE_FLY);
entity_set_edict(g_samolot, EV_ENT_owner, id);
entity_set_model(g_samolot, "models/Mig29.mdl");
entity_set_origin(g_samolot, neworigin);
VelocityByAim(id, 1500, Velocity);
Velocity[2] = neworigin[2]
entity_set_vector(g_samolot, EV_VEC_velocity, Velocity);
}
ka_boom(ent) // da nikola ka boom!!
{
if (! pev_valid(ent))
return;
new attacker = pev(ent, pev_owner)
new Float:entOrigin[3], Float:fDistance, Float:fDamage, Float:nade_damage, Float:nade_radius, Float:vOrigin[3]
nade_damage = 80.0
nade_radius = 180.0
pev(ent, pev_origin, entOrigin)
entOrigin[2] += 1.0
new victim = -1
while((victim = engfunc(EngFunc_FindEntityInSphere, victim, entOrigin, nade_radius)) != 0)
{
if(attacker == victim || !pev_valid(victim))
continue;
pev(victim, pev_origin, vOrigin)
fDistance = get_distance_f(vOrigin, entOrigin)
fDamage = nade_damage - floatmul(nade_damage, floatdiv(fDistance, nade_radius))
fDamage *= estimate_take_hurt(entOrigin, victim, 0)
if(fDamage > 0.0)
{
if(get_user_team(attacker)!= get_user_team(victim))
{
if(pev(victim, pev_health))
{
if(fDamage > 0.0)
fakedamage(victim,"AirRaid",fDamage,DMG_BLAST)
}
}
}
}
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_EXPLOSION);
write_coord(floatround(entOrigin[0]));
write_coord(floatround(entOrigin[1]));
write_coord(floatround(entOrigin[2]));
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();
}
stock get_user_hitpoint(id, Float:hOrigin[3]) // gde sam naciljao
{
if ( ! is_user_alive( id ))
return 0;
new Float:fOrigin[3], Float:fvAngle[3], Float:fvOffset[3], Float:fvOrigin[3], Float:feOrigin[3];
new Float:fTemp[3];
pev(id, pev_origin, fOrigin);
pev(id, pev_v_angle, fvAngle);
pev(id, pev_view_ofs, fvOffset);
xs_vec_add(fOrigin, fvOffset, fvOrigin);
engfunc(EngFunc_AngleVectors, fvAngle, feOrigin, fTemp, fTemp);
xs_vec_mul_scalar(feOrigin, 9999.9, feOrigin);
xs_vec_add(fvOrigin, feOrigin, feOrigin);
engfunc(EngFunc_TraceLine, fvOrigin, feOrigin, 0, id);
global_get(glb_trace_endpos, hOrigin);
return 1;
}
stock Float:estimate_take_hurt(Float:fPoint[3], ent, ignored) // neam pojma
{
new Float:fOrigin[3]
new tr
new Float:fFraction
pev(ent, pev_origin, fOrigin)
engfunc(EngFunc_TraceLine, fPoint, fOrigin, DONT_IGNORE_MONSTERS, ignored, tr)
get_tr2(tr, TR_flFraction, fFraction)
if (fFraction == 1.0 || get_tr2(tr, TR_pHit) == ent)
return 1.0
return 0.6
}