Seite 1 von 1

Karten Erstellung in JA2

Verfasst: 29 Jul 2005, 23:19
von Wulfy301
Hallo Leute,

ich möchte einige Sektoren zwei Maps zuweisen (Beispiel: Sektor M9 -> Map M9.dat und M9_a.dat) damit die Karte in JA2 mehr Abwechslung bei einem Neustart bietet, so ähnlich wie im "Night Ops" Mod.
Meine bisherigen Versuche zwei Maps für einen Sektor einzubauen schlugen aber fehl, im Source kann ich nichts darüber finden wie es gemacht wird.:uhoh:

Weiß jemand wie man so was macht? :confused:

Mfg...

Verfasst: 21 Aug 2005, 09:32
von Realist
Moin,

schau dir mal die Funktion "void InitNPCs( void )" in Strategic\Game Init.c
und das Ende von "void InitStrategicAI()" in Strategic\Strategic AI.c an.

Evtl. hilfts dir auch, nach "SF_USE_ALTERNATE_MAP" zu suchen.

Verfasst: 21 Aug 2005, 11:36
von Wulfy301
Hallo Realist

Werde ich mir gleich mal ansehen, danke für deine Hilfe! :erdbeerteechug:

Mfg..

Verfasst: 21 Aug 2005, 12:43
von Wulfy301
Hallo Leute

Dank Realist’s Hilfe konnte ich das Problem lösen, im Anhang findet man ein kleines Tut. wie’s geht.

Ich habe es mal angetestet, es sollten also keine Schwierigkeiten auftauchen, falls doch bitte Bescheid geben.

@ Realist

Bitte sieh es dir mal kurz an, ob ich irgend etwas übersehen habe – danke! :erdbeerteechug:

Mfg...

Verfasst: 21 Aug 2005, 12:51
von Realist
sieht doch ganz gut aus. :)

vielleicht sollte man noch dabei schreiben, dass man mit

Code: Alles auswählen

switch( Random( 2 ) ) {
case 0: ... }
die wahrscheinlichkeit von 1/3 hat, dass die alternativkarte verwendet wird.

außerdem macht in diesem fall die switch-case abfrage nicht viel sinn, besser wäre

Code: Alles auswählen

if (switch( Random( 2 ) ) == 0 )
{
// use alternate map in this sector
SectorInfo[ SECTOR( 9, MAP_ROW_A ) ].uiFlags |= SF_USE_ALTERNATE_MAP;
}
- aber das ist nur ne kleinigkeit. ;)

edit:
ich hab mir mal erlaubt, das doc dementsprechend zu überarbeiten:

Verfasst: 21 Aug 2005, 13:38
von Wulfy301
Top Teamwork würde ich sagen! :erdbeerteechug:

Mfg...

Fehlerkorrektur

Verfasst: 28 Aug 2005, 15:22
von Realist
Ich muss mich entschuldigen und etwas richtig stellen. :red:

Mit

Code: Alles auswählen

switch( Random( 2 ))
wird natürlich die Wahrscheinlichkeit von 1/2 (= 50%) erzeugt, da Random(2)
natürlich nur 0 oder 1 zurückgeben kann.

Das mit 1/3 oben und in der Datei ist großer Schwachfug. :azzangel:

ReaAscheaufmeinHauptlist

Verfasst: 28 Aug 2005, 15:43
von Wulfy301
@Realist

Hat aber trotzdem funktioniert und gemerkt hat's auch keiner! *lol*

Mfg...

Verfasst: 28 Aug 2005, 15:51
von Wulfy301
// Neu
// switch( Random( x )) für eine Wahrscheinlichkeit von 50%, dass Alternativmap geladen wird

switch( Random( 2 ))

SectorInfo[ SECTOR( 9, MAP_ROW_A ) ].uiFlags |= SF_USE_ALTERNATE_MAP;

switch( Random( 2 ))

SectorInfo[ SECTOR( 13, MAP_ROW_D ) ].uiFlags |= SF_USE_ALTERNATE_MAP;


Ergibt dann eine Wahrscheinlichkeit von 50% das die Alternativmap geladen wird, oder?

Mfg...

Verfasst: 28 Aug 2005, 16:01
von Realist
Ergibt dann eine Wahrscheinlichkeit von 50% das die Alternativmap geladen wird, oder?
jawohl. :D

Verfasst: 28 Aug 2005, 16:15
von Wulfy301
Hier das überarbeitete Tut.! :k:

Mfg...

Verfasst: 19 Sep 2005, 01:30
von Wulfy301
Hallo Leute!

Ich musste gerade feststellen das es noch immer nicht funktioniert, ohne die case 0: Anweisung geht’s nicht!

Jetzt klappt es, aber wer weiß ob das jetzt die letzte Änderung war! :dozey:

Mfg...

Verfasst: 19 Sep 2005, 14:42
von Realist
Realist hat geschrieben:Mit

Code: Alles auswählen

switch( Random( 2 ))
wird natürlich die Wahrscheinlichkeit von 1/2 (= 50%) erzeugt, da Random(2)
natürlich nur 0 oder 1 zurückgeben kann.
da lag der hund begraben. :azzangel:
in der korrektur einen weiteren fehler gemacht - es muss IF heißen :headbang:

Code: Alles auswählen

if( Random( 2 ))
daher war auch kein case da. :red:

aber, hey, es war ziemlich warm an dem tag :D

edit: hast du zufällig wieder das alte doc angehängt?

Verfasst: 19 Sep 2005, 15:49
von Wulfy301
@Realist

Hab es mir doch gedacht, das noch was kommt!*lol*

So, hab’s gleich mal getestet und es funktionieren beide Möglichkeiten, aber die
if ( Random ( 2 )) ist die elegantere Lösung. :k:

zu edit-> Nö!:rolleyes:

Mfg...