PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sprache in Kampfsystem (Ace)



Ken der Kot
28.07.2018, 15:33
Hallo Makergemeinde. Gibt es vielleicht ein Skript, mit dem man einstellen kann, auf welcher Sprache das Kampfsystem im Rpg Maker Vx Ace ist? Ich hab einen Switch, der die Sprache regelt und hätte das auch gerne so für das Standard Kampfsystem, aber das kann man ja glaub nur bei Vocab (?) einstellen, was da steht (Kampf, Flucht, etc.) und das nur für eine Sprache?

Vorab: Sowas wie "Kampf/Fight" oder "Flucht/Flee" kommt für mich nicht in Frage. Ich will schon, daß das KS komplett die Sprache hat, für die sich der Spieler entschieden hat. Und nicht im Ks plötzlich Englisch obwohl er zb Deutsch gewählt hat.

Ist das irgendwie machbar, mit oder ohne Skript?

Danke für eure Hilfe.

Ken der multilinguale Kot

Linkey
28.07.2018, 16:34
Hallo Ken der Maker-Kot,

Habe mal schnell das "Vocab" Module genommen und dementsprechend angepasst. Folgendes Script einfach über Main einfügen:


module Vocab
LDT_SWITCH = 101
LDT_BASIC = [
"", # Level/Stufe
"", # Level/Stufe (kurz)
"", # HP/LP
"", # HP/LP (kurz)
"", # MP
"", # MP (kurz)
"", # TP
""] # TP (kurz)
LDT_COMMAND = [
"", # Kampf
"", # Fliegen
"", # Angriff
"", # Verteidigen
"", # Gegenstände
"", # Fähigkeiten
"", # Ausrüstung
"", # Status
"", # Formation ändern
"", # Speichern
"", # Spiel beenden
"", # Platzhalter
"", # Waffen
"", # Rüstungen
"", # Wichtige Objekte
"", # Ausrüstung wechseln
"", # Beste Ausrüstung
"", # Alles entfernen
"", # Neues Spiel
"", # Fortsetzen
"", # Programm beenden
"", # Zum Titelmenü
""] # Abbrechen


# Basis-Status
def self.basic(basic_id)
return $game_switches[LDT_SWITCH] ? LDT_BASIC[basic_id] : $data_system.terms.basic[basic_id]
end

# Befehle
def self.command(command_id)
return $game_switches[LDT_SWITCH] ? LDT_COMMAND[command_id] : $data_system.terms.commands[command_id]
end
end


Bei LDT_SWITCH trägst du die Nummer deines Sprachen-Switchs ein. Wenn der Switch aktiv ist, übernimmt er die Übersetzung, die du in LDT_COMMAND und LDT_BASIC eingetragen hast.
Ist der Switch aus, übernimmt er die Texte, die in der Datenbank eingetragen sind.

Willst du beides lieber hier im Script einstellen oder gar noch mehr sprachen verwenden, kann ich das Script auch dementsprechend anpassen.

Ken der Kot
28.07.2018, 16:59
Hallo Linkey, der Skripte-Schwertmeister :D

Danke, daß du dich dessen angenommen hast. Cool von dir. Beide Sprachen im Skript einstellbar wäre schon besser (allgemein, weil man dann nicht mehr in der Datenbank rumfuhrwerken muss). Wenn du es willst, kannst du die Einstellung für die andere Sprache gern auch noch mit reinnehmen. (hab nur zwei Sprachen)

Geht selbiges auch mit den Skills? Also daß ich Name und Beschreibung der Skills quasi zweisprachig haben kann? Weil das wärs ja glaub ich. Vocab und Skills. Mehr braucht man für ein KS ja glaub nicht. :D

Ken der erfreute Makerkot

Linkey
28.07.2018, 17:08
Hallo Ken,

hier schon einmal das Script, dass du die Commands und Basics im Script übersetzten kannst [Sprache Switch aus, Sprache switch an]:


module Vocab
LDT_SWITCH = 101
#language siwtch off , language switch on
#example ["Beenden","Back to title"] # Zum Titelmenü
LDT_BASIC = [
["",""], # Level/Stufe
["",""], # Level/Stufe (kurz)
["",""], # HP/LP
["",""], # HP/LP (kurz)
["",""], # MP
["",""], # MP (kurz)
["",""], # TP
["",""]] # TP (kurz)
LDT_COMMAND = [
["",""], # Kampf
["",""], # Fliegen
["",""], # Angriff
["",""], # Verteidigen
["",""], # Gegenstände
["",""], # Fähigkeiten
["",""], # Ausrüstung
["",""], # Status
["",""], # Formation ändern
["",""], # Speichern
["",""], # Spiel beenden
["",""], #
["",""], # Waffen
["",""], # Rüstungen
["",""], # Wichtige Objekte
["",""], # Ausrüstung wechseln
["",""], # Beste Ausrüstung
["",""], # Alles entfernen
["",""], # Neues Spiel
["",""], # Fortsetzen
["",""], # Programm beenden
["",""], # Zum Titelmenü
["",""]] # Abbrechen


# Basis-Status
def self.basic(basic_id)
return LDT_BASIC[basic_id][$game_switches[LDT_SWITCH] ? 1 : 0]
end

# Befehle
def self.command(command_id)
return LDT_COMMAND[command_id][$game_switches[LDT_SWITCH] ? 1 : 0]
end
end


Bezüglich Skills usw. editiere ich gleich nach.
Ok, das ist natürlich blöd. Ich sehe gerade, dass das Vocab Module auch einige Konstanten verwendet. Die kann man natürlich nicht dynamisch stellen.

Ken der Kot
28.07.2018, 17:38
Hey, danke soweit O:)

Was genau meinst du denn mit Konstanten? Edit: Damit meine ich: Was genau lässt sich nicht verändern?

Mal abgesehen von den Skills, bräuchte ich halt noch die Möglichkeit, die Gegner sprachlich einzustellen und dieses "Spieler benutzt Feuerball" bzw. "Player uses Fireball", was bei Angriffen immer angezeigt wird. Ich benötige also nicht das ganze Vocab, falls es irgendwo noch ein Problem wegen einer nicht änderbaren Konstante oder so gibt.

Grüßlies

Ken der Kot

Caledoriv
28.07.2018, 17:48
Konstanten sind konstant ;). D.h. der Wert wird einmal gesetzt und kann danach nicht mehr geändert werden. Ergo sind die nicht besonders hilfreich, wenn du willst, dass man die Sprache im Spiel ändern kann.
Habe gerade keinen neuen Maker parat, sonst würde ich auch mal nachschauen.

Linkey
28.07.2018, 18:23
Hallo Ken,

im Vocab Script sind die ersten ~30 Texte alle als Konstante hinterlegt. Um das jetzt zu umgehen, habe ich eine Methode in Vocab eingefügt, die die Konstanten ersetzt. Damit kannst du nun auch diese Texte übersetzen (das sind Texte, die in anderen Windows/Scenes verwendet werden. Z.b. das "Welchen Spielstand willst du laden" usw.).:



module Vocab
# Whenever the language is changed ingame, call:
# Vocab.change_vocab()

# Number of the language switch
LDT_SWITCH = 101
#language siwtch off , language switch on
#example ["Beenden","Back to title"] # Zum Titelmenü
LDT_BASIC = [
["",""], # Level/Stufe
["",""], # Level/Stufe (kurz)
["",""], # HP/LP
["",""], # HP/LP (kurz)
["",""], # MP
["",""], # MP (kurz)
["",""], # TP
["",""]] # TP (kurz)
LDT_COMMAND = [
["",""], # Kampf
["",""], # Fliegen
["",""], # Angriff
["",""], # Verteidigen
["",""], # Gegenstände
["",""], # Fähigkeiten
["",""], # Ausrüstung
["",""], # Status
["",""], # Formation ändern
["",""], # Speichern
["",""], # Spiel beenden
["",""], #
["",""], # Waffen
["",""], # Rüstungen
["",""], # Wichtige Objekte
["",""], # Ausrüstung wechseln
["",""], # Beste Ausrüstung
["",""], # Alles entfernen
["",""], # Neues Spiel
["",""], # Fortsetzen
["",""], # Programm beenden
["",""], # Zum Titelmenü
["",""]] # Abbrechen

def self.change_vocab()
Vocab::ShopBuy.replace !$game_switches[LDT_SWITCH] ? "Kaufen" : "Kaufen"
Vocab::ShopSell.replace !$game_switches[LDT_SWITCH] ? "Verkaufen" : "Verkaufen"
Vocab::ShopCancel.replace !$game_switches[LDT_SWITCH] ? "Abbrechen" : "Abbrechen"
Vocab::Possession.replace !$game_switches[LDT_SWITCH] ? "Im Besitz" : "Im Besitz"

# Status-Menübildschirm
Vocab::ExpTotal.replace !$game_switches[LDT_SWITCH] ? "Aktuelle Exp" : "Aktuelle Exp"
Vocab::ExpNext.replace !$game_switches[LDT_SWITCH] ? "Bis zum nächsten %s" : "Bis zum nächsten %s"

# Speichern/Laden-Menübildschirm
Vocab::SaveMessage.replace !$game_switches[LDT_SWITCH] ? "In welchen Stand speichern" : "In welchen Stand speichern"
Vocab::LoadMessage.replace !$game_switches[LDT_SWITCH] ? "Welchen Stand laden" : "Welchen Stand laden"
Vocab::File.replace !$game_switches[LDT_SWITCH] ? "Spielstand" : "Spielstand"

# Anzeige, wenn es mehrere Gruppenmitglieder gibt
Vocab::PartyName.replace !$game_switches[LDT_SWITCH] ? "%s's Gruppe" : "%s's Gruppe"

# Basis-Nachrichten im Kampf
Vocab::Emerge.replace !$game_switches[LDT_SWITCH] ? "%s erscheint!" : "%s erscheint!"
Vocab::Preemptive.replace !$game_switches[LDT_SWITCH] ? "%s ist im Vorteil!" : "%s ist im Vorteil!"
Vocab::Surprise.replace !$game_switches[LDT_SWITCH] ? "%s wurde überrascht!" : "%s wurde überrascht!"
Vocab::EscapeStart.replace !$game_switches[LDT_SWITCH] ? "%s versucht zu fliehen!" : "%s versucht zu fliehen!"
Vocab::EscapeFailure.replace !$game_switches[LDT_SWITCH] ? "War nicht in der Lage zu fliehen!" : "War nicht in der Lage zu fliehen!"

# Nachrichten bei Kampfende
Vocab::Victory.replace !$game_switches[LDT_SWITCH] ? "%s war siegreich!" : "%s war siegreich!"
Vocab::Defeat.replace !$game_switches[LDT_SWITCH] ? "%s wurde besiegt." : "%s wurde besiegt."
Vocab::ObtainExp.replace !$game_switches[LDT_SWITCH] ? "%s EXP erhalten!" : "%s EXP erhalten!"
Vocab::ObtainGold.replace !$game_switches[LDT_SWITCH] ? "%s\\G gefunden!" : "%s\\G gefunden!"
Vocab::ObtainItem.replace !$game_switches[LDT_SWITCH] ? "%s gefunden!" : "%s gefunden!"
Vocab::LevelUp.replace !$game_switches[LDT_SWITCH] ? "%s ist nun %s %s!" : "%s ist nun %s %s!"
Vocab::ObtainSkill.replace !$game_switches[LDT_SWITCH] ? "%s erlernt!" : "%s erlernt!"

# Benutzung von Gegenständen
Vocab::UseItem.replace !$game_switches[LDT_SWITCH] ? "%s nutzt %s!" : "%s nutzt %s!"

# Kritischer Treffer
Vocab::CriticalToEnemy.replace !$game_switches[LDT_SWITCH] ? "Kritischer Treffer!!" : "Kritischer Treffer!!"
Vocab::CriticalToActor.replace !$game_switches[LDT_SWITCH] ? "Wurde schwer getroffen!!" : "Wurde schwer getroffen!!"

# Ergebnis für Aktionen, welche die Helden betreffen
Vocab::ActorDamage.replace !$game_switches[LDT_SWITCH] ? "%s nimmt %s Schaden!" : "%s nimmt %s Schaden!"
Vocab::ActorRecovery.replace !$game_switches[LDT_SWITCH] ? "%s heilt %s %s!" : "%s heilt %s %s!"
Vocab::ActorGain.replace !$game_switches[LDT_SWITCH] ? "%s bekommt %s %s!" : "%s bekommt %s %s!"
Vocab::ActorLoss.replace !$game_switches[LDT_SWITCH] ? "%s verliert %s %s!" : "%s verliert %s %s!"
Vocab::ActorDrain.replace !$game_switches[LDT_SWITCH] ? "%s wurde %s %s entzogen!" : "%s wurde %s %s entzogen!"
Vocab::ActorNoDamage.replace !$game_switches[LDT_SWITCH] ? "%s hat keinen Schaden eritten!" : "%s hat keinen Schaden eritten!"
Vocab::ActorNoHit.replace !$game_switches[LDT_SWITCH] ? "Verfehlt! %s wurde nicht getroffen!" : "Verfehlt! %s wurde nicht getroffen!"

# Ergebnis für Aktionen, welche die Gegner betreffen
Vocab::EnemyDamage.replace !$game_switches[LDT_SWITCH] ? "%s erleidet %s Schaden!" : "%s erleidet %s Schaden!"
Vocab::EnemyRecovery.replace !$game_switches[LDT_SWITCH] ? "%s heilt %s %s!" : "%s heilt %s %s!"
Vocab::EnemyGain.replace !$game_switches[LDT_SWITCH] ? "%s bekommt %s %s!" : "%s bekommt %s %s!"
Vocab::EnemyLoss.replace !$game_switches[LDT_SWITCH] ? "%s verliert %s %s!" : "%s verliert %s %s!"
Vocab::EnemyDrain.replace !$game_switches[LDT_SWITCH] ? "Entzieht %s %s von %s!" : "Entzieht %s %s von %s!"
Vocab::EnemyNoDamage.replace !$game_switches[LDT_SWITCH] ? "%s hat keinen Schaden erlitten!" : "%s hat keinen Schaden erlitten!"
Vocab::EnemyNoHit.replace !$game_switches[LDT_SWITCH] ? "Verfehlt! %s wurde nicht getroffen!" : "Verfehlt! %s wurde nicht getroffen!"

# Ausweichen/Zurückwerfen
Vocab::Evasion.replace !$game_switches[LDT_SWITCH] ? "%s weicht dem Angriff aus!" : "%s weicht dem Angriff aus!"
Vocab::MagicEvasion.replace !$game_switches[LDT_SWITCH] ? "%s wehrt die Magie ab!" : "%s wehrt die Magie ab!"
Vocab::MagicReflection.replace !$game_switches[LDT_SWITCH] ? "%s reflektiert die Magie!" : "%s reflektiert die Magie!"
Vocab::CounterAttack.replace !$game_switches[LDT_SWITCH] ? "%s startet einen Gegenangriff!" : "%s startet einen Gegenangriff!"
Vocab::Substitute.replace !$game_switches[LDT_SWITCH] ? "%s verteidigt %s!" : "%s verteidigt %s!"

# Buff/Debuff
Vocab::BuffAdd.replace !$game_switches[LDT_SWITCH] ? "%s's %s wird verstärkt!" : "%s's %s wird verstärkt!"
Vocab::DebuffAdd.replace !$game_switches[LDT_SWITCH] ? "%s's %s wird geschwächt!" : "%s's %s wird geschwächt!"
Vocab::BuffRemove.replace !$game_switches[LDT_SWITCH] ? "%s's %s ist wieder normal." : "%s's %s ist wieder normal."

# Fähigkeit oder Gegenstand hatte keinen Effekt
Vocab::ActionFailure.replace !$game_switches[LDT_SWITCH] ? "Hat keine Auswirkung auf %s!" : "Hat keine Auswirkung auf %s!"

# Fehler-Meldungen
Vocab::PlayerPosError.replace !$game_switches[LDT_SWITCH] ? "Spieler-Startpoistion wurde nicht gesetzt" : "Spieler-Startpoistion wurde nicht gesetzt"
Vocab::EventOverflow.replace !$game_switches[LDT_SWITCH] ? "Zuviele gleichzeitige Aufrufe Gemeinsamer Events" : "Zuviele gleichzeitige Aufrufe Gemeinsamer Events"
end

# Basis-Status
def self.basic(basic_id)
return LDT_BASIC[basic_id][$game_switches[LDT_SWITCH] ? 1 : 0]
end

# Befehle
def self.command(command_id)
return LDT_COMMAND[command_id][$game_switches[LDT_SWITCH] ? 1 : 0]
end
end

module DataManager
class <<self; alias ldt_vocab_load_game load_game end
def self.load_game(index)
treturn = ldt_vocab_load_game(index)
Vocab.change_vocab()
return treturn
end

class <<self; alias ldt_vocab_new_game setup_new_game end
def self.setup_new_game
treturn = ldt_vocab_new_game
Vocab.change_vocab()
return treturn
end
end


