2/26/04: I don't really remember what I updated, but it works better.
checkspawns.mac
Code: Select all
| - CheckSpawns macro by Lestor
|
| Commands:
| /echo help + Diplays commands.
| /echo add <spawnname> + Adds a spawn name to the list in the INI file.
| /echo beep [ONCE/ON/OFF] + Turns beeping on or off. Or only beep once.
| /echo log [ON/OFF] + Turns logging on or off.
| /echo reload + Reloads the INI file.
#turbo
#define INIFILE spawns.ini
#event HelpCommand "[MQ2] help"
#event AddCommand "[MQ2] add"
#event BeepCommand "[MQ2] beep"
#event LogCommand "[MQ2] log"
#event ReloadCommand "[MQ2] reload"
Sub Main
/declare zone global
/declare spawn global
/declare count1 global
/declare count2 global
/declare delay global
/declare spawnlist array
/varset zone 0
/varset spawn 0
/echo SpawnChecker v1.0 loaded.
/echo Use '/echo help' for a list of commands.
/if "@zone"!="$zone()" {
/call GetINIList
/echo Loading spawn list for $zone()...
}
:Loop
/doevents
/if "@zone"!="$zone()" {
/call GetINIList
/echo Loading spawn list for $zone()...
}
/if "$ini(INIFILE,"@zone",Spawn$int(@spawn))"==NOTFOUND /varset spawn 0
/if n $searchspawn("$ini(INIFILE,"@zone",Spawn$int(@spawn))")==0 /if "@spawnlist($int(@spawn))"!="NULL" /if "@spawnlist($int(@spawn))"!="UNDEFINED-ARRAY-ELEMENT" /call ReportTime "DESPAWNED" "@id"
/if n $searchspawn("$ini(INIFILE,"@zone",Spawn$int(@spawn))")>0 /call Alarm $searchspawn("$ini(INIFILE,"@zone",Spawn$int(@spawn))")
/varadd spawn 1
/doevents
/goto :Loop
/return
Sub Alarm(id)
/call ReportTime "SPAWNED" "@id"
/doevents
/if $ini(INIFILE,Settings,Beep)==ON /beep
/if $ini(INIFILE,Settings,Beep)==OFF /return
/if $return==ADDED {
/delay 5
/return
}
/if $ini(INIFILE,Settings,Beep)==ONCE /return
/varset count1 0
/if n @delay>1 /varsub delay 1
:Delay
/if "@spawnlist($int(@count1))"==UNDEFINED-ARRAY-ELEMENT /return
/if "@spawnlist($int(@count1))"==0 /delay @delay
/doevents
/varadd count1 1
/goto :Delay
/return
Sub ReportTime(action,id)
/if "@spawnlist($int(@spawn))"!="NULL" /goto :Despawned
/if @action==SPAWNED {
/varset delay 20
/if $ini(INIFILE,Settings,Beep)==ONCE /beep
/echo [$if(n,$time(h)>12,$int($calc($time(h)-12)),$time(h)):$if(n,$time(m)<10,0$time(m),$time(m))$if(n,$time(h)>12,pm,am)] $spawn(@id,name,clean) is up! ($int($spawn(@id,y)), $int($spawn(@id,x)), $int($spawn(@id,z)))
/if $ini(INIFILE,Settings,Log)==ON /mqlog [$if(n,$time(h)>12,$int($calc($time(h)-12)),$time(h)):$if(n,$time(m)<10,0$time(m),$time(m))$if(n,$time(h)>12,pm,am)] $spawn(@id,name,clean) spawned at: ($int($spawn(@id,y)), $int($spawn(@id,x)), $int($spawn(@id,z)))
/varset spawnlist($int(@spawn)) "$spawn(@id,name,clean)"
}
/return ADDED
:Despawned
/if @action==DESPAWNED {
/varset delay 20
/echo [$if(n,$time(h)>12,$int($calc($time(h)-12)),$time(h)):$if(n,$time(m)<10,0$time(m),$time(m))$if(n,$time(h)>12,pm,am)] @spawnlist($int(@spawn)) despawned.
/if $ini(INIFILE,Settings,Log)==ON /mqlog [$if(n,$time(h)>12,$int($calc($time(h)-12)),$time(h)):$if(n,$time(m)<10,0$time(m),$time(m))$if(n,$time(h)>12,pm,am)] @spawnlist($int(@spawn)) despawned.
/varset spawnlist($int(@spawn)) NULL
}
/return
sub GetINIList
/varset zone "$zone()"
/varset spawn 0
:Loop
/if "$ini(INIFILE,"@zone",Spawn$int(@spawn))"==NOTFOUND /return
/varset spawnlist($int(@spawn)) NULL
/varadd spawn 1
/goto :Loop
/return
sub AddSpawn(spawnname)
/varset count2 0
:Loop
/doevents
/if "$ini(INIFILE,"@zone",Spawn$int(@count2))"==NOTFOUND /goto :Add
/varadd count2 1
/goto :Loop
:Add
/ini "INIFILE" "@zone" "Spawn$int(@count2)" "@spawnname"
/echo '@spawnname' added to INI file.
/call GetINIList
/return
Sub Event_HelpCommand
/echo - /echo add <spawnname>
/echo - /echo beep [ONCE/ON/OFF]
/echo - /echo log [ON/OFF]
/echo - /echo reload
/return
Sub Event_AddCommand(text)
/if "$right(3,@text)"==add {
/echo You must specify a spawn name.
/return
}
/call AddSpawn "$right($calc($strlen("@text")-10),"@text")
/return
Sub Event_LogCommand(text)
/if "$right(3,"@text")"==log {
/if $ini(INIFILE,Settings,Log)==OFF /goto :On
/if $ini(INIFILE,Settings,Log)==ON /goto :Off
}
/if "$right(3,"@text")"==OFF /goto :Off
/if "$right(2,"@text")"==ON /goto :On
/echo Invalid command.
/return
:Off
/ini "INIFILE" "Settings" "Log" "OFF"
/echo Logging is now OFF.
/return
:On
/ini "INIFILE" "Settings" "Log" "ON"
/echo Logging is now ON.
/return
Sub Event_BeepCommand(text)
/if "$right(4,"@text")"==beep {
/if $ini(INIFILE,Settings,Beep)==OFF /goto :Once
/if $ini(INIFILE,Settings,Beep)==ON /goto :Off
/if $ini(INIFILE,Settings,Beep)==ONCE /goto :On
}
/if "$right(3,"@text")"==OFF /goto :Off
/if "$right(2,"@text")"==ON /goto :On
/if "$right(4,"@text")"==ONCE /goto :Once
/echo Invalid command.
/return
:Once
/ini "INIFILE" "Settings" "Beep" "ONCE"
/echo Beep notification set to ONCE.
/beep
/return
:On
/ini "INIFILE" "Settings" "Beep" "ON"
/echo Beep notification set to ON.
/beep
/return
:Off
/ini "INIFILE" "Settings" "Beep" "OFF"
/echo Beep notification set to OFF.
/return
Sub Event_ReloadCommand(text)
/echo Reloading INI file...
/call GetINIList
/return
spawns.ini
Code: Select all
[Settings]
Beep=ONCE
Log=ON
[Iceclad Ocean]
Spawn0=Lodizal
Spawn1=Stormfeather
[Southern Karana]
Spawn0=Quillmane
[Lower Guk]
Spawn0=Raster of Guk
[Plane of Fear]
Spawn0=Cazic Thule
Spawn1=Dracoliche
Spawn2=Dread
Spawn3=Fright
Spawn4=Terror
Enjoy,
Lestor


