Raised This Month: $51 Target: $400
 12% 

Who can help to edit the ammo packs?


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
JARUSIA
Junior Member
Join Date: Apr 2019
Location: Lithuania
Old 04-30-2019 , 06:01   Who can help to edit the ammo packs?
Reply With Quote #1

Hello maybe someone can help to edit ammo packs to receive to supply box? Now i see this in supplybox.cfg

You must type extractly the name of the Item in Extra Item Menu of this will make you server Crash
SUPPLYBOX_ITEM = NightVision, Napalm Nade, Frost Nade, Flare, M249 Para Machinegun, SG550 Auto-Sniper, G3SG1 Auto-Sniper

Is really to add ammo packs how prize? with random value ? 30-20-10-5 or etc.?
JARUSIA is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 04-30-2019 , 07:52   Re: Who can help to edit the ammo packs?
Reply With Quote #2

Nobody can help you unless you provide the plugin(s).
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
JARUSIA
Junior Member
Join Date: Apr 2019
Location: Lithuania
Old 04-30-2019 , 09:34   Re: Who can help to edit the ammo packs?
Reply With Quote #3

/* ============================================= =========
Plugin Name: [ZP] Addon: SupplyBox
Type: Addon
Version: 1.0
Author: Dias
Description: This plugin can make supplybox in random location,
to support human team to fight back the zombie
Credits:
- Dias | Made Plugin
- Sontung0 | For Some Stock and config for Supplybox (Special Thank)
- Twilight Suzuka | For Some Stock
- CSO | For Model, Sound, Sprite of SupplyBox
- 4eRT | For Read ini file code i got from plugin "[ZP] Random Extra On New Round"
============================================= ========= */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <zombieplague>
#include <xs>

#define PLUGIN "[ZP] Addon: SupplyBox"
#define VERSION "1.1"
#define AUTHOR "Dias"

// ======================= SUPPLYBOX CONFIG ======================== //
#define SUPPLYBOX_CLASSNAME "supplybox"
#define TASK_SUPPLYBOX 128256
#define TASK_SUPPLYBOX2 138266
#define TASK_SUPPLYBOX_HELP 129257
#define TASK_SUPPLYBOX_WAIT 130259
const MAX_SUPPLYBOX_ENT = 100
new const supplybox_spawn_file[] = "%s/zp_supplybox/%s.cfg"
new const supplybox_item_file[] = "%s/zp_supplybox.ini"
new const supplybox_icon_spr[] = "sprites/zombie_plague/icon_supplybox.spr"
new const supplybox_model[][] = {
"models/zombie_plague/supplybox.mdl"
}
new const supplybox_drop_sound[][] = {
"zombie_plague/supplybox_drop.wav"
}
new const supplybox_pickup_sound[][] = {
"zombie_plague/supplybox_pickup.wav"
}
// ======================= END OF SUPPLYBOX CONFIG ======================== //

// Below here is hard code. Don't edit anything except cvars
new g_supplybox_num, g_supplybox_wait[33], supplybox_count, Array:supplybox_item,
supplybox_ent[MAX_SUPPLYBOX_ENT], g_supplybox_icon_id, Float:g_supplybox_spawn[MAX_SUPPLYBOX_ENT][3],
g_total_supplybox_spawn
new cvar_supplybox_icon, cvar_supplybox_max, cvar_supplybox_num, cvar_supplybox_totalintime,
cvar_supplybox_time, cvar_supplybox_delaytime, cvar_supplybox_icon_size, cvar_supplybox_icon_light
new bool:made_supplybox, Float:g_icon_delay[33], g_newround, g_endround

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_event("HLTV", "event_newround", "a", "1=0", "2=0")
register_logevent("logevent_round_end", 2, "1=Round_End")

register_forward(FM_Touch, "fw_supplybox_touch")

cvar_supplybox_max = register_cvar("zp_supplybox_max", "16")
cvar_supplybox_num = register_cvar("zp_supplybox_num", "2")
cvar_supplybox_totalintime = register_cvar("zp_supplybox_totalintime", "4")
cvar_supplybox_time = register_cvar("zp_supplybox_time", "30")
cvar_supplybox_icon = register_cvar("zp_supplybox_icon", "1")
cvar_supplybox_delaytime = register_cvar("zp_supplybox_icon_delay_time", "0.03")
cvar_supplybox_icon_size = register_cvar("zp_supplybox_icon_size", "2")
cvar_supplybox_icon_light = register_cvar("zp_supplybox_icon_light", "100")

