Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system. Added PC deleter. Added ACP 4.1. Full compile. Updated release archive.
118 lines
4.9 KiB
Plaintext
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;
|
|
}
|
|
|