Seite 1 von 1

Verfasst: Mi 19.09.2001 - 09:25
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. ]

Verfasst: Mi 19.09.2001 - 10:13
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

Verfasst: Mi 19.09.2001 - 12:51
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

Verfasst: Mi 19.09.2001 - 13:09
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.

Verfasst: Fr 21.09.2001 - 16:53
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.

Verfasst: Mo 24.09.2001 - 12:59
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

Verfasst: Di 25.09.2001 - 19:29
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: