Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

143 lines
4.1 KiB
Plaintext

////////////////////////////////////////////////////////////////////////
// speech_j_h - Speech Journal H
// This journal will track speech
// By Deva Bryson Winblood. 04/16/2005
////////////////////////////////////////////////////////////////////////
const int MAX_CHAT_LOG = 10;
///////////////////////
// PROTOTYPES
///////////////////////
// FILE: speech_j_h FUNCTION:ChatJ_AddToJournal()
// This will add a message to the journal.
void ChatJ_AddToJournal(object oPC,string sMsg);
// FILE: speech_j_h FUNCTION: ChatJ_GetFirstJournalEntry()
// This will return the first journal entry for this PC
string ChatJ_GetFirstJournalEntry(object oPC);
// FILE: speech_j_h FUNCTION: ChatJ_GetNextJournalEntry()
// This will return the next journal entry for this PC
string ChatJ_GetNextJournalEntry(object oPC);
// FILE: speech_j_h FUNCTION: ChatJ_RemoveFirstJournalEntry()
// This will remove the first journal entry making room for more
void ChatJ_RemoveFirstJournalEntry(object oPC);
// FILE: speech_j_h FUNCTION: ChatJ_UpdateJournal
// This will update the custom token used in the journal with
// the latest chat logs.
void ChatJ_UpdateJournal(object oPC);
///////////////////////
// FUNCTIONS
///////////////////////
string ChatJ_GetFirstJournalEntry(object oPC)
{
int nCP=GetLocalInt(oPC,"nChatPosition");
string sS="";
if (oPC!=OBJECT_INVALID)
{ // PC exists
sS=GetLocalString(oPC,"sChatLog_1");
SetLocalInt(oPC,"nChatMonitor",1);
} // PC exists
return sS;
} // ChatJ_GetFirstJournalEntry()
string ChatJ_GetNextJournalEntry(object oPC)
{
int nCP=GetLocalInt(oPC,"nChatPosition");
string sS="";
int nP;
if (oPC!=OBJECT_INVALID)
{ // PC exists
nP=GetLocalInt(oPC,"nChatMonitor");
nP++;
if (nP<=MAX_CHAT_LOG)
{ // within allowed
sS=GetLocalString(oPC,"sChatLog_"+IntToString(nP));
SetLocalInt(oPC,"nChatMonitor",nP);
} // within allowed
} // PC exists
return sS;
} // ChatJ_GetNextJournalEntry()
void ChatJ_RemoveFirstJournalEntry(object oPC)
{
int nCP=GetLocalInt(oPC,"nChatPosition");
string sS="";
int nP;
if (oPC!=OBJECT_INVALID)
{ // object exists
nP=1;
while(nP<MAX_CHAT_LOG)
{ // copy strings
sS=GetLocalString(oPC,"sChatLog_"+IntToString(nP+1));
if (GetStringLength(sS)>0) SetLocalString(oPC,"sChatLog_"+IntToString(nP),sS);
else { nP=MAX_CHAT_LOG+10; }
nP++;
} // copy strings
} // object exists
} // ChatJ_RemoveFirstJournalEntry()
void fnChatUpdate(object oPC)
{ // PURPOSE: handle the actual update
int nCP=GetLocalInt(oPC,"nChatPosition");
string sS="";
string sJ;
sS=ChatJ_GetFirstJournalEntry(oPC);
while(GetStringLength(sS)>0)
{ // log
sJ=sJ+sS+" ";
sS=ChatJ_GetNextJournalEntry(oPC);
} // log
if (GetStringLength(sJ)>0)
{ // journal exists
RemoveJournalQuestEntry("chatlog",oPC,FALSE,FALSE);
SetCustomToken(87000+nCP,sJ);
DelayCommand(0.5,AddJournalQuestEntry("chatlog",nCP,oPC,FALSE,FALSE));
} // journal exists
DeleteLocalInt(oPC,"bChatJournalUpdate");
} // fnChatUpdate()
void ChatJ_UpdateJournal(object oPC)
{
if (oPC!=OBJECT_INVALID)
{ // update
if (GetLocalInt(oPC,"bChatJournalUpdate")==FALSE)
{ // trigger update
DelayCommand(24.0,fnChatUpdate(oPC));
SetLocalInt(oPC,"bChatJournalUpdate",TRUE);
} // trigger update
} // update
} // ChatJ_UpdateJournal()
void ChatJ_AddToJournal(object oPC,string sMsg)
{
int nCP=GetLocalInt(oPC,"nChatPosition");
string sS="test";
int nC;
int nP;
nP=0;
while(nP<MAX_CHAT_LOG&&GetStringLength(sS)>1)
{ // find position to plug this text
nP++;
sS=GetLocalString(oPC,"sChatLog_"+IntToString(nP));
} // find position to plug this text
if (nP<=MAX_CHAT_LOG&&GetStringLength(sS)<2)
{ // found place to store journal
SetLocalString(oPC,"sChatLog_"+IntToString(nP),sMsg);
} // found place to store journal
else
{ // need to remove first entry
ChatJ_RemoveFirstJournalEntry(oPC);
SetLocalString(oPC,"sChatLog_"+IntToString(MAX_CHAT_LOG),sMsg);
} // need to remove first entry
DelayCommand(1.0,ChatJ_UpdateJournal(oPC));
} // ChatJ_AddToJournal()
//void main(){}