Modme Forums

Few Questions (Regarding Sounds & Other Scripts)

Game Modding | Call of Duty: Black Ops 3 | Scripting


ModmeBot:

Thread By: XxRaPiDK3LLERxX
Hey everyone,
So I'm currently on a mission to remaster Nuketown (Mainly due to that map being the most played by me and my friends who used to play splitscreen 24/7) to start with it's going good, but hoping nothing goes bad.

I just started on it today, mainly got to focus on the model ripping and porting to BO3, but here's some few screenshots (IK It's not MUCH but it's a start):





So I had 2 questions:

1. Remember that bell chime that happens which randomly (Idk if it's a indication if a perk is coming soon of what not) how would you do that, is it by script? (FYI I'm really bad at scripting hence which is why I'm asking)

2. How would you be able to randomly drop perks at random rounds? (In BO2 Nuketown zombies, perks would fall on random rounds, maybe between a specific amount of rounds, on Solo QR is dropped when you spawn)

Thanks, I hope I'm not being too much of a bother.


ModmeBot:

Reply By: Exofile
I was under the impression a perk would fall every 5 rounds?


ModmeBot:

Reply By: Harry Bo21

Exofile
I was under the impression a perk would fall every 5 rounds?

Correct


ModmeBot:

Reply By: XxRaPiDK3LLERxX

Harry Bo21
Exofile I was under the impression a perk would fall every 5 rounds? Correct

Oh... I actually thought it'll come between a certain rounds (After a perk fell in Solo in round 1, the next perk would fall between 5-8, but meh I was wrong :P)


ModmeBot:

Reply By: SKALV
uh


ModmeBot:

Reply By: Frost Iceforge
For the sound, I believe that was every 100 kills? Correct me if I'm wrong.


ModmeBot:

Reply By: XxRaPiDK3LLERxX

Frost Iceforge
For the sound, I believe that was every 100 kills? Correct me if I'm wrong.

Hmmm... I'm not too sure if that's why the sound plays, it rings just after the perk fell when you started a Solo match, I'm going to go back and check it out.


ModmeBot:

Reply By: Harry Bo21
Plays at 0 too he’s right


ModmeBot:

Reply By: Frost Iceforge
I exported the bell chime sound effect and scripted a kill counter that resets every 100 kills and plays the sound. I will post after I test.


ModmeBot:

Reply By: Frost Iceforge
Okay, I went back to confirm how the kill count worked. It actually counts down. The population sign in front of the blue house starts at 00. After one kill, it rolls back to 99 and makes the sound. 99 kills later, it makes the sound again, rolls back to 99, and repeats for the rest of the game. Here's the code I made for it:
Put this at the bottom of mapname.gsc:

function nuketown_hundred_kill_countdown(str_mod, str_hit_location, v_hit_origin, e_player, n_amount, w_weapon, direction_vec, tagName, modelName, partName, dFlags, inflictor, chargeLevel)
{
	level.hundred_kill_countdown--;
	//IPrintLn(level.hundred_kill_countdown);
	if(level.hundred_kill_countdown < 0)
	{
		foreach(player in GetPlayers())
		{
			player PlayLocalSound("nuketown_bell_chime");
		}
		level.hundred_kill_countdown = 99;
	}
}



inside of function main(), put this:
zm_spawner::register_zombie_death_event_callback( &nuketown_hundred_kill_countdown);
level.hundred_kill_countdown = 0;

Download the bell chime here:
Download
And finally, add this to user_aliases.csv:
nuketown_bell_chime,,,easteregg\nuketown_bell_chime.wav,,,UIN_MOD,,,,,BUS_FX,,,,,,70,70,50,400,401,,,,,3,oldest,,,1,1,,,,,,2d,wpn_all,,NONLOOPING,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
I have a folder in my sound_assets folder called easteregg for things like this sound or the easteregg step confirmation sounds. Put the sound in whatever sound_assets folder you want and change the file directory before \nuketown_bell_chime.wav to match it.
If you've never added custom sounds before, look up how to do that. Nuketown has a lot so that would be nice to know.

I didn't make this actually show the count on the Nuketown sign by the way. I'd need the model to do that. I'm too lazy to rip it right now.

Hope this helps!


ModmeBot:

Reply By: XxRaPiDK3LLERxX

Frost Iceforge
Okay, I went back to confirm how the kill count worked. It actually counts down. The population sign in front of the blue house starts at 00. After one kill, it rolls back to 99 and makes the sound. 99 kills later, it makes the sound again, rolls back to 99, and repeats for the rest of the game. Here's the code I made for it: Put this at the bottom of mapname.gsc: function nuketown_hundred_kill_countdown(str_mod, str_hit_location, v_hit_origin, e_player, n_amount, w_weapon, direction_vec, tagName, modelName, partName, dFlags, inflictor, chargeLevel) { level.hundred_kill_countdown--; //IPrintLn(level.hundred_kill_countdown); if(level.hundred_kill_countdown < 0) { foreach(player in GetPlayers()) { player PlayLocalSound("nuketown_bell_chime"); } level.hundred_kill_countdown = 99; } } inside of function main(), put this: zm_spawner::register_zombie_death_event_callback( &nuketown_hundred_kill_countdown); level.hundred_kill_countdown = 0; Download the bell chime here: And finally, add this to user_aliases.csv: nuketown_bell_chime,,,easteregg\nuketown_bell_chime.wav,,,UIN_MOD,,,,,BUS_FX,,,,,,70,70,50,400,401,,,,,3,oldest,,,1,1,,,,,,2d,wpn_all,,NONLOOPING,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, I have a folder in my sound_assets folder called easteregg for things like this sound or the easteregg step confirmation sounds. Put the sound in whatever sound_assets folder you want and change the file directory before \nuketown_bell_chime.wav to match it.If you've never added custom sounds before, look up how to do that. Nuketown has a lot so that would be nice to know.I didn't make this actually show the count on the Nuketown sign by the way. I'd need the model to do that. I'm too lazy to rip it right now.Hope this helps!

Wow thanks a lot for that ;)
And yeah the population is kill count. (Little edit here, I saw you found out the bell chime's function :))
But anyways thanks again for helping, I'll make sure you'll be credited!

But here's some slow mapping progress, I'm still porting models over (Foliage is a pain :|) but since I'm porting literally somewhat all models will take a long time so to shorten it I'm using some models that's included in the mod tools, and that some models are pieces that make a whole model (Like the mannequins)


Probably overdid fire FX in the bus :P



Not meant to get really off-topic but getting those houses is going to be a pain... I'm also opened to suggestions if you have any :), and in the first release to workshop I'm aiming to add some secrets, try to make the map have more replayability instead of the *usual* nuketown with it's *usual* functionality (What I mean by that is the same way the map plays, e.g. - Start game, see how long you survive, wait for perks & pap to drop (even if you get close to the landing zone it'll make you prone) and that's about it.
With the counter I actually haven't managed to convert the model to work with the mod tools, I still have 309 models to convert (Before 369 models).

Later on next month this will be in W.I.P maps section, with regular map screenshot updates.

*sigh* fourth edit: I also gave you a win :)

EDIT 5: It seems like there's more than just the sound being played, the clock hour point moves forward when the counter reaches 00, when you kill one zombie again it goes obviously back to 99 but then the clock will return to it's normal time (I'm uploading a video for that, 12.4GB = 3 hours upload time :| ) then that's when the bell rings, the thing that animation that plays when the hour point moves isn't appearing on Wraith, it could be scripted instead of animated.

I'm getting an error with linking:
********************************************************************************
UNRECOVERABLE ERROR:
 ^1SCRIPT ERROR: No generated data for &#39;scripts/zm/zm_nuke.gsc&#39;
ERR(6E) scripts/zm/zm_nuke.gsc (150,1)  : Compiler Internal Error :  Unresolved external &#39;zm_spawner::register_zombie_death_event_callback&#39;



Linker will now terminate.
********************************************************************************


This is what's in my GSC at the moment:
#using scripts\codescripts\struct;

#using scripts\shared\array_shared;
#using scripts\shared\callbacks_shared;
#using scripts\shared\clientfield_shared;
#using scripts\shared\compass;
#using scripts\shared\exploder_shared;
#using scripts\shared\flag_shared;
#using scripts\shared\laststand_shared;
#using scripts\shared\math_shared;
#using scripts\shared\scene_shared;
#using scripts\shared\util_shared;

#insert scripts\shared\shared.gsh;
#insert scripts\shared\version.gsh;

#insert scripts\zm\_zm_utility.gsh;

#using scripts\zm\_load;
#using scripts\zm\_zm;
#using scripts\zm\_zm_audio;
#using scripts\zm\_zm_powerups;
#using scripts\zm\_zm_utility;
#using scripts\zm\_zm_weapons;
#using scripts\zm\_zm_zonemgr;

#using scripts\shared\ai\zombie_utility;

//Perks
#using scripts\zm\_zm_pack_a_punch;
#using scripts\zm\_zm_pack_a_punch_util;
#using scripts\zm\_zm_perk_additionalprimaryweapon;
#using scripts\zm\_zm_perk_doubletap2;
#using scripts\zm\_zm_perk_deadshot;
#using scripts\zm\_zm_perk_juggernaut;
#using scripts\zm\_zm_perk_quick_revive;
#using scripts\zm\_zm_perk_sleight_of_hand;
#using scripts\zm\_zm_perk_staminup;
#using scripts\zm\_zm_perk_electric_cherry;
#using scripts\zm\_zm_perk_widows_wine;
#using scripts\zm\_zm_perk_vulture_aid;
#using scripts\zm\_zm_perk_whoswho;
#using scripts\zm\_zm_perk_tombstone;
#using scripts\zm\_zm_perk_phdflopper;
#using scripts\zm\_zm_perk_random;
#using scripts\zm\_zm_perk_champagne_blast;

// WAW WEAPON STUFF
#using scripts\zm\_zm_t4_weapons;
// BO2 WEAPON STUFF
#using scripts\zm\_zm_t6_weapons;
// BO3 WEAPON STUFF
#using scripts\zm\_zm_t7_weapons;

//Powerups
#using scripts\zm\_zm_powerup_double_points;
#using scripts\zm\_zm_powerup_carpenter;
#using scripts\zm\_zm_powerup_fire_sale;
#using scripts\zm\_zm_powerup_free_perk;
#using scripts\zm\_zm_powerup_full_ammo;
#using scripts\zm\_zm_powerup_insta_kill;
#using scripts\zm\_zm_powerup_nuke;
//#using scripts\zm\_zm_powerup_weapon_minigun;

//Traps
#using scripts\zm\_zm_trap_electric;

#using scripts\zm\zm_usermap;

//*****************************************************************************
// MAIN
//*****************************************************************************

function main()
{

	
	zm_usermap::main();

	zm_spawner::register_zombie_death_event_callback( &amp;nuketown_hundred_kill_countdown);
	level.hundred_kill_countdown = 0;


	level.dog_rounds_allowed = false;

	thread moneyscript();
	
	level._zombie_custom_add_weapons =&amp;custom_add_weapons;
	
	//Setup the levels Zombie Zone Volumes
	level.zones = [];
	level.zone_manager_init_func =&amp;usermap_test_zone_init;
	init_zones[0] = "start_zone";
	level thread zm_zonemgr::manage_zones( init_zones );

	level.pathdist_type = PATHDIST_ORIGINAL;

	thread waitForTriggerSpawn();

}

function usermap_test_zone_init()
{
	level flag::init( "always_on" );
	level flag::set( "always_on" );
}	

function custom_add_weapons()
{
	zm_weapons::load_weapon_spec_from_table("gamedata/weapons/zm/zm_levelcommon_weapons.csv", 1);
}

function moneyscript()
{
 shoot = GetEnt("shoot", "targetname");
 shootm = GetEnt("shootm", "targetname");
 shoot waittill( "trigger", player );
 player PlaySound("insertsoundalies");
 player.score += 1000;
 shoot Delete();
 shootm Delete();
}

function waitForTriggerSpawn()
{
		self endon( "disconnect" );

		Start_ZMB_Spawn = getEnt("start_dyn_zombie_spawn","targetname");
		Start_ZMB_Spawn sethintstring("Press [^3&amp;&amp;1^7] to activate a Zombie Trap! :)"); //Change Hint If You Want.
		Start_ZMB_Spawn SetCursorHint( "HINT_NOICON" );  //Change Icon If You Want.

		Start_ZMB_Spawn waittill("trigger", Player);

		ZMB_Spawn_Loc = getEnt("dyn_zombie_spawn","targetname");
		SpawnActor("archetype_zm_factory_zombie", ZMB_Spawn_Loc GetOrigin(), ZMB_Spawn_Loc GetAngles()); //Change archetype_zm_factory_zombie To Your Zombie 
}

function nuketown_hundred_kill_countdown(str_mod, str_hit_location, v_hit_origin, e_player, n_amount, w_weapon, direction_vec, tagName, modelName, partName, dFlags, inflictor, chargeLevel)
{
	level.hundred_kill_countdown--;
	//IPrintLn(level.hundred_kill_countdown);
	if(level.hundred_kill_countdown &lt; 0)
	{
		foreach(player in GetPlayers())
		{
			player PlayLocalSound("nuketown_bell_chime");
		}
		level.hundred_kill_countdown = 99;
	}
}


I tried putting
zm_spawner::register_zombie_death_event_callback( &amp;nuketown_hundred_kill_countdown);
	level.hundred_kill_countdown = 0;

Before zm_usermap::main(); and after but same results, am I doing something wrong?


ModmeBot:

Reply By: Frost Iceforge
I'm getting the nuketown sign to work in BO3 right now. Working on the kills making the dials rotate. Will post updates.
Really excited about this project, though! Nuketown is one of my favorite maps.


ModmeBot:

Reply By: XxRaPiDK3LLERxX

Frost Iceforge
I'm getting the nuketown sign to work in BO3 right now. Working on the kills making the dials rotate. Will post updates. Really excited about this project, though! Nuketown is one of my favorite maps.

Yeah same me too! I really hope it goes well. I'll be converting more models over, so I can use them, I'll try to produce more videos of the map progression as well.

EDIT: You can see the video now, also I've noticed perks came on round 4 & 7 (I'll timestamp them)


Timestamps:
After QR 1st perk: (Start of the video) 0:58 you can see Juggernog has fallen.
2nd perk: 9:17
Kill Counter returns to 00, clock moves forward: 6:54

EDIT 2: Just for those who still curious on progress (After this I'll post these progress screenshots in separate thread, that one that has W.I.P map showcase) here's some minor updates done to the map:

-Used to correct wooden fences since I've ported them into the mod tools, and added some other little details like glass shattered models.


-Now the truck has cardboard boxes like it used to have.

I was going to make a house that blue one next by the sign but it's too early... I have made a basic CSG Hallow cube, which hopefully transform later to a house.

Finally, the last update:

-Here I added some details, such as debris, I have also placed some FX (Looks a bit like Nuketown fxs, I haven't ported the original ones)