Modme Forums

Brutus boss arena?

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


ModmeBot:

Thread By: XxCAFxX
I had a great idea for my map, Once you teleport to the der reise area of my map brutus would instantly spawn only in that zone and after you kill him he would open the door to the buyable ending. would anyone be willing to edit nsz's script for this?


ModmeBot:

Reply By: easyskanka
where would you edit so you can have more than one spawn in the arena?


ModmeBot:

Reply By: easyskanka
Did exactly as you said but after compiling i get the error:

Uninitialized local variable 'Brutus'

doesn't like this line?


brutus thread brutus::arena_spawn_brutus();


ModmeBot:

Reply By: easyskanka
Top stuff! Cheers Bud


ModmeBot:

Reply By: easyskanka
1ERR(83) scripts/_nsz/nsz_brutus.gsc (15,35) : Compiler Internal Error : Compile error processing "using" file - file not found : scripts/zm/grand_easter_egg.gsc

comment out the line

grand_easter_egg::souls_collected(); //change later

and also comment out these 2 lines from the #using scripts the nsz_brutus.gsc

#using scripts\zm\grand_easter_egg;
#using scripts\zm\zm_gulag_test;


ModmeBot:

Reply By: easyskanka
Trigger works perfectly, although when they spawn in they are stuck in one spot and are invisible? haha ive checked the height of the struct but cant figure out whats causing it


ModmeBot:

Reply By: soul-toktzt

easyskanka
Trigger works perfectly, although when they spawn in they are stuck in one spot and are invisible? haha ive checked the height of the struct but cant figure out whats causing it

Try placing a Pathnode on the ground. It fixed my problem when zombies were spawning in at a place that's disconnected from the "main" place.
Just placing it, no KVP editting.


ModmeBot:

Reply By: Zombeast250
so i have followed this little tut based off NSZ Brutus to spawn off a trigger and have everything in a test map working perfect off the trigger_multiple used his new spawn struct and deleted all the old zone/spawns/prefab so he only spawns off the trigger_multiple works great only thing is after i kill him my door with targetname/brutus_door (is a script_model) does not move? great addon by the way please respond


ModmeBot:

Reply By: Abnormal202

Zombeast250
so i have followed this little tut based off NSZ Brutus to spawn off a trigger and have everything in a test map working perfect off the trigger_multiple used his new spawn struct and deleted all the old zone/spawns/prefab so he only spawns off the trigger_multiple works great only thing is after i kill him my door with targetname/brutus_door (is a script_model) does not move? great addon by the way please respond


Hmm.. I didn't realize how many people wanted to spawn Brutus manually like this. Maybe I'll make a tutorial or customizable script. I was just going off of what I used to make the easter egg in Gulag, which is why those #usings were left in there by mistake.
As for your problem I'm not exactly sure what is the cause. First things I want to ask is:
<ul><li>How many Brutuses are you spawning?</li>
<li>is your script_model the only thing with that targetname?</li>
</ul>Then I want you to replace the script at the bottom of your gsc with this:
function brutus_doo_dah()
{
	level.brutuses = 5; //amount of brutuses to spawn
	trig = GetEnt("brutus_trig","targetname");
	trig waittill("trigger",player);
	brutus_spawner =  struct::get("brutus_arena_spawn","targetname");
	for(i=0;i&lt;level.brutuses;i++) {="" brutus_spawner="" thread="" brutus::arena_spawn_brutus();="" wait(5);="" time="" between="" brutus="" spawns="" }="" iprintlnbold("1");="" door="GetEnt("brutus_door","targetname");" level="" waittill("brutus_down");="" iprintlnbold("2");="" door="" movez(-500,2);="" -500="" is="" units="" to="" move="" on="" z="" axis,="" 2="" is="" seconds="" to="" move="" door="" delete();="" iprintlnbold("3");=""&gt;&lt;/level.brutuses;i++)&gt;
and tell me how many numbers appear in-game when testing it (does "1" and "2" appear, does only "1" appear, etc.)


ModmeBot:

Reply By: Zombeast250
so i have changed in the nsz_brutus.gsc where it says level.max_brutus = 2; to level.max_brutus = 1; also i made a script_brushmodel with a kvp of script_noteworthy/clip and the same targetname as the door brutus_door (so brutis only spawns 1 and 1 time off the trigger after he is dead that is it for him
he does not come back but the door does nothing the script_model and the script_brushmodel/clip stay in place testing this code i will let you know asap

also if this helps

function init()
{
level.soul_locations = struct::get_array("soul_location","targetname");
level.souls_collected = 0;
// ================ Begin: Variables You Can Change if You Like :Begin =====================
level.brutus_debug = false; // Used for testing, if it is true brutus Spawns on round 1
level.player_debug = false; // Used to set players invicible for testing
level.max_brutus = 1; // The maximum brutuss you want
level.min_brutus_round = 0; // The minimum rounds to wait until brutus spawns next
level.max_brutus_round = 0; // The max rounds to wait until brutus spawns next
level.multiple_brutus_round = 0; // If you want multiple brutuss, they will spawn in multiples after this round
level.brutus_base_health = 3500; // How much base health you want brutus to have. This health is multiplied by the round number. It caps at 85000 health
level.brutus_lock_machines = true; // Set to true if you have placed and want Brtutus to lock Perk Machines/PaP was false
// ================ End: Variables You Can Change if You Like :End =====================
level.current_brutuses = 0;
level.octobomb_targets = &remove_brutus;
level.bruti_dead = 0;
thread main();
}


ModmeBot:

Reply By: Abnormal202

Zombeast250
so i have changed in the nsz_brutus.gsc where it says level.max_brutus = 2; to level.max_brutus = 1; also i made a script_brushmodel with a kvp of script_noteworthy/clip and the same targetname as the door brutus_door (so brutis only spawns 1 and 1 time off the trigger after he is dead that is it for him he does not come back but the door does nothing the script_model and the script_brushmodel/clip stay in place testing this code i will let you know asap also if this helps function init(){ level.soul_locations = struct::get_array("soul_location","targetname"); level.souls_collected = 0; // ================ Begin: Variables You Can Change if You Like :Begin ===================== level.brutus_debug = false; // Used for testing, if it is true brutus Spawns on round 1 level.player_debug = false; // Used to set players invicible for testing level.max_brutus = 1; // The maximum brutuss you want level.min_brutus_round = 0; // The minimum rounds to wait until brutus spawns next level.max_brutus_round = 0; // The max rounds to wait until brutus spawns next level.multiple_brutus_round = 0; // If you want multiple brutuss, they will spawn in multiples after this round level.brutus_base_health = 3500; // How much base health you want brutus to have. This health is multiplied by the round number. It caps at 85000 health level.brutus_lock_machines = true; // Set to true if you have placed and want Brtutus to lock Perk Machines/PaP was false // ================ End: Variables You Can Change if You Like :End ===================== level.current_brutuses = 0; level.octobomb_targets = &remove_brutus; level.bruti_dead = 0; thread main(); }

well first off, I only set up the script to deal with moving a single model or brush, nothing more (clips included). So I've fixed it to allow for multiple parts of the door:
function brutus_doo_dah()
{
	level.brutuses = 5; //amount of brutuses to spawn
	trig = GetEnt("brutus_trig","targetname");
	trig waittill("trigger",player);
	brutus_spawner =  struct::get("brutus_arena_spawn","targetname");
	for(i=0;i&lt;level.brutuses;i++) {="" brutus_spawner="" thread="" brutus::arena_spawn_brutus();="" wait(5);="" time="" between="" brutus="" spawns="" }="" iprintlnbold("1");="" doors="GetEntArray("brutus_door","targetname");" level="" waittill("brutus_down");="" iprintlnbold("2");="" for(i=""&gt;&lt;/level.brutuses;i++)&gt;&lt;doors.size;i++) {="" time="2;" 2="" seconds="" for="" door="" to="" move="" doors[i]="" movez(-500,time);="" -500="" is="" units="" to="" move="" on="" z="" axis="" }="" wait(time);="" for(i=""&gt;&lt;/doors.size;i++)&gt;&lt;doors.size;i++) {="" doors[i]="" delete();="" }="" iprintlnbold("3");=""&gt;&lt;/doors.size;i++)&gt;
The reason it wasn't working was because of the extra clip you had. First get rid of the script_noteworthy on it (it does nothing for this script because its not a standard zombie door). Now make the clip have the same targetname as the door (or leave it the same if that was already the case. It wasn't working before because the script only accounted for one entity with the "brutus_door" targetname, and since you had two, it didn't know which to move so it moved neither of them. The script accounts for this now though, so it should be good.


ModmeBot:

Reply By: Zombeast250
will test now and in game i see none of the IPrintLnBold stuff does not show on screen ? but 5 brutus spawn back to back now (no big deal as i can change later) and the trigger for his spawn was working i am adding this new code for the door now


ModmeBot:

Reply By: easyskanka
That probe sorted out all my problems, now i have 35 chasing me around my boss room haha, thanks for all your help dude!


ModmeBot:

Reply By: Zombeast250
after testing over and over again the script is still working (for the most part) great but still the door is not working and none of the inprintinbold stuff is working (i took // out of in front of that part) and no messages or door movement i even deleted the model and clip and re added them script_model and script_brushmodel both with a targetname/brutus_door ?and also thank you for your time as good help is hard to find


ModmeBot:

Reply By: Zombeast250
i changed all 3 places to iprintlnbold( "1" ); iprintlnbold( "2" ); iprintlnbold( "3" );
now i have the message when he spawns it says 1 but 2 and 3 dont work and the door does nothing

IPrintLnBold("1");


ModmeBot:

Reply By: Abnormal202

Zombeast250
i changed all 3 places to iprintlnbold( "1" ); iprintlnbold( "2" ); iprintlnbold( "3" ); now i have the message when he spawns it says 1 but 2 and 3 dont work and the door does nothing IPrintLnBold("1");

Hmm... that's rather strange. Basically the function is waiting for the NSZ_Brutus script to notify that all the Brutuses have died, but it never gets that.

EDIT: Wait I think I found the problem! In right here:
for(i=0;i&lt;level.brutuses;i++) {="" brutus_spawner="" thread="" brutus::arena_spawn_brutus();="" wait(5);="" time="" between="" brutus="" spawns=""&gt;&lt;/level.brutuses;i++)&gt;
what do you have as the wait time? because you are spawning only 1 brutus it isn't needed and I would say just delete the wait line altogether. I think the problem was that you were killing the Brutus too quickly, before the wait went out and that confused the function. I doubt anyone would actually kill Brutus within 5 seconds of his spawning, but that is something I need to look into.


ModmeBot:

Reply By: Zombeast250
i have 5 seconds you are right and only 1 brutus so i will delete that line but i was wondering in the brutus.gsc i see nothing about level waittill("brutus_down");



but i do see a brutus_death will i will delete the wait(5); and run a test


ModmeBot:

Reply By: Zombeast250
same deal my friend everything works the same just the message shows 1 right when he spawns instead of wait 5
this is what i have:

function brutus_doo_dah()
{
level.brutuses = 1; //amount of brutuses to spawn
trig = GetEnt("brutus_trig","targetname");
trig waittill("trigger",player);
brutus_spawner = struct::get("brutus_arena_spawn","targetname");
for(i=0;i<>
{
brutus_spawner thread brutus::arena_spawn_brutus();
//wait(5); //time between Brutus Spawns
}
iprintlnbold( "one" );
doors = GetEntArray("brutus_door","targetname");
level waittill("brutus_down");
iprintlnbold( "two" );
for(i=0;i<>
{
time = 2; //2 seconds for door to move
doorsMoveZ(-500,time); //-500 is units to move on Z axis
}
wait(time);
for(i=0;i<>
{
doorsDelete();
}
iprintlnbold( "three" );
}



i dont think it understands level waittill("brutus_down");

i do have the door and clip done right for sure if its script_model & script_brushmodel both with targetname/brutus_door (no structs except for his spawn and the trigger which are working) the door on the other hand does nothing and i get no errors


ModmeBot:

Reply By: Zombeast250
after trying to figure out what i am doing wrong i just found that i used your 1st edited brutis.gsc once i updated to your last post of the .gsc and your last post of the mapname.gsc things are working perfect now thanks for all the time and i agree you should make a tutorial on how to add this