Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002420EresseaLERNE/LEHREöffentlich2020-09-17 18:16
ReporterSolthar Bearbeitung durchEnno  
PrioritätnormalSchweregradFeature-WunschReproduzierbarnicht getestet
Status erledigtLösungerledigt 
Behoben in Version3.25 
Zusammenfassung0002420: Silberkosten LERNE Magie
Beschreibung

Der Befehl LERNE Magie hat einen optionalen Parameter für die Silberkosten. Der ist rein informativ. Wenn er kleiner ist als der wirklich benötigte Wert, wird trotzdem das eigentlich benötigte Silber ausgegeben. Zudem wird der Wert in den Defaultbefehlen nicht richtig aktuell gehalten, wenn sich das Magielevel ändert. Stattdessen wird einfach der Wert uas der letzten Runde übernommen. Man muss also jede Runde selber nachrechnen. Das ist sehr lästig und führt zu Fehlern.

Änderungsvorschlag:

  1. Es wird beim Lernen nur die angegebene Menge Silber verbraucht. Entsprechend weniger wird gelernt. Also zum Beispiel bei LERNE Magie 500 statt eigentlich benötigter LERNE Magie 1500 nur 1/3 Lernchance. Vielleicht ist das aber keine gute Idee aus "historischen Gründen".

  2. Der Server sollte den wirklich benötigten Wert ausrechnen und im Befehl setzen. Das muss er sowieso machen, da kann er auch gleich den Benutzer informieren. Eventuell gibt es da Probleme im Detail. Kann man alle Boni zuverlässig und sinnvoll einrechnen, so dass sie auch nächste Woche gelten? Bei einer Akadamie zum Beispiel? Elfen?

  3. Den Parameter ganz weglassen. Nicht gerade die beste Lösung, aber die einfachste.

Partei1wpy
SpielE2
Report1063

Notizen / Dateien

Xolgrim

Xolgrim

2018-06-02 10:20

Entwickler   ~0007899

Zuletzt bearbeitet: 2018-06-02 10:23

2 Überarbeitungen anzeigen

Lösung 3 funktioniert doch schon ... Wenn du deinem Magier den Befehl "LERNE MAGIE" gibst steht da nächste Woche auch nur "LERNE MAGIE"

PS: Ist der Parameter irgendwo in der Aneltung festgehalten? Ich habe da auf die Schnelle nichts zu gefunden

Enno

Enno

2018-07-04 16:30

Administrator   ~0007942

Der Parameter ist doof. Er erfordert eine Sonderbehandlung für den LERNE Befehl, wenn man Magie lernt, und ich werde ihn wohl abschaffen im Rahmen des geplanten LERNE AUTO Befehls.

Enno

Enno

2020-09-16 20:29

Administrator   ~0009068

Ich finde auch nicht, wo der Code den Parameter entweder setzt oder auswertet. Gibt es ein konkretes Beispiel von einer Einheit, die das getan hat?

Solthar

Solthar

2020-09-16 23:24

Entwickler   ~0009070

Uff, das ist wieder lange her. Ich glaube, das ist genau der Punkt, oder? Der Parameter wird weder gesetzt noch ausgewertet. Einfach nur für die nächste Runde übernommen. Im engsten Sinne ist das hier kein Bug, aber nicht gerade benutzerfreundlich. Das Optimum wäre, wenn nach dem Lernen und dem potentiellen Aufstieg die Lernkosten neu berechnet und in den Befehl übernommen werden.

Weiß nicht, ob ich die Frage verstehe. Einheit wyiy hat diese Woche den Befehl LERNE MAGIE 66700, aber 78100 verbraucht.

@Xolgrim
Das geht aber am Problem vorbei. Das Problem ist, dass, wenn man den Parameter benutzt, man irgendwann einen unsinnigen Wert da drin stehen hat und deshalb seinen Silberverbrauch unterschätzt.
Der Parameter ist bei https://wiki.eressea.de/index.php/LERNE dokumentiert. Den erklärenden Text habe ich da offenbar damals selber reingeschrieben.

Enno

Enno

2020-09-17 02:33

Administrator   ~0009072

Ich glaube, das Problem hier ist, dass die Anleitung einen Parameter dokumentiert, den es nicht gibt. Man konnte früher bei fast allen Befehlen Müll ans Ende schreiben. Z.B. konnte ich schreiben ARBEITE 2x, und mein client-seitiges Skript konnte die Anzahl jede Woche reduzieren, weil der Server den Befehl genzu so in die Zugvorlage bzw. den CR zurück geschrieben hat. Das ist nicht mehr so, seit Befehle nicht mehr als String, sondern als komplexere struct repräsentiert sind. Für LERNE <Talent> speichern wir nun z.B. nur noch ein Byte für das keyword und eins für das Talent, für ARBEITE nur das keyword, usw. LERNE Magie ist eine Ausnahme, weil das ausser dem Talent noch das Magiegebiet als Parameter haben kann, da wird der Einfachheit das keyword plus ein String gespeichert, in dem das Talent und evtl. andere Parameter stehen können. Auch wenn davon nur Talent und Magiegebiet ausgewertet wird, schreiben wir den kompletten String zurück in die Vorlage bzw. den CR.

