ThankGroup
From CLUMP
/*-----------------------------------------------------------------------------
| shareMultiple Version 1.0.1 | ThankGroup Version 2.1.7 |
--------------------------------- Description ---------------------------------
Shares is an expansion of the default /share command to accept multiple names, to speed sharing and thanking groups of people.
----------------------------------- Usage -------------------------------------
##### type "/th?" for online help
just type in:
sh [name*] [name] [name] [name] [name]
to share up to you maximum number of people.
*You can type partial names as you can with the default share command. do not use spaces for exiles with two a first and last name. (i.e. Elenis Reyav could be "Elenis", "ElenisReyav" or even "Elen".
----------------------------------- Setup -------------------------------------
Note: to work properly you might have to remove the line
"sh" "/share " @text "\r" from your default macros file.
or you can use other built in triggers:
"shm" & "/shm"
//All Platforms: Add the line below to your default macro file:
include "shares.mac"
-------------------------------- Feedback/Info --------------------------------
This macro makes a list of people to thank numerous ways. Then you can call the AutoThank if you want to thank a person every 5 minutes (set with "delay" global. the delay by default is just over 5 minutes, 1200 Frames).
The Default Triggers are listed below, feel free to edit them. A short description is listed next to each trigger.
*ThankRandom will clear your thank list with "new" and append people to the random pool with "add" So "/thr new" or "/thr add" modifies the list, while just the default "/thr" thanks someone in the list without altering it.
** Thank Options controls several options. including just a number ("/tho 3") will set the person at that position in the list (3 in this case) as the next exile to thank. With "debug" set to 0 or 1 it will allow debug messages to show up and allow you to load a default list of people to thank into the ThankGroup by activating the default share shortcut,"sh", which you can set in listA below. With the "off" option ("/tho off") it turns off the AutoThank loop.
*The v.2.1.3 comment format is as follows:
<<m_macroname>> (default trigger|s <required text> [optional text]) short description.
** the single less than some text and greater than denotes strings so when you see "/thg [message]
** the vertical bar "|" is used to denote valid options (arguments) th macro accepts
** all macros are prefixed with "m_" in the file for quick searching and avoiding false hits from "call <macro>"
** global variable have their type & [:specific function] in techspeak
along with a short description
I wrote this macro long ago, thus it is not optimized and could be written much
better, but it works pretty well. It was actually multiple macros that I pulled together on 12/18/2011. So initial release is shareMultiple 1.0.1 & ThankGroup 2.1.2.
If you find any bugs or have suggestions, contact noivad either in game or
at his mac dot com address. This macro is "/Thank-ware."
----------------------------- version change notes -----------------------------
v. 2.1.2 "ThankRandom" was added by request of Rroot
v.2.1.3 *fixed a small bug that threw and error, but didn't stop the macro
*Added <<tags>> to functions and comments
*Added ThankHelp macro
v.2.1.4 Added ability to remove a person from the list with /thgc <number>
*Added ThankGroup Help "/thh" or "/thgh"
v2.1.5 bug fixes to list behavior broken in 2.1.4 feature addition
v.2.1.6-7 bug fix for increment not working.
-----------------------------------------------------------------------------*/
/****** Share Triggers ******/
"sh" call shareMultiList //changes /share to add multiple people
"/shm" call shareMultiList // also adds to myTG
"shm" call shareMultiList //Template:M shareMultiList
/****** Thank Group Triggers ******/
"/th?" call ThankHelp //Online ThankGroup command help
"/ath" call AutoThank //Starts an Automatic thank loop | "off" to stop
"/thb" call BuildDefault //Builds the default or saved list
"/thg" call ThankGroup //Thanks the next person on the list
"/thga" call AddToThankGroup // Adds a person to ThankGroup list
"/thgwho" call WhoAmIThanking // Shows the ThankGroup list
"/thg?" call WhoAmIThanking //
"/thgc" call ClearThankGroup //Clears out ThankGroup
"/thgh" call ThankHelp //Online ThankGroup command help
"/thh" call ThankHelp //Online ThankGroup command help
"/thn" call ThankNext // Thanks next person in the list
"/tho" call ThankOptions // see ** Above or Template:M ThankOptions below
"/thr" call ThankRandom // See * Above
"/ths" call ThankSharers //loads shares into thank list
"/tn" call ThankNext //Thanks the next person on list
/*Edit this list with to up to 5 exiles you like to share with automatically. Do Not include spaces. Note will only work with debug = 1 set with ThankOptions "/tho debug 1" */
set debug 0 //<<debug>> (bool:toggle) turns on and off debugging
set modeverbose 1 //first trigger will remind people how to use. set to 0 to turn off
set theMessage " Thank you " //<<EditMe>> your default message
set myThankGroup[0] "" //<<EditMe>> to initialize <myTG>
/* -------- Do not Edit below this line if not Familiar with Macros -------- */
set slotG 1 //<<slotG>> (int:index) is the pointer for the list
set currentIndex 1 //which slot is current
set thankTarget 1 //internal current index
set thankTotal 0 //<<thankTotal>> (int:sum) <<!=DO_NOT_EDIT>> {?}Number in list
//myThankGroup <<myTG>> (arr) list of exiles to thank
set ATH 0 //<<ATH>> (bool:toggle) controls automatic thanking
set delay 1201 //<<delay>> (int:timer) controls pause between Template:M AutoThank
set ht[0] "There is no entry here"
set ent 0
set initSwitch 0
set debug 1 //for troubleshooting
/* ************************** shareMultiple v1.0.1 ************************** */
//<<m_shareMultiList>> (sh|/shm|shm <name> [name]) shares & adds to list
shareMultiList
{
setglobal ht[sh] "*'sh|/shm|shm <name> [name]' shares & adds exiles to list (i.e. 'sh Creed ElenisReyav Var Talin Lorikeet')"
setglobal ht[1] "*'sh|/shm|shm <name> [name]' shares & adds exiles to list (i.e. 'sh Creed ElenisReyav Var Talin Lorikeet')"
if slotG < 1
setglobal slotG 1
end if
if initSwitch == 1
goto END
end if
setglobal count 0
if debug == 1
pause 2
message "Loading Friend Online"
call BuildDefault
else if @text == ""
"/share\r"
else
label LOOPB
if count < @text.num_words
"/share " @text.word[count] "\r"
setglobal myThankGroup[slotG] @text.word[count]
if debug == 1
pause 1
message "*" myThankGroup[slotG] " added to thankgroup."
end if
set count + 1
setglobal slotG + 1
setglobal thankTotal + 1
pause 20
goto LOOPB
end if
end if
label END
}
/***************************** Thank Group v2.1.7 *****************************/
//<<m_ThankGroup>> (/thg [message]) Thanks exile|s in list (activates AutoThank)
ThankGroup
{
setglobal ht[thg] "'/thg [message]' Sets the default message & activates AutoThank (i.e '/thg thanks for the hunt!'). '/thg /reset' clears the list."
setglobal ht[2] "'/thg [message]' Sets the default message & activates AutoThank (i.e '/thg thanks for the hunt!'). '/thg /reset' clears the list."
if initSwitch == 1
goto END
end if
if @text == "reset"
call ClearThankGroup
goto END
else if @text == "/reset"
call ClearThankGroup
goto END
else if @text == ?
message thga
else
if @text != ""
setglobal theMessage @text
end if
end if
pause 1
call AutoThank
message ending thanks
label END
}
//<<m_AddToThankGroup>> (/thga <name> [name]) adds exile|s to list
/*To do: add gorvin's scanned for if a person is already on the list to the macro. (Gorvin gave permission on 20120325 during Crypt hunt: Thanks G!)*/
AddToThankGroup
{
setglobal ht[thga] "'/thga <name> [name]' adds exile|s to list"
setglobal ht[3] "'/thga <name> [name]' adds exile|s to list"
if initSwitch == 1
goto END
end if
set num_people @text.num_words //gets the number of names to add (only use one word names for accuracy)
setglobal slot 0 //must start one less than total to add
if debug == 1
message "slotG=" slotG
end if
if @text == ?
message ht[thga]
end if
label addloop
if slot < num_people
setglobal myThankGroup[slotG] @text.word[slot]
if debug == 1
message "*myThankGroup[" slotG "]=" myThankGroup[slotG]
end if
pause 1
setglobal slot + 1
setglobal thankTotal + 1
setglobal slotG + 1
goto addloop
end if
if modeverbose == 1
call WhoAmIThanking
end if
label END
}
//<<m_ClearThankGroup>> (/thgc) clears and resets list
ClearThankGroup
{
setglobal ht[thgc] "'/thgc [num]' clears and resets list, with a number it removes that entry in the list"
setglobal ht[4] "'/thgc [num]' clears and resets list, with a number it removes that entry in the list"
if initSwitch == 1
goto END
end if
if @text == ""
message "Clearing thank group"
setglobal thankTarget 1
setglobal counted 0
setglobal thankTotal 1
setglobal myThankGroup ""
setglobal slotG 1
message thankTarget "*" counted "*thanktotal:" thankTotal "*" myThankGroup "*slotG:" slotG "*"
else if @text == 0
setglobal currentIndex @text
call moveUp
else if @text > 0
if @text <= thankTotal
setglobal currentIndex @text
call moveUp
end if
end if
label END
}
//<<m_ThankNext>> (/tn [message]) actually does the thanking
ThankNext
{
if initSwitch == 1
setglobal ht[tn] "/tn [message]' manually thanks the next person and sets the message"
goto END
end if
if thankTotal < 1
message "*ThankNext*no one in thank list, adding shares in (/ths)**"
call ThankSharers
setglobal modeverbose 1
end if
if thankTarget < 1 //protects against out of bounds array calls
setglobal thankTarget 1
else if thankTarget > thankTotal
setglobal thankTarget 1
end if
if @text == ""
"/thank " myThankGroup[thankTarget] " " theMessage " " myThankGroup[thankTarget] " :)\r"
else
"/thank " myThankGroup[thankTarget] " " @text "\r"
end if
pause 1
set tocheck @env.TextLog
message tocheck
//checks log for failure
if tocheck < "You have no karma to give."
if debug == 1
message "**m_ThankNext:Unable to give karma to " myThankGroup[thankTarget] " holding place."
end if
else if tocheck < "' is not in the lands."
if debug == 1
message "*m_ThankNext:Unable to give karma (No Target):Advancing"
set thankTarget + 1
end if
if debug == 1
message "tht/tot:" thankTarget ":ThankTotal:" thankTotal
end if
else if thankTarget < thankTotal
call thankFeedback
setglobal thankTarget + 1
else if thankTarget == thankTotal
call thankFeedback
setglobal thankTarget 1
end if
label END
}
thankFeedback
{
if debug == 1
pause 4
message "The next person to be thanked is " myThankGroup[thankTarget]
else if modeverbose == 1
message "*thanking " myThankGroup[thankTarget] "/thh for help"
setglobal modeverbose 0
end if
}
WhoAmIThanking //<<m_WhoAmIThanking>> (/thgwho)|(/thg?) outputs the myTG
{
if initSwitch == 1
setglobal ht[thgwho] "'/thgwho|/thg? [reset|/reset]' shows the list or optionally resets it"
goto END
end if
if @text == "reset"
call ClearThankGroup
else if @text == "/reset"
call ClearThankGroup
end if
if thankTotal == 1
message "**The thank group is empty. Try /ths or /thga <name> [name] to add people"
goto END
else
message "•My thank group is currently: "
setglobal counted 1 //must be 1 for start of array
setglobal thankTotalAdjustment thankTotal
setglobal thankTotalAdjustment + 1 //to get the last element
label LOOPSTART
if counted < thankTotalAdjustment
if counted == thankTarget
message "[" counted "]*" myThankGroup[counted]
else
message "[" counted "]" myThankGroup[counted]
end if
setglobal counted + 1
goto LOOPSTART
end if
end if
label END
}
ThankSharers // (/ths) adds all people sharing you to the list
{
if initSwitch == 1
setglobal ht[ths] "'/ths' adds all people sharing you to the list"
goto END
end if
set count 0
if debug == 1
message "Shares in are " @my.shares_in
message "Thank Share In Number =" @my.shares_in.num_words
end if
label LOOP0
if count == @my.shares_in.num_words
goto END
else
if @my.shares_in.word[count] < "[" //avoids adding bracketed
else
setglobal myThankGroup[slotG] @my.shares_in.word[count]
setglobal slotG + 1
set count + 1
setglobal thankTotal + 1
end if
goto LOOP0
end if
label END
if debug == 1
call WhoAmIThanking
end if
label END
}
//<<m_ThankRandom>> (/thr)["restore"|clears("new")|("add")] myTG & thanks a random person sharing
ThankRandom
{
if initSwitch == 1
setglobal ht[thr] "'/thr [restore|new|add]' thanks a random person sharing you. optionally clears the list and builds a new one"
goto END
end if
if @text == "new"
setglobal thankSave thankTarget //saves the index
setglobal listA myThankGroup //saves the current list
setglobal listSave 1 //allows the list to be restored
call ClearThankGroup
call ThankSharers
else if @text == "add"
call ThankSharers
else if @text == "restore"
if listSave == 1
setglobal myThankGroup listA
else
message "*There is not list to restore"
call BuildDefault
end if
end if
set randomNum @random
setglobal thankTarget randomNum % thankTotal
call ThankNext
setglobal thankTarget thankSave //resets the thank index
label END
}
//<<m_ThankOptions>> (/tho) sets tTarget to 0|number or switches debugging on
ThankOptions
{
if initSwitch == 1
setglobal ht[tho] "'/tho [<number>||debug 0|1||off||message <message>]' sets next person thanked to 0|<number>, switches debugging on or off, turns on or off AutoThanking, or sets a new message"
goto END
end if
if @text == ""
setglobal thankTarget 0
call WhoAmIThanking
else if @text.word[0] == "debug"
if @text.word[1] < 2
setglobal debug @text.word[1]
end if
if debug == 1
message "*Debugging is on"
else if debug == 0
message "*Debugging is off"
end if
else if @text.word[0] == "off"
setglobal ATH 0
else if @text.word[0] == "on"
call AutoThank
else
if @text.word[0] > 0
if @text.word[0] <= thankTotal
setglobal thankTarget @text.word[0]
end if
else
message "*That number won't work. The highest number you can set it currently: " thankTarget
pause 7
message "*Blame Polerand! ;)"
end if
else if @text.word[0] == "message"
set words @text.word[count]
set counter 1
label MESSAGEBUILDER
if counter > words
setglobal theMessage interim
message "the message is now: " theMessage
else
set interim.word[counter] @text.word[counter] " "
set counter + 1
goto MESSAGEBUILDER
end if
end if
label END
}
// AutoThank 1.0 "/ath"
AutoThank //<<m_AutoThank>> (/ath ["0"|"off"]) turns on*|off automatic thanks
{
if initSwitch == 1
setglobal ht[ath] "'/ath [0|off]' turns off automatic thanks. With no arguments it turns it on."
goto END
end if
if @text.word[0] == "off"
setglobal ATH 0
goto ENDoff
else if @text.word[0] == "0"
setglobal ATH 0
goto ENDoff
end if
setglobal ATH 1
if thankTotalAdjustment == ""
setglobal thankTotalAdjustment thankTotal
setglobal thankTotalAdjustment + 1
end if
label LOOPA
if ATH == 1
pause delay
if thankTarget < thankTotalAdjustment
call ThankNext
goto LOOPA
else
message "***You are out of people to thank.***"
message "***To Add more type /thga <name> [name] ..."
end if
end if
label ENDoff
message "*AutoThank is Off"
label END
}
//<<m_BuildDefault>> List Building Function
BuildDefault
{
if initSwitch == 1
setglobal ht[thb] "'/thb' builds the thank list using the the default in Friends"
goto END
end if
label LOOPA
if count > listA.num_words
setglobal myThankGroup[slotG] listA.word[count]
if debug == 1
pause 1
message "*" myThankGroup[slotG] " added to thankgroup."
end if
set count + 1
setglobal slotG + 1
setglobal thankTotal + 1
pause 20
goto LOOPA
end if
label END
}
// *m_moveUp* Reorganizes the thankgroup List triggered by ClearThankGroup '/thgc 0'
moveUp
{
if thankTotal > 0
message "**moving up"
message "*thankTotal is:" thankTotal "*"
label DECLOOP
setglobal cIndexPlus currentIndex
setglobal cIndexPlus + 1
if cIndexPlus > thankTotal
message "*m_moveUp*currentIndex Exceeds thankTotal"
message "*Thanklist reorganized* type /thg? to see it (or '/set debug 1'"
setglobal thankTotal - 1
if slotG > 0
setglobal slotG - 1
end if
else
setglobal myThankGroup[currentIndex] myThankGroup[cIndexPlus]
if myThankGroup[currentIndex] == myThankGroup[cIndexPlus]
message myThankGroup[currentIndex] " is now in position " currentIndex
end if
setglobal currentIndex + 1
goto DECLOOP
end if
end if
}
//<<m_ThankHelp>> {/thgh|/?th|/thh }Lists how to control macro
ThankHelp
{
setglobal hEntry 0
set initSwitch 1
call InitThG
if @text == "overview"
message "*ThankGroup builds a list of exiles to thank."
message "*/type '/th? quickstart' for a basic command list"
message "*The <commands> are: sh, ath, thb, thg, thga, thgc, thgwho, tho, thr, ths, tn and are preceded with a slash '/'"
message "type '/th? <command> for more info on each command"
else if @text == "quickstart"
message "*'/thga' and their names (with no spaces) to add people"
message "*'/thg' followed by any message to send to the group."
message "*'/tn' to thank the next person manually"
message "*'/ath 0' or '/tho off' to stop the macro"
message "*'/th? message' see what current message is"
else if @text == "message"
message "*" theMessage
else if @text != ""
if @text == "sh"
message ht[1]
else if @text == "thg"
message ht[2]
else if @text == "thgc"
message ht[4]
else if @text == "th?"
message "*************************"
message "*Universal Self Destruct Activated*"
message "*************************"
message "*10..."
pause 2
message "*Now you're done it!*"
pause 2
message "*9..."
pause 4
message "*8..."
pause 4
message "*7..."
pause 4
message "*6..."
pause 4
message "*5..."
pause 4
message "*4..."
pause 4
message "*3..."
pause 4
message "*2..."
pause 4
message "*1..."
pause 4
message "*0"
message "*BOOM!*"
else
setglobal ent @text
message ht[ent]
end if
else
message "*type '/th? overview' or 'th? quickstart' for instuctions"
message "*more information is available in the macro file 'Shares.mac'"
message "*thanks for trying this macro. Feedback is welcome"
end if
label END
}
InitThG
{
if initSwitch == 1
call shareMultiList
call AutoThank
call ThankGroup
call AddToThankGroup
call WhoAmIThanking
call ClearThankGroup
call ThankNext
call ThankOptions
call ThankRandom
call ThankSharers
end if
setglobal initSwitch 0
}