Waffenhändler Tony
Moderator: Flashy
Waffenhändler Tony
Hallo Leute,
für alle, die es wie mich stört das Tony ständig Inventur macht!:summer:
Diese Stelle im Source gibt an ob Tony im Laden ist oder nicht.
C:\ja2\Build\Strategic\Strategic Event Handler.c
if( gMercProfiles[ TONY ].ubLastDateSpokenTo > 0 && !( gWorldSectorX == 5 && gWorldSectorY == MAP_ROW_C && gbWorldSectorZ == 0 ) )
{
// San Mona C5 is not loaded so make Tony possibly not available
if (Random( 4 ))
{
// Tony IS available
SetFactFalse( FACT_TONY_NOT_AVAILABLE );
gMercProfiles[ TONY ].sSectorX = 5;
gMercProfiles[ TONY ].sSectorY = MAP_ROW_C;
}
else
{
// Tony is NOT available
SetFactTrue( FACT_TONY_NOT_AVAILABLE );
gMercProfiles[ TONY ].sSectorX = 0;
gMercProfiles[ TONY ].sSectorY = 0;
}
}
Wenn man den Random-Wert auf Null setzt ist Tony immer im Laden!
Ich habe es ein paar mal versucht und er war jedes Mal da, scheint also hinzuhauen.
Mfg...
für alle, die es wie mich stört das Tony ständig Inventur macht!:summer:
Diese Stelle im Source gibt an ob Tony im Laden ist oder nicht.
C:\ja2\Build\Strategic\Strategic Event Handler.c
if( gMercProfiles[ TONY ].ubLastDateSpokenTo > 0 && !( gWorldSectorX == 5 && gWorldSectorY == MAP_ROW_C && gbWorldSectorZ == 0 ) )
{
// San Mona C5 is not loaded so make Tony possibly not available
if (Random( 4 ))
{
// Tony IS available
SetFactFalse( FACT_TONY_NOT_AVAILABLE );
gMercProfiles[ TONY ].sSectorX = 5;
gMercProfiles[ TONY ].sSectorY = MAP_ROW_C;
}
else
{
// Tony is NOT available
SetFactTrue( FACT_TONY_NOT_AVAILABLE );
gMercProfiles[ TONY ].sSectorX = 0;
gMercProfiles[ TONY ].sSectorY = 0;
}
}
Wenn man den Random-Wert auf Null setzt ist Tony immer im Laden!
Ich habe es ein paar mal versucht und er war jedes Mal da, scheint also hinzuhauen.
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

Moin Tobeas,
ja, sollte mit jedem NPC gehen.
Mfg...
ja, sollte mit jedem NPC gehen.
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

@Nitrat
NPC oder RPC, ich bring das immer durcheinander, dann müsste Tony also ein RPC sein.
In dem Fall muss es richtig heißen: "Ja, sollte mit jedem RPC gehen"!:D
Mfg...
NPC oder RPC, ich bring das immer durcheinander, dann müsste Tony also ein RPC sein.
In dem Fall muss es richtig heißen: "Ja, sollte mit jedem RPC gehen"!:D
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

hmm, vielleicht damit zB ein paar gewisse Terroristen (Nitrat hat geschrieben:ehh, welchen Sinn ergibt es, das mit den NPC's zu machen ?
MFG....


gruss, -=[MAD]=-
neuestes Projekt: Ja2 - Fight For Freedom <-- Neuigkeiten!
Fundgrube für Ja2-Files: http://www.hoenir.de/ja2/
Fundgrube für Ja2-Files: http://www.hoenir.de/ja2/
-
- Alpha-Squad
- Beiträge: 1593
- Registriert: 01 Feb 2002, 19:22
- Kontaktdaten:
Das die Terroristen immer im gleichen Sektor sind, ist etwas Langweilig, aber das alle Terroristen in einem Spiel zufinden sind, ist keine schlechte Idee, muss ich mal schauen ob das geht!
Mfg...
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

@Nitrat
Wenn ich erfolgreich bin, werde ich es natürlich ins Forum stellen, sollen doch alle was davon haben!
Mfg...
Wenn ich erfolgreich bin, werde ich es natürlich ins Forum stellen, sollen doch alle was davon haben!
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

-
- Alpha-Squad
- Beiträge: 1593
- Registriert: 01 Feb 2002, 19:22
- Kontaktdaten:
ich kann dir zwar grad nicht sagen wo das war aber es war in Strategic
und war ne Prozentzahl die für die Schwirigkeitsgrade unterschiedlich war
also auf 100 % und du hast die immer
und war ne Prozentzahl die für die Schwirigkeitsgrade unterschiedlich war
also auf 100 % und du hast die immer






Die Your God is Dead
Behold Satans Rise

(Action)Gamer für Gewalt und Terror

@shadow the deat
Im Anhang ist ein Auszug der Stelle im Source, der Terroristen betreffenden, das mit den 100 % habe ich ausprobiert, hat aber nicht geklappt, es scheint etwas komplizierter zu sein.
Mfg...
Im Anhang ist ein Auszug der Stelle im Source, der Terroristen betreffenden, das mit den 100 % habe ich ausprobiert, hat aber nicht geklappt, es scheint etwas komplizierter zu sein.
Mfg...
- Dateianhänge
-
Terroristen.doc
- (34 KiB) 874-mal heruntergeladen
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

@Realist
Ich hoffe das es für dich kein Problem ist, alles was ich bis jetzt probiert habe, ergab nicht die erwünschte Wirkung!:shakehead:
So wie es aussieht sollen nicht mehr als 4 Terroristen im Spiel vorkommen.
Mfg...
Ich hoffe das es für dich kein Problem ist, alles was ich bis jetzt probiert habe, ergab nicht die erwünschte Wirkung!:shakehead:
So wie es aussieht sollen nicht mehr als 4 Terroristen im Spiel vorkommen.
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

-
- Alpha-Squad
- Beiträge: 1593
- Registriert: 01 Feb 2002, 19:22
- Kontaktdaten:
[PHP]switch( gGameOptions.ubDifficultyLevel )
{
case DIF_LEVEL_EASY:
uiChance = 70;
break;
case DIF_LEVEL_HARD:
uiChance = 30;
break;
default:
uiChance = 50;
break;
}
// add at least 2 more
ubNumAdditionalTerrorists = 2;
for (ubLoop = 0; ubLoop < (MAX_ADDITIONAL_TERRORISTS - 2); ubLoop++)
{
if (Random( 100 ) < uiChance)
{
ubNumAdditionalTerrorists++;
}
}
[/PHP]
die Sachen definieren nur den Wert für uiChance den einfach auf 100
[PHP]#define MAX_ADDITIONAL_TERRORISTS 4[/PHP]
das muss auf 5 oder 6 muss man testen
[PHP]if ( ( gMercProfiles[ ubTerrorist ].sSectorX == 0 ) && ( Random( 100 ) < 40 ) )[/PHP]
Statt der 40 nimm uiChance müsste gehn wenn nicht 100
{
case DIF_LEVEL_EASY:
uiChance = 70;
break;
case DIF_LEVEL_HARD:
uiChance = 30;
break;
default:
uiChance = 50;
break;
}
// add at least 2 more
ubNumAdditionalTerrorists = 2;
for (ubLoop = 0; ubLoop < (MAX_ADDITIONAL_TERRORISTS - 2); ubLoop++)
{
if (Random( 100 ) < uiChance)
{
ubNumAdditionalTerrorists++;
}
}
[/PHP]
die Sachen definieren nur den Wert für uiChance den einfach auf 100
[PHP]#define MAX_ADDITIONAL_TERRORISTS 4[/PHP]
das muss auf 5 oder 6 muss man testen
[PHP]if ( ( gMercProfiles[ ubTerrorist ].sSectorX == 0 ) && ( Random( 100 ) < 40 ) )[/PHP]
Statt der 40 nimm uiChance müsste gehn wenn nicht 100





Die Your God is Dead
Behold Satans Rise

(Action)Gamer für Gewalt und Terror

@shadow the deat
Habe die neuen Einstellungen ein paar mal getestet aber es scheint nicht zu funktionieren.
Man kann nur max. 5 Terroristen einstellen, bei 6 stürzt der Computer ab. Im Source sind folgende Sektoren ( H14 / C6 / G1 / G2 / G8 / I14 / F9 / B2 / L11 / H2 ) angegeben, wo die Terroristen auftauchen sollen, mehr als 4 gleichzeitig konnte ich aber nie finden.
Mfg...
Habe die neuen Einstellungen ein paar mal getestet aber es scheint nicht zu funktionieren.
Man kann nur max. 5 Terroristen einstellen, bei 6 stürzt der Computer ab. Im Source sind folgende Sektoren ( H14 / C6 / G1 / G2 / G8 / I14 / F9 / B2 / L11 / H2 ) angegeben, wo die Terroristen auftauchen sollen, mehr als 4 gleichzeitig konnte ich aber nie finden.
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

@Realist
Was meinst Du mit "prinzipiell ist shadows idee die richtige"?
Hast Du einen andere Lösung?
Mfg...
Was meinst Du mit "prinzipiell ist shadows idee die richtige"?
Hast Du einen andere Lösung?
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

muss man nicht
[PHP]for (ubLoop = 0; ubLoop < (MAX_ADDITIONAL_TERRORISTS - 2); ubLoop++)[/PHP]
ändern zu
[PHP]for (ubLoop = 0; ubLoop < (MAX_ADDITIONAL_TERRORISTS); ubLoop++)[/PHP]
[PHP]for (ubLoop = 0; ubLoop < (MAX_ADDITIONAL_TERRORISTS - 2); ubLoop++)[/PHP]
ändern zu
[PHP]for (ubLoop = 0; ubLoop < (MAX_ADDITIONAL_TERRORISTS); ubLoop++)[/PHP]
Ich hab mich am 11.02.2002 um 11:28 hier im Forum angemeldet und habe am 17.10.2002 um 20:22 meinen 1000.Post geschrieben!!!
@Wulfy
nein meine lösung ist "vom prinzip her" die gleiche, daher sage ich auch "prinzipiell richtig".
kann ja mal meins posten mit dem ich 5 terroristen kirege.
@Tobeas
kann man machen, ich hab allerdings
ubNumAdditionalTerrorists,
das in der schleife erhöht wird, einfach nach der schleife manuell hochgesetzt
natürlich nur zu testzwecken
nein meine lösung ist "vom prinzip her" die gleiche, daher sage ich auch "prinzipiell richtig".
kann ja mal meins posten mit dem ich 5 terroristen kirege.
@Tobeas
kann man machen, ich hab allerdings
ubNumAdditionalTerrorists,
das in der schleife erhöht wird, einfach nach der schleife manuell hochgesetzt

natürlich nur zu testzwecken

doh, wie lange hat man eigentlich zeit seinen beitrag zu editen?
damit kriegt man 5 terroristen und das mit ziemlicher sicherheit.
also den wirt und 4 weitere.
immer wenn ich versuch den letzten noch einzufügen, schmiert das spiel ab.
bis jetzt kA worans liegt.
Code: Alles auswählen
// neu:
#define MAX_ADDITIONAL_TERRORISTS 5
void DecideActiveTerrorists( void )
{
UINT8 ubLoop, ubLoop2;
UINT8 ubTerrorist;
UINT8 ubNumAdditionalTerrorists, ubNumTerroristsAdded = 0;
UINT32 uiChance, uiLocationChoice;
BOOLEAN fFoundSpot;
// neu:
INT16 sTerroristPlacement[MAX_ADDITIONAL_TERRORISTS][2] = { {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0} };
#ifdef CRIPPLED_VERSION
return;
#endif
// one terrorist will always be Elgin
// determine how many more terrorists - 2 to 4 more
// using this stochastic process(!), the chances for terrorists are:
// EASY: 3, 9% 4, 42% 5, 49%
// MEDIUM: 3, 25% 4, 50% 5, 25%
// HARD: 3, 49% 4, 42% 5, 9%
switch( gGameOptions.ubDifficultyLevel )
{
case DIF_LEVEL_EASY:
uiChance = 70;
break;
case DIF_LEVEL_HARD:
uiChance = 30;
break;
default:
uiChance = 50;
break;
}
// add at least 2 more
ubNumAdditionalTerrorists = 2;
for (ubLoop = 0; ubLoop < (MAX_ADDITIONAL_TERRORISTS - 2); ubLoop++)
{
if (Random( 100 ) < uiChance)
{
ubNumAdditionalTerrorists++;
}
}
// neu:
ubNumAdditionalTerrorists = 5;
// ifdefs added by CJC
#ifdef JA2TESTVERSION
ubNumAdditionalTerrorists = 4;
#endif
while ( ubNumTerroristsAdded < ubNumAdditionalTerrorists )
{
ubLoop = 1; // start at beginning of array (well, after Elgin)
// NB terrorist ID of 0 indicates end of array
while ( ubNumTerroristsAdded < ubNumAdditionalTerrorists && gubTerrorists[ ubLoop ] != 0 )
{
ubTerrorist = gubTerrorists[ ubLoop ];
// random 40% chance of adding this terrorist if not yet placed
// neu:
if ( ( gMercProfiles[ ubTerrorist ].sSectorX == 0 ) )
{
fFoundSpot = FALSE;
// Since there are 5 spots per terrorist and a maximum of 5 terrorists, we
// are guaranteed to be able to find a spot for each terrorist since there
// aren't enough other terrorists to use up all the spots for any one
// terrorist
do
{
// pick a random spot, see if it's already been used by another terrorist
uiLocationChoice = Random( NUM_TERRORIST_POSSIBLE_LOCATIONS );
for (ubLoop2 = 0; ubLoop2 < ubNumTerroristsAdded; ubLoop2++)
{
if (sTerroristPlacement[ubLoop2][0] == gsTerroristSector[ubLoop][uiLocationChoice][0] )
{
if (sTerroristPlacement[ubLoop2][1] == gsTerroristSector[ubLoop][uiLocationChoice][1] )
{
continue;
}
}
}
fFoundSpot = TRUE;
} while( !fFoundSpot );
// place terrorist!
gMercProfiles[ ubTerrorist ].sSectorX = gsTerroristSector[ ubLoop ][ uiLocationChoice ][ 0 ];
gMercProfiles[ ubTerrorist ].sSectorY = gsTerroristSector[ ubLoop ][ uiLocationChoice ][ 1 ];
gMercProfiles[ ubTerrorist ].bSectorZ = 0;
sTerroristPlacement[ ubNumTerroristsAdded ][ 0 ] = gMercProfiles[ ubTerrorist ].sSectorX;
sTerroristPlacement[ ubNumTerroristsAdded ][ 1 ] = gMercProfiles[ ubTerrorist ].sSectorY;
ubNumTerroristsAdded++;
}
ubLoop++;
}
// start over if necessary
}
// set total terrorists outstanding in Carmen's info byte
gMercProfiles[ 78 ].bNPCData = 1 + ubNumAdditionalTerrorists;
// store total terrorists
gubNumTerrorists = 1 + ubNumAdditionalTerrorists;
}
also den wirt und 4 weitere.
immer wenn ich versuch den letzten noch einzufügen, schmiert das spiel ab.
bis jetzt kA worans liegt.
@Realist
Habe es getestet und auf anhieb 5 Terroristen gefunden!:k:
Die uiChange Werte habe ich alle auf 100 gesetzt, weiß allerdings nicht ob das überhaupt nötig ist?
case DIF_LEVEL_EASY:
uiChance = 100;
break;
case DIF_LEVEL_HARD:
uiChance = 100;
break;
default:
uiChance = 100;
break;
Mfg...
Habe es getestet und auf anhieb 5 Terroristen gefunden!:k:
Die uiChange Werte habe ich alle auf 100 gesetzt, weiß allerdings nicht ob das überhaupt nötig ist?
case DIF_LEVEL_EASY:
uiChance = 100;
break;
case DIF_LEVEL_HARD:
uiChance = 100;
break;
default:
uiChance = 100;
break;
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

die uiChance werte bestimmen, wieviele zusätzliche terroristen man bekommen kann.
jedesmal wenn man mit dieser chance glück hat wird nämlich ubNumAdditionalTerrorists eins hochgesetzt.
erst danach wird wirklich bestimmt ob man auch die zahl von ubNumAdditionalTerrorists wirklich erreicht, und zwar erhält jeder terrorist eine 40% existenzchance.
noch was, schau doch mal in c6 san mona (wo angel seinen bikerladen hat) ganz im süden ungefähr in der mitte ob da ein paar zivilisten "außerhalb" der map stehen, sie also nicht erreichbar sind.
jedesmal wenn man mit dieser chance glück hat wird nämlich ubNumAdditionalTerrorists eins hochgesetzt.
erst danach wird wirklich bestimmt ob man auch die zahl von ubNumAdditionalTerrorists wirklich erreicht, und zwar erhält jeder terrorist eine 40% existenzchance.
noch was, schau doch mal in c6 san mona (wo angel seinen bikerladen hat) ganz im süden ungefähr in der mitte ob da ein paar zivilisten "außerhalb" der map stehen, sie also nicht erreichbar sind.
@Realist
Nö, ich kann keine Zivilisten in C6 am südlichen Rand finden. Warum?
Mfg...
Nö, ich kann keine Zivilisten in C6 am südlichen Rand finden. Warum?
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

es ist so, dass bei mir welche da sind - in einem "toten" bereich am rand.
wenn ich granaten auf sie werfe, werden sie verletzt, bewegen sich daher kurz (bleiben aber in ihrem feld), in der bewegung halten sie inne und man sieht nur noch eine weiße fläche in form des "schattens" den sie werfen würden. als ob man sie ausschneiden würde...
wollte wissen ob das irgendwie von den änderungen an den terroristen kommt, aber wenn nicht, dann ist ja gut
wenn ich granaten auf sie werfe, werden sie verletzt, bewegen sich daher kurz (bleiben aber in ihrem feld), in der bewegung halten sie inne und man sieht nur noch eine weiße fläche in form des "schattens" den sie werfen würden. als ob man sie ausschneiden würde...
wollte wissen ob das irgendwie von den änderungen an den terroristen kommt, aber wenn nicht, dann ist ja gut

Problem:
Nach längerem Spielen ist Tony nicht mehr im Laden, er "vertritt sich mal kurz die Beine"!
Das aber nun schon sehr lange, ich befürchte er wird auch nicht mehr auftauchen.
Den Random-Wert auf Null zu setzen ist nicht die richtige Vorgehensweise, hat jemand eine Idee wie Tony immer im Laden ist?
Mfg...
Nach längerem Spielen ist Tony nicht mehr im Laden, er "vertritt sich mal kurz die Beine"!
Das aber nun schon sehr lange, ich befürchte er wird auch nicht mehr auftauchen.
Den Random-Wert auf Null zu setzen ist nicht die richtige Vorgehensweise, hat jemand eine Idee wie Tony immer im Laden ist?
Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

Ich kann mich irren, aber gibt Random( 0 ) nicht immer 0 zurück?Wulfy301 hat geschrieben:C:\ja2\Build\Strategic\Strategic Event Handler.c
if( gMercProfiles[ TONY ].ubLastDateSpokenTo > 0 && !( gWorldSectorX == 5 && gWorldSectorY == MAP_ROW_C && gbWorldSectorZ == 0 ) )
{
// San Mona C5 is not loaded so make Tony possibly not available
if (Random( 4 ))
{
// Tony IS available
SetFactFalse( FACT_TONY_NOT_AVAILABLE );
gMercProfiles[ TONY ].sSectorX = 5;
gMercProfiles[ TONY ].sSectorY = MAP_ROW_C;
}
else
{
// Tony is NOT available
SetFactTrue( FACT_TONY_NOT_AVAILABLE );
gMercProfiles[ TONY ].sSectorX = 0;
gMercProfiles[ TONY ].sSectorY = 0;
}
}
Wenn man den Random-Wert auf Null setzt ist Tony immer im Laden!
Ich habe es ein paar mal versucht und er war jedes Mal da, scheint also hinzuhauen.
Folglich ist if ( 0 ) niemals wahr und Tony ist überhaupt nie anzutreffen.
Mach mal lieber sowas hier:
Code: Alles auswählen
f( gMercProfiles[ TONY ].ubLastDateSpokenTo > 0 && !( gWorldSectorX == 5 && gWorldSectorY == MAP_ROW_C && gbWorldSectorZ == 0 ) )
{
// San Mona C5 is not loaded so make Tony possibly not available
if ([highlight]1[/highlight])
{
// Tony IS available
SetFactFalse( FACT_TONY_NOT_AVAILABLE );
gMercProfiles[ TONY ].sSectorX = 5;
gMercProfiles[ TONY ].sSectorY = MAP_ROW_C;
}
else // kommt niemals zum Tragen
{
// Tony is NOT available
SetFactTrue( FACT_TONY_NOT_AVAILABLE );
gMercProfiles[ TONY ].sSectorX = 0;
gMercProfiles[ TONY ].sSectorY = 0;
}
}
@Realist
Danke für die schnelle Hilfe, muss das gleich mal Testen !
Mfg...
Danke für die schnelle Hilfe, muss das gleich mal Testen !

Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

Funktioniert!:k:
Dafür gibts nen
Mfg...
Dafür gibts nen

Mfg...
Du hast Probleme mit dem "grünen Rand" (Item-Dateien)? Sinclair hat die Lösung -> Guckst Du hier!

Wenn man Tony IMMER haben will, machts übrigens überhaupt keinen Sinn, die GANZE if Prüfung beizubehalten beginnend mit [highlight]if( gMercProfiles[ TONY ].ubLastDateSpokenTo > 0 && !( gWorldSectorX == 5 &&[/highlight](usw). Daher kann man den ganzen Code im letzten Codefenster oben löschen, sobald die Sektorkoordinaten von Tony erst einmal irgendwo initialisiert sind (was sie ja selbstverständlich standardmäßig irgendwo werden).