Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
117 lines
3.7 KiB
Plaintext
117 lines
3.7 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Chat Command include
|
|
//:: prc_inc_chat
|
|
//::///////////////////////////////////////////////
|
|
|
|
const string PRC_CHAT_HOOK_ACTIVE = "prc_chat_hook";
|
|
const string PRC_CHAT_HOOK_SCRIPT = "prc_chat_script";
|
|
const string PRC_PLAYER_RESPONSE = "prc_player_response";
|
|
|
|
void AddChatEventHook(object oPC, string sScriptToCall, float fDur = 0.0f);
|
|
|
|
struct _prc_inc_WordInfo{
|
|
int nWordStart;
|
|
int nWordLength;
|
|
};
|
|
|
|
//we assume that sDivider is always 1 character
|
|
struct _prc_inc_WordInfo GetStringWordInfo(string sString, int nWordToGet, string sDivider = " ")
|
|
{
|
|
struct _prc_inc_WordInfo info;
|
|
|
|
// Safety checks
|
|
if(sString == "")
|
|
return info;
|
|
|
|
if(sDivider == "")
|
|
sDivider = " ";
|
|
|
|
int nStrLength = GetStringLength(sString);
|
|
|
|
nWordToGet--;
|
|
|
|
// Start with the first word.
|
|
int nCurrentWord = 0;
|
|
int nCurrentStart = 0;
|
|
int nCurrentEnd = FindSubString(sString, sDivider);
|
|
// Advance to the specified element.
|
|
while (nCurrentWord < nWordToGet && nCurrentEnd > -1)
|
|
{
|
|
nCurrentWord++;
|
|
nCurrentStart = nCurrentEnd + 1;
|
|
nCurrentEnd = FindSubString(sString, sDivider, nCurrentStart);
|
|
}
|
|
// Adjust the end point if this is the last element.
|
|
if (nCurrentEnd == -1) nCurrentEnd = nStrLength;
|
|
|
|
if (nCurrentWord >= nWordToGet)
|
|
{
|
|
info.nWordStart = nCurrentStart;
|
|
info.nWordLength = nCurrentEnd-nCurrentStart;
|
|
}
|
|
|
|
return info;
|
|
}
|
|
|
|
string GetStringWord(string sString, int nWordToGet, string sDivider = " ")
|
|
{
|
|
struct _prc_inc_WordInfo info = GetStringWordInfo(sString, nWordToGet, sDivider);
|
|
return GetSubString(sString, info.nWordStart, info.nWordLength);
|
|
}
|
|
|
|
string GetStringWordToEnd(string sString, int nWordToGet, string sDivider = " ")
|
|
{
|
|
struct _prc_inc_WordInfo info = GetStringWordInfo(sString, nWordToGet, sDivider);
|
|
return GetSubString(sString, info.nWordStart, GetStringLength(sString)-info.nWordStart);
|
|
}
|
|
|
|
//Returns TRUE if sPrefix matches sWord or some part of the beginning of sWord
|
|
/*int GetStringMatchesAbbreviation(string sString, string sAbbreviationPattern)
|
|
{
|
|
int nShortestAbbreviation = FindSubString(sAbbreviationPattern, "-");
|
|
if(nShortestAbbreviation > 0)
|
|
sAbbreviationPattern = GetStringLeft(sAbbreviationPattern, nShortestAbbreviation) + GetStringRight(sAbbreviationPattern, GetStringLength(sAbbreviationPattern)-(nShortestAbbreviation+1));
|
|
else if (nShortestAbbreviation == 0)
|
|
{
|
|
sAbbreviationPattern = GetStringRight(sAbbreviationPattern, GetStringLength(sAbbreviationPattern)-1);
|
|
nShortestAbbreviation = GetStringLength(sAbbreviationPattern);
|
|
}
|
|
else
|
|
nShortestAbbreviation = GetStringLength(sAbbreviationPattern);
|
|
|
|
if(GetStringLength(sString) >= nShortestAbbreviation)
|
|
return GetStringLeft(sAbbreviationPattern, GetStringLength(sString)) == sString;
|
|
else
|
|
return FALSE;
|
|
}*/
|
|
|
|
int GetStringMatchesAbbreviation(string sString, string sAbbreviationPattern)
|
|
{
|
|
string sTest;
|
|
int iAbbrevEnd = FindSubString(sAbbreviationPattern, "-");
|
|
|
|
if(iAbbrevEnd == -1)
|
|
sTest = sAbbreviationPattern;
|
|
else
|
|
sTest = GetSubString(sAbbreviationPattern, 0, iAbbrevEnd);
|
|
|
|
return FindSubString(sString, sTest) == 0;
|
|
}
|
|
|
|
void HelpText(object oPC, string sString)
|
|
{
|
|
SendMessageToPC(oPC, PRC_TEXT_WHITE + sString + "</c>");
|
|
}
|
|
|
|
void _clear_chat_vars(object oPC)
|
|
{
|
|
DeleteLocalInt(oPC, PRC_CHAT_HOOK_ACTIVE);
|
|
DeleteLocalString(oPC, PRC_CHAT_HOOK_SCRIPT);
|
|
}
|
|
|
|
void AddChatEventHook(object oPC, string sScriptToCall, float fDur = 0.0f)
|
|
{
|
|
SetLocalInt(oPC, PRC_CHAT_HOOK_ACTIVE, TRUE);
|
|
SetLocalString(oPC, PRC_CHAT_HOOK_SCRIPT, sScriptToCall);
|
|
if(fDur > 0.0f) DelayCommand(fDur, _clear_chat_vars(oPC));
|
|
} |