The online racing simulator
PRISM Admin System (Call for Comments)
Trying to figure out the best way to handle the admin system, what flag should do what and so on. I came up with a small program attached that shows what admin flag as what current value. Whos current output is this:

0 = 0 (0 << 0) ;
1 = 1 (1 << 0) [a];
2 = 10 (1 << 1) [b];
4 = 100 (1 << 2) [c];
8 = 1000 (1 << 3) [d];
16 = 10000 (1 << 4) [e];
32 = 100000 (1 << 5) [f];
64 = 1000000 (1 << 6) [g];
128 = 10000000 (1 << 7) [h];
256 = 100000000 (1 << 8) [i];
512 = 1000000000 (1 << 9) [j];
1024 = 10000000000 (1 << 10) [k];
2048 = 100000000000 (1 << 11) [l];
4096 = 1000000000000 (1 << 12) [m];
8192 = 10000000000000 (1 << 13) [n];
16384 = 100000000000000 (1 << 14) [o];
32768 = 1000000000000000 (1 << 15) [p];
65536 = 10000000000000000 (1 << 16) [q];
131072 = 100000000000000000 (1 << 17) [r];
262144 = 1000000000000000000 (1 << 18) [s];
524288 = 10000000000000000000 (1 << 19) [t];
1048576 = 100000000000000000000 (1 << 20) [u];
2097152 = 1000000000000000000000 (1 << 21) [v];
4194304 = 10000000000000000000000 (1 << 22) [w];
8388608 = 100000000000000000000000 (1 << 23) [x];
16777216 = 1000000000000000000000000 (1 << 24) [y];
33554432 = 10000000000000000000000000 (1 << 25) [z];

; Users configuration file
; File location: ./PHPInSimMod/configs/users.ini

; Line starting with ; is a comment

; Access flags:
; a - access to remote console (RCON) and rcon password cvar (by `!prism cvar` command)
; b - /ban and /unban commands (`prism ban` and `prism unban` commands)
; c - access to `prism cvar` command (not all cvars will be available)
; d - access to `prism cfg` command (allows you to change lfs configuration settings)
; e -
; f -
; g -
; h -
; i - immunity (can't be kicked/baned/speced/pited and affected by other commmands)
; j -
; k - /kick command (`prism kick` command)
; l -
; m - access to /track `prism track` & `prism map` command
; n - /track command
; o -
; p - access to /pass cvar (by `!prism cvar` command)
; q -
; r - reservation (can join on reserved slots)
; s - /spec and /pit commands
; t - chat commands (`prism chat` and other chat commands)
; u - Unimmunized, given the ability to run commands on immunized admins.
; v - vote commands
; w - access to /wind cfg & `prism wind` command.
; x - custom level X (for additional plugins)
; y - custom level Y (for additional plugins)
; z - custom level Z (for additional plugins)

; Format of admin account:
; <LFS Username> <Password> <Access flags>

; Examples of admin accounts:
; "Victor" "password" "abcdefghijklmnopqrstuvwxyz"; Root access, can do anything.
; "Dygear" "love" "abcdikmprstvw"; Admin access, same access as if you had given him the lfs admin password.
; "GeForz" "god" "bks"; Mod access, can only kick, ban, spec & pit not immune from other admins commands.

; Admins not in a section are global admins, admins for all servers that PRISM connects too.

[localhost]
; Admin difitions below will only work on connections that share the section's name.
; "Scawen" "anMD5hash" "abcdefghijklmnopqrstuvwxyz"
; "Eric" "1m0d31" "abcdikmprstvw"

If you can think of any other commands that should be able to be accessed take a look at the commands.txt file and add where appropriate. (By the way, I picked chat for T because that's the default bind to talk in game.)

Configuring AMX Mod X, Commands (AMX Mod X), Adding Admins (AMX Mod X) & Admin Commands (SourceMod). To get an idea of their intended roles.
52 views later and still nothing, so I'm going to start this tonight as no one has an opinion or objection.
I think I'll implement a unified target system, this way when a function asks if a user is an admin, or if the the player is driving a XTR, of if the player is in the PITs, or if the player is in SECTOR1 ... that it will all go though one function.
Quote from Dygear :no one has an opinion or objection.

expect some opinion when the receive part also is working.

at least I am waiting for that landmark
Quote from cargame.nl :expect some opinion when the receive part also is working.

at least I am waiting for that landmark

"Receive part?"
Quote :Added very basic plugin interface to PRISM.
Plugins can now send packets, not get receive them. (Via $this->sendPacket());

So, to my understanding you can send commands to LFS but you can't receive any data to 'trigger' on certain events?

Like a chat line being typed by a racer, for example.
Quote from cargame.nl :So, to my understanding you can send commands to LFS but you can't receive any data to 'trigger' on certain events?

Like a chat line being typed by a racer, for example.

Sorry, that was meant to say "Not just receive them" I've fixed my posts on that now.

You can receive packets as is right now, and now you can also send a packet back if you wish. (As shown in the theTime.php example plugin.)

The problem with the registerPacket function is that you have to sign up for that explicit packet. That's not ideal as it makes you really think about the nitty gritty of the InSim system. It's great if you want the power of the whole InSim system, but PRISM will attempt to give the plugin dev both the most elemental level of control by providing the low level InSim structure for those plugin programmers who have a good grasp of the insim system.
Does anyone have a problem with me using "!command", "/i command" & "/o command" as synonymous hooks for one another via the $this->registerClientCommand()?

OR

Would you like them separated out so that:
  • When a client does "!command" it's captured by the $this->registerSayCommand() call.
  • Whereas "/i command" could be captured by the $this->registerClientCommand() call.
  • Finally "/o command" could be captured by the $this->registerOptionCommand call.
  • Then $this->registerCommand() would work on all of thee above.


Ok, I like the second option alot more. I'm going with that!
I don't really understand this still. So these are commands that can be executed by .. admins? anyone?
What is the purpose of some commands? Lke the t for chat commands - what does that do different than me pressing t and typing my chat message?

Are these commands executed like ![a-z] ?
But then I look at
Quote :z user (no admin)

.. that doesn't look like a command?

I assume all of the commands will be executed from within LFS, right? (leaving any alternate adminning system aside for the moment)

(ps, I think noone has any comments because it's still not clear what it's supposed todo)
Quote from Victor :(ps, I think noone has any comments because it's still not clear what it's supposed todo)

Yeah, I didn't understand what the commands were for or how they worked, so I wasn't able to comment.
Here's my understanding - if I'm wrong I'll love to be corrected. However, until that point it's analogy time That's right kids.

Think of a LFS server being controlled by PRISM as an IRC channel. In a channel each user can be assigned a bunch of flags, such as +o for oper, +v for voice, and so on. The flags that Dygear's put in the first post are the equivilent flags for a user in a LFS server.

PRISM will then have an internal record, like an IRC server, of what flags each user (or in this case LFS connection - not player) and the appropriate functions will have ACL checks built into them.
Quote from Victor :I don't really understand this still. So these are commands that can be executed by .. admins? anyone?

It depends how the command is registered. In the case of !prism kick or /i prism kick or !o prism kick, the command is register like $this->registerCommand("prism kick", 'cmdKick', '<Username/CLID/PLID> - Kicks the client from the game', ADMIN_KICK);. That would mean that in the example of access flags shown above in the config/users.ini file their access level would have to include the 'k' flag. A admin difition in the users.ini could look like these:

; Examples of admin accounts:
"Victor" "password" "abcdefghijklmnopqrstuvwxyz"; Root access, can do anything (to anyone).
"Dygear" "love" "abcdikmprstvw"; Admin access, same access as if you had given him the lfs admin password.
"GeForz" "god" "bks"; Moderator access, can only kick, ban, spec & pit not immune from other admins commands.

In these cases Vic is the all powerful admin, he can do anything to anyone at any time. I fall in as the regular admin who can do anything any other admin could do with the LFS admin password. GeForz is the low admin on the pole, he is given some privilege but he can't kick or ban (he does not have the privilege or access level) me or Vic. He does have access to spec and pit, but he still can't do that to us as we both have the immunity flag on our accounts. He himself is not immune from any of our commands, Vic or myself could kick GeForz if we had the desire. Vic could also kick me also even tho I have the immune (i) flag because he as the unimmunize (u) flag that gives him power over even other admins.

This setups up a tiered admin system in a very complex, but very powerful, way. You could setup an account that just has pit and spec, all they can do is pit and spec people. Thats it, just give them the 'p' access level in their admin definition. You can in this way try out admins with out giving them the keys to the castle. You can give anyone that access and see how he does as an admin prospect for the server.

We all play with people we don't know, they seem like good people, but power corrupts and absolute power corrupts absolutely. So when you give people absolute power over your sever by giving them the lfs admin password your giving them the keys to your castle. How do you know you can trust them if you have never meet them?

Quote from Victor :What is the purpose of some commands? Lke the t for chat commands - what does that do different than me pressing t and typing my chat message?

The 't' level allows the admin to print stuff to other clients chat area, as some chat packets don't respect the block messages status on the clients so it's a given privilege to some admins. You can for example send a message to other admins using "!prism chat @admins Hey this guy, I think he has a speed hack. Watch him!" Or you could send it based off their status, "!prism chat @spec Get in the race!" or their car type "!prism chat @xtr I think we should race with the F08 next track, it's alot of fun!" ect, ect.

Quote from Victor :Are these commands executed like ![a-z] ?
But then I look at .. that doesn't look like a command?

No, the A though Z would be their admin level, or access flag, privilege level (or what ever you want to call it) for that command. It would be found next to their name in the users.ini file.

Quote from Victor :I assume all of the commands will be executed from within LFS, right? (leaving any alternate adminning system aside for the moment)

In so far as if you did "!prism kick Dygear" it would translate over to the lfs server doing "/kick Dygear". But you could for example type "kick Dygear" in the PRISM console (using STDIN) and it would also translate to the lfs server kicking me.

Quote from Victor :(ps, I think noone has any comments because it's still not clear what it's supposed todo)

Yeah, I'm still not getting that none of you have used AMX Mod X ... I really think that you should download Counter-Strike and Install AMX Mod X. I think CS (1.6) is only like $5 these days, and you could see the admin system in action over there.


Quote from the_angry_angel :Here's my understanding - if I'm wrong I'll love to be corrected. However, until that point it's analogy time That's right kids.

Think of a LFS server being controlled by PRISM as an IRC channel. In a channel each user can be assigned a bunch of flags, such as +o for oper, +v for voice, and so on. The flags that Dygear's put in the first post are the equivilent flags for a user in a LFS server.

PRISM will then have an internal record, like an IRC server, of what flags each user (or in this case LFS connection - not player) and the appropriate functions will have ACL checks built into them.

Yeah, that's pretty much it!
owww right that makes things clearer. The above list of characters is actually more a list of command-privileges and not actual commands.

understanding that now, I'll let it run through my head Can't think of anything missing from the list so far.

unless... taking the irc analogy - there you have a user hierachy on a channel basis (with server admins overshadowing that). Would prism have admin privileges on a host basis? (because of the multi host situation)
I think you said you wanted to take it as far as allowing different rights for similar people, on different hosts?

Thinking more about irc, there you can register. That makes you a registered user. You can't really do anything more, but you are recognised as a 'familiar person'. Except in times of trouble : if the channel is flooded all of a sudden (attack or whatever, or s3 release ), everyone gets blocked from saying anything, except those who are registered.
Is that something you have considered?
Quote from Victor :owww right that makes things clearer. The above list of characters is actually more a list of command-privileges and not actual commands.

understanding that now, I'll let it run through my head Can't think of anything missing from the list so far.

We still have many options open for anything. I want to keep X, Y, & Z open for plugin devs who want to use command levels that wont effect anything else internal with PRISM.

Quote from Victor :unless... taking the irc analogy - there you have a user hierachy on a channel basis (with server admins overshadowing that). Would prism have admin privileges on a host basis? (because of the multi host situation)
I think you said you wanted to take it as far as allowing different rights for similar people, on different hosts?

To go further with the IRC analogy, PRISM is the IRC server a channel would be host connection. So you can have global (PRISM instance wide) admins, and local admins (per host basis.)

Quote from Victor :Thinking more about irc, there you can register. That makes you a registered user. You can't really do anything more, but you are recognised as a 'familiar person'. Except in times of trouble : if the channel is flooded all of a sudden (attack or whatever, or s3 release ), everyone gets blocked from saying anything, except those who are registered.
Is that something you have considered?

Not really no. Because well, I don't use IRC that often, and it's not like I have control over the chat command to the level where I could block it from showing up. I'd like to get the InSim system to the point where it has to ask a InSim client (PRISM, for example) if it can do that. But that really does not make sense in the case of InSim, because you can't block engine events if you can't trust that the InSim client will always be there (It could disconnect, it could timeout ... etc.). It would be cool tho.
Added a proper users.ini example in the first post.
With the explanations it sounds like it could work

Only thing that irritates me is the second string. Is that supposed to be a password? Can usernames be faked?
Looks good

also is there a way to do a /msg with PRISM
Quote from GeForz :Only thing that irritates me is the second string. Is that supposed to be a password? Can usernames be faked?

Yes the second string is the password, when the are read the first time, the file is edited so that the passwords become an SHA1 string.

Usernames can't be faked as they are authed by the LFS master server, you have to login to use your username. And the last thing ... I guess it could be open to a packet inject attack, but I'm not sure how you would protect from that. I mean, it would take some doing for that to happen. And they would have to send a fake IS_NPL to reset the clients array to some other value. But again, their password is check at runtime so is their usernames ...
I was just wondering IF we need the password when we have "strong" usernames
Quote from GeForz :I was just wondering IF we need the password when we have "strong" usernames

Yes, because of Victors webadmin interface and telnetting into the remote console.

---
Please look over the following file and let me know if you see any command that should be it's own user level. think of it in the scope of not just a user, or admin, but try to think in the scope of a server host operator that hosts servers professionally. What commands should be separated out so that all a regular user can get the best of the system along with global and local admins then put yourself into the role of a system operator where your getting money for a X slot server so you don't want people to be able to edit that value on the fly. (Hence it should be it's own admin level.) Things like that.

$lfsdir/docs/Commands.txt
Live for Speed command line options and text commands
=====================================================


Command line options :
----------------------
LFS can be started using a command line or another program.
A dedicated host mode is available with no hardware draw : "nogfx".
Before selecting host options, you may find it helpful to run LFS
and try out the options on the Start New Game screen - the required
upload bandwidth for those options is displayed on screen.

A command line or a command file is required for dedicated hosts.

NOTE - alternative way to use the command line options :

A command file xxx.txt can be used instead of a long command line.
The command file contains the command line parameters.
The parameters can be spread onto several lines.
The command file can contain comments, starting with two slashes //
Then the command line would be simply :

LFS /cfg=xxx.txt (where xxx.txt is the name of the config file)

/host=Host Name :FIRST IN LIST
/pass=Pass :if required - password
/admin=Pass :if required - admin password
/ip=X.X.X.X :if required - local specified ip address
/port=63392 :a high number below 65536
/mode=demo :demo / s1 / s2
/usemaster=yes :no / yes / hidden
/track=XXCR :track and config (e.g. BL1 / SO3R / FE4)
/weather=1 :weather : 1,2,3 in Blackwood
/cars=[cars] :see below : "Car Strings"
/maxguests=4 :max number of guests that can join host
/adminslots=0 :slots reserved for admins (0 to 8)
/carsmax=5 :max number of cars in a race
/carshost=1 :max number of cars (real+ai) on host pc
/carsguest=1 :max number of cars (real+ai) per guest pc
/pps=4 :smoothness (3-6) number of car updates per second
/qual=0 :qualifying minutes, 0 for no qualifying
/laps=5 :number of lap, 0 for practice
/wind=1 :0 no wind / 1 low wind / 2 high wind
/dedicated=no :no / yes / nogfx / invisible
/vote=yes :no / yes : can guests vote to kick or ban
/select=yes :no / yes : can guests select track
/rstmin=X :no restart for X seconds after race start
/rstend=X :no restart for X seconds after race finish
/autokick=no :no / kick / ban / spec (wrong way drivers)
/midrace=yes :no / yes (join during race)
/mustpit=no :no / yes (pit stop required)
/canreset=no :no / yes (allow car reset)
/fcv=no :no / yes (force cockpit view)
/cruise=no :no / yes (allow wrong way)
/start=finish :fixed/finish/reverse/random (default race start)
/insim=PORT :listen for InSim (PORT is between 1 and 65535)
/windowed=X :no / yes - overrides the cfg.txt setting
/welcome=X.txt :set welcome text file
/tracks=X.txt :set list of allowed tracks
/log=X.txt :set message log file
/ndebug=no :no / yes (network debug)
/autosave=0 :MPR autosave (0-no / 1-manual / 2-auto)
/mprdir=X :set the data folder for mpr saving
/lytdir=X :set the data folder for layouts


Host commands :
---------------
Some text commands are intended for hosts and administrators.

Using the normal text message system (pressing T in a normal host or
simply typing into a nogfx host), the message becomes a command if you
start it with a slash character.

Simple commands with no parameter :

/restart :start a race
/qualify :start qualifying
/end :return to game setup screen
/names :toggle display between player and user names
/help :get list of commands
/reinit :total restart (removes all connections)

Commands with a parameter - entry screen mode :

/track XXCR :track and config (e.g. BL1 / SO3R / FE4)
/weather X :lighting (e.g. 1, 2, 3...)
/qual X :qualifying minutes (0 = no qualifying)
/laps X :number of laps (0 = practice)
/hours X :number of hours (if laps not specified)
/wind X :0 no / 1 low / 2 high

Commands with a parameter - any time :

/maxguests X :max number of guests that can join host
/adminslots X :slots reserved for admins (0 to 8)
/carsmax X :max number of cars in a race
/carshost X :max number of cars (real+ai) on host pc
/carsguest X :max number of cars (real+ai) per guest pc
/pps X :smoothness (3-6) number of car updates per second
/msg X :send system message
/vote X :no / yes (allow guest voting)
/select X :no / yes (guests select track)
/rstmin X :no restart for X seconds after race start
/rstend X :no restart for X seconds after race finish
/autokick X :no / kick / ban / spec (wrong way drivers)
/midrace X :no / yes (join during race)
/mustpit X :no / yes (pit stop required)
/canreset X :no / yes (allow car reset)
/fcv X :no / yes (force cockpit view)
/cruise X :no / yes (allow wrong way)
/start X :fixed/finish/reverse/random (default race start)
/pass X :set new password (BLANK = no password)
/cars [cars] :see below : "Car Strings"
/welcome X.txt :set welcome text file
/tracks X.txt :set list of allowed tracks
/hlog X.txt :set message log file on host
/ndebug X :no / yes (network debug)
/autosave X :MPR autosave (0-no / 1-manual / 2-auto)
/save_mpr X :save MPR with name X (autosave must be 1 or 2)

Autocross layout commands :

/axlist X :get list of layouts for track X - e.g. AU1
/axload X :load layout X on host
/axsave X :save layout X on host
/axlaps X :set autocross number of laps
/axclear :clear layout

Ban / Kick / Spectate commands - any time :

/spec X :make user X join the spectators
/kick X :disconnect user X
/ban X Y :ban user X for Y days (0 = 12 hours)
/unban X :remove ban on user X
/pitlane X :send user X to the pit lane
/pit_all :send all cars to the pit lane

Penalties :

/p_dt USERNAME :give drive through penalty
/p_sg USERNAME :give stop-go penalty
/p_30 USERNAME :give 30 second time penalty
/p_45 USERNAME :give 45 second time penalty
/p_clear USERNAME :clear a time or pit penalty

Race Control Messages : (big text in centre of screen)

/rcm MESSAGE :set a Race Control Message to be sent
/rcm_ply USERNAME :send the RCM to USERNAME
/rcm_all :send the RCM to all
/rcc_ply USERNAME :clear USERNAME's RCM
/rcc_all :clear all RCMs


The host commands are also available to any user who has connected to
the host using the admin password if one was specified when the host
was started.


To display a welcome message on a host :
----------------------------------------
Create a text file named "X.txt" in your LFS folder.
Type up to 200 characters into the text file.

Use the command /welcome=X.txt in your startup command line


To restrict the tracks allowed on a host :
------------------------------------------
Create a text file named "X.txt" in your LFS folder.
List all the tracks and configurations you want to allow.
Type one configuration on each line.
You must use the short name of the tracks :
[first two letters of name] [config number] [reversed]

Example :

BL1
BL1R
BL2
BL2R
FE1
FE1R

Use the command /tracks=X.txt in your startup command line


Local commands :
----------------
Most of these text commands replicate functions usually controlled by
pressing on-screen buttons but can be useful in other situations, for
example when controlling LFS from an external program using InSim.

Game setup screen only :

/ready :set ready
/cancel :cancel ready
/clear :clear all racers from list

Game setup screen or in game :

/car XXX :select car (e.g. XRT)
/setup X :select setup X
/colour X :select colour X
/join :join the race
/ai [NAME] :add ai driver (can specify NAME)
/spec :spectate or leave grid
/leave :disconnect from host
/player X :select existing player X

Mode / replay control :

/spr X :run a SP replay from entry (front end) screen
/mpr X :run a MP replay from entry (front end) screen
/end :exit from replay back to entry screen
/sp :go into single player from entry screen
/mp IP PORT :join a local mp game from entry screen

Any time :

/exit :exit LFS
/entry :return to entry screen
/speedreduce X :total speed steer reduction (0 to 1)
/reducehalf X :speed in m/s for half of reduction
/loadkb X :load kb settings file (data\misc\X.kbs)
/savekb X :save kb settings file (data\misc\X.kbs)
/out X :only seen by external programs
/log X.txt :set message log file

Useful commands for scripts and controller buttons :

/run X :run the script X (data\script\X.lfs)
/hrun X :run script X on host (admins only)
/exec E C :run program E (with command line C)
/wait E C :like exec but LFS hangs until E exits

/fov [degrees] - field of view
/ff [0-200] - force feedback strength
/axis [axis] [function] - e.g. /axis 2 throttle (see below)
/invert [0/1] [function] - e.g. /invert 1 brake (see below)
/button [button] [function] - e.g. /button 5 shift_up (see below)
/key [key] [function] - e.g. /key Q handbrake (see below)
/head_tilt [degrees] - 1g head tilt
/lateral_shift [m] - 1g lateral shift
/forward_shift [m] - 1g forward shift
/vertical_shift [m] - 1g vertical shift
/hidetext [yes/no] - hide or show text (SHIFT + F)
/showmouse [yes/no] - show or hide mouse (SHIFT + Z)
/say [message] - same as typing a chat message
/echo [text] - show text only on local screen
/ctrlf [num] [text] - change text e.g. "ctrlf 1 hello"
/altf [num] [text] - change text e.g. "altf 1 bye"
/wheel_turn [degrees] - specify turn angle of controller
/press [key] - simulate key press (see PARAMETERS)
/shift [key] - SHIFT + key
/ctrl [key] - CTRL + key
/alt [key] - ALT + key
/autoclutch [0-1] - turn autoclutch off / on

/shifter [auto/sequential/shifter] - shift type
/view [fol/heli/cam/driver/custom] - select view

/view save - save any changes made to a custom view
/view reload - reload custom view (without saving)

IN A SCRIPT : //comment - this line is ignored
IN CHAT BOX : //xxx - short for /run xxx


To get info from LFS World - /w and /ws commands :
--------------------------------------------------
/w CMD sends command to LFS World for current car/track
e.g. /w pb (Personal Best) or /w laps (Laps)

/ws TRACK CAR CMD sends command for specified car/track
e.g. /ws BL1R XRT pb (get PB in XR GT TURBO at Blackwood GP REV)

More online DB access commands can be found on the
"LFS Keys" page at www.liveforspeed.net

To get info from master server - /m command :

/m find USER : find a user online
/m ? : get a list of master commands


Car Strings :
-------------
The /cars command for the startup command line or for hosts / admins
now uses the three-letter S2 car codes.

Example :

/cars=XFG+XRG :Allow XF GTI and XR GT
/cars=MRT :Allow MRT5 only

These Car Groups can be used as well :

ALL - all cars
ROAD - road legal cars
RACE - race cars
TBO - same as XRT+RB4+FXO
LRF - same as LX6+RAC+FZ5
GTR - same as FXR+XRR+FZR

The plus and minus symbols can be used in conjuction with these :

/cars=TBO+LX4 :Allow XRT, RB4, FXO and LX4
/cars=ROAD-UF1 :Allow all road cars except the UF 1000


FUNCTION NAMES for the /button AND /key COMMANDS :
--------------------------------------------------
steer_left, steer_right, steer_fast, steer_slow
throttle, brake, shift_up, shift_down, clutch, handbrake
left_view, right_view, rear_view, horn, flash, reset
pit_speed, tc_disable, ignition, zoom_in, zoom_out
reverse, gear_1 - gear_7, ctrl_f1 - ctrl_f12


FUNCTION NAMES for the /axis AND /invert COMMANDS :
---------------------------------------------------
steer, combined, throttle, brake
lookh, lookp, lookr
clutch, handbrake, shiftx, shifty


UNASSIGNING a button or axis :
------------------------------
To unassign a button or axis from a function,
you can assign -1 to that function.

Example 1 : /button -1 shift_up <- unassign the shift up button
Example 2 : /axis -1 clutch <- unassign the clutch axis


PARAMETERS for the key commands (press / shift / ctrl / alt) :
--------------------------------------------------------------
Letters A to Z
Numbers 0 to 9
F1 to F12
up, down, left, right
space, enter, esc, tab
less, more

the only things i would choose to limit are:

/ip=X.X.X.X - Setting should be changed only by Admin / Hoster level
/port=63392 - Setting should be changed only by Admin / Hoster level
/maxguests=4 - Setting should be able to be changed by the user upto a Maximum set by Admin / Hoster level.
/insim=PORT - Setting should be changed only by Admin / Hoster level

Perhaps limit the settings for the server logs and mpr directory etc so that replays and logs are stored only in the users server instance and cannot be set elsewhere by the user.

the /pps option should be changable by the end User. I say this because as a hoster, the servers can handle everybody using /pps=6 but some users have guests with low bandwidth limits and generally unreliable / slow internet access where a lower packet setting will be better overall. By default its always left at /pps=4 which seems to do the trick for most.


Is that the imput you were looking for? bear in mode that none of this is of any use to a hoster unless the end user can access the setting changes either via a program on their own PC (which i assume is where you are going based on it being an insim app) or via a web page.
yeah can't think of anything other than what franky wrote. However, the ip and port ones cannot be changed via insim anyway. Atm not even sure if the insim port one can be changed via insim - it'd mean an instant disconnect.

And yes dean, the idea is to have a web-admin interface where users with different admin levels can login to change settings (via insim).
Hmm, so really there's not much different here than with any other insim app user, come to think of it.

but .. yes .. hmm smells like this prism web admin might end up being a second host setup page, assuming you have something like that already
Quote from Victor :
And yes dean, the idea is to have a web-admin interface where users with different admin levels can login to change settings (via insim).

but .. yes .. hmm smells like this prism web admin might end up being a second host setup page, assuming you have something like that already

Certainly sounds like something i would look into adopting,

Assuming it was released under terms that would allow it, i would probably go as far as modifying it to contain a file management system of some kind and make it a main host setup page. (what i use now has all of that but obviously its not LFS Specific and is therefore lacking in certain aspects).

The one thing that i would like to be added to such a program would be the ability for users to send (and ideally read) messages and commands to the system from the web-admin page.


/me subscribes to thread, Let me know if you need any imput or testing.
the license atm is the MIT one, so you can pretty much do whatever with it.

As for the admin pages part - I'm thinking of a way to have (almost) regular php files for the admin pages, thereby making it fairly easy for anyone to adjust the admin pages to their needs. So you could easily add additional functionality.

Btw, something you should be aware of, prism now has its own webserver, so all this webserving happens on the port prism will listen on and not your regular webserver. If for some reason this is not feasible I could look into providing another remote management i/o but we'll see about that later :P First let's get the actual functionality in prism I think it'll be a while before that's there.
Quote from franky500 :The one thing that i would like to be added to such a program would be the ability for users to send (and ideally read) messages and commands to the system from the web-admin page.

i think this could be done, where when it puts a message in the console it also adds it to a MYSQL database -> then output it on a web page which also has a form that you can enter what you want into the console(and mysql) :P just a thought ... dont know if it would fully work though
1

FGED GREDG RDFGDR GSFDG