Einbau Tutorials - Holz - 21.12.2014
1. Spawnpunkte setzen
2. Raum Blocker (clear debris)
3. Zombie Fenster Barrikaden
4. Zonen integrieren
5. Riser (Zombie spawnt aus der Erde)
6. Spielfeld festlegen (in dem Zombies Powerups fallen lassen wenn Sie getötet werden.)
7. Kamerafahrt am Ende des Spiels
8. Spielende kaufen (buyable ending)
9. Zombie Zähler einbauen
10. Banksystem einbauen
11. Käufliche Powerups (instant kill, max. Ammo, 2x)
12. Ladebild (Loadscreen)
13. Ladebild Zombie Singleplayer
14. Mach Deine Map Realism 2.2 tauglich (Am Besten nachdem Sie fertig ist und schon released wurde.)
15. Eigene Musik einbauen
16. 8 Perks
17. UGX-Mod einbauen
Mehr zum einbauen:
ZM Wiki
UGX Wiki
Bugfixes:
- Spieler 2 spawnt als Frau: http://www.zombiemodding.com/index.php?topic=9033.new;topicseen#
_loadout.gsc nach codwaw/raw/maps kopieren und überschreiben.
- Kein Sound: http://www.zombiemodding.com/index.php?action=downloads;sa=view;down=565
- Could not find Script 'maps/_zombiemode_dogs
Try putting that script (raw/maps/_zombiemode_dogs.gsc) in your mods folder (root/mods/mapname/maps) And check it off in mod builder. If another error like that comes up then put that script in your mods folder. Thats what i did and after like the 3rd script it started working with no errors
Hunde ausbauen
1. Spawnpunkte setzen - Holz - 21.12.2014
1. Spawnpunkte setzen
Zombie
Clickt im Launcher auf Radiant dort auf File Open, Lade Deine Map
drückt im linken Fenster mit der rechten Maustaste ich glaube auf actor->axies->zombie->ger->sshoner und stellt den irgendwohin
lasst den Zombie markiert und drückt N und gebt Ihm folgende KVP's
Code:
"spawnflags" "3"
"count" "9999"
"script_forcespawn" "1"
"script_noteworthy" "zombie_spawner"
1.a Zombie spawnt wenn ihr den Raum geöffnet habt:
Gebt dem Zombierespawnpunkt noch folgendes hinzu
Code:
zombie_spawner_init_treppe
(das letzte Wort (treppe) könnt ihr frei wählen)
Fügt dann dem Model oder Brushmodel (der Barriere) noch folgendes hinzu:
Code:
zombie_spawner_init_treppe
Wenn ihr alles richtig gemacht habt erscheinen glebe Pfeile vom Zombiespawn zum Brushmodel!!!
(Somit habt Ihr über das Wörtchen treppe einen Targetnamen mit einem Target verknüpft.)
1.b Zombie spawnt sobald eine Zone geöffnet wurde
Gebt dem Zombierespawnpunkt noch folgendes hinzu Bsp.:
1.c Zombie spawnt aus dem Boden sobald eine Zone geöffnet wurde
Gebt dem Zombierespawnpunkt noch folgendes hinzu Bsp.:
und den dazugehörigen Script Structs:
Code:
zone2_spawners_rise
Optional:
Dann sucht sich der Zombie gleich einen Spieler und geht nicht erst zum Fenster.
Zu 1.b und 1.c gehört ein funktionierendes Zone System und kleine Veränderungen in euren Scripten siehe auch Zonen integrieren und Riser.
Hunde
actor->zombie_dog (es reicht ein Hunde Model)
markiere ihn drücke 'n'
Key: targetname
Value: zombie_spawner_dog_init
und:
Code:
"spawnflags" "3"
"script_forcespawn" "1"
"script_noteworthy" "zombie_dog_spawner"
"script_string" "zombie_chaser"
Wenn Ihr Zonen habt dann noch für jede Zone
min. ein Script Struct
mit den KVP's:
Code:
targetname
zone1_spawners_dog
2. Raum Barrikade - Holz - 21.12.2014
2. Raum Barrikade
Erstelle einen brush oder ein script_model
Brush/Model makieren und im 2d feld rechtsklick script_brush wählen
N drücken und folgendes eingeben:
Code:
"script_linkTo" "1" (Umso mehr blocker ihr habt um so groesser die zahl)
"spawnflags" "1"
"targetname" "couch1" <<--ich benutze hier couch 1 du kannst es ändern wie du willst
"script_firefx" "poltergeist"
"script_fxid" "large_ceiling_dust"
"script_noteworthy" "jiggle"
Nun alles deselectieren!!
2d feld rechtsklick und ein script_struct erstellen
Diese dient dazu das dein Model oder brush raus geschoben wird! Das heist wenn du im spiel in den nächsten raum willst verschwindet das model/brush. Und damit es nicht zusehen ist, setzen wir das script_struct so, das es aus der spielbaren map verschwindet!!
Nun fügen wir dem script_struct noch folgendes hinzu:
N drücken und das eingeben
Code:
"script_linkName" "1" (Umso mehr blocker ihr habt um so groesser die zahl)
Wenn ihr nun einen zweiten Blocker baut, kommt hier an statt der 1 ne 2 rein bei dem dritten die 3 und so weiter!
Kopiert aber die blocker nicht sondern baut sie alle einzeln zusammen! Es kommen sonst nur Fehler!
So kommt noch der trigger_use
Erstellt einen neuen brush um euer model und klickt in das 2d feld rechts-->trigger_use
Drückt N und gebt folgendes ein:
Code:
"targetname" "zombie_debris"
"zombie_cost" "100"
"target" "couch1" <<(couch habe ich ja bei dem model benutzt. Ihr müsst das eingeben was ihr auch oben beim model eingeben habt)
Das könnt ihr eingeben von 100-2000 soviel kostet es wenn ihr den raum öffnen wollt wählt selber eine zahl zwischen 100 und 2000
Zombie Costs
100 200 250 500 750 1000 1250 1500 1750 2000
Zombie spawnt wenn ihr den Raum geöffnet habt:
Gebt dem Zombierespawnpunkt noch folgendes hinzu
Code:
targetname" "zombie_spawner_init_treppe <<(das letzte wort könnt ihr hier frei wählen )
Fügt dann dem script_model oder script_brush noch folgendes hinzu:
Code:
target : zombie_spawner_init_treppe
Wenn ihr alles richtig gemacht habt erscheinen gelbe Pfeile vom zombie_spawn zum brush/scriptmodel!!!
3. Fenster Barrikade - Holz - 21.12.2014
3. Fenster Barrikade
2dfeld rechtsklick-->misc-->prefab-->zombiemode--> Window_med.map
Das ist der Verschlag an den Fenstern!!!
Achtung! Sind die Blocker falschherrum gesetzt laufen deine Zombies nicht durch die Fenster!
Dann noch die
Kletteranimation_zombies_NPC:
2dfeld rechtsklick-->misc-->prefab-->traverse-->wall_hop.map
Diese direkt in den Fensterstock bzw Sandsack einbauen!!
RE: Einbau Tutorials - Holz - 21.12.2014
4. Zonen
codwaw\mods\maps\Mapname\Mapname.gsc
(codwaw\raw\maps\MAPNAME.gsc)
es muss recht weit oben das:
Code:
// Initial Zone(s) -- Zone(s) You Want Activated At Map Start
zones = [];
zones[ zones.size ] = "start_zone";
level.DLC3.initialZones = zones;
und etwas weiter unten das:
Code:
dlc3_zone_init()
{
add_adjacent_zone( "start_zone", "zone1", "enter_zone1" );
add_adjacent_zone( "zone1", "zone2", "enter_zone2" );
add_adjacent_zone( "zone2", "zone3", "enter_zone3" );
add_adjacent_zone( "zone3", "zone4", "enter_zone4" );
add_adjacent_zone( "zone4", "zone5", "enter_zone5" );
}
enthalten sein.
Dann macht Ihr einen Bereich auf eurer Map mit einer Info Volume markiert diese und drückt N und gebt Ihr z.B. für die erste
Code:
targetname: start_zone
target: start_zone_spawners
classname: info_volume
Dann gebt euren Zombies noch:
Code:
targetname: start_zone_spawners
script_noteworthy: zombie_spawner
usw.
Und dem Trigger use zu der Zone:
Code:
script_flag: enter_zone1
...
Komplette Beispiel *.gsc
Code:
/*
Der Frost / Nazi Zombie Sniperbolt Tutorial Version 2.0
Scripter: Sparks
Tutorial: Sniperbolt
Version 1.0 (9/24/2009 7:51:18 PM)
-- Initial Release Of Source Files
*/
// Tutorial From Sniperbolt!
// Utilities
#include common_scripts\utility;
#include maps\_utility;
#include maps\_zombiemode_utility;
#include maps\_zombiemode_zone_manager;
#include maps\_music;
// DLC3 Utilities
#include maps\dlc3_code;
#include maps\dlc3_teleporter;
main()
{
level.DLC3 = spawnStruct(); // Leave This Line Or Else It Breaks Everything
// Must Change These To Your Maps
level.DLC3.createArt = maps\createart\nazi_zombie_g42_art::main;
level.DLC3.createFX = maps\createfx\nazi_zombie_g42_fx::main;
// level.DLC3.myFX = ::preCacheMyFX;
/*--------------------
FX
----------------------*/
DLC3_FX();
/*--------------------
LEVEL VARIABLES
----------------------*/
// Variable Containing Helpful Text For Modders -- Don't Remove
level.modderHelpText = [];
//
// Change Or Tweak All Of These LEVEL.DLC3 Variables Below For Your Level If You Wish
//
// Edit The Value In Mod.STR For Your Level Introscreen Place
level.DLC3.introString = &"nazi zombie tes";
// Weapons. Pointer function automatically loads weapons used in Der Riese.
level.DLC3.weapons = maps\dlc3_code::include_weapons;
// Power Ups. Pointer function automatically loads power ups used in Der Riese.
level.DLC3.powerUps = maps\dlc3_code::include_powerups;
// Adjusts how much melee damage a player with the perk will do, needs only be set once. Stock is 1000.
level.DLC3.perk_altMeleeDamage = 1000;
// Adjusts barrier search override. Stock is 400.
level.DLC3.barrierSearchOverride = 400;
// Adjusts power up drop max per round. Stock is 3.
level.DLC3.powerUpDropMax = 3;
// _loadout Variables
level.DLC3.useCoopHeroes = true;
// Bridge Feature
level.DLC3.useBridge = false;
// Hell Hounds
level.DLC3.useHellHounds = true;
// Mixed Rounds
level.DLC3.useMixedRounds = true;
// Magic Boxes -- The Script_Noteworthy Value Names On Purchase Trigger In Radiant
boxArray = [];
boxArray[ boxArray.size ] = "start_chest";
boxArray[ boxArray.size ] = "chest1";
boxArray[ boxArray.size ] = "chest2";
boxArray[ boxArray.size ] = "chest3";
boxArray[ boxArray.size ] = "chest4";
boxArray[ boxArray.size ] = "chest5";
level.DLC3.PandoraBoxes = boxArray;
// Initial Zone(s) -- Zone(s) You Want Activated At Map Start
zones = [];
zones[ zones.size ] = "start_zone";
level.DLC3.initialZones = zones;
// Electricity Switch -- If False Map Will Start With Power On
level.DLC3.useElectricSwitch = true;
// Electric Traps
level.DLC3.useElectricTraps = true;
// _zombiemode_weapons Variables
level.DLC3.usePandoraBoxLight = true;
level.DLC3.useChestPulls = true;
level.DLC3.useChestMoves = true;
level.DLC3.useWeaponSpawn = true;
level.DLC3.useGiveWeapon = true;
// _zombiemode_spawner Varibles
level.DLC3.riserZombiesGoToDoorsFirst = true;
level.DLC3.riserZombiesInActiveZonesOnly = true;
level.DLC3.assureNodes = true;
// _zombiemode_perks Variables
level.DLC3.perksNeedPowerOn = true;
// _zombiemode_devgui Variables
level.DLC3.powerSwitch = true;
/*--------------------
FUNCTION CALLS - PRE _Load
----------------------*/
level thread DLC3_threadCalls();
/*--------------------
ZOMBIE MODE
----------------------*/
[[level.DLC3.weapons]]();
[[level.DLC3.powerUps]]();
maps\_zombiemode::main();
/*--------------------
FUNCTION CALLS - POST _Load
----------------------*/
level.zone_manager_init_func = ::dlc3_zone_init;
level thread DLC3_threadCalls2();
}
dlc3_zone_init()
{
add_adjacent_zone( "start_zone", "zone1", "enter_zone1" );
add_adjacent_zone( "zone1", "zone2", "enter_zone2" );
/*
=============
///ScriptDocBegin
"Name: add_adjacent_zone( <zone_1>, <zone_2>, <flag>, <one_way> )"
"Summary: Sets up adjacent zones."
"MandatoryArg: <zone_1>: Name of first Info_Volume"
"MandatoryArg: <zone_2>: Name of second Info_Volume"
"MandatoryArg: <flag>: Flag to be set to initiate zones"
"OptionalArg: <one_way>: Make <zone_1> adjacent to <zone_2>. Defaults to false."
"Example: add_adjacent_zone( "receiver_zone", "outside_east_zone", "enter_outside_east" );"
///ScriptDocEnd
=============
*/
// Outside East Door
//add_adjacent_zone( "receiver_zone", "outside_east_zone", "enter_outside_east" );
}
5. Riser - Holz - 21.12.2014
5. Riser
Bedeutet die Zombies spawnen aus dem Boden und brauchen keine Fenster um loszulegen.
Mach Dir soviele Script Structs wie Du willst und plaziere Sie halb im Boden über die Map verteilt.
mit den KVP's:
Code:
targetname : zone1_spawners_rise
script_noteworthy : find_flesh
und einen Zombie Spawner pro Zone
mit den KVP's:
Code:
script_string : riser
targetname : zone1_spawners
"spawnflags" : "3" // ab hier sollte es schon vorhanden sein
"count" : "9999"
"script_forcespawn" : "1"
"script_noteworthy" : "zombie_spawner"
So weit ich mich recht erinnere brauchst Du Zonen damit das funktioniert.
6. Spielfeld festlegen - Holz - 21.12.2014
6. Spielfeld
Die "Playable_area" ist dafür da das ihr "power_ups" max ammo, 2x usw. bekommt!!
Zieht einen brush über eure Spielbare Map klickt links in das 2d Feld -->trigger_multiple
drückt N und fügt folgendes hinzu:
Ihr könnt davon soviele machen wie Ihr wollt, die dürfen sich aber nicht überlappen.
7. End-Game Kamera - Holz - 21.12.2014
7. End-Game Kamera setzen
erstellt zwei script_structs
makiert das erste und dann das zweite drückt w
drückt esc und makiert wieder das erste und gebt folgendes ein
Drückt N
Code:
"targetname" "intermission"
"speed" "20"
Ihr könnt auch mehrere Script-Struct Paare machen.
Dann macht die je 2 nicht soweit auseinander.
8. Kaufbares Ende - Holz - 21.12.2014
8. Buyable ending (kaufbares Ende)
Das ist für Modtools 1.4
Radiant Part
1. Mach einen Trigger Use in Deine Map mit den KVP's:
Code:
"targetname" "end_game"
Scripts
2. Öffne Deine nazi_zombie_mapname.gsc ( in raw/maps ) und füge in die main() function vor "maps\_zombiemode::main();"
folgendes ein:
Code:
level.tom_victory = false;
end_trig = getentarray( "end_game","targetname" );
array_thread( end_trig,::end_game );
3. Füge ans Ende der selben Datei:
Code:
end_game()
{
user = undefined;
cost = 20000; //change to cost that you want
self setCursorHint("HINT_NOICON");
self UseTriggerRequireLookAt();
self setHintString("The power must be activated first"); //remove line if you want it to work without power
flag_wait( "electricity_on" ); //remove line if you want it to work without power
self setHintString("press &&1 to End the Game [Cost: "+cost+"]"); //text hint trigger
while(1)
{
self waittill("trigger", user);
if( is_player_valid(user) && user.score >= cost )
{
play_sound_at_pos( "cha_ching", self.origin );
user thread maps\_zombiemode_score::minus_to_player_score( cost );
self delete();
level notify( "end_game" );
level notify("tom_planes");
level.tom_victory = true;
}
else
{
play_sound_at_pos( "no_cha_ching", self.origin );
}
}
}
4. Öffne Deine _zombiemode.gsc ( in mods/MAPNAME/maps ) und suche die Function end_game(), und ersetze Sie mit:
Code:
end_game()
{
level waittill ( "end_game" );
level.intermission = true;
update_leaderboards();
game_over = NewHudElem( self );
game_over.alignX = "center";
game_over.alignY = "middle";
game_over.horzAlign = "center";
game_over.vertAlign = "middle";
game_over.y -= 10;
game_over.foreground = true;
game_over.fontScale = 3;
game_over.alpha = 0;
game_over.color = ( 1.0, 1.0, 1.0 );
game_over SetText( &"ZOMBIE_GAME_OVER" );
game_over FadeOverTime( 1 );
game_over.alpha = 1;
survived = NewHudElem( self );
survived.alignX = "center";
survived.alignY = "middle";
survived.horzAlign = "center";
survived.vertAlign = "middle";
survived.y += 20;
survived.foreground = true;
survived.fontScale = 2;
survived.alpha = 0;
survived.color = ( 1.0, 1.0, 1.0 );
if( level.round_number < 2 && level.tom_victory == false )
{
survived SetText( &"ZOMBIE_SURVIVED_ROUND" );
}
else if( level.tom_victory == false )
{
survived SetText( &"ZOMBIE_SURVIVED_ROUNDS", level.round_number );
}
if( level.tom_victory == true )
{
survived.color = ( 0.423, 0.004, 0 );
survived SetText( "Well done, You beat the game in ", level.round_number, " rounds!" );
}
//TUEY had to change this since we are adding other musical elements
setmusicstate("end_of_game");
setbusstate("default");
survived FadeOverTime( 1 );
survived.alpha = 1;
wait( 1 );
//play_sound_at_pos( "end_of_game", ( 0, 0, 0 ) );
wait( 2 );
intermission();
wait( level.zombie_vars["zombie_intermission_time"] );
level notify( "stop_intermission" );
array_thread( get_players(), ::player_exit_level );
bbPrint( "zombie_epilogs: rounds %d", level.round_number );
wait( 1.5 );
if( is_coop() )
{
ExitLevel( false );
}
else
{
MissionFailed();
}
// Let's not exit the function
wait( 666 );
}
ZM Tut - add buyable ending
Das ist alles!
9. Zombie Zähler - Holz - 21.12.2014
9. Zombie Zähler (Zombie Counter)
1. Öffne Deine Mapname.gsc und füge folgendes an das Ende:
Code:
zombiesleft_hud()
{
Remaining = create_simple_hud();
Remaining.horzAlign = "center";
Remaining.vertAlign = "middle";
Remaining.alignX = "Left";
Remaining.alignY = "middle";
Remaining.y = 230;
Remaining.x = 60;
Remaining.foreground = 1;
Remaining.fontscale = 8.0;
Remaining.alpha = 1;
Remaining.color = ( 0.423, 0.004, 0 );
ZombiesLeft = create_simple_hud();
ZombiesLeft.horzAlign = "center";
ZombiesLeft.vertAlign = "middle";
ZombiesLeft.alignX = "center";
ZombiesLeft.alignY = "middle";
ZombiesLeft.y = 230;
ZombiesLeft.x = -1;
ZombiesLeft.foreground = 1;
ZombiesLeft.fontscale = 8.0;
ZombiesLeft.alpha = 1;
ZombiesLeft.color = ( 0.423, 0.004, 0 );
ZombiesLeft SetText("Zombies Left: ");
while(1)
{
remainingZombies = get_enemy_count() + level.zombie_total;
Remaining SetValue(remainingZombies);
if(remainingZombies == 0 )
{
Remaining.alpha = 0;
while(1)
{
remainingZombies = get_enemy_count() + level.zombie_total;
if(remainingZombies != 0 )
{
Remaining.alpha = 1;
break;
}
wait 0.5;
}
}
wait 0.5;
}
}
2. suche nach main() und füge
Code:
thread zombiesleft_hud();
irgendwo in die Function main ein.
ZM Tut - Zombie Counter
|