Problem mit Sprache

  • #1, by darkconsulSunday, 07. April, 18:38 3 months ago
    Nach dem Spielbeginn erzeuge ich einen Autosave-Spielstand, um Wenn der User auf  "Neues Spiel" klickt, an dem Punkt wieder anzufagen. Das klappt relativ gut.
    Dummerweise aber sobald man die Sprache ändert auf EN udn danach auf "New Game" klickt, ist das Spiel in DE statt EN. (es lädt anscheinend auf die Sprache)

    Sprachbasierte Autosaves gehen wohl nicht? Wie löst ihr das Problem?

    Newbie

    35 Posts


  • #2, by sebastianSunday, 07. April, 23:42 3 months ago
    Nach dem Spielbeginn erzeuge ich einen Autosave-Spielstand, um Wenn der User auf  "Neues Spiel" klickt, an dem Punkt wieder anzufagen. Das klappt relativ gut.
    Dummerweise aber sobald man die Sprache ändert auf EN udn danach auf "New Game" klickt, ist das Spiel in DE statt EN. (es lädt anscheinend auf die Sprache)

    Sprachbasierte Autosaves gehen wohl nicht? Wie löst ihr das Problem?


    du musst dir die eingestellten EInstellungen zum einen in eine config-Datei schreiben (siehe Wiki für ein Beispielscript) und zudem nach erfolgreichen Laden die config-Datei wieder einlesen, damit die Einstellungen auch aktuell sind.


    function onEngineEvent(event, path) 
     if event == "LoadingSavegameSuccess" then 
      print("successfully loaded savestate from: "..path)
        read_config_ini() --run function to read you config file again.
     end 
    end 
    registerEventHandler("engineEvent", "onEngineEvent")
    1
    2
    3
    4
    5
    6
    7

    Thread Captain

    2315 Posts

  • #3, by darkconsulMonday, 08. April, 00:20 3 months ago
    Das mit dem Wiedereinlesen der Config nach dem Laden wird es wohl sein, vielen Dank! 

    Newbie

    35 Posts

  • #4, by darkconsulMonday, 08. April, 18:40 3 months ago
    Total seltsam, auch wenn ich die config neu einlese oder gleich einlese wie im hauptmenu, nach dem laden des spielstandes wechselt es die Sprache nicht, (im menu allerdings klappts mit gleicher config) :-(

    Newbie

    35 Posts

  • #5, by MachtnixTuesday, 09. April, 00:10 3 months ago
    Was passiert, wenn du nach dem Anklicken der neuen Sprache erneut ein Autosave abspeicherst? Dann wird die alte Datei zwar überschrieben, aber sie unterscheiden sich ja nur in der Sprache, ansonsten nicht.
    Also: Autosave erst NACH der Sprachauswahl.

    Dass man die Sprache während des Spiels wechseln kann und sich die Speicherstände auch mitändern, bieten nur wenige Spiele an. In den meisten Fällen bleibt man in der anfangs ausgewählten Sprache.

    Ich habe nie mit zwei Sprachen gearbeitet, aber kann man nicht zwei Savegames anlegen (I: deutsch und II: englisch), und diese dann je nach gewählter Sprache gezielt einlesen?

    Oder habe ich da was falsch verstanden?

    Key Killer

    959 Posts

  • #6, by darkconsulTuesday, 09. April, 21:55 3 months ago
    Also wenn ich einen EN-Spielstand lade, habe ich das problem ja auch.

    Ich habe nun mal eine Taste mit sprachumschaltung auf DE belegt, nach laden des EN-Spielstandes gehts mit DE dann.

    reloaden der config hat keinen effekt.



    Newbie

    35 Posts

  • #7, by darkconsulTuesday, 09. April, 22:10 3 months ago
    ich vermute es liegt daran:

    22:10:20.660:Failed to run string in Lua:
    22:10:20.660:String content: read_ini();

    scheint einfach mit der "read_ini()" funktion ein problem zu haben. beim neustarten lädt es ja die config.ini so oder so desshalb klappte das immer, nach dem speichern, nun da ich aber gezielt laden will klemmts:
    -- * function used to read data from the config.ini file * --

    function read_ini()

     local fr = io.open(localAppDir .. fn, "r") -- read from config.ini

     -- * --

     if fr then -- if file exists then...

      lines = fr:read() -- read currently selected line

      print("-- * --")

      print(fn .. " exists")

      print("retrieving settings from " .. fn)

      for lines in io.lines(localAppDir .. fn) do

       line = string.lower(lines) -- convert all line content to lowercase

       if not line:find("#") then -- skip all lines containing "#"

        if line:find("file =") then df = string.sub(lines, 8); print("file is currently linked to " .. df) end

        -- * window mode * --

        if line == "fullscreen = no" then wm:setValue(VConditionValue, false); print("window mode is currently set to Windowed") end

        if line == "fullscreen = yes" then wm:setValue(VConditionValue, true); print("window mode is currently set to Fullscreen") end

        -- * subtitles * --

        if line == "subtitles = no" then subs:setValue(VConditionValue, false); print("subtitles are currently set to Off") end

        if line == "subtitles = yes" then subs:setValue(VConditionValue, true); print("subtitles are currently set to On") end

     -- * language * --

        for i = 1, table.maxn(t_lang) do if line == ("language = " .. string.lower( t_lang:getName() )) then game:setValue(VGameStandardLanguage, t_lang); print("language is currently set to " .. game:getLink(VGameStandardLanguage):getName()) end end

           -- * sound levels * --

        if line:find("musicvolume =") then print("music volume = " .. getVolume(eMusicVolume)) end

        if line:find("soundvolume =") then print("sound volume = " .. getVolume(eSoundVolume)) end

        if line:find("speechvolume =") then print("speech volume = " .. getVolume(eSpeechVolume)) end

        if line:find("movievolume =") then print("movie volume = " .. getVolume(eMovieVolume)) end

        if line:find("globalvolume =") then print("global volume = " .. getVolume(eGlobalVolume)) end

       end

      end

      fr:close()

      print("successfully retrieved settings from " .. fn)

     else

      print(fn .. " does not exist")

     end

    end

    Newbie

    35 Posts

  • #8, by darkconsulTuesday, 09. April, 22:48 3 months ago
    Problem selber gelöst mit der neuesten config.ini.


    klappt nun wunderbar alles wie es soll.

    Newbie

    35 Posts

Write post