HOSTMOD

[Reusable] HOSTMOD 16

This thread contains content that may be reused, modified, or ported by anyone.
Introducing Fastat

Have you ever wanted to change your stats for the next course, but never had enough time to react to the roulette with the proper console command before the course loads?

Enter Fastat, the number pad-based fast restat system! At the tap of a button, select between the 9 foundational Speed and Weight stat pairs of SRB2Kart just in time for the next race! You can even let the computer select stats at random for you just once or once every race, or return to your chosen character's default stats; all with the greatest of ease.

How it works
To begin, SRB2Kart's stat system gives every stat combination a chance to take pole position in its own special way.
  • The 5 base characters, Sonic, Tails, Knuckles, Dr. Eggman, and Metal Sonic, create the skeleton of the stat grid with "iconic" signature pairings of Speed and Weight near the four corners and in the center of the 9x9 grid.
  • The bonus characters pack adds Ray, Mighty, Amy Rose, and Shadow (among other beloved SEGA characters) to complete the four "compass directions" in between the base characters, resulting in nine distinct stat pairs.

Normally, to restat, you would open the console with the ~ key, type restat X Y, with X being the desired Speed and Y being the desired Weight, and press Enter/Return. This can be cumbersome when time is of the essence.

However, with Fastat, the numbers 1 through 9 on the number pad have been coordinated with the relative positions of these nine pairs on the stat grid.
Code:
7 [2 2]   8 [5 2]   9 [8 2]

4 [2 5]   5 [5 5]   6 [8 5]

1 [2 8]   2 [5 8]   3 [8 8]
Now, with the console closed, Tails' 2 Speed, 2 Weight in the top left area of the grid can be called in a flash with 7 in the top left corner of the number pad. Metal Sonic's opposite 8, 8 can be called with the opposite 3 in the bottom right corner of the number pad. The pattern continues for all the nine numbers. (When using Fastat, the console must be closed. Otherwise, your pad will simply type numbers into the console.)

In addition,
  • A completely random stat pair can be called with the "." key.
  • Default stats for your character can be called with 0.
  • Random stats for every race can be called by pressing / once for Ironman Mode. If ever you wish to return to predictable stats, remember to press / again to turn Ironman Mode off first.

How to enable Fastat
You will need a kartexec.cfg file in your srb2kart directory to enable the game to prepare this system's keybinds on startup. If you do have this file, open it in a text or code editor. If you don't have one already, open a text or code editor and create a new file with this name. In either case, add the below text to this file and save it to create the number pad-based keybinds. The next time you start the game and join a multiplayer server that supports restat through HOSTMOD, Fastat will be active. You can check the console's output at the top of your screen each time you press any number pad key to confirm the corresponding result.

Code:
bind "KEYPAD 1" "restat 2 8" // Dr. Eggman
bind "KEYPAD 2" "restat 5 8" // Mighty
bind "KEYPAD 3" "restat 8 8" // Metal Sonic
bind "KEYPAD 4" "restat 2 5" // Ray
bind "KEYPAD 5" "restat 5 5" // Knuckles
bind "KEYPAD 6" "restat 8 5" // Shadow
bind "KEYPAD 7" "restat 2 2" // Tails
bind "KEYPAD 8" "restat 5 2" // Amy
bind "KEYPAD 9" "restat 8 2" // Sonic
bind "KEYPAD 0" "restat off" // Return to your current char's stats
bind "KEYPAD ." "restat random" // Randomize stats once on press
bind "KEYPAD /" "ironman" // Ironman Mode Toggle (randomize stats every race)

That's it!

Please note that I am not the developer of HOSTMOD and am not associated with it. That honor goes to TyroneSama. Tyron, thank you for helping to create a wild and wonderful digital experience for us all.
 

Tyron

Kart MS sysop, gay robot, horns
Hey, that's pretty cute. Neat concept!

HARD MODE: Since the stat grid is a 3x3 of 3x3s, you could use layered aliases to allow for two-tap selection of any stat on the grid, with the first input selecting the "ninth" of the grid and the second input selecting from between the 9 stat combinations inside that ninth...

1Alodw0.png
 

Guil

One of many shapes
Hey, that's pretty cute. Neat concept!

HARD MODE: Since the stat grid is a 3x3 of 3x3s, you could use layered aliases to allow for two-tap selection of any stat on the grid, with the first input selecting the "ninth" of the grid and the second input selecting from between the 9 stat combinations inside that ninth...

1Alodw0.png
I came up with an idea that's even more intuitive. First press is your speed, second press is your weight (press 4, then 7 for 4,7).

This doesn't use the keypad but it does still work. Fair warning: It's very ugly.

alias "speed1" "bind 1 speed1weight1; bind 2 speed1weight2; bind 3 speed1weight3; bind 4 speed1weight4; bind 5 speed1weight5; bind 6 speed1weight6; bind 7 speed1weight7; bind 8 speed1weight8; bind 9 speed1weight9; bind 0 cancelrestat; echo Speed:1"

alias "speed2" "bind 1 speed2weight1; bind 2 speed2weight2; bind 3 speed2weight3; bind 4 speed2weight4; bind 5 speed2weight5; bind 6 speed2weight6; bind 7 speed2weight7; bind 8 speed2weight8; bind 9 speed2weight9; bind 0 cancelrestat; echo Speed:2"

alias "speed3" "bind 1 speed3weight1; bind 2 speed3weight2; bind 3 speed3weight3; bind 4 speed3weight4; bind 5 speed3weight5; bind 6 speed3weight6; bind 7 speed3weight7; bind 8 speed3weight8; bind 9 speed3weight9; bind 0 cancelrestat; echo Speed:3"

alias "speed4" "bind 1 speed4weight1; bind 2 speed4weight2; bind 3 speed4weight3; bind 4 speed4weight4; bind 5 speed4weight5; bind 6 speed4weight6; bind 7 speed4weight7; bind 8 speed4weight8; bind 9 speed4weight9; bind 0 cancelrestat; echo Speed:4"

alias "speed5" "bind 1 speed5weight1; bind 2 speed5weight2; bind 3 speed5weight3; bind 4 speed5weight4; bind 5 speed5weight5; bind 6 speed5weight6; bind 7 speed5weight7; bind 8 speed5weight8; bind 9 speed5weight9; bind 0 cancelrestat; echo Speed:5"

alias "speed6" "bind 1 speed6weight1; bind 2 speed6weight2; bind 3 speed6weight3; bind 4 speed6weight4; bind 5 speed6weight5; bind 6 speed6weight6; bind 7 speed6weight7; bind 8 speed6weight8; bind 9 speed6weight9; bind 0 cancelrestat; echo Speed:6"

alias "speed7" "bind 1 speed7weight1; bind 2 speed7weight2; bind 3 speed7weight3; bind 4 speed7weight4; bind 5 speed7weight5; bind 6 speed7weight6; bind 7 speed7weight7; bind 8 speed7weight8; bind 9 speed7weight9; bind 0 cancelrestat; echo Speed:7"

alias "speed8" "bind 1 speed8weight1; bind 2 speed8weight2; bind 3 speed8weight3; bind 4 speed8weight4; bind 5 speed8weight5; bind 6 speed8weight6; bind 7 speed8weight7; bind 8 speed8weight8; bind 9 speed8weight9; bind 0 cancelrestat; echo Speed:8"

alias "speed9" "bind 1 speed9weight1; bind 2 speed9weight2; bind 3 speed9weight3; bind 4 speed9weight4; bind 5 speed9weight5; bind 6 speed9weight6; bind 7 speed9weight7; bind 8 speed9weight8; bind 9 speed9weight9; bind 0 cancelrestat; echo Speed:9"


alias "speed1weight1" "restat 1 1; echo Weight:1; resetspeedbinds"
alias "speed1weight2" "restat 1 2; echo Weight:2; resetspeedbinds"
alias "speed1weight3" "restat 1 3; echo Weight:3; resetspeedbinds"
alias "speed1weight4" "restat 1 4; echo Weight:4; resetspeedbinds"
alias "speed1weight5" "restat 1 5; echo Weight:5; resetspeedbinds"
alias "speed1weight6" "restat 1 6; echo Weight:6; resetspeedbinds"
alias "speed1weight7" "restat 1 7; echo Weight:7; resetspeedbinds"
alias "speed1weight8" "restat 1 8; echo Weight:8; resetspeedbinds"
alias "speed1weight9" "restat 1 9; echo Weight:9; resetspeedbinds"

alias "speed2weight1" "restat 2 1; echo Weight:1; resetspeedbinds"
alias "speed2weight2" "restat 2 2; echo Weight:2; resetspeedbinds"
alias "speed2weight3" "restat 2 3; echo Weight:3; resetspeedbinds"
alias "speed2weight4" "restat 2 4; echo Weight:4; resetspeedbinds"
alias "speed2weight5" "restat 2 5; echo Weight:5; resetspeedbinds"
alias "speed2weight6" "restat 2 6; echo Weight:6; resetspeedbinds"
alias "speed2weight7" "restat 2 7; echo Weight:7; resetspeedbinds"
alias "speed2weight8" "restat 2 8; echo Weight:8; resetspeedbinds"
alias "speed2weight9" "restat 2 9; echo Weight:9; resetspeedbinds"

alias "speed3weight1" "restat 3 1; echo Weight:1; resetspeedbinds"
alias "speed3weight2" "restat 3 2; echo Weight:2; resetspeedbinds"
alias "speed3weight3" "restat 3 3; echo Weight:3; resetspeedbinds"
alias "speed3weight4" "restat 3 4; echo Weight:4; resetspeedbinds"
alias "speed3weight5" "restat 3 5; echo Weight:5; resetspeedbinds"
alias "speed3weight6" "restat 3 6; echo Weight:6; resetspeedbinds"
alias "speed3weight7" "restat 3 7; echo Weight:7; resetspeedbinds"
alias "speed3weight8" "restat 3 8; echo Weight:8; resetspeedbinds"
alias "speed3weight9" "restat 3 9; echo Weight:9; resetspeedbinds"

alias "speed4weight1" "restat 4 1; echo Weight:1; resetspeedbinds"
alias "speed4weight2" "restat 4 2; echo Weight:2; resetspeedbinds"
alias "speed4weight3" "restat 4 3; echo Weight:3; resetspeedbinds"
alias "speed4weight4" "restat 4 4; echo Weight:4; resetspeedbinds"
alias "speed4weight5" "restat 4 5; echo Weight:5; resetspeedbinds"
alias "speed4weight6" "restat 4 6; echo Weight:6; resetspeedbinds"
alias "speed4weight7" "restat 4 7; echo Weight:7; resetspeedbinds"
alias "speed4weight8" "restat 4 8; echo Weight:8; resetspeedbinds"
alias "speed4weight9" "restat 4 9; echo Weight:9; resetspeedbinds"

alias "speed5weight1" "restat 5 1; echo Weight:1; resetspeedbinds"
alias "speed5weight2" "restat 5 2; echo Weight:2; resetspeedbinds"
alias "speed5weight3" "restat 5 3; echo Weight:3; resetspeedbinds"
alias "speed5weight4" "restat 5 4; echo Weight:4; resetspeedbinds"
alias "speed5weight5" "restat 5 5; echo Weight:5; resetspeedbinds"
alias "speed5weight6" "restat 5 6; echo Weight:6; resetspeedbinds"
alias "speed5weight7" "restat 5 7; echo Weight:7; resetspeedbinds"
alias "speed5weight8" "restat 5 8; echo Weight:8; resetspeedbinds"
alias "speed5weight9" "restat 5 9; echo Weight:9; resetspeedbinds"

alias "speed6weight1" "restat 6 1; echo Weight:1; resetspeedbinds"
alias "speed6weight2" "restat 6 2; echo Weight:2; resetspeedbinds"
alias "speed6weight3" "restat 6 3; echo Weight:3; resetspeedbinds"
alias "speed6weight4" "restat 6 4; echo Weight:4; resetspeedbinds"
alias "speed6weight5" "restat 6 5; echo Weight:5; resetspeedbinds"
alias "speed6weight6" "restat 6 6; echo Weight:6; resetspeedbinds"
alias "speed6weight7" "restat 6 7; echo Weight:7; resetspeedbinds"
alias "speed6weight8" "restat 6 8; echo Weight:8; resetspeedbinds"
alias "speed6weight9" "restat 6 9; echo Weight:9; resetspeedbinds"

alias "speed7weight1" "restat 7 1; echo Weight:1; resetspeedbinds"
alias "speed7weight2" "restat 7 2; echo Weight:2; resetspeedbinds"
alias "speed7weight3" "restat 7 3; echo Weight:3; resetspeedbinds"
alias "speed7weight4" "restat 7 4; echo Weight:4; resetspeedbinds"
alias "speed7weight5" "restat 7 5; echo Weight:5; resetspeedbinds"
alias "speed7weight6" "restat 7 6; echo Weight:6; resetspeedbinds"
alias "speed7weight7" "restat 7 7; echo Weight:7; resetspeedbinds"
alias "speed7weight8" "restat 7 8; echo Weight:8; resetspeedbinds"
alias "speed7weight9" "restat 7 9; echo Weight:9; resetspeedbinds"

alias "speed8weight1" "restat 8 1; echo Weight:1; resetspeedbinds"
alias "speed8weight2" "restat 8 2; echo Weight:2; resetspeedbinds"
alias "speed8weight3" "restat 8 3; echo Weight:3; resetspeedbinds"
alias "speed8weight4" "restat 8 4; echo Weight:4; resetspeedbinds"
alias "speed8weight5" "restat 8 5; echo Weight:5; resetspeedbinds"
alias "speed8weight6" "restat 8 6; echo Weight:6; resetspeedbinds"
alias "speed8weight7" "restat 8 7; echo Weight:7; resetspeedbinds"
alias "speed8weight8" "restat 8 8; echo Weight:8; resetspeedbinds"
alias "speed8weight9" "restat 8 9; echo Weight:9; resetspeedbinds"

alias "speed9weight1" "restat 9 1; echo Weight:1; resetspeedbinds"
alias "speed9weight2" "restat 9 2; echo Weight:2; resetspeedbinds"
alias "speed9weight3" "restat 9 3; echo Weight:3; resetspeedbinds"
alias "speed9weight4" "restat 9 4; echo Weight:4; resetspeedbinds"
alias "speed9weight5" "restat 9 5; echo Weight:5; resetspeedbinds"
alias "speed9weight6" "restat 9 6; echo Weight:6; resetspeedbinds"
alias "speed9weight7" "restat 9 7; echo Weight:7; resetspeedbinds"
alias "speed9weight8" "restat 9 8; echo Weight:8; resetspeedbinds"
alias "speed9weight9" "restat 9 9; echo Weight:9; resetspeedbinds"

alias "resetrestat" "restat reset"
alias "cancelrestat" "echo Cancelled; resetspeedbinds"

alias "resetspeedbinds" "bind 1 speed1; bind 2 speed2; bind 3 speed3; bind 4 speed4; bind 5 speed5; bind 6 speed6; bind 7 speed7; bind 8 speed8; bind 9 speed9; bind 0 resetrestat"

resetspeedbinds

Now you just type the stats you want (eg; 4, then 8 for 4,8), or press 0 to reset your stats to your skin's default. Unsure how cfg files handle nested quotes, so I didn't try using "KEYPAD 0-9".

I just hope there's no limit to the number of aliases you can have.
 

Tyron

Kart MS sysop, gay robot, horns
Tyron updated HOSTMOD with a new update entry:

HORNMOD: CHAMPIONSHIP EDITION

This is a complete rewrite of the addon, since it was my first time ever writing Lua—simultaneous incompetence and feature creep kind of led to a gigantic nightmare on the backend.

New features:
  • 100+ new horns.
  • Drastically improved performance. Low-end machines should have a much easier time on crowded servers.
  • Minor visual inprovments (try a hellhorn!).
  • A less intrusive antispam system: players who go wild on the horn will get quieter over time. The old system is still...

Read the rest of this update entry...
 

Geeovanni

Member
Due to an in game bug (windows command line won't let me type underscores or any character that requires shift to be pressed), I can't use most hostmod commands from the windows command line because of how they're written. Are there other options for me to use the mod? (excluding switching to a linux server)
 

Tyron

Kart MS sysop, gay robot, horns
Due to an in game bug (windows command line won't let me type underscores or any character that requires shift to be pressed), I can't use most hostmod commands from the windows command line because of how they're written. Are there other options for me to use the mod? (excluding switching to a linux server)
Use kartserv.cfg to automatically execute commands, or "exec mycoolconfig.cfg" to execute stuff on demand.
 

Tyron

Kart MS sysop, gay robot, horns
Tyron updated HOSTMOD with a new update entry:

16

Some small personal additions and one bugfix. No new modules.

- If you view the HOSTMOD scoreboard as an admin, it now shows players' node numbers next to their names, for easier kicks/bans and easily identifying splitscreen parties.
- The ministats display is now significantly more compact, and no longer shows ping (since ping is just an indirect way of showing tic-delay anyway). The display will become slightly brighter when you're below your framerate cap—35 on vanilla, read from...

Read the rest of this update entry...
 

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)

Top