RATDOG/_module/nss/dmfi_plchlishk_i.nss
Jaysyn904 ae152d0814 Added BESIE, MS Moneclature
Added BESIE, Markshire's Nomeclature & started initial setup for commoners in Baleas.
2021-09-01 23:42:36 -04:00

118 lines
4.9 KiB
Plaintext

//::///////////////////////////////////////////////
//:: DMFI - internal player chat listener hooking include
//:: dmfi_plchlishk_i
//:://////////////////////////////////////////////
/*
Include file containing routines for managing the internal DMFI chain of
"listeners", which are now implemented as OnPlayerChat event handlers rather
than creatures.
*/
//:://////////////////////////////////////////////
//:: Created By: tsunami282
//:: Created On: 2008.03.24
//:://////////////////////////////////////////////
const int DMFI_LISTEN_ON_CHANNEL_TALK = 1;
const int DMFI_LISTEN_ON_CHANNEL_WHISPER = 1;
const int DMFI_LISTEN_ON_CHANNEL_SHOUT = 1;
const int DMFI_LISTEN_ON_CHANNEL_DM = 1;
const int DMFI_LISTEN_ON_CHANNEL_PARTY = 1;
const string DMFI_EAVESDROP_HOOK_VARNAME = "dmfi_Eavesdrop";
const float WHISPER_DISTANCE = 1.0;
const float TALK_DISTANCE = 30.0;
string sHookTypeVarname = DMFI_EAVESDROP_HOOK_VARNAME + "_Type"; // 1=PC (says), 2=NPC/location (hears)
string sHookCreatureVarname = DMFI_EAVESDROP_HOOK_VARNAME + "_Creature"; // must be valid for type 1, for type 2 object_invalid means location only
string sHookRangeModeVarname = DMFI_EAVESDROP_HOOK_VARNAME + "_RangeMode"; // listening range: for type 1, 0=pc only, 1=pc's party; for type 2, 0=earshot, 1=area, 2=module
string sHookLocationVarname = DMFI_EAVESDROP_HOOK_VARNAME + "_Location"; // for type 2, location of "listening post"
string sHookChannelsVarname = DMFI_EAVESDROP_HOOK_VARNAME + "_Channels"; // bitmask of TALKVOLUME channels to listen to
string sHookOwnerVarname = DMFI_EAVESDROP_HOOK_VARNAME + "_Owner"; // unique ID of owner of this hook (he who will get the captured text)
string sHookBcastDMsVarname = DMFI_EAVESDROP_HOOK_VARNAME + "_BcastDMs"; // 0=relay message to owner only, 1=broadcast to all DMs
////////////////////////////////////////////////////////////////////////
void RemoveListenerHook(int hooknum)
{
int hooktype;
object hookcreature;
location hooklocation;
int hookchannels;
object hookowner;
int hookparty, hookbcast;
int iHook = hooknum;
string siHook = "", siHookN = "";
object oMod = GetModule();
while (1)
{
siHook = IntToString(iHook);
siHookN = IntToString(iHook+1);
hooktype = GetLocalInt(oMod, sHookTypeVarname+siHookN);
if (hooktype != 0)
{
hookcreature = GetLocalObject(oMod, sHookCreatureVarname+siHookN);
hooklocation = GetLocalLocation(oMod, sHookLocationVarname+siHookN);
hookchannels = GetLocalInt(oMod, sHookChannelsVarname+siHookN);
hookowner = GetLocalObject(oMod, sHookOwnerVarname+siHookN);
hookparty = GetLocalInt(oMod, sHookRangeModeVarname+siHookN);
hookbcast = GetLocalInt(oMod, sHookBcastDMsVarname+siHookN);
SetLocalInt(oMod, sHookTypeVarname+siHook, hooktype);
SetLocalObject(oMod, sHookCreatureVarname+siHook, hookcreature);
SetLocalLocation(oMod, sHookLocationVarname+siHook, hooklocation);
SetLocalInt(oMod, sHookChannelsVarname+siHook, hookchannels);
SetLocalObject(oMod, sHookOwnerVarname+siHook, hookowner);
SetLocalInt(oMod, sHookRangeModeVarname+siHook, hookparty);
SetLocalInt(oMod, sHookBcastDMsVarname+siHook, hookbcast);
}
else
{
DeleteLocalInt(oMod, sHookTypeVarname+siHook);
DeleteLocalObject(oMod, sHookCreatureVarname+siHook);
DeleteLocalLocation(oMod, sHookLocationVarname+siHook);
DeleteLocalInt(oMod, sHookChannelsVarname+siHook);
DeleteLocalObject(oMod, sHookOwnerVarname+siHook);
DeleteLocalInt(oMod, sHookRangeModeVarname+siHook);
DeleteLocalInt(oMod, sHookBcastDMsVarname+siHook);
break;
}
iHook++;
}
}
////////////////////////////////////////////////////////////////////////
int AppendListenerHook(int hooktype, object hookcreature, location hooklocation,
int hookchannels, int hookparty, int hookbcast, object hookowner)
{
int iHook = 0;
if (hooktype != 0)
{
int iHookType;
string siHook = "";
object oMod = GetModule();
iHook = 1;
while (1)
{
siHook = IntToString(iHook);
iHookType = GetLocalInt(oMod, sHookTypeVarname+siHook);
if (iHookType == 0) break; // end of list
iHook++;
}
SetLocalInt(oMod, sHookTypeVarname+siHook, hooktype);
SetLocalObject(oMod, sHookCreatureVarname+siHook, hookcreature);
SetLocalLocation(oMod, sHookLocationVarname+siHook, hooklocation);
SetLocalInt(oMod, sHookChannelsVarname+siHook, hookchannels);
SetLocalObject(oMod, sHookOwnerVarname+siHook, hookowner);
SetLocalInt(oMod, sHookRangeModeVarname+siHook, hookparty);
SetLocalInt(oMod, sHookBcastDMsVarname+siHook, hookbcast);
}
return iHook;
}