GameOvermind

playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
edited July 2012 in Modding
Admin-modification for NS2
I've temporarily stopped working on this mod, until NS2's release-day, at which point I will take another look if the game is worth the (still) extraordinary time required to make the rewrite of GameOvermind fully functional. If something breaks in the current NS2GmOvrmind-version in circulation, and there is demand for a fix, I will of course oblige.

A poignant post I made about it in another thread:
QUOTE
Unaware of zombiehellmonkey's reasons, but I can certainly sympathise. I think I'm going to drop all work related to NS2 until it has been released, and reassess from there on if it is worth further pursuing some of the ideas I've had. I guess it's a combination of the immense amount of grind-work that still remains to be done, while NS2 is giving very little motivation in return. As well as the uncertainty how things will develop in terms of performance for the v1.0-release, which if you've spent any time on these forums will know I'm a bit pessimistic about.

If the game turns out to run really really well, and gain significant popularity, I'll feel confident enough to continue pouring time into it. Release is only 3 months away, so we'll know soon enough. And it's not as if time has been wasted, dedicated-servers\modding has become such a rarity on the PC-platform these days, any game that steps up and re-introduces these is worth my time (regardless if things haven't turned out for the best).


The TS has been backed up in the post below, in case work on the rewrite continues and I'll need it again. UWE put together a working admin-system here, switching to it might be advisable (certainly if you're just setting up a new server), as this admin-mod is no longer actively being developed (and lacks some core-features such as file-storage).
Post edited by Unknown User on
«13456718

Comments

  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    edited July 2012
    [ This post is backed up in case it is needed in the future ]

    Note:
    This topic-start is being rewritten for the version currently in development (v20 also known as the rewrite), and is not applicable to the current version (v19). In terms of adding users\bans, it is better to simply open the Lua configuration-files as they are fully up-to-date, and very self-explanatory.


    GameOvermind

    Description

    GameOvermind is a feature-rich admin-mod that allows for server-operators to administrate their servers more effectively and with great ease. Besides the core-features an admin-mod should posses (kicking\banning and similar functions), it also sports many advanced peripheral functions such as:
    • A RCon-emulator (for use with for example HLSW or PHP-scripts)
    • A replacement Query-responder (containing many improvements over NS2's default version)
    • File- & SQL-storage facilities (for on-site or remote storage of users\admins and bans of several sub-systems).
    • Reserved-slots (tie-in with the replacement query-responder)
    • Very high levels of debug-message verbosity (very useful for modders or advanced server-operators)
    • An built-in IRC-bot for broadcasting game-events\chats to a channel, as well as administrating the server from said channel [Work in progress, not yet functional in the current version]
    • A game-recorder & player (for recording games to a file and playing them back at a later time, useful for casters and very important for the competitive scene in particular)


    Download

    Direct Download Link: - [0.0Mb]

    The download-checksum is:
    - - MD5: 0 ;; CRC32: 0



    Installation

    System requirements
    • Natural Selection 2, Build: Any (this mod does not alter any NS2-files and is thus build-independent)
    • A few socket-ports (assuming default set-up):
      • UDP-port: 27015 (for connecting clients)
      • UDP-port: 27016 (for SteamWorks)
      • UDP-port: 27017 (for GameOvermind's QueryResponder & MasterGameServer)
      • TCP-port: 27017 (for GameOvermind's RCon-emulator)

    Extract

    Simply drag the GameOvermind-directory from inside the zip-file into your NS2-directory (Steam\steamapps\common\natural selection 2).

    Run

    In order to run the mod, a simple "-game GameOvermind" commandline-parameter needs to be appended to, either NS2.exe in the case of Listen-servers, or Server.exe in the case of Dedicated-servers.


    In-Depth Documentation

    Console-commands

    Communication with NS2-GmOvrmind occurs via the command-console. When clients ingame send a command to the server, it is evaluated by the mod, and the results sent back to the client's console.

    om_help

    Description:
    Lists all the available commands to the sending-client.
    Parameters:
    Nothing.
    Returns:
    The available mod-commands.
    Remarks:
    If the user doesn't have the NS2GmOvrmind.Priviliges.InaccessibleCommandsVisible-privilige, only available commands are displayed.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_HELP

    om_login [Optional]<string Login-name> [Optional]<string Login-password>

    Description:
    Enables the sending-client to log in to the mod.
    Parameters:
    [Optional] string Login-name
    [Optional] string Login-password
    Returns:
    Whether or not the login has been succesfull.
    Remarks:
    If no parameters are passed it will attempt to auth you using your Steam-ID.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_LOGIN

    om_purgelogins

    Description:
    Forcibly logs out all the currently logged-in users\admins.
    Parameters:
    Nothing.
    Returns:
    Whether or not the purge has been succesfull.
    Remarks:
    None.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_PURGELOGINS

    om_logout

    Description:
    Enables the sending-client to logout of the mod.
    Parameters:
    Nothing.
    Returns:
    Whether or not the logout has been succesfull.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_LOGOUT

    om_serverstatus

    Description:
    Displays (technical) information regarding the server.
    Parameters:
    Nothing.
    Returns:
    Technical information regarding the server.
    Remarks:
    None.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_SERVERSTATUS

    om_serverinfo

    Description:
    Displays (general) information regarding the server.
    Parameters:
    Nothing.
    Returns:
    General information regarding the server.
    Remarks:
    None.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_SERVERINFO

    om_modstatus

    Description:
    Displays (technical) information regarding this modification's operating-status.
    Parameters:
    Nothing.
    Returns:
    Technical information regarding this modification's operating-status
    Remarks:
    None.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_MODSTATUS

    om_modinfo

    Description:
    Displays (general) information regarding this modification.
    Parameters:
    Nothing.
    Returns:
    General information regarding this modification.
    Remarks:
    None.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_MODINFO

    om_listusers

    Description:
    Lists all the users present in the internal database.
    Parameters:
    Nothing.
    Returns:
    All the users present in the internal database
    Remarks:
    None.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_LISTUSERS

    om_listbans

    Description:
    Lists all the bans present in the internal database.
    Parameters:
    Nothing.
    Returns:
    All the bans present in the internal database.
    Remarks:
    None.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_LISTBANS

    om_addbots [Optional] <integer NumBots>

    Description:
    Adds the specified amount of bots.
    Parameters:
    [Optional] integer NumBots
    Returns:
    Whether the bot(s) was\were successfully added.
    Remarks:
    If no bot-count is specified, a single bot will be added.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_ADDBOTS

    om_removebots [Optional] <integer NumBots>

    Description:
    Removes the specified amount of bots.
    Parameters:
    [Optional] integer NumBots
    Returns:
    Whether the bot(s) was\were successfully removed.
    Remarks:
    If no bot-count is specified, a single bot will be removed.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_REMOVEBOTS

    om_setbots <integer NumBots>

    Description:
    Sets the amount bots to what has been specified.
    Parameters:
    integer NumBots
    Returns:
    Whether the bot-count was\were successfully set.
    Remarks:
    If more bots than the parameter specifies are present, the excess-bots will be kicked, if there are fewer, then bots are added to fill the shortcoming.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_SETBOTS

    om_cheats [Optional] <integer Value>

    Description:
    Changes to value of the 'cheats'-variable to what has been specified.
    Parameters:
    integer Value
    Returns:
    Whether the variable has successfully been changed.
    Remarks:
    If no value is specified, the current value will be displayed.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_CHEATS

    om_players

    Description:
    Lists all the players (including bots), and their respective Overmind-ID, to the sending-client.
    Parameters:
    None.
    Returns:
    Every player\bot and their Overmind-ID, Steam-ID, Team-ID and login-status.
    Remarks:
    Steam-IDs are displayed in their classic form (STEAM_0:n:x).
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_PLAYERS

    om_kick [Variadic]<integer Overmind-ID>

    Description:
    Kicks the player(s) that hold(s) the relevant Overmind-ID(s).
    Parameters:
    [Variadic] integer Overmind-ID
    Returns:
    Whether or not the kick(s) was\were succesfull.
    Remarks:
    The Overmind-IDs specified in this command will be kicked in the order they were passed in.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_KICK

    om_reasonkick [Variadic]<integer Overmind-ID> <string Reason>

    Description:
    Kicks the player(s) that hold(s) the relevant Overmind-ID(s), and sends the specified reason.
    Parameters:
    [Variadic] integer Overmind-ID
    string Reason
    Returns:
    Whether or not the kick(s) was\were succesfull.
    Remarks:
    The reason is sent via a chat-message 3 seconds before the kick is executed.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_REASONKICK

    om_delaykick [Variadic]<integer Overmind-ID> [Optional]<integer Delay>

    Description:
    Waits the specified amount of time (Delay), then kicks the player(s) that hold(s) the relevant Overmind-ID(s).
    Parameters:
    [Variadic] integer Overmind-ID
    [Optional] integer Delay
    Returns:
    Whether or not the kick(s) was\were succesfull.
    Remarks:
    The standard Delay-value is 3 seconds.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_DELAYKICK

    om_ban [Variadic]<integer Overmind-ID>

    Description:
    Bans (and subsequently kicks) the player(s) with the given Overmind-ID(s).
    Parameters:
    [Variadic] integer Overmind-ID
    Returns:
    Whether or not the kick-ban(s) was\were succesfull.
    Remarks:
    The Overmind-IDs specified in this command will be banned (and kicked) in the order they were passed in.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_BAN

    om_slay [Variadic]<integer Overmind-ID>

    Description:
    Slays the player(s) with the given Overmind-ID(s).
    Parameters:
    [Variadic] integer Overmind-ID
    Returns:
    Whether or not the slay was succesfull.
    Remarks:
    Spectators or players in the Ready-Room cannot be slayed.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_SLAY

    om_eject [Variadic]<integer Overmind-ID>

    Description:
    Ejects the player(s) with the given Overmind-ID(s) from any commanding position(s) they're in (CC(s) or Hive(s)).
    Parameters:
    [Variadic] integer Overmind-ID
    Returns:
    Whether or not the eject(s) was\were succesfull.
    Remarks:
    This will not prevent ejected players from re-entering the CC\hive.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_EJECT

    om_rename <integer Overmind-ID> <string NewNickname>

    Description:
    Attempts to rename the player with the given Overmind-ID to <NewNickname>.
    Parameters:
    integer Overmind-ID
    string NewNickname
    Returns:
    Whether or not the rename was succesfull.
    Remarks:
    This does not constitute a permanent nick-change (upon rejoin\map-change the nickname reverts to it's former value again).
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_RENAME

    om_endround [Optional]<integer Winner>

    Description:
    Ends the current ongoing round, and optionally declares the specified team as winner.
    Parameters:
    [Optional] integer Winner
    Returns:
    Whether the round was succesfully ended.
    Remarks:
    If no winner is specified, the team of the sending-client will be declared winner.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_ENDROUND

    om_restartround

    Description:
    Restarts the current ongoing round.
    Parameters:
    None.
    Returns:
    Whether the round was succesfully restarted.
    Remarks:
    None.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_RESTARTROUND

    om_playerteam [Variadic]<integer Overmind-ID> <integer Team-ID>

    Description:
    Moves the specified player(s) into the specified team.
    Parameters:
    [Variadic] integer Overmind-ID
    integer Team-ID
    Returns:
    Whether the player(s) was\were succesfully moved.
    Remarks:
    The specified player(s) is\are forcibly moved, thus any team-inequality is disregarded.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_PLAYERTEAM

    om_giveplasma [Variadic]<integer Overmind-ID> <integer Plasma>

    Description:
    Adds the specified plasma-amount to the specified player(s).
    Parameters:
    [Variadic] integer Overmind-ID
    integer Plasma
    Returns:
    Whether the specified plasma was succesfully granted to the specified player(s).
    Remarks:
    None.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_GIVEPLASMA

    om_givecarbon [Variadic]<integer Team-ID> <integer Carbon>

    Description:
    Adds the specified carbon-amount to the specified team(s).
    Parameters:
    [Variadic] integer Team-ID
    integer Carbon
    Returns:
    Whether the specified carbon-amount was succesfully granted to the specified team(s).
    Remarks:
    This command is only effective on the Marine (#ID 1) and Alien (#ID 2) team.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_GIVECARBON

    om_servercommand <string Command>

    Description:
    Executes the specified command on the server-commandline.
    Parameters:
    string Command
    Returns:
    Whether the command was succesfully executed.
    Remarks:
    None.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_SERVERCOMMAND

    om_luainstruction <string Instruction>

    Description:
    Executes the specified Lua-instruction inside the Server-VirtualMachine environment.
    Parameters:
    string Instruction
    Returns:
    Whether the command was succesfully executed.
    Remarks:
    Use this command with extreme caution, as it is very easy to pass an invalid instruction and potentially destabilize the server.
    Privilige-variable:
    NS2GmOvrmind.Priviliges.ConsoleCommand_LUAINSTRUCTION

    Web-Administration


    RCon-Administration


    Web-statistics


    Besides the stats-page for normal viewing, an array of feeds are available for off-site data-processing.

    JSON (JavaScript Object Notation)

    A .js-file that can be included in Java-scripts on pages that are hosted elsewhere entirely, from which variables with the stats-data are available.


    CSV (Tab Seperated Values)

    While CSV stands for Comma Seperated Values of course, in this particular case they are tab-seperated (which is completely legal). This is done because server-names might (or rather, most likely) contain spaces in them, thus ruling out the use of spaces for any other purpose. CSV-files are very general-purpose can be used in any environment.


    PHP (Serialize)

    A PHP-file that can be retrieved from within another PHP-script (hosted at a remote location), and from which variables containing the stats-data can be retrieved. A good tutorial to accomplish this can be found here.


    RSS (XML)

    Essentially an XML-file, which are pretty much universally supported by scripts\parsers.



    F.A.Q

    Nothing here yet...

    Troubleshooting

    Nothing here yet...

    Version history

    [ v20 (Rewrite) (Work in progress...) ]
    [ v19 (19-6-2012) ]
    [ v18 (5-5-2012) ]
    [ v17 (5-5-2012) ]
    [ v16 (23-3-2012) ]
    [ v15 (22-3-2012) ]
    [ v14 (25-2-2012) ]
    [ v13 (24-2-2012) ]
    [ v12 (19-2-2012) ]
    [ v11 (18-2-2012) ]
    [ v10 (16-4-2011) ]
    [ v9 (13-4-2011) ]
    [ v8 (30-3-2011) ]
    [ v7 (6-3-2011) ]
    [ v6 (5-3-2011) ]
    [ v5 (3-3-2011) ]
    [ v4 (26-1-2011) ]
    [ v3 (24-1-2011) ]
    [ v2 (13-1-2011) ]
    [ v1 (27-12-2010) ]
    Post edited by Unknown User on
  • McGlaspieMcGlaspie www.team156.com Lord MuckyMuck of the Programmers Join Date: 2010-07-26 Member: 73044Posts: 824Members, NS2 Playtester, Squad Five Blue, Reinforced - Onos, WC 2013 - Gold, Subnautica Playtester, Community Dev Team
    QUOTE
    The real milestone here (besides providing a level of administrating-abilities not at all present in the game yet), is that this modification operates without modifying a single file of the default NS2 Lua-files (which is exceedingly difficult, but possible).
    I'm quite curious how you pulled this off. Care to explain?

    Colored Skins Mod ( Forum Thread - Steam Workshop )
    Marine vs Marine Mod ( Forum Thread - Steam Workshop - Mod Tracker )
  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    Override game_setup.xml with a copy that points to your Lua-file as the top-level script. In your Lua-file manually include NS2's original top-level script (Server.lua or Client.lua depending on which VM you're working on). As Event.Hook is defined by the engine, it is available even before any NS2-files are included, thus you can hook into events before NS2 does. Further more there are of course the method-, function- and variable-overriding you can perform after NS2's top-level script has been included.
  • MCMLXXXIVMCMLXXXIV Join Date: 2010-04-14 Member: 71400Posts: 502Members
    This technique is brilliant! Will have to take a look.
  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    Uploaded version 1 of the mod.
  • scorpydudescorpydude Join Date: 2005-03-05 Member: 43603Posts: 81Members
  • endarendar Join Date: 2010-07-27 Member: 73256Posts: 620Members, Squad Five Blue
    Thank you player! just what I was looking for. Works great.

    After seeing enough lerks outside the map and hydras in RR its good to find this.
  • endarendar Join Date: 2010-07-27 Member: 73256Posts: 620Members, Squad Five Blue
    Finding this mod made me look further into the mods forum. This may be a silly question, but is it possible to run this with your stats mod? http://www.unknownworlds.com/ns2/forums/in...howtopic=111390
  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    Ah, I have given that some thought. It's technically actually very easy to do with my mods, as they aren't interfering with the game (or other mods) at all. Two reasons why I hadn't gotten around to it: I heard through the grape-vine someone else was actually creating such a platform already; and I didn't really expect people (outside of the enthousiasts) to run my mods at this point, let alone multiple at the same time!

    So what I'll do is I will create a mod-loader that's designed specifically to deal with my DLL-mods, this isn't much of a task, and I won't make anyone else's work redundant.
  • endarendar Join Date: 2010-07-27 Member: 73256Posts: 620Members, Squad Five Blue
    Hi Player,

    Now, dont take this as a "WTF YOUR MOD JUST MAKES IT CRASH" post.

    My question is, is there a possibility of it causing a crash? The server ive been running has been pretty stable for the whole of 160, but recently ive had a couple of crashes. First one it was up for a while, second crash it hadnt been running long. Is there any way I can find out what is causing it, or anything I can pass along to help you.
  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    I immediately subjected the mod to some additional scrutiny when I read your post, but have not been able to get it to crash. Trouble is, NS2 has the tendency to crash all on it's own, so it's hard to tell what exactly is going on. So a few questions to help clarify the problem:

    Are you running a listen- or a dedicated-server?
    Are you in the server yourself?
    Are there other players besides yourself?
    Are there bots in the server?
    Have you modified the game's Lua-files?
    What did the crash look like? (did the game simply close, was there a standard windows-notification or NS2's crash-dialog)
    Were you there at the time of the crash?
    What were you doing at the exact time of the crash?

    Thanks for the feedback.
  • RulgrokRulgrok Join Date: 2007-04-04 Member: 60559Posts: 196Members
    Player if you want to be awesome see if you can install a votekick function that might toggleable and performed by normal uses allowing them to kick off a player say if more than 60% vote too?
    http://steamcommunity.com/id/rulgrok/
    insufficient funds
    #156.ifunds

    No sympathy for griefers or the friends of.
  • CamronCamron Join Date: 2011-01-06 Member: 76356Posts: 305Members
  • endarendar Join Date: 2010-07-27 Member: 73256Posts: 620Members, Squad Five Blue
    Are you running a listen- or a dedicated-server?
    Dedicated.
    Are you in the server yourself?
    I assume you mean playing? Yes and no, I've been there when it crashed.
    Are there other players besides yourself?
    There have been (server was full with 14), Another time with 10, and once it has happened with only me in the server (metnioned again below).
    Are there bots in the server?
    Never.
    Have you modified the game's Lua-files?
    The only modification I have made to the games is as follows:
    1: This mod
    2: Obvious changes such as name/IP
    3: Couple of batch files to restart server when it leaks memory past 1.9gb
    So no lua modifications.
    What did the crash look like? (did the game simply close, was there a standard windows-notification or NS2's crash-dialog)
    Clients: simply a timeout
    Server: The console will just stop displaying, 2/3 times there has been no information. One time it displayed something about a lua overflow not being available, and "PreChangeName"
    It also shows the "This application has experienced a problem. Close?"
    Were you there at the time of the crash?
    This one is hard to say.
    I was told by a player that it crashed the instant he got into the comm chair. Only seen (heard of that) happening once.
    It may have something to do with players leaving the game/joining? I'm not sure but i have that feeling after seeing some disconnects cause it, but havnt seen it enough for it to be a useful metric.
    Also once it crashed right before I logged into the admin mod (empty server, only I had joined). But this could have been coincidence, EG:
    time 0:00.00 server up
    time 0:23.00 I joined server
    time 0:45.00 I type the om_login command
    And the server either crashed due to me typing it, or before I typed it and hadnt noticed the server was dead, since it gave me no feedback.
  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    QUOTE (Rulgrok @ Jan 9 2011, 03:35 AM) »
    Player if you want to be awesome see if you can install a votekick function that might toggleable and performed by normal uses allowing them to kick off a player say if more than 60% vote too?

    As I understand it the game currently does not synchronize Lua-files to the client. As soon as that is possible, it would be trivial to create a vote-system like L4D's (a simple slick-looking GUI). As it stands, a vote-kick system would be possible by having players send a console-command indicating whether they support the kick-vote, not unlike how it was done in the days of HL1. I plan to work on this when banning becomes possible (with the introduction Steam-IDs), as kicking someone without at least a temporary-ban wouldn't be much of a deterrent for griefers.

    QUOTE (Camron)
    Any plans of going open source?

    Yes and no. I will gladly paste any pieces of code that demonstrate how the mod functions, however, pasting the entire source-code integrally (at least to the point where people can compilate their own binaries) is very difficult. The reason for this is that I make use of a personal code-base that I would also have to open-source for the mod to work at any level.

    QUOTE (endar)
    Are you running a listen- or a dedicated-server?
    Dedicated.
    Are you in the server yourself?
    I assume you mean playing? Yes and no, I've been there when it crashed.
    Are there other players besides yourself?
    There have been (server was full with 14), Another time with 10, and once it has happened with only me in the server (metnioned again below).
    Are there bots in the server?
    Never.
    Have you modified the game's Lua-files?
    The only modification I have made to the games is as follows:
    1: This mod
    2: Obvious changes such as name/IP
    3: Couple of batch files to restart server when it leaks memory past 1.9gb
    So no lua modifications.
    What did the crash look like? (did the game simply close, was there a standard windows-notification or NS2's crash-dialog)
    Clients: simply a timeout
    Server: The console will just stop displaying, 2/3 times there has been no information. One time it displayed something about a lua overflow not being available, and "PreChangeName"
    It also shows the "This application has experienced a problem. Close?"
    Were you there at the time of the crash?
    This one is hard to say.
    I was told by a player that it crashed the instant he got into the comm chair. Only seen (heard of that) happening once.
    It may have something to do with players leaving the game/joining? I'm not sure but i have that feeling after seeing some disconnects cause it, but havnt seen it enough for it to be a useful metric.
    Also once it crashed right before I logged into the admin mod (empty server, only I had joined). But this could have been coincidence, EG:
    time 0:00.00 server up
    time 0:23.00 I joined server
    time 0:45.00 I type the om_login command
    And the server either crashed due to me typing it, or before I typed it and hadnt noticed the server was dead, since it gave me no feedback.

    Ah yes this definitely indicates the mod was at least some of the times at fault. It looks like additional error-handling is needed as Lua-errors aren't really supposed to occur ever (even if the mod's panicking internally, it shouldn't leak over to Lua). Thanks for the excellent feedback, and I suggest you not run it at least until I put up a new version (unless you're feeling lucky).
  • endarendar Join Date: 2010-07-27 Member: 73256Posts: 620Members, Squad Five Blue
    No worries, thanks for putting in the time to make this.

    I have another crash which you may find relevant (happened minutes ago).

    Server was low pop, myself and 1 other person. On the server log I thought I saw 3 people, but only 2 in game. It crashed shortly after.

    A player joins (as in their IP address is noted), but they never make it to the naming stage, he timed out before receiving a name (either real or NSPlayer), I received an error as a client which I failed to properly screenshot, and heres a screen of the server log (sending via PM due to IP addresses etc).

    The client error was "Failed to remove flash player, there has not been any added. Use (some function of getflashplayer)."

  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    QUOTE (endar @ Jan 9 2011, 06:20 AM) »
    A player joins (as in their IP address is noted), but they never make it to the naming stage, he timed out before receiving a name (either real or NSPlayer), I received an error as a client which I failed to properly screenshot, and heres a screen of the server log (sending via PM due to IP addresses etc).

    Yes I can picture exactly how and where this would cause a serious problem in the code. Again it's because I haven't put in (enough) error-handling. Basically I'm assuming Lua will always function properly and pass me correct data, while in fact it is quite the opposite and Lua should be treated as utterly unreliable (the reason for this is mostly because NS2 is still so very unstable).

    QUOTE (endar @ Jan 9 2011, 06:20 AM) »
    The client error was "Failed to remove flash player, there has not been any added. Use (some function of getflashplayer)."

    Interestingly enough this could actually just be NS2 at fault here, as I have this error in the console quite frequently when just playing the (vanilla) game.
  • endarendar Join Date: 2010-07-27 Member: 73256Posts: 620Members, Squad Five Blue
    QUOTE (player @ Jan 9 2011, 03:32 PM) »
    Interestingly enough this could actually just be NS2 at fault here, as I have this error in the console quite frequently when just playing the (vanilla) game.


    Yea it's a common error, i don't know if it caused the crash, could've just been the last thing that happened, completely unrelated.
  • ScardyBobScardyBob ScardyBob Join Date: 2009-11-25 Member: 69528Posts: 4,983Forum Admins, Forum Moderators, NS2 Playtester, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow mod
    Great admin mod! NS2 really needs something like this right now. Are you planning to add any additional commands? I quickly skimmed the SM command list and pulled the following commands that I think might be useful for NS2.

    Admin-only commands
    • Slay – Kills a player
    • Map – Changes to specified map
    • Setnextmap – Sets next map in cycle to specified map
    • Mute – Restricts target’s voice chat
    • Gag – Restricts target’s text chat
    • Silence – Restricts target’s text and voice chat
    • Unmute - Unrestricts target’s voice chat
    • Ungag - Unrestricts target’s text chat
    • Unsilence - Unrestricts target’s text and voice chat
    • Say – Gives a text chat message to all players
    • Chat – Gives a text chat message to all admins
    • Vote – Starts an vote with answers specified in the arguments
    • Cancelvote – Cancels current vote


    All-player commands
    • Voteslay – Starts a vote to kill the target
    • Votekick – Starts a vote to kick the target
    • Votemute – Starts a vote to mute the targets voicechat
    • Votemap – Starts a vote to change to the specified map
    • Votenextmap – Starts a vote to set the next map to the specified map


    I'd say slay and mute are probably the most useful ones that aren't in your admin mod. Also, the say/chat system could also be implemented in argument form (e.g. using @admin are part of the arguments for the say command) rather than making a separate command. The vote commands would probably be the lowest priority, but I've found them to be useful while admining in other games/mods.

    Also, I'm preferential to passive vote commands as a good way to reduce the need for 24/7 admin coverage on a server.
  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    QUOTE (ScardyBob @ Jan 10 2011, 02:50 AM) »
    Great admin mod! NS2 really needs something like this right now. Are you planning to add any additional commands? I quickly skimmed the SM command list and pulled the following commands that I think might be useful for NS2.

    I already have several commands pending to be implemented, usually what holds one back are the technical limitations of NS2's Lua-interface. A sum-up of the suggestions you made:
    * Slay – This is trivial, and I'll have it in next version.
    * Map – This is technically not possible yet (I'm sure you've noticed servers always run the same map during their life-time).
    * Setnextmap – See above.
    * Mute – Support for voice-chat is primitive, but the lua-code appears to allow for a mute-function, I don't think it'll be in the next version though.
    * Gag – This can be easely done, and I'll see if it gets in next version.
    * Silence – See the 2 above.
    * Unmute - See Mute.
    * Ungag - See Gag.
    * Unsilence - See Silence.
    * Say – Something like globay-say but proxy'd (and possibly masked) by the mod? Should be in quite soon.
    * Chat – This can be easely done, and I'll see if it gets in next version.
    * Vote – This is do-able, but requires a tiny bit of effort.
    * Cancelvote – See above.

    Regarding the player vote-commands, the commands themselfs aren't very difficult, but making sure a vote goes smooth and text-messages are recieved and sent in the right direction does take a bit of scrutiny.

    Now when I say next version I might actually mean the version after the one I'm working on now. The stability issues are what my #1 concern is at the moment, and I won't start on seriously expanding functionality until the mod is fully stable (which I think is quite logical).
  • endarendar Join Date: 2010-07-27 Member: 73256Posts: 620Members, Squad Five Blue
    I have a question about the problem with no uniqueID/steamID and not being able to ban. How does Steam know who you are currently playing with, and who you have recently played with. Steam seems to be able to link people ingame to their steam accounts. Am I missing something obvious? or is there just not enough information to find out how steam gets that info.
  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    edited January 2011
    It depends on the game. Most games on steam aren't really related to steam specifically, and just use it as a launch-platform. Other games (such as the HL-, CS- and L4D-series) are intertwined with steam, and thus can make use of steam's systems (such as SteamIDs and master-list server-queries). NS2 appears to be the latter, and thus has access to these steam-features. Spark has access to the SteamIDs, but there simply isn't a function yet to expose these to the Lua-script. It should be in very soon.
    Post edited by Unknown User on
  • MaxMax Technical Director, Unknown Worlds Entertainment Join Date: 2002-03-15 Member: 318Posts: 1,650Super Administrators, Retired Developer, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, Subnautica Developer, Pistachionauts
    QUOTE (player @ Jan 11 2011, 11:30 AM) »
    It depends on the game. Most games on steam aren't really related to steam specifically, and just use it as a launch-platform. Other games (such as the HL-, CS- and L4D-series) are intertwined with steam, and thus can make use of steam's systems (such as SteamIDs and master-list server-queries). NS2 appears to be the latter, and thus has access to these steam-features. Spark has access to the SteamIDs, but there simply isn't a function yet to expose these to the Lua-script. It should be in very soon.

    It's in!
    Max McGuire
    Technical Director, Unknown Worlds Entertainment
  • Slickk-Slickk- Join Date: 2007-11-26 Member: 63019Posts: 101Members
    Awesome.

    *Readies ban-hammer*
    [ The Gorges are at the door... ]

    UWE Remember...

    QUOTE
    Fans are clingy complaining dipsh*ts who will never ever be grateful for any concession you make. The moment you shut out their shrill, tremulous voices the happier you will be for it.
  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    For those interested, it concerns the 'GetUserId'-method of the 'ServerClient'-object. It returns an integer (a double actually, as all numbers are floating points in Lua) that contains the digested form of the classic SteamID format, which can be computed like so: STEAM_0:n:x -> 2x+n. So if we have STEAM_0:1:12345678, the SteamID-number returned by the 'GetUserId'-method will be 2*12345678+1 = 24691357.

    I'll have a new version of the mod out within a day or two. Amongst other things, it'll have auto-login via SteamID, banning (also via SteamID naturally) and improved stability.
  • endarendar Join Date: 2010-07-27 Member: 73256Posts: 620Members, Squad Five Blue
    QUOTE (player @ Jan 12 2011, 05:03 PM) »
    I'll have a new version of the mod out within a day or two. Amongst other things, it'll have auto-login via SteamID, banning (also via SteamID naturally) and improved stability.


    wow, thats all I can say.

    Great work player.
  • ScardyBobScardyBob ScardyBob Join Date: 2009-11-25 Member: 69528Posts: 4,983Forum Admins, Forum Moderators, NS2 Playtester, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow mod
    edited January 2011
    Seconded. Your admin mod is getting better by the minute.
    Post edited by Unknown User on
  • XuXuXuXu Join Date: 2011-01-01 Member: 76096Posts: 35Members, Reinforced - Silver
    edited January 2011
    nice job! We use it on our 161 Server and it works fine! Also in combination with the NS2Monitor. Looking forward for the next version with om_ban! :)

    just a question beside: What will om_eject and om_rename do?
    Post edited by Unknown User on
    Our Server currently down:
    www.exit1.at :: no escape. no way out. -- 12 Slots -- ns2_tram -- WINSERV 2008 R2 -- 3 Cores @ 2,6GhZ -- 2,5GB DDR3 RAM -- NS2-GmOvrmind v6

    NS2TUT by exit1 - Basic NS2 Gameplay Tutorials in GERMAN @ http://www.youtube.com/user/exit1at
  • RulgrokRulgrok Join Date: 2007-04-04 Member: 60559Posts: 196Members
    i imagine one ejects commander and the other renames and individual
    http://steamcommunity.com/id/rulgrok/
    insufficient funds
    #156.ifunds

    No sympathy for griefers or the friends of.
  • playerplayer Join Date: 2010-09-12 Member: 73982Posts: 1,677Members
    I've uploaded v2, new commands are: om_ban, om_eject, om_slay and om_rename. I wanted to test it a bit more before release, but seeing as people are now using a potentially unstable version, I decided to go ahead and post it anyway. It should be nice and stable now, as I've done away with the contrived nick-tracking mechanism, and am now using SteamIDs to track players.

    It should be noted that it doesn't yet store bans on the disk. This means that the om_ban-command ingame will create a ban that lasts as long as the server-process does. If you are really keen on banning someone permanently though, you can make use of the NS2GmOvrmind.AddBan-function as described in the start-post.

    QUOTE ('XuXu')
    just a question beside: What will om_eject and om_rename do?

    Rulgrok got it right. There's also a description of every command in the start-post, or you can simply use the om_help-command ingame.

    I'd like to add that if you notice any kind of instability, don't hesitate to post about it. Although it should be noted that, at the moment, NS2 doesn't need the help of GmOvrmind to lag and crash, but it's better to be safe.
«13456718
Sign In or Register to comment.