ff_u_chat_delete
Enables the player to delete the PC.
Enables /delete chat command with confirmation.
Variables
ENABLE__FF_U_CHAT_DELETE: (string) (opt-out) Set to “N” on module to disable unit.
Source code
// @code
#include "ff_i_core"
const string ENABLE__FF_U_CHAT_DELETE = "ENABLE__FF_U_CHAT_DELETE";
const string C1 = CHAT_COLOR_DEBUG;
const string C2 = CHAT_COLOR_SERVER;
// -----------------------------------------------------------------------------
void OnHelp();
void OnHelp()
{
object oSpeaker = GetPCChatSpeaker();
if (!GetIsPossessedFamiliar(oSpeaker))
SendMessageToPC(oSpeaker, _RGB("/delete: ", C1) + _RGB("Delete character.", C2));
}
// -----------------------------------------------------------------------------
void OnChat();
void OnChat()
{
object oModule = GetModule();
object oSpeaker = GetPCChatSpeaker();
string sMessage = GetPCChatMessage();
if (GetIsPossessedFamiliar(oSpeaker))
return;
sMessage = GetStringTrim(GetStringLowerCase(sMessage));
struct CLI_ARGUMENTS sArgs = GetArguments(sMessage);
if (sArgs.sArg0 != "/delete")
return;
if (sArgs.nCount == 0)
{
string sPasswordChar = GetRandomString(ASCII_DIGITS, 4);
SetLocalString(oSpeaker, "DELETE_PASSWORD", sPasswordChar);
SendServerMessage(oSpeaker, "To confirm the deletion of your character, please type '/delete " + sPasswordChar + "'.", STRING_COLOR_CINNABAR);
}
else if (sArgs.nCount == 1)
{
string sPasswordIn = sArgs.sArg1;
string sPasswordChar = GetLocalString(oSpeaker, "DELETE_PASSWORD");
if ((sPasswordIn == sPasswordChar) && (sPasswordIn != ""))
{
string sMessage = "Player character has been deleted.";
LogWarning(GetPCInfo(oSpeaker) + " decided to delete this character.");
EradicatePC(oSpeaker, sMessage);
return;
}
}
SetPCChatMessage("");
}
// -----------------------------------------------------------------------------
void main()
{
if (!GetModuleFlag(ENABLE__FF_U_CHAT_DELETE, TRUE))
return;
string sEvent = GetCurrentEvent();
if (sEvent == ON_REGISTER)
{
SubscribeToEvent(ON_DEFAULT_PLAYER_CHAT, __FILE__);
SubscribeToEvent(ON_DEFAULT_PLAYER_CHAT_HELP, __FILE__);
}
else if (sEvent == ON_DEFAULT_PLAYER_CHAT)
OnChat();
else if (sEvent == ON_DEFAULT_PLAYER_CHAT_HELP)
OnHelp();
}