Page 1 of 2 12 LastLast
Results 1 to 10 of 14

Thread: Dedicated Server - server.cfg & LUA Rotate

  1. #1
    WMD Member KAMPFBIBER81's Avatar
    Join Date
    Oct 2011
    Location
    Bern, Switzerland
    Posts
    34
    Platform
    PC

    Dedicated Server - server.cfg & LUA Rotate

    Hi all,

    My dedi is configured with these settings:

    Server.cfg:

    Code:
    "//" : "You can use dummy entries like this to write comments into the config. 'rem' and '#' are also supported as comment entries."
    // But in recent version of the server, standard C++ like one-liner comments are supported as well.
    
    //////////////////////////
    // Basic server options //
    //////////////////////////
    
    // Logging level of the server. Messages of this severity and more important will be logged. Can be any of debug/info/warning/error.
    logLevel : "info"
    
    // Number of gameplay events stored on the server. Oldest ones will be discarded once the game logs more.
    eventsLogSize : 10000
    
    // The server's name, this will appear in server browser (when implemented) and will be also the default name of sessions hosted on the server.
    name : "www.FLANC.ch Saison"
    
    // Authenticate users with Steam to check VAC ban when set to true.
    secure : true
    
    // Password required to create sessions on the server as well as to join the sessions, password set in Create options is ignored on DS.
    password : "xXxXxX"
    
    // Maximum size of sessions that can be created on this server.
    // Note that setting this above 16 will allow sessions unjoinable by 32-bit clients to be created on the server.
    // The game also currently does not support sessions larger than 32, even if the server can be configured for up to 64 players.
    maxPlayerCount : 16
    
    // IP address where the server's sockets should be bound. Leave empty for 'all interfaces'.
    bindIP : "xx.xx.xx.xx"
    
    // ports used to communicate with Steam and game, they must all be accessible on the public IP of the server.
    steamPort : 8766
    hostPort : 27015
    queryPort : 27016
    
    // Delay between server ticks in milliseconds, when not hosting and when hosting a game, respectively.
    // Lower values will make the server more responsible and decrease latency by a bit at the expense of higher CPU usage.
    sleepWaiting : 250
    sleepActive : 10
    
    
    // (blacklist and whitelist is intentionally not included in this basic sample config as they can complicate things a bit.)
    
    
    ///////////////////////////
    // HttpApi configuration //
    ///////////////////////////
    
    // This provides http-based API and basic web-based controls using a built-in http server.
    // HttpApi is disabled by default, and if you enable it with everything else left to default it will listen only locally on 127.0.0.1:9000
    
    // Master enable/disable toggle.
    enableHttpApi : false
    
    // Similar to logLevel above but used only for libwebsockets output.
    // Note that all logging still goes through the main filter, so you won't be able to use more verbose logging here than the main level.
    httpApiLogLevel : "warning"
    
    // Interface name or IP where to bind the local http server providing the API and web-based controls.
    // This is the textual name of the interface as assigned by your OS, or IP address of the interface.
    // The default value is "127.0.0.1", change it to an empty string to bind the listen socket to all available interfaces.
    httpApiInterface : "127.0.0.1"
    
    // Port where the local http server listens.
    httpApiPort : 9000
    
    // Map with extra HTTP headers to add to HTTP API responses.
    // The keys are the conditions for adding the headers, the values are the headers to add.
    // There are no conditions supported yet, so just use "*" for a generic wildard for now, that will match everything in the future too.
    httpApiExtraHeaders : {
        "*" : "Access-Control-Allow-Origin: *"
    }
    
    // Http API access level overrides.
    // Each HTTP API endpoint defines its default access level, usually one of "public", "private" or "admin".
    // This map can override these levels to anything else. The keys are wildcard endpoint paths, and the values are the
    // access levels to use. The first path that matches will be used, processing them in the order as written here.
    // The wildcard patterns are case-sensitive and can contain:
    // - '*': matches 0 or more characters
    // - '%': matches 0 or more characters except for forward slash
    // - '?': matches 1 character
    httpApiAccessLevels : {
        // The default is empty, using defaults as defined by the endpoints themselves.
    
        // But you could for example use this to change all access levels to public (not recommended!)
        // "*" : "public"
    
        // Or this to hide the status from public
        // "" : "private"
        // "status" : "private"
    
        // And similar to hide the help and lists from public
        // "api/help" : "private"
        // "api/list*" : "private"
    
        // As you can see from the example above, the paths should be written with no initial or trailing slashes.
    }
    
    // Filtering rules for the access levels.
    // The default access levels are "public", "private" and "admin", but the httpAccessLevels above can define any additional levels.
    // This map then tells the server who has access to which level. It's a map from level names to filtering rules.
    //
    // Filtering rules are then specified as a list of structures, processed in the order as written in the config.
    // Each rule structure contains a type" and then type-specific fields. The supported types are:
    // - "accept": Accept this request, no additional checks.
    // - "reject": Reject this request, no additional checks.
    // - "reject-password": Reject this request and let the client know that a password is required, no additional checks.
    // - "ip-accept": Accept this request if it matches the "ip" mask in CIDR notation (for example, "192.168.1.0/24")
    // - "ip-reject": Reject this request if it matches the "ip" mask in CIDR notation (for example, "192.168.1.0/24")
    // - "user": Accept this request if it authenticates as given "user".
    // - "group" : Accept this request if it authenticates as given "group".
    //
    // User/group authentication is done using the standard HTTP basic access authentication (https://en.wikipedia.org/wiki/Basic_access_authentication).
    httpApiAccessFilters : {
    
        // Public rules. The default is to accept everything.
        "public" : [
            { "type" : "accept" }
        ],
    
        // Private rules. The default is to accept queries from localhost, queries authenticated as users in the "private" group
        // and to reject anything else.
        "private" : [
            { "type" : "ip-accept", "ip" : "127.0.0.1/32" },
            { "type" : "group", "group" : "private" },
            { "type" : "reject-password" }
        ],
    
        // Admin rules. The default is to accept queries from localhost, queries authenticated as users in the "admin" group
        // and to reject anything else.
        "admin" : [
            { "type" : "ip-accept", "ip" : "127.0.0.1/32" },
            { "type" : "group", "group" : "admin" },
            { "type" : "reject-password" }
        ],
    
    }
    
    // User list. Map from user names to passwords, in plain text.
    httpApiUsers : {
        // "stepan" : "foo",
        // "michal" : "bar",
    }
    
    // User groups. Map from group names to lists of users in said groups.
    httpApiGroups : {
        // "private" : [ "stepan", "michal" ],
        // "admin" : [ "stepan" ],
    }
    
    
    //////////////////////////
    // LuaApi configuration //
    //////////////////////////
    
    // Lua API allows the server to be extended by in-server scripting in Lua.
    // The server is running Lua version 5.3, currently with no sandboxing applied to the add-ons. All standard Lua library functions are available.
    
    // WARNING: The LuaApi is not final and the following breaking changes are planned soon:
    // - Rename Lua addon metadata files from *.txt to *.json
    // - Remove default config from the metadata and put it into separate file *_default_config.json
    // - Separate config and persistent data, so that data saved by addons will not pollute the config files, and the config files will retain all comments from the default files.
    
    // Master enable/disable toggle.
    enableLuaApi : true
    
    // Root directory from which the Lua addons are loaded. Relative to current directory if it's not absolute.
    luaAddonRoot: "lua"
    
    // Root directory where the addon configs will be stored if written out by addons. Default configs are defined in the addon base text files.
    luaConfigRoot: "lua_config"
    
    // Root directory where the addon output will be written, once supported. For now the io functions can write anywhere, but this will be limited to this directory in the future.
    luaOutputRoot: "lua_output"
    
    // Names of all Lua addons to load. The addons will be loaded in the specified order. Each addon can list other addons as its dependencies, which attempt to load those first.
    // The server will load addons from directory specified in "luaAddonRoot", loading of each addon will start by loading its config from ADDON_NAME/ADDON_NAME.txt
    luaApiAddons : [
    
        // Core server bootup scripts and helper functions. This will be always loaded first even if not specified here because it's an implicit dependency of all addons.
        "sms_base",
    
        // Automatic race setup rotation.
        "sms_rotate",
    
        // Sends greetings messages to joining members, optionally with race setup info, optionally also whenever returning back to lobby post-race.
        "sms_motd",
    
        // Tracks various stats on the server - server, session and player stats.
        "sms_stats",
    ]
    
    
    ////////////////////////////////
    // Game setup control options //
    ////////////////////////////////
    
    // Set to true to make this server show up in the browser even if it's empty.
    allowEmptyJoin : true
    
    // Set to true to enable API that allows the server to control the game's setup. The host will not be able to control the setup if this is set.
    // Set to true to enable API that allows the server to control the game's setup. The host will not be able to control the setup if this is set.
    // This must be set to "true" for the following attributes to work: ServerControlsTrack, ServerControlsVehicleClass, ServerControlsVehicle
    controlGameSetup : true
    
    // Initial attribute values, see /api/list/attributes/session for the full list.
    // These attributes will be used when joining an empty server via the borwser (if allowEmptyJoin is true) and as the intial attributes for the set_attributes and set_next_attributes APIs (if controlGameSetup is true)
    // The defaults set these values:
    sessionAttributes : {
        // The host player can control track selection if set to 0. Set to 1 to disable track selection in the game.
        "ServerControlsTrack" : 1,
    
        // The host player can change the vehicle class by going through the garage if set to 0. Set to 1 to disallow players changing the class.
        // Flag FORCE_SAME_VEHICLE_CLASS (1024) should be also set for this to make sense, otherwise players are able to choose cars from any class.
        "ServerControlsVehicleClass" : 1,
    
        // Players can change their vehicle if set to 0. Set to 1 to disallow players changing the vehicle.
        // Flag FORCE_IDENTICAL_VEHICLES (2) should be also set for this to make sense.
        "ServerControlsVehicle" : 0,
    
        // Grid size up to 32, all reserved to players, so no AI.
        // Note that 32-bit clients will not be able to join the game if this is larger than 16.
        "GridSize" : 16,
        "MaxPlayers" : 16,
    
        // Just 3 race laps.
        "Practice1Length" : 1440,
        "Practice2Length" : 0,
        "QualifyLength" : 10,
        "WarmupLength" : 5,
        "Race1Length" : 3,
    
        // Race flags - bitfield consisting of many flags, the default is set like this:
        // ALLOW_CUSTOM_VEHICLE_SETUP (8) + FORCE_SAME_VEHICLE_CLASS (1024)
        "Flags" : 1032,
    
        // AI opponent difficulty, from 0 to 100. Applies only on loading if GridSize is larger than MaxPlayers, and the FILL_SESSION_WITH_AI flag is enabled.
        "OpponentDifficulty" : 50,
    
        // Damage
        "DamageType" : 2,
    
        // Tire wear.
        "TireWearType" : 8,
    
        // Fuel usage
        "FuelUsageType" : 0,
    
        // Penalties on.
        "PenaltiesType" : 1,
    
        // Any camera view allowed.
        "AllowedViews" : 0,
    
        // Track Barcelona GP
        "TrackId" : 521933422,
    
        // Vehicle class Formula Renault
        "VehicleClassId" : -1981841276,
    
        // Vehicle Renault Megane (but not forced by default flags) - NOT CONFIGURED
        "VehicleModelId" : 1694837381,
    
        // Starting date and time.
        "DateYear" : 2015,
        "DateMonth" : 7,
        "DateDay" : 6,
        "DateHour" : 11,
        "DateMinute" : 0,
    
        // Standard speed for date and weather progression.
        "DateProgression" : 1,
        "ForecastProgression" : 1,
    
        // Single weather slot set to "Weather_Clear1". See /api/list/enums/weather in HTTP API or globals "lists.enums.weather" or "Weather" in Lua API.
        "WeatherSlots" : 1,
        "WeatherSlot1" : -934211870,
        "WeatherSlot2" : -934211870,
        "WeatherSlot3" : -934211870,
        "WeatherSlot4" : -934211870,
    }
    LUA_rotate:

    https://1drv.ms/u/s!Anmb0U8Yv_f3h8Mh7UaLe3KABybtrQ

    PS: Sorry, Because of the profanity filter, i cannot embed the content of the lua_rotate.

    Problem:
    The lua_rotate plugin is not overwriting the settings defined in the server.cfg. The dedi doesn't create the file sms_rotate_data.json when I restart the instance.

    Question:
    What do I need to change that the LUA Rotate is applied over the server.cfg?

    More Info:
    I've started with a default server.cfg where I only defined things like server name, IP, password, etc. I've enabled controlGameSetup : true and then I've started editing lua_rotate. Everything went well (read: all settings are applied) until I've started to mess around with the rotation part. As soon as I touch the rotation part, the lua_rotate won't be applied.

    Workaround:
    I've defined all settings with the server.cfg but would like to control the settings with the lua_rotate because I can define 2 races with it (not possible with the server.cfg)


    Many thanks in advance for your help.
    Last edited by KAMPFBIBER81; 13-02-2017 at 11:48.
    | Alienware Aurora R6 | CPU: i-7 7700K 4.2 GHz (OC 4.7) | RAM: 32GB 2.667 MHz (OC: XMP1) | GPU: 2x TitanX 12 GB (Pascal) SLI | HDD: 512GB M.2 SSD | 3x Asus 27" VE278Q |
    | Wheel: Fanatec CSW v2 | Pedals: HE Ultimate Pedals | Shifter: Fanatec CSS SQ+H |
    | Audio: Sennheiser PC 363D, 7.1 | OS: Windows 10 Pro (x64) | SimRacing Hardware G-Force LCD | Z1 Dashboard |

  2. #2
    WMD Member KAMPFBIBER81's Avatar
    Join Date
    Oct 2011
    Location
    Bern, Switzerland
    Posts
    34
    Platform
    PC
    BUMP

    Anybody with an idea, why my LUA_rotate config doesn't get applied over the server.cfg?
    | Alienware Aurora R6 | CPU: i-7 7700K 4.2 GHz (OC 4.7) | RAM: 32GB 2.667 MHz (OC: XMP1) | GPU: 2x TitanX 12 GB (Pascal) SLI | HDD: 512GB M.2 SSD | 3x Asus 27" VE278Q |
    | Wheel: Fanatec CSW v2 | Pedals: HE Ultimate Pedals | Shifter: Fanatec CSS SQ+H |
    | Audio: Sennheiser PC 363D, 7.1 | OS: Windows 10 Pro (x64) | SimRacing Hardware G-Force LCD | Z1 Dashboard |

  3. #3
    Alexandru Marian
    Guest
    AFAIK the way it should work is that the stuff in server.cfg is the default setup and what you configure in the sms_rotate LUA addon would overwrite that.

    At first glance you seem to have everything setup correctly. You've set enableLuaApi to true and sms_rotate is in your list of addons.

    What should happen is that when you start the server you should see this in the output window:

    [2017-02-17 15:19:38] INFO: Saving persistent data for addon 'sms_rotate' into 'lua_config\sms_rotate_data.json'

    Now if you go into where the DS is installed (by default it should be something like C:\Program Files (x86)\Steam\steamapps\common\Project CARS Dedicated Server or similar, depending on how you've installed Steam) and look in the 'lua_config' folder, you should see 2 files of interest:

    sms_rotate_config.json
    sms_rotate_data.json

    The config file is normally a copy of the sms_rotate_default_config.json file from the lua\sms_rotate folder. You can edit this file to change the configuration of the addon.

    The data file is just some internal addon file where it keeps track of some of its variables and you shouldn't touch generally.

    Could you check if these files have been created for you?
    The following user likes this Post: KAMPFBIBER81


  4. #4
    WMD Member KAMPFBIBER81's Avatar
    Join Date
    Oct 2011
    Location
    Bern, Switzerland
    Posts
    34
    Platform
    PC
    Many thanks for the reply and support.

    As I use a hosted DS, I cannot see the output windows but I will ask my hoster if he can have a look at it.

    I do not have the sms_rotate_data.json file in the 'lua_config' folder, even if I stop and start the server.

    But I will try to fiddle with the file in the lua\sms_rotate folder and let you know the results.
    | Alienware Aurora R6 | CPU: i-7 7700K 4.2 GHz (OC 4.7) | RAM: 32GB 2.667 MHz (OC: XMP1) | GPU: 2x TitanX 12 GB (Pascal) SLI | HDD: 512GB M.2 SSD | 3x Asus 27" VE278Q |
    | Wheel: Fanatec CSW v2 | Pedals: HE Ultimate Pedals | Shifter: Fanatec CSS SQ+H |
    | Audio: Sennheiser PC 363D, 7.1 | OS: Windows 10 Pro (x64) | SimRacing Hardware G-Force LCD | Z1 Dashboard |

  5. #5
    Alexandru Marian
    Guest
    Maybe there is something wrong with the way it is hosted and it can't write to the lua_config folder? That might cause the addon to stop working.

  6. #6
    WMD Member KAMPFBIBER81's Avatar
    Join Date
    Oct 2011
    Location
    Bern, Switzerland
    Posts
    34
    Platform
    PC
    The lua_config worked until I startet to edit the rotation area of the config file (All default settings where applied successfully). Then it stopped beeing applied to the server config.

    You can find a link to my lua_config file in the first post.

    Are there special requirements to define a rotation session? I mean, are there mandatory settings like practice length that one needs to define?
    | Alienware Aurora R6 | CPU: i-7 7700K 4.2 GHz (OC 4.7) | RAM: 32GB 2.667 MHz (OC: XMP1) | GPU: 2x TitanX 12 GB (Pascal) SLI | HDD: 512GB M.2 SSD | 3x Asus 27" VE278Q |
    | Wheel: Fanatec CSW v2 | Pedals: HE Ultimate Pedals | Shifter: Fanatec CSS SQ+H |
    | Audio: Sennheiser PC 363D, 7.1 | OS: Windows 10 Pro (x64) | SimRacing Hardware G-Force LCD | Z1 Dashboard |

  7. #7
    Alexandru Marian
    Guest
    Just to double-check, you're editing the file in lua_config\sms_rotate_config.json ?

    There shouldn't be any specific requirements. Normally what you'd do is to set up the defaults in the "default" object in the JSON file. Then for each item in the "rotation" array you can override those defaults. It looks like you did that in your file.

    The whole concept is explained in greater detail in the UserGuide.pdf file found within the root folder of the Dedicated Server installation (C:\Program Files (x86)\Steam\steamapps\common\Project CARS Dedicated Server or similar, depending on how you've installed Steam) - look for the "Server Addons" -> "Session Setup Control and Setup Rotations: sms_rotate" section of the document.

  8. #8
    WMD Member KAMPFBIBER81's Avatar
    Join Date
    Oct 2011
    Location
    Bern, Switzerland
    Posts
    34
    Platform
    PC
    Quote Originally Posted by Alexandru Marian View Post
    Just to double-check, you're editing the file in lua_config\sms_rotate_config.json ?
    Yes!

    so, I've copied the whole rotation part from default_config to the actual config file and now the it works again.

    Now I will test step by step which settings screw up my config.

    Many thanks for your help!
    | Alienware Aurora R6 | CPU: i-7 7700K 4.2 GHz (OC 4.7) | RAM: 32GB 2.667 MHz (OC: XMP1) | GPU: 2x TitanX 12 GB (Pascal) SLI | HDD: 512GB M.2 SSD | 3x Asus 27" VE278Q |
    | Wheel: Fanatec CSW v2 | Pedals: HE Ultimate Pedals | Shifter: Fanatec CSS SQ+H |
    | Audio: Sennheiser PC 363D, 7.1 | OS: Windows 10 Pro (x64) | SimRacing Hardware G-Force LCD | Z1 Dashboard |

  9. #9
    WMD Member KAMPFBIBER81's Avatar
    Join Date
    Oct 2011
    Location
    Bern, Switzerland
    Posts
    34
    Platform
    PC
    So, I think I found the problem. As soon as you apply VehicleClassId : Formula Renault, (with the ", the forum doesn't allow them), or the value for the http api (-1981841276), the lua_config won't be applied and the DS falls back to the server.cfg.

    I will test what happes when I apply the vehicle and not the class, but I'm running out of time for today.
    Last edited by KAMPFBIBER81; 17-02-2017 at 17:04.
    | Alienware Aurora R6 | CPU: i-7 7700K 4.2 GHz (OC 4.7) | RAM: 32GB 2.667 MHz (OC: XMP1) | GPU: 2x TitanX 12 GB (Pascal) SLI | HDD: 512GB M.2 SSD | 3x Asus 27" VE278Q |
    | Wheel: Fanatec CSW v2 | Pedals: HE Ultimate Pedals | Shifter: Fanatec CSS SQ+H |
    | Audio: Sennheiser PC 363D, 7.1 | OS: Windows 10 Pro (x64) | SimRacing Hardware G-Force LCD | Z1 Dashboard |

  10. #10
    Alexandru Marian
    Guest
    This might be a long shot but it would be good to double-check that you are running the latest version of the Dedicated Server executable (build version 91, protocol version 1.0.1.37).

    Formula Renault was added in a patch so if by any chance you are running an older build it would not be present in the internal class list.
    The following user likes this Post: KAMPFBIBER81


Similar Threads

  1. Dedicated Server API
    By Stepan Vondrak in forum Multiplayer
    Replies: 582
    Last Post: 20-01-2017, 18:24
  2. Dedicated Server API Web UI
    By hophans in forum Multiplayer
    Replies: 8
    Last Post: 07-03-2016, 09:28
  3. Dedicated Server
    By OzDeaDMeaT in forum Multiplayer
    Replies: 9
    Last Post: 14-09-2015, 14:02
  4. AI in dedicated server
    By Slayersen in forum Multiplayer
    Replies: 13
    Last Post: 22-08-2015, 05:46
  5. Dedicated Server GUI
    By LiveWire in forum Multiplayer
    Replies: 11
    Last Post: 13-06-2015, 13:46

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •