Resolution settings in config.ini

  • #10, by qamilloWednesday, 13. July 2016, 22:26 8 years ago

    Newbie

    21 Posts


  • #11, by sebastianWednesday, 13. July 2016, 23:02 8 years ago
    When you are writing the resolution, you are adding an "n"
    Behind it. When feading from it, it cant find the string from the table because of the "n" :

     
    fw:write("# Resolution = {Auto|Desktop|Custom}n")
     fw:write("# Auto: wide-screen support is activated if a wide-screen display is detectedn")
     fw:write("# Desktop: current desktop resolution is used when game is started in full screen moden")
     fw:write("# Custom: enter a custom value eg: Resolution = 1920x1080n")
     fw:write("Resolution = " .. res:getStr(VValueString) .. "n")
    

    Thread Captain

    2346 Posts

  • #12, by afrlmeWednesday, 13. July 2016, 23:08 8 years ago
    script in codesend is invalid. The \ have been stripped before the "n". These let it know to go to the next line.

    Did you try sending me a PM or something? VS website has been a bit dodgy for the past couple of months. I think Thomas & co. have been messing around with it.

    I don't remember what the issue was with Pins config.ini script as it's too long ago for me to remember, but it was something really simple like an incorrect action or naming issue or something missing.

    You really should strip out all the lines for options you don't plan on including.

    Imperator

    7278 Posts

  • #13, by sebastianWednesday, 13. July 2016, 23:15 8 years ago
    Oh, i just see it that it seems a bit messed up with the whole code on the webpage...

    Thread Captain

    2346 Posts

  • #14, by qamilloWednesday, 13. July 2016, 23:50 8 years ago
    @ Sebastian
    What the heck with codesend... Maybe I'll paste it below and on the other site: http://wklejaj.pl/R3kUtY2biQXX (sorry, it's in Polish, but with colored syntax wink)

    --[[
    Read/Write Config.ini [v2] (02/03/2014)
    Written by AFRLme [Lee Clarke]
    -- + --
    alternatingfrequencies@hotmail.com | skype @ AFRLme
    -- + --
    This script is donation optional. In game credit is non-negotiable.
    You are free to: ¹ use it in your game(s). ² modify the script.
    Do not remove - or edit - this comment block.
    --]]
     
    -- * local variables * --
    local fn = "config.ini" -- store filename
    -- * --
    local wm = getObject("Conditions[cfg_wm]") -- window mode [fullscreen/windowed]
    local res = getObject("Values[cfg_res]") -- resolution [fullscreen mode only]
    local subs = getObject("Conditions[cfg_subs]") -- subtitles [on/off]
    local fx = getObject("Values[cfg_fx]") -- fx level [low/medium/high] (controls which animations will be displayed)
    local cbm = getObject("Conditions[cfg_cbm]") -- color blind mode [on/off]
     
    -- * fallback * --
    local lglvl = "Error" -- default value for log level
    local df = "TGVG_prototype.vis" -- filename should reflect exported .vis file
    game:setValue(VGameSpeechLanguage, game:getLink(VGameStandardLanguage)) -- default speech language to stndard language
     
    -- * tables * --
    local t_res = {"Auto","800x600","1024x768","1280x720","1680x1050","1920x1080"} -- add available resolutions here
    local t_lang = game:getLinks(VGameLanguages) -- store all available languages into a table
     
    -- * 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
        -- * resolution * --
        for i = 1, table.maxn(t_res) do if line == ("resolution = " .. string.lower( t_res[i] )) then res:setValue(VValueString, t_res[i]); res:setValue(VValueInt, i); print("resolution is currently set to " .. res:getStr(VValueString)) end 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
        -- * text language * --
        for i = 1, table.maxn(t_lang) do if line == ("textlanguage = " .. string.lower( t_lang[i]:getName() )) then game:setValue(VGameStandardLanguage, t_lang[i]); print("text language is currently set to " .. game:getLink(VGameStandardLanguage):getName()) end end
        -- * speech language * --
        for i = 1, table.maxn(t_lang) do if line == ("speechlanguage = " .. string.lower( t_lang[i]:getName() )) then game:setValue(VGameSpeechLanguage, t_lang[i]); print("spoken language is currently set to " .. game:getLink(VGameSpeechLanguage):getName()) end end
        -- * fx quality * --
        if line == "fxquality = low" then fx:setValue(VValueString, "Low"); fx:setValue(VValueInt, 1); print("fx quality is currently set to " .. fx:getStr(VValueString)) end
        if line == "fxquality = medium" then fx:setValue(VValueString, "Medium"); fx:setValue(VValueInt, 2); print("fx quality is currently set to " .. fx:getStr(VValueString)) end
        if line == "fxquality = high" then fx:setValue(VValueString, "High"); fx:setValue(VValueInt, 3); print("fx quality is currently set to " .. fx:getStr(VValueString)) end
        -- * color blind mode * ---
        if line == "colorblindmode = no" then cbm:setValue(VConditionValue, false); print("color blind mode is currently set to Off") end
        if line == "colorblindmode = yes" then cbm:setValue(VConditionValue, true); print("color blind mode is currently set to On") end
        -- * log level * --
        if line == "loglevel = error" then lglvl = "Error"; print("log level is currently set to Error") end
        if line == "loglevel = warning" then lglvl = "Warning"; print("log level is currently set to Warning") end
        if line == "loglevel = info" then lglvl = "Info"; print("log level is currently set to Info") 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
     
    -- * function used to write data to the config.ini file * --
    function write_ini()
     local fw = io.open(localAppDir .. fn, "w") -- write to config.ini
     print("-- * --")
     print("writing new settings to " .. fn)
     -- * data file * --
     fw:write("File = " .. df .. "\n")
     -- * window mode * --
     fw:write("#\n")
     fw:write("# Fullscreen = {Yes|No}\n")
     fw:write("# Yes: starts the game in fullscreen\n")
     fw:write("# No: starts the game in a window\n")
     fw:write("Fullscreen = ")
     if wm:getBool(VConditionValue) then fw:write("Yes\n") else fw:write("No\n") end
     -- * resolution * --
     fw:write("#\n")
     fw:write("# Resolution = {Auto|Desktop|Custom}\n")
     fw:write("# Auto: wide-screen support is activated if a wide-screen display is detected\n")
     fw:write("# Desktop: current desktop resolution is used when game is started in full screen mode\n")
     fw:write("# Custom: enter a custom value eg: Resolution = 1920x1080\n")
     fw:write("Resolution = " .. res:getStr(VValueString) .. "\n")
     -- * subtitles * --
     fw:write("#\n")
     fw:write("# Subtitles = {Yes|No}\n")
     fw:write("# Yes: show subtitles during the game, cut scenes & videos\n")
     fw:write("# No: do not show subtitles during the game, cut scenes or videos\n")
     fw:write("Subtitles = ")
     if subs:getBool(VConditionValue) then fw:write("Yes\n") else fw:write("No\n") end
     -- * text language * --
     fw:write("#\n")
     fw:write("# TextLanguage = {English|French|German|Spanish}\n")
     fw:write("# this will display subtitles in the specified language\n")
     fw:write("TextLanguage = " .. game:getLink(VGameStandardLanguage):getName() .. "\n")
     -- * speech language * --
     fw:write("#\n")
     fw:write("# SpeechLanguage = {English|French|German|Spanish}\n")
     fw:write("# this will play speech files linked to the specified language\n")
     fw:write("# if no speech language is provided then the speech language will default to the standard language\n")
     fw:write("SpeechLanguage = " .. game:getLink(VGameSpeechLanguage):getName() .. "\n")
     -- * fx quality * --
     fw:write("#\n")
     fw:write("# FxQuality = {Low|Medium|High}\n")
     fw:write("# allows user to change animation/particle fx modes (for players on lower end machines)\n")
     fw:write("# Low: only show the basic required game animations/particle fx\n")
     fw:write("# Medium: only show certain animations/particle fx &/or animations containing less frames\n")
     fw:write("# High: show all animations, in all their glory\n")
     fw:write("FxQuality = " .. fx:getStr(VValueString) .. "\n")
     -- * color blind mode * --
     fw:write("#\n")
     fw:write("# ColorBlindMode = {Yes|No}\n")
     fw:write("# Yes: enable color blind support (graphic replacement, on screen indicators etc)\n")
     fw:write("# No: show the game as it's meant to be played\n")
     fw:write("ColorBlindMode = ")
     if cbm:getBool(VConditionValue) then fw:write("Yes\n") else fw:write("No\n") end
     -- * log level * --
     fw:write("#\n")
     fw:write("# LogLevel = {Info|Warning|Error}\n")
     fw:write("LogLevel = " .. lglvl .. "\n")
     -- * volume settings * --
     fw:write("#\n")
     fw:write("# MusicVolume|SoundVolume|SpeechVolume|MovieVolume|GlobalVolume = int value {0-100}\n")
     fw:write("MusicVolume = " .. getVolume(eMusicVolume) .. "\n")
     fw:write("SoundVolume = " .. getVolume(eSoundVolume) .. "\n")
     fw:write("SpeechVolume = " .. getVolume(eSpeechVolume) .. "\n")
     fw:write("MovieVolume = " .. getVolume(eMovieVolume) .. "\n")
     fw:write("GlobalVolume = " .. getVolume(eGlobalVolume) .. "\n")
     print("new settings successfully written to " .. fn)
     fw:close()
    end
    


    @AFRLme
    I get 404 when I'm trying to check you profile / PM. I'll definitely strip unnecessary code, but I would like to get it working with original first. smile

    Do you guys see anything?

    Newbie

    21 Posts

  • #15, by afrlmeThursday, 14. July 2016, 00:43 8 years ago
    I'm going to guess you haven't actually created the execute a script actions that write the resolution value into the cfg_res value?
    Values["cfg_res"].String = "some value" -- example: "1280x720" or "auto"
    

    You would do something like this in your options menu when toggling between the available resolution sizes...

    if value 'cfg_res' is 3
    execute a script > Values["cfg_res"].String = "640x480"
    set value 'cfg_res' to 1
    end
    if value 'cfg_res' is 2
    execute a script > Values["cfg_res"].String = "1920x1080"
    set value 'cfg_res' to 3
    end if
    if value 'cfg_res' is 1
    execute a script > Values["cfg_res"].String = "1280x720"
    set value 'cfg_res' to 2
    end if


    Why have I done them in reverse order? Because I didn't want VS to accidentally iterate through them all because of us incrementing the values. This way we don't have to bother using else or quit current action action parts to prevent it from running through the entire action sequence.

    Quick note: if fullscreen mode is enabled then you should bypass the cfg_res string value & set the resolution as "auto", so that the engine automatically scales the game up correctly for both widescreen & non-widescreen display surfaces.

    P.S: I can view profiles & messages just fine. It must be affecting random people as another person recently told me they tried to get in touch me with via VS forum / pm too but couldn't & they ended up finding me on indiedb instead. Luckily notifications for messages are linked to my email account as I'm not a very active user of the site.

    Imperator

    7278 Posts

  • #16, by qamilloThursday, 14. July 2016, 15:31 8 years ago
    Oh, I thought, that strings are extracted directly from resolution table using just int values. Now, everything works great. Thanks!

    Newbie

    21 Posts

  • #17, by afrlmeThursday, 14. July 2016, 15:40 8 years ago
    I think I used int values so that I could cycle through the available resolution options easier within the editor as there's no method for querying the string part of a value without resorting to Lua script. I wasn't so heavy into using Lua script for basic tasks back when I wrote the config.ini script.

    Imperator

    7278 Posts