Macros for Searching

 
// =======================
// Rescue searching macros
// =======================
// Author: Magnels http://www.cis.ohio-state.edu/%7Ecoplin/ELF/macros.html
//
// Using this set of functions you can create a rescue target list of up to
// five exiles. Then, with a single command you can do an \pull on them all at
// once. A unique message will appear depending on whether they are in the
// area or not.
// targetadd - adds @text to the list
// targetadd-selected - adds the selected player to the list
// targetdelete - removes @text from the list
// targetdelete-selected - removes the selected player from the list
// targetecho - prints the current list in the message window
// targetreset - clears the list completely
 
// Note: currently the limit is 5 exiles on the list. This should be fairly
// simple to change however. You might also wish to use "\give 1" or "\info"
// instead of "\pull" if that's more your style.
 
// Here are some hooks that can be used to activate these functions. You may
// choose different ones of course. Or you may choose to bind the functions
// directly to keys.
 
"s" call targetsearch
"sadd" call targetadd
"sdel" call targetdelete
"secho" call targetecho
"sclear" call targetreset
 
// global variables to hold the search list
set search_target1 ""
set search_target2 ""
set search_target3 ""
set search_target4 ""
set search_target5 ""
set target_count 0
 
set opText ""
 
// functions
 
targetadd
{
setglobal opText @text
call targetadd-actual
}
 
targetadd-selected
{
setglobal opText @selplayer.simple_name
call targetadd-actual
}
 
targetadd-actual
{
if target_count == 0
setglobal search_target1 opText
else if target_count == 1
setglobal search_target2 opText
else if target_count == 2
setglobal search_target3 opText
else if target_count == 3
setglobal search_target4 opText
else if target_count == 4
setglobal search_target5 opText
else if target_count == 5
message "* Error: too many targets"
else
message "* Error: invalid target count"
setglobal target_count 0
end if
setglobal target_count + 1
call targetecho
}
 
targetdelete
{
setglobal opText @text
call targetdelete-actual
}
 
targetdelete-selected
{
setglobal opText @selplayer.simple_name
call targetdelete-actual
}
 
targetdelete-actual
{
if search_target1 == opText
setglobal search_target1 search_target2
setglobal search_target2 search_target3
setglobal search_target3 search_target4
setglobal search_target4 search_target5
setglobal search_target5 ""
setglobal target_count - 1
else if search_target2 == opText
setglobal search_target2 search_target3
setglobal search_target3 search_target4
setglobal search_target4 search_target5
setglobal search_target5 ""
setglobal target_count - 1
else if search_target3 == opText
setglobal search_target3 search_target4
setglobal search_target4 search_target5
setglobal search_target5 ""
setglobal target_count - 1
else if search_target4 == opText
setglobal search_target4 search_target5
setglobal search_target5 ""
setglobal target_count - 1
else if search_target5 == opText
setglobal search_target5 ""
setglobal target_count - 1
else
message "* Error \"" opText "\" not found."
end if
call targetecho
}
 
targetreset
{
setglobal search_target1 ""
setglobal search_target2 ""
setglobal search_target3 ""
setglobal search_target4 ""
setglobal search_target5 ""
setglobal target_count 0
call targetecho
}
 
targetecho
{
message "* Current targets:"
if target_count > 0
message "* " search_target1
end if
if target_count > 1
message "* " search_target2
end if
if target_count > 2
message "* " search_target3
end if
if target_count > 3
message "* " search_target4
end if
if target_count > 4
message "* " search_target5
end if
}
 
targetsearch
{
if target_count > 0
"/pull " search_target1 "\r"
end if
if target_count > 1
"/pull " search_target2 "\r"
end if
if target_count > 2
"/pull " search_target3 "\r"
end if
if target_count > 3
"/pull " search_target4 "\r"
end if
if target_count > 4
"/pull " search_target5 "\r"
end if
}
 
 

 

 Return to Merlisk's Scrolls