set_task(2.0, "update_radar", _, _, _, "b")
}

public plugin_precache()
{
supplybox_item = ArrayCreate(64, 1)

load_supplybox_spawn()
load_supplybox_item()

static i
for(i = 0; i < sizeof(supplybox_model); i++)
engfunc(EngFunc_PrecacheModel, supplybox_model[i])
for(i = 0; i < sizeof(supplybox_drop_sound); i++)
engfunc(EngFunc_PrecacheSound, supplybox_drop_sound[i])
for(i = 0; i < sizeof(supplybox_pickup_sound); i++)
engfunc(EngFunc_PrecacheSound, supplybox_pickup_sound[i])

g_supplybox_icon_id = engfunc(EngFunc_PrecacheModel, supplybox_icon_spr)
}

public plugin_cfg()
{
set_task(0.5, "event_newround")
}

public load_supplybox_spawn()
{
// Check for spawns points of the current map
new cfgdir[32], mapname[32], filepath[100], linedata[64]
get_configsdir(cfgdir, charsmax(cfgdir))
get_mapname(mapname, charsmax(mapname))
formatex(filepath, charsmax(filepath), supplybox_spawn_file, cfgdir, mapname)

// Load spawns points
if (file_exists(filepath))
{
new file = fopen(filepath,"rt"), row[4][6]

while (file && !feof(file))
{
fgets(file, linedata, charsmax(linedata))

// invalid spawn
if(!linedata[0] || str_count(linedata,' ') < 2) continue;

// get spawn point data
parse(linedata,row[0],5,row[1],5,row[2],5)

// origin
g_supplybox_spawn[g_total_supplybox_spawn][0] = floatstr(row[0])
g_supplybox_spawn[g_total_supplybox_spawn][1] = floatstr(row[1])
g_supplybox_spawn[g_total_supplybox_spawn][2] = floatstr(row[2])

g_total_supplybox_spawn++
if (g_total_supplybox_spawn >= MAX_SUPPLYBOX_ENT)
break
}
if (file) fclose(file)
}
}

public load_supplybox_item()
{
new filepath[64]
get_configsdir(filepath, charsmax(filepath))
format(filepath, charsmax(filepath), supplybox_item_file, filepath)

if (!file_exists(filepath))
{
new error_msg[100]
formatex(error_msg, charsmax(error_msg), "[ZP-SupplyBox][Error] Item File Not Found")
set_fail_state(error_msg)
return
}

new line[1024], key[64], value[960]
new file = fopen(filepath, "rt")

while (!feof(file) && file)
{
fgets(file, line, charsmax(line));
replace(line, charsmax(line), "^n", "")

if (!line[0] || line[0] == ';')
continue

strtok(line, key, charsmax(key), value, charsmax(value), '=')
trim(key)
trim(value)

if (equali(key, "SUPPLYBOX_ITEM"))
{
while (value[0] != 0 && strtok(value, key, charsmax(key), value, charsmax(value), ','))
{
trim(key)
trim(value)
ArrayPushString(supplybox_item, key)
}
}
}
}

public update_radar()
{
for (new id = 1; id <= get_maxplayers(); id++)
{
if (!is_user_alive(id) || !supplybox_count || zp_get_user_zombie(id))
continue

static i, next_ent
i = 1
while(i <= supplybox_count)
{
next_ent = supplybox_ent[i]
if (next_ent && is_valid_ent(next_ent))
{
static Floatrigin[3]
pev(next_ent, pev_origin, origin)

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HostagePos"), {0,0,0}, id)
write_byte(id)
write_byte(i)
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2]))
message_end()

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HostageK"), {0,0,0}, id)
write_byte(i)
message_end()
}

i++
}
}
}

public event_newround()
{
made_supplybox = false
g_newround = 1
g_endround = 0

remove_supplybox()
supplybox_count = 0

if(task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)
if(task_exists(TASK_SUPPLYBOX2)) remove_task(TASK_SUPPLYBOX2)
if(task_exists(TASK_SUPPLYBOX_HELP)) remove_task(TASK_SUPPLYBOX_HELP)
}

public logevent_round_end() g_endround = 1

public zp_user_infected_post()
{
if(!made_supplybox)
{
g_newround = 0
made_supplybox = true

if(task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)

if(!g_total_supplybox_spawn)
{
client_print(0, print_console, "[ZP - SupplyBox][Error] Spawn Point Not Found. Please Create Spawn Point")
} else {
set_task(get_pcvar_float(cvar_supplybox_time) , "create_supplybox", TASK_SUPPLYBOX)
}
}
}