Eine Idee hatte ich gerade noch: Es kann sein, das ECheck mit der Zahl etwas anfängt. ECheck macht ja eine gewisse Berechnung, ob genug Silber in der Region ist, um alle Einheiten zu versorgen, und muss dafür bei teuren Talenten mit variablen Kosten wissen, wieviel Silber LERNE verbraucht. Die Rechnerei ist aber eh unzuverlässig (schon wegen Materialkosten und Gebäudeunterhalt).

Ich bin dafür, den Parameter aus der Anleitung zu werfen, und so tun, als gäbe es ihn nicht.

Solthar

Solthar

2020-09-17 11:21

Entwickler   ~0009074

Ja, ich vermute ECheck ist der Grund, warum es den Parameter überhaupt gibt. Einen undokumentierten Parameter finde ich seltsam, das führt doch früher oder später wieder zu Problemen. Das mit den Extraparametern scheint nicht ganz richtig zu sein. ARBEITE 1 2 3 verdient ganz normal 10 Silber, der Defaultbefehl ist wieder ARBEITE 1 2 3; LERNE Ausdauer 1 2 3 wird zu LERNE Ausdauer verkürzt, bei LERNE Magie x y z werden alle Parameter übernommen.

Wie dem auch sei, wäre es möglich, den Parameter einfach immer im Default-Befehl zu löschen? Einziges Problem wäre, dass es vielleicht, möglicherweise Skripte kaputt macht. Ansonsten halt doch einfach alles so lassen, wie es ist.

Enno

Enno

2020-09-17 18:16

Administrator   ~0009075

In der Regel speichere ich Befehle als Befehlswort plus Text, der dahinter steht. Bei manchen Befehlen ist der Text nicht mehr als ein Talent (LERNE, LERNEAUTO und VERGISS), da spare ich mir, den Text zu speichern, weil das Talent in ein Byte passt. Bei fast allen übrigen Befehlen kommt also im Report wieder genau der Text raus, der in der Befehlsmail geschrieben wurde, bei LERNE aber nicht. Ausnahme ich LERNE Magie, weil dort die Syntax das Magiegebiet enthalten kann. Deshalb wird das wie die gemeinen Befehle mit vollem Text gemerkt (Auch wenn der "LERNE MAGIE Cerddor 200 heulende Höllenhunde" ist). Man kann also eine Silbermenge angeben, und kriegt die dann wieder, aber getan wird damit nichts, außer evtl. einer Meldung dass das Magiegebiet nicht erkannt wurde, wenn man als erster Magier der Partei "LERNE Magie 100" befiehlt, und der Parser meint, 100 könnte ja vielleicht das Gebiet sein, das die Partei wählen will ;-)

Bei ARBEITE habe ich in der Tat Unsinn erzählt. Das wird behandelt wie alle anderen Befehle, d.h. ich merke mir alles, was Du dahinter schreibst. Das ist eine mögliche Optimierung (gar nichts merken) die ich noch nicht gemacht habe, weil sie nur sehr wenig bringen würde. So gut wie niemand schreibt "BEFOERDERE zum Helden", oder wie Du "ARBEITE 1 2 3", da gibt es also nichts zu sparen.

Ich tippe auf ECheck als Quelle der Verwirrung, und würde dafür plädieren, den Parameter einfach stillschweigend aus der Anleitung zu nehmen, wenn er das noch irgendwo drin steht. Ich mache das gerade mal im LERNE Artikel selber.

Enno

Enno

2020-09-17 18:16

Administrator   ~0009076

Anleitung angepasst.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2018-02-16 23:08 Solthar Neuer Eintrag
2018-06-02 10:20 Xolgrim Notiz hinzugefügt: 0007899
2018-06-02 10:23 Xolgrim Notiz bearbeitet: 0007899 Überarbeitungen anzeigen
2018-07-04 16:29 Enno Bearbeitung durch => Enno
2018-07-04 16:29 Enno Status neu => zugewiesen
2018-07-04 16:30 Enno Notiz hinzugefügt: 0007942
2020-09-16 20:29 Enno Notiz hinzugefügt: 0009068
2020-09-16 23:24 Solthar Notiz hinzugefügt: 0009070
2020-09-17 02:33 Enno Notiz hinzugefügt: 0009072
2020-09-17 11:21 Solthar Notiz hinzugefügt: 0009074
2020-09-17 18:16 Enno Notiz hinzugefügt: 0009075
2020-09-17 18:16 Enno Status zugewiesen => erledigt
2020-09-17 18:16 Enno Lösung offen => erledigt
2020-09-17 18:16 Enno Behoben in Version => 3.25
2020-09-17 18:16 Enno Notiz hinzugefügt: 0009076