49 lines
1.7 KiB
Plaintext
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
|
|
}
|