• "Auto racing began 5 minutes after the second car was built." - Henry Ford
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Dear Guest. Follow RaceDepartment on Twitter, Facebook, Instagram, Twitch, Steam and YouTube.

Kissmyrank - Local Assetto Corsa Server Plugin 0.6h

A self contained server plugin that can be used to auto-admin public servers

  1. Brioche
    Kissmyrank Assetto Corsa Server Plugin
    ---------------------------------------------
    Version: 0.6h
    Author: Brioche
    ---------------------------------------------
    Sim racing is all about realism but what is of realism when you can throw your car around the track like the ultimate apocalyptic Carmageddon and then just hit the respawn button like nothing really happened?
    Driving is all about respecting the car, loving it... ehrm... paying the bills, know what it can do and what it cannot do. But if you have ever been in the Assetto Corsa public servers you'll know that they tell a quite different story...
    Why don't drivers do the same kind of bullcrap on the real tracks? While some might argue that they actually do, it's quite clear that it all turns down to money.
    No one would buy or build a race car and give it to someone that destroys it one minute later.
    It's all about money... isn't it? The Kissmyrank Assetto Corsa Server Plugin replicates the same dynamics. Drivers have to pay for the damage that they cause to their car with the money that they win racing and competing with other drivers for the fastest times...
    ---------------------------------------------
    Disclaimer:
    Free use and redistribution. No warranty. Use at your own risk. Modification of the code requires the author's permission.
    ---------------------------------------------
    Requirements:
    This plugin runs locally and doesn't need any remote master server to operate.
    There are no requirements at all except having an Assetto Corsa Dedicated Server. All the data is saved in the folder where you run the plugin and the only connection required is the one with the Assetto Corsa dedicated server.
    ---------------------------------------------
    Features:
    This is a simple self-contained server plugin meant to promote knowledge of the gentlemen drivers' driving etiquette.

    It does this:
    1) By kicking lapped drivers that ignore blue flags during the race for a prolonged time.
    2) By kicking drivers that block hotlapping drivers when they are in the qualification outlap.
    3) By kicking drivers that are involved in too many collisions (per session and in general).
    4) By taking money from drivers that are involved in collisions (they have to pay for repairs).
    5) By fining drivers that are involved in the first collision of the race.
    6) By rewarding drivers that manage to qualify in the top 3 (when enough players are on the server).
    7) By rewarding drivers that finish the race.
    8) By rewarding drivers that improve over their qualifying position without touching the cars they pass.
    9) By rewarding drivers that are able to improve their times and set the fastest laps (race and leaderboard).

    This plugin doesn't do any kind of accident analysis. Money is taken from all the players involved in a collision.

    Additional penalties are charged to:
    a) lapped cars that collide with lapping cars
    b) cars in the outlap that collide with hotlapping cars
    c) first collision of the race

    Additional features:
    - Ping limit and ping stability check.
    - It automatically restarts the sessions if too many collisions occur during the first lap of the race.
    - It skips race if there are less than two players at the beginning of the race.
    - Pole announcement.
    - Race winner announcement.
    - First accident shame announcement.
    - Fastest lap of the race announcement.
    ---------------------------------------------
    Download: http://www.mediafire.com/?f7tn4k7zgog1b
    ---------------------------------------------
    Installation:
    Extract files to any path.
    ---------------------------------------------
    Runtime:
    Just launch the appropriate binary for your platform.
    ---------------------------------------------
    Automatic Configuration:
    Launch the plugin and run through the Setup Wizard.
    The Setup Wizard will set the most important settings for you. Once you're done, you can customize the gameplay experience by manually editing the config.json file.
    ----------------------------------------------
    Manual Configuration:
    If you wish to perform the first time configuration manually, copy config.default.json to config.json.
    Then edit config.json and:
    1) set "ac_server_plugin_local_port" to the value that you set in the Assetto Corsa server_cfg.ini under UDP_PLUGIN_LOCAL_PORT (e.g for UDP_PLUGIN_LOCAL_PORT=8004 set it to 8004).
    2) set "ac_server_plugin_address_port" according to the value that you set in server_cfg.ini for UDP_PLUGIN_ADDRESS (e.g for UDP_PLUGIN_ADDRESS=127.0.0.1:12000 set the "ac_server_plugin_address_port" to 12000). Please note that the IP that you should use in the server_cfg.ini is the one of the machine where you run ac_kissmyrank binary.
    3) set "ac_server_ip" to the IP address of your Assetto Corsa Server (please ensure that you use the same interface that you used for the plugin).
    4) set "ac_server_http_port" to match the Assetto Corsa server_cfg.ini HTTP_PORT setting.
    5) set "max_players" according to the number of slots on your server.
    ---------------------------------------------
    Commands:
    You can type in the console. The available commands are:
    next_session: skips to next session
    restart_session: restart the current session
    clear: clears the console (might not work under Linux)
    say text: broadcast "text" to all
    list_players: gives a list of the online players (car_id:name:guid)
    player_name id: returns the player name associated with the slot number
    get_money Rockfeller: shows how much money has the driver with player name "Rockfeller" (case sensitive)
    reset_money guid: resets the money for a given Steam GUID
    kick id: kicks the player associated with the slot number
    get_track_length: returns the track length in meters
    set_track_length 5422: sets the track length to 5422m
    get_track_name: returns the name of the current track
    set_track_name Monza: sets the track human friendly name
    next_track: switches to the next track in the server rotation
    track_list: shows a list of all the tracks in the rotation in the id|track|config|races format
    current_track: shows the current track in the rotation
    track_rotate_to 0: rotates to the track with id 0
    track_get_races: shows the amount of races set for the current track in the rotation
    track_set_races 10: sets to 10 the amount of races for the current track in the rotation
    add_track vallelunga|extended_circuit|3: adds {track: "vallelunga", config: "extended_circuit", races: 3} to the track list
    edit_track 1|vallelunga|extended_circuit|3: sets track 1 to {track: "vallelunga", config: "extended_circuit", races: 3}
    remove_track 0: removes the track with id 0 from the rotation
    save_track_list: saves the current track list to the config.json making it permanent (required if you want the new track list to stay if you restart the plugin)
    edit config_id|value: sets the config_id config.json entry to value (please note how the value after | must be in the exact same format that you would have in the config.json file excluding only the final comma)
    edit_config max_ping|300: sets max_ping to 300 and saves the config.json
    edit_config currency_symbol|"$": sets the currency_symbol to "$" and saves the config.json
    reload: reload player stats from file and the track (use the save command first to save the player stats)
    save: save player stats
    exit: quits and saves the stats
    ---------------------------------------------
    Player Chat Commands
    kmr help: shows a list of commands
    kmr leaderboard: shows the fastest time on the server with the car that the player is driving
    kmr level: shows the player level in the laptime challenge (if enabled)
    kmr money: shows the amount of money that a player has
    kmr mybest: shows the driver personal best with the car that the player is driving
    kmr next_track: shows the next track in the server rotation
    kmr rules: shows the server rules
    kmr toggle_notifications: toggles notifications while driving (rules will still apply but the driver will not be notified about damage, penalty and blue flags)
    ---------------------------------------------
    Notes:
    - This plugin makes a very rough estimate of the track length. I recommend you use the set_track_length command to update the length if it's not accurate.
    - The proper way to quit (so that all the data is saved) is by typing "exit" in the console.
    - The reload command will make you lose any unsaved change. Type save first if you wish to save.
    - Since the plugin doesn't perform any kind of accident analysis it can occasionally happen that good drivers get penalized for accidents they didn't cause (insurance won't pay except for some cases). However good drivers are likely to finish races and earn money while the bad ones quickly go broke and get kicked. While I can't guarantee that this will work, I tested this plugin over a period of time and it proved effective to promote the right behavior.
    - I only tested this under Windows and Linux but it should run fine on macOs too.
    - Under Windows please be sure that Windows Firewall allows incoming connections to the plugin (they are required to communicate with the Assetto Corsa dedicated server).
    - Drivers' Account balance is saved to rank.json (it will be created the first time stats needs to be saved). You can use the reset_money command to unban a player.
    - Race Entry Fee was introduced to promote responsible behavior and to encourage drivers to finish the race. Basically a driver pays to enter a race session and can make up for that amount only by finishing the race and cleanly beating another driver. Finishing the race does indeed pay.
    - Sponsor fee and the race entry fee contribute to the total competition prize that is distributed among drivers that finish the race. Sponsor will pay more for longer races so that prices will be higher depending on the length of the race.
    - Damage cost goes with the square of the velocity just like in real life.
    - Prizes are paid to all those that pay the entry fee (e.g. are present at the beginning of the race) and that are not lapped more than twice.
    - The minimum driving standard is a tool designed to control the quality of the drivers that join the server. Basically if you set it to 110% of the fastest lap, drivers that (in the specified amount of valid laps) haven't been able to post a time that is within 110% of the fastest time set with the very same car will not be able to join the server. We can safely assume that if 12 valid lap a member hasn't been able to post a valid time he's probably going to need a bit of practice.
    - The minimum driving standard is fully customizable. By default it only kicks in if more than 12 players are on the server but you can change it according to your wish (always on, always off). This setting is designed to make sure that the server drivers quality doesn't deteriorate as the server gets full while not killing the server population when the server is empty. Cars that were not able to set a decent time, can be given a second chance to rejoin the server over time. For more check the configuration file.
    - Laptime Challenge allows new drivers to get some money by beating the time challenge and motivates them to set times. Laptime Challenge is fully customizable (prizes, levels etc.) and can be turned off altogether by setting the laptime_challenge_base_prize to 0.
    - The Kissmyrank Plugin supports blocking bad drivers before they join the server via the Assetto Corsa Server AUTH. The Plugin Auth Server requires proper AUTH_PLUGIN_ADDRESS setting in the Assetto Corsa server_cfg.ini so that the Assetto Corsa Server can communicate with it. The proper value is written in the Kissmyrank Console when you launch the plugin. If you wish to also use a separate auth (e.g. another Kissmyrank Server Plugin, Minorating, Stracker etc.) you can edit the config.json "web_auth_relay_to" list. You can set as many as you wish and create a safe area where bad drivers are blocked from multiple sources. Driver that are banned in any of the specified systems will not be allowed to join the server. If you wish to disable the Kissmyrank Web Auth Server altogether, just set "web_auth_server_port" to 0 (if you're not using the plugin Web Auth, bad drivers will still be kicked after they join the server).
    - Automatic race restart on first lap collision carnage can be tweaked in the options. See config.json for more (set "first_lap_max_collision_player average" to 0 to disable the feature altogether).
    - The UDP Relay Feature allows you to use other plugins by relaying information coming from the Assetto Corsa server in the following way: Assetto Corsa Saver <-> Kissmyrank Plugin <-> Other plugins. Once you activated the plugin by adding the third-party plugin ip:port to the "udp_relay_to" config.json entry, you need to configure the other plugin as if the Kissmyrank Plugin were the Assetto Corsa server. This is an experimental feature. Please let me know if there are problems.
    - To use Minorating via the Kissmyrank UDP Relay you need to add the following lines to the Minorating config: <add key="ac_server_port" value="12000" /><add key="plugin_port" value="10006" /> where 12000 is the port number that you used for the KMR "ac_server_plugin_address_port" and 10006 is the port number to use after the semicolon in the "udp_relay_to" list (e.g. replace UDP_PLUGIN_ADDRESS_1 with 127.0.0.1:10006).
    - To use Stracker via the Kissmyrank UDP Relay you can create a copy of your Assetto Corsa server_cfg.ini (e.g. server_cfg_stracker.ini) and edit it by setting UDP_PLUGIN_LOCAL_PORT=12000 and UDP_PLUGIN_ADDRESS=127.0.0.1:10007 where 12000 is the port number that you used for the KMR "ac_server_plugin_address_port" and 127.0.0.1:10006 is the address to use in the "udp_relay_to" list (e.g. replace UDP_PLUGIN_ADDRESS_2 with 127.0.0.1:10007). You then need to edit the Stracker cfg and set "Ac_server_cfg_ini" to the edited server_cfg_stracker.ini path (e.g. Ac_server_cfg_ini =/opt/ac_server/cfg/server_cfg_stracker.ini).
    - The Ping Limit Feature allows you to check the drivers' connection and verify their connection stability. Use the "max_ping" value to set the upper limit and the "max_ping_deviation" to control the connection stability. Assetto Corsa network code can work quite well with high pings as long as they are stable, so I recommend not to use values that are too restrictive as this might reduce the population of your server.
    - The Track Rotation Feature requires that you fill the correct path settings in the config.json file. If the settings are not correct, the plugin will notify you that the track rotation is disabled (in this case you have to manually launch the server). You can specify how many races you want to happen before each rotation and if you wish the rotation to occur when drivers are on the server. When the race limit is reached, players will be booted and the server track will change by terminating and relaunching your server. You can also manually trigger the track rotation by using the "next_track" console command. Do not use the same track twice.
    - When you use the Track Rotation feature the Kissmyrank Plugin will start the server for you using the specified executable. The plugin will not work if the server is already running. Also notice that when you close the plugin the server will also be closed so please wait for races to be over before you do that.
    - The edit_config command allows you to edit the config.json at runtime. You need to specify the argument in the config_id|value format where value is exactly what would appear in the config.json file for that config_id (e.g. edit_config currency_symbol|"€" or edit_config max_ping|300). Please notice that, for the value, double-quotes need to be present whenever they are present in the config.json as shown in the examples. On the contrary, the config_id never needs to be enclosed within double-quotes. The changes you make are permanently saved to config.json. In the backup folder you can find older copies of config.json (a backup is made whenever you start the plugin). Some values might require a plugin restart to apply.
    - On a regular racing day you're always driving to the pits. If you park the car, someone will have to come and tow it, unless your pit crew is near enough to push it. config.json "car_towing_cost" allows you to set how much a driver will pay in this case (e.g. going to pits via the menu from more than what your pit crew muscles allow).
    - The Kissmyrank Assetto Corsa Multiplayer Launcher Mod allows you to auto-reconnect on track change via the use of the Kissmyrank Master Server. It also allows you to join a full server as soon as a slot opens up ( demo:
    , download: http://www.mediafire.com/?f7tn4k7zgog1b ).
    - If you know how to, feel free to edit and customize the index.html template but be careful not to break its runtime. The donate button is for those that want to support all the work I do on the plugin. Feel free to remove it if it disturbs you.
    - The plugin has a lot of options, but as with all things, be careful when changing the configuration values.
    ---------------------------------------------
    Troubleshooting:
    Timeout errors are an indication of a communication problem with the Assetto Corsa server or that max_players is not matching the number of slots on your server. Please check your configuration.
    If you get the "In use" error it means that the plugin is already launched or that the port is used by another service.
    Backup the rank.json file from time to time as this tool is still being developed.
    I suggest to always use the available console commands. Never edit the json files unless you know what you're doing. If you do a mistake stats might reset.
    If you get any issue, try the default configuration values first and doublecheck the setup.
    If you're running linux and the web server doesn't start, it's because process without root privileges cannot bind ports below 1024. In this case you can use iptables to create a redirection using the command "sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080" where 8080 would be the plugin "web_stats_server_port".
    ---------------------------------------------
    Changelog
    v0.1 Fixed an issue with ranks not saving on exit. Updated configuration entries.
    v0.1a New list_players command. Added console logging for pole and race winner.
    v0.2 Switched to money for the sake of better realism. This better justifies both cars being penalized in a collision as they have to pay to repair the car. Collisions now cost 1000€ each. This opens many possibilities and could be used for other rating systems too.
    v0.2a Race entry fee. Entering a race now costs money. Set to 0 to disable.
    v0.2b Fixed a few minor things with rank auto-save, kick messages etc.. Changed default warned_car_grace cfg value.
    v0.3 Increased default car update rate. Lapping and hotlapping protection is now more reliable. Protection area is now expressed in meters. Drivers now have to also pay for collisions with the environment. Collisions repair cost is now gauged against the relative velocity. Collision base cost for both environment and car collisions can be set in the config. You can now change the currency symbol and the thousands separator. Prizes are now related to the entry and sponsor fees. Added support for the practice session. Better race result calculation. Added more logging in the console. This is a major update, please make sure you use the latest config.json file.
    v0.3a Fixed a silly issue with paths that would crash the plugin on start.
    v0.3b Fixed an issue with auto-kick.
    v0.4 Added Leaderboard (times are saved per car and per track). Added a Web Stats Server (http://yourserverip/) that allows everyone to access the Leaderboard. Default port is 80. You can change port by editing config.json. Added Chat commands: now players can request their stats, toggle notifications etc.. Type kmr help in game for a list of commands. Penalty cost can now be set in the config. Lapping and hotlapping cars are now going to be charged for damage on their car (this is more fair as they already get the protection and the offending car is fined with the additional penalty, thanks AJ Clarke for the feedback). Fixed an issue with auto-kick on join not working properly. Race prize is now also based on race length. Added fastest lap announcement in race. Added fastest lap prize (in race and overall). You can now see which car was driven by the player that took the pole or set the fastest lap. Added Server Minimum Driving Requirement Standard: this allows to filter out players that are not capable to set a time within x% (default 110%) of the fastest Leaderboard lap (with the same car) in a certain amount of valid laps. This feature is fully customizable: you can set it to only work when the server is getting full and control if players should be given a second chance over time. Set minimum_driving_standard to 0 to disable the feature altogether. Added new console commands (reload, save, get_track_length, set_track_length, get_track_name, set_track_name, get_money, reset_money) for controlling the plugin without restart. Better handling of track change, server name change and server restart (just type "save" and then "reload" if needed and the plugin will automatically parse the new server configuration). Many other improvements and fixes. This is a major update, replace all the files in the folder with the new ones (including config.json and tracks.json) and then edit the new configuration as you see fit.
    v0.4a Fixed missing AC server name on the Web Stats Page.
    v0.4b Added Recent Activity tab to the Web Stats. Laptime Challenge (gives reward to players as they get faster and level up). This is useful to motivate players to set times. Reward can be set in the options (set to 0 to disable the feature altogether). Fixed an issue with prizes not being assigned to drivers that disconnect immediately on race finish.
    v0.4c Implemented support for the Assetto Corsa Auth. The Kissmyrank Plugin can now poll external auth servers via its auth relay feature (e.g. Minorating, Stracker, another Kissmyrank Plugin etc., see config.json for more). Fixed an issue with incorrect damage calculation. Added support for time based races. Fixed incorrect race prize calculation. config.json has changed. Please update the old file. Thanks to Bruno32600 for all the feedback so far.
    v0.4d Fixed wrong AUTH_PLUGIN_ADDRESS tip on plugin start.
    v0.4e Fixed car_id is not defined error. Added configuration options to control the race auto-restart depending on the first lap collision count (see config.json for more). config.json was updated. Please overwrite the old file.
    v0.5 New UDP Relay Feature that allows to relay the information coming from the Assetto Corsa server to other UDP plugins. It works like AC Server <-> Kissmyrank Plugin <-> Other plugins (e.g Minorating, Stracker etc.). In order for this to work you need to set the other plugins as if the Kissmyrank plugin were the AC Server (have a look at the config for more). config.json was updated. Please overwrite the old file.
    v0.5a Fixed multiple auto-restarts on first lap carnage.
    v0.5b New Ping Limit: you can configure "max_ping" and "max_ping_deviation" limits, as well as the ping check interval (amount of time between two consecutive measurements). Added "race_min_players" value to the config. Collision chat notifications now include the name of the other driver. config.json was changed. Update accordingly and don't forget to configure the proper "ac_server_http_port" so that it matches your server_cfg.ini HTTP_PORT.
    v0.5c Fixed car check when the car is not connected. Fixed UDP Relay not working properly. Other improvements and fixes. Thanks to IZI for helping with the tests.
    v0.6 New Track rotation (see config for the options and the readme for more). If you use the Track Rotation feature, the Kissmyrank Plugin will launch the server (do not launch the server manually). Join queue and auto-rejoin on track rotation are available via the Kissmyrank Assetto Corsa Multiplayer Launcher Mod. config.json was updated. Added File Backup on start. config.json has changed. Please overwrite the old file and edit the configuration anew.
    v0.6a Added track_rotation_max_players (set to 0 if you wish to only rotate the next time that the server is empty, 99 or any number greater than the number of slots to rotate at any time). warned_car_grace is now in expressed in seconds (update your config accordingly). Added session recovery if the new session packet gets lost (for qualify and time based races). Fixed refreshing loop. config.json was updated. Please update your config.
    v0.6b Fixed player list not being reset on track rotation.
    v0.6c New First Launch Setup Wizard to facilitate the first time setup. Other improvements and fixes.
    v0.6d Fixed rotation doesn't work as expected when config is specified. Fixed unexpected server termination when track rotation is active. Optimized players connection handler. Added 900ms timeout on auth relay not to delay the join process too much. Other improvements and fixes.
    v0.6e Improved configuration check for directories and files. Better handling of Assetto Corsa Server launch failures. Improved Setup Wizard input validation.
    v0.6f New Startup Port Check (to prevent accidentally running the plugin twice or running the track rotation with an external instance of acServer already running). If config.json is broken you will now receive a note allowing you to fix the config before it's overwritten. Improved handling of the Assetto Corsa Server exit codes.
    v0.6g Fixed an error with UDP Relay not starting due to recent changes. New track_list, current_track, track_rotate_to, track_get_races, track_set_races, add_track, edit_track, remove_track, save_track_list, edit_config console commands. Added Startup Backup of config.json (since now you can permanently update the config at runtime, you might need a backup if you want to revert some edits).
    v0.6h New Car Towing Cost. On a regular racing day, you're always driving to the pits. If you park the car, someone will have to come and tow it unless your pit crew is near enough to push it. If "car_towing_cost" is set and you go back to pits without driving, you'll have to pay the car towing fee (set "car_towing_cost" to 0 to disable). This feature should allow for better immersion for those who like to have it on their servers. Added configuration for the clean gain reward (previously it was hardcoded, set "race_sponsor_clean_gain_reward" to 0 to disable the feature altogether). Fixed setup wizard not behaving properly on the first answer. Private/public net range checks for the setup wizard if you wish to try to use the plugin remotely over the Internet. Other minor fixes. Changed the order of the default config entries for less confusion on future updates (this is the last time that the order should change, so I recommend to generate the config anew. It will be easier for you to update and maintain it in the future. If you already have a config and you don't want to create a new one, just add the new options 32, 33, 54 at the bottom of your current config.json. Please be sure that you add a comma after the last entry of your current config.json before you add the new lines).
    ---------------------------------------------
    Have fun!
    Brioche
    DORNER likes this.

Recent Reviews

  1. noxxfaxx
    noxxfaxx
    5/5,
    Version: 0.6h
    Cada día más completa! Enhorabuena.
    1. Brioche
      Author's Response
      Thank you :)
  2. Peter Koslowski
    Peter Koslowski
    5/5,
    Version: 0.4d
    Great Plugin, easy to use and it will keep out bad drivers! THX a lot!
    1. Brioche
      Author's Response
      Thanks for the feedback!
  3. Bruno32600
    Bruno32600
    5/5,
    Version: 0.4b
    very impressive
    1. Brioche
      Author's Response
      Thank you for your feedback!