Ja2.ini

Kein Durchblick im Quellcode von Ja2? Hier werden sie geholfen.

Moderator: Flashy

Ja2.ini

Beitragvon Mysterious Dr.X » 21. Sep 2005 15:36

Howdy Rowdies!

Ich wollte heute mal versuchen die Ja2.ini wie bei der neuen "1.13"-Mod einzusetzen um bestimmte Werte auszulesen. So richtig wollte das aber nicht klappen ;)...
Vielleicht könnt ihr mir ja weiterhelfen:
(Build\Strategic\Game Init.c)
Code: Alles auswählen
case DIF_LEVEL_EASY:
iStartingCash   = GetProfileInteger("Options", "Easy", 45000, GAME_INI_FILE);
break;

case DIF_LEVEL_MEDIUM:
iStartingCash   = GetProfileInteger("Options", "Medium", 35000, GAME_INI_FILE);
break;

case DIF_LEVEL_HARD:
iStartingCash   = GetProfileInteger("Options", "Hard", 30000, GAME_INI_FILE);
break;
Die Variable "GAME_INI_FILE" wurde schon mit "..\\Ja2.ini" definiert.
Ich habe den Code mehr oder weniger von der Game Settings.c (Line 262) abgeschrieben. Jedoch wurde dort ein Buchstabe - also ein String - ausgelesen, also hab ich den Code auf den Integer angepasst.
Bei der VC-Hilfe steht nichts davon, dass man die Quell-Datei - in diesem Falle "GAME_INI_FILE" - in der Klammer erwähnen muss, jedoch weiß ich nicht wo ich das sonst unterbringen soll.

Wie ihr euch denken könnt funktioniert der Code so nicht und nimmt einfach den Default-Wert. Ich hoffe einer von euch kann mir hier weiterhelfen ;).


Dr.X
:summer: "I believe in the golden rule. The man with the gold . . . rules!" - Mr.T :summer:
[Tutorial zum Waffenbilder und -werte ändern]
Mysterious Dr.X
Bravo-Squad
 
Beiträge: 575
Registriert: 14. Mär 2003 21:32

Beitragvon Realist » 21. Sep 2005 16:02

Bei "GetProfileInteger" bist du schonmal halbwegs verkehrt. ;)
Bei mir hat die Funktion nur drei Parameter und du übergibst vier Argumente -
ich frag mich, wie du deinen Compiler überzeugt hast, das trotzdem zu
kompilieren. ;)

Versuch mal den Funktionsnamen auszutauschen und diese Funktion zu
verwenden: GetPrivateProfileInt(...) - die hat genau jene vier Parameter.

Die gibt übrigens auch gleich einen integer-Wert zurück, also brauchst du da
nichts umwandeln. Lohnt sich auch einen Blick in die Dokumentation zu dieser
Funktion zu werfen. :)

Alle Angaben wie immer ohne Gewähr :D
Realist
Alpha-Squad
 
Beiträge: 1573
Registriert: 24. Apr 2003 11:00
Wohnort: Düsseldorf

Beitragvon Mysterious Dr.X » 21. Sep 2005 16:26

Howdy Rowdies!

Du hattest Recht, nun funktioniert's ;)!


Dr.X
:summer: "I believe in the golden rule. The man with the gold . . . rules!" - Mr.T :summer:
[Tutorial zum Waffenbilder und -werte ändern]
Mysterious Dr.X
Bravo-Squad
 
Beiträge: 575
Registriert: 14. Mär 2003 21:32

Beitragvon Nitrat » 21. Sep 2005 16:31

*lol* closen oder für später, falls irgendwelche
fragen aufkommen sollten, solange offen lassen ?

MFG.....
Nitrat
Schrecken der Tyrannen
 
Beiträge: 19154
Registriert: 24. Jul 2000 11:00

Beitragvon Realist » 21. Sep 2005 16:44

np @ Dr. X :)

Ne, lass mal offen @ Nitrat
Wär doch schade, wenn dies der erste geschlossene Thread in diesem Unterforum
wäre - außerdem kann immer noch jemand kommen, ders nicht kapier hat. ;)

ReakriegichdasSourceforum?:khelle:list
Realist
Alpha-Squad
 
Beiträge: 1573
Registriert: 24. Apr 2003 11:00
Wohnort: Düsseldorf

Beitragvon commandant » 21. Sep 2005 16:59

Wär eine sicher ein Überlegung wert. Nachdem du hier so ziemlich der Einzigste bist, der sich damit auskennt.
commandant
Scharfschütze
 
Beiträge: 2369
Registriert: 6. Mär 2004 18:09
Wohnort: Nähe von ...

Beitragvon Nitrat » 21. Sep 2005 17:10

Mich würde es nicht weiter stören, wenn man
es schaffen würde Gorgo davon zu überzeugen :khelle:

MFG.....
Nitrat
Schrecken der Tyrannen
 
Beiträge: 19154
Registriert: 24. Jul 2000 11:00

Beitragvon -=[MAD]=- » 22. Sep 2005 17:10

hehe, wolln wa nen poll dazu erstellen? :khelle:

*dafür bin* :k:

gruss, -=[MAD]=-
neuestes Projekt: Ja2 - Fight For Freedom <-- Neuigkeiten!

Fundgrube für Ja2-Files: http://www.hoenir.de/ja2/
-=[MAD]=-
Ironman
 
Beiträge: 8619
Registriert: 9. Nov 2003 12:00

Beitragvon Mysterious Dr.X » 23. Sep 2005 12:46

Howdy Rowdies!

Realist 4 Moderator!

Nun aber zurück zum Thema ;)!

Da das ganze mit dem Startgeld so super geklappt hat, hab ich mich mal daran gemacht die IMP-Generierungstabelle zu editieren (Laptop\IMP Attribute Selection.c). Ist eigentlich genauso simpel wie beim Stargeld, jedoch will VC nicht kompilieren, weil die Werte dann keine Konstanten sind?!

Error-Message:
error C2099: initializer is not a constant

Kleiner Auszug aus dem Code:
Code: Alles auswählen
INT32 iCurrentBonusPoints = 40; // GetPrivateProfileInt( "Options", "BonusPoints", 40, GAME_INI_FILE );
Die Fehlermeldung erscheint, wenn ich die Zahl "40" durch das Auskommentierte ersetze.
Würde mich freuen wenn mir jemand weiterhelfen könnte, falls Realist mal wieder der Einzige ist, der sich meldet: Danke :k:!


Dr.X
:summer: "I believe in the golden rule. The man with the gold . . . rules!" - Mr.T :summer:
[Tutorial zum Waffenbilder und -werte ändern]
Mysterious Dr.X
Bravo-Squad
 
Beiträge: 575
Registriert: 14. Mär 2003 21:32

Beitragvon Realist » 23. Sep 2005 14:12

INT32 iCurrentBonusPoints ist eine globale Variable in der IMP Attribute Selection.c,
das heißt, sie muss bei der Initialisierung im Zuge Deklaration mit einer eindeutigen
Konstante belegt werden.

Versuch mal die Variable mit 0 oder überhaupt nicht zu initialisieren, sondern die
Wertzuweisung in einer eigens dafür aufgerufenen Funktion vorzunehmen.

Also machst du eine neue Funktion, schreibst da die Zuweisung mittels
GetPrivateProfileInt rein und fügst jene Funktionssignatur in die entsprechende
Headerdatei ein, die du dann z.B. in der Init.c einbindest, wo du dann schließlich
auch den Funktionsaufruf ausführst.

Reavielleichtnichtdereinzigeaberdafürdererste:khelle:list
Realist
Alpha-Squad
 
Beiträge: 1573
Registriert: 24. Apr 2003 11:00
Wohnort: Düsseldorf

Beitragvon Mysterious Dr.X » 24. Sep 2005 11:34

Howdy Rowdies!

Hab nun rausgefunden warum es nicht geklappt hat!
Das Problem war, dass so ziemlich gegen Ende der Datei die ganzen Werte erneut definiert werden. Also so ziemlich alles was ich oben verändert hatte unten noch einmal auftaucht. Dort konnte ich den Wert durch meine "ini"-Zuweisung erfolgreich ersetzen und es funktioniert auch im Spiel.
Das letzte Problem hat ästhetische Wurzeln, denn der "Schiebebalken" passt sich noch nicht automatisch nach oben hin an. D.h. wenn man den Maximalwert z.B. auf 90 setzt, fährt der Schlitten über die Schiene hinaus. Irgendwo muss noch stehen, dass der Balken nur bis zum Wert 85 reicht. Das bekomm' ich aber sicher auch noch irgendwann in den Griff :D.


Dr.X
:summer: "I believe in the golden rule. The man with the gold . . . rules!" - Mr.T :summer:
[Tutorial zum Waffenbilder und -werte ändern]
Mysterious Dr.X
Bravo-Squad
 
Beiträge: 575
Registriert: 14. Mär 2003 21:32

Beitragvon Realist » 24. Sep 2005 12:19

Mysterious Dr.X hat geschrieben:Hab nun rausgefunden warum es nicht geklappt hat!
Das Problem war, dass so ziemlich gegen Ende der Datei die ganzen Werte erneut definiert werden. Also so ziemlich alles was ich oben verändert hatte unten noch einmal auftaucht. Dort konnte ich den Wert durch meine "ini"-Zuweisung erfolgreich ersetzen und es funktioniert auch im Spiel.

Das entspricht dem, was ich im vorigen Posting schrieb. :khelle:
Die Sache ist, dass es sich dabei wie gesagt um eine globale Variable handelt und
man kann sie nicht auf der globalen Ebene durch einen Funktionsaufruf initialisieren,
weil dies zur Laufzeit geschehen müsste. Doch zur Laufzeit kann ja auf dieser Ebene
keine Funktion aufgerufen werden, weil diese Stelle nie erreicht wird. Darum muss
man die Initialisierung in einer lokalen Funktion, die dann während der Laufzeit
aufgerufen werden kann, vornehmen. Anders ist es mit Konstanten, die ja bereits
zur Kompilierzeit feststehen und entsprechend schon im Vorfeld zugewiesen werden
können.

Mysterious Dr.X hat geschrieben:Das letzte Problem hat ästhetische Wurzeln, denn der "Schiebebalken" passt sich noch nicht automatisch nach oben hin an. D.h. wenn man den Maximalwert z.B. auf 90 setzt, fährt der Schlitten über die Schiene hinaus. Irgendwo muss noch stehen, dass der Balken nur bis zum Wert 85 reicht.

Ich würde eher diesen Ansatz hier verfolgen (ist die gleiche Datei):
Code: Alles auswählen
// the sizeof one skill unit on the sliding bar in pixels
#define BASE_SKILL_PIXEL_UNIT_SIZE ( ( 423 - 230 ) )

Musst du halt nur ein bischen Verhältnisrechnung betreiben. :D


Reakeinerverstehtmich:khelle:list
Realist
Alpha-Squad
 
Beiträge: 1573
Registriert: 24. Apr 2003 11:00
Wohnort: Düsseldorf


Zurück zu Source Forum

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron