ff_u_con_status

Replace status console command with a more complete version.

Variables

ENABLE__FF_U_CON_STATUS: (string) (opt-out) Set to “N” on module disable unit.

Source code

// @code

#include "ff_i_core"


const string ENABLE__FF_U_CON_STATUS = "ENABLE__FF_U_CON_STATUS";


/*
Defaults:

Server Name: Dungeons
Maximum Clients: 20
Server Port: 5121
Module Name: Dungeons
Module Status: Running
PVP: Full
Difficulty: 3             Levels: 1 to 10
ELC: 1                    ILR: 1
One Party: 0              Server Vault: 1           Pause and Play: 0
Reload when Empty: 0      AutoSave Interval: 0      Public Server: 0

ID |         Player Name |        IP Address |      Character Name | CD Key(s)
---+---------------------+-------------------+---------------------+------------
 0 |              Player |       192.168.1.2 |        Hollino Kler | QRRKLPM7

*/


// -----------------------------------------------------------------------------

void OnPlayers()
{
  NWNX_Util_RawPrint("ID |         Player Name | IsDM |     IP Address | Relay |   CD Key |          BicFile | Level |    Character Name |");
  NWNX_Util_RawPrint("---+---------------------+------+----------------+-------+----------+------------------+-------+-------------------+");

  int nId = 0;
  object oPC = GetFirstPC();
  while (GetIsObjectValid(oPC))
  {
    string sOutput = "";
    sOutput += GetStringLeftPad(IntToString(nId), 2) + " |";
    sOutput += GetStringLeftPad(GetPCPlayerName(oPC), 20) + " |";
    sOutput += GetStringLeftPad(IntToString(GetIsDM(oPC)), 5) + " |";
    sOutput += GetStringLeftPad(GetPCIPAddress(oPC), 15) + " |";
    sOutput += GetStringLeftPad(GetIsPlayerConnectionRelayed(oPC) == 1 ? "Y" : "N", 6) + " |";
    sOutput += GetStringLeftPad(GetPCPublicCDKey(oPC), 9) + " |";
    sOutput += GetStringLeftPad(NWNX_Player_GetBicFileName(oPC), 17) + " |";
    sOutput += GetStringLeftPad(IntToString(GetPCLevel(oPC)), 6) + " |";
    sOutput += GetStringLeftPad(GetName(oPC), 18) + " |";

    NWNX_Util_RawPrint(sOutput);
    nId += 1;
    oPC = GetNextPC();
  }
}

void OnStatus()
{
  string sSho = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_DISALLOW_SHOUTING));
  string sELC = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_ENFORCE_LEGAL_CHARACTERS));
  string sXCR = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_EXAMINE_CHALLENGE_RATING));
  string sXFF = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_EXAMINE_EFFECTS));
  string sHHP = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_HIDE_HITPOINTS_GAINED));
  string sILR = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_ITEM_LEVEL_RESTRICTIONS));
  string s1PY = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_ONE_PARTY_ONLY));
  string sPAP = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_PAUSE_AND_PLAY));
  string sDM  = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_SHOW_DM_JOIN_MESSAGE));
  string sPLA = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_SHOW_PLAYER_JOIN_MESSAGES));
  string sMHP = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_USE_MAX_HITPOINTS));
  string sFS1 = IntToString(NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_AUTO_FAIL_SAVE_ON_1));
  string sPPWD = IntToString(GetStringLength(NWNX_Administration_GetPlayerPassword())>0);
  string sLvlm = IntToString(NWNX_Administration_GetMinLevel());
  string sLvlM = IntToString(NWNX_Administration_GetMaxLevel());
  string sPlayers = IntToString(GetPlayerCount());
  string sDMs = IntToString(GetDMCount());

  string sPS = NWNX_Util_GetEnvironmentVariable("NWN_PUBLICSERVER");
  string sSV = NWNX_Util_GetEnvironmentVariable("NWN_SERVERVAULT");
  string sMC = NWNX_Util_GetEnvironmentVariable("NWN_MAXCLIENTS");
  if (sPS == "") sPS = "??";
  if (sSV == "") sSV = "??";
  if (sMC == "") sMC = "??";

  string sDiff;
  switch (GetGameDifficulty())
  {
    case GAME_DIFFICULTY_DIFFICULT:  sDiff = "Difficult (4)"; break;
    case GAME_DIFFICULTY_CORE_RULES: sDiff = "Core rules (3)"; break;
    case GAME_DIFFICULTY_NORMAL:     sDiff = "Normal (2)"; break;
    case GAME_DIFFICULTY_EASY:       sDiff = "Easy (1)"; break;
    case GAME_DIFFICULTY_VERY_EASY:  sDiff = "Very Easy (0)"; break;
  }

  string sPVP;
  int nPVP = NWNX_Administration_GetPlayOption(NWNX_ADMINISTRATION_OPTION_PVP_SETTING);
  switch (nPVP)
  {
    case 0: sPVP = "No (0)"; break;
    case 1: sPVP = "Party (1)"; break;
    case 2: sPVP = "Full (2)"; break;
  }

  sELC = (sELC == "1") ? GetConsoleColorString(sELC, CONSOLE_COLOR_GREEN) : GetConsoleColorString(sELC, CONSOLE_COLOR_RED);
  sILR = (sILR == "1") ? GetConsoleColorString(sILR, CONSOLE_COLOR_GREEN) : GetConsoleColorString(sILR, CONSOLE_COLOR_RED);
  sPAP = (sPAP == "0") ? GetConsoleColorString(sPAP, CONSOLE_COLOR_GREEN) : GetConsoleColorString(sPAP, CONSOLE_COLOR_RED);

  NWNX_Util_RawPrint("Server Name: " + NWNX_Administration_GetServerName());
  NWNX_Util_RawPrint("Module Name: " + GetName(GetModule()));
  NWNX_Util_RawPrint(GetStringRightPad("Clients: " + sPlayers + " / " + sMC, 22) + "DMs: " + sDMs); // @TODO
  NWNX_Util_RawPrint(GetStringRightPad("PVP: "               + sPVP, 22) + GetStringRightPad("Difficulty: "   + sDiff, 27) + "Levels: " + sLvlm + " to " + sLvlM);
  NWNX_Util_RawPrint(GetStringRightPad("ELC: "               + sELC, 22) + "ILR: "          + sILR);
  NWNX_Util_RawPrint(GetStringRightPad("One Party: "         + s1PY, 22) + GetStringRightPad("Server Vault: " + sSV,  27) + "Pause and Play: " + sPAP);
  NWNX_Util_RawPrint(GetStringRightPad("Reload when Empty: " + "??", 22) + GetStringRightPad("AutoSave: "     + "??", 27) + "Public Server: " +  sPS);
  NWNX_Util_RawPrint(GetStringRightPad("Shouting: "          + sSho, 22) + GetStringRightPad("Examine CR: "   + sXCR, 27)  + "Examine Effects: " + sXFF);
  NWNX_Util_RawPrint(GetStringRightPad("Hide HP Gain: "      + sHHP, 22) + GetStringRightPad("Use HP Max: "   + sMHP, 27)  + "Fail Save on 1: "  + sFS1);
  NWNX_Util_RawPrint(GetStringRightPad("Show DM Join: "      + sDM, 22)  + GetStringRightPad("Show Player Join: " + sPLA, 27));
  NWNX_Util_RawPrint(GetStringRightPad("Player Password: "   + sPPWD, 22));

  OnPlayers();
}


// -----------------------------------------------------------------------------

void main()
{
  if (!GetModuleFlag(ENABLE__FF_U_CON_STATUS, TRUE))
    return;

  string sEvent = GetCurrentEvent();
  if (sEvent == ON_REGISTER)
  {
    RegisterConsoleCommand("players", __FILE__);
    RegisterConsoleCommand("status", __FILE__);
    SubscribeToEvent(ON_CONSOLE_COMMAND_HELP, __FILE__);
  }
  else if (sEvent == ON_CONSOLE_COMMAND_HELP)
    NWNX_Util_RawPrint(GetStringRightPad("status", CONSOLE_HELP_PAD) + "- Server status");
  else if (sEvent == GetConsoleEventName("status"))
   OnStatus();
  else if (sEvent == GetConsoleEventName("players"))
   OnPlayers();
}