- script @remotecmd NPC32767,{
callfunc "argv_splitter";
if (GM < CMD_REMOTECMD && GM < G_SYSOP) goto L_GM; // check if you can use it on self
.@target_id = BL_ID;
.@t$ = @argv$[1];
setarray @remotecmd[0], 0, 1, 1; // nr, to_self, multi_target
if (.@t$ == "map") goto L_Map;
if (.@t$ == "map!") goto L_AllMap;
if (.@t$ == "area") goto L_Area;
if (.@t$ == "area!") goto L_AllArea;
if (.@t$ != "") set .@target_id, getcharid(3, @argv$[1]);
if (.@t$ != "" && !(isloggedin(.@target_id))) goto L_Failed; // do NOT fallback to self
@target_id = .@target_id;
set @remotecmd[2], 0; // only one target
addtimer 0, strnpcinfo(0) + "::OnPC";
end;
L_Map:
set @remotecmd[1], 0; // do not include self
goto L_AllMap;
L_AllMap:
foreach 0, getmapname(), 0, 0, 32767, 32767, strnpcinfo(0)+"::OnPC";
goto L_Success;
L_Area:
set @remotecmd[1], 0; // do not include self
goto L_AllMap;
L_AllArea:
foreach 0, getmapname(), (POS_X - .range), (POS_Y - .range), (POS_X + .range), (POS_Y + .range), strnpcinfo(0)+"::OnPC";
goto L_Success;
OnPC:
if (@target_id == BL_ID && @remotecmd[1] < 1)
end;
remotecmd @argv$[0], strcharinfo(0, @target_id);
@remotecmd[0] = @remotecmd[0] + 1;
if (@remotecmd[2] < 1)
goto L_Success;
end;
L_Success:
gmlog "@remotecmd " + @args$;
message strcharinfo(0), "remotecmd : The operation succeeded. ["+ @remotecmd[0] + "]";
end;
L_Failed:
message strcharinfo(0), "remotecmd : Impossible to attach to the target player. Did you try putting the name in \"quotation marks\"?";
end;
L_GM:
message strcharinfo(0), "remotecmd : GM command is level "+ CMD_REMOTECMD +", but you are level " + GM;
end;
OnInit:
set .range, 14; // visible range
registercmd chr(ATCMD_SYMBOL) + "remotecmd", strnpcinfo(0);
end;
}