HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   ki fordert atillerie an (https://hx3.de/editing-scripting-167/ki-fordert-atillerie-17794/)

Phoenixmaster13 30.08.2009 01:12

ki fordert atillerie an
 
in einer mission vin mir soll sich ein trupp us marines aus einer stadt zurück ziehen nun währe es sehr geil für die spanunng wenn es noch mörser feuer gäbe

wie muss ich es machen, damit die ki möserunterstüzung anfordert? zum beispiel wenn er den trupp ausgemacht hat.



oder was auch gehen würde wenn einfach ein bestimmtes gebiet unter mörser beschuss liegen würde


hoffe auf baldige antwort

Anemia 30.08.2009 08:44

Hi ,
versuch dein glück mal hiermit.
Code:

; Improvised Explosive Device Script
; By Jeevz
; v1.2 12/13/06


; This script will create an explosion of a
; selected size on any object when called
; The arguments are [objectName, explosionPower]
; Explosion Power will be 1 of 4 choices
; Small - Good for Anti-Personnel use
; Medium - Will usually disable a Humvee without killing the occupants
; Large - Will usually destroy a passing humvee and kill or severly injure all occupants, will disable the tracks and possibly engine on M1A1
; Huge - Nothing will survive, I mean... it's HUGE :-)

Ich bin auch nur aufgrund einer anderen mission drüber gestolpert. Du wirst die daten aber sicherlich noch im netz finden. Musst einfach mal bei der Suchmaschine deiner wahl schauen.

Hemingway 30.08.2009 11:08

ich würd eher nen script vorschlagen, der über ein bestimmtes gebiet in zufälligen zeitabständen zufällig verteilt mörsergranaten regnen lässt.

Phoenixmaster13 31.08.2009 17:42

auch gut und kennst du ihn?

Hemingway 31.08.2009 23:56

schon mr murrays editing guide gelesen?

mit dem was da drin steht sollte man es eigentlich (auch als anfänger) selbst hinbekommen sowas :daumen:

Phoenixmaster13 01.09.2009 19:52

hab ich durchgeleseb aber komme irgenwie nicht weiter hat jemand eine beispiel mission?

Hemingway 01.09.2009 20:22

du hast den guide gelesen und hast trotzdem keine ahnung wie du das umsetzen sollst? :komisch:

einfach mal methodisch vorgehen:

was willst du? zufälliges einschlagen von artillerie-granaten

also erstmal die granate.

seite 126, 5.46 - Flares, Rauch und Explosionen erzeugen

Code:

Flare1="F_40mm_Green" createVehicle [x,y,z]
da du keine flares sondern ordentlich boom willst, brauchts wohl die shelltabelle.

seite 80 3.10 - Die Shellklassen

nehmen wir einfach mal die SH_105_HE Granate.

also:
Code:

_boom="SH_105_HE" createVehicle [x,y,z]
soweit so gut, damit haben können wir bei den koordinaten x,y,z eine granate erzeugen, die dann, welch wunder, auch nach unten fällt und BOOM macht :daumen:

da wir aber nicht nur an einem punkt ein loch graben wollen, sondern über eine weite fläche zufällige einschläge brauchen, blättern wir ein wenig weiter im guide, und siehe da: es gibt eine funktion namens random

seite 269, 9.8 - Random

trifft sich gut das das im scripting-kapitel steht, weil genau das machen wir ja gerade :ugly:

außerdem passt ja optimal, das da als beispiel die zufällige auswahl aus 4 fällen erklärt ist, denn auch das passt optimal auf unsere geplante anwendung.

angenommen, wir wollen das die granaten in einem feld rund um einen marker einschlagen, welche 4 möglichkeiten haben wir dann?


genau, I- IV quadrant. also oben links, oben rechts, unten links und unten rechts vom markermittelpunkt.
wir nehmen also gleich mal diese random-auswahl aus dem beispiel:

Code:

_start = random 4
? _start < 1 : goto "I";
? _start < 2 : goto "II";
? _start < 3 : goto "III";
? _start < 4 : goto "IV"

was "goto" und "label" sind, finden wir, falls nicht bekannt, ebenfalls im guide, allerdings sind wir da, wenn wir uns auf seite 269 befinden, sicher scohn mal drübergestolpert :D

ja, und jetzt brauchen wir eigentlich nur noch die 4 möglichkeiten wieder mit random definieren:

wir legen einen radius um den marker fest, z.B. 100

Code:

_rad = random 100
, also ein wert von 0-100

und jetzt isses eigentlich nur noch mathematik/geometrie - je nachdem in welchem quadranten wir sind rechnen wir eben _markerzentrumx+_rad und _markerzentrumy+_rad oder beide - oder jeweils gemischt.

das ganze zusammen mit dem spawnen von granaten, und einer schleife, damit nicht nur eine murmel runterkommt - voila :daumen:




ps an die profis: mag sein das es einfachere oder sinnvollere lösungen gibt, aber das hier beschriebene ist das, was mir bei der überlegung, wie man das vom threadsteller gestellte problem lösen könnte als erstes in den sinn gekommen ist...

Phoenixmaster13 01.09.2009 21:44

na schön nur leider wenn ich das einfügen will
_start = random 4
? _start < 1 : goto "I";
? _start < 2 : goto "II";
? _start < 3 : goto "III";
? _start < 4 : goto "IV"

kommt immer fehlendes ; . wenn ich es dan mache steht ungültige zahl im ausdruck , was soll der misst


kann nicht jemand einfach eine beispielmission machen von wo aus ich es dan ableiten kann

Hemingway 01.09.2009 22:15

du sollst es auch nicht "einfügen", sondern ein script schreiben. und scripts bringen leider keine fehlermeldungen :D

klar gehört nach der random 4 ein ";" :rolleyes:

Hemingway 06.09.2009 20:48

so, dieser script dürfte funktionieren:

das hier über nen auslöser aufrufen:
Code:

["markername",radius,"Shelltype",feuerpause,gesamtgeschosszahl] exec "randomfire.sqs"
mit den parametern kannste deinen flächenbeschuss konfigurieren:

markername = du musst einen marker auf der karte plazieren, der den mittelpunkt des beschusses festlegt. den namen von dem gibts du hier an ;)
radius = radius um den marker, in dem geschosse einschlagen sollen
shelltype = art der granaten, die einschlagen sollen (guide s.80 ist ne tabelle, zur not gehen auch kühe xD)
feuerpause = abstand zwischen den einzelnen einschlägen
gesamtgeschosszahl = wieviel granaten insgesamt einschlagen sollen

randomfire.sqs
Code:

_target = _this select 0;
_hitrad = _this select 1;
_shell = _this select 2;
_break = _this select 3;
_limit = _this select 4;

_posx = (getmarkerpos _target) select 0;
_posy = (getmarkerpos _target) select 1;

_i = 0;

hint format ["%1",_shell];

#Loop
~3
_i = _i+1;
_rad = random _hitrad;

? (_i==_limit) : exit;

_sector = random 4;
? (_sector<1) : goto "I";
? (_sector<2) : goto "II";
? (_sector<3) : goto "III";
? (_sector<4) : goto "IV";

#I
_hitpos = [(_posx+_rad),(_posy+_rad),10];
nil = _shell createVehicle _hitpos;
goto "Loop";

#II
_hitpos = [(_posx-_rad),(_posy+_rad),10];
nil = _shell createVehicle _hitpos;
goto "Loop";

#III
_hitpos = [(_posx-_rad),(_posy-_rad),10];
nil = _shell createVehicle _hitpos;
goto "Loop";

#IV
_hitpos = [(_posx+_rad),(_posy-_rad),10];
nil = _shell createVehicle _hitpos;
goto "Loop";


Phoenixmaster13 06.09.2009 22:37

jup geht perfekt vielen vielen dank noch mal:D


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119