public client_PostThink(id)
{
if (!get_pcvar_num(cvar_supplybox_icon) || !is_user_alive(id) || zp_get_user_zombie(id))
return
if((g_icon_delay[id] + get_pcvar_float(cvar_supplybox_delaytime)) > get_gametime())
return

g_icon_delay[id] = get_gametime()

if (supplybox_count)
{
static i, box_ent
i = 1

while (i <= supplybox_count)
{
box_ent = supplybox_ent[i]
create_icon_origin(id, box_ent, g_supplybox_icon_id)
i++
}
}
}

public create_supplybox()
{
if (supplybox_count >= get_pcvar_num(cvar_supplybox_max) || g_newround || g_endround)
return

if (task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)
set_task(get_pcvar_float(cvar_supplybox_time) , "create_supplybox", TASK_SUPPLYBOX)

if (get_total_supplybox() >= get_pcvar_num(cvar_supplybox_totalintime))
return

g_supplybox_num = 0
create_supplybox2()

static random_sound
random_sound = random_num(0, charsmax(supplybox_drop_sound))
client_cmd(0, "spk ^"%s^"", supplybox_drop_sound[random_sound])

for(new i = 0; i < get_maxplayers(); i++)
{
if(is_user_alive(i) && is_user_connected(i) && !zp_get_user_zombie(i))
client_print(i, print_center, "Supplybox has appeared. Find it")
}

if (task_exists(TASK_SUPPLYBOX_HELP)) remove_task(TASK_SUPPLYBOX_HELP)
set_task(3.0, "show_supplybox_help", TASK_SUPPLYBOX_HELP)

if (task_exists(TASK_SUPPLYBOX2)) remove_task(TASK_SUPPLYBOX2)
set_task(0.5, "create_supplybox2", TASK_SUPPLYBOX2, _, _, "b")
}

