Switch to full style
Diskussionen rund um Eressea, das Fantasy-Strategiespiel.
Antwort erstellen

Re: allgemeine Fragen zu Vorlage

07.08.2016 16:15

Hai!

Ich mache das in meinen Skripten wie folgt (z.B. in einer Funktion, die automatisch einen Text als Regionsbotschaft erzeugt):

Code:
#func BotschaftAnRegion $text
{
   ; Sendet $text als Regionsbotschaft. Zeilenumbrüche werden automatisch
   ; erzeugt und der Text wird korrekt nach Eressearegeln umgebrochen.
   ;
   ; Parameter:
   ;  $text  : ANY
   ;  RETURN : BOOLEAN

   #var $bef
   #var $result

   ; Parameter überprüfen und im Fehlerfall FALSE zurückgeben
   #if ''==$text
   {
      #call Fehler 'Regionsbotschaft: Kein Text angegeben' TRUE
      #return FALSE
   }

   ; Befehl generieren
   $bef='BOTSCHAFT AN REGION '+QUOTE+$text+QUOTE
   $result=BefehlEintragen(UNIT.Nummer,$bef)

   ; Ergebnis zurückgeben
   #return $result
}


Die Konstante QUOTE ist dabei wie folgt zu definieren (ich habe dafür ein eigenes vms-Modul, das alle notwendigen Konstanten enthält):
#const QUOTE '\34'
#const SINGLEQUOTE '\39'
#const DOUBLEBACKSLASH '\\'
#const AT '\64'


Gruß,
Thorsten

Re: allgemeine Fragen zu Vorlage

12.08.2016 22:16

Danke für den schnellen Hinweis. Das werde ich direkt bei mir mal versuchen. Und die Idee, die Konstanten auszulagern finde ich auch elegant.

Re: allgemeine Fragen zu Vorlage

13.08.2016 21:47

Der "Umweg" über die Konstante mit der ASCII Nummer klappt wunderbar. Habe es diese Woche aber auch nochmal mit "|" versucht, allerdings gedreht:
Code:
#forever { BOTSCHAFT REGION '|Willkommen in '+region.Name+', wir grüßen Euch!|' }
Der Unterschied ist also, dass der Pipe diesmal innerhalb der einfachen Hochkommas steht.
Das Ergebnis:
Code:
BOTSCHAFT REGION  Willkommen~in~Sovengarde,~wir~grüßen~Euch!
8)

Re: allgemeine Fragen zu Vorlage

11.04.2017 12:07

Hiho,

ich habe in diesem Zusammenhang auch eine Frage, da ich auch die Skripte von Roman Benesch noch verwende, wenn auch mittlerweile in leicht abgewandelter Form. :wink:

Thoran1 hat geschrieben:Ich mache das in meinen Skripten wie folgt (z.B. in einer Funktion, die automatisch einen Text als Regionsbotschaft erzeugt):

Code:
#func BotschaftAnRegion $text
{
   ; Sendet $text als Regionsbotschaft. Zeilenumbrüche werden automatisch
   ; erzeugt und der Text wird korrekt nach Eressearegeln umgebrochen.
   ;
   ; Parameter:
   ;  $text  : ANY
   ;  RETURN : BOOLEAN

   #var $bef
   #var $result

   ; Parameter überprüfen und im Fehlerfall FALSE zurückgeben
   #if ''==$text
   {
      #call Fehler 'Regionsbotschaft: Kein Text angegeben' TRUE
      #return FALSE
   }

   ; Befehl generieren
   $bef='BOTSCHAFT AN REGION '+QUOTE+$text+QUOTE
   $result=BefehlEintragen(UNIT.Nummer,$bef)

   ; Ergebnis zurückgeben
   #return $result
}


Die Konstante QUOTE ist dabei wie folgt zu definieren (ich habe dafür ein eigenes vms-Modul, das alle notwendigen Konstanten enthält):
#const QUOTE '\34'
#const SINGLEQUOTE '\39'
#const DOUBLEBACKSLASH '\\'
#const AT '\64'



Welche Ausgabeform nutzt Du? Ich verwende Vorlage, um meinen CR zu bearbeiten und einen neuen CR auszuspucken. Doch da funktioniert das leider nicht mit den Anführungszeichen. Jedes Mal werden die bei der CR-Erzeugung von Vorlage durch Leerzeichen ersetzt. Lasse ich Vorlage eine reine Befehlsdatei erstellen, funktioniert das mit den Anführungszeichen. Aber bei der Befehlsdatei habe ich den Nachteil, dass ich da wieder Hand anlegen muss, um die Zugvorlage zum CR hinzuzufügen. Außerdem geht mir die automatische Einheitenbestätigung über den #tag-Befehl verloren.

Weiß da jemand Rat für mich und meine CRs?

Beste Grüße und vielen Dank im Voraus
Martin

Re: allgemeine Fragen zu Vorlage

16.04.2017 00:24

So, aus Zufall habe ich entdeckt, dass der Eressea-Server auch mit Hochkommata als Textbegrenzern klar kommt.

Soll heißen:
Wenn man Vorlage verwendet, um einen CR zu erzeugen, so kann man auch Hochkommata als Ersatz für Anführungszeichen verwenden und somit automatische Benennungen durchführen:

Code:
BENENNE EINHEIT '\''+$Name+'\''


Allerdings dürfte es schwierig werden, in diesem Beispiel $Name noch ein Hochkomma enthalten zu lassen. Aber das lässt sich für automatische Befehle sicher vermeiden. Und somit ist Vorlage weiterhin auch als CR-Exporteur ohne zusätzliches Handanlegen brauchbar.

Beste Grüße
Martin
Antwort erstellen