PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ortsname im Speichermenü



Jadoo
25.08.2007, 13:36
Hallo,

ich habe bereits in einigen Spielen gesehen, dass im Speichermenü der Name des Gebietes angezeigt wird anstelle des Heldennamens.

Frage: Wie lässt sich das realisieren, wenn man u.a. das Standardmenü benutzt? Meine Idee ist momentan der Befehl: "Change Hero Name" ... allerdings müsste ich diesen dann vor dem Speichern ändern und nachher wieder ändern. Denn wenn ich ihn so belasse, würde ja im Menü dann auch das Gebiet stehen anstelle des Heldennamens.

Mordechaj
25.08.2007, 14:22
Mit "Change Hero Name" wüsste ich zwar nicht, wie das geht (gut, ich kenn mich auch nich aus, aber das sind ja zwei Paar Schuhe :rolleyes: ), aber wenn, dann müsstest du nach dem Speicherbefehl (Sprich "Call Save Menü") einfach den "Chagne Hero Name"-Befehl nochmal ausführen und dann eben den richtigen Namen wieder einsetzen lassen.

Viele Leute bedienen sich bei sowas auf der Facesets, die ja im Speichermenü im jwlg. Slot angezeigt werden. Du änderst vor dem Speicherbefehl einfach mit dem "Change Hero Face"-Befehl das Faceset auf ein (natürlich vorgefertigtes =) ) Faceset, in dem dein Ortsname steht und nachdem der Speicherbefehl ausgeführt wurde, machst du die Änderung ebenso wieder rückgängig =).

SkullRaven
25.08.2007, 14:23
Frage: Wie lässt sich das realisieren, wenn man u.a. das Standardmenü benutzt? Meine Idee ist momentan der Befehl: "Change Hero Name" ... allerdings müsste ich diesen dann vor dem Speichern ändern und nachher wieder ändern. Denn wenn ich ihn so belasse, würde ja im Menü dann auch das Gebiet stehen anstelle des Heldennamens.

Warum machst du es nicht so? Ist doch eine gute Möglichkeit und wenn du nicht überall Speichern kannst ist das auch keine große Arbeit.


Change Hero Name
Call Save Menü
Change Hero Name


Ganz easy. :A

edit: Mist da war jemand schneller. ;_;

Greyce
25.08.2007, 14:25
Du kannst es auch so machen, dass du vor dem speichern, das Faceset des
ersten Heros veränderst. Das Faceset müsste natürlich den Namen der
Ortschaft erhalten. So kannst du dann aber auch nur noch 3 andere Facesets
anzeigen lassen. Solange deine Party nicht mehr als 3 Helden hat kein Problem.

Edit: Das Forum ist ja nun wieder aktiver ^^

~Waradience~

Jadoo
25.08.2007, 16:51
Hi und danke für eure Antworten,

das mit dem speichern ist ja leider das Problem ;) ... man kann fast überall speichern. Desweiteren sind auch meistens 4 Helden in der Truppe, weshalb ich kein Faceset nehmen kann.

Andere Möglichkeit:

Ich habe ja ein eigenes Menü nebst dem Standard, wo es u.a. eine Rubrik zum speichern gibt. Dort könnte ich das so einbauen. Die Speichernoption im Standardmenü dann eben deaktivieren. Allerdings müsste ich dann ein Common Event erstellen, welches per Variable ermittelt, an welchem Ort man ist, um dann auch den passenden Ortsnamen anzuzeigen ...

Falls jemand noch eine Idee haben sollte, bitte melden :)

Greyce
25.08.2007, 17:08
Wenn du mit dem 2k3 arbeitest, kannst du den Punkt Speichern
gleich aus den Standardmenü nehmen und in dein eigenes einbauen.
Zum ermitteln kannst du eine Varibale benutzen.
Diese Varible wird dann immer wenn du ein neues Gebiet betrittst(sprich teleport),
auf eine Zahl gesetzt ( jede dieser Zahlen entspricht einem Ort, am besten aufschreiben!).
Im deinem eigenen Menü kannst du das ganze dann abfragen (am besten über ein Common Event).
Der Code könnte wie folgt aussehen:



Common Event ------ Call ------ Kein Switch benötigt
<> Fork [Var:####"Gebiet"]=1
<> Change Hero Name "Heldenname"
<> Jump to Label #1
<> Fork [Var:####"Gebiet"]=2
<> Change Hero Name "Heldenname"
<> Jump to Label #1
<> Fork [Var:####"Gebiet"]=1
...
...
<> Fork [Var:####"Gebiet"]=100
<> Change Hero Name "Heldenname"
<> Jump to Label #1
<> Label #1


Nun, du musst halt so viele Forks machen, wie viele Gebiete sich in deinem
Spiel befinden. Wenn man auf speichern geht, callst du dann das Common Event.
Dieses ermittelt anhand der Varible deinen Standort und ändert so
den Heldennamen. Die Label ist dafür gut, dass unnötiger Code vermieden wird.
Nach dem "Call Save Menü" Befehl solltest du gleich wieder den Heldennamen ändern. Wovon ich dir abrate wäre, dass du die Position dauernd abfragst, kostet Performance und ist nicht wirklich nötig.

~Waradience~

Jadoo
25.08.2007, 17:31
Genau so habe ich mir das auch vorgestellt. Ich nehme halt eine Variable, die ich dann zB. "Gebiete" nenne und verändere ihren Wert jedes mal, wenn der Held eine Map betritt. Im Common Event wird diese Variable dann eben per Fork Condition abgefragt und je nach Wert der Heldenname geändert. Vor dem Speichern dann per Call Event starten.

Ich nuzte den 2k, deshalb muss ich direkt bei Spielstart das Speichermenü deaktivieren, oder eben jede Map auf disable save einstellen ... je nachdem was besser klappt.

Was ich nicht so genau verstehe ist das mit dem Label ... moment ich schau mir nochmal deinen Codeschnipsel an ...

Achso, jetzt verstehe ich ... das Go to Label soll bezwecken, dass nachdem die korrekte Variable ermittelt wurde direkt die Berechnung beendet wird und nicht erst noch weiter läuft?

Greyce
25.08.2007, 17:38
Achso, jetzt verstehe ich ... das Go to Label soll bezwecken, dass nachdem die korrekte Variable ermittelt wurde direkt die Berechnung beendet wird und nicht erst noch weiter läuft?
Richtig.
Wenn die richtige Variable ermittelt ist, gibt es keinen Grund, warum
das Event noch weiter laufen sollte. Somit beendest du es praktisch,
wie du schon richtig bemerkt hast.

Hm, das mit dem Menüpunkt wird dann bischen unschön aussehen,
wenn er ganze Zeit unberührbar bleibt. Aber ich wüsste für
das jetzt auch keine Lösung. Beim 2k gibt es glaub ich gar keine.
Immerhin kannst du den Punkt in was anderes als "Speichern" umbenennen.

Phönix Tear
25.08.2007, 23:19
Zum ermitteln kannst du eine Varibale benutzen.
Diese Varible wird dann immer wenn du ein neues Gebiet betrittst(sprich teleport),
auf eine Zahl gesetzt ( jede dieser Zahlen entspricht einem Ort, am besten aufschreiben!).
Das ist imo ein bisschen umständlich - falls du damit meinen solltest, dass man in jedem Teleporter die Variable entsprechend ändern soll (was ich aus deinem "Am besten Aufschreiben") schließe.
Sicherlich einfacher wäre da eine Anbindung an die Map ID.
Der Code sähe dann folgendermaßen aus:

<>Change Variable "Speichern Map ID", set [(Hero) Map-ID]
<>
<>Fork Variable "Speichern Map ID" = 1
<><>Change Hero Name -> [Name des Ortes, der sich auf der Map mit der ID 1 befindet]
<><>Call Save Menu
<><>!Goto Label 1!
<>End:
<>Fork Variable "Speichern Map ID" = 2
<><>Change Hero Name -> [Name des Ortes, der sich auf der Map mit der ID 2 befindet]
<><>Call Save menu
<><>!Goto Label 1!
<>End:
<>Fork Variable "Speichern Map ID" = 3
<><>...
<>End:
<>...
<>!Label 1!
<>Change Hero Name -> [Name des aktuell wichtigsten Helden (wenn nötig per Fork abfragen]
<>
Dieser Code ist dann dem von Waradience sehr ähnlich, der einzige wirkliche Unterschied ist neben der Verwendung der Map ID die ausgelassene Verschachtelung der Forks. Da auch ich am Ende jeder ausgeführten Anweisung zum Ende springe, kann ich die Forks auch getrost einfach untereinander schreiben. Das bringt letztendlich nur, das man (wenn dein Spiel größer wird) sehr viel leichter und schöner Orte einfügen kann. Sonst muss man dort immer erst den "Schwanz" in der Else rauskopieren, die neuen reinpacken usw. (solange man etwas auf ordnung hält und die Forks der Map ID nach aufsteigend anordnen will). (Außerdem sieht es besser aus ^^)

Na ja, so müsste es eigentlich gehen ;)

mfg
Phönix Tear

P.S: Um die Map ID herauszufinden kann man (natürlich neben der obigen Abfrage im Spiel) wohl am besten per Rechtsklick im Map-Tree auf "Map Properties..." klicken. Ganz oben steht dann die ID dieser Map (falls du das noch nicht wissen solltest ^^).

Greyce
26.08.2007, 11:00
Das ist imo ein bisschen umständlich - falls du damit meinen solltest, dass man in jedem Teleporter die Variable entsprechend ändern soll (was ich aus deinem "Am besten Aufschreiben") schließe.
Ich vermute zumindest mal, dass jede neue Map bei ihm nicht ein neues Gebiet sein wird.
Somit müsste er nach deiner Methode für jede Map im Spiel eine Fork machen,
was imo mehr umständlich ist, als meine Metode.
Außerdem meinte ich das eher nicht bei jedem Teleport, sondern eher bei jedem
Ortswechsel die Variable geändert werden würde. Zum Beispiel wenn man
von einer Stadt einen Teleport in die nächste Stadt macht. Innerhalb der
Stadt wäre das aber nicht nötig.
Außer der TE will für jede Map einen anderen Namen haben, dann natürlich
ist deine Version besser.
----------------------------------------------------------------------------------------
EDIT: Ok, überzeugt ^^
Auf sowas hab ich vorher gar nicht gedacht
<>Fork Variable "Speichern Map ID" < 10
Dann kann er es ja praktisch eingrenzen, also wenn er zB. die Maps 1-10 ein Gebiet sind.


<> Fork Var[####:Map_ID] >= 1
<> Fork Var [####: Map_ID] <= 10
### und dann wieder den üblichen Code ###



~Waradience~

Phönix Tear
26.08.2007, 12:04
Somit müsste er nach deiner Methode für jede Map im Spiel eine Fork machen,
was imo mehr umständlich ist, als meine Metode.
Das kommt natürlich ganz darauf an wie groß seine Gebiete Maptechnisch nun sind und ob er es schafft diese mit passenden IDs zu versehen.
Schließlich ist es auch möglich etwas wie

<>Fork Variable "Speichern Map ID" < 10
zu machen. Durch das Wegspringen per Label sollte das auch keine Probleme machen (dafür müssen dann nur eben möglichst viele Maps des gleichen Gebietes in der ID aufeinander folgend erstellt worden sein. Aber selbst wenn das nicht der Fall ist, kann man durch diese Methode schon mal größere Bereiche abdecken und die Sonderfälle noch mal einzeln ansprechen.).

Insgesamt bleibe ich aber dabei, dass diese Methode praktischer ist. Selbst wenn man bei dir nur pro Gebietswechsel eine Variable ändern muss, kann es vorkommen, dass es sehr viele Teleporter gibt (z.B. mehrere Ausgänge der Stadt, etc.) und des weiteren ist sie auch sehr Fehleranfällig. Schließlich denkt nicht jeder daran, am Ende einer Videosequenz die den Helden evtl. zu einem anderen Gebiet bringt, auch die entsprechende Variable zu ändern. Sicherlich geht nicht die Welt unter, wenn im Speichermenü der falsche Ort steht, dennoch ist es ein Grund der gegen deine Methode spricht. Es ist schlichtweg umständlicher bei jedem Gebietswechselndem Teleporter extra daran denken zu müssen, als wenn man ganz routiniert eine Fork für das Gebiet gleich nach dem erstellen der Map in das CE einfügt.

Edit:
@Jadoo: Wie wäre es den freien Menüpunkt "Cheats" zu nennen? Da er ja immer grau ist, würden dann sicherlich ein paar Leute die sich mit dem Maker net auskennen Tagelang versuchen den zum laufen zu bekommen :p

Jadoo
26.08.2007, 13:07
Hi,

@ Phönix Tear

Danke für deinen Vorschlag. Ist übersichtlich und einfach zu handhaben, da bin ich auch deiner Meinung. So muss ich nicht jedes Mal die Variable ändern, wenn der Held eine neue Map betritt.

Ich habe übrigens meinen Maps nebst Mapnamen auch noch die ID hinten dran verpasst. Ist vielleicht nicht nötig, da man sie ja auch in den Map Properties oben sehen kann, so habe ich aber direkt einen Überblick über diese IDs ;)

Ich habe mal angefangen, das CE zu bauen, doch leider fällt mir jetzt wieder ein momentanes Hinderniss auf. Ich kann ja garnicht einfach den Heldennamen ändern, weil es im Spiel ja u.a. Szenen gibt, wo man nicht nur den Haupthelden spielt sondern auch mal die anderen Helden.

Gut dass mir damals schon die Idee gekommen ist, für jede Truppe eine Variable anzulegen. So kann ich bei jedem Partywechsel die passende Variable auf "1" setzen und die anderen wieder auf "0". So spar ich mir auch an bestimmten Stellen im Spiel eine ellenlange Forkabfrage, wer denn nun alles in der Party ist, damit auch ja der passende Held ein Kommentar abgibt.

So müsste ich dann eine Forkabfrage, wie du ja auch bereits angesprochen hast


<>!Label 1!
<>Change Hero Name -> [Name des aktuell wichtigsten Helden (wenn nötig per Fork abfragen]

auch bei dem ersten Namenswechsel machen, was ja dank meiner Partyvariablen funktionieren sollte und auch nicht all zu viel Arbeit wäre, da man bei deinem Vorschlag mit der Map ID Abfrage ja nur den Schnipsel kopieren muss und die ID + Ortsname abändern.

Würde also so aussehen:


<>Change VAR "Speicherort" SET Hero Map ID
<>Wait 0,1 [Nur um sicher zu gehen, dass er die Map ID auch gespeichert hat]
<>Fork VAR "Speichertort" = 1
<><>Fork VAR "Heldentruppe" = 1
<><>Change Hero Name 1
<><><> ELSE
<><><>Fork VAR "Heldentruppe 2" = 1
<><><>Change Hero Name 2
<><><>.....
<><><>.....
<><>
<>
<>Call Save Menu
<>Go to Label 1
<>
<>Fork VAR "Speichertort" = 2
<><>Fork VAR "Heldentruppe" = 1
<><>Change Hero Name 1
<><><> ELSE
<><><>Fork VAR "Heldentruppe 2" = 1
<><><>Change Hero Name 2
<><><>.....
<><><>.....
<><>
<>
<>Call Save Menu
<>Go to Label 1
<>
...
...
<>Label 1
<>Fork VAR "Heldentruppe" = 1
<>Change Hero Name 1
<><> ELSE
<><>Fork VAR "Heldentruppe 2" = 1
<><>Change Hero Name 2
<><>.....
<><>.....

@ Waradience


Hm, das mit dem Menüpunkt wird dann bischen unschön aussehen,
wenn er ganze Zeit unberührbar bleibt. Aber ich wüsste für
das jetzt auch keine Lösung. Beim 2k gibt es glaub ich gar keine.
Immerhin kannst du den Punkt in was anderes als "Speichern" umbenennen.

Habe mal überlegt, was man dann nehmen könnte. Das sinnvollste mMn wäre hier aber nur ----------------- anstatt ein Wort.