• Welcome Guest, The new Modme forums are here! Please visit here for all recommended information.

Released Buried ghosts

New boss

  • Yay new AI

    Votes: 23 92.0%
  • Damn it Spiki you've set up the workshop to be polluted by box maps

    Votes: 1 4.0%
  • eh

    Votes: 1 4.0%

  • Total voters
    25

Spiki

Well-known member
Aight so I noticed a decline in boxmap releases and I'm proud of you guys. I also noticed y'all niBBas are too smart to put Brutus in to such a small map so I made an alternative which you theoretically could.



Package is drag and drop but you must manually move zm_buried_ghost.gsc to your mapname/zm/ folder

Script:
Code:
#using scripts\zm\zm_buried_ghost;
To spawn a witch use this line:
Code:
zm_buried_ghost::spawn_witch(health);
Health is an optional argument and it defaults to 100

Radiant:
Copy paste your usermap actor (floating sky zombie), click remap class and change it to actor_spawner_buried_ghost
Also give it the targetname witch_spawner
Remove the zombie_spawner script_noteworthy

Add spawn points by placing structs and giving them the targetname witch_spot. You don't need to link zones to them



Zone:
Nothing fam. Big brain mechanics are in play here.

SZC (sound file):
Code:
{
"Type" : "ALIAS",
"Name" : "witches",
"Filename" : "AI/buried_ghosts.csv",
"Specs" : [ ]
},

I can not be held responsible for a surge in box maps.
DL:



Additional:
You can change the amount of points they take when they attack in the top of the script

Default speed is run. They also support walk but its hella slow and in buried it's used when you look at the ghosts.
You can change
Code:
self.zombie_move_speed = "run";
to walk in function witch_init(s_struct, ang)


To make the ghost spawn infinitely you can make a basic loop like so:
Code:
while(1)
    {
    e_ai thread zm_buried_ghost::spawn_witch(health);
    wait 10;
    }

***I'll change the archetype in the next update and I'm not making a csc for 3 fx
 
Last edited:

Khramos

Well-known member
Aight so I noticed a decline in boxmap releases and I'm proud of you guys. I also noticed y'all niBBas are too smart to put Brutus in to such a small map so I made an alternative which you theoretically could.



Package is drag and drop but you must manually move zm_buried_ghost.gsc to your mapname/zm/ folder

Script:
Code:
#using scripts\zm\zm_buried_ghost;
To spawn a witch use this line:
Code:
zm_buried_ghost::spawn_witch(health);
Health is an optional argument and it defaults to 100

Radiant:
Copy paste your usermap actor (floating sky zombie), click remap class and change it to actor_spawner_buried_ghost
Also give it the targetname witch_spawner

Add spawn points by placing structs and giving them the targetname witch_spot. You don't need to link zones to them



Zone:
Nothing fam. Big brain mechanics are in play here.

SZC (sound file):
Code:
{
"Type" : "ALIAS",
"Name" : "witches",
"Filename" : "AI/buried_ghosts.csv",
"Specs" : [ ]
},

I can not be held responsible for a surge in box maps.
DL:



Additional:
You can change the amount of points they take when they attack in the top of the script

Default speed is run. They also support walk but its hella slow and in buried it's used when you look at the ghosts.
You can change
Code:
self.zombie_move_speed = "run";
to walk in function witch_init(s_struct, ang)


To make the ghost spawn infinitely you can make a basic loop like so:
Code:
while(1)
    {
    e_ai thread zm_buried_ghost::spawn_witch(health);
    wait 10;
    }

***I'll change the archetype in the next update and I'm not making a csc for 3 fx
Seems Fair.
 
So I have (as per the tutorial) #using scripts\zm\zm_buried_ghost; inside my mapname.gsc like so:

339

Then I have (again, as per the tutorial) the sound aliases in my mapname.szc like so:
341

To access your mapname.GSC you can open mod tools, right click your map name and select open map folder, then go to: scripts/zm/"zm_mapname.gsc"
To access your mapname.SZC you can open your map folder as explained above, go to: sound/zoneconfig/"zm_mapname.szc"
 

Attachments

You don't actually need this code to have them spawn in: zm_buried_ghost::spawn_witch(health);

However, you could do something like this:

PHP:
function witch()
{
    trigger = GetEnt("witchTrigger","targetname"); // You would name a trigger witchTrigger (whether it is a use, multi or whatever)
    trigger waittil("trigger", player); // This waits for the trigger to be activated by a player
    zm_buried_ghost::spawn_witch(health); // Then it will spawn a witch at a struct provided

}

// Make sure to "thread witch();" in your "function main()"
This is a basic mock up and should work unless I fucked up somewhere. Just to serve as an example.
 

brack5501

Member
thanks brother :D

thread witch();

function witch()
{
trigger = GetEnt("witchTrigger","targetname"); // You would name a trigger witchTrigger (whether it is a use, multi or whatever)
trigger waittill("trigger", player); // This waits for the trigger to be activated by a player
zm_buried_ghost::spawn_witch(); // Then it will spawn a witch at a struct provided
}

After analyzing the code a bit, this is how I started successfully :)
 
thanks brother :D

thread witch();

function witch()
{
trigger = GetEnt("witchTrigger","targetname"); // You would name a trigger witchTrigger (whether it is a use, multi or whatever)
trigger waittill("trigger", player); // This waits for the trigger to be activated by a player
zm_buried_ghost::spawn_witch(); // Then it will spawn a witch at a struct provided
}

After analyzing the code a bit, this is how I started successfully :)
Glad I could help
 

Bullen

Member
function witch_non_stop()
{
level endon( "intermission" );

w_start_spawning_from_round = 2;
w_minimum_zombie_total_for_spawn = 5;
w_minimum_delay_between_spawns = 2;
w_maximum_delay_between_spawns = 3;

while ( 1 )
{
level waittill( "start_of_round" );

if ( !isDefined( level.round_number ) || level.round_number < w_start_spawning_from_round || ( level flag::exists( "dog_round" ) && level flag::get( "dog_round" ) ) || !isDefined( level.zombie_total )) // If round number is less that decided above, loop back to start
continue;

w_count_total_zombie = level.zombie_total;
while ( w_count_total_zombie >= w_minimum_zombie_total_for_spawn )
{
wait randomIntRange( w_minimum_delay_between_spawns, w_maximum_delay_between_spawns );
w_count_zombies_spawn = zombie_utility::get_current_zombie_count();
w_count_total_zombie = w_count_zombies_spawn + level.zombie_total;

if( w_count_zombies_spawn < level.zombie_ai_limit && IS_TRUE( level.witchnon_stop ) ){ zm_buried_ghost::spawn_witch(1); }
}
}
}


Was testing this, and was working because this came up every 2-3 sec "IPrintLnBold( "NO VALID SPAWN POINTS FOUND" );" from your script.
script_struct = Targetname - witch_spot , script_noteworthy - witch_spawner.

So don't know how xD
 

Spiki

Well-known member
function witch_non_stop()
{
level endon( "intermission" );

w_start_spawning_from_round = 2;
w_minimum_zombie_total_for_spawn = 5;
w_minimum_delay_between_spawns = 2;
w_maximum_delay_between_spawns = 3;

while ( 1 )
{
level waittill( "start_of_round" );

if ( !isDefined( level.round_number ) || level.round_number < w_start_spawning_from_round || ( level flag::exists( "dog_round" ) && level flag::get( "dog_round" ) ) || !isDefined( level.zombie_total )) // If round number is less that decided above, loop back to start
continue;

w_count_total_zombie = level.zombie_total;
while ( w_count_total_zombie >= w_minimum_zombie_total_for_spawn )
{
wait randomIntRange( w_minimum_delay_between_spawns, w_maximum_delay_between_spawns );
w_count_zombies_spawn = zombie_utility::get_current_zombie_count();
w_count_total_zombie = w_count_zombies_spawn + level.zombie_total;

if( w_count_zombies_spawn < level.zombie_ai_limit && IS_TRUE( level.witchnon_stop ) ){ zm_buried_ghost::spawn_witch(1); }
}
}
}


Was testing this, and was working because this came up every 2-3 sec "IPrintLnBold( "NO VALID SPAWN POINTS FOUND" );" from your script.
script_struct = Targetname - witch_spot , script_noteworthy - witch_spawner.

So don't know how xD
Either you didn't compile the map or the struct is not in an active zone. And it doesnt have a script_noteworthy kvp
 

Bullen

Member
Ofc I compiled, ether would the IPrintLnBold activate ?
The struct is placed beside the starting spawns in start-zone.
When I didn't have a script_noteworthy, it was 2 IPrintLnBold that also said "No script noteworthy".
So yes, the script_noteworthy is "witch_spawner" and the Targetname is "witch_spot".

But I hope I made this work, it sais from you that this I made would work :) So thx anyway, I'will continue my work on my last map :p
 
Top