![]() |
|
Mystery Boxes - Printable Version +- ItsMods (https://www.itsmods.com) +-- Forum: Archive (https://www.itsmods.com/Forum-Archive.html) +--- Forum: Archive (https://www.itsmods.com/Forum-Archive--64.html) +--- Thread: Mystery Boxes (/Thread-Mystery-Boxes.html) Pages:
1
2
|
Mystery Boxes - boe44 - 10-30-2011 Mystery Box
_____________________________________________________
Description: Mystery boxes as you would see them in regular nazi zombies. Only difference is that it doesnt use the nazi zombie box or lid because they werent included with mod tools. Instead just a similar looking box that doesnt open. Still includes all sounds and effects. Please give credit where credit is due. Thanks. Notes: - rarity only affects the last weapon, it will still show raygun or other rare weapons just as often but you will not actually get them often. - Boxes spawn on tdm spawnpoints. GSC Code: #include common_scripts\utility;
main()
{
level.NumBoxes = CreateDvar("zom_numboxes", 20, 0, GetEntArray("mp_tdm_spawn", "classname").size, "int");
level.mboxcost = CreateDvar("zom_boxcost", 900, 0, 10000, "int");
level._effect["mysterybox_glow"] = LoadFx("env/light/fx_ray_sun_sm_short");
level._effect["mysterybox_grab"] = LoadFx("zomx/collect_box_weap");
level._effect["mysterybox_mark"] = LoadFx("maps/zombie/fx_zombie_coast_marker");
precacheItem("stg44_mp");
precacheItem("sten_mp");
precacheItem("mosin_mp");
precacheItem("ppsh_mp");
precacheItem("mp40_mp");
precacheItem("deathmachine_mp");
precacheItem("bowie_knife_mp");
precacheItem("ray_gun_mp");
precacheItem("spas_db_mp");
PrecacheModel("p_glo_200mmshellbox");
// Weapon file , Displayname ,Rarity (The higher the more rare) (1 or more, over 10 is really rare!)
AddWeaponToBox("ak47_mp" ,"AK47" ,1);
AddWeaponToBox("commando_mp" ,"Commando" ,3);
AddWeaponToBox("m16_mp" ,"M16" ,1);
AddWeaponToBox("ak74u_mp" ,"AK74u" ,3);
AddWeaponToBox("wa2000_mp" ,"Wa2000" ,3);
AddWeaponToBox("uzi_mp" ,"Uzi" ,3);
AddWeaponToBox("stoner63_mp" ,"Stoner63" ,3);
AddWeaponToBox("spectre_mp" ,"Spectre" ,3);
AddWeaponToBox("spas_mp" ,"Spas12" ,3);
AddWeaponToBox("skorpion_mp" ,"Skorpion" ,3);
AddWeaponToBox("rpk_mp" ,"RPK" ,3);
AddWeaponToBox("python_mp" ,"Python" ,3);
AddWeaponToBox("psg1_mp" ,"Psg1" ,3);
AddWeaponToBox("pm63_mp" ,"Pm63" ,3);
AddWeaponToBox("mpl_mp" ,"Mpl" ,3);
AddWeaponToBox("mp5k_mp" ,"Mp5k" ,3);
AddWeaponToBox("mac11_mp" ,"Mac11" ,3);
AddWeaponToBox("m60_mp" ,"M60" ,3);
AddWeaponToBox("m1911_mp" ,"M1911" ,3);
AddWeaponToBox("makarov_mp" ,"Makarov" ,3);
AddWeaponToBox("m14_mp" ,"M14" ,3);
AddWeaponToBox("l96a1_mp" ,"L96a1" ,3);
AddWeaponToBox("kiparis_mp" ,"Kiparis" ,3);
AddWeaponToBox("hk21_mp" ,"HK21" ,3);
AddWeaponToBox("galil_mp" ,"Galil" ,3);
AddWeaponToBox("g11_mp" ,"G11" ,3);
AddWeaponToBox("fnfal_mp" ,"FNfal" ,3);
AddWeaponToBox("famas_mp" ,"Famas" ,3);
AddWeaponToBox("enfield_mp" ,"Enfield" ,3);
AddWeaponToBox("dragunov_mp" ,"Dragunov" ,3);
AddWeaponToBox("cz75_mp" ,"Cz75" ,3);
// AddWeaponToBox("crossbow_mp" ,"Crossbow" ,1);
AddWeaponToBox("aug_mp" ,"Aug" ,3);
AddWeaponToBox("deathmachine_mp" ,"DeathMachine" ,5);
AddWeaponToBox("ray_gun_mp" ,"Raygun" ,5);
AddWeaponToBox("spas_db_mp" ,"Dragons_Breath" ,1);
AddWeaponToBox("stg44_mp" ,"STG44" ,1);
AddWeaponToBox("sten_mp" ,"Sten" ,1);
AddWeaponToBox("mosin_mp" ,"Mosin" ,1);
AddWeaponToBox("ppsh_mp" ,"PPSH41" ,1);
AddWeaponToBox("mp40_mp" ,"MP40" ,1);
TdmSpawns = GetEntArray("mp_tdm_spawn", "classname");
BoxSpawns = [];
for (i = 0; i < level.NumBoxes; i++)
{
r = RandomInt(TdmSpawns.size);
for (j = 0; j < BoxSpawns.size; j++)
{
while (TdmSpawns[r] == BoxSpawns[j])
{
r = RandomInt(TdmSpawns.size);
wait .05;
}
}
BoxSpawns[BoxSpawns.size] = TdmSpawns[r];
}
level thread SetupBoxes(BoxSpawns);
}
SetupBoxes(Spawns)
{
for (i = 0; i < Spawns.size; i++)
{
Trigger = Spawn("trigger_radius", Spawns[i].origin /* - ( 0, 0, 25 ) */, 0, 100, 25);
Trigger.cost = level.mboxcost;
Trigger thread DoBox();
}
}
DoBox()
{
level endon("game_ended");
self.box = Spawn("script_model", self.origin); // box model
self.box setModel("p_glo_200mmshellbox");
PlayFX( level._effect["mysterybox_mark"], self.origin );
for (;;)
{
self.user = undefined;
self SetHintString(&"ZOMEXT_MYSTERYBOX_PRESSUSE");
self waittill("trigger", player);
if (player UseButtonPressed() && !IsDefined(self.user) && IsPlayer(player) && player IsOnGround() && player.SessionState == "playing" && !player.IsZombie)
{
if(isDefined(self.cost) && isDefined(player.cash))
if(player.cash < self.cost)
{
player iprintlnbold("^5Not enough cash, go kill some zombies");
wait 1;
continue;
}
else
player.cash -= self.cost;
self.user = player; // Used so other people can't steal the users weapons.
self thread OnBoxTimedOut();
self thread PlayGlowFx(); // Includes Sound.
self thread RollWeapon(player);
self waittill("box_timed_out");
self PlaySound("zmb_lid_close");
wait 1;
}
}
}
RollWeapon(player) // self is the box
{
level endon("game_ended");
self endon("box_timed_out");
player thread BoxTimeOut(self);
self.wmodel = Spawn("script_model", self.box.origin);
self.wmodel.angles = self.box.angles;
r = 0; // Random var
Speed = 0.05;
LastRoll = ""; // used to monitor what the previous weapon was, so i doesn't roll the same weapon twice.
self PlaySound("music_box");
self SetHintString(&"ZOMEXT_NULL"); // Removing hintstring.
for (h = 0; h <= 50; h += 2) // h = height
{
while (player HasWeapon(level.BoxItems[r].Weapon) || LastRoll == level.BoxItems[r].Weapon)
{
r = RandomInt(level.BoxItems.size);
wait .05;
}
while (h >= 50 && level.BoxItems[r].Rarity > 1) // Last roll. (The only that matters)
{
if (RandomInt(level.BoxItems[r].Rarity) == 0) // Where the rarity comes in
break;
else
{
r = RandomInt(level.BoxItems.size);
while (player HasWeapon(level.BoxItems[r].Weapon))
{
r = RandomInt(level.BoxItems.size);
wait .05;
}
}
wait .05;
}
self.wmodel SetModel(GetWeaponModel(level.BoxItems[r].Weapon));
self.wmodel MoveZ(2, speed);
Speed += 0.0042; // makes it go slower over time
wait Speed - 0.002;
LastRoll = level.BoxItems[r].Weapon;
}
self thread GiveBoxWeapon(r);
}
GiveBoxWeapon(r) // self is the box
{
self endon("box_timed_out");
self notify("weapon_randomized");
NewWeapon = level.BoxItems[r].Weapon;
self SetHintString(&"ZOMEXT_USE_TO_PICK_UP");
if (self.user GetWeaponsListPrimaries().size > 1)
self SetHintString(&"ZOMEXT_USE_TO_SWAP_FOR");
for (;;)
{
self waittill("trigger", player);
if (IsPlayer(player) && player UseButtonPressed() && player.SessionState == "playing" && self.user == player && IsHeldWeapon(player GetCurrentWeapon()))
{
if (player GetWeaponsListPrimaries().size > 1) // In case the player only has one weapon.
player TakeWeapon(player GetCurrentWeapon());
player GiveWeapon(NewWeapon);
player SwitchToWeapon(NewWeapon);
player GiveMaxAmmo(NewWeapon);
player PlayLocalSound("weap_pickup");
player iprintlnbold("^7You got the ^2" + level.boxItems[r].Name);
self SetHintString(&"ZOMEXT_NULL");
if (IsDefined(self.wmodel))
{
PlayFX( level._effect["mysterybox_grab"], self.wmodel.origin );
self.wmodel Delete();
}
self notify("box_timed_out");
}
wait .05;
}
self notify("box_timed_out");
}
IsHeldWeapon(weap)
{
return true;
}
OnBoxTimedOut() // self is the box
{
level endon("game_ended");
self thread BoxWait();
self waittill("box_timed_out");
self SetHintString(&"ZOMEXT_NULL");
if (IsDefined(self.glow))
self.glow delete();
if (IsDefined(self.wmodel))
{
self.wmodel moveto(self.origin, 0.25);
wait 0.25;
self.wmodel delete();
}
}
BoxWait()
{
level endon("game_ended");
self endon("box_timed_out");
self waittill("weapon_randomized");
wait 1.5;
self notify("box_timed_out");
}
PlayGlowFx() // self is the box
{
level endon("game_ended");
self endon("box_timed_out");
self Playsound("zmb_lid_open");
self PlaySound("zmb_music_box");
self.glow = SpawnFx(level._effect["mysterybox_glow"],
self.box.origin + (0, 0, 10),
AnglesToForward(self.box.angles + (90, 90, 90)),
AnglesToUp(self.box.angles + (0, 0, 0)));
TriggerFx(self.glow);
}
BoxTimeOut(box) // self is the player
{
self waittill_any("death", "disconnect", "joined_spectators");
box notify("box_timed_out");
}
AddWeaponToBox(sWeapon, sString, iRarity)
{
if (!IsDefined(level.BoxItems))
level.BoxItems = [];
if (!IsDefined(sWeapon))
sWeapon = "defaultweapon_mp";
if (!IsDefined(sString))
sString = sWeapon;
if (!IsDefined(iRarity))
iRarity = 1;
PrecacheItem(sWeapon);
i = level.BoxItems.size;
level.BoxItems[i] = SpawnStruct();
level.BoxItems[i].Weapon = sWeapon;
level.BoxItems[i].Name = sString;
level.BoxItems[i].Rarity = iRarity;
}
IsZombie()
{
return self.pers["team"] == "axis";
}
createdvar(varname, vardefault, min, max, type)
{
if(type == "int")
{
if(getdvar(varname) == "")
definition = vardefault;
else
definition = getdvarint(varname);
}
else if(type == "float")
{
if(getdvar(varname) == "")
definition = vardefault;
else
definition = getdvarfloat(varname);
}
else
{
if(getdvar(varname) == "")
definition = vardefault;
else
definition = getdvar(varname);
}
if((type == "int" || type == "float") && min != 0 && definition < min)
definition = min;
if((type == "int" || type == "float") && max != 0 && definition > max)
definition = max;
if(getdvar( varname ) == "")
setdvar( varname, definition );
return definition;
}Code: rawfile,modfiles/_mystery_box.gsc
xmodel,p_glo_200mmshellbox
fx,env/light/fx_ray_sun_sm_short
fx,zomx/collect_box_weap
fx,maps/zombie/fx_zombie_coast_marker
// sound,YOURSOUNDALIASNAME //Code: zmb_lid_open,raw\sound\evt\zombie_global\box\open\open_00.wav,,,,event,93,93,100,250,2500,4000,default,curve2,allon,rdefault,1,oldest,5,reject,0,0,0,20,30,0.25,1,3d,loaded,nonlooping,,1,0,96,,default,0,0,0,0,0.5,0.5,no,yes,none,1000,no,,both,no,no,,,75,no,no,0,0,wma,yes,no,world,event,no,raw\sound\evt\zombie_global\box\open\open_00.xm4,0,raw\sound\evt\zombie_global\box\open\open_00.mp3,0,raw\sound\evt\zombie_global\box\open\open_00.wav,0,zmb_common,all
zmb_lid_close,raw\sound\evt\zombie_global\box\close\close_00.wav,,,,event,93,93,100,250,2500,4000,default,curve2,allon,rdefault,1,oldest,5,reject,0,0,0,20,30,0.25,1,3d,loaded,nonlooping,,1,0,96,,default,0,0,0,0,0.5,0.5,no,yes,none,1000,no,,both,no,no,,,75,no,no,0,0,wma,yes,no,world,event,no,raw\sound\evt\zombie_global\box\close\close_00.xm4,0,raw\sound\evt\zombie_global\box\close\close_00.mp3,0,raw\sound\evt\zombie_global\box\close\close_00.wav,0,zmb_common,all
zmb_music_box,raw\sound\evt\zombie_global\box\music_box\music_box_00.wav,,,,event,97,97,100,500,2500,4000,default,curve2,allon,rdefault,1,oldest,5,reject,0,0,0,40,60,0.25,1,3d,loaded,nonlooping,,1,0,96,,default,0,50,250,97,0.5,0.5,no,yes,none,1000,no,,both,no,no,,,75,no,no,0,0,wma,yes,no,world,event,no,raw\sound\evt\zombie_global\box\music_box\music_box_00.xm4,0,raw\sound\evt\zombie_global\box\music_box\music_box_00.mp3,0,raw\sound\evt\zombie_global\box\music_box\music_box_00.wav,0,zmb_common,allCredits: Fixz Me (Jookbob) Some_kid RE: Mystery Boxes - AZUMIKKEL - 10-30-2011 needs more video :3 RE: Mystery Boxes - JariZ - 10-30-2011 looks interesting, needs a pic or vid though (like azu said) RE: Mystery Boxes - boe44 - 10-30-2011 http://www.xfire.com/video/4f8c2e/ RE: Mystery Boxes - AZUMIKKEL - 10-30-2011 That's some creepy ass music. RE: Mystery Boxes - Nekochan - 10-30-2011 Thanks! Maybe will use it in my mod ! !
RE: Mystery Boxes - d0h! - 10-30-2011 http://www.itsmods.com/forum/Thread-Mystery-Box.html ? RE: Mystery Boxes - OrangePL - 10-30-2011 Your doesnt have cool sound @doh RE: Mystery Boxes - some_kid - 10-30-2011 (10-30-2011, 12:36)d0h! Wrote: http://www.itsmods.com/forum/Thread-Mystery-Box.html Mysterybox(only missing the ? and lid) + sounds + rarity for good guns vs. Carepackage + no sound + all guns have equal chance to appear RE: Mystery Boxes - tonymamoni1 - 11-04-2011 (10-30-2011, 12:50)OrangePL Wrote: Your doesnt have cool sound @doh he didnt make tlpwnzer did, he is a wii user and we have limits to what we can do so of course it has no sound/?/rarity (rarity can be done but its not the point) |