Welkom Gast! [Registreer] :: [Login]
Navigatie

Tutorials

Shoutbox
U dient in te loggen om een bericht te plaatsen.

22/05/2012 09:42
Hartelijk dank voor de gif btw! Smile Thumbs

22/05/2012 09:41
@Hurra: Tjah, ik ben nu eenmaal voor Android. Kheb geen zin in discussie Pfft elk heeft z'n eigen smaak en voorkeur

20/05/2012 21:33
Squire, dat is nutteloze software.

20/05/2012 20:51
@ ground zero.. download GIF Movie Gear. http://www.gamani.
com/gmgdown.htm

20/05/2012 20:45
Android is het meest gesloten open source project ter wereld. Alsook, GIF


Volg ons voor statusupdates en aankondigingen!
Registreer of log in
Om gebruik te maken van de volledige functionaliteit van Modbase moet je ingelogd zijn.
Na registratie kan je reageren, onderwerpen starten, projecten toevoegen en nog veel meer.

Dit is volkomen gratis en duurt hoogstens een minuut.

Registreer gratis

Objectives (voorlopige versie)



In deze tutorial zullen we de objectives voor Single Player missies behandelen.
Dit zijn dus de missies, opdrachten die je moet zien te volbrengen als speler.
Er zijn heel wat objectives, dus beginnen we met de basisobjectives.
Elk objective heeft een mapping gedeelte, maar de nadruk bij objectives ligt bij het scripten.

In deze tutorial behandelen we volgende objectives:
- een bepaalde plaats in map bereiken
- een bepaald persoon doden
- een bepaald gebied bevrijden, veroveren, securen
- een bepaald gebied verdedigen (in progres)
- vernietigen van:
     * statische models (flak88, halftrack ...)
     * rijdende voertuigen (tanks) (in progres)
     * olievaten
     * deuren
     * gebouwen (in progres)
- documenten stelen

En nog enkele opties:
- missie afsluiten met behulp van victoryscreen (in progres)
- savegame (in progres)
- meerdere objectives tegelijk (remaining) (in progres)

Voor we beginnen wil ik dit nog zeggen: er zijn andere manieren om deze objectives te verwezelijken, maar wij zien er één enkele van.

Ok, laten we beginnen.


Objective 1: bepaalde plaats in map bereikenNaar boven 
Dit kan bv zijn: Reach the rally point.

Mapping gedeelte:

Het enige die je voor deze objective nodig hebt is een trigger multiple:
Maak een brush, doe rechtermuisklik in je 2d view, ga naar trigger en klik op multiple.



Zet deze trigger_multiple nu op de plaats waar je 'rally point' is.
Hou de trigger geselecteerd en open het entity kader (n), geef de trigger een targetname (zelf te kiezen)
Mijn targetname:

Key: targetname
Value: obj_1



Het laatste wat je nu nog moet doen, zijn de coördinaten van je trigger onthouden (de plaats waar het sterretje op je kompas zal verschijnen), deze getallen vind je onderaan je scherm.
In mijn geval:

Deze getallen zullen we zo meteen nodig hebben als we beginnen scripten.

Script gedeelte:

Voor het scripten van objectives hebben we minimum 2 bestanden nodig: een .gsc en een .str file.

We beginnen met de laatste, de str.
Net zoals bij de introscreen maken we bij objectives gebruik van zo'n bestand.
In dit bestand zullen we de tekst zetten die je te zien krijgt ingame als objective.
Bv. reach the rally point.
Of: Rendezvous with Captain Prize.

mapnaam.str
VERSION          "1"
CONFIG           "C:\trees\cod2\bin\StringEd_PC.cfg"
FILENOTES        ""

REFERENCE        OBJ_REACH//naam zelf te kiezen (hebben we nog nodig in .gsc)
LANG_ENGLISH     "Reach rally point" //tekst die ingame verschijnt

ENDMARKER

Dit bestand plaats je in CallofDuty2/main/localizedstrings/mapnaam.str

Nu de .gsc file:

mapnaam.gsc

#include maps\_utility;

main()
{
          maps\_load::main();

          objective_1();
}

