CoD-Portal
Einbau Tutorials - Druckversion

+- CoD-Portal (http://codportal.holzus.bplaced.net/codportal)
+-- Forum: Call of Duty - World at War - Zombies (http://codportal.holzus.bplaced.net/codportal/forumdisplay.php?fid=1)
+--- Forum: Zombie - Mapping Tutorials (http://codportal.holzus.bplaced.net/codportal/forumdisplay.php?fid=4)
+--- Thema: Einbau Tutorials (/showthread.php?tid=6)

Seiten: 1 2


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:
targetname
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:
target

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.:
Code:
targetname
Code:
zone2_spawners

 
1.c Zombie spawnt aus dem Boden sobald eine Zone geöffnet wurde
Gebt dem Zombierespawnpunkt noch folgendes hinzu Bsp.:
Code:
targetname
Code:
zone2_spawners

Code:
script_string
Code:
riser

und den dazugehörigen Script Structs:
Code:
targetname
Code:
zone2_spawners_rise
Optional:
Code:
script_noteworthy
Code:
find_flesh
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:
 
Code:
targetname
Code:
playable_area

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