integer gIntScanTime = 5; list gLstAvatarsInRegion; list gLstAvatarsAlreadyHere; default { on_rez(integer p) { llResetScript(); } changed(integer c) { if (c & CHANGED_INVENTORY|CHANGED_OWNER|CHANGED_REGION) { llResetScript(); } } state_entry() { llPreloadSound("GreeterSound"); llSetTimerEvent(gIntScanTime); } timer() { list gLstAvatarsInRegion; gLstAvatarsInRegion = llGetAgentList(AGENT_LIST_REGION, []); integer intNumOfAvatars; intNumOfAvatars = llGetListLength(gLstAvatarsInRegion); integer index; for (index =0;index < intNumOfAvatars; index++) { key id; id = llList2Key(gLstAvatarsInRegion, index); if (llListFindList(gLstAvatarsAlreadyHere,id) == -1) { string strName; strName = llKey2Name(id); string strRegion; strRegion = llGetRegionName(); llOwnerSay(strName + " entered " + strRegion + " Region.\n"); llRegionSayTo(id,0,"Welcome to " + strRegion); gLstAvatarsAlreadyHere = gLstAvatarsAlreadyHere + [id]; llPlaySound("GreeterSound",1.0); ++index; } } intNumOfAvatars = llGetListLength(gLstAvatarsAlreadyHere); for (index=0;index < intNumOfAvatars;index++) { list lstThisAgent; lstThisAgent = llList2List(gLstAvatarsAlreadyHere,index,index); key kyThisAgent; kyThisAgent = llList2Key(lstThisAgent,0); if (llGetAgentSize(kyThisAgent) == ZERO_VECTOR) { gLstAvatarsAlreadyHere = llDeleteSubList(gLstAvatarsAlreadyHere,index,index); } ++index; } } }