//////////////////////////////////////////////////////////////////////
///SmartBots AdminBot for Groups, https://www.mysmartbots.com
///Documentation and help: https://www.mysmartbots.com/dev/docs/AdminBot_for_LSL
//////////////////////////////////////////////////////////////////////
///Your group data
string SB_SETTINGS_GROUPNAME="sCoin";
string SB_SETTINGS_SECURITYCODE="SECURITY_CODE";
string SB_SETTINGS_INVITECMD="Role:Miner";///FORCE | Role:<role>
//////////////////////////////////////////////////////////////////////
string SB_VERSION="2.0";
///Setup and startup
integer SB_SETUP_SETGROUP=180101;
integer SB_SETUP_SETGROUPUUID=180102;
integer SB_SETUP_DEBUG=180103;
integer SB_STATUS_QUERY=180104;
integer SB_SETUP_DEVICENAME=180111;
integer SB_SETUP_BOTNAME=180112;
integer SB_SETUP_SETOPTIONS=180113;
///Group members control
integer SB_INVITE_SEND=180105;
integer SB_GROUP_EJECT=180107;
integer SB_AVATAR_GROUP=180114;
integer SB_ADJUST_GROUP_ROLE=180120;
integer SB_GET_GROUP_ROLES=180121;
///Group chat
integer SB_CHAT_SAY=180106;
integer SB_CHAT_LISTEN=180108;
integer SB_CHAT_MUTE=180115;
///Notices
integer SB_NOTICE_SEND=180109;
///Misc. commands
integer SB_RESET_ADMINBOT=9996660;
integer SB_SETUP_SETLINK=180110;
///EVENTS
integer SB_COMMAND_FAILED=180201;
integer SB_STATUS_REPLY=180202;
integer SB_CHAT_MESSAGE=180203;
integer SB_SETUP_SUCCESS=180204;
integer SB_SETUP_FAILED=180205;
integer SB_CHAT_SUCCESS=180206;
integer SB_GROUP_CHECKED=180207;
integer MODE_TOUCH=10001;
integer MODE_LAND=10002;
integer MODE_HIT=10003;
integer MODE_SIM=10004;
integer x;integer h;
integer mode(){
string g=llGetObjectDesc();
if(g=="land")return(MODE_LAND);
if(g=="sim")return(MODE_SIM);
if(g=="hit")return(MODE_HIT);
return(MODE_TOUCH);
}
integer b;
list blocked;
list blocked0;
send(key id){
llMessageLinked(LINK_SET,SB_INVITE_SEND,SB_SETTINGS_INVITECMD,id);
}
default
{
timer(){
if(++b>=30){
blocked0=[];
b=0;
}
if(++h>=360){
blocked=[];
h=0;
}
integer M=mode();
if(M!=MODE_LAND&&M!=MODE_SIM)return;
integer P=1;
if(M==MODE_SIM)P=4;
list L=llGetAgentList(P,[]);
integer len=llGetListLength(L);
if(!len)return;
for(x=0;x<len;x++){
key id=llList2Key(L,x);
if(llListFindList(blocked,[id])==-1){
blocked+=id;
send(id);
}
}
}
state_entry(){
llVolumeDetect(1);
llSetTimerEvent(10);
llMessageLinked(LINK_SET,SB_SETUP_SETGROUP,SB_SETTINGS_GROUPNAME,SB_SETTINGS_SECURITYCODE)
}
touch_start(integer a){
if(mode()!=MODE_TOUCH)return;
for(x=0;x<a;x++)send(llDetectedKey(x));
}
collision_end(integer a){
if(mode()!=MODE_HIT)return;
for(x=0;x<a;x++){
key id=llDetectedKey(x);
if(llListFindList(blocked0,[id])==-1){
blocked0+=id;
send(id);
}
}
}
link_message(integer sender,integer cmd,string data,key id){
if(cmd==SB_COMMAND_FAILED)llOwnerSay("AdminBot command failed, error code:\n"+data);else
if(cmd==SB_SETUP_FAILED)llOwnerSay("AdminBot group setup failed:\n"+data);else
if(cmd==SB_SETUP_SUCCESS)llOwnerSay("AdminBot group activated: "+data);
}
}