public create_supplybox2()
{
if (supplybox_count >= get_pcvar_num(cvar_supplybox_max)
|| get_total_supplybox() >= get_pcvar_num(cvar_supplybox_totalintime) || g_newround || g_endround)
{
remove_task(TASK_SUPPLYBOX2)
return
}

supplybox_count++
g_supplybox_num++

static item
item = random(ArraySize(supplybox_item))

new ent = create_entity("info_target")

entity_set_string(ent, EV_SZ_classname, SUPPLYBOX_CLASSNAME)
entity_set_model(ent, supplybox_model[random_num(0, charsmax(supplybox_model))])
entity_set_size(ent,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
entity_set_int(ent,EV_INT_solid,1)
entity_set_int(ent,EV_INT_movetype,6)
entity_set_int(ent, EV_INT_iuser1, item)
entity_set_int(ent, EV_INT_iuser2, supplybox_count)

static Float:Origin[3]
collect_spawn_point(Origin)
engfunc(EngFunc_SetOrigin, ent, Origin)

supplybox_ent[supplybox_count] = ent

if ((g_supplybox_num >= get_pcvar_num(cvar_supplybox_num)) && task_exists(TASK_SUPPLYBOX2))
remove_task(TASK_SUPPLYBOX2)
}

public get_total_supplybox()
{
new total
for (new i = 1; i <= supplybox_count; i++)
{
if (supplybox_ent[i]) total += 1
}
return total
}

public show_supplybox_help()
{
for(new i = 0; i < get_maxplayers(); i++)
{
if(is_user_alive(i) && is_user_connected(i) && !zp_get_user_zombie(i))
client_print(i, print_center, "You can see Supplybox Location in the Radar")
}
}

public remove_supplybox()
{
remove_ent_by_class(SUPPLYBOX_CLASSNAME)
new supplybox_ent_reset[MAX_SUPPLYBOX_ENT]
supplybox_ent = supplybox_ent_reset
}

public fw_supplybox_touch(ent, id)
{
if (!pev_valid(ent) || !is_user_alive(id) || zp_get_user_zombie(id)
|| zp_get_user_survivor(id) || zp_get_user_nemesis(id) || g_supplybox_wait[id])
return FMRES_IGNORED

static classname[32]
entity_get_string(ent,EV_SZ_classname,classna me,31)

if (equal(classname, SUPPLYBOX_CLASSNAME))
{
static item_id, item[64]
item_id = entity_get_int(ent, EV_INT_iuser1)
ArrayGetString(supplybox_item, item_id, item, charsmax(item))

zp_force_buy_extra_item(id, zp_get_extra_item_id(item), 1)

static name[32]
get_user_name(id, name, sizeof(name))
client_print(0, print_center, "%s has received %s from SupplyBox !!!", name, item)

static random_sound
random_sound = random_num(0, charsmax(supplybox_pickup_sound))
emit_sound(id, CHAN_VOICE, supplybox_pickup_sound[random_sound], 1.0, ATTN_NORM, 0, PITCH_NORM)

new num_box = entity_get_int(ent, EV_INT_iuser2)
supplybox_ent[num_box] = 0
remove_entity(ent)

g_supplybox_wait[id] = 1
if (task_exists(id+TASK_SUPPLYBOX_WAIT)) remove_task(id+TASK_SUPPLYBOX_WAIT)
set_task(2.0, "remove_supplybox_wait", id+TASK_SUPPLYBOX_WAIT)
}

return FMRES_IGNORED
}

public remove_supplybox_wait(id)
{
id -= TASK_SUPPLYBOX_WAIT

g_supplybox_wait[id] = 0
if (task_exists(id+TASK_SUPPLYBOX_WAIT)) remove_task(id+TASK_SUPPLYBOX_WAIT)
}

stock collect_spawn_point(Floatrigin[3]) // By Sontung0
{
for (new i = 1; i <= g_total_supplybox_spawn *3 ; i++)
{
origin = g_supplybox_spawn[random(g_total_supplybox_spawn)]
if (check_spawn_box(origin)) return 1;
}

return 0;
}
stock check_spawn_box(Floatrigin[3]) // By Sontung0
{
new FloatriginE[3], Floatrigin1[3], Floatrigin2[3]
new ent = -1
while ((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", SUPPLYBOX_CLASSNAME)) != 0)
{
pev(ent, pev_origin, originE)

// xoy
origin1 = origin
origin2 = originE
origin1[2] = origin2[2] = 0.0
if (vector_distance(origin1, origin2) <= 32.0) return 0;
}
return 1;
}

stock create_icon_origin(id, ent, sprite) // By sontung0
{
if (!pev_valid(ent)) return;

new Float:fMyOrigin[3]
entity_get_vector(id, EV_VEC_origin, fMyOrigin)

new target = ent
new Float:fTargetOrigin[3]
entity_get_vector(target, EV_VEC_origin, fTargetOrigin)
fTargetOrigin[2] += 40.0

if (!is_in_viewcone(id, fTargetOrigin)) return;

new Float:fMiddle[3], Float:fHitPoint[3]
xs_vec_sub(fTargetOrigin, fMyOrigin, fMiddle)
trace_line(-1, fMyOrigin, fTargetOrigin, fHitPoint)

new Float:fWallOffset[3], Float:fDistanceToWall
fDistanceToWall = vector_distance(fMyOrigin, fHitPoint) - 10.0
normalize(fMiddle, fWallOffset, fDistanceToWall)

new Float:fSpriteOffset[3]
xs_vec_add(fWallOffset, fMyOrigin, fSpriteOffset)
new Float:fScale
fScale = 0.01 * fDistanceToWall

new scale = floatround(fScale)
scale = max(scale, 1)
scale = min(scale, get_pcvar_num(cvar_supplybox_icon_size))
scale = max(scale, 1)

te_sprite(id, fSpriteOffset, sprite, scale, get_pcvar_num(cvar_supplybox_icon_light))
}

stock te_sprite(id, Floatrigin[3], sprite, scale, brightness) // By sontung0
{
message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
write_byte(TE_SPRITE)
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2]))
write_short(sprite)
write_byte(scale)
write_byte(brightness)
message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul) // By sontung0
{
new Float:fLen = xs_vec_len(fIn)
xs_vec_copy(fIn, fOut)

fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}

stock str_count(const str[], searchchar) // By Twilight Suzuka
{
new count, i, len = strlen(str)

for (i = 0; i <= len; i++)
{
if(str[i] == searchchar)
count++
}

return count;
}

stock remove_ent_by_class(classname[])
{
new nextitem = find_ent_by_class(-1, classname)
while(nextitem)
{
remove_entity(nextitem)
nextitem = find_ent_by_class(-1, classname)
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1066\\ f0\\ fs16 \n\\ par }
*/
JARUSIA is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 04-30-2019 , 09:57   Re: Who can help to edit the ammo packs?
Reply With Quote #4

Good. Now put the code in a proper [php] tag in order to make it readable for the human eye.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
JARUSIA
Junior Member
Join Date: Apr 2019
Location: Lithuania
Old 04-30-2019 , 10:30   Re: Who can help to edit the ammo packs?
Reply With Quote #5

https://www11.zippyshare.com/v/fLbL0HqC/file.html
JARUSIA is offline
tarsisd2
Veteran Member
Join Date: Feb 2016
Location: brazil
Old 04-30-2019 , 12:04   Re: Who can help to edit the ammo packs?
Reply With Quote #6

Quote:
Originally Posted by JARUSIA View Post
he didn't mean for you to upload the sma file, he meant to insert proper [php] TAG on your post so it doesn't look horrible like it do now!

like this:

PHP Code:
/* ============================================= =========
Plugin Name: [ZP] Addon: SupplyBox
Type: Addon
Version: 1.0
Author: Dias
Description: This plugin can make supplybox in random location, 
to support human team to fight back the zombie
Credits:
- Dias | Made Plugin
- Sontung0 | For Some Stock and config for Supplybox (Special Thank)
- Twilight Suzuka | For Some Stock
- CSO | For Model, Sound, Sprite of SupplyBox
- 4eRT | For Read ini file code i got from plugin "[ZP] Random Extra On New Round"
============================================= ========= */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <zombieplague>
#include <xs>

#define PLUGIN "[ZP] Addon: SupplyBox"
#define VERSION "1.1"
#define AUTHOR "Dias"

// ======================= SUPPLYBOX CONFIG ======================== // 
#define SUPPLYBOX_CLASSNAME "supplybox"
#define TASK_SUPPLYBOX 128256
#define TASK_SUPPLYBOX2 138266
#define TASK_SUPPLYBOX_HELP 129257
#define TASK_SUPPLYBOX_WAIT 130259
const MAX_SUPPLYBOX_ENT 100
new const supplybox_spawn_file[] = "%s/zp_supplybox/%s.cfg"
new const supplybox_item_file[] = "%s/zp_supplybox.ini"
new const supplybox_icon_spr[] = "sprites/zombie_plague/icon_supplybox.spr"
new const supplybox_model[][] = {
"models/zombie_plague/supplybox.mdl"
}
new const 
supplybox_drop_sound[][] = {
"zombie_plague/supplybox_drop.wav"
}
new const 
supplybox_pickup_sound[][] = {
"zombie_plague/supplybox_pickup.wav"
}
// ======================= END OF SUPPLYBOX CONFIG ======================== // 

// Below here is hard code. Don't edit anything except cvars
new g_supplybox_numg_supplybox_wait[33], supplybox_count, Array:supplybox_item
supplybox_ent[MAX_SUPPLYBOX_ENT], g_supplybox_icon_idFloat:g_supplybox_spawn[MAX_SUPPLYBOX_ENT][3],
g_total_supplybox_spawn
new cvar_supplybox_iconcvar_supplybox_maxcvar_supplybox_numcvar_supplybox_totalintime
cvar_supplybox_timecvar_supplybox_delaytimecvar_supplybox_icon_sizecvar_supplybox_icon_light
new bool:made_supplyboxFloat:g_icon_delay[33], g_newroundg_endround

public plugin_init()
{
register_plugin(PLUGINVERSIONAUTHOR)

register_event("HLTV""event_newround""a""1=0""2=0")
register_logevent("logevent_round_end"2"1=Round_End")

register_forward(FM_Touch"fw_supplybox_touch")

cvar_supplybox_max register_cvar("zp_supplybox_max""16")
cvar_supplybox_num register_cvar("zp_supplybox_num""2")
cvar_supplybox_totalintime register_cvar("zp_supplybox_totalintime""4")
cvar_supplybox_time register_cvar("zp_supplybox_time""30")
cvar_supplybox_icon register_cvar("zp_supplybox_icon""1")
cvar_supplybox_delaytime register_cvar("zp_supplybox_icon_delay_time""0.03")    
cvar_supplybox_icon_size register_cvar("zp_supplybox_icon_size""2")
cvar_supplybox_icon_light register_cvar("zp_supplybox_icon_light""100")

set_task(2.0"update_radar"___"b")
}

public 
plugin_precache()
{
supplybox_item ArrayCreate(641)

load_supplybox_spawn()
load_supplybox_item()

static 
i
for(0sizeof(supplybox_model); i++)
engfunc(EngFunc_PrecacheModelsupplybox_model[i])
for(
0sizeof(supplybox_drop_sound); i++)
engfunc(EngFunc_PrecacheSoundsupplybox_drop_sound[i])    
for(
0sizeof(supplybox_pickup_sound); i++)
engfunc(EngFunc_PrecacheSoundsupplybox_pickup_sound[i])

g_supplybox_icon_id engfunc(EngFunc_PrecacheModelsupplybox_icon_spr)
}

public 
plugin_cfg()
{
set_task(0.5"event_newround")
}

public 
load_supplybox_spawn()
{
// Check for spawns points of the current map
new cfgdir[32], mapname[32], filepath[100], linedata[64]
get_configsdir(cfgdircharsmax(cfgdir))
get_mapname(mapnamecharsmax(mapname))
formatex(filepathcharsmax(filepath), supplybox_spawn_filecfgdirmapname)

// Load spawns points
if (file_exists(filepath))
{
new 
file fopen(filepath,"rt"), row[4][6]

while (
file && !feof(file))
{
fgets(filelinedatacharsmax(linedata))

// invalid spawn
if(!linedata[0] || str_count(linedata,' ') < 2) continue;

// get spawn point data
parse(linedata,row[0],5,row[1],5,row[2],5)

// origin
g_supplybox_spawn[g_total_supplybox_spawn][0] = floatstr(row[0])
g_supplybox_spawn[g_total_supplybox_spawn][1] = floatstr(row[1])
g_supplybox_spawn[g_total_supplybox_spawn][2] = floatstr(row[2])

g_total_supplybox_spawn++
if (
g_total_supplybox_spawn >= MAX_SUPPLYBOX_ENT
break
}
if (
filefclose(file)
}
}

public 
load_supplybox_item() 
{
new 
filepath[64]
get_configsdir(filepathcharsmax(filepath))
format(filepathcharsmax(filepath), supplybox_item_filefilepath)

if (!
file_exists(filepath))    
{
new 
error_msg[100]
formatex(error_msgcharsmax(error_msg), "[ZP-SupplyBox][Error] Item File Not Found")
set_fail_state(error_msg)
return
}

new 
line[1024], key[64], value[960]
new 
file fopen(filepath"rt")

while (!
feof(file) && file)
{
fgets(filelinecharsmax(line));
replace(linecharsmax(line), "^n""")

if (!
line[0] || line[0] == ';')
continue

strtok(linekeycharsmax(key), valuecharsmax(value), '=')
trim(key)
trim(value)

if (
equali(key"SUPPLYBOX_ITEM")) 
{
while (
value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ',')) 
{
trim(key)
trim(value)
ArrayPushString(supplybox_itemkey)
}
}
}
}

public 
update_radar()
{    
for (new 
id 1id <= get_maxplayers(); id++)
{
if (!
is_user_alive(id) || !supplybox_count || zp_get_user_zombie(id)) 
continue

static 
inext_ent
1
while(<= supplybox_count)
{
next_ent supplybox_ent[i]
if (
next_ent && is_valid_ent(next_ent))
{
static 
Floatrigin[3]
pev(next_entpev_originorigin)

message_begin(MSG_ONE_UNRELIABLEget_user_msgid("HostagePos"), {0,0,0}, id)
write_byte(id)
write_byte(i)    
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2]))
message_end()

message_begin(MSG_ONE_UNRELIABLEget_user_msgid("HostageK"), {0,0,0}, id)
write_byte(i)
message_end()
}

i++
}
}
}

