HoS_PRC8/_mod/_module/nss/iscriminal.nss
Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

49 lines
1.7 KiB
Plaintext

// CRIMINAL CHECK
#include "x3_inc_string"
int fnHasStolenGoods(object oPC)
{
object oItem=GetFirstItemInInventory(oPC);
string sMsg;
int bRet=FALSE;
while(GetIsObjectValid(oItem))
{ // check for stolen goods
if(GetStolenFlag(oItem)==TRUE)
{
sMsg=StringToRGBString(GetName(oItem)+" is a stolen item.","744");
SendMessageToPC(oPC,sMsg);
bRet=TRUE;;
}
oItem=GetNextItemInInventory(oPC);
} // check for stolen goods
return bRet;
}
void main()
{
int nN=1;
object oMe=OBJECT_SELF;
object oPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC,oMe,nN,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN,CREATURE_TYPE_IS_ALIVE,TRUE);
object oTarget=OBJECT_INVALID;
string sPID;
while(oTarget==OBJECT_INVALID&&oPC!=OBJECT_INVALID)
{ // check for criminals
sPID=GetPCPublicCDKey(oPC)+GetPCPlayerName(oPC)+GetName(oPC);
if (GetLocalInt(oPC,"bPRISONESCAPE")==TRUE) oTarget=oPC;
else if (GetLocalInt(oPC,"nCRIMECOUNT")>0) oTarget=oPC;
else if (fnHasStolenGoods(oPC)&&GetLocalInt(GetModule(),sPID+"warn")!=GetCalendarDay())
{ // different day
oTarget=oPC;
SetLocalInt(oPC,"nCRIMECOUNT",GetLocalInt(oPC,"nCRIMECOUNT")+1);
SetLocalInt(GetModule(),sPID+"warn",GetCalendarDay());
} // different day
nN++;
oPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC,oMe,nN,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN,CREATURE_TYPE_IS_ALIVE,TRUE);
} // check for criminals
if (GetIsObjectValid(oTarget))
{ // issue warning
AssignCommand(oMe,ClearAllActions(TRUE));
AssignCommand(oMe,ActionStartConversation(oTarget,"municipal_guards",FALSE,FALSE));
} // issue warning
}