// 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 }