Kissmyrank Assetto Corsa Server Plugin - Racing the way it's meant to be
---------------------------------------------
Version: 1.6f
Author: Brioche
License: Free use and redistribution. No warranty. Use at your own risk. Modification/reuse of the code requires the author's permission.
---------------------------------------------
What it is and what it does
This is a simple self-contained Assetto Corsa Dedicated Server plugin (standalone exe) meant to promote knowledge of the gentlemen drivers' driving etiquette and fair racing.
Rather than trying to assess drivers' safety in funny ways (contact points, splits etc. which have no place in reality), this plugin replicates real racing dynamics by simulating the environmental conditions that occur in real life (damage, penalties etc.).
If you collide with another car in the real world, you will not get fancy contact points or weird safety ratings but just a penalty and you'll get to pay for the damage that you caused on your car. Same goes if you crash against a wall (regardless of the presence of other drivers).
This is the only realistic rating that can have place in a sim and what Kissmyrank tries to achieve.
On top of this, it adds a human control layer (just like real Race Control) where admins can enlist Race Officials to review replays and give penalties (drive-through, kick, temporary ban and/or money) simply using their Web Browser.
---------------------------------------------
League Racing and Private Servers
While the money/point system is useful to moderate public servers, it might be unnecessary for League Servers and Private Servers.
Admins can use the "jlp_money_kill_switch" config.json entry to disable the money system altogether and still use all the other Kissmyrank Race Control Monitoring, Drive-Through and Tracking features.
---------------------------------------------
Requirements
This plugin runs locally and doesn't need any remote master server to operate. If you can launch an exe then you're good to go.
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.
---------------------------------------------
Disclaimer
The plugin might use, store and publicly display the players public IP, the Steam GUID and the in-game nickname. All data is stored locally on your server and it's under your exclusive responsibility. The plugin comes with absouletly no warranty regarding this or any other matter. In order to help you comply with local regulations, new players that leave the server before going to the track are not logged to the stats database. Kissmyrank also provides a "kmr erase_my_personal_data_and_ban_myself" chat command for those who had some data logged and wish to opt-out (set config entry #160 to 1 to enable it). You might, at your own discretion, add a Custom Welcome message (config entry #78) to notify your players about the treatment of their data and the options they have to opt-out.
---------------------------------------------
Features
- Live Track View (view real-time driving lines live on the map!)
- Live Race Control (Admins can view replays and moderate driver behavior using a Web Browser)
- Ping limit and ping stability check
- Standing Start
- Rolling Start with Formation Lap
- Virtual Safety Car (with autodeploy on mass accidents)
- Kissmyrank In-Game Spotter App: https://www.dropbox.com/s/aj01yjn6yl1vc4j/Kissmyrank_Spotter_App.zip?dl=0
- Win, Podiums, Poles, Fastest Laps, Driving infractions, Collisions tracking
- Custom Boundary definitions (include and exclude areas)
- Pit Lane Speed Limit definitions
- Pit Exit Line definitions
- Track map replays for cuts and collisions
- Drive-Through, Kick and Temporary Ban Penalties
- Multi-Language support (please help with translations!)
- Collision Damage
- Lapping and Hotlapping car warning and penalties
- Laptime Records tracking (using the custom track limits definitions)
- Laptime Challenge and Rewards
- Computer Clock Laptime Validator Anticheat (to filter some leaderboard exploits)
- Race Entry Fee (to responsibilize drivers) and prizes (also for fastest lap and qualify)
- Reward for laps without cuts
- Virtual Safety Car (or Automatic Race Restart) on first lap carnage
- Skips race if there are not enough players
- Pole announcement
- Race winner announcement
- First accident shame announcement
- Reverse Gear Penalty
- Max Infractions and Max Collisions
- Fastest lap of the race announcement
- Driving Standard (you can require times to be within a certain % of the leaderboard best)
- Restrict players with high collision rates
- Car Towing Cost
- Web Track Editor (for boundaries and such)
- Track Rotation
- Leaderboard
- Web Stats Server
- Race Results Viewer
- Assetto Corsa Auth Support (Web Auth Server)
- Auth Relay (to use external Auth like Minorating or Stracker)
- UDP Relay (to chain other plugins)
- Reserved Slots (join your server when it's full)
- Web Administrator Console (to manage the plugin and your Assetto Corsa server from your Web Browser)
- Send Console Commands from the Assetto Corsa Chat
- Temporary Ban
- Programmable Penalties via the Penalty Cost and Penalty Action maps
- Assetto Corsa App Link for sending Kissmyrank Events to in-game apps without using the chat
- No cumbersome/unrealistic/arcade class based approach which splits the driving community
- First Time SetupWizard (just extract the package and launch)
- Fully customizable plugin (more than 160 settings for you to play with)
---------------------------------------------
Download: https://www.dropbox.com/sh/7lp4mobixpdx7x3/AABWelmzZlJPysxnRwJK-DL4a?dl=0
---------------------------------------------
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.
6) if you need track rotation set the ac server path
---------------------------------------------
Commands
You can type commands in the Kissmyrank Plugin Console. You can use tab to autocomplete. Hit tab twice or write help for a list of commands.
---------------------------------------------
Kissmyrank Management Commands: help, clear, config_get, config_set, backup_list, backup_restore, save, exit");
~ help: shows a full list of commands (you can also get the full list by pressing tab twice)
~ help config_get: shows help for the config_get command
~ json_verify {"PRACTICE": "remove", "QUALIFY": {"TIME": 10}, "RACE": {"LAPS": 10}}: verifies if the provided string is valid JSON to be used for any command that requires this kind of format (e.g. track_rotation_edit)
~ config_get max_ping: gets the current value of the max_ping configuration entry
~ config_set 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 get using the config_get command)
~ config_set max_ping|300: sets max_ping to 300 and saves the config.json
~ config_set currency_symbol|"$": sets the currency_symbol to "$" and saves the config.json
~ backup_list: lists the available backup dates to be used with the backup_restore command
~ backup_create: creates a new backup
~ backup_restore 2017-11-24_165120: restores the backup with id 2017-11-24_165120 and exits the plugin. You will have to relaunch the plugin after the restore is complete
~ database_sharing_active_connections_list: shows a list of the active Database Sharing connections
~ database_sharing_overwrite_local_data_with_remote: overwrites the local database with the remote database (warning there is no coming back, you'll lose all changes that were not saved). This can be useful to resynch plugins without restarting it. Use only as last resort
~ refresh: reinitializes session and connections (warning, if you do this during a race, all players will be reloaded and the session stats will be gone)
~ save: saves all the data in memory to files
~ exit: quits and saves the stats
---------------------------------------------
Server Admin Commands
~ admin_next_session: skips to next session (e.g. qualify->race)
~ admin_restart_session: restart the current session (e.g. restarts the race)
~ admin_send_command /ballast 0 100: sends the "/ballast 0 100" command to the Assetto Corsa server just like if you typed it in the chat
~ admin_say hello: broadcast "hello" to all players
~ rolling_start_toggle: toggles the rolling start flag for the next races (doesn't apply to the current session if it's already started)
~ virtual_safety_car_deploy 60: deploys the Virtual Safety Car for 60 seconds (only works at race).
~ player_list: gives a list of the online players (car_id:name:guid)
~ player_name 0: returns the player name associated with the slot number 0
~ player_parking_permit_toggle 0: allows/disallows the player in slot 0 to park everywhere on the track (e.g. for track recording sessions)
~ player_give_drive_through 0|1: gives a drive through to be served within 1 lap to the player associated with the slot number 0
~ player_cancel_drive_through 0: cancels the drive through penalty for the player associated with the slot number 0
~ player_drive_through_list: lists all the drive-through penalties that haven't been cleared yet
~ player_kick 0: kicks the player associated with the slot number 0
~ player_temporary_ban 0|60: bans the player in slot number 0 for 60 minutes
~ player_temporary_ban_guid 12345678901234567|60: bans the player with GUID 12345678901234567 for 60 minutes
~ player_ban_list: lists all the banned players
~ player_unban 12345678901234567: unbans the player with GUID 12345678901234567
~ reserved_slots_list: shows a list of the reserved slots
~ reserved_slots_add 12345678901234567: adds a reserved slot for steam GUID 12345678901234567
~ reserved_slots_remove 1: removes the reserved slots that has id = 1 in the output of the reserved_slots_list command
~ reserved_slots_announce: announces the reserved slots list to the Kissmyrank Master server (announcement is automatic so this command is not really needed but you can force the announcement to troubleshoot problems without restarting the plugin)
---------------------------------------------
Stats Management Commands
~ driver_get_guid Rockfeller: shows the GUID of "Rockfeller" (case sensitive)
~ driver_reset_money 12345678901234567: resets the money for Steam GUID 12345678901234567
~ driver_reset_times 12345678901234567: clears all the times for Steam GUID 12345678901234567
~ driver_reset_driving_stats 12345678901234567: clears the driving stats (driven km, collisions, wins, podiums, poles, fastest laps and driving infractions) for GUID 12345678901234567
~ driver_privacy_erase_personal_data_and_ban 12345678901234567: removes the driver with Steam GUID 12345678901234567 from the stats and bans him from the server (using a hash, since the GUID cannot be stored). This can be used if a driver decides to make use of his right to be forgotten. The reason for the ban is not to allow an abuser to clear the database from infractions just to abuse again. You can unban with the "driver_privacy_cancel_ban" command if a driver sends you his GUID.
~ driver_privacy_cancel_ban 12345678901234567: cancels the privacy ban for the driver with Steam GUID 12345678901234567 allowing him to join the server again
---------------------------------------------
Track Management Commands
~ track_get_length: returns the current track length in meters
~ track_set_length 5422: sets the current track length to 5422m
~ track_get_name: returns the name of the current track
~ track_set_name Monza: sets the current track human friendly name to Monza
~ pit_origin_remove 6: unsets the pit origin for slot id 6. This can help when for whatever reason the pit origin is not correct. Kissmyrank will then rebuild the pit origin in time (it might require a few sessions).
~ tracks_list: return a list of all the tracks defined in tracks.json
~ tracks_export monza_|ks_silverstone_national|mugello_|imola_: exports the selected tracks to a JSON file in the "export" folder
~ tracks_import tracks_to_import.json: imports the "tracks_to_import.json" file from the "import" folder to the tracks database (existing tracks will be overwitten, you should run "backup_create" before importing just to be sure)
---------------------------------------------
Track Rotation Commands
~ track_rotation_next_track: switches to the next track in the server rotation
~ track_rotation_list: shows a list of all the tracks in the rotation in the id|track|config|races format
~ track_rotation_current_track: shows the current track in the rotation
~ track_rotation_rotate_to 0: rotates to the track with id 0
~ track_rotation_vote_reset: cancels the current track rotation vote
~ track_rotation_get_races: shows the amount of races set for the current track in the rotation
~ track_rotation_set_races 10: sets to 10 the amount of races for the current track in the rotation
~ track_rotation_add vallelunga|extended_circuit|3|keep|{"PRACTICE": "remove", "QUALIFY": {"TIME": 10}, "RACE": {"LAPS": 10}}: adds {track: "vallelunga", config: "extended_circuit", "races": 3, entry_list_ini_path: "keep", ""ini_options": {"PRACTICE": "remove", "QUALIFY": {"TIME": 10}, "RACE": {"LAPS": 10}}} to the track list
~ track_rotation_edit 1|vallelunga|extended_circuit|3|keep|{"PRACTICE": "remove", "QUALIFY": {"TIME": 10}, "RACE": {"LAPS": 10}}: sets track 1 to {track: "vallelunga", config: "extended_circuit", "races": 3, entry_list_ini_path: "keep", ""ini_options": {"PRACTICE": "remove", "QUALIFY": {"TIME": 10}, "RACE": {"LAPS": 10}}}
~ track_rotation_remove 0: removes the track with id 0 from the rotation
~ track_rotation_save: 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)
---------------------------------------------
Cut Lines Commands
~ cut_line_list: shows a list of the cut_lines defined for the current track
~ cut_line_remove 1: removes the cut line that has id 1 in the output of the cut_line_list_command
~ cut_line_edit 1|pit entry speed limit line|80|0|0|0: updates the cut_line with id 1 in the cut_line_list with name=pit entry speed limit line, max_speed_kmh=80, outlap_only = 0, qualify_only= 0,race_only=0
~ cut_line_drawer_begin: starts a new cut_line sketch
~ cut_line_drawer_set_first_point 6: sets the first point of the cut line sketch on the current position of the car in the slot 6 (use player_list to get a list of the players slots)
~ cut_line_drawer_set_second_point 6: sets the second point of the cut line sketch on the current position of the car in the slot 6 (use player_list to get a list of the players slots)
~ cut_line_drawer_set_name pit entry speed limit line: set the name of the cut line sketch to pit entry
~ cut_line_drawer_set_max_speed 80: sets the max speed of the cut line sketch to 80km/h
~ cut_line_drawer_toggle_outlap_only: toggles the outlap only flag for the cut line sketch
~ cut_line_drawer_toggle_qualify_only: toggles the qualify only flag for the cut line sketch
~ cut_line_drawer_toggle_race_only: toggles the race only flag for the cut line sketch
~ cut_line_drawer_save: saves the current sketch to a permanent cut line
---------------------------------------------
Track Boundary
~ track_boundary_set_left 6: starts recording the left track boundary (please make sure you park your car before the start line before you launch the command)
~ track_boundary_set_right 6: starts recording the right track boundary (please make sure you park your car before the start line before you launch the command)
~ track_boundary_set_offset 1.0: sets the rendering offset of the track border to 1.0. This is not needed for regular tracks (which already default to 1). Use something around -1.0 for a wider rendering of street circuits where you cannot drive the capture outside the track)
~ track_boundary_clear_left: clears all the left track boundary data
~ track_boundary_clear_right: clears all the right track boundary data
---------------------------------------------
Track Boundary Exclusions/Inclusions
~ track_boundary_exclude_left_begin 6: starts recording of the left track boundary exclusion (please make sure you park your car before the beginning of area, then drive to the end of the exclusion where you should launch the track_boundary_exclude_left_end command)
~ track_boundary_exclude_right_begin 6: starts recording of the right track boundary exclusion (please make sure you park your car before the beginning of area, then drive to the end of the exclusion where you should launch the track_boundary_exclude_right_end command)
~ track_boundary_exclude_left_end 6: ends recording the left track boundary exclusion
~ track_boundary_exclude_right_end 6: ends recording the right track boundary exclusion
~ track_boundary_include_left_begin 6: starts recording of the left track boundary inclusion (please make sure you park your car before the beginning of area, then drive to the end of the inclusion where you should launch the track_boundary_include_left_end command)
~ track_boundary_include_right_begin 6: starts recording of the right track boundary inclusion (please make sure you park your car before the beginning of area, then drive to the end of the inclusion where you should launch the track_boundary_include_right_end command)
~ track_boundary_include_left_end 6: ends recording the left track boundary inclusion
~ track_boundary_include_right_end 6: ends recording the right track boundary inclusion
~ track_boundary_all_track_exclude_left: excludes the whole left track boundary
~ track_boundary_all_track_exclude_right: excludes the whole right track boundary
~ track_boundary_all_track_include_left: includes the whole left track boundary
~ track_boundary_all_track_include_right: includes the whole right track boundary
---------------------------------------------
Pit Boundary
~ pit_boundary_set_left_begin 6: starts recording the left pit boundary (please make sure you park your car before the beginning of the left pit boundary then slowly drive ahead along the border to the end of the pits where you should launch the pit_boundary_set_left_end command)
~ pit_boundary_set_right_begin 6: starts recording the right pit boundary (please make sure you park your car before the beginning of the right pit boundary then slowly drive ahead along the border to the end of the pits where you should launch the pit_boundary_set_right_end command)
~ pit_boundary_set_left_end 6: ends recording the left pit boundary
~ pit_boundary_set_ right_end 6: ends recording the right pit boundary
~ pit_boundary_clear_left: clears the left pit boundary data for the current track
~ pit_boundary_clear_right: clears the right pit boundary data for the current track
---------------------------------------------
Accessory Boundary
~ accessory_boundary_set_left_begin 6|Pit Entry Junction: starts recording the left Pit Entry Junction boundary (please make sure you park your car before the beginning of the left boundary of the desired area then slowly drive ahead along the border to the end of the area where you should launch the accessory_boundary_set_left_end command)
~ accessory_boundary_set_right_begin 6|Pit Entry Junction: starts recording the right Pit Entry Junction boundary (please make sure you park your car before the beginning of the right boundary of the desired area then slowly drive ahead along the border to the end of the area where you should launch the accessory_boundary_set_right_end command)
~ accessory_boundary_set_left_end 6: ends recording of the left Accessory Boundary area started by the car in slot 6
~ accessory_boundary_set_ right_end 6: ends recording of the right Accessory Boundary area started by the car in slot 6
~ accessory_boundary_clear_left Pit Entry Junction: clears the left Pit Entry Junction boundary data for the current track
~ accessory_boundary_clear_right Pit Entry Junction: clears the right Pit Entry Junction boundary data for the current track
--------------------------------------------
Cut Lines
The Cut Lines Feature allows you to define lines on the track which can be used to integrate the existing track boundaries (e.g. pit exit lines, pit entry speed limit, other critical cut areas that cannot be covered by boundaries etc.).
These lines can be used:
- to give penalty to players that cross the line
- to set a speed limit in a certain area of the track
- to prevent cutting in certain areas
Each cut line has the following properties:
- a name (pit entry speed limit line, pit exit line, your custom line)
- a speed limit over which to apply the penalty
- the coordinates of the first point
- the coordinates of the second point
- a outlap only flag (e.g if the cut line should be applied only if the player is in the outlap)
- a qualify only flag (e.g. if the cut line should be applied only during the qualify session)
- a race only flag (e.g if the cut line should be applied only during the race session)
You can define a cut line using your car as a reference. Here is how you do it:
Scenario 1: Pit exit line ( pictures can be found here: http://www.racedepartment.com/threa...orsa-server-plugin.142199/page-6#post-2640347 )
1) Use the player_list command to get the slot id of the car that you wish to use to define the line (let's assume 6 for the purpose of this guide)
2) Start the cut line sketch by writing in the console the "cut_line_drawer_begin" command
3) Set the line name with "cut_line_drawer_set_name pit exit line$1" (most pit exit lines are not straight so you have to define it as a multi line, appending $1, $2, $3 to the line name is the way to tell the plugin that they are all part of the same line)
4) Set the max speed with "cut_line_drawer_set_max_speed 0" (the 0 tells the plugin that crossing the pit exit line at any speed greater than 0 will give a penalty which is exactly what we want)
5) Enable the outlap only flag with "cut_line_drawer_toggle_outlap_only" (this applies the penalty only to those that are in the outlap)
6) Drive your car to the start of the pit exit line segment that you wish to define. Place it exactly where the line begins.
7) Set the first point of the line with the "cut_line_drawer_set_first_point 6" command (where 6 is your car slot id as determined on point 1)
8) Drive your car to the end of the pit exit line segment that you wish to define
9) Set the second point of the line with the "cut_line_drawer_set_second_point 6"
10) Save the line with the "cut_line_drawer_save"
11) Repeat points 2-11 to define other segments of the pit exit line as needed (e.g. pit exit line$2, pit exit line$3) and so on.
Scenario 2: Pit entry speed limit line (for pit lane speeding)
1) Use the player_list command to get the slot id of the car that you wish to use to define the line (let's assume 6 for the purpose of this guide)
2) Start the cut line sketch by writing in the console the "cut_line_drawer_begin" command
3) Set the line name with "cut_line_drawer_set_name pit entry speed limit line" (no need for $ this time as this is going to be a single line)
4) Set the max speed with "cut_line_drawer_set_max_speed 80" (the 80 tells the plugin that crossing the pit entry speed limit line at any speed greater than 80 km/h will give a penalty which is exactly what we want)
5) Drive your car to the left end of the pit entry speed limit line. Place it as much to the left as possible.
6) Set the first point of the line with the "cut_line_drawer_set_first_point 6" command (where 6 is your car slot id as determined on point 1)
7) Drive your car to the right end of the pit entry speed limit line segment that you wish to define
8) Set the second point of the line with the "cut_line_drawer_set_second_point 6"
9) Save the line with the "cut_line_drawer_save"
Scenario 3: Your custom cut line (for the sake of this tutorial let's define a qualify only cut for the "Prima Variante" at Monza)
1) Use the player_list command to get the slot id of the car that you wish to use to define the line (let's assume 6 for the purpose of this guide)
2) Start the cut line sketch by writing in the console the "cut_line_drawer_begin" command
3) Set the line name with "cut_line_drawer_set_name prima variante$1" ($1 is only needed if you need it to be multi-line)
4) Set the max speed with "cut_line_drawer_set_max_speed 120" (people cutting this line at more than 120km/h will get a penalty)
5) Optional (if you wish the penalty to only apply in qualify or in the race use the "cut_line_drawer_toggle_qualify_only" or the "cut_line_drawer_toggle_race_only" command
6) Drive your car to the first point of the line that you wish to define (for the "Prima Variante" we could for example cover track re-entry on the part that leads to Biassono to check track re-entry speed)
7) Set the first point of the line with the "cut_line_drawer_set_first_point 6" command (where 6 is your car slot id as determined on point 1)
8) Drive your car to the end of the segment that you wish to define
9) Set the second point of the line with the "cut_line_drawer_set_second_point 6"
10) Save the line with the "cut_line_drawer_save"
11) Repeat points 2-11 to define other segments as needed (e.g. prima variante$2, prima variante$3) and so on.
You can list the cut lines for the current track with the cut_line_list command.
After you defined a cut line you can edit some of its settings with the cut_line_edit command.
Once defined you can save your work by typing save in the console.
Cut lines are effective as soon as you define them. You can disable the feature altogether by typing config_set cut_lines_enabled|0 and enable them back with config_set cut_lines_enabled|1.
The default tracks.json contains only the cut lines that I defined for some of the default tracks at development time. Some tracks might not have any cut line defined so, if you need them, you'll have to define them yourself.
If you have defined reliable cut lines, feel free to share the tracks.json file with me so that I can update the main package and share appropriate cut lines to new users of the Kissmyrank plugin.
--------------------------------------------
Track boundaries
Track boundaries are the track limits used to validate times, to prevent track cutting, to evaluate the hotlap/lapping status and to display the track in Race Control Replays.
Recording the track boundary is pretty straightforward:
0) Important: if you never did it before, please check and set the current track length in meters with the track_get_length and track_set_length commands.
1) Clear the old track boundary (if needed) with the "track_boundary_clear_left" and "track_boundary_clear_right" Kissmyrank Console commands.
2) Exit pits, drive your outlap and stop just before the start/finish line. Park it left, just outside the track.
3) Type player_list to get your slot number (6 for the sake of this example)
4) Type "track_boundary_set_left 6" and then slowly drive the full track along the boundary (use your car as reference and drive it the farthest that should be considered legal)
5) Once you completed the lap, you'll receive the Track Boundary Saved notification.
6) Repeat for the right track boundary.
7) Check the Track Boundary Exclusions section in order to learn how to exclude pit entry and pit exit.
Make sure you do not include pits in the capture (those need to be defined separately using the pit boundary commands).
Points recorded at a later time override the points taken before, so if you drive over a point again you can fix mistakes. However it is better to drive the full track boundary without repetitions.
Don't forget to run the save command when you're done (this will prevent data loss if you accidentally kill the plugin without running the proper exit command).
--------------------------------------------
Track Exclusions/Inclusions
These are used to define places where a driver can cross the boundary without getting penalties (e.g. pit entry, pit exit, straights, other areas where cutting gives no advantage etc.).
Recording exclusions is pretty straightforward:
0) Record the Track Boundaries first.
1) Drive to the start of the area that you wish to exclude
2) Type player_list to get your slot number (6 for the sake of this example)
3) Type "track_boundary_exclude_left_begin 6" and drive to the end
4) Once you reached the end of the junction stop the car and run the "track_boundary_exclude_left_end 6" command.
5) Repeat points 3-4 for other areas (for the right boundary just replace "left" with "right"). You can also reinclude an excluded area with the track_boundary_include_left_begin and track_boundary_include_right_begin commands etc.
Please note that although no penalties will be issued, laptimes will be still invalidated on boundary crossing regardless of inclusion and exclusion (times with all four wheels outside the white lines are not valid track records).
Don't forget to run the save command when you're done (this will prevent data loss if you accidentally kill the plugin without running the proper exit command).
--------------------------------------------
Pit boundaries
The Pit Boundaries define the Pit Area which is used for the Drive Through Penalty as well as outlap status detection and track drawing.
Recording the pit boundary is pretty straightforward:
0) Record the Track Boundaries first.
1) Clear the old pit boundary (if needed) with the "pit_boundary_clear_left" and "pit_boundary_clear_right" Kissmyrank Console commands.
2) Drive to the start of the pits and position the car on the left side.
3) Type player_list to get your slot number (6 for the sake of this example)
4) Type "pit_boundary_set_left_begin 6" and then slowly drive (drive always in the forward track direction, never reverse) the full pit along the boundary (drive as close as you can to the internal boundary)
5) Once you reached the end of the pit boundary stop the car and run the "pit_boundary_set_left_end 6" command.
6) Repeat 2-5 for the right pit boundary.
Assetto Corsa uses auto speed limiter. Stop the capture with the front of the car before the point where the spit limiter goes off or Drive-Through will be aborted if one has the foot on the gas when he reaches the line.
Make sure you include the full pits in the capture. Only capture the pit area (e.g. the area where the speed is limited to 80km/h). For road junctions please see Accessory Boundaries.
Don't forget to run the save command when you're done (this will prevent data loss if you accidentally kill the plugin without running the proper exit command).
--------------------------------------------
Accessory boundaries
Accessory area are only meant to give completeness to the track. They're not parsed for cuts and pit area detection but are shown on the map.
You can figure them as a drawing facility that helps you to complete the track (e.g. when the pit area is not connected to the track you can use this to complete the map).
Recording the accessory boundary is pretty straightforward. Let's make an example for the "Pit Entry Junction" (e.g. the part of asphalt that connects the track with the end of the pit area).
0) Decide a name for your area (names can be whatever you want and will be used in the Web Track Editor). In our case our name is "Pit Entry Junction";
1) Clear the old pit boundary (if needed) with the "accessory_boundary_clear_left Pit Entry Junction" and "accessory_boundary_clear_right Pit Entry Junction" Kissmyrank Console commands.
2) Drive to the start of the road junction and position the car on the left side.
3) Type player_list to get your slot number (6 for the sake of this example)
4) Type "accessory_boundary_set_left_begin 6|Pit Entry Junction" and then slowly drive along the boundary of the area
5) Once you reached the end of the junction stop the car and run the "accessory_boundary_set_left_end 6" command.
6) Repeat 2-5 for the right pit boundary.
Don't forget to run the save command when you're done (this will prevent data loss if you accidentally kill the plugin without running the proper exit command).
--------------------------------------------
Track Map
The track map is the place where you can visualize changes. Track map is available in the Race Control Web Panel via the event view button (you'll have to trigger an event to see it).
Please note that
- Race Control Event View requires both the right and left track boundaries and the pit area to be defined for a certain track (otherwise the event viewer has no reference and it will not load).
- If you update the track, changes should propagate to all browsers connected to Race Control in that very moment. If the browser is not connected you might need to clear the browser cache (as the track is cached to save some time).
--------------------------------------------
Web Track Editor
Once you capture the required areas of the track, you can then use the Web Track Editor to refine them.
The Web Track Editor is accessible via the event view:
1) Trigger an event (for example a cut)
2) Go to Race Control: http://yourip:web_port/race_control
3) Login as Race Director by typing your password (requires you to set the password in config.json first)
4) Click on the event and "View" it
5) Click Edit Track
6) You can now select the editing scope on the right and move points with your mouse
Left Mouse Click:
- select a point
- move the selected point to a new location
Left Mouse Drag:
- moves the view
Right Mouse Click:
- deselects the point
Middle Mouse Click
- toggles the include/exclude status (for track boundaries only)
7) Click save when you're done.
Note: excluded points appear in light blue.
Important: for efficiency and speed KMR maps points of the track into a lookup table. Use the track editor to make tiny adjustment perpendicular to the track (e.g. width or such) but avoid longitudinal movements as those might break the lookup table (thus resulting in cuts not being properly detected).
This doesn't apply to accessory area boundary points that can be moved as you see fit.
--------------------------------------------
Penalty Cost and Action Map
Config.json allows you to set a session based cost and an action for each infraction.
Supported sessions are:
- practice
- qualify
- race
- other
The available actions are:
- DT0 Drive-Through before the end of the current lap
- DT1 Drive-Through before the end of the next lap
- DT2 Drive-Through within 2 laps
- DT3 etc..
- K for kick
- TB30 Temporary ban for 30 minutes
- TB60 Temporary ban for 60 minutes
- TB61 etc.
Costs should be expressed in the usual format (1=1000€ if you use money).
You can map custom cut lines with "cut_line_your_custom_cut_line_name" (if you used multi line skip the part after and including "$")
--------------------------------------------
Assetto Corsa Chat to Kissmyrank Admin:
In order for this feature to work you must add your GUID to "ac_chat_admin_guid_list" and a valid password in "ac_chat_admin_password".
To login you need to type "/kmr login yourpassword" (don't forget the / or everyone will see your password).
After you manage to login you can run Kissmyrank Console Commands with "/kmr command" (e.g. "/kmr admin_say test").
--------------------------------------------
Player Chat Commands
~ kmr help: shows a list of commands
~ kmr language it: sets the language to "it" = Italian (type "kmr language") for a list of the available languages
~ 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 best: shows the driver personal best with the car that the player is driving
~ kmr next_track: shows the next track in the server rotation (will only appear if the track rotation is active)
~ kmr rules: shows the server rules
~ kmr stats: shows the driver's driving stats
~ kmr toggle_notifications: toggles notifications while driving (rules will still apply but the driver will not be notified about damage, penalty and blue flags)
~ kmr vote_track: vote for track change (will only appear if the rotation is active and track_rotation_vote_min_percent is not 0)
~ kmr erase_my_personal_data_and_ban_myself: removes the player's personal data from the stats and prevents further access to the server (according to the right to be forgotten)
---------------------------------------------
Setup Notes
- Under Windows please make sure that Windows Firewall allows incoming connections to the plugin (they are required to communicate with the Assetto Corsa dedicated server).
- Drivers' Account balance and other stats are saved to rank.json (it will be created the first time stats needs to be saved). Please don't edit the file manually but rather use the provided commands.
- If you know how to, feel free to edit and customize the index.html template but be careful not to break its operation. 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.
- To change the Web Stats Page favicon just replace the favicon.ico file with yours.
- The plugin has a lot of options, but as with all things, be careful when changing the configuration values.
---------------------------------------------
Gameplay Notes
- 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 in 12 valid laps a member hasn't been able to post a valid time he's probably going to need a bit of practice before he joins your server again.
- 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 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 about this please 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.
- If too many collisions occur during the first lap of the race the plugin will deploy the Virtual Safety Car for 90 seconds. With config entry 136 you can set how many seconds you would like the Virtual Safety Car to last. If you set this to 0, the plugin will use auto race restart instead.
- Automatic Race Restart allows you to automatically restart the race if too many collisions occur in the first lap. This makes sense as a dirty start is often a prelude for a worse race ending (with several angry lapped cars). Automatic Race Restart it's a good way to train drivers and teach them that dirty driving does not pay. All the money loss will stay between one restart and the other in order to make sure that whoever is causing damage will not do it for long. Automatic 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).
- 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). This is meant to prevent abuse of respawn and thus prevent sensible driving.
- You can prevent drivers with high collision rates from joining the server. To do this, you can set the max_collisions_per_100km to anything you want (set to 0 to disable the feature altogether). max_collision_per_100km_min_distance is the driven distance over which this setting will apply. You can also set max_collisions_per_100km_recharge_hours if you wish to give drivers a second chance in time (set to 0 if you don't want to give a second chance).
- You can prevent drivers from abusing the reverse gear by setting "reverse_gear_max_distance" and "reverse_gear_penalty_cost" config.json entries.
- You can use "collisions_minimum_damage_with_environment" and "collisions_minimum_damage_between_cars" to prevent small collisions from being logged.
- "max_infractions" and "max_collisions" allow you to set the max_amount of infractions per session.
- Track boundary and cut lines cuts will invalidate the laptime as well as make a driver lose his hotlap protection status. After the first boundary cut, the plugin will force a customizable 80km/h limit for subsequent track boundaries cuts in the same lap.
- When going off track, a customizable limit of 120km/h will be enforced for rejoin track if there are drivers nearby.
- Kissmyrank can compare times posted by the drivers against the clock of the machine where it's hosted in order to prevent the most blatant CPU clock manipulation abuses. Due to networking and processing delays the resolution is not too high but it should still allow to filter out the most severe exploits. This feature will only be effective on powerful servers that can handle lap completion packets with steady delays. Please keep in mind that a few false positives can occur on server hiccups and such. However this is a little price to pay for more trustable laderboards. This is still an experimental feature. Set config entry 133 and to 0 if you wish to disable it.
- You can enable/disable Rolling Start in the options. Positions are locked during the formation lap. The race starts when the leader crosses the line.
- The Virtual Safety Car locks race positions and imposes a speed limit to all drivers. It can be triggered with the "virtual_safety_car_deploy" command.
---------------------------------------------
Assetto Corsa Auth Notes
- 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 auth string for the Assetto Corsa server_cfg.ini is written in the Kissmyrank Console every time you launch the plugin.
- The Kissmyrank Plugin supports blocking bad drivers via third-party services using the AUTH relay feature (see config.json entry 16). If you wish to add a third-party 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 relay-to addresses you wish and block drivers from multiple sources. Driver that are banned in any of the specified systems will not be allowed to join the server.
---------------------------------------------
UDP Relay Notes
- 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 "linked" the plugin by adding the third-party plugin "iport" 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.
- 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 Kissmyrank "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 set sendPort=12000 (where 12000 is the port number that you used for Kissmyrank) and set rcvPort to a value of your choice like 14003. You can then use this value for the udp_relay_to list (e.g. if rcvPort=14003 replace UDP_PLUGIN_ADDRESS_2 with 127.0.0.1:14003)
---------------------------------------------
Ping Limit Notes
- 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.
---------------------------------------------
Track Rotation Notes
Please check readme.txt.
---------------------------------------------
Database Sharing Notes
Please check readme.txt.
---------------------------------------------
Web Admin Console
- The Web Admin Console allows you to access the Kissmyrank Console with the use of your Web Browser
- The Kissmyrank Web Admin Console is located at http://yourserverip/kissmyrank_admin (same port as the web stats).
- The password needs to be at least 12 characters long.
- To login type "login password" (e.g. "login yourcomplexpassword").
---------------------------------------------
General Notes
Please check readme.txt.
---------------------------------------------
Troubleshooting:
Please check readme.txt.
---------------------------------------------
App Link Notes:
The App Link allows your Kissmyrank server to send data directly to Assetto Corsa in-game apps without relying on the chat.
App Link documentation is available under /applink/doc/
App Link Demo App is available under /applink/demo/
---------------------------------------------
Download: https://www.dropbox.com/sh/7lp4mobixpdx7x3/AABWelmzZlJPysxnRwJK-DL4a?dl=0
---------------------------------------------
Changelog
Please check readme.txt.
---------------------------------------------
Have fun!
Brioche
---------------------------------------------
Version: 1.6f
Author: Brioche
License: Free use and redistribution. No warranty. Use at your own risk. Modification/reuse of the code requires the author's permission.
---------------------------------------------
What it is and what it does
This is a simple self-contained Assetto Corsa Dedicated Server plugin (standalone exe) meant to promote knowledge of the gentlemen drivers' driving etiquette and fair racing.
Rather than trying to assess drivers' safety in funny ways (contact points, splits etc. which have no place in reality), this plugin replicates real racing dynamics by simulating the environmental conditions that occur in real life (damage, penalties etc.).
If you collide with another car in the real world, you will not get fancy contact points or weird safety ratings but just a penalty and you'll get to pay for the damage that you caused on your car. Same goes if you crash against a wall (regardless of the presence of other drivers).
This is the only realistic rating that can have place in a sim and what Kissmyrank tries to achieve.
On top of this, it adds a human control layer (just like real Race Control) where admins can enlist Race Officials to review replays and give penalties (drive-through, kick, temporary ban and/or money) simply using their Web Browser.
---------------------------------------------
League Racing and Private Servers
While the money/point system is useful to moderate public servers, it might be unnecessary for League Servers and Private Servers.
Admins can use the "jlp_money_kill_switch" config.json entry to disable the money system altogether and still use all the other Kissmyrank Race Control Monitoring, Drive-Through and Tracking features.
---------------------------------------------
Requirements
This plugin runs locally and doesn't need any remote master server to operate. If you can launch an exe then you're good to go.
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.
---------------------------------------------
Disclaimer
The plugin might use, store and publicly display the players public IP, the Steam GUID and the in-game nickname. All data is stored locally on your server and it's under your exclusive responsibility. The plugin comes with absouletly no warranty regarding this or any other matter. In order to help you comply with local regulations, new players that leave the server before going to the track are not logged to the stats database. Kissmyrank also provides a "kmr erase_my_personal_data_and_ban_myself" chat command for those who had some data logged and wish to opt-out (set config entry #160 to 1 to enable it). You might, at your own discretion, add a Custom Welcome message (config entry #78) to notify your players about the treatment of their data and the options they have to opt-out.
---------------------------------------------
Features
- Live Track View (view real-time driving lines live on the map!)
- Live Race Control (Admins can view replays and moderate driver behavior using a Web Browser)
- Ping limit and ping stability check
- Standing Start
- Rolling Start with Formation Lap
- Virtual Safety Car (with autodeploy on mass accidents)
- Kissmyrank In-Game Spotter App: https://www.dropbox.com/s/aj01yjn6yl1vc4j/Kissmyrank_Spotter_App.zip?dl=0
- Win, Podiums, Poles, Fastest Laps, Driving infractions, Collisions tracking
- Custom Boundary definitions (include and exclude areas)
- Pit Lane Speed Limit definitions
- Pit Exit Line definitions
- Track map replays for cuts and collisions
- Drive-Through, Kick and Temporary Ban Penalties
- Multi-Language support (please help with translations!)
- Collision Damage
- Lapping and Hotlapping car warning and penalties
- Laptime Records tracking (using the custom track limits definitions)
- Laptime Challenge and Rewards
- Computer Clock Laptime Validator Anticheat (to filter some leaderboard exploits)
- Race Entry Fee (to responsibilize drivers) and prizes (also for fastest lap and qualify)
- Reward for laps without cuts
- Virtual Safety Car (or Automatic Race Restart) on first lap carnage
- Skips race if there are not enough players
- Pole announcement
- Race winner announcement
- First accident shame announcement
- Reverse Gear Penalty
- Max Infractions and Max Collisions
- Fastest lap of the race announcement
- Driving Standard (you can require times to be within a certain % of the leaderboard best)
- Restrict players with high collision rates
- Car Towing Cost
- Web Track Editor (for boundaries and such)
- Track Rotation
- Leaderboard
- Web Stats Server
- Race Results Viewer
- Assetto Corsa Auth Support (Web Auth Server)
- Auth Relay (to use external Auth like Minorating or Stracker)
- UDP Relay (to chain other plugins)
- Reserved Slots (join your server when it's full)
- Web Administrator Console (to manage the plugin and your Assetto Corsa server from your Web Browser)
- Send Console Commands from the Assetto Corsa Chat
- Temporary Ban
- Programmable Penalties via the Penalty Cost and Penalty Action maps
- Assetto Corsa App Link for sending Kissmyrank Events to in-game apps without using the chat
- No cumbersome/unrealistic/arcade class based approach which splits the driving community
- First Time SetupWizard (just extract the package and launch)
- Fully customizable plugin (more than 160 settings for you to play with)
---------------------------------------------
Download: https://www.dropbox.com/sh/7lp4mobixpdx7x3/AABWelmzZlJPysxnRwJK-DL4a?dl=0
---------------------------------------------
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.
6) if you need track rotation set the ac server path
---------------------------------------------
Commands
You can type commands in the Kissmyrank Plugin Console. You can use tab to autocomplete. Hit tab twice or write help for a list of commands.
---------------------------------------------
Kissmyrank Management Commands: help, clear, config_get, config_set, backup_list, backup_restore, save, exit");
~ help: shows a full list of commands (you can also get the full list by pressing tab twice)
~ help config_get: shows help for the config_get command
~ json_verify {"PRACTICE": "remove", "QUALIFY": {"TIME": 10}, "RACE": {"LAPS": 10}}: verifies if the provided string is valid JSON to be used for any command that requires this kind of format (e.g. track_rotation_edit)
~ config_get max_ping: gets the current value of the max_ping configuration entry
~ config_set 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 get using the config_get command)
~ config_set max_ping|300: sets max_ping to 300 and saves the config.json
~ config_set currency_symbol|"$": sets the currency_symbol to "$" and saves the config.json
~ backup_list: lists the available backup dates to be used with the backup_restore command
~ backup_create: creates a new backup
~ backup_restore 2017-11-24_165120: restores the backup with id 2017-11-24_165120 and exits the plugin. You will have to relaunch the plugin after the restore is complete
~ database_sharing_active_connections_list: shows a list of the active Database Sharing connections
~ database_sharing_overwrite_local_data_with_remote: overwrites the local database with the remote database (warning there is no coming back, you'll lose all changes that were not saved). This can be useful to resynch plugins without restarting it. Use only as last resort
~ refresh: reinitializes session and connections (warning, if you do this during a race, all players will be reloaded and the session stats will be gone)
~ save: saves all the data in memory to files
~ exit: quits and saves the stats
---------------------------------------------
Server Admin Commands
~ admin_next_session: skips to next session (e.g. qualify->race)
~ admin_restart_session: restart the current session (e.g. restarts the race)
~ admin_send_command /ballast 0 100: sends the "/ballast 0 100" command to the Assetto Corsa server just like if you typed it in the chat
~ admin_say hello: broadcast "hello" to all players
~ rolling_start_toggle: toggles the rolling start flag for the next races (doesn't apply to the current session if it's already started)
~ virtual_safety_car_deploy 60: deploys the Virtual Safety Car for 60 seconds (only works at race).
~ player_list: gives a list of the online players (car_id:name:guid)
~ player_name 0: returns the player name associated with the slot number 0
~ player_parking_permit_toggle 0: allows/disallows the player in slot 0 to park everywhere on the track (e.g. for track recording sessions)
~ player_give_drive_through 0|1: gives a drive through to be served within 1 lap to the player associated with the slot number 0
~ player_cancel_drive_through 0: cancels the drive through penalty for the player associated with the slot number 0
~ player_drive_through_list: lists all the drive-through penalties that haven't been cleared yet
~ player_kick 0: kicks the player associated with the slot number 0
~ player_temporary_ban 0|60: bans the player in slot number 0 for 60 minutes
~ player_temporary_ban_guid 12345678901234567|60: bans the player with GUID 12345678901234567 for 60 minutes
~ player_ban_list: lists all the banned players
~ player_unban 12345678901234567: unbans the player with GUID 12345678901234567
~ reserved_slots_list: shows a list of the reserved slots
~ reserved_slots_add 12345678901234567: adds a reserved slot for steam GUID 12345678901234567
~ reserved_slots_remove 1: removes the reserved slots that has id = 1 in the output of the reserved_slots_list command
~ reserved_slots_announce: announces the reserved slots list to the Kissmyrank Master server (announcement is automatic so this command is not really needed but you can force the announcement to troubleshoot problems without restarting the plugin)
---------------------------------------------
Stats Management Commands
~ driver_get_guid Rockfeller: shows the GUID of "Rockfeller" (case sensitive)
~ driver_reset_money 12345678901234567: resets the money for Steam GUID 12345678901234567
~ driver_reset_times 12345678901234567: clears all the times for Steam GUID 12345678901234567
~ driver_reset_driving_stats 12345678901234567: clears the driving stats (driven km, collisions, wins, podiums, poles, fastest laps and driving infractions) for GUID 12345678901234567
~ driver_privacy_erase_personal_data_and_ban 12345678901234567: removes the driver with Steam GUID 12345678901234567 from the stats and bans him from the server (using a hash, since the GUID cannot be stored). This can be used if a driver decides to make use of his right to be forgotten. The reason for the ban is not to allow an abuser to clear the database from infractions just to abuse again. You can unban with the "driver_privacy_cancel_ban" command if a driver sends you his GUID.
~ driver_privacy_cancel_ban 12345678901234567: cancels the privacy ban for the driver with Steam GUID 12345678901234567 allowing him to join the server again
---------------------------------------------
Track Management Commands
~ track_get_length: returns the current track length in meters
~ track_set_length 5422: sets the current track length to 5422m
~ track_get_name: returns the name of the current track
~ track_set_name Monza: sets the current track human friendly name to Monza
~ pit_origin_remove 6: unsets the pit origin for slot id 6. This can help when for whatever reason the pit origin is not correct. Kissmyrank will then rebuild the pit origin in time (it might require a few sessions).
~ tracks_list: return a list of all the tracks defined in tracks.json
~ tracks_export monza_|ks_silverstone_national|mugello_|imola_: exports the selected tracks to a JSON file in the "export" folder
~ tracks_import tracks_to_import.json: imports the "tracks_to_import.json" file from the "import" folder to the tracks database (existing tracks will be overwitten, you should run "backup_create" before importing just to be sure)
---------------------------------------------
Track Rotation Commands
~ track_rotation_next_track: switches to the next track in the server rotation
~ track_rotation_list: shows a list of all the tracks in the rotation in the id|track|config|races format
~ track_rotation_current_track: shows the current track in the rotation
~ track_rotation_rotate_to 0: rotates to the track with id 0
~ track_rotation_vote_reset: cancels the current track rotation vote
~ track_rotation_get_races: shows the amount of races set for the current track in the rotation
~ track_rotation_set_races 10: sets to 10 the amount of races for the current track in the rotation
~ track_rotation_add vallelunga|extended_circuit|3|keep|{"PRACTICE": "remove", "QUALIFY": {"TIME": 10}, "RACE": {"LAPS": 10}}: adds {track: "vallelunga", config: "extended_circuit", "races": 3, entry_list_ini_path: "keep", ""ini_options": {"PRACTICE": "remove", "QUALIFY": {"TIME": 10}, "RACE": {"LAPS": 10}}} to the track list
~ track_rotation_edit 1|vallelunga|extended_circuit|3|keep|{"PRACTICE": "remove", "QUALIFY": {"TIME": 10}, "RACE": {"LAPS": 10}}: sets track 1 to {track: "vallelunga", config: "extended_circuit", "races": 3, entry_list_ini_path: "keep", ""ini_options": {"PRACTICE": "remove", "QUALIFY": {"TIME": 10}, "RACE": {"LAPS": 10}}}
~ track_rotation_remove 0: removes the track with id 0 from the rotation
~ track_rotation_save: 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)
---------------------------------------------
Cut Lines Commands
~ cut_line_list: shows a list of the cut_lines defined for the current track
~ cut_line_remove 1: removes the cut line that has id 1 in the output of the cut_line_list_command
~ cut_line_edit 1|pit entry speed limit line|80|0|0|0: updates the cut_line with id 1 in the cut_line_list with name=pit entry speed limit line, max_speed_kmh=80, outlap_only = 0, qualify_only= 0,race_only=0
~ cut_line_drawer_begin: starts a new cut_line sketch
~ cut_line_drawer_set_first_point 6: sets the first point of the cut line sketch on the current position of the car in the slot 6 (use player_list to get a list of the players slots)
~ cut_line_drawer_set_second_point 6: sets the second point of the cut line sketch on the current position of the car in the slot 6 (use player_list to get a list of the players slots)
~ cut_line_drawer_set_name pit entry speed limit line: set the name of the cut line sketch to pit entry
~ cut_line_drawer_set_max_speed 80: sets the max speed of the cut line sketch to 80km/h
~ cut_line_drawer_toggle_outlap_only: toggles the outlap only flag for the cut line sketch
~ cut_line_drawer_toggle_qualify_only: toggles the qualify only flag for the cut line sketch
~ cut_line_drawer_toggle_race_only: toggles the race only flag for the cut line sketch
~ cut_line_drawer_save: saves the current sketch to a permanent cut line
---------------------------------------------
Track Boundary
~ track_boundary_set_left 6: starts recording the left track boundary (please make sure you park your car before the start line before you launch the command)
~ track_boundary_set_right 6: starts recording the right track boundary (please make sure you park your car before the start line before you launch the command)
~ track_boundary_set_offset 1.0: sets the rendering offset of the track border to 1.0. This is not needed for regular tracks (which already default to 1). Use something around -1.0 for a wider rendering of street circuits where you cannot drive the capture outside the track)
~ track_boundary_clear_left: clears all the left track boundary data
~ track_boundary_clear_right: clears all the right track boundary data
---------------------------------------------
Track Boundary Exclusions/Inclusions
~ track_boundary_exclude_left_begin 6: starts recording of the left track boundary exclusion (please make sure you park your car before the beginning of area, then drive to the end of the exclusion where you should launch the track_boundary_exclude_left_end command)
~ track_boundary_exclude_right_begin 6: starts recording of the right track boundary exclusion (please make sure you park your car before the beginning of area, then drive to the end of the exclusion where you should launch the track_boundary_exclude_right_end command)
~ track_boundary_exclude_left_end 6: ends recording the left track boundary exclusion
~ track_boundary_exclude_right_end 6: ends recording the right track boundary exclusion
~ track_boundary_include_left_begin 6: starts recording of the left track boundary inclusion (please make sure you park your car before the beginning of area, then drive to the end of the inclusion where you should launch the track_boundary_include_left_end command)
~ track_boundary_include_right_begin 6: starts recording of the right track boundary inclusion (please make sure you park your car before the beginning of area, then drive to the end of the inclusion where you should launch the track_boundary_include_right_end command)
~ track_boundary_include_left_end 6: ends recording the left track boundary inclusion
~ track_boundary_include_right_end 6: ends recording the right track boundary inclusion
~ track_boundary_all_track_exclude_left: excludes the whole left track boundary
~ track_boundary_all_track_exclude_right: excludes the whole right track boundary
~ track_boundary_all_track_include_left: includes the whole left track boundary
~ track_boundary_all_track_include_right: includes the whole right track boundary
---------------------------------------------
Pit Boundary
~ pit_boundary_set_left_begin 6: starts recording the left pit boundary (please make sure you park your car before the beginning of the left pit boundary then slowly drive ahead along the border to the end of the pits where you should launch the pit_boundary_set_left_end command)
~ pit_boundary_set_right_begin 6: starts recording the right pit boundary (please make sure you park your car before the beginning of the right pit boundary then slowly drive ahead along the border to the end of the pits where you should launch the pit_boundary_set_right_end command)
~ pit_boundary_set_left_end 6: ends recording the left pit boundary
~ pit_boundary_set_ right_end 6: ends recording the right pit boundary
~ pit_boundary_clear_left: clears the left pit boundary data for the current track
~ pit_boundary_clear_right: clears the right pit boundary data for the current track
---------------------------------------------
Accessory Boundary
~ accessory_boundary_set_left_begin 6|Pit Entry Junction: starts recording the left Pit Entry Junction boundary (please make sure you park your car before the beginning of the left boundary of the desired area then slowly drive ahead along the border to the end of the area where you should launch the accessory_boundary_set_left_end command)
~ accessory_boundary_set_right_begin 6|Pit Entry Junction: starts recording the right Pit Entry Junction boundary (please make sure you park your car before the beginning of the right boundary of the desired area then slowly drive ahead along the border to the end of the area where you should launch the accessory_boundary_set_right_end command)
~ accessory_boundary_set_left_end 6: ends recording of the left Accessory Boundary area started by the car in slot 6
~ accessory_boundary_set_ right_end 6: ends recording of the right Accessory Boundary area started by the car in slot 6
~ accessory_boundary_clear_left Pit Entry Junction: clears the left Pit Entry Junction boundary data for the current track
~ accessory_boundary_clear_right Pit Entry Junction: clears the right Pit Entry Junction boundary data for the current track
--------------------------------------------
Cut Lines
The Cut Lines Feature allows you to define lines on the track which can be used to integrate the existing track boundaries (e.g. pit exit lines, pit entry speed limit, other critical cut areas that cannot be covered by boundaries etc.).
These lines can be used:
- to give penalty to players that cross the line
- to set a speed limit in a certain area of the track
- to prevent cutting in certain areas
Each cut line has the following properties:
- a name (pit entry speed limit line, pit exit line, your custom line)
- a speed limit over which to apply the penalty
- the coordinates of the first point
- the coordinates of the second point
- a outlap only flag (e.g if the cut line should be applied only if the player is in the outlap)
- a qualify only flag (e.g. if the cut line should be applied only during the qualify session)
- a race only flag (e.g if the cut line should be applied only during the race session)
You can define a cut line using your car as a reference. Here is how you do it:
Scenario 1: Pit exit line ( pictures can be found here: http://www.racedepartment.com/threa...orsa-server-plugin.142199/page-6#post-2640347 )
1) Use the player_list command to get the slot id of the car that you wish to use to define the line (let's assume 6 for the purpose of this guide)
2) Start the cut line sketch by writing in the console the "cut_line_drawer_begin" command
3) Set the line name with "cut_line_drawer_set_name pit exit line$1" (most pit exit lines are not straight so you have to define it as a multi line, appending $1, $2, $3 to the line name is the way to tell the plugin that they are all part of the same line)
4) Set the max speed with "cut_line_drawer_set_max_speed 0" (the 0 tells the plugin that crossing the pit exit line at any speed greater than 0 will give a penalty which is exactly what we want)
5) Enable the outlap only flag with "cut_line_drawer_toggle_outlap_only" (this applies the penalty only to those that are in the outlap)
6) Drive your car to the start of the pit exit line segment that you wish to define. Place it exactly where the line begins.
7) Set the first point of the line with the "cut_line_drawer_set_first_point 6" command (where 6 is your car slot id as determined on point 1)
8) Drive your car to the end of the pit exit line segment that you wish to define
9) Set the second point of the line with the "cut_line_drawer_set_second_point 6"
10) Save the line with the "cut_line_drawer_save"
11) Repeat points 2-11 to define other segments of the pit exit line as needed (e.g. pit exit line$2, pit exit line$3) and so on.
Scenario 2: Pit entry speed limit line (for pit lane speeding)
1) Use the player_list command to get the slot id of the car that you wish to use to define the line (let's assume 6 for the purpose of this guide)
2) Start the cut line sketch by writing in the console the "cut_line_drawer_begin" command
3) Set the line name with "cut_line_drawer_set_name pit entry speed limit line" (no need for $ this time as this is going to be a single line)
4) Set the max speed with "cut_line_drawer_set_max_speed 80" (the 80 tells the plugin that crossing the pit entry speed limit line at any speed greater than 80 km/h will give a penalty which is exactly what we want)
5) Drive your car to the left end of the pit entry speed limit line. Place it as much to the left as possible.
6) Set the first point of the line with the "cut_line_drawer_set_first_point 6" command (where 6 is your car slot id as determined on point 1)
7) Drive your car to the right end of the pit entry speed limit line segment that you wish to define
8) Set the second point of the line with the "cut_line_drawer_set_second_point 6"
9) Save the line with the "cut_line_drawer_save"
Scenario 3: Your custom cut line (for the sake of this tutorial let's define a qualify only cut for the "Prima Variante" at Monza)
1) Use the player_list command to get the slot id of the car that you wish to use to define the line (let's assume 6 for the purpose of this guide)
2) Start the cut line sketch by writing in the console the "cut_line_drawer_begin" command
3) Set the line name with "cut_line_drawer_set_name prima variante$1" ($1 is only needed if you need it to be multi-line)
4) Set the max speed with "cut_line_drawer_set_max_speed 120" (people cutting this line at more than 120km/h will get a penalty)
5) Optional (if you wish the penalty to only apply in qualify or in the race use the "cut_line_drawer_toggle_qualify_only" or the "cut_line_drawer_toggle_race_only" command
6) Drive your car to the first point of the line that you wish to define (for the "Prima Variante" we could for example cover track re-entry on the part that leads to Biassono to check track re-entry speed)
7) Set the first point of the line with the "cut_line_drawer_set_first_point 6" command (where 6 is your car slot id as determined on point 1)
8) Drive your car to the end of the segment that you wish to define
9) Set the second point of the line with the "cut_line_drawer_set_second_point 6"
10) Save the line with the "cut_line_drawer_save"
11) Repeat points 2-11 to define other segments as needed (e.g. prima variante$2, prima variante$3) and so on.
You can list the cut lines for the current track with the cut_line_list command.
After you defined a cut line you can edit some of its settings with the cut_line_edit command.
Once defined you can save your work by typing save in the console.
Cut lines are effective as soon as you define them. You can disable the feature altogether by typing config_set cut_lines_enabled|0 and enable them back with config_set cut_lines_enabled|1.
The default tracks.json contains only the cut lines that I defined for some of the default tracks at development time. Some tracks might not have any cut line defined so, if you need them, you'll have to define them yourself.
If you have defined reliable cut lines, feel free to share the tracks.json file with me so that I can update the main package and share appropriate cut lines to new users of the Kissmyrank plugin.
--------------------------------------------
Track boundaries
Track boundaries are the track limits used to validate times, to prevent track cutting, to evaluate the hotlap/lapping status and to display the track in Race Control Replays.
Recording the track boundary is pretty straightforward:
0) Important: if you never did it before, please check and set the current track length in meters with the track_get_length and track_set_length commands.
1) Clear the old track boundary (if needed) with the "track_boundary_clear_left" and "track_boundary_clear_right" Kissmyrank Console commands.
2) Exit pits, drive your outlap and stop just before the start/finish line. Park it left, just outside the track.
3) Type player_list to get your slot number (6 for the sake of this example)
4) Type "track_boundary_set_left 6" and then slowly drive the full track along the boundary (use your car as reference and drive it the farthest that should be considered legal)
5) Once you completed the lap, you'll receive the Track Boundary Saved notification.
6) Repeat for the right track boundary.
7) Check the Track Boundary Exclusions section in order to learn how to exclude pit entry and pit exit.
Make sure you do not include pits in the capture (those need to be defined separately using the pit boundary commands).
Points recorded at a later time override the points taken before, so if you drive over a point again you can fix mistakes. However it is better to drive the full track boundary without repetitions.
Don't forget to run the save command when you're done (this will prevent data loss if you accidentally kill the plugin without running the proper exit command).
--------------------------------------------
Track Exclusions/Inclusions
These are used to define places where a driver can cross the boundary without getting penalties (e.g. pit entry, pit exit, straights, other areas where cutting gives no advantage etc.).
Recording exclusions is pretty straightforward:
0) Record the Track Boundaries first.
1) Drive to the start of the area that you wish to exclude
2) Type player_list to get your slot number (6 for the sake of this example)
3) Type "track_boundary_exclude_left_begin 6" and drive to the end
4) Once you reached the end of the junction stop the car and run the "track_boundary_exclude_left_end 6" command.
5) Repeat points 3-4 for other areas (for the right boundary just replace "left" with "right"). You can also reinclude an excluded area with the track_boundary_include_left_begin and track_boundary_include_right_begin commands etc.
Please note that although no penalties will be issued, laptimes will be still invalidated on boundary crossing regardless of inclusion and exclusion (times with all four wheels outside the white lines are not valid track records).
Don't forget to run the save command when you're done (this will prevent data loss if you accidentally kill the plugin without running the proper exit command).
--------------------------------------------
Pit boundaries
The Pit Boundaries define the Pit Area which is used for the Drive Through Penalty as well as outlap status detection and track drawing.
Recording the pit boundary is pretty straightforward:
0) Record the Track Boundaries first.
1) Clear the old pit boundary (if needed) with the "pit_boundary_clear_left" and "pit_boundary_clear_right" Kissmyrank Console commands.
2) Drive to the start of the pits and position the car on the left side.
3) Type player_list to get your slot number (6 for the sake of this example)
4) Type "pit_boundary_set_left_begin 6" and then slowly drive (drive always in the forward track direction, never reverse) the full pit along the boundary (drive as close as you can to the internal boundary)
5) Once you reached the end of the pit boundary stop the car and run the "pit_boundary_set_left_end 6" command.
6) Repeat 2-5 for the right pit boundary.
Assetto Corsa uses auto speed limiter. Stop the capture with the front of the car before the point where the spit limiter goes off or Drive-Through will be aborted if one has the foot on the gas when he reaches the line.
Make sure you include the full pits in the capture. Only capture the pit area (e.g. the area where the speed is limited to 80km/h). For road junctions please see Accessory Boundaries.
Don't forget to run the save command when you're done (this will prevent data loss if you accidentally kill the plugin without running the proper exit command).
--------------------------------------------
Accessory boundaries
Accessory area are only meant to give completeness to the track. They're not parsed for cuts and pit area detection but are shown on the map.
You can figure them as a drawing facility that helps you to complete the track (e.g. when the pit area is not connected to the track you can use this to complete the map).
Recording the accessory boundary is pretty straightforward. Let's make an example for the "Pit Entry Junction" (e.g. the part of asphalt that connects the track with the end of the pit area).
0) Decide a name for your area (names can be whatever you want and will be used in the Web Track Editor). In our case our name is "Pit Entry Junction";
1) Clear the old pit boundary (if needed) with the "accessory_boundary_clear_left Pit Entry Junction" and "accessory_boundary_clear_right Pit Entry Junction" Kissmyrank Console commands.
2) Drive to the start of the road junction and position the car on the left side.
3) Type player_list to get your slot number (6 for the sake of this example)
4) Type "accessory_boundary_set_left_begin 6|Pit Entry Junction" and then slowly drive along the boundary of the area
5) Once you reached the end of the junction stop the car and run the "accessory_boundary_set_left_end 6" command.
6) Repeat 2-5 for the right pit boundary.
Don't forget to run the save command when you're done (this will prevent data loss if you accidentally kill the plugin without running the proper exit command).
--------------------------------------------
Track Map
The track map is the place where you can visualize changes. Track map is available in the Race Control Web Panel via the event view button (you'll have to trigger an event to see it).
Please note that
- Race Control Event View requires both the right and left track boundaries and the pit area to be defined for a certain track (otherwise the event viewer has no reference and it will not load).
- If you update the track, changes should propagate to all browsers connected to Race Control in that very moment. If the browser is not connected you might need to clear the browser cache (as the track is cached to save some time).
--------------------------------------------
Web Track Editor
Once you capture the required areas of the track, you can then use the Web Track Editor to refine them.
The Web Track Editor is accessible via the event view:
1) Trigger an event (for example a cut)
2) Go to Race Control: http://yourip:web_port/race_control
3) Login as Race Director by typing your password (requires you to set the password in config.json first)
4) Click on the event and "View" it
5) Click Edit Track
6) You can now select the editing scope on the right and move points with your mouse
Left Mouse Click:
- select a point
- move the selected point to a new location
Left Mouse Drag:
- moves the view
Right Mouse Click:
- deselects the point
Middle Mouse Click
- toggles the include/exclude status (for track boundaries only)
7) Click save when you're done.
Note: excluded points appear in light blue.
Important: for efficiency and speed KMR maps points of the track into a lookup table. Use the track editor to make tiny adjustment perpendicular to the track (e.g. width or such) but avoid longitudinal movements as those might break the lookup table (thus resulting in cuts not being properly detected).
This doesn't apply to accessory area boundary points that can be moved as you see fit.
--------------------------------------------
Penalty Cost and Action Map
Config.json allows you to set a session based cost and an action for each infraction.
Supported sessions are:
- practice
- qualify
- race
- other
The available actions are:
- DT0 Drive-Through before the end of the current lap
- DT1 Drive-Through before the end of the next lap
- DT2 Drive-Through within 2 laps
- DT3 etc..
- K for kick
- TB30 Temporary ban for 30 minutes
- TB60 Temporary ban for 60 minutes
- TB61 etc.
Costs should be expressed in the usual format (1=1000€ if you use money).
You can map custom cut lines with "cut_line_your_custom_cut_line_name" (if you used multi line skip the part after and including "$")
--------------------------------------------
Assetto Corsa Chat to Kissmyrank Admin:
In order for this feature to work you must add your GUID to "ac_chat_admin_guid_list" and a valid password in "ac_chat_admin_password".
To login you need to type "/kmr login yourpassword" (don't forget the / or everyone will see your password).
After you manage to login you can run Kissmyrank Console Commands with "/kmr command" (e.g. "/kmr admin_say test").
--------------------------------------------
Player Chat Commands
~ kmr help: shows a list of commands
~ kmr language it: sets the language to "it" = Italian (type "kmr language") for a list of the available languages
~ 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 best: shows the driver personal best with the car that the player is driving
~ kmr next_track: shows the next track in the server rotation (will only appear if the track rotation is active)
~ kmr rules: shows the server rules
~ kmr stats: shows the driver's driving stats
~ kmr toggle_notifications: toggles notifications while driving (rules will still apply but the driver will not be notified about damage, penalty and blue flags)
~ kmr vote_track: vote for track change (will only appear if the rotation is active and track_rotation_vote_min_percent is not 0)
~ kmr erase_my_personal_data_and_ban_myself: removes the player's personal data from the stats and prevents further access to the server (according to the right to be forgotten)
---------------------------------------------
Setup Notes
- Under Windows please make sure that Windows Firewall allows incoming connections to the plugin (they are required to communicate with the Assetto Corsa dedicated server).
- Drivers' Account balance and other stats are saved to rank.json (it will be created the first time stats needs to be saved). Please don't edit the file manually but rather use the provided commands.
- If you know how to, feel free to edit and customize the index.html template but be careful not to break its operation. 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.
- To change the Web Stats Page favicon just replace the favicon.ico file with yours.
- The plugin has a lot of options, but as with all things, be careful when changing the configuration values.
---------------------------------------------
Gameplay Notes
- 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 in 12 valid laps a member hasn't been able to post a valid time he's probably going to need a bit of practice before he joins your server again.
- 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 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 about this please 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.
- If too many collisions occur during the first lap of the race the plugin will deploy the Virtual Safety Car for 90 seconds. With config entry 136 you can set how many seconds you would like the Virtual Safety Car to last. If you set this to 0, the plugin will use auto race restart instead.
- Automatic Race Restart allows you to automatically restart the race if too many collisions occur in the first lap. This makes sense as a dirty start is often a prelude for a worse race ending (with several angry lapped cars). Automatic Race Restart it's a good way to train drivers and teach them that dirty driving does not pay. All the money loss will stay between one restart and the other in order to make sure that whoever is causing damage will not do it for long. Automatic 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).
- 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). This is meant to prevent abuse of respawn and thus prevent sensible driving.
- You can prevent drivers with high collision rates from joining the server. To do this, you can set the max_collisions_per_100km to anything you want (set to 0 to disable the feature altogether). max_collision_per_100km_min_distance is the driven distance over which this setting will apply. You can also set max_collisions_per_100km_recharge_hours if you wish to give drivers a second chance in time (set to 0 if you don't want to give a second chance).
- You can prevent drivers from abusing the reverse gear by setting "reverse_gear_max_distance" and "reverse_gear_penalty_cost" config.json entries.
- You can use "collisions_minimum_damage_with_environment" and "collisions_minimum_damage_between_cars" to prevent small collisions from being logged.
- "max_infractions" and "max_collisions" allow you to set the max_amount of infractions per session.
- Track boundary and cut lines cuts will invalidate the laptime as well as make a driver lose his hotlap protection status. After the first boundary cut, the plugin will force a customizable 80km/h limit for subsequent track boundaries cuts in the same lap.
- When going off track, a customizable limit of 120km/h will be enforced for rejoin track if there are drivers nearby.
- Kissmyrank can compare times posted by the drivers against the clock of the machine where it's hosted in order to prevent the most blatant CPU clock manipulation abuses. Due to networking and processing delays the resolution is not too high but it should still allow to filter out the most severe exploits. This feature will only be effective on powerful servers that can handle lap completion packets with steady delays. Please keep in mind that a few false positives can occur on server hiccups and such. However this is a little price to pay for more trustable laderboards. This is still an experimental feature. Set config entry 133 and to 0 if you wish to disable it.
- You can enable/disable Rolling Start in the options. Positions are locked during the formation lap. The race starts when the leader crosses the line.
- The Virtual Safety Car locks race positions and imposes a speed limit to all drivers. It can be triggered with the "virtual_safety_car_deploy" command.
---------------------------------------------
Assetto Corsa Auth Notes
- 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 auth string for the Assetto Corsa server_cfg.ini is written in the Kissmyrank Console every time you launch the plugin.
- The Kissmyrank Plugin supports blocking bad drivers via third-party services using the AUTH relay feature (see config.json entry 16). If you wish to add a third-party 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 relay-to addresses you wish and block drivers from multiple sources. Driver that are banned in any of the specified systems will not be allowed to join the server.
---------------------------------------------
UDP Relay Notes
- 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 "linked" the plugin by adding the third-party plugin "iport" 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.
- 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 Kissmyrank "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 set sendPort=12000 (where 12000 is the port number that you used for Kissmyrank) and set rcvPort to a value of your choice like 14003. You can then use this value for the udp_relay_to list (e.g. if rcvPort=14003 replace UDP_PLUGIN_ADDRESS_2 with 127.0.0.1:14003)
---------------------------------------------
Ping Limit Notes
- 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.
---------------------------------------------
Track Rotation Notes
Please check readme.txt.
---------------------------------------------
Database Sharing Notes
Please check readme.txt.
---------------------------------------------
Web Admin Console
- The Web Admin Console allows you to access the Kissmyrank Console with the use of your Web Browser
- The Kissmyrank Web Admin Console is located at http://yourserverip/kissmyrank_admin (same port as the web stats).
- The password needs to be at least 12 characters long.
- To login type "login password" (e.g. "login yourcomplexpassword").
---------------------------------------------
General Notes
Please check readme.txt.
---------------------------------------------
Troubleshooting:
Please check readme.txt.
---------------------------------------------
App Link Notes:
The App Link allows your Kissmyrank server to send data directly to Assetto Corsa in-game apps without relying on the chat.
App Link documentation is available under /applink/doc/
App Link Demo App is available under /applink/demo/
---------------------------------------------
Download: https://www.dropbox.com/sh/7lp4mobixpdx7x3/AABWelmzZlJPysxnRwJK-DL4a?dl=0
---------------------------------------------
Changelog
Please check readme.txt.
---------------------------------------------
Have fun!
Brioche