Edit: @Caledoriv: "Lustigerweise" kann man Constante ändern, wenn man diese mit der Replace-Methode ersetzt.
War jetzt einfacher, wenn auch nicht ganz so sauber, als alle Zielklassen zu nehmen, dort die Aufrufe so zu verändern, dass generell alles über Methoden statt Konstanten läuft. Wobei das generell schöner wäre, als dieser "dreckige" Mix, der im Ace drin ist.

@Ken:
Was beim Skill willst du denn genau übersetzen? Den Skillnamen? Oder sonst noch was?

Ken der Kot
28.07.2018, 18:34
Das ist ja regelrecht herrlich, vielen Dank!!!


@Ken:
Was beim Skill willst du denn genau übersetzen? Den Skillnamen? Oder sonst noch was?
Name des Skills und seine Beschreibung. Bei Items ebenfalls.

Edit: Jetzt brauch ich halt nur noch eine Möglichkeit, vor dem Titelscreen den Switch festzulegen. Eine Sprachabfrage á la "Welche Sprache darfs denn sein?"

Denn so habe ich nun ja gar keine Titeloptionen, weil ich vor Game Start ja noch keine Switches festlegen kann. ^^

Linkey
28.07.2018, 19:09
Hallo Ken,

das sollte trotzdem funktionieren. Wenn du immer beide Sprachen gepflegt hast, sollte er die Sprache anzeigen, die für "Switch = aus" verwendet wird.

Hier das Script erweitert um Skill- und Item-Namen. Ich habe jetzt nicht die Zeit alle Windows durchzuschauen, wo es noch verwendet wird. Falls dir irgendwo mal eine falsche Ausgabe begegnet, sag bescheid, dann erweitere ich das Script einfach.



module Vocab
# Whenever the language is changed ingame, call:
# Vocab.change_vocab()

# Number of the language switch
LDT_SWITCH = 101
#language siwtch off , language switch on
#example ["Beenden","Back to title"] # Zum Titelmenü
LDT_BASIC = [
["",""], # Level/Stufe
["",""], # Level/Stufe (kurz)
["",""], # HP/LP
["",""], # HP/LP (kurz)
["",""], # MP
["",""], # MP (kurz)
["",""], # TP
["",""]] # TP (kurz)
LDT_COMMAND = [
["",""], # Kampf
["",""], # Fliegen
["",""], # Angriff
["",""], # Verteidigen
["",""], # Gegenstände
["",""], # Fähigkeiten
["",""], # Ausrüstung
["",""], # Status
["",""], # Formation ändern
["",""], # Speichern
["",""], # Spiel beenden
["",""], #
["",""], # Waffen
["",""], # Rüstungen
["",""], # Wichtige Objekte
["",""], # Ausrüstung wechseln
["",""], # Beste Ausrüstung
["",""], # Alles entfernen
["",""], # Neues Spiel
["",""], # Fortsetzen
["",""], # Programm beenden
["",""], # Zum Titelmenü
["",""]] # Abbrechen
# Skill ID => [Language switch off][Language siwtch on]
# Skills which are not maintained here will be read from database
LDT_SKILL = {
1=>["",""],
2=>["",""],
4=>["Doppelter Hieb","Double Attack"]
}
# Item ID => [Language switch off][Language siwtch on]
# Items which are not maintained here will be read from database
LDT_ITEM = {
1=>["Trank","Potion"],
2=>["",""],
4=>["",""]
}
def self.change_vocab()
Vocab::ShopBuy.replace !$game_switches[LDT_SWITCH] ? "Kaufen" : "Kaufen"
Vocab::ShopSell.replace !$game_switches[LDT_SWITCH] ? "Verkaufen" : "Verkaufen"
Vocab::ShopCancel.replace !$game_switches[LDT_SWITCH] ? "Abbrechen" : "Abbrechen"
Vocab::Possession.replace !$game_switches[LDT_SWITCH] ? "Im Besitz" : "Im Besitz"

# Status-Menübildschirm
Vocab::ExpTotal.replace !$game_switches[LDT_SWITCH] ? "Aktuelle Exp" : "Aktuelle Exp"
Vocab::ExpNext.replace !$game_switches[LDT_SWITCH] ? "Bis zum nächsten %s" : "Bis zum nächsten %s"

# Speichern/Laden-Menübildschirm
Vocab::SaveMessage.replace !$game_switches[LDT_SWITCH] ? "In welchen Stand speichern" : "In welchen Stand speichern"
Vocab::LoadMessage.replace !$game_switches[LDT_SWITCH] ? "Welchen Stand laden" : "Welchen Stand laden"
Vocab::File.replace !$game_switches[LDT_SWITCH] ? "Spielstand" : "Spielstand"

# Anzeige, wenn es mehrere Gruppenmitglieder gibt
Vocab::PartyName.replace !$game_switches[LDT_SWITCH] ? "%s's Gruppe" : "%s's Gruppe"

# Basis-Nachrichten im Kampf
Vocab::Emerge.replace !$game_switches[LDT_SWITCH] ? "%s erscheint!" : "%s erscheint!"
Vocab::Preemptive.replace !$game_switches[LDT_SWITCH] ? "%s ist im Vorteil!" : "%s ist im Vorteil!"
Vocab::Surprise.replace !$game_switches[LDT_SWITCH] ? "%s wurde überrascht!" : "%s wurde überrascht!"
Vocab::EscapeStart.replace !$game_switches[LDT_SWITCH] ? "%s versucht zu fliehen!" : "%s versucht zu fliehen!"
Vocab::EscapeFailure.replace !$game_switches[LDT_SWITCH] ? "War nicht in der Lage zu fliehen!" : "War nicht in der Lage zu fliehen!"

# Nachrichten bei Kampfende
Vocab::Victory.replace !$game_switches[LDT_SWITCH] ? "%s war siegreich!" : "%s war siegreich!"
Vocab::Defeat.replace !$game_switches[LDT_SWITCH] ? "%s wurde besiegt." : "%s wurde besiegt."
Vocab::ObtainExp.replace !$game_switches[LDT_SWITCH] ? "%s EXP erhalten!" : "%s EXP erhalten!"
Vocab::ObtainGold.replace !$game_switches[LDT_SWITCH] ? "%s\\G gefunden!" : "%s\\G gefunden!"
Vocab::ObtainItem.replace !$game_switches[LDT_SWITCH] ? "%s gefunden!" : "%s gefunden!"
Vocab::LevelUp.replace !$game_switches[LDT_SWITCH] ? "%s ist nun %s %s!" : "%s ist nun %s %s!"
Vocab::ObtainSkill.replace !$game_switches[LDT_SWITCH] ? "%s erlernt!" : "%s erlernt!"

# Benutzung von Gegenständen
Vocab::UseItem.replace !$game_switches[LDT_SWITCH] ? "%s nutzt %s!" : "%s nutzt %s!"

# Kritischer Treffer
Vocab::CriticalToEnemy.replace !$game_switches[LDT_SWITCH] ? "Kritischer Treffer!!" : "Kritischer Treffer!!"
Vocab::CriticalToActor.replace !$game_switches[LDT_SWITCH] ? "Wurde schwer getroffen!!" : "Wurde schwer getroffen!!"

# Ergebnis für Aktionen, welche die Helden betreffen
Vocab::ActorDamage.replace !$game_switches[LDT_SWITCH] ? "%s nimmt %s Schaden!" : "%s nimmt %s Schaden!"
Vocab::ActorRecovery.replace !$game_switches[LDT_SWITCH] ? "%s heilt %s %s!" : "%s heilt %s %s!"
Vocab::ActorGain.replace !$game_switches[LDT_SWITCH] ? "%s bekommt %s %s!" : "%s bekommt %s %s!"
Vocab::ActorLoss.replace !$game_switches[LDT_SWITCH] ? "%s verliert %s %s!" : "%s verliert %s %s!"
Vocab::ActorDrain.replace !$game_switches[LDT_SWITCH] ? "%s wurde %s %s entzogen!" : "%s wurde %s %s entzogen!"
Vocab::ActorNoDamage.replace !$game_switches[LDT_SWITCH] ? "%s hat keinen Schaden eritten!" : "%s hat keinen Schaden eritten!"
Vocab::ActorNoHit.replace !$game_switches[LDT_SWITCH] ? "Verfehlt! %s wurde nicht getroffen!" : "Verfehlt! %s wurde nicht getroffen!"

