|
[OB] Werkende mortieren
|
Geplaatst op 24-04-2008 11:11 | Gewijzigd door Stijn op 26-06-2008 14:33
|

Actief

|
Posts: 211
Joined: 07.02.08
|
Deze tutorial ontbrak nog dus hier een manier om een werkende mortier in je map te plaatsen. Het is vrij eenvoudig.
We starten met het werk in Radiant. Ik ga ervan uit dat je een map hebt met skybox en worldspawn settings, global intermission en spawnpoints.
1. Plaats een model van een mortier in je map die in de vuurrichting wijst. Het is niet noodzakelijk een target name te geven aan dit model.
2. Klik in het 2D veld op de rechtermuisknop en selecteer trigger -->use en plaats deze rondom je mortier model. Plaats hem niet te krap rondom de mortier.
3. Houdt de trigger geselecteerd en open het entity menu door op N te drukken en geef als targetname: trigger_mortar aan de trigger_use
We hebben nu een mortier met een trigger_use. In het spel zul je dan press F to use met een handje zien als je bij de mortier staat.
Nu moeten we de inslag locaties van de mortiergranaten vastleggen.
4. Wederom in de 2D view rechtermuisknop klikken en selecteer script--->model. We plaatsen echter geen model erbij maar houden hem als roze kubus in beeld. Terwijl de kubus nog steeds geselecteerd is drukken we op N om het entity menu in beeld te krijgen en geven de kubus als targetname: mortar_hit. Je kunt deze box zo vaak kopieren en plaatsen in je map als je wilt. Hou het realistisch en plaats ze in de vuurrichting van je mortier.
N.B.: Je kunt meerdere mortieren in je map plaatsen door de trigger door te nummeren. Dus b.v. trigger_mortar, trigger_mortar1, enz. En idem voor de mortar_hit. Zo heeft elke mortier z'n eigen inslagplekken. Houd hiermee rekening tijdens het scripten.
We zijn nu klaar in Radiant en gaan nu scripten.
Hieronder een script voor 1 mortier. Je maakt deze aan in je maps\mp folder en noemt hem b.v. mortar.gsc. In je mapnaam.gsc roep je deze gsc op door: maps\mp\mortar::main(); te plaatsen net boven of onder maps\mp\_load::main();
De code voor mortar.gsc:
Code
main()
{
// laad de effecten die gebruikt worden
level._effect["mortar_explosion"][0] = loadfx ("fx/dust/beltot_wallblast.efx");
level._effect["mortar_explosion"][1] = loadfx ("fx/dust/beltot_wallblast.efx");
level._effect["mortarflash"] = loadfx("fx/explosions/artilleryExp_dirt_brown.efx");
// roep de thread aan waarin de code voor de mortier staat
thread mortar();
}
mortar()
{
//definieer de trigger
trig = getent("trigger_mortar","targetname");
trig waittill("trigger");
// laat het geluid van een mortiergranaat horen die in de mortierbuis valt
trig playsound("mortar_load");
// laad de mortars thread
thread mortars();
}
mortars()
{
//alle mortar_hits worden hier als 1 beschouwd
mortar = getentarray ("mortar_hit","targetname");
{
//tijd tussen afvuren mortier en granaatinslag, kan je aanpassen
wait (7 + randomfloat(7));
// controleert waar de spelers staan t.o.v. de mortier
GoodPosition = false;
{
rand = randomint(mortar.size);
GoodPosition = true;
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
{
if (distance(mortar[rand].origin,players[i].origin) < 200)
{
GoodPosition = false;
break;
}
}
}
//speel het geluid van een inkomende granaat
mortar[rand] playsound("incoming_mortar");
//wacht 2 seconden voor de inslag
wait 2;
//bepaal random waar de mortiergranaat inslaat en speel effect van inslag, er zijn 2 effecten zodat niet de inslag niet elke keer hetzelfde is, welke wordt random bepaald
origin = mortar[rand] getorigin();
playfx (level._effect["mortar_explosion"][randomint(2)], origin);
mortar[rand] playsound("explosion_ground");
//bepaal de straal rondom de inslag waarbinnen de speler gezondheidschade oploopt
radiusDamage(mortar[rand].origin + (0,0,12), 500, 50, 100);
}
//herhaal de thread zodat de mortier weer gebruikt kan worden na de inslag
thread mortar();
}
De tekst achter de // kan je weghalen, heb deze ter verduidelijking v/h script erbij geplaatst.
N.B.: Als je dus meerdere mortieren wilt plaatsen dan kun je dit script aanpassen door de thread mortar te kopieren en door te nummeren synchroon aan je nummering in radiant.
Voor het geluid voegen we onderstaande code toe aan je mapnaam.csv in je soundaliases folder:
Code
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
#mortar
mortar_load,,Weapons/Mortar/wpnfire_mortar2.wav,1,1,,1,1,5000,6000,auto,streamed,,,,your_mapname,,,
incoming_mortar,,Explosions/artillery_incoming01.wav,1,1,,1,1,5000,6000,auto,streamed,,,,your_mapname,,,,
explosion_ground,,Explosions/Mortar_dirt01.wav,1,1,,1,1,5000,6000,auto,streamed,,,,your_mapname,,,,
Dat is alles. Je hebt nu een werkende mortier. Je kunt nog extra effecten toe voegen zoals b.v. een rookpluim die de mortierwerper verlaat als je de mortier afvuurt. Ben er zelf overigens nog niet helemaal achter hoe dit werkt dus als iemand een idee heeft plaats het dan bij deze tutorial.
Slayer
Bericht van Moderator:Deze tutorial is onder beoordeling.
|
| |
| |
|
Geplaatst op 24-04-2008 14:27
|

Senior

|
Posts: 462
Joined: 18.01.08
|
een paar dingetjes. dit onderste voor dat geluid moet je opslaan als csv en niet als een gsc + ik heb geen geluid? hoe komt dat?
.RodneY,
Mods & Maps |
| |
| |
|
Geplaatst op 24-04-2008 16:35
|

Actief

|
Posts: 211
Joined: 07.02.08
|
Oeps, a typo. Is gewijzigd, bedankt.
Geen geluid? Post je csv file even dan kan ik kijken. Doe dit in het COD2 level design forum, daar is een thread over meerdere mortieren. Deze thread is voor de tut.
|
| |
| |
Geplaatst op 24-04-2008 17:13 | Gewijzigd door haggis op 24-04-2008 17:17
|

Master

|
Posts: 563
Joined: 26.04.06
|
Nog een typ foutje:
Dit had jij:
Hieronder een script voor 1 mortier. Je maakt deze aan in je maps\mp folder en noemt hem b.v. mortar.gsc. In je mapnaam.gsc roep je deze gsc op door: maps\mp\mortars::main(); te plaatsen net boven maps\mp\_load::main();
maar moet zijn:
Hieronder een script voor 1 mortier. Je maakt deze aan in je maps\mp folder en noemt hem b.v. mortar.gsc. In je mapnaam.gsc roep je deze gsc op door: maps\mp\mortar::main(); te plaatsen net boven maps\mp\_load::main();
Dus zonder "s" achter mortar in: maps\mp\mortar::main();
of zo:
Hieronder een script voor 1 mortier. Je maakt deze aan in je maps\mp folder en noemt hem b.v. mortars.gsc. In je mapnaam.gsc roep je deze gsc op door: maps\mp\mortar::main(); te plaatsen net boven maps\mp\_load::main();
Dus met een "s" achter mortar in mortar.gsc
Wees consequent in het maken en renamen van scripts, voorkomt ook veel vragen van mensen die weinig verstand hebben van scripten.
Aanvullingen:
Post ook even het bovenste gedeelte van een .csv mee, voor mensen die nog geen .csv hebben is dit makkelijk. De rest zal hem weglaten als je erbij schrijft dat het niet nodig is als je er al een hebt.
Daarnaast kan je de regel: "maps\mp\mortar::main();" ook net onder "maps\mp\_load::main();" zetten.
greetz,
Haggis
|
| |
| |
|
Geplaatst op 24-04-2008 18:21
|

Actief

|
Posts: 211
Joined: 07.02.08
|
gewijzigd
thnx
|
| |
| |
|
Geplaatst op 25-04-2008 16:05
|

Senior

|
Posts: 462
Joined: 18.01.08
|
Oke met dit csv script heb ik alleen een soort swoooooof geluid als ie naar beneden komt maar niet zoeen ieeeeeeeeel geluid erg lastig uitleggen maar is er ook een sound voor het laden + sgieten van de mortier??
.RodneY,
Mods & Maps |
| |
| |
|
Geplaatst op 25-04-2008 18:11
|

Actief

|
Posts: 211
Joined: 07.02.08
|
Verander in je csv mortar_charge door mortar_load, dan komt dat laad geluiid.
Als het goed is moet je de inkomende mortiergranaat horen met daarna de explosie.
|
| |
| |
|
Geplaatst op 26-06-2008 15:54
|

Actief

|
Posts: 116
Joined: 15.06.08
|
Maar je kan toch ook een regel (bijv de motar_charge) kopieëren en daar onder plakken maar dan verander je motar_charge in motar_load?
Of kan dat niet.
Greetzzz, Lane
|
| |
| |
|
Geplaatst op 10-06-2010 19:58
|

Opgewarmd

|
Posts: 65
Joined: 04.05.09
|
Bij
1. Plaats een model van een mortier in je map die in de vuurrichting wijst. Het is niet noodzakelijk een target name te geven aan dit model.
Welk Model Word Hier Bedoeld? misc_model of script_model?
|
| |
| |
|
Geplaatst op 10-06-2010 20:10
|

Moderator
.gif)
Donator
|
Posts: 5538
Joined: 24.08.06
|
Waarschijnlijk een misc_model.
|
| |
| |
|
Geplaatst op 10-06-2010 20:30
|

Opgewarmd

|
Posts: 65
Joined: 04.05.09
|
ok, ik heb het gemaakt met misc model en het werkt super, ik vind het echt mooi gemaakt!
|
| |
| |
|
Geplaatst op 11-06-2010 21:06
|

Junior

|
Posts: 11
Joined: 05.03.10
|
Hoe doe je meerdere inslagen tegelijk van een mortar?
asd |
| |
| |
|
Geplaatst op 11-06-2010 21:48
|

Moderator
.gif)
Donator
|
Posts: 5538
Joined: 24.08.06
|
Dan moet je het script zelf aanpassen.
|
| |
| |
|
Geplaatst op 12-06-2010 09:43
|

Actief

|
Posts: 233
Joined: 22.02.09
|
Super is dit!
Nu alleen even een fx zoeken voor het schot bij de mortar...
Vraagje: is het mogelijk een xmodel van een mortarkogel te laten bewegen naar de plek van inslag in een parabool. Dat zou geweldig zijn. Maar eerlijk gezegd denk ik niet dat CoD2 deze wiskunde heeft 

Black Ops Ratio: 2.50+
MW2 Ratio: 1.70+
CoD1/2/4: ~1.50-2.00 |
| |
| |
|
Geplaatst op 12-06-2010 10:28
|

Moderator
.gif)
Donator
|
Posts: 5538
Joined: 24.08.06
|
Tiek schreef:
Super is dit!
Nu alleen even een fx zoeken voor het schot bij de mortar...
Vraagje: is het mogelijk een xmodel van een mortarkogel te laten bewegen naar de plek van inslag in een parabool. Dat zou geweldig zijn. Maar eerlijk gezegd denk ik niet dat CoD2 deze wiskunde heeft 
Dat moet mogelijk zijn. Granaten vliegen ook in een mooie boog.
Vraag me niet hoe.
|
| |
| |
Geplaatst op 12-06-2010 11:07 | Gewijzigd door Tiek op 12-06-2010 11:10
|

Actief

|
Posts: 233
Joined: 22.02.09
|
En nog een vraag: als iemand dood gaat aan deze mortar, krijg je daar wel punten voor of wordt dit geteld als een soort suicide? En als het een suicide is, misschien een idee om dit in de tut aan te passen, zodat je er wel kills voor krijgt.

Black Ops Ratio: 2.50+
MW2 Ratio: 1.70+
CoD1/2/4: ~1.50-2.00 |
| |
| |
|
Geplaatst op 12-06-2010 11:08
|

Admin
.gif)
|
Posts: 3782
Joined: 16.04.06
|
Je kan het wiskundig laten berekenen, een effect gebruiken of je kan zelf (op een minder juiste manier) de boog maken.
Je boog zal dan bestaan uit 2 rechte lijnen en één echte boog.
Je laat de mortier bewegen naar een bepaald punt waar je die dan rond een origin laat draaien in een grote boog over een bepaalde hoek. Dan laat je die terug in een rechte lijn naar beneden gaan.
In de bijlage zit een afbeelding ter verduidelijking:
Bijlage:
|
| |
| |
Geplaatst op 12-06-2010 11:11 | Gewijzigd door Tiek op 12-06-2010 11:12
|

Actief

|
Posts: 233
Joined: 22.02.09
|
Ik snap hem ^^.
Maar wat nou als je meerdere inslagplekken heb, dan moet die rechte lijn enzo automatisch aangepast worden enzo

Black Ops Ratio: 2.50+
MW2 Ratio: 1.70+
CoD1/2/4: ~1.50-2.00 |
| |
| |
|
Geplaatst op 12-06-2010 11:54
|

Senior

|
Posts: 260
Joined: 05.12.09
|
Btw grenades gaan via boog door hun weapon_mp had ik al eens getest
|
| |
| |
|
Geplaatst op 12-06-2010 15:48
|

Moderator
.gif)
Donator
|
Posts: 5538
Joined: 24.08.06
|
piggy schreef:
Btw grenades gaan via boog door hun weapon_mp had ik al eens getest
En wat denk je dat er in de engine gebeurt?
|
| |