objective_1()
{
          obj1 = getent("obj_1", "targetname"); //vervang het blauwe door de targetnaam van je trigger_multiple

          objective_add(1, "active", &"MAPNAAM_OBJ_REACH", (-32, -708, 16 ));//naam in .str, coordinaten kompas
          objective_current(1);

          obj1 waittill("trigger"); //wacht tot de trigger aangeraakt word

          objective_state(1, "done"); //objective 1 is voltooid
}


Sla dit nu op als mapnaam.gsc in CallofDuty2/main/maps/mapnaam.gsc

Voila, dit is alles voor dit objective.



Download map (.map, .str, .gsc en .d3dbsp)



Objective 2: bepaald persoon doden  
Dit kan bv zijn: Kill the german officer in the red building.
Of: Take out the mg42.

Mapping gedeelte:

Het enige wat je hierbij nodig hebt is een duitse actor:
Doe rechtermuisklik in 2d view - actor en kies een duitste actor (begint met axis_)
Ik kies axis_nrmdy_wehr_reg_mp44.

Hou de actor geselecteerd en druk op 'n' zodat het entity venster verschijnt.
Geef de actor volgende eigenschap:

Key: targetname
Value: officer



Als je wilt kan je de coordinaten van de actor noteren, maar dit is niet noodzakelijk, want de actor zal wat bewegen.
Het kan goed zijn om die coordinaat als referentie punt te nemen zodat je als speler ongeveer weet waar de actor zich bevindt.
Als je liever zonder coordinaten werkt voor dit objectief, kan je als opdracht bv geven: 'Kill the officer in the red building, first floor'.

Dit is alles voor het mapping gedeelte voor dit objectief.

Script gedeelte:

mapnaam.str

VERSION          "1"
CONFIG           "C:\trees\cod2\bin\StringEd_PC.cfg"
FILENOTES        ""

REFERENCE        OBJ_OFFICER//naam zelf te kiezen (hebben we nog nodig in .gsc)
LANG_ENGLISH     "Kill the german officer" //tekst die ingame verschijnt

ENDMARKER

Dit bestand plaats je in CallofDuty2/main/localizedstrings/mapnaam.str

mapnaam.gsc

#include maps\_utility;

main()
{
          maps\_load::main();

          objective_2();
}

objective_2()
{
          obj2 = getent("officer", "targetname"); //vervang officer door de targetname die je aan actor gegeven hebt

          objective_add(1, "active", &"MAPNAAM_OBJ_OFFICER", (-20,-944, 24));//naam in .str; coordinaten, mag je verwijderen
          objective_current(1);

          obj2 waittill("death"); //wachten tot actor dood is

          objective_state(1, "done"); //Objective 2 voltooid
}


Sla dit nu op als mapnaam.gsc in CallofDuty2/main/maps/mapnaam.gsc



Download map (.map, .str, .gsc en .d3dbsp)



Objective 3: bepaald gebied bevrijden, veroveren, securen 
Dit kan bv zijn: Secure the townhall.
Of: Clear the post office.

Mapping gedeelte:

Dit objective is eigenlijk: dood alle Duitsers binnen een bepaald gebeid.
Dus we beginnen met de duitsers te plaatsen (rechtermuisklik 2d view - actor - axis_...).

In mijn geval wil ik het gebeid achter de muur securen, dus zet ik m'n Duitse actors in dat gebied.
Je zet zoveel actors je zelf wilt.

Selecteer vervolgens alle actors die bij het gebeid horen en open je entity venster ('n').
Selecteer 'Spawners' en geef ze volgende eigenschap:

Key: script_deathchain
Value: 1 (nummer zelf te kiezen)

Op de afbeelding zie je ook dat ik mn spawners laat spawnen door een spawner trigger.



Maak nu een nieuwe brush (met ai trigger), zorg ervoor dat deze het hele gebied bevat die je wilt securen.
Geef deze brush volgende waarden (in entity venster):

Key: script_deathchain
Value: 1 (zelfde nummer als bij actors)

Key: script_noteworthy
Value: remaining_ground (zelf te kiezen, hebben we nog nodig in .gsc)

Key: targetname
Value: objective_event



Maak nu nog een brush (met goal volume) en zorg er ook voor dat hij het hele gebeid bevat.
Geef deze brush volgende waarde:

Key: script_deathchain
Value: 1 (zelfde nummer als bij actors)



Nu het je nog enkel de coordinaten nodig (in mijn geval neem ik ongeveer het midden van de aitrigger brush).

Dit is alles voor het mapping gedeelte.

Script gedeelte:

mapnaam.str
VERSION          "1"
CONFIG           "C:\trees\cod2\bin\StringEd_PC.cfg"
FILENOTES        ""

REFERENCE        OBJ_GROUND//naam zelf te kiezen (hebben we nog nodig in .gsc)
LANG_ENGLISH     "Clear the remaining ground " //tekst die ingame verschijnt

ENDMARKER


Dit bestand plaats je in CallofDuty2/main/localizedstrings/mapnaam.str

mapnaam.gsc


#include maps\_utility;

main()
{
          maps\_load::main();

          objective_3();
}

objective_3()
{
          obj3 = getent("objective_event", "targetname");//targetname aitrigger

          objective_add(1, "active", &"MAPNAAM_OBJ_GROUND", (-184, 192, 16));//naam in .str, coordinaten kompas
          objective_current(1);

          objEvent = getObjEvent("remaining_ground");// naam van script_noteworthy aitrigger

          objEvent waittill_objectiveEventNoTrigger();// wachten tot actors de trigger niet meer aanraken (dus dood zijn)

          objective_state(1, "done");// objective complete
}


Sla dit nu op als mapnaam.gsc in CallofDuty2/main/maps/mapnaam.gsc



Download map (.map, .str, .gsc en .d3dbsp)



Objective 4: bepaald gebied verdedigen  

in progres


Objective 5: vernietigen van: 

*Objective 5.1: vernietigen van statische models (flak88, halftrack ...) 
Dit kan bv. zijn: Destroy the flak88.

Mapping gedeelte:

In dit voorbeeld zullen we een Flak88 vernietigen.

Doe rechtermuisklik - script - model en kies je model (in mijn geval xmodel/german_artillery_flak88_nm)
Plaats deze ergens in je map en open het entity venster (n)

Key: targetname
Value: flak



Doe nu hetzelfde voor een kapotte flak (xmodel/german_artillery_flak88_nm_destroy):
Plaats deze kapotte flak op dezelfde plaats als onze eerste flak (ze overlappen elkaar).
Geef de kapotte flak deze waarden in het entity venster:

Key: targetname
Value: flak_d



Nu doen we hetzelfde, maar dan met de bommen (xmodel/military_tntbomb en xmodel/military_tntbomb_obj):
Je maakt dus 2 script_models (xmodel/military_tntbomb en xmodel/military_tntbomb_obj) en je plaats ze ergens bij de flak (ze moeten elkaar weer overlappen).
Maar voor je dit doet geef je ze eerst elk een targetname:

military_tntbomb
Key: targetname
Value: flak_bomb

military_tntbomb_obj
Key: targetname
Value: flak_bomb_glow



Als laatste voor het mapping gedeelte hebben we nog een trigger_use nodig, die zal ervoor zorgen dat de timer geactiveerd wordt wanneer je de trigger triggert (op [USE] drukken).
Dus maak gewoon een brush juist voor de vlak (met de bomb bevattend), doe rechtermuisklik - trigger - use.
Terwijl de trigger geselecteerd is, druk 'n' en geef deze trigger een targetname en hintstring.

Key: targetname
Value: flak_trig

Key: hintstring
Value: Press USE [&&1] to plant the bomb

Door deze hintstring zal ingame"Press USE (Enter of ander toets) to plant the bomb" te voorschijn komen wanneer je de trigger raakt.



Nu zijn we door het mapgedeelte heen, nu nog het script gedeelte.
Oh ja, vergeet ook niet de coordinaten van je flak te noteren.

Script gedeelte:

mapnaam.str

VERSION          "1"
CONFIG           "C:\trees\cod2\bin\StringEd_PC.cfg"
FILENOTES        ""

REFERENCE        OBJ_FLAK//naam zelf te kiezen (hebben we nog nodig in .gsc)
LANG_ENGLISH     "Destroy the flak88 " //tekst die ingame verschijnt

ENDMARKER


mapnaam.gsc (dit is niet de manier waarop het wordt gedaan in stock sp mappen, maar het resultaat is hetzelfde)

#include maps\_utility;

main()
{
          maps\_flak88::main("xmodel/german_artillery_flak88_nm");
          maps\_load::main();

          precacheModel("xmodel/german_artillery_flak88_nm_destroy");
          precacheModel("xmodel/military_tntbomb");
          precacheModel("xmodel/military_tntbomb_obj");
          precacheShader("hudStopwatch");
          precacheShader("hudStopwatchNeedle");
          precacheShader("inventory_tnt_small");

          flak();
}

flak()
{
          objective_add(1, "active", &"MAPNAAM_OBJ_FLAK",(-344, 40, 16));//naam van in str ; coordinaten flak
          objective_current(1);

          glow = getent("flak_bomb_glow", "targetname");//targetname van military_tntbomb_obj

          flakbomb = getent("flak_bomb", "targetname");//targetname van military_tntbomb

          flakbomb hide();//bom niet tonen

          flak = getent("flak", "targetname");//targetname van flak
          flak.health = 10000000;

          flak_d = getent("flak_d", "targetname");//targetname van kapotte flak
          flak_d hide();

          flaktrig = getent ("flak_trig", "targetname");//targetname trigger_use

          flaktrig waittill("trigger",other);//wachten tot men op [USE] heeft gedrukt in trigger gebeid

          wait .05;
          level notify("bomb_planted");

          glow delete();//oplichtende bom verwijderen

          flakbomb show();//geplante vbom tonen (niet oplichtend)

          flaktrig delete();//trigger_use verwijderen

          wait .05;
          level notify("bomb_planted");

          flakbomb playSound( "explo_plant_no_tick" );
          flakbomb playLoopSound( "bomb_tick" );//geluiden afspelen

          level.bombstopwatch = maps\_utility::getstopwatch(60);
          level.bombstopwatch setClock(12, 60, "hudStopwatch", 64, 64);//tijd tot flak ontploft

          wait ( 12 );
          flakbomb stopLoopSound( "bomb_tick" );

          level.bombstopwatch destroy();

          radiusdamage((-344, 40, 16), 216, 350, 50);
          earthquake( 0.25, 1, flak.origin, 1000 );

          flak_d playsound ("flak88_explode");//zie mapnaam.csv

          playfx( level._effect["flak_burst"], flak.origin );//fx effecten
          playfx( level._effect["flak88_explode"], flak.origin );//fx effecten
          flak delete();//flak verwijderen
          flakbomb delete();//bom verwijderen
          flak_d show();//kapotte flak te voorschijn halen
          playfx( level._effect["damaged_vehicle_smoke"], flak.origin );//fx effecten
          playfx( level._effect["flak_dust_blowback"], flak.origin );//fx effecten

          wait 2;

          objective_state(1, "done");//objective voltooid
}


En dan tot slot hebben we nog een kleine csv bestand nodig omdat we in de .gsc file naar flak88_explode verwezen

mapnaam.csv (te plaatsen in main/soundaliases)
name,sequence,file,vol_min,vol_max,vol_mod,pitch_min,pitch_max,dist_min,dist_max,channel,type,probability,loop,masterslave,loadspec,subtitle,compression,secondaryaliasname,volumefalloffcurve,startdelay,speakermap,reverb,lfe percentage

flak88_explode,,explosions/flak88_explod2.wav,1,1,explosion,0.8,0.9,800,8500,voice,streamed,,,0.85,,,,,,,,,0.5,mapnaam




Download map (.map, .str, .gsc, .csv en .d3dbsp)


*Objective 5.2: vernietigen van rijdende voertuigen (tanks)

in progres



*Objective 5.3: vernietigen van olievaten

Bv. Destroy the remaining fuel barrels.

Mapping gedeelte:

Ontplofbare olievaten kan je halen uit de prefabs map (zie
deze tutorial).
Ik neem prefabs/interactable_objects/prop_barrel_benzin.map

Je kan dan ook meteen de coordinaten van je barrel zien bij origin (in entity kader).



Maak nu een brush rond de barrel, rechtermuis - trigger - damage.
Geef deze trigger:

Key: targetname
Value: barrel

Terwijl je het entity kader open hebt, zorg ervoor dat enkel EXPLOSION_NO niet aangevinkt staat, dit zorgt ervoor dat de trigger enkel reageert wanneer er zich een explosie voordoet in de trigger (dus wanneer de olievaten ontploffen). (zie afbeelding hieronder)



Script gedeelte:

