PDA

View Full Version : Random weapon box



Rocky
17th March 2014, 14:37
Hello,does someone know how to make weapon box with random weapon?

Thanks.!:confused:

Rocky
17th March 2014, 14:57
I did this:
weaponbox()
{
spawnpoints = getentarray("mp_tdm_spawn", "classname");
num = randomint(spawnpoints.size);
players = getentarray("player", "classname");
level.weaponbox = spawn("script_model", bulletTrace( spawnpoints[num].origin, spawnpoints[num].origin + (0,0,-100), false, undefined)["position"]);
level.weaponbox.angles = spawnpoints[num].angles;
level.weaponbox setModel("xmodel/rocky_weapon_box");

box_icon = newHudElem();
box_icon.x = level.weaponbox.origin[0];
box_icon.y = level.weaponbox.origin[1];
box_icon.z = level.weaponbox.origin[2] + 70;
box_icon.alpha = .9;
box_icon setShader("random_item_icon", 8, 8);
box_icon setwaypoint(true);

for(;;)
{
players = getentarray("player", "classname");
for(i=0;i<players.size;i++)
{
player = players[i];
if(player.sessionstate == "playing" && player.pers["team"] == "allies" && !self.delay)
{
if(distance(player.origin, self.origin) < 48)
{
if(player useButtonPressed())
{
weapon = spawn(weapons(), self.origin + (0,0, 32));
weapon.angles = self.angles;
weapon linkTo(self);
weapon thread weap();

self thread delay_box();
}
}
}
}
wait 0.2;
}
box_icon destroy();
level.weaponbox delete();
}
delay_box()
{
self.delay = true;
wait 4;

if(isDefined(self))
self.delay = false;
}

weapons()
{
weapname = "";
weap = randomint(22); // 22 total
if(weap == 0)
weapname = "weapon_bar_mp";
if(weap == 1)
weapname = "weapon_bren_mp";
if(weap == 2)
weapname = "weapon_g43_mp";
if(weap == 3)
weapname = "weapon_greasegun_mp";
if(weap == 4)
weapname = "weapon_luger_mp";
if(weap == 5)
weapname = "weapon_m1carbine_mp";
if(weap == 6)
weapname = "weapon_m1garand_mp";
if(weap == 7)
weapname = "weapon_mp40_mp";
if(weap == 8)
weapname = "weapon_mp44_mp";
if(weap == 9)
weapname = "weapon_frag_grenade_american_mp";
if(weap == 10)
weapname = "weapon_panzerschreck_mp";
if(weap == 11)
weapname = "weapon_pps42_mp";
if(weap == 12)
weapname = "weapon_ppsh_mp";
if(weap == 13)
weapname = "weapon_shotgun_mp";
if(weap == 14)
weapname = "weapon_springfield_mp";
if(weap == 15)
weapname = "weapon_sten_mp";
if(weap == 16)
weapname = "weapon_svt40_mp";
if(weap == 17)
weapname = "weapon_thompson_mp";
if(weap == 18)
weapname = "weapon_tt30_mp";
if(weap == 19)
weapname = "weapon_webley_mp";
if(weap == 20)
weapname = "weapon_frag_grenade_american_mp";
if(weap == 21)
weapname = "weapon_kar98k_mp";
return weapname;
}

weap()
{
self thread weap_timer();


self waittill("trigger", user);
self notify("weap_picked");
}

weap_timer()
{
notused = 0;
self endon("weap_picked");
for(i=0;i<30;i++)
{
notused++;

if(notused >= 30)
self delete();
wait 0.1;
}
}

This 1 isn't working!

Mitch
17th March 2014, 15:08
This 1 isn't working!

What is exactly not working? Spawning the weapon correctly? Or the delay?

who is self? player? level?

if(player.sessionstate == "playing" && player.pers["team"] == "allies" && !self.delay)

Please (re)read this thread: http://killtube.org/showthread.php?1740-READ-BEFORE-POSTING-Guide-on-asking-for-help

Edit: also use php bbcode instead of code. (makes it easier to read your code)
Edit2: perhaps if explaining is too hard then make a video.

Rocky
17th March 2014, 15:28
spawning box is working fine,but delay=not working. :]

Rocky
17th March 2014, 15:28
player=self(i think :D)

Mitch
17th March 2014, 15:34
spawning box is working fine,but delay=not working. :]

Why not just replace:

self thread delay_box();
with

wait 4;

Also remove all other self.delay related code.

Edit: your code doesn't do anything anyway during this delay.
Edit 2:

Shouldn't this line:

if(distance(player.origin, self.origin) < 48)
be this:

if(distance(player.origin, level.weaponbox.origin) < 48)

i am sure self isn't the box.

Rocky
17th March 2014, 15:50
Thank you,Mitch! That was 1. problem..