/******************************************************************************/ /* NWNX_SYSTEM Function Include */ /******************************************************************************/ /* Copyright(c) Krynnhaven - Xanas */ /* Created: January 18, 2004 */ /* Updated: January 19, 2004 */ /******************************************************************************/ #include "string_inc" /****************************** Prototypes ************************************/ // Object param is used to get player name (so players can only delete their own characters // charname is the name of the character name to delete, excluding the .bic void DeleteCharacterFile(object oObject, string sCharName); // As DeleteCharacterFile but for dms and use a string of player name (object is the dm) void DMDeleteCharacterFile(object oObject, string sCharName, string sPlayerName); // Object supplied produces the character name, players can only retrieve their own characters listing string RetrieveCharacterFiles(object oObject); // Same as RetrieveCharacterFiles only a string of the playername is supplied for the listing (for dm usage) string DMRetrieveCharacterFiles(string sPlayerName); // Same as DeleteCharacterFile but performs a backup, in example this is used previous to DeleteCommand in case of problems void BackupCharacterFile(object oObject, string sCharName); // Same as BackupCharacterFile but for dms, uses string of PlayerName as well void DMBackupCharacterFile(object oObject, string sCharName, string sPlayerName); // Handles listener commands for NWNX System - requires string_inc void NWNXSystemCommandHandler(object oPlayer, string sParameter); /****************************** Prototypes ************************************/ /**************************** Implementation *********************************/ void DeleteCharacterFile(object oObject, string sCharName) { string sPlayerName = GetPCPlayerName(oObject); DelayCommand(5.0, SetLocalString(oObject, "NWNX!SYSTEM!DELETE", "./servervault/"+sPlayerName+"/"+sCharName+".bic")); } string RetrieveCharacterFiles(object oObject) { string sPlayerName = GetPCPlayerName(oObject); // long long string for storage buffering. SetLocalString(GetModule(), "NWNX!SYSTEM!RETRIEVE", sPlayerName+"! "+ " "+ " "+ " "+ " "+ " "+ " "+ " "+ " "); string sCharReturn = GetLocalString(GetModule(), "NWNX!SYSTEM!RETRIEVE"); if(sCharReturn == "") { sCharReturn = "Call this again to retrieve character files"; } return sCharReturn; } void BackupCharacterFile(object oObject, string sCharName) { string sPlayerName = GetPCPlayerName(oObject); SetLocalString(oObject, "NWNX!SYSTEM!BACKUP", sPlayerName+"/"+sCharName+".bic"); } void DMDeleteCharacterFile(object oObject, string sCharName, string sPlayerName) { DelayCommand(5.0, SetLocalString(oObject, "NWNX!SYSTEM!DELETE", "./servervault/"+sPlayerName+"/"+sCharName+".bic")); } void DMBackupCharacterFile(object oObject, string sCharName, string sPlayerName) { SetLocalString(oObject, "NWNX!SYSTEM!BACKUP", sPlayerName+"/"+sCharName+".bic"); } string DMRetrieveCharacterFiles(string sPlayerName) { SetLocalString(GetModule(), "NWNX!SYSTEM!RETRIEVE", sPlayerName+"! "+ " "+ " "+ " "+ " "+ " "+ " "+ " "+ " "); string sCharReturn = GetLocalString(GetModule(), "NWNX!SYSTEM!RETRIEVE"); if(sCharReturn == "") { sCharReturn = "Call this again to retrieve character files"; } return sCharReturn; } void NWNXSystemCommandHandler(object oPlayer, string sParameter) { if(GetStringLeft(sParameter, 4) == "list" || GetStringLeft(sParameter, 4) == "help") { SendMessageToPC(oPlayer, "nwnx::DeleteMyChar CharNameToDelete (don't use bic extension) \n"+ "nwnx::ListMyChars (lists chars in your folder \n"+ "nwnx::ListPlayerChars PlayerName (lists players chars - dm tool) \n"+ "nwnx::DeletePlayerChar PlayerName CharName (don't use bic extension"); return; } if(GetStringLeft(sParameter, 12) == "DeleteMyChar") { BackupCharacterFile(oPlayer, ReturnWord(sParameter, 2)); DeleteCharacterFile(oPlayer, ReturnWord(sParameter, 2)); SendMessageToPC(oPlayer, "Character with name "+sParameter+" deleted"); return; } if(GetStringLeft(sParameter, 11) == "ListMyChars") { SendMessageToPC(oPlayer, RetrieveCharacterFiles(oPlayer)); return; } if(GetStringLeft(sParameter, 16) == "DeletePlayerChar" && GetIsDM(oPlayer)) { string sParam1 = ReturnWord(sParameter, 2); string sParam2 = ReturnWord(sParameter, 3); DMBackupCharacterFile(oPlayer, sParam2, sParam1); DMDeleteCharacterFile(oPlayer, sParam2, sParam1); SendMessageToPC(oPlayer, "Character with name "+sParam1+" deleted from folder of player "+sParam2); return; } if(GetStringLeft(sParameter, 15) == "ListPlayerChars" && GetIsDM(oPlayer)) { string sParam = ReturnWord(sParameter, 2); SendMessageToPC(oPlayer, DMRetrieveCharacterFiles(sParam)); SendMessageToPC(oPlayer, "Retrieving "+sParam); return; } } /**************************** Implementation *********************************/