COUNTER STRIKE 1.6
HOLA NECESITO AYUDA CON ESTE PLUGIN YO LO QUE QUIERO HACER ES QUE TIRE EXP ORO PLATA CUENDO LO AGARRO el plugin se trata de que caigan cajas del cielo con items adentro ALGUNO ME PUEDE AYUDAR A EDITARLO SE LO BOI A AGRADECER MUCHO
.sma
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <WPMGPrintChatColor>
#define PLUGIN "Worms Presents Style"
#define VERSION "0.7"
#define AUTHOR "Psycrow"
#define SPAWN_MODEL "models/next21_worms_style/target.mdl"
#define PARACHUTE_MODEL "models/next21_worms_style/parachute.mdl"
#define BOX_MODEL "models/next21_worms_style/box.mdl"
#define FALL_SOUND "next21_worms_style/box_fall.wav"
#define CREATE_SOUND "next21_worms_style/box_create.wav"
#define PICKUP_SOUND "next21_worms_style/box_pickup.wav"
#define SPAWN_CLASS "worms_spawn_box"
#define PBOX_CLASS "worms_parachute_box"
#define BOX_CLASS "worms_box"
#define TASK_FIXOIGIN 200
#define TASK_FIXMULTITRACES 400
#define pev_notrace pev_euser1
#define pev_lifes pev_euser2
static
Array:g_wb_id,
Array:g_wb_origin_x,
Array:g_wb_origin_y,
Array:g_wb_origin_z,
Array:g_steam_ids, // steam_id ,
Array:g_weapon_list,
Array:g_weapon_ammo_list,
Array:g_utilities_list,
ExplosionMdl,
SmokeMdl
new
bool: g_save_cpl,
bool: is_spawns_visible,
bool: g_ham_reg,
g_round_times[33],
g_game_times[33]
public plugin_precache()
{
precache_model(SPAWN_MODEL)
precache_model(PARACHUTE_MODEL)
precache_model(BOX_MODEL)
precache_sound(FALL_SOUND)
precache_sound(CREATE_SOUND)
precache_sound(PICKUP_SOUND)
ExplosionMdl = precache_model("sprites/zerogxplode.spr")
SmokeMdl = precache_model("sprites/steam1.spr")
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("cv_spawnbox_timerate","60.0")
register_cvar("cv_box_lifes","0")
register_cvar("cv_wb_times_round", "0")
register_cvar("cv_wb_times_game", "0")
register_cvar("cv_wb_solid", "1")
register_cvar("cv_box_health", "1")
register_cvar("cv_box_health_value", "50")
register_cvar("cv_box_ammo", "1")
register_cvar("cv_box_utilities", "1")
if(!get_cvar_num("cv_box_health") && !get_cvar_num("cv_box_ammo") && !get_cvar_num("cv_box_utilities"))
return
register_clcmd( "say /wb_spawn_menu", "spawn_menu", ADMIN_IMMUNITY)
register_clcmd( "say_team /wb_spawn_menu", "spawn_menu", ADMIN_IMMUNITY)
g_wb_id = ArrayCreate()
g_wb_origin_x = ArrayCreate()
g_wb_origin_y = ArrayCreate()
g_wb_origin_z = ArrayCreate()
if(get_cvar_num("cv_box_ammo"))
{
g_weapon_list = ArrayCreate(32)
g_weapon_ammo_list = ArrayCreate()
}
if(get_cvar_num("cv_box_utilities")) g_utilities_list = ArrayCreate(32)
if(get_cvar_num("cv_wb_times_game")) g_steam_ids = ArrayCreate(32)
new const szEntity[][] =
{
"worldspawn", "func_wall", "func_door", "func_door_rotating",
"func_wall_toggle", "func_breakable", "func_pushable", "func_train",
"func_illusionary", "func_button", "func_rot_button", "func_rotating", BOX_CLASS
}
for(new i; i<sizeof szEntity; i++)
{
register_touch(BOX_CLASS, szEntity[i], "fw_box_touch_world")
register_touch(PBOX_CLASS, szEntity[i], "fw_pbox_touch_world")
}
register_touch(BOX_CLASS, "player", "fw_box_touch_player")
register_touch(PBOX_CLASS, "player", "fw_box_touch_player")
register_logevent("NewRound", 2, "1=Round_Start")
set_task(get_cvar_float("cv_spawnbox_timerate "), "create_box_pre", _, _, _, "b")
get_maps_cfg()
if(get_cvar_num("cv_box_ammo")) get_weapon_list()
if(get_cvar_num("cv_box_utilities")) get_utilities_list()
}
public get_maps_cfg()
{
new map[32]
get_mapname(map, charsmax(map))
formatex(map, charsmax(map),"%s.ini",map)
new cfgDir[64], i_Dir, i_File[128]
get_configsdir(cfgDir, charsmax(cfgDir))
formatex(cfgDir, charsmax(cfgDir), "%s/next21_worms_boxes", cfgDir)
i_Dir = open_dir(cfgDir, i_File, charsmax(i_File))
if(i_Dir)
{
while(next_file(i_Dir, i_File, charsmax(i_File)))
{
if (i_File[0] == '.')
continue
if(equal(map, i_File))
{
format(i_File,128,"%s/%s",cfgDir, i_File)
get_spawns(i_File)
break
}
}
}
else server_print("[%s] Spawns was not loaded", PLUGIN)
}
public set_maps_cfg()
{
new map[32]
get_mapname(map, charsmax(map))
formatex(map, charsmax(map),"%s.ini",map)
new cfgDir[64], i_File[128]
get_configsdir(cfgDir, charsmax(cfgDir))
formatex(cfgDir, charsmax(cfgDir), "%s/next21_worms_boxes", cfgDir)
formatex(i_File, charsmax(i_File),"%s/%s",cfgDir, map)
if(!dir_exists(cfgDir))
if(mkdir(cfgDir))
return
delete_file(i_File)
static spawn_count; spawn_count = ArraySize(g_wb_id)
if(!spawn_count)
return
for(new i=0; i<spawn_count; i++)
{
new text[128], Float:fOrigin[3], ent = ArrayGetCell(g_wb_id, i)
drop_to_floor(ent)
pev(ent, pev_origin, fOrigin)
format(text, charsmax(text),"^"%f^" ^"%f^" ^"%f^"",fOrigin[0], fOrigin[1], fOrigin[2])
write_file(i_File, text, i)
}
}
public get_spawns(i_File[128])
{
new file = fopen(i_File,"rt")
if(!file)
{
server_print("[%s] Spawns was not loaded", PLUGIN)
return
}
while(file && !feof(file))
{
new sfLineData[512]
fgets(file, sfLineData, charsmax(sfLineData))
if(sfLineData[0] == ';')
continue
if(equal(sfLineData,""))
continue
new i_origins[3][32], Float: fOrigins[3]
parse(sfLineData, i_origins[0], 31, i_origins[1], 31, i_origins[2], 31)
fOrigins[0] = str_to_float(i_origins[0])
fOrigins[1] = str_to_float(i_origins[1])
fOrigins[2] = str_to_float(i_origins[2])
create_spawn(fOrigins)
}
fclose(file)
if(!ArraySize(g_wb_id))
server_print("[%s] Spawns was not loaded", PLUGIN)
else if(ArraySize(g_wb_id) == 1)
server_print("[%s] Loaded one spawn", PLUGIN)
else
server_print("[%s] Loaded %d spawns", PLUGIN, ArraySize(g_wb_id))
}
public get_weapon_list()
{
new cfgDir[64], i_File[128]
get_configsdir(cfgDir, charsmax(cfgDir))
formatex(i_File, charsmax(i_File), "%s/next21_worms_boxes/lists/weapon_list.ini", cfgDir)
new file = fopen(i_File,"rt")
if(!file)
return
while(file && !feof(file))
{
new sfLineData[512]
fgets(file, sfLineData, charsmax(sfLineData))
if(sfLineData[0] == ';')
continue
if(equal(sfLineData,""))
continue
new weapon_name[32], weapon_ammo[8]
parse(sfLineData, weapon_name, charsmax(weapon_name), weapon_ammo, charsmax(weapon_ammo))
ArrayPushString(g_weapon_list, weapon_name)
ArrayPushCell(g_weapon_ammo_list, str_to_num(weapon_ammo))
}
fclose(file)
}
public get_utilities_list()
{
new cfgDir[64], i_File[128]
get_configsdir(cfgDir, charsmax(cfgDir))
formatex(i_File, charsmax(i_File), "%s/next21_worms_boxes/lists/utilities_list.ini", cfgDir)
new file = fopen(i_File,"rt")
if(!file)
return
while(file && !feof(file))
{
new sfLineData[512]
fgets(file, sfLineData, charsmax(sfLineData))
if(sfLineData[0] == ';')
continue
if(equal(sfLineData,""))
continue
new utility_name[32]
parse(sfLineData, utility_name, charsmax(utility_name))
ArrayPushString(g_utilities_list, utility_name)
}
fclose(file)
}
public spawn_menu(id)
{
/*if(!is_user_access(id))
{
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tУ вас нет прав на эту функцию", PLUGIN)
return PLUGIN_HANDLED
}*/
is_spawns_visible = true
new menu_name[128]
static spawn_count; spawn_count = ArraySize(g_wb_id)
format(menu_name, charsmax(menu_name), "\r асстановка спаунов для ящиков^n\dТекущий спаун: %d", spawn_count+1)
new i_menu = menu_create(menu_name, "menu_handler")
menu_additem(i_menu, "\wУстановить спаун", "1", 0)
if(!spawn_count)
{
menu_additem(i_menu, "\dУдалить предыдущий спаун", "2", 0)
menu_additem(i_menu, "\dУдалить все спауны", "3", 0)
menu_additem(i_menu, "\dСбросить все ящики", "4", 0)
}
else
{
menu_additem(i_menu, "\wУдалить предыдущий спаун", "2", 0)
menu_additem(i_menu, "\wУдалить все спауны", "3", 0)
menu_additem(i_menu, "\wСбросить все ящики", "4", 0)
}
if(!g_save_cpl)
menu_additem(i_menu, "\dСохранить изменения", "5", 0)
else menu_additem(i_menu, "\wСохранить изменения", "5", 0)
menu_setprop(i_menu, MPROP_EXIT, MEXIT_ALL)
menu_setprop(i_menu, MPROP_EXITNAME, "\yВыход")
menu_display(id, i_menu, 0)
unhide_spawns()
return PLUGIN_HANDLED
}
public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
hide_spawns()
menu_destroy(menu)
return PLUGIN_HANDLED
}
static spawn_count; spawn_count = ArraySize(g_wb_id)
switch(item)
{
case 0:
{
g_save_cpl = true
static Float:fOrigins[3]
fm_get_aim_origin(id, fOrigins)
create_spawn(fOrigins)
spawn_menu(id)
}
case 1:
{
if(!spawn_count)
{
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tНа карте нет спаунов", PLUGIN)
spawn_menu(id)
return PLUGIN_HANDLED
}
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tСпаун удален", PLUGIN)
g_save_cpl = true
remove_entity(ArrayGetCell(g_wb_id, spawn_count-1))
ArrayDeleteItem(g_wb_id, spawn_count-1)
ArrayDeleteItem(g_wb_origin_x, spawn_count-1)
ArrayDeleteItem(g_wb_origin_y, spawn_count-1)
ArrayDeleteItem(g_wb_origin_z, spawn_count-1)
spawn_menu(id)
}
case 2:
{
if(!spawn_count)
{
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tНа карте нет спаунов", PLUGIN)
spawn_menu(id)
return PLUGIN_HANDLED
}
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tБыло удалено !g%d !tспаун.", PLUGIN, spawn_count)
g_save_cpl = true
for(new i=0; i<spawn_count; i++)
remove_entity(ArrayGetCell(g_wb_id, i))
ArrayClear(g_wb_id)
ArrayClear(g_wb_origin_x)
ArrayClear(g_wb_origin_y)
ArrayClear(g_wb_origin_z)
spawn_menu(id)
}
case 3:
{
if(spawn_count)
for(new i=0; i<spawn_count; i++)
create_box
spawn_menu(id)
}
case 4:
{
if(!g_save_cpl)
{
spawn_menu(id)
return PLUGIN_HANDLED
}
g_save_cpl = false
set_maps_cfg()
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tСохранено", PLUGIN)
spawn_menu(id)
}
}
return PLUGIN_HANDLED
}
public create_spawn(Float: fOrigins[3])
{
static ent; ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(!pev_valid(ent)) return
ArrayPushCell(g_wb_id, ent)
ArrayPushCell(g_wb_origin_x, fOrigins[0])
ArrayPushCell(g_wb_origin_y, fOrigins[1])
ArrayPushCell(g_wb_origin_z, fOrigins[2])
set_pev(ent, pev_origin, fOrigins)
engfunc(EngFunc_SetModel, ent, SPAWN_MODEL)
set_pev(ent, pev_solid, SOLID_TRIGGER)
set_pev(ent, pev_movetype, MOVETYPE_NONE)
set_pev(ent, pev_classname, SPAWN_CLASS)
set_pev(ent, pev_lifes, get_cvar_num("cv_box_lifes"))
if(!is_spawns_visible)
entity_set_int(ent, EV_INT_effects, entity_get_int(ent, EV_INT_effects) | EF_NODRAW)
if(!g_ham_reg)
{
RegisterHamFromEntity(Ham_TraceAttack, ent, "fw_box_trace_attack")
g_ham_reg = true
}
}
public create_box_pre()
{
static spawn_count; spawn_count = ArraySize(g_wb_id)
if(!spawn_count)
return
new boxes_sum = 0
for(new i=0; i<spawn_count; i++)
{
static ent; ent = ArrayGetCell(g_wb_id, i)
new classname[32]
pev(ent, pev_classname, classname, charsmax(classname))
if(equal(classname, SPAWN_CLASS) && (pev(ent, pev_lifes) || !get_cvar_num("cv_box_lifes")))
boxes_sum++
}
if(!boxes_sum)
return
new id = -1
while(id == -1)
{
new i = random_num(0, spawn_count-1)
static ent; ent = ArrayGetCell(g_wb_id, i)
new classname[32]
pev(ent, pev_classname, classname, charsmax(classname))
if(equal(classname, SPAWN_CLASS) && (pev(ent, pev_lifes) || !get_cvar_num("cv_box_lifes")))
id = i
}
create_box(id)
return
}
public create_box(id)
{
static ent; ent = ArrayGetCell(g_wb_id, id)
new Float:fOrigin[3], Float:fNewOrigin[3], PC, Float:dist
fOrigin[0] = ArrayGetCell(g_wb_origin_x, id)
fOrigin[1] = ArrayGetCell(g_wb_origin_y, id)
fOrigin[2] = ArrayGetCell(g_wb_origin_z, id)
fNewOrigin = get_origin_to_roof(ent, fOrigin)
PC = engfunc(EngFunc_PointContents, fNewOrigin)
dist = floatabs(fNewOrigin[2]-fOrigin[2])
if(PC != CONTENTS_SKY)
{
if(dist - 80.0 <= 90.0) fNewOrigin[2] = fOrigin[2] + 10.0
else fNewOrigin[2] -= 80.0
}
else fNewOrigin[2] = fOrigin[2] + 200.0
set_pev(ent, pev_origin, fNewOrigin)
engfunc(EngFunc_SetModel, ent, PARACHUTE_MODEL)
if(get_cvar_num("cv_wb_solid"))
set_pev(ent, pev_solid, SOLID_BBOX)
else
set_pev(ent, pev_solid, SOLID_TRIGGER)
set_pev(ent, pev_movetype, MOVETYPE_FLY)
set_pev(ent, pev_velocity, {0.0, 0.0, -40.0})
set_pev(ent, pev_classname, PBOX_CLASS)
new Float:maxs[3] = {10.0, 10.0, 80.0}
new Float:mins[3] = {-10.0, -10.0, 0.0}
engfunc(EngFunc_SetSize, ent, mins, maxs)
entity_set_int(ent, EV_INT_effects, entity_get_int(ent, EV_INT_effects) & ~EF_NODRAW)
emit_sound(ent, CHAN_ITEM, CREATE_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
new iType = -1
while(iType == -1)
{
iType = random_num(0,2)
if(iType == 0 && !get_cvar_num("cv_box_health"))
iType = -1
if(iType == 1 && !get_cvar_num("cv_box_ammo"))
iType = -1
if(iType == 2 && !get_cvar_num("cv_box_utilities"))
iType = -1
}
set_pev(ent, pev_body, iType)
set_pev(ent, pev_framerate, 1.0)
set_pev(ent, pev_sequence, iType)
}
public explode_box(ent)
{
if(!is_valid_ent(ent)) return
static iOrigin[3], Float: fOrigin[3]
pev(ent, pev_origin, fOrigin)
iOrigin[0] = floatround(fOrigin[0])
iOrigin[1] = floatround(fOrigin[1])
iOrigin[2] = floatround(fOrigin[2])
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(3)
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_short(ExplosionMdl)
write_byte(random_num(0,20) + 20)
write_byte(12)
write_byte(0)
message_end()
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(5)
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2] + 10)
write_short(SmokeMdl)
write_byte(60)
write_byte(10)
message_end()
}
public hide_box(ent)
{
if(!is_valid_ent(ent)) return
set_pev(ent, pev_solid, SOLID_NOT)
set_pev(ent, pev_movetype, MOVETYPE_NONE)
set_pev(ent, pev_classname, SPAWN_CLASS)
if(!is_spawns_visible)
entity_set_int(ent, EV_INT_effects, entity_get_int(ent, EV_INT_effects) | EF_NODRAW)
engfunc(EngFunc_SetModel, ent, SPAWN_MODEL)
new Float:maxs[3] = {0.0, 0.0, 0.0}
new Float:mins[3] = {0.0, 0.0, 0.0}
engfunc(EngFunc_SetSize, ent, mins, maxs)
static spawns_count; spawns_count = ArraySize(g_wb_id)
for (new i=0; i<spawns_count; i++)
if(ent == ArrayGetCell(g_wb_id, i))
{
new Float:fOrigin[3]
fOrigin[0] = ArrayGetCell(g_wb_origin_x, i)
fOrigin[1] = ArrayGetCell(g_wb_origin_y, i)
fOrigin[2] = ArrayGetCell(g_wb_origin_z, i)
set_pev(ent, pev_origin, fOrigin)
}
if(pev(ent, pev_lifes))
set_pev(ent, pev_lifes, pev(ent, pev_lifes)-1)
}
public hide_spawns()
{
is_spawns_visible = false
static spawns_count; spawns_count = ArraySize(g_wb_id)
if(!g_wb_id) return
for (new i=0; i<spawns_count; i++)
{
static classname[32], ent; ent = ArrayGetCell(g_wb_id, i)
pev(ent, pev_classname, classname, charsmax(classname))
if(!equal(classname, SPAWN_CLASS)) continue
entity_set_int(ent, EV_INT_effects, entity_get_int(ent, EV_INT_effects) | EF_NODRAW)
}
}
public unhide_spawns()
{
static spawns_count; spawns_count = ArraySize(g_wb_id)
if(!g_wb_id) return
for (new i=0; i<spawns_count; i++)
{
static classname[32], ent; ent = ArrayGetCell(g_wb_id, i)
pev(ent, pev_classname, classname, charsmax(classname))
if(!equal(classname, SPAWN_CLASS)) continue
entity_set_int(ent, EV_INT_effects, entity_get_int(ent, EV_INT_effects) & ~EF_NODRAW)
}
}
public fw_box_trace_attack(ent, attacker, Float:damage, Float:dir[3], ptr, damagetype)
{
if(!is_valid_ent(ent)) return
new classname[32]
pev(ent, pev_classname, classname, charsmax(classname))
if(!equal(classname, PBOX_CLASS))
{
if(equal(classname, BOX_CLASS))
{
if(!pev(ent, pev_notrace))
{
explode_box(ent)
hide_box(ent)
}
}
return
}
new Float: endtrace[3]
fm_get_aim_origin(attacker, endtrace)
if(find_closest_bone_to_gunshot(ent, endtrace) == 1)
{
engfunc(EngFunc_SetModel, ent, BOX_MODEL)
set_pev(ent, pev_velocity, {0.0, 0.0, -1.0})
set_pev(ent, pev_movetype, MOVETYPE_BOUNCE)
set_pev(ent, pev_classname, BOX_CLASS)
/* */
set_pev(ent, pev_notrace, 1)
set_task(0.1,"set_euser1", ent+TASK_FIXMULTITRACES)
new Float:maxs[3] = {10.0, 10.0, 28.0}
new Float:mins[3] = {-10.0, -10.0, 0.0}
engfunc(EngFunc_SetSize, ent, mins, maxs)
}
else
{
explode_box(ent)
hide_box(ent)
}
}
public fw_box_touch_player(ent, player)
{
if(!is_valid_ent(ent)) return
if(get_cvar_num("cv_wb_times_round") && !g_round_times[player]) return
if(get_cvar_num("cv_wb_times_game") && !g_game_times[player]) return
if(g_round_times[player]) g_round_times[player]--
if(g_game_times[player]) g_game_times[player]--
client_cmd(player, "spk %s", PICKUP_SOUND)
static iType; iType = pev(ent, pev_body)
switch(iType)
{
case 0:
{
static hp; hp = get_cvar_num("cv_box_health_value")
fm_set_user_health(player, pev(player, pev_health)+hp)
PrintChatColor(player, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tВы получаете !gздоровье (%d hp)", PLUGIN, hp)
}
case 1:
{
static weapon_list_count; weapon_list_count = ArraySize(g_weapon_list)
if(!weapon_list_count)
{
PrintChatColor(player, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЯщик оказался пустым", PLUGIN)
hide_box(ent)
return
}
static i; i = random_num(0, weapon_list_count-1)
static weapon_name[32], weapon_short_name[16], blank_str[2]
ArrayGetString(g_weapon_list, i, weapon_name, charsmax(weapon_name))
strtok(weapon_name, blank_str, charsmax(blank_str), weapon_short_name, charsmax(weapon_short_name), '_')
new wEnt = find_ent_by_owner(-1, weapon_name, player)
if(!wEnt)
{
wEnt = ham_give_weapon(player, weapon_name)
PrintChatColor(player, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tВы подобрали !g%s", PLUGIN, weapon_short_name)
cs_set_weapon_ammo(wEnt, ArrayGetCell(g_weapon_ammo_list, i))
}
else
{
PrintChatColor(player, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tВы подобрали патроны для !g%s", PLUGIN, weapon_short_name)
cs_set_user_bpammo(player, weapon_to_const(weapon_name), cs_get_user_bpammo(player, weapon_to_const(weapon_name)) + ArrayGetCell(g_weapon_ammo_list, i))
}
}
case 2:
{
static utilities_list_count; utilities_list_count = ArraySize(g_utilities_list)
if(!utilities_list_count)
{
PrintChatColor(player, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЯщик оказался пустым", PLUGIN)
hide_box(ent)
return
}
static i; i = random_num(0, utilities_list_count-1)
static utility_name[32]
ArrayGetString(g_utilities_list, i, utility_name, charsmax(utility_name))
if(equal(utility_name,"nightvision"))
{
PrintChatColor(player, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tВы подобрали !gnightvision", PLUGIN)
cs_set_user_nvg(player)
}
else if(equal(utility_name,"defuse kit") && cs_get_user_team(player) == CS_TEAM_CT)
{
PrintChatColor(player, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tВы подобрали !gdefuse kit", PLUGIN)
cs_set_user_defuse(player)
}
else if(equal(utility_name,"armor"))
{
PrintChatColor(player, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tВы подобрали !garmor", PLUGIN)
cs_set_user_armor(player, 100, CS_ARMOR_KEVLAR)
}
else if(equal(utility_name,"armor+helmet"))
{
PrintChatColor(player, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tВы подобрали !garmor+helmet", PLUGIN)
cs_set_user_armor(player, 100, CS_ARMOR_VESTHELM)
}
else PrintChatColor(player, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tЯщик оказался пустым", PLUGIN)
}
}
hide_box(ent)
}
public fw_pbox_touch_world(ent, world)
{
if(!is_valid_ent(ent)) return
engfunc(EngFunc_SetModel, ent, BOX_MODEL)
set_pev(ent, pev_velocity, {0.0, 0.0, 0.0})
set_pev(ent, pev_movetype, MOVETYPE_BOUNCE)
set_pev(ent, pev_classname, BOX_CLASS)
/* */
set_pev(ent, pev_notrace, 1)
set_task(0.1,"set_euser1", ent+TASK_FIXMULTITRACES)
new Float:maxs[3] = {10.0, 10.0, 28.0}
new Float:mins[3] = {-10.0, -10.0, 0.0}
engfunc(EngFunc_SetSize, ent, mins, maxs)
}
public set_euser1(ent) set_pev(ent-TASK_FIXMULTITRACES, pev_notrace, 0)
public fw_box_touch_world(ent, world)
{
if(!is_valid_ent(ent)) return
static Float:fVelocity[3]
pev(ent, pev_velocity, fVelocity)
fVelocity[0] *= 0.85
fVelocity[1] *= 0.85
fVelocity[2] *= 0.85
set_pev(ent, pev_velocity, fVelocity)
if(floatabs(fVelocity[2]) > 100.0) emit_sound(ent, CHAN_ITEM, FALL_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
else emit_sound(ent, CHAN_ITEM, FALL_SOUND, floatabs(fVelocity[2])/100, ATTN_NORM, 0, PITCH_NORM)
}
public NewRound()
{
for(new id=1;id<=32;id++)
g_round_times[id] = get_cvar_num("cv_wb_times_round")
}
public client_putinserver(id)
{
if(!get_cvar_num("cv_wb_times_game"))
return
static id_count; id_count = ArraySize(g_steam_ids)
new steam_id[32]
get_user_authid(id, steam_id, charsmax(steam_id))
for(new i=0;i<id_count;i++)
{
new saved_steam_id[32]
ArrayGetString (g_steam_ids, id_count-1, saved_steam_id, charsmax(saved_steam_id))
if(equal(saved_steam_id, steam_id))
return
}
g_game_times[id] = get_cvar_num("cv_wb_times_game")
ArrayPushString(g_steam_ids, steam_id)
return
}
stock find_closest_bone_to_gunshot(victim, Float:endtrace[3])
{
new Float:angles[3], Floatrigin[3], Float:dist = 9999999.99, Float:curorigin[3], bone_nr
for (new i=0;i<=2;i++)
{
engfunc(EngFunc_GetBonePosition, victim, i, curorigin, angles)
xs_vec_sub(curorigin, endtrace, angles)
if(xs_vec_len(angles) <= dist)
{
origin = curorigin
dist = xs_vec_len(angles)
bone_nr = i
}
}
return bone_nr
}
stock Float: get_origin_to_roof(ent, Float:start[3])
{
new Float:dest[3] = {-90.0, 0.0, 0.0}
engfunc(EngFunc_MakeVectors, dest)
global_get(glb_v_forward, dest)
xs_vec_mul_scalar(dest, 9999.0, dest)
xs_vec_add(start, dest, dest)
engfunc(EngFunc_TraceLine, start, dest, 0, ent, 0)
new Floatrigin[3]
get_tr2(0, TR_vecEndPos, origin)
return origin
}
stock ham_give_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0
new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(Eng Func_ AllocString,weapon))
if(!pev_valid(wEnt)) return 0
set_pev(wEnt,pev_spawnflags,SF_NORESPAWN)
dllfunc(DLLFunc_Spawn,wEnt)
if(!ExecuteHamB(Ham_AddPlayerItem,id,wEnt))
{
if(pev_valid(wEnt)) set_pev(wEnt,pev_flags,pev(wEnt,pev_flags) | FL_KILLME)
return 0
}
ExecuteHamB(Ham_Item_AttachToPlayer,wEnt,id)
return wEnt
}
stock weapon_to_const(weapon[])
{
if(equal(weapon,"weapon_p228")) return CSW_P228
if(equal(weapon,"weapon_scout")) return CSW_SCOUT
if(equal(weapon,"weapon_hegrenade")) return CSW_HEGRENADE
if(equal(weapon,"weapon_xm1014")) return CSW_XM1014
if(equal(weapon,"weapon_c4")) return CSW_C4
if(equal(weapon,"weapon_mac10")) return CSW_MAC10
if(equal(weapon,"weapon_aug")) return CSW_AUG
if(equal(weapon,"weapon_smokegrenade")) return CSW_SMOKEGRENADE
if(equal(weapon,"weapon_elite")) return CSW_ELITE
if(equal(weapon,"weapon_fiveseven")) return CSW_FIVESEVEN
if(equal(weapon,"weapon_ump45")) return CSW_UMP45
if(equal(weapon,"weapon_sg550")) return CSW_SG550
if(equal(weapon,"weapon_galil")) return CSW_GALIL
if(equal(weapon,"weapon_famas")) return CSW_FAMAS
if(equal(weapon,"weapon_usp")) return CSW_USP
if(equal(weapon,"weapon_glock18")) return CSW_GLOCK18
if(equal(weapon,"weapon_awp")) return CSW_AWP
if(equal(weapon,"weapon_mp5navy")) return CSW_MP5NAVY
if(equal(weapon,"weapon_m249")) return CSW_M249
if(equal(weapon,"weapon_m3")) return CSW_M3
if(equal(weapon,"weapon_m4a1")) return CSW_M4A1
if(equal(weapon,"weapon_tmp")) return CSW_TMP
if(equal(weapon,"weapon_g3sg1")) return CSW_G3SG1
if(equal(weapon,"weapon_flashbang")) return CSW_FLASHBANG
if(equal(weapon,"weapon_deagle")) return CSW_DEAGLE
if(equal(weapon,"weapon_sg552")) return CSW_SG552
if(equal(weapon,"weapon_ak47")) return CSW_AK47
if(equal(weapon,"weapon_knife")) return CSW_KNIFE
if(equal(weapon,"weapon_p90")) return CSW_P90
return 0
}
|