Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <hamsandwich>
#define PLUGIN "Bonus Box"
#define VERSION "1.0"
#define AUTHOR "NoOTy^"
new CvarFurienSpeed, CvarAntiFurienSpeed;
new bool:HasSpeed[33];
new const ClassName[] = "BonusBox"
new const ClassName[] = "GoldBonusBox"
new Model[2][] = {
"models/Furien_XP/box_furien.mdl",
"models/Furien_XP/box_anti_furien.mdl"
"models/Furien_XP/box_gold.mdl"
}
public plugin_init()
{
register_plugin( PLUGIN, VERSION, AUTHOR );
register_event("HLTV", "RoundStart", "a", "1=0", "2=0")
register_event("CurWeapon", "event_cur_weapon", "be", "1=1");
register_event("DeathMsg", "Death", "a")
RegisterHam(Ham_Spawn, "player", "Spawn", 1);
register_forward(FM_CmdStart, "CmdStart")
register_forward(FM_Touch, "Touch")
CvarFurienSpeed = register_cvar("amx_bonusbox_furien_speed", "800");
CvarAntiFurienSpeed = register_cvar("amx_bonusbox_anitfurien_speed", "400");
}
public plugin_precache() {
for (new i = 0; i < sizeof Model; i++)
precache_model(Model[i])
Sprite = precache_model( "sprites/shockwave.spr")
Sprite2 = precache_model( "sprites/blueflare2.spr")
}
public RoundStart()
{
new ent = FM_NULLENT
static string_class[] = "classname"
while ((ent = engfunc(EngFunc_FindEntityByString, ent, string_class, ClassName)))
set_pev(ent, pev_flags, FL_KILLME)
for(new id = 1; id < get_maxplayers();id++) {
HasSpeed[id] = false
}
}
public Spawn(id) {
HasSpeed[id] = false
}
public Death()
{
new victim = read_data(2);
switch (random_num(1,8)) {
case 1: {
AddBonusBox(victim)
}
case 2: {
AddBonusBox(victim)
}
case 3: {
AddBonusBox(victim)
}
case 4: {
AddBonusBox(victim)
}
case 5: {
AddBonusBox(victim)
}
case 6: {
AddBonusBox(victim)
}
case 7: {
AddBonusBox(victim)
}
case 8: {
AddGoldenBonusBox(victim)
}
}
return HAM_IGNORED
}
public CmdStart(id, uc_handle, seed) {
new ent = fm_find_ent_by_class(id, ClassName)
if(is_valid_ent(ent)) {
new classname[32]
pev(ent, pev_classname, classname, 31)
if (equal(classname, ClassName)) {
if (pev(ent, pev_frame) >= 120)
set_pev(ent, pev_frame, 0.0)
else
set_pev(ent, pev_frame, pev(ent, pev_frame) + 1.0)
switch(pev(ent, pev_team))
{
case 1:
{
}
case 2:
{
}
}
}
}
}
public AddBonusBox(id)
{
if(is_user_connected(id) && cs_get_user_team(id) != CS_TEAM_SPECTATOR) {
new ent = fm_create_entity("info_target")
new origin[3]
get_user_origin(id, origin, 0)
set_pev(ent,pev_classname, ClassName)
switch(cs_get_user_team(id))
{
case CS_TEAM_T: {
engfunc(EngFunc_SetModel,ent, Model[2])
set_pev(ent,pev_team, 2)
}
case CS_TEAM_CT: {
engfunc(EngFunc_SetModel,ent, Model[1])
set_pev(ent,pev_team, 1)
}
}
set_pev(ent,pev_mins,Float:{-10.0,-10.0,0.0})
set_pev(ent,pev_maxs,Float:{10.0,10.0,25.0})
set_pev(ent,pev_size,Float:{-10.0,-10.0,0.0,10.0,10.0,25.0})
engfunc(EngFunc_SetSize,ent,Float:{-10.0,-10.0,0.0},Float:{10.0,10.0,25.0})
set_pev(ent,pev_solid,SOLID_BBOX)
set_pev(ent,pev_movetype,MOVETYPE_TOSS)
new Float:fOrigin[3]
IVecFVec(origin, fOrigin)
set_pev(ent, pev_origin, fOrigin)
}
}
public AddGoldenBonusBox(id)
{
if(is_user_connected(id) && cs_get_user_team(id) != CS_TEAM_SPECTATOR) {
new ent = fm_create_entity("info_target")
new origin[3]
get_user_origin(id, origin, 0)
set_pev(ent,pev_classname, ClassName)
switch(cs_get_user_team(id))
{
case CS_TEAM_T: {
engfunc(EngFunc_SetModel,ent, Model[0])
set_pev(ent,pev_team, 2)
}
case CS_TEAM_CT: {
engfunc(EngFunc_SetModel,ent, Model[0])
set_pev(ent,pev_team, 1)
}
}
set_pev(ent,pev_mins,Float:{-10.0,-10.0,0.0})
set_pev(ent,pev_maxs,Float:{10.0,10.0,25.0})
set_pev(ent,pev_size,Float:{-10.0,-10.0,0.0,10.0,10.0,25.0})
engfunc(EngFunc_SetSize,ent,Float:{-10.0,-10.0,0.0},Float:{10.0,10.0,25.0})
set_pev(ent,pev_solid,SOLID_BBOX)
set_pev(ent,pev_movetype,MOVETYPE_TOSS)
new Float:fOrigin[3]
IVecFVec(origin, fOrigin)
set_pev(ent, pev_origin, fOrigin)
}
}
public Touch(toucher, touched)
{
if (!is_user_alive(toucher) || !pev_valid(touched))
return FMRES_IGNORED
new classname[32]
pev(touched, pev_classname, classname, 31)
if (!equal(classname, ClassName))
return FMRES_IGNORED
if(get_user_team(toucher) == pev(touched, pev_team))
{
GiveBonus(toucher)
set_pev(touched, pev_effects, EF_NODRAW)
set_pev(touched, pev_solid, SOLID_NOT)
remove_entity(touched);
}
return FMRES_IGNORED
}
public event_cur_weapon(id) {
if(HasSpeed[id] && cs_get_user_team(id) == CS_TEAM_T && get_user_maxspeed(id) < get_pcvar_float(CvarFurienSpeed)) {
set_user_maxspeed(id, get_pcvar_float(CvarFurienSpeed));
}
if(HasSpeed[id] && cs_get_user_team(id) == CS_TEAM_CT && get_user_maxspeed(id) < get_pcvar_float(CvarAntiFurienSpeed)) {
set_user_maxspeed(id, get_pcvar_float(CvarAntiFurienSpeed));
}
}
public GiveBonus(id)
{
if(cs_get_user_team(id) == CS_TEAM_T)
{
switch (random_num(1,7))
{
case 1:
{
new Health = 50
fm_set_user_health(id, get_user_health(id) + Health)
ChatColor(id, "!t[Furien]!g Ai primit!t viata!g.")
}
case 2:
{
if(!user_has_weapon(id, CSW_HEGRENADE)) {
fm_give_item(id, "weapon_hegrenade")
}
else {
cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + 1);
}
ChatColor(id, "!t[Furien]!g Ai primit o!t grenada HE!g.")
}
case 3:
{
if(!user_has_weapon(id, CSW_FLASHBANG)) {
fm_give_item(id, "weapon_flashbang")
}
else {
cs_set_user_bpammo(id, CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG) + 1);
}
ChatColor(id, "!t[Furien]!g Ai primit o!t grenada FB!g.")
}
case 4:
{
if(!user_has_weapon(id, CSW_SMOKEGRENADE)) {
fm_give_item(id, "weapon_smokegrenade")
}
else {
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, cs_get_user_bpammo(id, CSW_SMOKEGRENADE) + 1);
}
ChatColor(id, "!t[Furien]!g Ai primit o!t grenada SG!g.")
}
case 5:
{
HasSpeed[id] = true;
set_user_maxspeed(id, get_pcvar_float(CvarFurienSpeed));
ChatColor(id, "!t[Furien]!g Ai primit!t viteza!g.")
}
case 6:
{
if(!is_user_admin(id)) {
ChatColor(id, "!t[Furien]!g Ai primit!t 5XP!g.")
}
}
case 7:
{
new Money = 3000
cs_set_user_money(id, cs_get_user_money(id) + Money)
ChatColor(id, "!t[Furien]!g Ai primit!t 3000$!g.")
}
}
}
else
{
switch (random_num(1,6))
{
case 1:
{
new Health = 50
fm_set_user_health(id, get_user_health(id) + Health)
ChatColor(id, "!t[Furien]!g Ai primit!t viata!g.")
}
case 2:
{
if(!user_has_weapon(id, CSW_HEGRENADE)) {
fm_give_item(id, "weapon_hegrenade")
}
else {
cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + 1);
}
ChatColor(id, "!t[Furien]!g Ai primit o!t grenada HE!g.")
}
case 3:
{
if(!user_has_weapon(id, CSW_FLASHBANG)) {
fm_give_item(id, "weapon_flashbang")
}
else {
cs_set_user_bpammo(id, CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG) + 1);
}
ChatColor(id, "!t[Furien]!g Ai primit o!t grenada FB!g.")
}
case 4:
{
if(!user_has_weapon(id, CSW_SMOKEGRENADE)) {
fm_give_item(id, "weapon_smokegrenade")
}
else {
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, cs_get_user_bpammo(id, CSW_SMOKEGRENADE) + 1);
}
ChatColor(id, "!t[Furien]!g Ai primit o!t grenada SG!g.")
}
case 5:
{
HasSpeed[id] = true;
set_user_maxspeed(id, get_pcvar_float(CvarAntiFurienSpeed));
ChatColor(id, "!t[Furien]!g Ai primit!t viteza!g.")
}
case 6:
{
new Money = 3000
cs_set_user_money(id, cs_get_user_money(id) + Money)
ChatColor(id, "!t[Furien]!g Ai primit!t $3000!g.")
}
}
}
}