/action {^# Con%3ection Lost.} {/disableevent OmaSpyIt;/emoteall @AnsiBold()@ForeYellow()- @ForeWhite()Connection to the mud LOST! ..OmaSpyIt event disabled} {OmaSpy} /action {^At %3 o'clock, %1 you see %9 carrying %0, %4 land.} {/itemadd {OmaSpyWho} {$0};/var {$0DAct} {@AnsiReset()Dragon: @ForeGreen()Landed} {OmaSpyTemp};/var {$0Air} {@Time()} {OmaSpyTemp};/var {$0Here} {@Time()} {OmaSpyTemp};/if {@Exists($0FirstSeen)==0} {/var {$0FirstSeen} {@Time()} {OmaSpyTemp}};/if {@GetCount(OmaSpySpew)>0} {/emotegroup spew @AnsiBold()@ForeYellow()- @ForeWhite()$0 @ForeYellow()LANDED @ForeBlue()$1@ForeRed()!!}} {OmaSpy} /action {^In the immediate area, %7 carrying %0 fly%2 circles.} {/itemadd {OmaSpyWho} {$0};/var {$0DAct} {@AnsiReset()Dragon: Immediate Area} {OmaSpyTemp};/var {$0Air} {@Time()} {OmaSpyTemp};/if {@Exists($0FirstSeen)==0} {/var {$0FirstSeen} {xx:xx:xx} {OmaSpyTemp};/var {$0Here} {xx:xx:xx} {OmaSpyTemp}};/if {@GetCount(OmaSpySpew)>0} {/emotegroup spew @AnsiBold()@ForeYellow()- @ForeWhite()$0 @ForeYellow()took off @ForeBlue()via dragon.}} {OmaSpy} /var {------} {below are 2 actions that survey will fire on, still useful for people that land further away and attempt to sneak in. -- Seems med changed the syntax and no longer uses "o'clock" but gives the heading, so the "o'clock" action might be defunct now(?).} {DELETE} /action {^At %3 o'clock, %1 you%2 carrying %0 fly%4 circles.} {/itemadd {OmaSpyWho} {$0};/var {$0DAct} {@AnsiReset()Dragon: Transit} {OmaSpyTemp};/var {$0Air} {@Time()} {OmaSpyTemp};/if {@Exists($0FirstSeen)==0} {/var {$0FirstSeen} {xx:xx:xx} {OmaSpyTemp};/var {$0Here} {xx:xx:xx} {OmaSpyTemp}};/if {@GetCount(OmaSpySpew)>0} {/emotegroup spew @AnsiBold()@ForeYellow()- @ForeWhite()$0 @ForeBlue()$1 is flying on a Dragon.}} {OmaSpy} /action {^To the %3, %1, you%2 carrying %0 flying in circles.} {/itemadd {OmaSpyWho} {$0};/var {$0DAct} {@AnsiReset()Dragon: Transit} {OmaSpyTemp};/var {$0Air} {@Time()} {OmaSpyTemp};/if {@Exists($0FirstSeen)==0} {/var {$0FirstSeen} {xx:xx:xx} {OmaSpyTemp};/var {$0Here} {xx:xx:xx} {OmaSpyTemp}};/if {@GetCount(OmaSpySpew)>0} {/emotegroup spew @AnsiBold()@ForeYellow()- @ForeWhite()$0 @ForeBlue()$1 is flying on a Dragon.}} {OmaSpy} /action {^Players in your vi%7inity:} {/clearlist OmaSpyWhere;survey} {OmaSpyPromptAction} /action {[%0] - %1} {/if {@InList(OmaSpyIgnore,@RTrim($0))==0} {/itemadd OmaSpyWho {@RTrim($0)};/itemadd OmaSpyWhere @RTrim($0);/if {@Exists(@RTrim($0)FirstSeen)==0} {/var {@RTrim($0)FirstSeen} {@Time()} {OmaSpyTemp};/if {@GetCount(OmaSpySpew)>0} {/emotegroup spew @AnsiBold()@ForeYellow()- @ForeRed()New Threat: @ForeWhite()@RTrim($0)}};/if {@InList(OmaSpyWhereLast,@RTrim($0))==0} {/emotegroup spew @AnsiBold()@ForeYellow()- @ForeWhite()@RTrim($0) @ForeGreen()is back on "where"};/var {@RTrim($0)Here} {@Time()} {OmaSpyTemp};/var {@RTrim($0)DAct} {Where} {OmaSpyTemp};/var {@RTrim($0)Air} {xx:xx:xx} {OmaSpyTemp}}} {OmaSpyPromptAction} /action {^%0 chants the magical phrase, '%1'} {/if {@WordCount($0)==1} {/if {@InList(OmaSpyIgnore,@RTrim($0))==0} {/itemadd OmaSpyWho {@RTrim($0)};/if {@Exists(@RTrim($0)FirstSeen)==0} {/var {@RTrim($0)FirstSeen} {@Time()} {OmaSpyTemp};/if {@GetCount(OmaSpySpew)>0} {/emotegroup spew @AnsiBold()@ForeYellow()- @ForeRed()New Threat: @ForeWhite()@RTrim($0)}};/var {@RTrim($0)Here} {@Time()} {OmaSpyTemp};/var {@RTrim($0)DAct} {Casting} {OmaSpyTemp};/var {@RTrim($0)Air} {xx:xx:xx} {OmaSpyTemp}}}} {OmaSpy} /action {^%0 %7 ar%3ived.} {/if {@WordCount($0)==1} {/if {@InList(OmaSpyIgnore,@RTrim($0))==0} {/itemadd OmaSpyWho {@RTrim($0)};/if {@Exists(@RTrim($0)FirstSeen)==0} {/var {@RTrim($0)FirstSeen} {@Time()} {OmaSpyTemp};/if {@GetCount(OmaSpySpew)>0} {/emotegroup spew @AnsiBold()@ForeYellow()- @ForeRed()New Threat: @ForeWhite()@RTrim($0)}};/var {@RTrim($0)Here} {@Time()} {OmaSpyTemp};/var {@RTrim($0)DAct} {Walking} {OmaSpyTemp};/var {@RTrim($0)Air} {xx:xx:xx} {OmaSpyTemp}}}} {OmaSpy} /action {^You he%3r %0 shout, '%1'.} {/if {@WordCount($0)==1} {/if {@InList(OmaSpyIgnore,@RTrim($0))==0} {/itemadd OmaSpyWho {@RTrim($0)};/if {@Exists(@RTrim($0)FirstSeen)==0} {/var {@RTrim($0)FirstSeen} {@Time()} {OmaSpyTemp};/if {@GetCount(OmaSpySpew)>0} {/emotegroup spew @AnsiBold()@ForeYellow()- @ForeRed()New Threat: @ForeWhite()@RTrim($0)}};/var {@RTrim($0)Here} {@Time()} {OmaSpyTemp};/var {@RTrim($0)DAct} {Shout} {OmaSpyTemp};/var {@RTrim($0)Air} {xx:xx:xx} {OmaSpyTemp}}}} {OmaSpy} /action {^%0 says, '%7'.} {/if {@WordCount($0)==1} {/if {@InList(OmaSpyIgnore,@RTrim($0))==0} {/itemadd OmaSpyWho {@RTrim($0)};/if {@Exists(@RTrim($0)FirstSeen)==0} {/var {@RTrim($0)FirstSeen} {@Time()} {OmaSpyTemp};/if {@GetCount(OmaSpySpew)>0} {/emotegroup spew @AnsiBold()@ForeYellow()- @ForeRed()New Threat: @ForeWhite()@RTrim($0)}};/var {@RTrim($0)Here} {@Time()} {OmaSpyTemp};/var {@RTrim($0)DAct} {Say} {OmaSpyTemp};/var {@RTrim($0)Air} {xx:xx:xx} {OmaSpyTemp}}}} {OmaSpy} /action {<%0hp %1m%2br>} {/disableaction {[%0] - %8};/if {@GetCount(OmaSpyWhereLast)>0} {/loop {1,@GetCount(OmaSpyWhereLast)} {/if {@InList(OmaSpyWhere,@GetItem(OmaSpyWhereLast,$LoopCount))==0} {/var {@GetItem(OmaSpyWhereLast,$LoopCount)DAct} {@AnsiBold()@ForeRed()MIA};/emotegroup spew @AnsiBold()@ForeYellow()- @ForeWhite()@GetItem(OmaSpyWhereLast,$LoopCount) @ForeRed()is no longer on "where"!}}};/disablegroup OmaSpyPromptAction} {OmaSpyPromptAction} /action {%0 chats to you, 'help'} {/emote $0 @AnsiBold()@Chr(10)@ForeGreen()Management Commands via Chat:@Chr(10)@ForeYellow()os allow @ForeWhite()- @ForeBlue()Allow a person on chat basic access to OmaSpy. Using "clearIt" (yes CAP i) instead of a name will clear the entire list.@Chr(10)@AnsiBold()@ForeYellow()os disallow @ForeWhite()- @ForeBlue()Remove someone's basic access to OmaSpy.@Chr(10)@ForeYellow()os mgt @ForeWhite()- @ForeBlue()Allow a person on chat full access to OmaSpy (add/remove players, reset, etc). To remove a name from or to clear the Management list you must do it manually from the MM session running the server. (On initial run of script, person running it must add someone (self) manually to the OmaSpyMgt list so this will function).@Chr(10)@ForeYellow()os ig @ForeWhite()- @ForeBlue()Add a playername to ignore if they show up on where/survey. Name is CaSe sensitive, match it exactly how the person's game name is. If the name given was previously saved as a threat it will be removed.@Chr(10)@ForeYellow()os CleanTime @ForeWhite()- @ForeBlue()Time in seconds that "stale" info will be removed. An event runs every 10 minutes, checking the last time seen vs. the CleanTime. If info is old it's removed. Default time is 3600 seconds (1 hour).@Chr(10)@ForeYellow()os CleanDrag @ForeWhite()- @ForeBlue()Like CleanTime, this cleans up stale entries that only have stored dragon flight sightings. Default stale time is 900 seconds (15 minutes). The event running this runs every 7 minutes.@Chr(10)@ForeYellow()os rem @ForeWhite()- @ForeBlue()Remove a specific player's info from the database.@Chr(10)@ForeGreen()User Commands via Chat:@Chr(10)@ForeYellow()os @ForeWhite()- @ForeBlue()See the big display o'info.@Chr(10)@ForeYellow()os allow ? @ForeWhite()- @ForeBlue()List out people using the OmaSpy server.@Chr(10)@ForeYellow()os spew @ForeWhite()- @ForeBlue()Enable or Disable getting instant updates for key events.@Chr(10)@ForeYellow()os msg @ForeWhite()- @ForeBlue()Send a message to someone using the server. Handy to get the attention of a manager to "Allow" you access.} {OmaSpy} /var {------} {local (alias type) commands, mostly for "showme" stuff} {DELETE} /alias {os1} {/if {@GetCount(OmaSpyWho)=0} {/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()So far I have gathered no information...}} {/var OmaSpyTemp {@AnsiBold()@Chr(10)};/loop {1,@GetCount(OmaSpyWho)} {/var OmaSpyTemp {$OmaSpyTemp@ForeBlue()@GetItem(OmaSpyWho,$LoopCount)@AnsiReset()@PadRight(.,.,@Math(14-@Len(@GetItem(OmaSpyWho,$LoopCount))))};/if {@IsNumber(@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))==1} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))/60)/60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))/60)/60))))@AnsiReset():@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))/60)%60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))/60)%60))))@AnsiReset():@AnsiBold()@PadLeft(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))%60),0,@Math(2-@Len(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))%60))))@AnsiReset()....}} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiReset()xx:xx:xx....}};/if {@IsNumber(@Var(@GetItem(OmaSpyWho,$LoopCount)Here))==1} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))/60)/60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))/60)/60))))@AnsiReset():@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))/60)%60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))/60)%60))))@AnsiReset():@AnsiBold()@PadLeft(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))%60),0,@Math(2-@Len(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))%60))))@AnsiReset()....}} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiReset()xx:xx:xx....}};/if {@IsNumber(@Var(@GetItem(OmaSpyWho,$LoopCount)Air))==1} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))/60)/60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))/60)/60))))@AnsiReset():@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))/60)%60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))/60)%60))))@AnsiReset():@AnsiBold()@PadLeft(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))%60),0,@Math(2-@Len(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))%60))))@AnsiReset()....@AnsiBold()@ForeBlue()@Var(@GetItem(OmaSpyWho,$LoopCount)DAct)}} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiReset()xx:xx:xx....@AnsiBold()@ForeBlue()@Var(@GetItem(OmaSpyWho,$LoopCount)DAct)}};/var {OmaSpyTemp} {$OmaSpyTemp@AnsiBold()@Chr(10)}};/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()Report:@Chr(10)@ForeGreen() First Last Seen on Seen@Chr(10)Name Spotted Spotted Dragon Action@Chr(10)$OmaSpyTemp}}} {OmaSpy} /alias {osAllow %1} {/if {$1=="clearIt"} {/clearlist OmaSpyAllow;/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()$0 @ForeBlue()The Allow list has been CLEARED!!@AnsiReset()}} {/if {$1=="?"} {/var temp {@Chr(10)};/loop {1,@GetCount(OmaSpyAllow)} {/var {temp} {$temp@Chr(10)@GetItem(OmaSpyAllow,$LoopCount)}};/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()People using OmaSpy:@ForeBlue()$temp@Chr(10)@AnsiReset()}} {/itemadd {OmaSpyAllow} {$1};/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()$1 @ForeBlue()has been allowed access to the server!}}}} {OmaSpy} /alias {osMgt %1} {/itemadd {OmaSpyMgt} {$1};/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()$1 @ForeBlue()has been added to the Manager list!@AnsiReset()}} {OmaSpy} /alias {osIg %1} {/itemadd {OmaSpyIgnore} {$1};/itemdel OmaSpyWho $1;/unvar {$1Here};/unvar {$1Air};/unvar {$1FirstSeen};/unvar {$1DAct};/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()$1 @ForeBlue()is now being Ignored!}} {OmaSpy} /alias {osDisallow %1} {/if {@InList(OmaSpyAllow,$1)==0} {/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeBlue()"@ForeWhite()$1@ForeBlue()" isn't a valid name, aborted!@AnsiReset()}} {/itemdel OmaSpyAllow $1;/chatgrouprem $1 spew;/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()$1's @ForeBlue()access to the server has been removed!@AnsiReset()};/emote $1 @AnsiBold()@ForeYellow()- @ForeRed()Your access to the OmaSpy Server has been revoked!!}} {OmaSpy} /alias {osCleanTime %1} {/if {@IsNumber($1)==1} {/var OSCleanTime $1;/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeBlue()CleanUp stale-time changed to @ForeGreen()$1 @ForeBlue()seconds!}}} {OmaSpy} /alias {osCleanDrag %1} {/if {@IsNumber($1)==1} {/var OSCleanDragon $1;/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeBlue()CleanDragon stale-time changed to @ForeGreen()$1 @ForeBlue()seconds!}}} {OmaSpy} /alias {osInfo} {/empty mTemp;/empty aTemp;/empty iTemp;/empty wTemp;/empty igTemp;/if {@GetCount(OmaSpyWho)>0} {/loop {1,@GetCount(OmaSpyWho)} {/var wTemp {@ForeGreen()$wTemp @GetItem(OmaSpyWho,$LoopCount)}}} {/var wTemp @AnsiBold()@ForeGreen()None};/if {@GetCount(OmaSpyIgnore)>0} {/loop {1,@GetCount(OmaSpyIgnore)} {/var igTemp {@ForeGreen()$igTemp @GetItem(OmaSpyIgnore,$LoopCount)}}} {/var igTemp @AnsiBold()@ForeGreen()None};/if {@GetCount(OmaSpyMgt)>0} {/loop {1,@GetCount(OmaSpyMgt)} {/var mTemp {@ForeGreen()$mTemp @GetItem(OmaSpyMgt,$LoopCount)}}} {/var mTemp @AnsiBold()@ForeGreen()None};/if {@GetCount(OmaSpyAllow)>0} {/loop {1,@GetCount(OmaSpyAllow)} {/var aTemp {@ForeGreen()$aTemp @GetItem(OmaSpyAllow,$LoopCount)}}} {/var aTemp @AnsiBold()@ForeGreen()None};/if {@GetCount(OmaSpyIgnore)>0} {/loop {1,@GetCount(OmaSpyIgnore)} {/var iTemp {@ForeGreen()$iTemp @GetItem(OmaSpyIgnore,$LoopCount)}}} {/var iTemp @AnsiBold()@ForeGreen()None};/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()Management Info:@Chr(10)@ForeBlue()Tracking @ForeCyan()@GetCount(OmaSpyWho) @ForeBlue()players:@Chr(10)$wTemp@Chr(10)@ForeBlue()Ignoring @ForeCyan()@GetCount(OmaSpyIgnore) @ForeBlue()players:@Chr(10)$igTemp@Chr(10)@ForeBlue()People Connected: @ForeCyan()@ChatConnects()@Chr(10)@ForeCyan()@GetCount(OmaSpyAllow) @ForeBlue()People with Allow privs: $aTemp@Chr(10)@ForeCyan()@GetCount(OmaSpyMgt) @ForeBlue()Managers: $mTemp@Chr(10)@ForeBlue()CleanUp stale-time set to: @ForeCyan()$OSCleanTime @ForeBlue()seconds@Chr(10)Dragon Flight stale-time set to: @ForeCyan()$OSCleanDragon @ForeBlue()seconds@Chr(10)}} {OmaSpy} /alias {osRem %1} {/if {@InList(OmaSpyWho,$1)==0} {/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()$1 @ForeBlue()isn't a valid name!}} {/unvar {$1Here};/unvar {$1Air};/unvar {$1FirstSeen};/unvar {$1DAct};/itemdel OmaSpyWho $1;/showme {@Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeBlue()Removed all info for @ForeCyan()$1}}} {OmaSpy} /var {------} {Mgt Commands} {DELETE} /action {%0 chats to you, 'os allow %1'} {/if {$1=="clearIt" && @InList(OmaSpyMgt,$0)==1} {/clearlist OmaSpyAllow;/loop {1,@GetCount(OmaSpyMgt)} {/emote @GetItem(OmaSpyMgt,$LoopCount) @AnsiBold()@ForeYellow()- @ForeWhite()$0 @ForeBlue()has CLEARED the Allow list!!@AnsiReset()}} {/if {$1=="?" && @InList(OmaSpyAllow,$0)==1} {/var temp {@Chr(10)};/loop {1,@GetCount(OmaSpyAllow)} {/var {temp} {$temp@Chr(10)@GetItem(OmaSpyAllow,$LoopCount)}};/emote $0 @AnsiBold()@ForeYellow()- @ForeWhite()People using OmaSpy:@ForeBlue()$temp@Chr(10)@ForeRed()} {/if {@InList(OmaSpyMgt,$0)==1} {/itemadd {OmaSpyAllow} {$1};/loop {1,@GetCount(OmaSpyMgt)} {/emote @GetItem(OmaSpyMgt,$LoopCount) @AnsiBold()@ForeYellow()- @ForeWhite()$0 @ForeBlue()has allowed @ForeGreen()$1 @ForeBlue()access to the server!}}}}} {OmaSpy} /action {%0 chats to you, 'os mgt %1'} {/if {@InList(OmaSpyMgt,$0)==1} {/itemadd {OmaSpyMgt} {$1}}} {OmaSpy} /action {%0 chats to you, 'os ig %1'} {/if {@InList(OmaSpyMgt,$0)==1} {/itemadd {OmaSpyIgnore} {$1};/itemdel OmaSpyWho $1;/unvar {$1Here};/unvar {$1Air};/unvar {$1FirstSeen};/unvar {$1DAct};/emote $0 @AnsiBold()@ForeYellow()- @ForeWhite()$1 @ForeRed()is now being Ignored!}} {OmaSpy} /action {%0 chats to you, 'os disallow %1'} {/if {@InList(OmaSpyMgt,$0)==1} {/if {@InList(OmaSpyAllow,$1)==0} {/emote $0 @AnsiBold()@ForeYellow()- @ForeBlue()"@ForeWhite()$1@ForeBlue()" isn't a valid name, aborted!} {/itemdel OmaSpyAllow $1;/chatgrouprem $1 spew;/loop {1,@GetCount(OmaSpyMgt)} {/emote @GetItem(OmaSpyMgt,$LoopCount) @AnsiBold()@ForeYellow()- @ForeWhite()$0 @ForeBlue()has REMOVED @ForeRed()$1's @ForeBlue()access to the server!};/emote $1 @AnsiBold()@ForeYellow()- @ForeRed()Your access to the OmaSpy Server has been revoked!!}}} {OmaSpy} /action {%0 chats to you, 'os CleanTime %1'} {/if {@InList(OmaSpyMgt,$0)==1} {/if {@IsNumber($1)==1} {/var OSCleanTime $1;/loop {1,@GetCount(OmaSpyMgt)} {/emote @GetItem(OmaSpyMgt,$LoopCount) @AnsiBold()@ForeYellow()- @ForeWhite()$0 @ForeBlue()has set the CleanUp stale-time to @ForeGreen()$1 @ForeBlue()seconds!}}}} {OmaSpy} /action {%0 chats to you, 'os CleanDrag %1'} {/if {@InList(OmaSpyMgt,$0)==1} {/if {@IsNumber($1)==1} {/var OSCleanDragon $1;/loop {1,@GetCount(OmaSpyMgt)} {/emote @GetItem(OmaSpyMgt,$LoopCount) @AnsiBold()@ForeYellow()- @ForeWhite()$0 @ForeBlue()has set the CleanDragon stale-time to @ForeGreen()$1 @ForeBlue()seconds!}}}} {OmaSpy} /action {%0 chats to you, 'os info'} {/empty mTemp;/empty aTemp;/empty iTemp;/empty wTemp;/empty igTemp;/if {@GetCount(OmaSpyWho)>0} {/loop {1,@GetCount(OmaSpyWho)} {/var wTemp {@ForeGreen()$wTemp @GetItem(OmaSpyWho,$LoopCount)}}} {/var wTemp @AnsiBold()@ForeGreen()None};/if {@GetCount(OmaSpyIgnore)>0} {/loop {1,@GetCount(OmaSpyIgnore)} {/var igTemp {@ForeGreen()$igTemp @GetItem(OmaSpyIgnore,$LoopCount)}}} {/var igTemp @AnsiBold()@ForeGreen()None};/if {@GetCount(OmaSpyMgt)>0} {/loop {1,@GetCount(OmaSpyMgt)} {/var mTemp {@ForeGreen()$mTemp @GetItem(OmaSpyMgt,$LoopCount)}}} {/var mTemp @AnsiBold()@ForeGreen()None};/if {@GetCount(OmaSpyAllow)>0} {/loop {1,@GetCount(OmaSpyAllow)} {/var aTemp {@ForeGreen()$aTemp @GetItem(OmaSpyAllow,$LoopCount)}}} {/var aTemp @AnsiBold()@ForeGreen()None};/if {@GetCount(OmaSpyIgnore)>0} {/loop {1,@GetCount(OmaSpyIgnore)} {/var iTemp {@ForeGreen()$iTemp @GetItem(OmaSpyIgnore,$LoopCount)}}} {/var iTemp @AnsiBold()@ForeGreen()None};/emote $0 @Chr(10)@AnsiBold()@ForeYellow()OmaSpy: @ForeWhite()Management Info:@Chr(10)@ForeBlue()Tracking @ForeCyan()@GetCount(OmaSpyWho) @ForeBlue()players:@Chr(10)$wTemp@Chr(10)@ForeBlue()Ignoring @ForeCyan()@GetCount(OmaSpyIgnore) @ForeBlue()players:@Chr(10)$igTemp@Chr(10)@ForeBlue()People Connected: @ForeCyan()@ChatConnects()@Chr(10)@ForeCyan()@GetCount(OmaSpyAllow) @ForeBlue()People with Allow privs: $aTemp@Chr(10)@ForeCyan()@GetCount(OmaSpyMgt) @ForeBlue()Managers: $mTemp@Chr(10)@ForeBlue()CleanUp stale-time set to: @ForeCyan()$OSCleanTime @ForeBlue()seconds@Chr(10)Dragon Flight stale-time set to: @ForeCyan()$OSCleanDragon @ForeBlue()seconds@Chr(10)} {OmaSpy} /action {%0 chats to you, 'os rem %1'} {/if {@InList(OmaSpyMgt,$0)==1} {/if {@InList(OmaSpyWho,$1)==0} {/emote $0 @AnsiBold()@ForeYellow()- @ForeWhite()$1 @ForeBlue()isn't a valid name!} {/unvar {$1Here};/unvar {$1Air};/unvar {$1FirstSeen};/unvar {$1DAct};/itemdel OmaSpyWho $1;/loop {1,@GetCount(OmaSpyMgt)} {/emote @GetItem(OmaSpyMgt,$LoopCount) @AnsiBold()@ForeYellow()- @ForeWhite()$0 @ForeBlue()removed all info for @ForeCyan()$1}}}} {OmaSpy} /var {------} {User Commands} {DELETE} /action {%0 chats to you, 'os spew %1'} {/if {@InList(OmaSpyAllow,$0)==1} {/if {$1=="on"} {/chatgroupset $0 spew;/itemadd OmaSpySpew $0;/emote $0 @AnsiBold()@ForeYellow()- @ForeWhite()You have been added to the "spew". You'll now get updates via chat immediately upon key events!} {/if {$1=="off"} {/chatgrouprem $0 spew;/itemdel OmaSpySpew $0;/emote $0 @AnsiBold()@ForeYellow()- @ForeWhite()You will no longer be informed of key events as they happen!}}}} {OmaSpy} /action {%0 chats to you, 'os msg %1 %2'} {/if {@InList(OmaSpyAllow,$1)==0} {/emote $0 @AnsiBold()@ForeYellow()- @ForeRed()"@ForeWhite()$1@ForeRed()" Isn't a valid chatname, try again. "os msg "} {/emote $1 @AnsiBold()@ForeYellow()- @ForeRed()Message From: @ForeWhite()$0 @AnsiReset()- @AnsiBold()@ForeBlue()"$2"}} {OmaSpy} /action {%0 chats to you, 'os'} {/if {@GetCount(OmaSpyWho)=0} {/emote $0 @AnsiBold()@ForeYellow()- @ForeWhite()So far I have gathered no information...} {/var OmaSpyTemp {@AnsiBold()@Chr(10)};/loop {1,@GetCount(OmaSpyWho)} {/var OmaSpyTemp {$OmaSpyTemp@ForeBlue()@GetItem(OmaSpyWho,$LoopCount)@AnsiReset()@PadRight(.,.,@Math(14-@Len(@GetItem(OmaSpyWho,$LoopCount))))};/if {@IsNumber(@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))==1} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))/60)/60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))/60)/60))))@AnsiReset():@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))/60)%60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))/60)%60))))@AnsiReset():@AnsiBold()@PadLeft(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))%60),0,@Math(2-@Len(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)FirstSeen))%60))))@AnsiReset()....}} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiReset()xx:xx:xx....}};/if {@IsNumber(@Var(@GetItem(OmaSpyWho,$LoopCount)Here))==1} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))/60)/60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))/60)/60))))@AnsiReset():@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))/60)%60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))/60)%60))))@AnsiReset():@AnsiBold()@PadLeft(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))%60),0,@Math(2-@Len(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))%60))))@AnsiReset()....}} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiReset()xx:xx:xx....}};/if {@IsNumber(@Var(@GetItem(OmaSpyWho,$LoopCount)Air))==1} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))/60)/60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))/60)/60))))@AnsiReset():@AnsiBold()@PadLeft(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))/60)%60),0,@Math(2-@Len(@Math(((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))/60)%60))))@AnsiReset():@AnsiBold()@PadLeft(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))%60),0,@Math(2-@Len(@Math((@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))%60))))@AnsiReset()....@AnsiBold()@ForeBlue()@Var(@GetItem(OmaSpyWho,$LoopCount)DAct)}} {/var {OmaSpyTemp} {$OmaSpyTemp@AnsiReset()xx:xx:xx....@AnsiBold()@ForeBlue()@Var(@GetItem(OmaSpyWho,$LoopCount)DAct)}};/var {OmaSpyTemp} {$OmaSpyTemp@AnsiBold()@Chr(10)}};/emote $0 @AnsiBold()@ForeYellow()- @ForeWhite()Report:@Chr(10)@ForeGreen() First Last Seen on Seen@Chr(10)Name Spotted Spotted Dragon Action@Chr(10)$OmaSpyTemp}} {OmaSpy} /var {------} {Mgt spew} {DELETE} /action {^# Chat connection with %0 lost.} {/if {@GetCount(OmaSpyMgt)>0} {/loop {1,@GetCount(OmaSpyMgt)} {/emote @GetItem(OmaSpyMgt,$LoopCount) @AnsiBold()@ForeYellow()- @ForeMagenta()Management: @ForeWhite()$0 @ForeBlue()Disconnected from the server.}}} {OmaSpy} /action {^# Chat re%7uest from %0 accepted.} {/var LastChat $0} {OmaSpy} /action {^# Chat est%7blished.} {/emote $LastChat @AnsiBold()@ForeYellow()- @ForeBlue()chat to me "help" for info.} {OmaSpy} /action {^ %0 is now %1.} {/if {@GetCount(OmaSpyMgt)>0} {/loop {1,@GetCount(OmaSpyMgt)} {/emote @GetItem(OmaSpyMgt,$LoopCount) @AnsiBold()@ForeYellow()- @ForeMagenta()Management: @ForeWhite()$0 @ForeBlue()Changed their chatname to: @ForeWhite()$1}}} {OmaSpy} /event {OmaSpyIt} {10} {/if {@GetCount(OmaSpyWhere)>0} {/clearlist OmaSpyWhereLast;/loop {1,@GetCount(OmaSpyWhere)} {/itemadd OmaSpyWhereLast @GetItem(OmaSpyWhere,$LoopCount)}};/enablegroup OmaSpyPromptAction;where} {OmaSpy} /alias {osw} {/if {@GetCount(OmaSpyWhere)>0} {/clearlist OmaSpyWhereLast;/loop {1,@GetCount(OmaSpyWhere)} {/itemadd OmaSpyWhereLast @GetItem(OmaSpyWhere,$LoopCount)}};/enablegroup OmaSpyPromptAction;where} {OmaSpy} /event {OmaSpyCleanUp} {600} {/clearlist OmaSpyCleanUp;/loop {1,@GetCount(OmaSpyWho)} {/if {@IsNumber(@Var(@GetItem(OmaSpyWho,$LoopCount)Here))==1} {/if {@Math(@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Here))>=$OSCleanTime} {/unvar {@GetItem(OmaSpyWho,$LoopCount)Here};/unvar {@GetItem(OmaSpyWho,$LoopCount)Air};/unvar {@GetItem(OmaSpyWho,$LoopCount)DAct};/unvar {@GetItem(OmaSpyWho,$LoopCount)FirstSeen};/itemadd OmaSpyCleanUp @GetItem(OmaSpyWho,$LoopCount)}}};/if {@GetCount(OmaSpyCleanUp)>0} {/loop {1,@GetCount(OmaSpyCleanUp)} {/itemdel {OmaSpyWho} {@GetItem(OmaSpyCleanUp,$LoopCount)}}};/loop {1,@GetCount(OmaSpyMgt)} {/emote @GetItem(OmaSpyMgt,$LoopCount) @AnsiBold()@ForeYellow()- @ForeWhite()Clean Up: @ForeGreen()@GetCount(OmaSpyCleanUp) @ForeBlue()stale player databases have been removed from OmaSpy!}} {OmaSpy} /event {OmaSpyCleanDragon} {420} {/clearlist OmaSpyCleanDragon;/loop {1,@GetCount(OmaSpyWho)} {/if {@IsNumber(@Var(@GetItem(OmaSpyWho,$LoopCount)Here))==0 && @IsNumber(@Var(@GetItem(OmaSpyWho,$LoopCount)Air))==1} {/if {@Math(@Time()-@Var(@GetItem(OmaSpyWho,$LoopCount)Air))>=$OSCleanDragon} {/unvar {@GetItem(OmaSpyWho,$LoopCount)Here};/unvar {@GetItem(OmaSpyWho,$LoopCount)Air};/unvar {@GetItem(OmaSpyWho,$LoopCount)DAct};/unvar {@GetItem(OmaSpyWho,$LoopCount)FirstSeen};/itemadd OmaSpyCleanDragon @GetItem(OmaSpyWho,$LoopCount)}}};/if {@GetCount(OmaSpyCleanDragon)>0} {/loop {1,@GetCount(OmaSpyCleanDragon)} {/itemdel {OmaSpyWho} {@GetItem(OmaSpyCleanDragon,$LoopCount)}}};/loop {1,@GetCount(OmaSpyMgt)} {/emote @GetItem(OmaSpyMgt,$LoopCount) @AnsiBold()@ForeYellow()- @ForeWhite()Clean Dragon: @ForeGreen()@GetCount(OmaSpyCleanDragon) @ForeBlue()stale player databases have been removed from OmaSpy!}} {OmaSpy} /listadd {OmaSpyWhere} {OmaSpy} /listadd {OmaSpyWhereLast} {OmaSpy} /listadd {OmaSpyWho} {OmaSpy} /listadd {OmaSpyIgnore} {OmaSpy} /itemadd {OmaSpyIgnore} {someone} /itemadd {OmaSpyIgnore} {A} /itemadd {OmaSpyIgnore} {An} /itemadd {OmaSpyIgnore} {The} /itemadd {OmaSpyIgnore} {Someone} /listadd {OmaSpyAllow} {OmaSpy} /listadd {OmaSpyMgt} {OmaSpy} /listadd {OmaSpyCleanUp} {OmaSpy} /listadd {OmaSpyCleanDragon} {OmaSpy} /listadd {OmaSpySpew} {OmaSpy} /var {temp} {null} /var {mTemp} {null} {OmaSpy} /var {aTemp} {null} {OmaSpy} /var {iTemp} {null} {OmaSpy} /var {wTemp} {null} {OmaSpy} /var {igTemp} {null} {OmaSpy} /var {OmaSpyTemp} {null} {OmaSpy} /var {OSCleanTime} {3600} {OmaSpy} /var {OSCleanDragon} {900} {OmaSpy} /chatname {OmaSpy} /var {NOTE} {Vars: All vars "threat" vars (info on players on where/survey/dragons) are grouped as "OmaSpyTemp" for easy mass-deletion. "Here" is for most current time seen on where. "FirstSeen" is time player was first seen on where. "Air" is most current time seen flying via survey or dragon flight reports (landed/took off, circling). "DAct" stores the dragonflight action person was doing.} {DELETE} /var {NOTE2} {Survey/Dragon-flight reports give time of "action", and the "action" for survey reports are: "LANDED", "Flying, Immediate Area", and "In Transit" (Landed, Flying very nearby, In flight transit - otherwise it's "----" (null)} {DELETE} /var {NOTE3} {Managers get some spew by default for various server-side events (people connecting/disconn, changing chat names, etc). If this is annoying you can make a /gag to stop it. There's no way via the script to stop it because I'm too lazy to try to stop it.} {DELETE} /var {NOTE4} {You should use a Page setting of zero (page #0) on med, OR make an action to send a /cr to the mud if you get like "Hit enter or Q to quit" paging prompts.} {DELETE} /unvar {------}