Variablen in String einfuegen

Forum für das was nicht direkt Fate betrifft. Aber dennoch irgendwie hier hin gehört. z. B. reLINE
Biing!2 Download-Dateien

Moderatoren: Xajorkith, erni, Asgard

Antworten
Benutzeravatar
samot
Drache
Drache
Beiträge: 2797
Registriert: Mo 16.07.2001 - 12:48
Wohnort: Koblenz
Kontaktdaten:

Beitrag von samot »

Ich hab mir gestern die unten stehende Funktion geschrieben, um in Strings Platzhalter für Variablen (z.B. %n Schaden) oder andere Strings (z.B. %s findet %n Gold) zu ermöglichen.

Vielleicht könnt Ihr sie auch gebrauchen ...

mfg

Thomas

PS: Die Leerzeichen in den Tempstrings muesst Ihr selber einfuegen, das Forum hat diese geloescht.



var temp2;
string tempstring, " "; // ein langer String
string tempstring2, " ";
string str_set_vartext, " ";
var var_set_vartext[10]; // je nach Bedarf auch mehr oder weniger

text temp_strlist // wird nie angezeigt, dient nur als String-Array, darin werden die Strings für %s abgelegt
{ layer = 0; font = myfont; strings = 5;
string = " ", " ", " ", " ", " ";}

function test()
{
var_set_vartext[0] = 200; var_set_vartext[1] = 10;
str_cpy(temp_strlist.string[0], "einen Ring");
str_cpy(temp_strlist.string[1], "des Glücks");
str_cpy(str_set_vartext, "Du hast %n Gold, %n Edelsteine und %s %s gefunden.");
set_vartext();
// jetzt enthält str_vartext ""Du hast 200 Gold, 10 Edelsteine und einen Ring des Glücks gefunden."
}

function set_vartext()
{
str_cpy(tempstring, "");
temp = str_stri(str_set_vartext, "%n");
temp2 = 0; // Counter
while (temp > 0) // wenn %n im Text vorkommt
{ str_cpy(tempstring2, str_set_vartext);
str_trunc(tempstring2, str_len(tempstring2) - temp + 1); // enthält jetzt Text vor %n
str_cat(tempstring, tempstring2); // diese an tempstring (vorläufiges Result) anhängen
str_for_num(tempstring2, var_set_vartext[temp2]); // holt sich die entsprechende Variable aus dem Array
str_cat(tempstring, tempstring2); // diese anhängen
str_clip(str_set_vartext, temp + 1); //trennt Text einschl. %n vom Anfang ab
temp = str_stri(str_set_vartext, "%n"); // kommt %n nochmal vor?
temp2 += 1; // Counter um 1 erhöhen
}
str_cat(tempstring, str_set_vartext); // hängt den Rest nach dem letzten %n an den tempstring
str_cpy(str_set_vartext, tempstring); // str_set_vartext auf Text mit eingesetzen Variablen aber noch mit %s setzen
temp = str_stri(str_set_vartext, "%s"); // ist %s im text vorhanden?
if (temp == 0) {return;} //nein
str_cpy(tempstring, "");
temp2 = 0; // Counter
while (temp > 0) // wenn %n im Text vorkommt
{ str_cpy(tempstring2, str_set_vartext);
str_trunc(tempstring2, str_len(tempstring2) - temp + 1); // enthält jetzt Text vor %n
str_cat(tempstring, tempstring2); // diese an tempstring (vorläufiges Result) anhängen
str_cpy(tempstring2, temp_strlist.string[temp2]); // holt sich den entsprechenden String aus dem Text-Array
str_cat(tempstring, tempstring2); // diesen anhängen
str_clip(str_set_vartext, temp + 1); //trennt Text einschl. %s vom Anfang ab
temp = str_stri(str_set_vartext, "%s"); // kommt %s nochmal vor?
temp2 += 1; // Counter um 1 erhöhen
}
str_cat(tempstring, str_set_vartext); // hängt den Rest nach dem letzten %s an den tempstring
str_cpy(str_set_vartext, tempstring); // str_set_vartext auf Text mit eingesetzen Variablen und Strings setzen (als Result)
}

[ Dieser Beitrag wurde von samot am 19.09.2001 editiert. ]
Wollt Ihr den Hebel umlegen? - Ja - Peng, jetzt ist der Hebel tot...
Benutzeravatar
Thies
Administrator
Administrator
Beiträge: 4008
Registriert: Fr 13.07.2001 - 09:10
Wohnort: Vega rechts abbiegen + 16 LJ
Kontaktdaten:

Beitrag von Thies »

Hi Samot.

Leider bin ich zu blöd um zu erkennen, wozu das benötigt werden könnte. Klärst Du mich mal auf .... :D

CU
Benutzeravatar
samot
Drache
Drache
Beiträge: 2797
Registriert: Mo 16.07.2001 - 12:48
Wohnort: Koblenz
Kontaktdaten:

Beitrag von samot »

Das ganze ist ein WDL-Script für das Gamestudio 3d, in dem Roy sein Fate 3D schreibt. Raistlin beschäftigt sich auch gelegentlich damit.

mfg

Thomas
Wollt Ihr den Hebel umlegen? - Ja - Peng, jetzt ist der Hebel tot...
Benutzeravatar
Roy
Ritter/Amazone
Ritter/Amazone
Beiträge: 571
Registriert: Mo 30.07.2001 - 09:26
Wohnort: Köln

Beitrag von Roy »

Hi Samot,
die Routine kommt zwar sehr früh, aber ist spitze und vorgemerkt:bounce:
Solche Snippets kann ich immer gebrauchen:)

Danke im voraus

Roy

@Thies: So kann man in fest vorgegebenen Sätzen, ohne umständliche Programmierung, variable / zufällige Ereignisse einfügen.
Linux is like a wigwam:
no windows, no gates and an apache inside
Benutzeravatar
Raistlin_Majere
Bogenschütze/in
Bogenschütze/in
Beiträge: 185
Registriert: Sa 14.07.2001 - 20:10
Wohnort: Österreich

Beitrag von Raistlin_Majere »

Hallo zusammen
Du bist ja schon ein wahrer Profi im Skripte schreiben!!
Hut ab
Hast du eigentlich auch ein besonderes Ziel vor Augen(so wie Roy)??
Und daß ich mich gelegentlich mit 3DGS beschäftige ist noch sehr übertrieben.
Habe leider keine Zeit mehr dafürX(
noch ne schöne Zeit.
gez. Raistlin Majere ; Herr über Vergangenheit und Gegenwart.
Benutzeravatar
samot
Drache
Drache
Beiträge: 2797
Registriert: Mo 16.07.2001 - 12:48
Wohnort: Koblenz
Kontaktdaten:

Beitrag von samot »

Ich beabsichtige ein Spiel im MM6-8-Stil zu machen (falls NWC nichts dagegen hat auch mit einigen deren Grafiken für Charaktere etc. und in der Storyline). Dabei wollte ich weitesgehend auch die Wünsche für MM9 umsetzen (Grafik wird allerdings schwierig).

Ich habe bisher nur ein 2-Raum-Minilevel erstellt und versuche zuerst die Programmlogik zu schreiben (bin momentan noch auch der Party-erstellen-Maske). Dafür habe ich mir erstmal das WDL-Handbuch durchgelesen. Dadurch, daß ich auch schon in Delphi programmiere, habe ich in dieser Hinsicht auch schon einige Vorteile.

mfg

Thomas
Wollt Ihr den Hebel umlegen? - Ja - Peng, jetzt ist der Hebel tot...
Benutzeravatar
Roy
Ritter/Amazone
Ritter/Amazone
Beiträge: 571
Registriert: Mo 30.07.2001 - 09:26
Wohnort: Köln

Beitrag von Roy »

[quote]
Original von samot:
Ich beabsichtige ein Spiel im MM6-8-Stil zu machen (falls NWC nichts dagegen hat auch mit einigen deren Grafiken für Charaktere etc. und in der Storyline). Dabei wollte ich weitesgehend auch die Wünsche für MM9 umsetzen (Grafik wird allerdings schwierig).

@Samot
Goil,
ich hab MM gern gespielt. Wenn du irgendwelche Hilfen brauchst, maile mich ruhig an. Ich würde mich freuen. Auch wenn ich mit Fate 3D beschäftigt bin, so brauche ich ab und zu mal was anderes, um den Kopf frei zu kriegen
(Ich hoffe doch, daß du GS3D auch upgedatet hast):))

:bounce: :bounce: :bounce:
Linux is like a wigwam:
no windows, no gates and an apache inside
Antworten

Zurück zu „Biing!2 und Anderes“