public 
event_newround()
{
made_supplybox false
g_newround 
1
g_endround 
0

remove_supplybox
()
supplybox_count 0

if(task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)
if(
task_exists(TASK_SUPPLYBOX2)) remove_task(TASK_SUPPLYBOX2)
if(
task_exists(TASK_SUPPLYBOX_HELP)) remove_task(TASK_SUPPLYBOX_HELP)
}

public 
logevent_round_end() g_endround 1

public zp_user_infected_post()
{
if(!
made_supplybox)
{
g_newround 0
made_supplybox 
true

if(task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)

if(!
g_total_supplybox_spawn)
{
client_print(0print_console"[ZP - SupplyBox][Error] Spawn Point Not Found. Please Create Spawn Point")
} else {
set_task(get_pcvar_float(cvar_supplybox_time) , "create_supplybox"TASK_SUPPLYBOX)
}
}
}

public 
client_PostThink(id)
{
if (!
get_pcvar_num(cvar_supplybox_icon) || !is_user_alive(id) || zp_get_user_zombie(id))
return
if((
g_icon_delay[id] + get_pcvar_float(cvar_supplybox_delaytime)) > get_gametime())
return

g_icon_delay[id] = get_gametime()

if (
supplybox_count)
{
static 
ibox_ent
1

while (<= supplybox_count)
{
box_ent supplybox_ent[i]
create_icon_origin(idbox_entg_supplybox_icon_id)
i++
}
}
}

public 
create_supplybox()
{
if (
supplybox_count >= get_pcvar_num(cvar_supplybox_max) || g_newround || g_endround
return

if (
task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)
set_task(get_pcvar_float(cvar_supplybox_time) , "create_supplybox"TASK_SUPPLYBOX)

if (
get_total_supplybox() >= get_pcvar_num(cvar_supplybox_totalintime)) 
return

g_supplybox_num 0
create_supplybox2
()

static 
random_sound
random_sound 
random_num(0charsmax(supplybox_drop_sound))
client_cmd(0"spk ^"%s^""supplybox_drop_sound[random_sound])

for(new 
0get_maxplayers(); i++)
{
if(
is_user_alive(i) && is_user_connected(i) && !zp_get_user_zombie(i))
client_print(iprint_center"Supplybox has appeared. Find it")
}

if (
task_exists(TASK_SUPPLYBOX_HELP)) remove_task(TASK_SUPPLYBOX_HELP)
set_task(3.0"show_supplybox_help"TASK_SUPPLYBOX_HELP)

if (
task_exists(TASK_SUPPLYBOX2)) remove_task(TASK_SUPPLYBOX2)
set_task(0.5"create_supplybox2"TASK_SUPPLYBOX2__"b")    
}

public 
create_supplybox2()
{
if (
supplybox_count >= get_pcvar_num(cvar_supplybox_max)
|| 
get_total_supplybox() >= get_pcvar_num(cvar_supplybox_totalintime) || g_newround || g_endround)
{
remove_task(TASK_SUPPLYBOX2)
return
}

supplybox_count++
g_supplybox_num++

static 
item
item 
random(ArraySize(supplybox_item))

new 
ent create_entity("info_target")

entity_set_string(entEV_SZ_classnameSUPPLYBOX_CLASSNAME)
entity_set_model(entsupplybox_model[random_num(0charsmax(supplybox_model))])    
entity_set_size(ent,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
entity_set_int(ent,EV_INT_solid,1)
entity_set_int(ent,EV_INT_movetype,6)
entity_set_int(entEV_INT_iuser1item)
entity_set_int(entEV_INT_iuser2supplybox_count)

static 
Float:Origin[3]
collect_spawn_point(Origin)
engfunc(EngFunc_SetOriginentOrigin)

supplybox_ent[supplybox_count] = ent

if ((g_supplybox_num >= get_pcvar_num(cvar_supplybox_num)) && task_exists(TASK_SUPPLYBOX2)) 
remove_task(TASK_SUPPLYBOX2)
}

public 
get_total_supplybox()
{
new 
total
for (new 1<= supplybox_counti++)
{
if (
supplybox_ent[i]) total += 1
}
return 
total
}

public 
show_supplybox_help()
{
for(new 
0get_maxplayers(); i++)
{
if(
is_user_alive(i) && is_user_connected(i) && !zp_get_user_zombie(i))
client_print(iprint_center"You can see Supplybox Location in the Radar")
}
}

public 
remove_supplybox()
{
remove_ent_by_class(SUPPLYBOX_CLASSNAME)
new 
supplybox_ent_reset[MAX_SUPPLYBOX_ENT]
supplybox_ent supplybox_ent_reset
}

public 
fw_supplybox_touch(entid)
{
if (!
pev_valid(ent) || !is_user_alive(id) || zp_get_user_zombie(id)
|| 
zp_get_user_survivor(id) || zp_get_user_nemesis(id) || g_supplybox_wait[id]) 
return 
FMRES_IGNORED

static classname[32]
entity_get_string(ent,EV_SZ_classname,classna me,31)

if (
equal(classnameSUPPLYBOX_CLASSNAME))
{
static 
item_iditem[64]
item_id entity_get_int(entEV_INT_iuser1)
ArrayGetString(supplybox_itemitem_iditemcharsmax(item))

zp_force_buy_extra_item(idzp_get_extra_item_id(item), 1)

static 
name[32]
get_user_name(idnamesizeof(name))
client_print(0print_center"%s has received %s from SupplyBox !!!"nameitem)

static 
random_sound
random_sound 
random_num(0charsmax(supplybox_pickup_sound))
emit_sound(idCHAN_VOICEsupplybox_pickup_sound[random_sound], 1.0ATTN_NORM0PITCH_NORM)

new 
num_box entity_get_int(entEV_INT_iuser2)
supplybox_ent[num_box] = 0
remove_entity
(ent)

g_supplybox_wait[id] = 1
if (task_exists(id+TASK_SUPPLYBOX_WAIT)) remove_task(id+TASK_SUPPLYBOX_WAIT)
set_task(2.0"remove_supplybox_wait"id+TASK_SUPPLYBOX_WAIT)
}

return 
FMRES_IGNORED
}

public 
remove_supplybox_wait(id)
{
id -= TASK_SUPPLYBOX_WAIT

g_supplybox_wait
[id] = 0
if (task_exists(id+TASK_SUPPLYBOX_WAIT)) remove_task(id+TASK_SUPPLYBOX_WAIT)
}

stock collect_spawn_point(Floatrigin[3]) // By Sontung0
{
for (new 
1<= g_total_supplybox_spawn *i++)
{
origin g_supplybox_spawn[random(g_total_supplybox_spawn)]
if (
check_spawn_box(origin)) return 1;
}

return 
0;
}
stock check_spawn_box(Floatrigin[3]) // By Sontung0
{
new 
FloatriginE[3], Floatrigin1[3], Floatrigin2[3]
new 
ent = -1
while ((ent engfunc(EngFunc_FindEntityByStringent"classname"SUPPLYBOX_CLASSNAME)) != 0)
{
pev(entpev_originoriginE)

// xoy
origin1 origin
origin2 
originE
origin1
[2] = origin2[2] = 0.0
if (vector_distance(origin1origin2) <= 32.0) return 0;
}
return 
1;
}

stock create_icon_origin(identsprite// By sontung0
{
if (!
pev_valid(ent)) return;

new 
Float:fMyOrigin[3]
entity_get_vector(idEV_VEC_originfMyOrigin)

new 
target ent
new Float:fTargetOrigin[3]
entity_get_vector(targetEV_VEC_originfTargetOrigin)
fTargetOrigin[2] += 40.0

if (!is_in_viewcone(idfTargetOrigin)) return;

new 
Float:fMiddle[3], Float:fHitPoint[3]
xs_vec_sub(fTargetOriginfMyOriginfMiddle)
trace_line(-1fMyOriginfTargetOriginfHitPoint)

new 
Float:fWallOffset[3], Float:fDistanceToWall
fDistanceToWall 
vector_distance(fMyOriginfHitPoint) - 10.0
normalize
(fMiddlefWallOffsetfDistanceToWall)

new 
Float:fSpriteOffset[3]
xs_vec_add(fWallOffsetfMyOriginfSpriteOffset)
new 
Float:fScale
fScale 
0.01 fDistanceToWall

new scale floatround(fScale)
scale max(scale1)
scale min(scaleget_pcvar_num(cvar_supplybox_icon_size))
scale max(scale1)

te_sprite(idfSpriteOffsetspritescaleget_pcvar_num(cvar_supplybox_icon_light))
}

stock te_sprite(idFloatrigin[3], spritescalebrightness// By sontung0
{    
message_begin(MSG_ONESVC_TEMPENTITY_id)
write_byte(TE_SPRITE)
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2]))
write_short(sprite)
write_byte(scale
write_byte(brightness)
message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul// By sontung0
{
new 
Float:fLen xs_vec_len(fIn)
xs_vec_copy(fInfOut)

fOut[0] /= fLenfOut[1] /= fLenfOut[2] /= fLen
fOut
[0] *= fMulfOut[1] *= fMulfOut[2] *= fMul
}

stock str_count(const str[], searchchar// By Twilight Suzuka
{
new 
countilen strlen(str)

for (
0<= leni++)
{
if(
str[i] == searchchar)
count++
}

return 
count;
}

stock remove_ent_by_class(classname[])
{
new 
nextitem find_ent_by_class(-1classname)
while(
nextitem)
{
remove_entity(nextitem)
nextitem find_ent_by_class(-1classname)
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1066\\ f0\\ fs16 \n\\ par }
*/ 
tarsisd2 is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 10:20.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode