ff_u_pc_lvl_min

Set player level upon first login.

When a player enters, if the player isn’t at least NEW_PLAYER_LEVEL, make him level NEW_PLAYER_LEVEL.

Variables

PLAYER_MIN_LEVEL: (int) Level to give to entering PC.

ENABLE__FF_U_PC_MIN_LVL: (string) (opt-in) Set to “Y” on module to enable.

Source code

// @code

#include "ff_i_core"

const string ENABLE__FF_U_PC_MIN_LVL = "ENABLE__FF_U_PC_MIN_LVL";

const string PLAYER_MIN_LEVEL = "PLAYER_MIN_LEVEL";


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

void OnClientEnter(object oPC)
{
  if (!GetIsPC(oPC))
    return;

  int nMinLevel = GetLocalInt(GetModule(), PLAYER_MIN_LEVEL);
  if (nMinLevel <= 1)
    nMinLevel = 1;
  if (nMinLevel > 40)
    nMinLevel = 40;

  if (GetXP(oPC) >= GetXPForLevel(nMinLevel))
    return;

  LogNotice(__FILE__ + ": " + GetPCInfo(oPC) + " level set to " + IntToString(nMinLevel));
  int nXP = GetXPForLevel(nMinLevel);
  SetXP(oPC, nXP);
}


// =============================================================================

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

  string sEvent = GetCurrentEvent();
  if (sEvent == ON_REGISTER)
    SubscribeToEvent(ON_DEFAULT_CLIENT_ENTER, __FILE__);
  else if (sEvent == ON_DEFAULT_CLIENT_ENTER)
    DelayCommand(0.1f, OnClientEnter(GetEnteringObject()));
}