SitanletaEin German Atlantis PbEM : : :

Valid HTML 4.01!

Anleitung

Bugs

Chat

Downloads

Forum

Links

Mitwirkende

Zeitung

Impressum

Aktuelle Zeit: Fr Jun 02, 2023 11:47 pm



Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Feb 16, 2005 6:33 pm 
Bitte helft mir mit meiner Vorlage datei und kontrolliert sie mir bitte und bringe bitte vorschläge ein

#include C:\Eressea\vorlage\vl1militaer.txt

#func KapazitaetSEM $Einheit
{
$Pferde=unit[$Einheit].pferd
$Wagen=unit[$Einheit].wagen
$FreiePferde=$Pferde-$Wagen*2
$Stein=unit[$Einheit].stein*60
$Eisen=unit[$Einheit].eisen*5
$Holz=unit[$Einheit].Holz*5
$Silber=unit[$Einheit].silber*0,01
#if unit[$Einheit].typ=='Zwerge'
{
$KutscherGewicht=unit[$Einheit].anzahl*20
}
else
{
$KutscherGewicht=unit[$Einheit].anzahl*10
}
#return $Wagen*140+$FreiePferde*20-$KutscherGewicht-$Stein-$Eisen-$Holz-$Silber
}


;-------------------------------------------------------

#func PlatzSEM $Einheit
{
$Pferde=unit[$Einheit].pferd
$Wagen=unit[$Einheit].wagen
$FreiePferde=$Pferde-$Wagen*2
$Stein=unit[$Einheit].stein*60
$Eisen=unit[$Einheit].eisen*5
$Holz=unit[$Einheit].Holz*5
$Silber=unit[$Einheit].silber*0,01
#if unit[$Einheit].typ=='Zwerge'
{
$KutscherGewicht=unit[$Einheit].anzahl*20
}
else
{
$KutscherGewicht=unit[$Einheit].anzahl*10
}
// #massage {Wir haben '+($Holz+$Eisen+$Stein)+' geladen und noch '+($Wagen*140+$FreiePferde*20-$KutscherGewicht-$Stein-$Eisen-$Holz-$Silber)+' frei}
}



#func pleite $Einheit
{
$Ausgaben=region.Personen*10
$Geld=region.Pool.Silber
$Runden=$Geld/$Ausgaben
// #message {wir koennen noch '+($Geld/$Ausgaben)+' Runden ohne hungern überleben}
// #if $Runden<2 {// #if unit.unterhaltung.Stufe>0 {Unterhalte}} #else {// #if unit.steuereintreiben.Stufe>0 {treibe}} #else {Arbeite}}
}


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 17, 2005 10:53 am 
Offline

Registriert: Mi Okt 12, 2005 1:36 pm
Beiträge: 20
Wohnort: Ulm
Zitat:
#if unit[$Einheit].typ=='Zwerge'
{
$KutscherGewicht=unit[$Einheit].anzahl*20
}
else
{
$KutscherGewicht=unit[$Einheit].anzahl*10
}
Soweit ich weiß, haben Zwerge bei Sitanleta das selbe Gewicht wie die anderen Rassen. Nur Zyklopen (20GE) und Ameisen (3GE) sind schwerer / leichter. Ich weiß nicht, ob es einen bestimmten Grund hatte, daß Du die Anzahl bei Zwergen mit 20 multipliziert, aber falls es der Geweichtsunterschied sein sollte, ist's halt falsch.


Zitat:
$Silber=unit[$Einheit].silber*0,01
Nicht weiter tragisch, aber vielleicht solltest Du das ganze wieder auf Ganzzahl runden,
also:
Code:
$Silber=ceil(unit[$Einheit].silber*0.01)
Was aber auf jedenfall meineswissens so nicht tut ist das Komma als Trennzeichen in der Zahl. Da sollte ein Punkt rein!


Zitat:
$Pferde=unit[$Einheit].pferd
Ist so nicht unbedingt gut. Was ist bei einer Einheit, die nicht reiten kann und / oder zu viele Pferde mit sich führt. Besser wäre evtl.:
Code:
$Pferde=min(unit[$Einheit].pferd,2*max(1,unit[$Einheit].reiten.stufe))
Jetzt noch dafür sorgen, daß die Einheit eine Kapazität von -1 (oder 0) hat, falls zu viele Pferde da sind:
Code:
#if $Pferde<unit[$Einheit].pferd { #return -1 }


Das waren jetzt mal meine ersten Gedanken, kann sein, daß mir später noch etwas einfällt.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 17, 2005 1:16 pm 
Offline

Registriert: Di Aug 28, 2001 1:00 am
Beiträge: 274
Ich weiß gar nicht genau, was hier deine Frage oder dein Problem ist. Ohne genaue Frage keine genaue Antwort...

Aber ein paar generelle Tipps:
- Ins Vorlage-Verzeichnis gehört die Sitanleta-Datei "gav62mod.cfg". Dort stehen z.B. die Daten der Rassen drin und die Kapazität von Wagen... und schon erkennt Vorlage die und rechnet selber korrekt Kapazitäten und Gewichte mit. Wenn du also nur den Stand des Reports verwenden willst, genügt der Zugriff auf die bereits von Vorlage berechneten Werte. Dann kannst du dir also diese ganze Arbeit sparen.
- Die Pferde-Regel muss man ggf. in der Tat selber einbauen, die ist in Sitanleta einfacher als in diversen anderen Atlantis-Clones.
- Wagenzug bei Zyklopen sollte dagegen schon irgendwo im sitanleta.cfg eingebaut sein, hab die aber selber noch nie gespielt.
- Wagen ohne Pferde sind Lasten...
- $Silber*0.01 klappt nicht, da jeweils der linke Operand einer Rechnung den Typen definiert. Hier ist $Silber integer, dadurch wird also gerechnet $Silber*0 und Ergebnis ist immer 0. Richtig herum ist: 0.01*$Silber
- Lieber möglichst allgemein programmieren, sonst bleibt irgendwann der Kutscher wegen z.B. ein paar zusätzlichen Ölflaschen stehen.
- Das Maximalzuladegewicht hängt auch davon ab, ob der Kutscher zu Fuß reist (dann trägt er auch was) oder auf dem Wagen/Pferd sitzt (dann wiegt er was). Wobei aber nicht unbedingt jede Rasse auch reiten kann.

Hier mal eine Routine von mir, die ist zum Teil allerdings schon mehrere Jahre alt (aus meiner Eressea-Zeit, vor der Geburt von Sitanleta) und mit den damals verfügbaren Mitteln geschrieben. Ich glaub das war damals Vorlage 1.2 bis 1.4, als noch keine Kapazität von Vorlage ausgerechnet wurde. Kann sein, dass die heute so nicht mehr 100% funzt. Und sie greift auf Hilfsfunktionen zu, die aktuelle Zwischen-Werte aus meiner internen Datenstruktur liefern (z.B. "AnzahlURegDinge()"), weil ich mit diesen Routinen einen aktuellen Zwischenstand meines Zuges mitrechne. Das sollte aber im Prinzip lesbar und übertragbar sein.
Achja, anbei auch die beiden MaxPferde-Routinen.

;=======================================
; Berechnet die freie Kapazität beim zu Fuss reisen.
; Vorsicht: ggf. müssen Pferde abgegeben werden, falls das Reitentalent nicht ausreicht.
; Diese Routine geht davon aus, dass alle überschüssigen Pferde abgegeben werden, und alle
; anderen Pferde bleiben. Negatives Ergebnis => überladen.
;ToDo: Wagenzug/Zyklopen vernünftig einbauen, allgemeiner machen
#func MS_WievielKapazitaetFussFrei $Einheit
{
$Leute=$URegAnzahl[$Einheit]
$Typ=URasse($Einheit)
$MaxPferde=min($Leute*MaxPferdGehenStufe(unit[$Einheit].reiten.stufe),AnzahlURegDinge($Einheit,'Pferd'))
$Wagen=min(AnzahlURegDinge($Einheit,'Wagen'),$MaxPferde/2)
; ZusatzWagen für Trolle?
#if equals($Typ,'Trolle') {
$TrollWagen=min(AnzahlURegDinge($Einheit,'Wagen')-$Wagen,($Leute-$Wagen)/4)
$Wagen=$Wagen+$TrollWagen
}
; zunächst die übrigen Wagen als Last:
$RestWagen=AnzahlURegDinge($Einheit,'Wagen')-$Wagen
$RETURN=flt(-MS_WievielGewicht('Wagen'))*$RestWagen+MS_WievielKapazitaetFuss($Einheit)
; jetzt noch die normalen (tragbaren) Gegenstände:
$ii=1
$Sache=MS_WasPlatzDinge($ii)
#while $Sache!=0 {
#if $Sache!='Pferd'&$Sache!='Wagen' {
$RETURN=$RETURN-MS_WievielGewicht($Sache)*AnzahlURegDinge($Einheit,$Sache)
}
$ii=$ii+1
$Sache=MS_WasPlatzDinge($ii)
}
}

