Subpixel has a valid question. To help you guys better understand what he is asking, maybe this example will help:
function serverCmdSetWordReplacement(%client,%original,%replacement)
{
%client.wordReplacement[%original] = %replacement;
}
package WordReplacement
{
function serverCmdMessageSent(%client,%message);
{
%message = replaceWords(%client,%message);
Parent::serverCmdMessageSent(%client,%message);
}
};
activatePackage(WordReplacement);
function replaceWords(%client,%message)
{
}
What would you put in the replaceWords function?
As a solution, I've seen most scripts add a line to where they set pairs:
function serverCmdSetWordReplacement(%client,%original,%replacement)
{
%client.wordReplacement[%original] = %replacement;
%client.wordReplacementInputs = trim(%client.wordReplacementInputs SPC %original);
}
package WordReplacement
{
function serverCmdMessageSent(%client,%message);
{
%message = replaceWords(%client,%message);
Parent::serverCmdMessageSent(%client,%message);
}
};
activatePackage(WordReplacement);
function replaceWords(%client,%message)
{
%inputs = %client.wordReplacementInputs;
%count = getWords(%inputs);
for(%i = 0; %i < %count; %i++)
{
%input = getWord(%inputs,%i);
%replacement = %client.wordReplacement[%input];
%message = trim(strReplace(" " @ %message @ " "," " @ %input @ " "," " @ %replacement @ " "));
}
return %message;
}
This would also give you functionality to check if a field has been set:
if(strPos(" " @ %client.wordReplacementInputs @ " "," " @ %fieldToCheck @ " ") != -1)
And remove a field when you perhaps clear the key -> value pair:
%client.wordReplacementInputs = trim(strReplace(" " @ %client.wordReplacementInputs @ " "," " @ %fieldToRemove @ " ",""));