# Ergebnis für Aktionen, welche die Gegner betreffen
Vocab::EnemyDamage.replace !$game_switches[LDT_SWITCH] ? "%s erleidet %s Schaden!" : "%s erleidet %s Schaden!"
Vocab::EnemyRecovery.replace !$game_switches[LDT_SWITCH] ? "%s heilt %s %s!" : "%s heilt %s %s!"
Vocab::EnemyGain.replace !$game_switches[LDT_SWITCH] ? "%s bekommt %s %s!" : "%s bekommt %s %s!"
Vocab::EnemyLoss.replace !$game_switches[LDT_SWITCH] ? "%s verliert %s %s!" : "%s verliert %s %s!"
Vocab::EnemyDrain.replace !$game_switches[LDT_SWITCH] ? "Entzieht %s %s von %s!" : "Entzieht %s %s von %s!"
Vocab::EnemyNoDamage.replace !$game_switches[LDT_SWITCH] ? "%s hat keinen Schaden erlitten!" : "%s hat keinen Schaden erlitten!"
Vocab::EnemyNoHit.replace !$game_switches[LDT_SWITCH] ? "Verfehlt! %s wurde nicht getroffen!" : "Verfehlt! %s wurde nicht getroffen!"

# Ausweichen/Zurückwerfen
Vocab::Evasion.replace !$game_switches[LDT_SWITCH] ? "%s weicht dem Angriff aus!" : "%s weicht dem Angriff aus!"
Vocab::MagicEvasion.replace !$game_switches[LDT_SWITCH] ? "%s wehrt die Magie ab!" : "%s wehrt die Magie ab!"
Vocab::MagicReflection.replace !$game_switches[LDT_SWITCH] ? "%s reflektiert die Magie!" : "%s reflektiert die Magie!"
Vocab::CounterAttack.replace !$game_switches[LDT_SWITCH] ? "%s startet einen Gegenangriff!" : "%s startet einen Gegenangriff!"
Vocab::Substitute.replace !$game_switches[LDT_SWITCH] ? "%s verteidigt %s!" : "%s verteidigt %s!"

# Buff/Debuff
Vocab::BuffAdd.replace !$game_switches[LDT_SWITCH] ? "%s's %s wird verstärkt!" : "%s's %s wird verstärkt!"
Vocab::DebuffAdd.replace !$game_switches[LDT_SWITCH] ? "%s's %s wird geschwächt!" : "%s's %s wird geschwächt!"
Vocab::BuffRemove.replace !$game_switches[LDT_SWITCH] ? "%s's %s ist wieder normal." : "%s's %s ist wieder normal."

# Fähigkeit oder Gegenstand hatte keinen Effekt
Vocab::ActionFailure.replace !$game_switches[LDT_SWITCH] ? "Hat keine Auswirkung auf %s!" : "Hat keine Auswirkung auf %s!"

# Fehler-Meldungen
Vocab::PlayerPosError.replace !$game_switches[LDT_SWITCH] ? "Spieler-Startpoistion wurde nicht gesetzt" : "Spieler-Startpoistion wurde nicht gesetzt"
Vocab::EventOverflow.replace !$game_switches[LDT_SWITCH] ? "Zuviele gleichzeitige Aufrufe Gemeinsamer Events" : "Zuviele gleichzeitige Aufrufe Gemeinsamer Events"
end

# Basis-Status
def self.basic(basic_id)
return LDT_BASIC[basic_id][$game_switches[LDT_SWITCH] ? 1 : 0]
end

# Befehle
def self.command(command_id)
return LDT_COMMAND[command_id][$game_switches[LDT_SWITCH] ? 1 : 0]
end

def self.get_item_text(item)
if(item.is_a?(RPG::Skill))
return get_skill_name(item)
elsif(item.is_a?(RPG::Item))
return get_item_name(item)
else
return item.name
end
end

def self.get_skill_name(item)
if(LDT_SKILL.has_key?(item.id))
return LDT_SKILL[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.name
end
end

def self.get_item_name(item)
if(LDT_ITEM.has_key?(item.id))
return LDT_ITEM[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.name
end
end
end

class Window_Base
def draw_item_name(item, x, y, enabled = true, width = 172)
return unless item
draw_icon(item.icon_index, x, y, enabled)
change_color(normal_color, enabled)
draw_text(x + 24, y, width, line_height, Vocab.get_item_text(item))
end
end
class Window_BattleLog
def display_use_item(subject, item)
if item.is_a?(RPG::Skill)
add_text(subject.name + item.message1)
unless item.message2.empty?
wait
add_text(item.message2)
end
else
add_text(sprintf(Vocab::UseItem, subject.name, Vocab.get_item_text(item)))
end
end
end
module DataManager
class <<self; alias ldt_vocab_load_game load_game end
def self.load_game(index)
treturn = ldt_vocab_load_game(index)
Vocab.change_vocab()
return treturn
end

class <<self; alias ldt_vocab_new_game setup_new_game end
def self.setup_new_game
treturn = ldt_vocab_new_game
Vocab.change_vocab()
return treturn
end
end

Ken der Kot
28.07.2018, 19:19
Stimmt, du hast recht :D Danke dir, ich werd mal damit arbeiten und meld mich, falls noch was sein sollte ^^

Edit: Hmm, aber ohne Vorab-Abfrage hab ich ja nicht die Option Start, Laden, Beenden sowohl entweder auf Deutsch oder auf Englisch anzuzeigen... das wäre schon ganz cool, wenn es eine Option gäbe, mit der ich vor dem Spiel schon einen Bildschirm aufrufen kann, der die Sprache abfragt.

Ken der Kot

Linkey
28.07.2018, 20:04
So, das war es dann aber erstmal. Muss dieses Wochenende auch arbeiten und will mal weg vom PC :)



module Vocab
# Whenever the language is changed ingame, call:
# Vocab.change_vocab()

# Language Selection Constants
LDT_LANG = ["Deutsch","English"]
# Number of the language switch
LDT_SWITCH = 101
#language siwtch off , language switch on
#example ["Beenden","Back to title"] # Zum Titelmenü
LDT_BASIC = [
["",""], # Level/Stufe
["",""], # Level/Stufe (kurz)
["",""], # HP/LP
["",""], # HP/LP (kurz)
["",""], # MP
["",""], # MP (kurz)
["",""], # TP
["",""]] # TP (kurz)
LDT_COMMAND = [
["",""], # Kampf
["",""], # Fliegen
["",""], # Angriff
["",""], # Verteidigen
["",""], # Gegenstände
["",""], # Fähigkeiten
["",""], # Ausrüstung
["",""], # Status
["",""], # Formation ändern
["",""], # Speichern
["",""], # Spiel beenden
["",""], #
["",""], # Waffen
["",""], # Rüstungen
["",""], # Wichtige Objekte
["",""], # Ausrüstung wechseln
["",""], # Beste Ausrüstung
["",""], # Alles entfernen
["",""], # Neues Spiel
["",""], # Fortsetzen
["",""], # Programm beenden
["",""], # Zum Titelmenü
["",""]] # Abbrechen
# Skill ID => [Language switch off][Language siwtch on]
# Skills which are not maintained here will be read from database
LDT_SKILL = {
1=>["",""],
2=>["",""],
4=>["Doppelter Hieb","Double Attack"]
}
# Item ID => [Language switch off][Language siwtch on]
# Items which are not maintained here will be read from database
LDT_ITEM = {
1=>["Trank","Potion"],
2=>["",""],
4=>["",""]
}
def self.change_vocab()
Vocab::ShopBuy.replace !$game_switches[LDT_SWITCH] ? "Kaufen" : "Kaufen"
Vocab::ShopSell.replace !$game_switches[LDT_SWITCH] ? "Verkaufen" : "Verkaufen"
Vocab::ShopCancel.replace !$game_switches[LDT_SWITCH] ? "Abbrechen" : "Abbrechen"
Vocab::Possession.replace !$game_switches[LDT_SWITCH] ? "Im Besitz" : "Im Besitz"

# Status-Menübildschirm
Vocab::ExpTotal.replace !$game_switches[LDT_SWITCH] ? "Aktuelle Exp" : "Aktuelle Exp"
Vocab::ExpNext.replace !$game_switches[LDT_SWITCH] ? "Bis zum nächsten %s" : "Bis zum nächsten %s"

# Speichern/Laden-Menübildschirm
Vocab::SaveMessage.replace !$game_switches[LDT_SWITCH] ? "In welchen Stand speichern" : "In welchen Stand speichern"
Vocab::LoadMessage.replace !$game_switches[LDT_SWITCH] ? "Welchen Stand laden" : "Welchen Stand laden"
Vocab::File.replace !$game_switches[LDT_SWITCH] ? "Spielstand" : "Spielstand"

# Anzeige, wenn es mehrere Gruppenmitglieder gibt
Vocab::PartyName.replace !$game_switches[LDT_SWITCH] ? "%s's Gruppe" : "%s's Gruppe"

# Basis-Nachrichten im Kampf
Vocab::Emerge.replace !$game_switches[LDT_SWITCH] ? "%s erscheint!" : "%s erscheint!"
Vocab::Preemptive.replace !$game_switches[LDT_SWITCH] ? "%s ist im Vorteil!" : "%s ist im Vorteil!"
Vocab::Surprise.replace !$game_switches[LDT_SWITCH] ? "%s wurde überrascht!" : "%s wurde überrascht!"
Vocab::EscapeStart.replace !$game_switches[LDT_SWITCH] ? "%s versucht zu fliehen!" : "%s versucht zu fliehen!"
Vocab::EscapeFailure.replace !$game_switches[LDT_SWITCH] ? "War nicht in der Lage zu fliehen!" : "War nicht in der Lage zu fliehen!"

# Nachrichten bei Kampfende
Vocab::Victory.replace !$game_switches[LDT_SWITCH] ? "%s war siegreich!" : "%s war siegreich!"
Vocab::Defeat.replace !$game_switches[LDT_SWITCH] ? "%s wurde besiegt." : "%s wurde besiegt."
Vocab::ObtainExp.replace !$game_switches[LDT_SWITCH] ? "%s EXP erhalten!" : "%s EXP erhalten!"
Vocab::ObtainGold.replace !$game_switches[LDT_SWITCH] ? "%s\\G gefunden!" : "%s\\G gefunden!"
Vocab::ObtainItem.replace !$game_switches[LDT_SWITCH] ? "%s gefunden!" : "%s gefunden!"
Vocab::LevelUp.replace !$game_switches[LDT_SWITCH] ? "%s ist nun %s %s!" : "%s ist nun %s %s!"
Vocab::ObtainSkill.replace !$game_switches[LDT_SWITCH] ? "%s erlernt!" : "%s erlernt!"

# Benutzung von Gegenständen
Vocab::UseItem.replace !$game_switches[LDT_SWITCH] ? "%s nutzt %s!" : "%s nutzt %s!"

# Kritischer Treffer
Vocab::CriticalToEnemy.replace !$game_switches[LDT_SWITCH] ? "Kritischer Treffer!!" : "Kritischer Treffer!!"
Vocab::CriticalToActor.replace !$game_switches[LDT_SWITCH] ? "Wurde schwer getroffen!!" : "Wurde schwer getroffen!!"

# Ergebnis für Aktionen, welche die Helden betreffen
Vocab::ActorDamage.replace !$game_switches[LDT_SWITCH] ? "%s nimmt %s Schaden!" : "%s nimmt %s Schaden!"
Vocab::ActorRecovery.replace !$game_switches[LDT_SWITCH] ? "%s heilt %s %s!" : "%s heilt %s %s!"
Vocab::ActorGain.replace !$game_switches[LDT_SWITCH] ? "%s bekommt %s %s!" : "%s bekommt %s %s!"
Vocab::ActorLoss.replace !$game_switches[LDT_SWITCH] ? "%s verliert %s %s!" : "%s verliert %s %s!"
Vocab::ActorDrain.replace !$game_switches[LDT_SWITCH] ? "%s wurde %s %s entzogen!" : "%s wurde %s %s entzogen!"
Vocab::ActorNoDamage.replace !$game_switches[LDT_SWITCH] ? "%s hat keinen Schaden eritten!" : "%s hat keinen Schaden eritten!"
Vocab::ActorNoHit.replace !$game_switches[LDT_SWITCH] ? "Verfehlt! %s wurde nicht getroffen!" : "Verfehlt! %s wurde nicht getroffen!"

# Ergebnis für Aktionen, welche die Gegner betreffen
Vocab::EnemyDamage.replace !$game_switches[LDT_SWITCH] ? "%s erleidet %s Schaden!" : "%s erleidet %s Schaden!"
Vocab::EnemyRecovery.replace !$game_switches[LDT_SWITCH] ? "%s heilt %s %s!" : "%s heilt %s %s!"
Vocab::EnemyGain.replace !$game_switches[LDT_SWITCH] ? "%s bekommt %s %s!" : "%s bekommt %s %s!"
Vocab::EnemyLoss.replace !$game_switches[LDT_SWITCH] ? "%s verliert %s %s!" : "%s verliert %s %s!"
Vocab::EnemyDrain.replace !$game_switches[LDT_SWITCH] ? "Entzieht %s %s von %s!" : "Entzieht %s %s von %s!"
Vocab::EnemyNoDamage.replace !$game_switches[LDT_SWITCH] ? "%s hat keinen Schaden erlitten!" : "%s hat keinen Schaden erlitten!"
Vocab::EnemyNoHit.replace !$game_switches[LDT_SWITCH] ? "Verfehlt! %s wurde nicht getroffen!" : "Verfehlt! %s wurde nicht getroffen!"

# Ausweichen/Zurückwerfen
Vocab::Evasion.replace !$game_switches[LDT_SWITCH] ? "%s weicht dem Angriff aus!" : "%s weicht dem Angriff aus!"
Vocab::MagicEvasion.replace !$game_switches[LDT_SWITCH] ? "%s wehrt die Magie ab!" : "%s wehrt die Magie ab!"
Vocab::MagicReflection.replace !$game_switches[LDT_SWITCH] ? "%s reflektiert die Magie!" : "%s reflektiert die Magie!"
Vocab::CounterAttack.replace !$game_switches[LDT_SWITCH] ? "%s startet einen Gegenangriff!" : "%s startet einen Gegenangriff!"
Vocab::Substitute.replace !$game_switches[LDT_SWITCH] ? "%s verteidigt %s!" : "%s verteidigt %s!"

# Buff/Debuff
Vocab::BuffAdd.replace !$game_switches[LDT_SWITCH] ? "%s's %s wird verstärkt!" : "%s's %s wird verstärkt!"
Vocab::DebuffAdd.replace !$game_switches[LDT_SWITCH] ? "%s's %s wird geschwächt!" : "%s's %s wird geschwächt!"
Vocab::BuffRemove.replace !$game_switches[LDT_SWITCH] ? "%s's %s ist wieder normal." : "%s's %s ist wieder normal."

# Fähigkeit oder Gegenstand hatte keinen Effekt
Vocab::ActionFailure.replace !$game_switches[LDT_SWITCH] ? "Hat keine Auswirkung auf %s!" : "Hat keine Auswirkung auf %s!"

# Fehler-Meldungen
Vocab::PlayerPosError.replace !$game_switches[LDT_SWITCH] ? "Spieler-Startpoistion wurde nicht gesetzt" : "Spieler-Startpoistion wurde nicht gesetzt"
Vocab::EventOverflow.replace !$game_switches[LDT_SWITCH] ? "Zuviele gleichzeitige Aufrufe Gemeinsamer Events" : "Zuviele gleichzeitige Aufrufe Gemeinsamer Events"
end

# Basis-Status
def self.basic(basic_id)
return LDT_BASIC[basic_id][$game_switches[LDT_SWITCH] ? 1 : 0]
end

# Befehle
def self.command(command_id)
return LDT_COMMAND[command_id][$game_switches[LDT_SWITCH] ? 1 : 0]
end

def self.get_item_text(item)
if(item.is_a?(RPG::Skill))
return get_skill_name(item)
elsif(item.is_a?(RPG::Item))
return get_item_name(item)
else
return item.name
end
end

def self.get_skill_name(item)
if(LDT_SKILL.has_key?(item.id))
return LDT_SKILL[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.name
end
end

def self.get_item_name(item)
if(LDT_ITEM.has_key?(item.id))
return LDT_ITEM[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.name
end
end
end

class Window_Base
def draw_item_name(item, x, y, enabled = true, width = 172)
return unless item
draw_icon(item.icon_index, x, y, enabled)
change_color(normal_color, enabled)
draw_text(x + 24, y, width, line_height, Vocab.get_item_text(item))
end
end
class Window_BattleLog
def display_use_item(subject, item)
if item.is_a?(RPG::Skill)
add_text(subject.name + item.message1)
unless item.message2.empty?
wait
add_text(item.message2)
end
else
add_text(sprintf(Vocab::UseItem, subject.name, Vocab.get_item_text(item)))
end
end
end
## Scene Title changes + new window
class Window_LanguageCommand < Window_Command
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0)
update_placement
self.openness = 0
open
end
#--------------------------------------------------------------------------
# * Get Window Width
#--------------------------------------------------------------------------
def window_width
return 160
end
#--------------------------------------------------------------------------
# * Update Window Position
#--------------------------------------------------------------------------
def update_placement
self.x = (Graphics.width - width) / 2
self.y = (Graphics.height * 1.6 - height) / 2
end
#--------------------------------------------------------------------------
# * Create Command List
#--------------------------------------------------------------------------
def make_command_list
p("test")
add_command(Vocab::LDT_LANG[0], :lang1)
add_command(Vocab::LDT_LANG[1], :lang2)
end
#--------------------------------------------------------------------------
# * Get Activation State of Continue
#--------------------------------------------------------------------------
def continue_enabled
DataManager.save_file_exists?
end
end
class Scene_Title < Scene_Base
def start
super
SceneManager.clear
Graphics.freeze
create_background
create_foreground
create_language_window
play_title_music
end

def create_language_window
@language_window = Window_LanguageCommand.new
@language_window.set_handler(:lang1, method(:command_lang1))
@language_window.set_handler(:lang2, method(:command_lang2))
@language_window.visible = true
@language_window.active = true
end

def command_lang1()
$game_switches[Vocab::LDT_SWITCH] = false
language_selected()
end

def command_lang2()
$game_switches[Vocab::LDT_SWITCH] = true
language_selected()
end

def language_selected()
@language_window.visible = false
@language_window.active = false
create_command_window
end
end
module DataManager
class <<self; alias ldt_vocab_load_game load_game end
def self.load_game(index)
tlang = $game_switches[Vocab::LDT_SWITCH]
treturn = ldt_vocab_load_game(index)
Vocab.change_vocab()
$game_switches[Vocab::LDT_SWITCH] = tlang
return treturn
end

class <<self; alias ldt_vocab_new_game setup_new_game end
def self.setup_new_game
tlang = $game_switches[Vocab::LDT_SWITCH]
treturn = ldt_vocab_new_game
Vocab.change_vocab()
$game_switches[Vocab::LDT_SWITCH] = tlang
return treturn
end
end

Ken der Kot
28.07.2018, 20:14
Kein Problem, vielen Dank :)

Ken der Kot
29.07.2018, 17:30
Hallo,

wenn ich den Spielstand nicht lade, sondern Esc drücke bekomm ich einen RGSS Error (disposed window) in line 83, der sich auf Window Base bezieht.

Was kann man tun?

Ken der Kot

Linkey
29.07.2018, 19:27
In dem Script, was ich dir gegeben habe, ersetze die class Scene_Title durch folgende (sollte so bei ca. zeile ~230+ liegen):


class Scene_Title < Scene_Base
def start
super
SceneManager.clear
Graphics.freeze
create_background
create_foreground
create_command_window
@command_window.visible = false
@command_window.active = false
create_language_window
play_title_music
end

def create_language_window
@language_window = Window_LanguageCommand.new
@language_window.set_handler(:lang1, method(:command_lang1))
@language_window.set_handler(:lang2, method(:command_lang2))
@language_window.visible = true
@language_window.active = true
end

def command_lang1()
$game_switches[Vocab::LDT_SWITCH] = false
language_selected()
end

def command_lang2()
$game_switches[Vocab::LDT_SWITCH] = true
language_selected()
end

def language_selected()
@language_window.visible = false
@language_window.active = false
create_command_window
end
end


Edit: In rot noch einmal ein Fix des Fixs....

Linkey
29.07.2018, 19:53
So, jetzt noch erweitert, dass man vom Titelmenü zurück zur Sprachauswahl kommt und vom Ladebildschirm zurück zum Titelmenü (wieder ab ca. ~230 Scene_Title alles komplett ersetzen):


class Scene_Title < Scene_Base
def start
super
SceneManager.clear
Graphics.freeze
create_background
create_foreground
create_command_window
create_language_window
unless($ldt_lang_selected)
@command_window.visible = false
@command_window.active = false
else
@language_window.visible = false
@language_window.active = false
end
play_title_music
end

def create_language_window
@language_window = Window_LanguageCommand.new
@language_window.set_handler(:lang1, method(:command_lang1))
@language_window.set_handler(:lang2, method(:command_lang2))
@language_window.visible = true
@language_window.active = true
end

def command_lang1()
$game_switches[Vocab::LDT_SWITCH] = false
language_selected()
end

def command_lang2()
$game_switches[Vocab::LDT_SWITCH] = true
language_selected()
end

def language_selected()
$ldt_lang_selected = true
@language_window.visible = false
@language_window.active = false
Vocab.change_vocab()
create_command_window
end

alias ldt_create_command_window create_command_window
def create_command_window
ldt_create_command_window
@command_window.set_handler(:cancel, method(:command_cancel))
end

def command_cancel
@command_window.visible = false
@command_window.active = false
@language_window.visible = true
@language_window.active = true
end
end
module DataManager
class <<self; alias ldt_vocab_load_game load_game end
def self.load_game(index)
tlang = $game_switches[Vocab::LDT_SWITCH]
treturn = ldt_vocab_load_game(index)
$game_switches[Vocab::LDT_SWITCH] = tlang
Vocab.change_vocab()
return treturn
end

class <<self; alias ldt_vocab_new_game setup_new_game end
def self.setup_new_game
tlang = $game_switches[Vocab::LDT_SWITCH]
treturn = ldt_vocab_new_game
$game_switches[Vocab::LDT_SWITCH] = tlang
Vocab.change_vocab()
return treturn
end
end

Ken der Kot
01.08.2018, 14:44
Hi Linkey, habe noch ein Problem mit dem Skript gefunden. Also wenn die Gegner (oder ich) angreifen, dann steht oben immer noch "Actor uses..." bzw "Actor released..." etc. Also im Prinzip das, was in der Database bei Action Message steht. Einfach leer lassen geht auch nicht, dann wird im Kampf nichts angezeigt. Kann man das noch übersetzbar machen + eben auch die Gegnernamen?

Ken der Sprachkot

Linkey
01.08.2018, 20:55
Hallo Ken,

Als erstes fügst du folgenden Code unter LDT_SKILL ein:


LDT_SKILL_MES1 = {
1=>["",""],
2=>["",""],
4=>["benutzt Doppelter Hieb!","uses Double Attack!!!"]
}
LDT_SKILL_MES2 = {
1=>["",""],
2=>["",""],
4=>["Irgendein Text der als Info drunter erscheint.","Insert something useful here..."]
}
LDT_ENEMY = {
1=>["Geist","Ghost"],
2=>["Ratte","Rat"],
3=>["",""],
4=>["",""]}

Hier kannst du die Angriffstexte, equivlanet zur Database, pflegen. Ist vom Aufbau her genauso wie LDT_SKILL.
LDT_SKILL_MES1 ist der Text, der hinter dem ausführenden Charakter steht.
LDT_SKILL_MES2 ist der zweite Text, der komplett angezeigt wird (ohne Anwender).
In dem Beispiel, was ich dort eingetragen habe, erscheint folgender Text, wenn der "Peter" den Skill 4 benutzt:
Peter benutzt Doppelter Hieb!
Irgendein Text der als Info drunter erscheint.

In LDT_ENEMY kannst du die Gegnernamen pflegen.

Ab der Zeile "def self.basic(basic_id)" das komplette Coding durch folgendes ersetzen:


# Basis-Status
def self.basic(basic_id)
return LDT_BASIC[basic_id][$game_switches[LDT_SWITCH] ? 1 : 0]
end

# Befehle
def self.command(command_id)
return LDT_COMMAND[command_id][$game_switches[LDT_SWITCH] ? 1 : 0]
end

def self.get_item_text(item)
if(item.is_a?(RPG::Skill))
return get_skill_name(item)
elsif(item.is_a?(RPG::Item))
return get_item_name(item)
else
return item.name
end
end

def self.get_skill_name(item)
if(LDT_SKILL.has_key?(item.id))
return LDT_SKILL[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.name
end
end

def self.get_item_name(item)
if(LDT_ITEM.has_key?(item.id))
return LDT_ITEM[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.name
end
end

def self.get_message1(item)
if(LDT_SKILL_MES1.has_key?(item.id))
return LDT_SKILL_MES1[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.message1
end
end

def self.get_message2(item)
if(LDT_SKILL_MES2.has_key?(item.id))
return LDT_SKILL_MES2[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.message2
end
end

def self.get_subject(subject)
if(subject.is_a?(Game_Enemy))
if(LDT_ENEMY.has_key?(subject.enemy_id))
return LDT_ENEMY[subject.enemy_id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return subject.name
end
elsif(subject.is_a?(RPG::Enemy))
if(LDT_ENEMY.has_key?(subject.id))
return LDT_ENEMY[subject.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return subject.name
end
else
return subject.name
end
end
end

class Window_Base
def draw_item_name(item, x, y, enabled = true, width = 172)
return unless item
draw_icon(item.icon_index, x, y, enabled)
change_color(normal_color, enabled)
draw_text(x + 24, y, width, line_height, Vocab.get_item_text(item))
end
end
class Window_BattleLog
def display_use_item(subject, item)
tsub = Vocab.get_subject(subject)
if item.is_a?(RPG::Skill)
add_text(tsub + Vocab.get_message1(item))
tmes2 = Vocab.get_message2(item)
unless tmes2.empty?
wait
add_text(tmes2)
end
else
add_text(sprintf(Vocab::UseItem, tsub, Vocab.get_item_text(item)))
end
end
end
## Scene Title changes + new window
class Window_LanguageCommand < Window_Command
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0)
update_placement
self.openness = 0
open
end
#--------------------------------------------------------------------------
# * Get Window Width
#--------------------------------------------------------------------------
def window_width
return 160
end
#--------------------------------------------------------------------------
# * Update Window Position
#--------------------------------------------------------------------------
def update_placement
self.x = (Graphics.width - width) / 2
self.y = (Graphics.height * 1.6 - height) / 2
end
#--------------------------------------------------------------------------
# * Create Command List
#--------------------------------------------------------------------------
def make_command_list
add_command(Vocab::LDT_LANG[0], :lang1)
add_command(Vocab::LDT_LANG[1], :lang2)
end
#--------------------------------------------------------------------------
# * Get Activation State of Continue
#--------------------------------------------------------------------------
def continue_enabled
DataManager.save_file_exists?
end
end
class Scene_Title < Scene_Base
def start
super
SceneManager.clear
Graphics.freeze
create_background
create_foreground
create_command_window
create_language_window
unless($ldt_lang_selected)
@command_window.visible = false
@command_window.active = false
else
@language_window.visible = false
@language_window.active = false
end
play_title_music
end

def create_language_window
@language_window = Window_LanguageCommand.new
@language_window.set_handler(:lang1, method(:command_lang1))
@language_window.set_handler(:lang2, method(:command_lang2))
@language_window.visible = true
@language_window.active = true
end

def command_lang1()
$game_switches[Vocab::LDT_SWITCH] = false
language_selected()
end

def command_lang2()
$game_switches[Vocab::LDT_SWITCH] = true
language_selected()
end

def language_selected()
$ldt_lang_selected = true
@language_window.visible = false
@language_window.active = false
Vocab.change_vocab()
create_command_window
end

alias ldt_create_command_window create_command_window
def create_command_window
ldt_create_command_window
@command_window.set_handler(:cancel, method(:command_cancel))
end

def command_cancel
@command_window.visible = false
@command_window.active = false
@language_window.visible = true
@language_window.active = true
end
end

class Game_Enemy < Game_Battler
alias ldt_initialize initialize
def initialize(index, enemy_id)
ldt_initialize(index, enemy_id)
@original_name = Vocab.get_subject(enemy)
end
end
module DataManager
class <<self; alias ldt_vocab_load_game load_game end
def self.load_game(index)
tlang = $game_switches[Vocab::LDT_SWITCH]
treturn = ldt_vocab_load_game(index)
$game_switches[Vocab::LDT_SWITCH] = tlang
Vocab.change_vocab()
return treturn
end

class <<self; alias ldt_vocab_new_game setup_new_game end
def self.setup_new_game
tlang = $game_switches[Vocab::LDT_SWITCH]
treturn = ldt_vocab_new_game
$game_switches[Vocab::LDT_SWITCH] = tlang
Vocab.change_vocab()
return treturn
end
end

Ken der Kot
01.08.2018, 23:18
Funktioniert tadellos vielen Dank!!

Linkey
01.08.2018, 23:24
Da wird sicherlich noch einiges in Zukunft kommen. Hab wie gesagt keine Zeit das alles zu ermitteln, aber so Dinge wie Gegner hatte ich schon auf dem Schirm. Auch Status ("Wurde vergiftet") usw. wird sicherlich noch ein Thema werden :D

Ken der Kot
01.08.2018, 23:54
:D :D ich halt dich auf dem Laufenden

Ken der Kot
03.08.2018, 18:47
Hallo Linkey, mir ist aufgefallen, daß Itembeschreibungen noch nicht zweisprachig möglich sind. Also die Beschreibungen oben, die man im KS sieht, wenn man auf den Reiter Items geht. Kannst du das noch machen? Und geht es auch, daß ich dort (und bei LDT_SKILL_MES2) auch Icons anzeigen kann?

Linkey
03.08.2018, 21:07
Können denn ohne mein Script Icons angezeigt werden? Wenn ich das richtig im Kopf habe greife ich ja nur in den Text ein, den ich für die Ausgabe weiter gebe, ohne die Ausgaben-Funktion umzuschreiben.
Falls es im Standard nicht möglich ist, müsste ich da den Battlelog anpassen - dazu müsste ich den Maker öffnen, den kenne ich nicht auswendig. => wenn ich zwischendurch mal Zeit und Lust habe, längere Zeit am PC/RPGMaker zu verbringen, schau ich mir das an.

Die Itembeschreibungen trag ich noch nach, wenn ich mal Luft zwischendurch hab.

Ken der Kot
03.08.2018, 21:33
Ja, die Icons sind auch nicht so wichtig, lass das einfach sein, wenn es zu viel Arbeit wäre oder du keine Zeit dafür finden würdest.

Itembeschreibungen sind da schon wichtiger xD

Linkey
04.08.2018, 10:31
Unter LDT_ITEM folgenden Code hinzufügen:


LDT_ITEM_DESC = {
1=>["Heilt 500 HP.","Restores 500 HP."],
2=>["",""],
4=>["",""]
}

Hier kannst du pro Item die Beschreibung in beiden Sprachen pflegen.

Ab Zeile "def self.get_subject(subject)" alles mit folgendem Code ersetzen:


def self.get_subject(subject)
if(subject.is_a?(Game_Enemy))
if(LDT_ENEMY.has_key?(subject.enemy_id))
return LDT_ENEMY[subject.enemy_id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return subject.name
end
elsif(subject.is_a?(RPG::Enemy))
if(LDT_ENEMY.has_key?(subject.id))
return LDT_ENEMY[subject.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return subject.name
end
else
return subject.name
end
end

def self.get_item_desc(item)
if(LDT_ITEM_DESC.has_key?(item.id))
return LDT_ITEM_DESC[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.description
end
end
end

class Window_Base
def draw_item_name(item, x, y, enabled = true, width = 172)
return unless item
draw_icon(item.icon_index, x, y, enabled)
change_color(normal_color, enabled)
draw_text(x + 24, y, width, line_height, Vocab.get_item_text(item))
end
end
class Window_Help < Window_Base
def set_item(item)
set_text(item ? Vocab.get_item_desc(item) : "")
end
end
class Window_BattleLog
def display_use_item(subject, item)
tsub = Vocab.get_subject(subject)
if item.is_a?(RPG::Skill)
add_text(tsub + Vocab.get_message1(item))
tmes2 = Vocab.get_message2(item)
unless tmes2.empty?
wait
add_text(tmes2)
end
else
add_text(sprintf(Vocab::UseItem, tsub, Vocab.get_item_text(item)))
end
end
end
## Scene Title changes + new window
class Window_LanguageCommand < Window_Command
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0)
update_placement
self.openness = 0
open
end
#--------------------------------------------------------------------------
# * Get Window Width
#--------------------------------------------------------------------------
def window_width
return 160
end
#--------------------------------------------------------------------------
# * Update Window Position
#--------------------------------------------------------------------------
def update_placement
self.x = (Graphics.width - width) / 2
self.y = (Graphics.height * 1.6 - height) / 2
end
#--------------------------------------------------------------------------
# * Create Command List
#--------------------------------------------------------------------------
def make_command_list
add_command(Vocab::LDT_LANG[0], :lang1)
add_command(Vocab::LDT_LANG[1], :lang2)
end
#--------------------------------------------------------------------------
# * Get Activation State of Continue
#--------------------------------------------------------------------------
def continue_enabled
DataManager.save_file_exists?
end
end
class Scene_Title < Scene_Base
def start
super
SceneManager.clear
Graphics.freeze
create_background
create_foreground
create_command_window
create_language_window
unless($ldt_lang_selected)
@command_window.visible = false
@command_window.active = false
else
@language_window.visible = false
@language_window.active = false
end
play_title_music
end

def create_language_window
@language_window = Window_LanguageCommand.new
@language_window.set_handler(:lang1, method(:command_lang1))
@language_window.set_handler(:lang2, method(:command_lang2))
@language_window.visible = true
@language_window.active = true
end

def command_lang1()
$game_switches[Vocab::LDT_SWITCH] = false
language_selected()
end

def command_lang2()
$game_switches[Vocab::LDT_SWITCH] = true
language_selected()
end

def language_selected()
$ldt_lang_selected = true
@language_window.visible = false
@language_window.active = false
Vocab.change_vocab()
create_command_window
end

alias ldt_create_command_window create_command_window
def create_command_window
ldt_create_command_window
@command_window.set_handler(:cancel, method(:command_cancel))
end

def command_cancel
@command_window.visible = false
@command_window.active = false
@language_window.visible = true
@language_window.active = true
end
end

class Game_Enemy < Game_Battler
alias ldt_initialize initialize
def initialize(index, enemy_id)
ldt_initialize(index, enemy_id)
@original_name = Vocab.get_subject(enemy)
end
end
module DataManager
class <<self; alias ldt_vocab_load_game load_game end
def self.load_game(index)
tlang = $game_switches[Vocab::LDT_SWITCH]
treturn = ldt_vocab_load_game(index)
$game_switches[Vocab::LDT_SWITCH] = tlang
Vocab.change_vocab()
return treturn
end

class <<self; alias ldt_vocab_new_game setup_new_game end
def self.setup_new_game
tlang = $game_switches[Vocab::LDT_SWITCH]
treturn = ldt_vocab_new_game
$game_switches[Vocab::LDT_SWITCH] = tlang
Vocab.change_vocab()
return treturn
end
end

Ken der Kot
04.08.2018, 10:47
Danke, eben getestet und es tut. Schade daß man Leuten hier keine positive Bewertung geben kann :( :( :(

Ken der Kot
07.08.2018, 13:09
Hmm, es scheint keine Rolle zu spielen, was ich im Skript für Special reinschreibe. Es zeigt mir "Special" an (aus der Database).

Also es geht um die beiden Skilltypen Special und Magic.

Linkey
07.08.2018, 19:20
Der Maker ist mal wieder ganz super aufgebaut. Anstatt über das Vocab-Modul zu gehen, werden die Skilltypen direkt aus der DB gelesen.

Ganz unten fügst du folgendes ein:


class Window_ActorCommand < Window_Command
def add_skill_commands
@actor.added_skill_types.sort.each do |stype_id|
name = Vocab.get_skilltype(stype_id)
add_command(name, :skill, true, stype_id)
end
end
end
class Window_SkillCommand < Window_Command
def make_command_list
return unless @actor
@actor.added_skill_types.sort.each do |stype_id|
name = Vocab.get_skilltype(stype_id)
add_command(name, :skill, true, stype_id)
end
end
end


Zwischen "def self.get_item_desc(item)" und "class Window_Base" fügst du das rote ein:


def self.get_item_desc(item)
if(LDT_ITEM_DESC.has_key?(item.id))
return LDT_ITEM_DESC[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.description
end
end

def self.get_skilltype(skid)
if(LDT_SKILLTYPE.has_key?(skid))
return LDT_SKILLTYPE[skid][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return $data_system.skill_types[skid]
end
end
end

class Window_Base


Unter "LDT_ITEM_DESC = { ..........." fügst du folgendes ein:


# Skilltype ID => [Language switch off][language switch on]
LDT_SKILLTYPE = {
1=>["Technik","Special"],
2=>["Magie","Magic"],
}

Ken der Kot
07.08.2018, 20:10
Funktioniert Astrein, tausend Dank!!!

Ken der Kot
09.08.2018, 09:16
Wird es noch gehen, daß ich Icons in Skilltexte einfügen kann?

Ken der Iconskilltextkot

Linkey
09.08.2018, 10:57
Können denn ohne mein Script Icons angezeigt werden? Wenn ich das richtig im Kopf habe greife ich ja nur in den Text ein, den ich für die Ausgabe weiter gebe, ohne die Ausgaben-Funktion umzuschreiben.
Falls es im Standard nicht möglich ist, müsste ich da den Battlelog anpassen - dazu müsste ich den Maker öffnen, den kenne ich nicht auswendig. => wenn ich zwischendurch mal Zeit und Lust habe, längere Zeit am PC/RPGMaker zu verbringen, schau ich mir das an.

Die Itembeschreibungen trag ich noch nach, wenn ich mal Luft zwischendurch hab.


Ja, die Icons sind auch nicht so wichtig, lass das einfach sein, wenn es zu viel Arbeit wäre oder du keine Zeit dafür finden würdest.

Itembeschreibungen sind da schon wichtiger xD

Noch keine Zeit dazu gefunden. Wird vor dem Wochenende auch auf keinen Fall etwas.

Ken der Kot
09.08.2018, 11:17
Wollte nur wissen, ob du es noch vorhast zu ergänzen. :)

Ja, das ist vollkommen i.o.

Aber ich sehe gerade: Die Skill Descriptions sind erstmal wichtiger. Da kann ich alles erklären, dann brauche ich wohl auch keine Icons.

Linkey
10.08.2018, 20:18
Unter "LDT_SKILL_MES2" folgendes einfügen:


LDT_SKILL_DESC = {
1=>["",""],
2=>["",""],
4=>["Trifft den Gegner doppelt.","Hits the Enemy two times!"]
}


Die Methode "def self.get_item_desc(item)" mit folgender ersetzen:


def self.get_item_desc(item)
if(item.is_a?(RPG::Item))
if(LDT_ITEM_DESC.has_key?(item.id))
return LDT_ITEM_DESC[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.description
end
elsif(item.is_a?(RPG::Skill))
if(LDT_SKILL_DESC.has_key?(item.id))
return LDT_SKILL_DESC[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
else
return item.description
end
else
return item.description
end
end

Ken der Kot
23.08.2018, 19:32
Hab eine Frage: mit %s kann ich doch den Namen anzeigen lassen. Wieso funktioniert das bei SKILL_MES2 aber nicht?

Edit: Ich glaub, ich habs gefunden.

tmes2 = tsub + Vocab.get_message2(item)

Edit2:

Argh, jetzt machts das für alle Message 2. Wollt es doch so machen, daß ich die Wahl hab, ob der Name drin steht oder nicht :(

Edit3:

Ne, passt alles. Kann mich damit arrangieren. Ist gar nicht so schlecht.

Ken der Kot
25.08.2018, 15:43
Bräuchte noch den Teil "Actor revives" (Actor steht wieder auf) als Übersetzung.


Auch Status ("Wurde vergiftet") usw. wird sicherlich noch ein Thema werden

Und wie recht du hattest :D ab jetzt brauch ich das nämlich auch xD

Linkey
25.08.2018, 17:19
Unter LDT_SKILLTYPE usw.:


# State ID => [[State Spieler, State Gegner, State anhaltend, State zuende],
# [State Player, State Enemy, State continues, State ends]]
LDT_STATEMES = {
7=>[[" ist gelähmt!"," ist gelähmt!","k ann sich nicht bewegen!"," kann sich wieder bewegen!"],
[" is paralyzed!"," is paralyzed!"," cannot move!"," isn't paralyzed anymore!"]],
8=>[["t1","t2","t3","t4"],
["t1","t2","t3","t4"]]
}

Für jeden State hast du 4 Messages: Text wenn der Spieler ihn erhält, Text wenn der Gegner ihn erhält, Text wenn der Status anhält, Text wenn der Status endet (also die 4, die du in der Datenbank auch siehst)

Dann noch das rotmarkierte hinzufügen:


# Fehler-Meldungen
Vocab::PlayerPosError.replace !$game_switches[LDT_SWITCH] ? "Spieler-Startpoistion wurde nicht gesetzt" : "Spieler-Startpoistion wurde nicht gesetzt"
Vocab::EventOverflow.replace !$game_switches[LDT_SWITCH] ? "Zuviele gleichzeitige Aufrufe Gemeinsamer Events" : "Zuviele gleichzeitige Aufrufe Gemeinsamer Events"
change_state_mes()
end

def self.change_state_mes()
$data_states.each do |st|
if(st)
if(LDT_STATEMES.has_key?(st.id))
st.message1 = LDT_STATEMES[st.id][$game_switches[LDT_SWITCH] ? 1 : 0][0]
st.message2 = LDT_STATEMES[st.id][$game_switches[LDT_SWITCH] ? 1 : 0][1]
st.message3 = LDT_STATEMES[st.id][$game_switches[LDT_SWITCH] ? 1 : 0][2]
st.message4 = LDT_STATEMES[st.id][$game_switches[LDT_SWITCH] ? 1 : 0][3]
end
end
end
end

Ken der Kot
25.08.2018, 17:51
Danke, es funktioniert gut. Nun muss ich nur noch meine Daten einpflegen. Danke. :)

Das mit dem Wiederbeleben übersetzen ginge sicher auch, oder?

Linkey
25.08.2018, 17:55
Ist doch damit erledigt oder? Wiederbeleben sollte die Message 4 vom Status "Tod" sein :)

Ken der Kot
25.08.2018, 18:00
Richtig, my bad ^^