Re-uploaded instead of migrated
Re-uploaded instead of migrated.
This commit is contained in:
116
_module/nss/staticspawn9.nss
Normal file
116
_module/nss/staticspawn9.nss
Normal file
@@ -0,0 +1,116 @@
|
||||
// Script created by Crashed
|
||||
|
||||
// Used as a series of 11 spawnpoints to simulate 10 outposts and 1 master spawn
|
||||
|
||||
// This script allows a particular custom monster to "respawn" every so often
|
||||
// in a static place. X seconds after the monster is killed, it will reappear
|
||||
// at its "spawn point."
|
||||
// HOW TO USE:
|
||||
// Step 1 - Install the script into your module by copying and pasting this
|
||||
// code into a new script. Save the script as "staticspawn" -- it should
|
||||
// compile with no errors.
|
||||
//
|
||||
// STEP 2 (IMPORTANT) - In any area where you wish to use this script, you
|
||||
// must have a static object on the map with the tag "spawnmaster". I prefer
|
||||
// a barrel or a crate in a place where the players can never get, but it
|
||||
// can be any object, as long as that object has an action queue. NOTE:
|
||||
// If/when the spawnmaster is destroyed, monsters will stop spawning. You
|
||||
// can use this to create e.g. an altar the PCs must destroy to stop the
|
||||
// flow of monsters, if you wish.
|
||||
//
|
||||
// Step 3 - For every monster type you want to be able to spawn using this
|
||||
// script, you must create a monster BLUEPRINT representing that monster.
|
||||
// That blueprint must have its OnDeath event set to "staticspawn" (the name
|
||||
// of this script)
|
||||
// Example:
|
||||
// Suppose I wanted to have an Orc-infested area where orcs respawn every
|
||||
// 30 seconds or so after they are killed. I would create a new blueprint
|
||||
// using Creature Wizard, picking the appropriate stats for my orcs. I
|
||||
// would call this blueprint, for example, "respawning_orc".
|
||||
//
|
||||
// Step 4 - For every position within your area where you want a monster to
|
||||
// spawn you must create a waypoint using the Waypoint type on the palette.
|
||||
// The Tag of this waypoint can be anything you wish, but it must be unique.
|
||||
// I call mine 'spawnpoint1', 'spawnpoint2', and so forth. The Name of this
|
||||
// waypoint must be very specially formatted. The first three characters
|
||||
// of the name must be a number representing the spawn time, e.g. how many
|
||||
// seconds should pass after one monster dies before another one appears. The
|
||||
// fourth character must be an underscore ('_'). The rest of the string is the
|
||||
// name of the BLUEPRINT of the monsters which are to be spawned here, in other
|
||||
// words, the blueprint you made in step 3.
|
||||
// Example:
|
||||
// I made a monster blueprint "respawning_orc" in step 3, and I now want
|
||||
// a spawn point that would spawn an orc every 5 seconds. I would create
|
||||
// a waypoint with the tag "spawnpoint1" and name "005_respawning_orc"
|
||||
//
|
||||
// Step 5 - For every spawn point within your area, you must create an "initial
|
||||
// creature" for that spawn point. The initial creature should belong to the
|
||||
// blueprint that you created in step 3, and it should be placed very close to
|
||||
// the spawn point. The initial creature must be assigned a tag of a certain
|
||||
// format. The first three characters of the tag should be "ms_" and the rest
|
||||
// of the tag should be the TAG of the waypoint you created in step 4.
|
||||
// Example:
|
||||
// For my example, I would paint a "respawning_orc" monster on top of
|
||||
// the "spawnpoint1" waypoint that I created. I would then open Creature
|
||||
// Properties for the monster I just created on the map and set the tag to
|
||||
// "ms_spawnpoint1".
|
||||
//
|
||||
// Step 6 - Just kidding, there is no Step 6. You're done. Save your module
|
||||
// and you should have a respawning monster.
|
||||
// Declarations
|
||||
// StaticSpawn - Summon the monster with the given tag at the given spot.
|
||||
// Set the local variable ms_info to the given value
|
||||
void StaticSpawn(string szClass, location lWhere, string info);
|
||||
// The main event handler.
|
||||
void main()
|
||||
{
|
||||
// VARIABLES
|
||||
// The Spawnmaster object
|
||||
object oSpawnMaster9;
|
||||
// The tag for this monster
|
||||
string szMonsterTag = GetTag(OBJECT_SELF);
|
||||
int nLength = 0;
|
||||
string szSpawnPointTag = "";
|
||||
string szSpawnPointInfo;
|
||||
string szMonsterClass;
|
||||
object oSpawnPoint;
|
||||
float fSpawnTime;
|
||||
location lSpawnPoint;
|
||||
// Check to see if we are an "ms_" monster
|
||||
if( GetSubString(szMonsterTag, 0, 3) == "ms_" ) {
|
||||
nLength = GetStringLength(szMonsterTag);
|
||||
// Get the Spawn Point for this monster
|
||||
szSpawnPointTag = GetSubString(szMonsterTag, 3, (nLength - 3));
|
||||
} else {
|
||||
// Check to see if we have an ms_info local variable
|
||||
szSpawnPointTag = GetLocalString(OBJECT_SELF, "ms_info");
|
||||
}
|
||||
// If this creature has a spawn point...
|
||||
if(szSpawnPointTag != "") {
|
||||
// ActionSpeakString("I was a MSMonster with SpawnPointTag " + szSpawnPointTag, TALKVOLUME_SHOUT);
|
||||
// Get the waypoint and info
|
||||
oSpawnPoint = GetWaypointByTag(szSpawnPointTag);
|
||||
szSpawnPointInfo = GetName(oSpawnPoint);
|
||||
// ActionSpeakString("SpawnpointInfo is "+szSpawnPointInfo, TALKVOLUME_SHOUT);
|
||||
nLength = GetStringLength(szSpawnPointInfo);
|
||||
// Spawn time is the first 3 characters
|
||||
fSpawnTime = StringToFloat( GetSubString(szSpawnPointInfo, 0, 3) + ".0" );
|
||||
// Monster class to spawn is the 4th char onward
|
||||
szMonsterClass = GetSubString(szSpawnPointInfo, 4, (nLength - 4));
|
||||
// Location to spawn is the loc. of the spawnpoint...
|
||||
lSpawnPoint = GetLocation(oSpawnPoint);
|
||||
// Get the spawn master
|
||||
oSpawnMaster9 = GetObjectByTag("spawnmaster9");
|
||||
// Dispatch the command to the spawn master.
|
||||
AssignCommand(
|
||||
oSpawnMaster9,
|
||||
DelayCommand(fSpawnTime, StaticSpawn(szMonsterClass, lSpawnPoint, szSpawnPointTag))
|
||||
);
|
||||
}
|
||||
}
|
||||
// SummonMonster
|
||||
// Conjure a monster with the given class at the given point.
|
||||
void StaticSpawn(string szClass, location lWhere, string info) {
|
||||
object oNewMonster = CreateObject(OBJECT_TYPE_CREATURE, szClass, lWhere);
|
||||
SetLocalString(oNewMonster, "ms_info", info);
|
||||
}
|
Reference in New Issue
Block a user