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();
}