by Radioactive_Ninja » Sun Jun 11, 2017 12:24
So, I decided to try and make a map for Stronghold (deadline), I used the editing reference and the script example to make it, however I can't seem to make wave 1 start, I've been looking all over the web to try and find a solution, but I cannot find anything, any help?
Map Download :
https://www.mediafire.com/?b3h3pqj3hctkmbb
Script -
Spoiler:
#include "zcommon.acs"
#import "strnghld.acs"
script 100 open
{
Waves = 10;
HateEpicenter = 996;
// Prison Stuff
PrisonSpot = 678; // There should be multiple teleport spots with this tid
// (Not a series of tids as in older versions!)
// Set to 0 (or don't set it at all as it is the default) if map doesn't use a prison
PrisonExit = 699;
PrisonCamStart = 691; // This is the tid of the first camera for the jail. The next 5 tids should also be cameras.
// These will be set as the cameras for the CT_1 through CT_6 textures.
PrisonTeleporterLineId = 99;
PrisonTeleporterThrustAngle = 0; // Angle the teleporter thrusts when it is off
PrisonExitThrustAngle = 128; // Angle prison exit thrusts when there are players still in game
TeleporterOnLight = 99; // This will be activated when prison teleporter is on
TeleporterOffLight = 98; // This will be activated when prison teleporter is off
// Corner A, corner b, first patrol node
// You define a zone by setting two map spots to form the opposite corners of a rectangle that will be
// the zone that monsters spawn in. The difference in height between the mapspots will also be taken into
// account to define the height of the rectangle (useful for flying enemies). The angle the monsters face
// is the angle of the first mapspot given here.
AddZone( 30, 31, 1 );
// Monsters
WaveEnemy( 1, "ZombieMan", 5 );
WaveEnemy( 1, "ShotgunGuy", 3 );
WaveEnemy( 1, "DoomImp", 5 );
WaveEnemy( 2, "ZombieMan", 5 );
WaveEnemy( 2, "ShotgunGuy", 3 );
WaveEnemy( 2, "DoomImp", 7 );
WaveEnemy( 3, "ZombieMan", 7 );
WaveEnemy( 3, "ShotgunGuy", 5 );
WaveEnemy( 3, "DoomImp", 12 );
WaveEnemy( 4, "Demon", 3 );
WaveEnemy( 4, "ShotgunGuy", 7 );
WaveEnemy( 4, "DoomImp", 13 );
WaveEnemy( 5, "DoomImp", 13 );
WaveEnemy( 5, "Demon", 3 );
WaveEnemy( 5, "ChaingunGuy", 3 );
WaveEnemy( 6, "DoomImp", 13 );
WaveEnemy( 6, "HellKnight", 3 );
WaveEnemy( 6, "Demon", 3 );
WaveEnemy( 7, "DoomImp", 15 );
WaveEnemy( 7, "Zombieman", 22 );
WaveEnemy( 7, "Spectre", 4 );
WaveEnemy( 8, "DoomImp", 18 );
WaveEnemy( 8, "Shotgunguy", 14 );
WaveEnemy( 8, "Demon", 3 );
WaveEnemy( 8, "Spectre", 3 );
WaveEnemy( 9, "Demon", 3 );
WaveEnemy( 9, "Spectre", 3 );
WaveEnemy( 9, "HellKnight", 5 );
WaveEnemy( 10, "Demon", 3 );
WaveEnemy( 10, "Spectre", 3 );
WaveEnemy( 10, "BaronOfHell", 6 );
// Messages
RadioName[0] = RADIO_RANDOM; // RADIO_RANDOM is default for all indexes, so this line isn't strictly needed
// RadioName[1] = RADIO_CLOUD;
// First argument is ID. Positive values correspond to the beginning of that number wave. 0 is not usable.
// Second argument tells who gives the message
WaveMessage( 2, 0, "This has only just\nstarted." );
WaveMessage( 2, 0, "get a \cishotgun \cffrom the\nsupply room!" );
WaveMessage( 3, 0, "Those \cazombies \cfare slow,\nand no real danger." );
WaveMessage( 3, 0, "They won't be the only\nenemies you'll have to\nface..." );
WaveMessage( 4, 0, "Those \caimps \cfcan be a pain." );
WaveMessage( 4, 0, "A \cichaingun \cfshould help\nhere, go get it." );
WaveMessage( 5, 0, "Make sure to take out the\nfaster \cademons \cffirst." );
WaveMessage( 5, 0, "They can pass the\n\cjdeadline \cfwithout you even\nnoticing." );
WaveMessage( 6, 0, "Damn, more \capinkies\n\cfapproaching..." );
WaveMessage( 6, 0, "I see you're gonna need\nmore supplies - an \ciSSG's\nwaiting for you." );
WaveMessage( 7, 0, "Okay, \ciland mines \cfshould\nsecure a few areas." );
WaveMessage( 7, 0, "\caSpectres \cfapproach. Get\nthe mines from the supply\nroom!" );
WaveMessage( 8, 0, "The demons found \cja second\n\cjway in!" );
WaveMessage( 8, 0, "This is starting to get\ninteresting..." );
WaveMessage( 9, 0, "We've sent you a \cirocket\n\cilauncher." );
WaveMessage( 9, 0, "You'll need powerful\nweapons against more\npowerful demons." );
WaveMessage( 10, 0, "The \cjgates \cfare starting to\nclose..." );
WaveMessage( 10, 0, "But Hell's sending in its\nlast wave of opposition!" );
WaveMessageEnd( 11, 0 );
// Items and stuff
WavePowerup( 2, "GreenArmor", 1 );
WavePowerup( 5, "Backpack", 1 );
WavePowerup( 6, "GreenArmor", 1 );
WavePowerup( 10, "BlueArmor", 1 );
WaveMedic( 1, "Stimpack", 4 );
WaveMedic( 2, "Stimpack", 4 );
WaveMedic( 3, "Stimpack", 5 );
WaveMedic( 4, "Stimpack", 5 );
WaveMedic( 5, "Stimpack", 6 );
WaveMedic( 6, "Stimpack", 6 );
WaveMedic( 7, "Stimpack", 2 );
WaveMedic( 7, "MediKit", 2 );
WaveMedic( 8, "Stimpack", 2 );
WaveMedic( 8, "MediKit", 2 );
WaveMedic( 9, "Stimpack", 3 );
WaveMedic( 9, "MediKit", 2 );
WaveMedic( 10, "Stimpack", 3 );
WaveMedic( 10, "MediKit", 3 );
WaveWeapon( 2, "Shotgun" );
WaveWeapon( 4, "Chaingun" );
WaveWeapon( 6, "SuperShotgun" );
WaveWeapon( 7, "LandMineLayer" );
// WaveWeapon( 8, "LandMineLayer" ); -- If "Weapons Stay" is set, putting a second LandMineLayer is pointless! Instead, spawn some Mine ammo in the WaveAmmo section (see below)
WaveWeapon( 9, "RocketLauncher" );
// Ammo
WaveAmmo( 2, BULLETS, 50 );
WaveAmmo( 2, SHELLS, 8 );
// WaveAmmo( 2, ROCKETS, 0 );
// WaveAmmo( 2, CELLS, 0 );
// WaveAmmo( 2, GAS, 0 );
// WaveAmmo( 2, MINES, 0 );
WaveAmmo( 3, BULLETS, 50 );
WaveAmmo( 3, SHELLS, 12 );
WaveAmmo( 4, BULLETS, 75 );
WaveAmmo( 4, SHELLS, 20 );
WaveAmmo( 5, BULLETS, 75 );
WaveAmmo( 5, SHELLS, 20 );
WaveAmmo( 6, BULLETS, 50 );
WaveAmmo( 6, SHELLS, 40 );
WaveAmmo( 7, BULLETS, 50 );
WaveAmmo( 7, SHELLS, 40 );
WaveAmmo( 7, ROCKETS, 2 );
WaveAmmo( 8, SHELLS, 80 );
WaveAmmo( 8, ROCKETS, 4 );
WaveAmmo( 8, MINES, 6 );
WaveAmmo( 9, SHELLS, 80 );
WaveAmmo( 9, ROCKETS, 8 );
WaveAmmo( 10, SHELLS, 80 );
WaveAmmo( 10, ROCKETS, 32 );
// Spots
AddMedicSpot ( 100 );
AddAmmoSpot ( 101 );
AddPowerupSpot ( 102 );
AddWeaponSpot ( 103 );
// There should be only one mapspot for each of these tids
// AddWeaponSpot ( 104 ); // Put another entry if you have more than one spawn point
// Time to do stuff
ACS_Execute(S_DEADLINE,0,0); // Runs the main deadline script
ScriptWait(S_DEADLINE); // Makes this script wait until it's done
// The player has beaten the deadline mode!
ACS_Execute(S_MISSION_COMPLETE,0,0); // Says "Mission Complete", screen fades out, and Exit_Normal(0) is called
}
EDIT : I've changed the script a bit to try and make it work, but still nothing. Please, any help? Or is this forum deserted?
EDIT 2 : The cause of this problem is "Script 920 Terminated" Further research into the game scripts, I found this is the "S_CALLWAVE" script and I have no idea why this is getting terminated...
So, I decided to try and make a map for Stronghold (deadline), I used the editing reference and the script example to make it, however I can't seem to make wave 1 start, I've been looking all over the web to try and find a solution, but I cannot find anything, any help?
Map Download : https://www.mediafire.com/?b3h3pqj3hctkmbb
Script - [spoiler=]#include "zcommon.acs"
#import "strnghld.acs"
script 100 open
{
Waves = 10;
HateEpicenter = 996;
// Prison Stuff
PrisonSpot = 678; // There should be multiple teleport spots with this tid
// (Not a series of tids as in older versions!)
// Set to 0 (or don't set it at all as it is the default) if map doesn't use a prison
PrisonExit = 699;
PrisonCamStart = 691; // This is the tid of the first camera for the jail. The next 5 tids should also be cameras.
// These will be set as the cameras for the CT_1 through CT_6 textures.
PrisonTeleporterLineId = 99;
PrisonTeleporterThrustAngle = 0; // Angle the teleporter thrusts when it is off
PrisonExitThrustAngle = 128; // Angle prison exit thrusts when there are players still in game
TeleporterOnLight = 99; // This will be activated when prison teleporter is on
TeleporterOffLight = 98; // This will be activated when prison teleporter is off
// Corner A, corner b, first patrol node
// You define a zone by setting two map spots to form the opposite corners of a rectangle that will be
// the zone that monsters spawn in. The difference in height between the mapspots will also be taken into
// account to define the height of the rectangle (useful for flying enemies). The angle the monsters face
// is the angle of the first mapspot given here.
AddZone( 30, 31, 1 );
// Monsters
WaveEnemy( 1, "ZombieMan", 5 );
WaveEnemy( 1, "ShotgunGuy", 3 );
WaveEnemy( 1, "DoomImp", 5 );
WaveEnemy( 2, "ZombieMan", 5 );
WaveEnemy( 2, "ShotgunGuy", 3 );
WaveEnemy( 2, "DoomImp", 7 );
WaveEnemy( 3, "ZombieMan", 7 );
WaveEnemy( 3, "ShotgunGuy", 5 );
WaveEnemy( 3, "DoomImp", 12 );
WaveEnemy( 4, "Demon", 3 );
WaveEnemy( 4, "ShotgunGuy", 7 );
WaveEnemy( 4, "DoomImp", 13 );
WaveEnemy( 5, "DoomImp", 13 );
WaveEnemy( 5, "Demon", 3 );
WaveEnemy( 5, "ChaingunGuy", 3 );
WaveEnemy( 6, "DoomImp", 13 );
WaveEnemy( 6, "HellKnight", 3 );
WaveEnemy( 6, "Demon", 3 );
WaveEnemy( 7, "DoomImp", 15 );
WaveEnemy( 7, "Zombieman", 22 );
WaveEnemy( 7, "Spectre", 4 );
WaveEnemy( 8, "DoomImp", 18 );
WaveEnemy( 8, "Shotgunguy", 14 );
WaveEnemy( 8, "Demon", 3 );
WaveEnemy( 8, "Spectre", 3 );
WaveEnemy( 9, "Demon", 3 );
WaveEnemy( 9, "Spectre", 3 );
WaveEnemy( 9, "HellKnight", 5 );
WaveEnemy( 10, "Demon", 3 );
WaveEnemy( 10, "Spectre", 3 );
WaveEnemy( 10, "BaronOfHell", 6 );
// Messages
RadioName[0] = RADIO_RANDOM; // RADIO_RANDOM is default for all indexes, so this line isn't strictly needed
// RadioName[1] = RADIO_CLOUD;
// First argument is ID. Positive values correspond to the beginning of that number wave. 0 is not usable.
// Second argument tells who gives the message
WaveMessage( 2, 0, "This has only just\nstarted." );
WaveMessage( 2, 0, "get a \cishotgun \cffrom the\nsupply room!" );
WaveMessage( 3, 0, "Those \cazombies \cfare slow,\nand no real danger." );
WaveMessage( 3, 0, "They won't be the only\nenemies you'll have to\nface..." );
WaveMessage( 4, 0, "Those \caimps \cfcan be a pain." );
WaveMessage( 4, 0, "A \cichaingun \cfshould help\nhere, go get it." );
WaveMessage( 5, 0, "Make sure to take out the\nfaster \cademons \cffirst." );
WaveMessage( 5, 0, "They can pass the\n\cjdeadline \cfwithout you even\nnoticing." );
WaveMessage( 6, 0, "Damn, more \capinkies\n\cfapproaching..." );
WaveMessage( 6, 0, "I see you're gonna need\nmore supplies - an \ciSSG's\nwaiting for you." );
WaveMessage( 7, 0, "Okay, \ciland mines \cfshould\nsecure a few areas." );
WaveMessage( 7, 0, "\caSpectres \cfapproach. Get\nthe mines from the supply\nroom!" );
WaveMessage( 8, 0, "The demons found \cja second\n\cjway in!" );
WaveMessage( 8, 0, "This is starting to get\ninteresting..." );
WaveMessage( 9, 0, "We've sent you a \cirocket\n\cilauncher." );
WaveMessage( 9, 0, "You'll need powerful\nweapons against more\npowerful demons." );
WaveMessage( 10, 0, "The \cjgates \cfare starting to\nclose..." );
WaveMessage( 10, 0, "But Hell's sending in its\nlast wave of opposition!" );
WaveMessageEnd( 11, 0 );
// Items and stuff
WavePowerup( 2, "GreenArmor", 1 );
WavePowerup( 5, "Backpack", 1 );
WavePowerup( 6, "GreenArmor", 1 );
WavePowerup( 10, "BlueArmor", 1 );
WaveMedic( 1, "Stimpack", 4 );
WaveMedic( 2, "Stimpack", 4 );
WaveMedic( 3, "Stimpack", 5 );
WaveMedic( 4, "Stimpack", 5 );
WaveMedic( 5, "Stimpack", 6 );
WaveMedic( 6, "Stimpack", 6 );
WaveMedic( 7, "Stimpack", 2 );
WaveMedic( 7, "MediKit", 2 );
WaveMedic( 8, "Stimpack", 2 );
WaveMedic( 8, "MediKit", 2 );
WaveMedic( 9, "Stimpack", 3 );
WaveMedic( 9, "MediKit", 2 );
WaveMedic( 10, "Stimpack", 3 );
WaveMedic( 10, "MediKit", 3 );
WaveWeapon( 2, "Shotgun" );
WaveWeapon( 4, "Chaingun" );
WaveWeapon( 6, "SuperShotgun" );
WaveWeapon( 7, "LandMineLayer" );
// WaveWeapon( 8, "LandMineLayer" ); -- If "Weapons Stay" is set, putting a second LandMineLayer is pointless! Instead, spawn some Mine ammo in the WaveAmmo section (see below)
WaveWeapon( 9, "RocketLauncher" );
// Ammo
WaveAmmo( 2, BULLETS, 50 );
WaveAmmo( 2, SHELLS, 8 );
// WaveAmmo( 2, ROCKETS, 0 );
// WaveAmmo( 2, CELLS, 0 );
// WaveAmmo( 2, GAS, 0 );
// WaveAmmo( 2, MINES, 0 );
WaveAmmo( 3, BULLETS, 50 );
WaveAmmo( 3, SHELLS, 12 );
WaveAmmo( 4, BULLETS, 75 );
WaveAmmo( 4, SHELLS, 20 );
WaveAmmo( 5, BULLETS, 75 );
WaveAmmo( 5, SHELLS, 20 );
WaveAmmo( 6, BULLETS, 50 );
WaveAmmo( 6, SHELLS, 40 );
WaveAmmo( 7, BULLETS, 50 );
WaveAmmo( 7, SHELLS, 40 );
WaveAmmo( 7, ROCKETS, 2 );
WaveAmmo( 8, SHELLS, 80 );
WaveAmmo( 8, ROCKETS, 4 );
WaveAmmo( 8, MINES, 6 );
WaveAmmo( 9, SHELLS, 80 );
WaveAmmo( 9, ROCKETS, 8 );
WaveAmmo( 10, SHELLS, 80 );
WaveAmmo( 10, ROCKETS, 32 );
// Spots
AddMedicSpot ( 100 );
AddAmmoSpot ( 101 );
AddPowerupSpot ( 102 );
AddWeaponSpot ( 103 );
// There should be only one mapspot for each of these tids
// AddWeaponSpot ( 104 ); // Put another entry if you have more than one spawn point
// Time to do stuff
ACS_Execute(S_DEADLINE,0,0); // Runs the main deadline script
ScriptWait(S_DEADLINE); // Makes this script wait until it's done
// The player has beaten the deadline mode!
ACS_Execute(S_MISSION_COMPLETE,0,0); // Says "Mission Complete", screen fades out, and Exit_Normal(0) is called
}
[/spoiler]
EDIT : I've changed the script a bit to try and make it work, but still nothing. Please, any help? Or is this forum deserted?
EDIT 2 : The cause of this problem is "Script 920 Terminated" Further research into the game scripts, I found this is the "S_CALLWAVE" script and I have no idea why this is getting terminated...