;=======================================
; Berechnet die Kapazität beim zu Fuss reisen.
; Vorsicht: ggf. müssen Pferde abgegeben werden, falls das Reitentalent nicht ausreicht.
; Diese Routine geht davon aus, dass alle überschüssigen Pferde abgegeben werden, und alle
; anderen Pferde bleiben.
;ToDo: Wagenzug/Zyklopen vernünftig einbauen, allgemeiner machen
#func MS_WievielKapazitaetFuss $Einheit
{
$Leute=$URegAnzahl[$Einheit]
$MaxPferde=min($Leute*MaxPferdGehenStufe(unit[$Einheit].reiten.stufe),AnzahlURegDinge($Einheit,'Pferd'))
$Wagen=min(AnzahlURegDinge($Einheit,'Wagen'),$MaxPferde/2)
$FuehrPferde=$MaxPferde-$Wagen*2
; ZusatzWagen für Trolle?
#if equals(unit[$Einheit].typ,'Trolle') {
$TrollWagen=min(AnzahlURegDinge($Einheit,'Wagen')-$Wagen,($Leute-$Wagen)/4)
$Wagen=$Wagen+$TrollWagen
$RETURN=MS_WievielKapazitaet(unit[$Einheit].typ)*($Leute-4*TrollWagen)+$FuehrPferde*(MS_WievielKapazitaet(Pferd))+$Wagen*(MS_WievielKapazitaet(Wagen))
} else {
$RETURN=MS_WievielKapazitaet(unit[$Einheit].typ)*unit[$Einheit].anzahl+$FuehrPferde*(MS_WievielKapazitaet(Pferd))+$Wagen*(MS_WievielKapazitaet(Wagen))
}
}

;=======================================
; Rückgabe: tragbares Gewicht GE
;Todo: Schiffe besser per .cfg
#func MS_WievielKapazitaet $Sache
{
#if equals($Sache,'Boot') { #return 50 }
#if equals($Sache,'Langboot') { #return 500 }
#if equals($Sache,'Karavelle') { #return 3000 }
#if equals($Sache,'Drachenschiff') { #return 1000 }
#if equals($Sache,'Trireme') { #return 2000 }
;Altlast 'person'->'Zwerge' etc., gelegentlich rauswerfen.
#if equals($Sache,'person') {
#debug 'fehleranfälliges MS_WievielKapazitaet - person'
#return RACES[$ReportRassePlural].kapazitaet
}
;Altlast 'troll'->'trolle', gelegentlich rauswerfen.
#if equals($Sache,'troll') {
#debug 'fehleranfälliges MS_WievielKapazitaet - troll'
#return RACES['Trolle'].kapazitaet
}
$RETURN=max(THINGS[$Sache].kapazitaet,RACES[$Sache].kapazitaet)
#if $RETURN<=0 { #debug 'unbekannte kapazität von '+$Sache }
}

#array $ListeMSWasPlatzDinge
$ListeMSWasPlatzDinge=['Silber','Juwel','Weihrauch','Balsam','Gewuerz','Myrrhe','Seide','Oel','Eisen','Holz','Stein','Pferd','Wagen','Katapult','Schwert','Speer','Armbrust','Bogen','Kettenhemd','Plattenpanzer','Runenschwert']
;=======================================
; Rückgabe: Gegenstandsbezeichnung zu Nummer. Für Schleifen.
; In dieser Liste nur "tragbare" Gegenstände mit Gewicht>0
; Fehler ist 0
;Todo: Liste vervollständigen
#func MS_WasPlatzDinge $Platz
{
#if $Platz<=$ListeMSWasPlatzDinge.size { #return $ListeMSWasPlatzDinge[$Platz-1] }
#return 0
}

;=======================================
; Rückgabe: Gewicht GE, bei Doppelung worst case.
#func MS_WievielGewicht $Sache
{
$RETURN=max(THINGS[$Sache].gewicht,RACES[$Sache].gewicht)
}


;=======================================
; Wieviele Pferde darf man mit der Reiten-Stufe zu Fuss mitführen?
#func MaxPferdGehenStufe $Stufe
{
#return max(1,2*$Stufe)
}

;=======================================
; Wieviele Pferde darf man mit der Reiten-Stufe reiten?
#func MaxPferdReitenStufe $Stufe
{
#return 2*$Stufe
}


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 

: : :

Wer ist online?

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


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de