mapnaam.str
VERSION          "1"
CONFIG           "C:\trees\cod2\bin\StringEd_PC.cfg"
FILENOTES        ""

REFERENCE        OBJ_FUELBARREL//naam zelf te kiezen (hebben we nog nodig in .gsc)
LANG_ENGLISH     "Destroy the fuel barrel " //tekst die ingame verschijnt

ENDMARKER


mapnaam.gsc
#include maps\_utility;

main()
{
          maps\_load::main();

          objective_barrel();
}

objective_barrel()
{
          barrel = getent("barrel", "targetname"); // targetname van fuel barrel (prefab)

          objective_add(1, "active", &"MAPNAAM_OBJ_FUELBARREL", (-112, -928, 16));//verwijst naar str. ; coordinaten barrel
          objective_current(1);

          barrel waittill ("trigger");//wacht tot trigger getriggerd wordt (dit geval explosie)

          objective_state(1, "done"); // objective voltooid
}




Download map (.map, .str, .gsc en .d3dbsp)



*Objective 5.4: vernietigen van deuren
Dit kan bv zijn: Blow up / Breach that bunker door!

Mapping gedeelte:

Ik heb reeds een kleine map gemaakt met een muur waarin onze deur zal komen.

Deur Objective - CoD2 Tutorial - Screenshot 1

Laten we nu onze deur erin steken.
Rechtermuisklik in 2d view - script - model
Dan verschijnt er een venster om je model te selecteren; ik kies voor prop_door_metal_bunker, een metalen bunkerdeur.
Plaats deze mooi in het deurgat en open het entity venster ('n'), terwijl het script_model nog geselecteerd is.
Geef volgende waarden:

Key: targetname
Value: door

Deur Objective - CoD2 Tutorial - Screenshot 2

Nu dit gedaan is, kunnen we de bom ertegen plaatsen, ik kies voor een stickybom, je kan evengoed een tnt-bom gebruiken, maar de tnt-bom hebben we al eens gebruikt bij het vernietigen van een flak88.

Rechtermuisklik in de 2d view - script - model en kies het model 'weapon_stickybomb_obj'.
Plaats deze nu tegen de deur aan, iets boven de helft.
Het kan zijn dat je de stickybom niet kan zien in de 3d view, maar in de 2d view wel.
Als de bom op z'n plaats hangt, houd hem geselecteerd, druk 'n' en geef deze waarden in het entity venster:

Key: targetname
Value: bomb

Deur Objective - CoD2 Tutorial - Screenshot 3

Plaats vervolgens een trigger_use op de plaats rond de bom, dus de plaats waar je als speler op enter (of f) zult moeten drukken om de bom te plaatsen.
Maak een brush ter hoogte van de bom, rechtermuisklik in 2d view - trigger - use en je zult zien dat de brushtexture verandert naar een triggertexture.
Houd de trigger_use geselecteerd en open wederom het entity venster.

Key: targetname
Value: bomb_trig

Key: hintstring
Value: Press [&&1] to plant the bomb

De hintstring zal ervoor zorgen, dat wanneer je in de trigger loopt, er een bericht zal verschijnen op je scherm: Press Enter or F to plant the bomb.

Deur Objective - CoD2 Tutorial - Screenshot 4

Wanneer de bom ontploft, moet de deur dus openzwaaien, maar aangezien de origin van de deur in het midden van de deur zelf ligt, zal het moeilijk zijn om de deur met een gewone rotatefunctie te laten draaien.
Daarom zullen we gebruik maken van de linkTo functie; we zullen de deur aan een script_origin linken en zo de origin van deur verleggen naar de origin van de script_origin. Hierdoor zal de deur draaien rond het center van de script_origin (met dank aan Derix).
We doen het volgende:
Rechtermuisklik in 2d view - script - origin.
Plaats deze script origin met z'n centrum onder het scharnier van de deur (zie afbeelding hieronder).
Houd de script_origin geselecteerd, open het entity venster en typ:

Key: targetname
Value: scharnier

Deur Objective - CoD2 Tutorial - Screenshot 5

Het laatste wat we moeten doen in radiant is een clip_player maken die ervoor zorgt dat we niet door de deur kunnen lopen.
Deze clip_player zal tijdens de explosie ook meedraaien met de deur, dus zal hij in het script ook gelinkt worden aan de script_origin.

Maak een brush die de afmetingen van de deur heeft, plaats deze brush over de deur en maak er een script_brushmodel van (hou brush geselecteerd - rechtermuisklik 2d view - script - brushmodel).
Geef deze brushmodel deze waarden in het entity venster:

Key: targetname
Value: clip

En vergeet niet de brush een player_clip texture te geven (bij textures - tools).

Deur Objective - CoD2 Tutorial - Screenshot 6

Sla je map op en je mag Radiant afsluiten, op naar het script gedeelte.

Script gedeelte:

mapnaam.str

VERSION          "1"
CONFIG           "C:\trees\cod2\bin\StringEd_PC.cfg"
FILENOTES        ""

REFERENCE        OBJ_DOOR//naam zelf te kiezen (hebben we nog nodig in .gsc)
LANG_ENGLISH   "Blow up that door" //tekst die ingame verschijnt

REFERENCE        EXPLOSIVES_PLANTED//bericht die ingame verschijnt na het planten van de bom
LANG_ENGLISH   "Explosives Planted. Stand Back!" //tekst die ingame verschijnt

ENDMARKER


Dit bestand plaats je in CallofDuty2/main/localizedstrings/mapnaam.str

mapnaam.gsc
#include maps\_utility;

main()
{
maps\mapnaam_fx::main();
maps\_load::main();

precacheModel("xmodel/prop_door_metal_bunker_damaged");
precacheModel("xmodel/weapon_stickybomb");

precacheShader("hudStopwatch");
precacheShader("hudStopwatchNeedle");
precacheShader("inventory_stickybomb");

objective_door();
}

objective_door(){
door = getent("door","targetname");//targetname van deur
clip = getent("clip","targetname");//targetname van clip_player
bomb = getent ("bomb", "targetname");//targetname van stickybom
scharnier = getent ("scharnier","targetname");//targetname van script_origin
trig = getent ("bomb_trig", "targetname");//targetname van trigger_use
org = door getorigin();//origin coordinaten van deur
time = 7;//tijd tussen plaatsen bom en ontploffing

objective_add(1, "active", &"MAPNAAM_OBJ_DOOR", org);//verwijst naar .str; coordinaten deur = locatie ster op compas
objective_current(1);

trig waittill ("trigger");//wachten tot je de trigger entert
trig delete();//verwijder trigger brush, niet meer nodig
bomb setmodel ("xmodel/weapon_stickybomb");//gewone bom in de plaats
iprintlnbold (&"MAPNAAM_EXPLOSIVES_PLANTED");//bericht op scherm, zie .str

bombstopwatch = maps\_utility::getstopwatch(60);
bombstopwatch setClock(time, 60, "hudStopwatch", 64, 64);
bomb playLoopSound( "bomb_tick" );

wait (time);
bomb stopLoopSound( "bomb_tick" );

bombstopwatch destroy();
bomb delete();


exploder(1);//fx effect (knal en rook)

earthquake( 0.25, 3, org, 1050 );//beeld schudden
radiusDamage(org ,200, 200, 200);//damage rond explosie
door playSound( "explo_metal_rand" );//explosiegeluid
wait(0.1);
door setmodel ("xmodel/prop_door_metal_bunker_damaged");//deur--> kapotte deur
door linkto(scharnier); //linkto functie

clip linkto(scharnier);
scharnier rotateYaw( 89, 0.1, 0.05, 0.05 );//script_origin draait 89°, dus ook deur en player_clip


wait(1);
objective_state(1, "done"); //objective voltooid

}


Sla dit nu op als mapnaam.gsc in CallofDuty2/main/maps/mapnaam.gsc

Omdat we een fx gebruiken (exploder), hebben we ook een _fx.gsc bestand nodig.

mapnaam_fx.gsc
main()
{
level thread precacheFX();
level thread exploders();

}

precacheFX()
{

level._effect["exp_pack_doorbreach"] = loadfx( "fx/explosions/exp_pack_hallway.efx" );//effect die we gebruiken

}


exploders()
{
maps\_fx::exploderfx(1, "exp_pack_doorbreach", (-56,-1000,64), 0.1, (-56,-1100,100));//exploder die we in gsc gebruikten; coordinaat ontploffing, coordinaat naar waar fx zich beweegt, weg van deur
}


Sla dit nu op als mapnaam.gsc in CallofDuty2/main/maps/mapnaam_fx.gsc

Enkele ingame beelden:
Deur Objective - CoD2 Tutorial - Screenshot 7

Download map (.map, .str, .gsc en .d3dbsp)



*Objective 5.5: vernietigen van gebouwen

in progres



Objective 6: documenten stelen
Dit kan bv zijn: Steal the enemy documents.

Mapping gedeelte:

In mijn voorbeeldmap voor dit objective, heb ik reeds een player_start gezet (waar je als speler spawnt) en een tabel (xmodel/furniture_longdiningtable) waarop ons document zal geplaatst worden.

Document Objective CoD2 Tutorial - Screenshot 1

Maak nu een script_model aan: rechtermuisklik in het 2d grid - script - model.
Kies nu een document die je wilt gebruiken (zorg ervoor dat er op het einde van de xmodelnaam _obj of _glow staat).
Ik kies voor prop_map_3_obj.
Plaats deze script_model naar de gewenste plaats (op tafel), het kan zijn dat je de xmodel niet kan zien in de 3d, enkel het blauwe kubusje.

Document Objective CoD2 Tutorial - Screenshot 2

Houd het document nog geselecteerd.
Open nu het entity venster 'n' en geef volgende waarden in:

Key: targetname
Value: document

Document Objective CoD2 Tutorial - Screenshot 3

Deselecteer het document en maak een brush net voor de tafel (er een beetje over mag), rechtermuisklik - trigger - use.
Deze trigger zal ervoor zorgen dat we het bericht krijgen: Duw op enter om het document te pakken of iets dergelijks.

Maar voor dit verschijnt moeten we nog enkele waarden geven via het entity venster.

Key: targetname
Value: document_trig

Key: hintstring
Value: Press [&&1] to grab the document

Document Objective CoD2 Tutorial - Screenshot 4

Noteer nu nog de coordinaten van het document ( hebben we nodig om de plaats van het sterretje op kompas te bepalen), mijn coordinaten zijn: (-34, -1134, 57)

Ok, dit was het mapping gedeelte, we gaan verder met het script gedeelte.

Script gedeelte:

mapnaam.str

VERSION          "1"
CONFIG           "C:\trees\cod2\bin\StringEd_PC.cfg"
FILENOTES        ""

REFERENCE        OBJ_DOCUMENT//naam zelf te kiezen (hebben we nog nodig in .gsc)
LANG_ENGLISH   "Steal the Document" //tekst die ingame verschijnt

ENDMARKER


Dit bestand plaats je in CallofDuty2/main/localizedstrings/mapnaam.str

mapnaam.gsc
#include maps\_utility;

main()
{
maps\_load::main();

precacheModel("xmodel/prop_map_3_obj");

document();
}

document(){

doc = getent("document","targetname");//targetname van het document
trig = getent("document_trig","targetname");//targetname trigger

objective_add(1, "active", &"MAPNAAM_OBJ_DOCUMENT", (-34, -1134, 57));//verwijst naar str. ; coordinaten
objective_current(1);

trig waittill ("trigger");//wachten tot 'enteren' van de trigger

trig delete();//verwijder de trigger
doc delete();//verwijder het document

objective_state(1,"done");//objective voltooid

}


Sla dit nu op als mapnaam.gsc in CallofDuty2/main/maps/mapnaam.gsc

Voila, zo moeilijk was het maar.
Nog een ingame screen om dit objective af te sluiten.

Document Objective CoD2 Tutorial - Screenshot 5
Document Objective CoD2 Tutorial - Screenshot 6

Download map (.map, .str, .gsc en .d3dbsp)



Inloggen

Online users
Nieuwste lid:
mericin

· IzNoGoD00:08:29
· usselite00:19:17
· vinhui00:26:31
· Wolph00:39:58
· mericin00:47:12
· phinal00:54:03
· mitchhubers01:04:04
· HuRRaCaNe02:00:31
· Fristi02:02:49
· Niels02:08:41
· Google[bot]Online

Gasten online: 4


Link ons

Partners

Links


Naar Boven

© 2006-2012 Modbase. Alle rechten voorbehouden. Disclaimer | Gedragscode

Custom coding by Stijn, Image fixing by Derix