Shares.mac: Difference between revisions

From CLUMP
Jump to navigationJump to search
No edit summary
m (→‎Usage: fiormat update)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Description==
==Description==
Shares is an expansion of the default /share command to accept multiple names, to speed sharing groups of people.
Shares is an expansion of the default /share command to accept multiple names, to speed sharing groups of people.
This newer version of thank sharers 2.x has full thank list building and thanking built in.


==Dependencies==
==Dependencies==
Line 7: Line 8:
==Usage==
==Usage==
just type in  
just type in  
sh <name> ''<name> <name> <name> <name>''
to share up to you maximum number of people.


==Noteworthy Techniques==
<code>''sh <name> <name> <name> <name> <name>''</code>
Use of arrays.


==Credits==
to share up to your maximum number of people (5).
Noivad


==Code==
When you have karma to give
<pre>
/*-----------------------------------------------------------------------------
          | shareMultiple Version 1.0.1 | ThankGroup Version 2.0.4 |
--------------------------------- Description ---------------------------------
Shares is an expansion of the default /share command to accept multiple names, to speed sharing groups of people.
----------------------------------- Usage -------------------------------------
just type in
sh <name> <name> <name> <name> <name>
to share up to you maximum number of people.
----------------------------------- 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"
//Mac Users: Add the line below to your default macro file:
include "shares.txt"
//PC Users: change this file name to "shares.mac"
and add the line below to your default macro file:
include "shares.mac"
-----------------------------------------------------------------------------*/
/****** Share Triggers ******/
"sh" call shareMultiList
"/shm" call shareMultiList
"shm" call shareMultiList


/****** Thank Group Triggers ******/
<code>''/tn''</code>
"/thg" call ThankGroup
"/thga" call AddToThankGroup
"/thgwho" call WhoAmIThanking
"/thg?" call WhoAmIThanking
"/thgc" call ClearThankGroup
"/thn" call ThankNext
"/ths" call ThankSharers
"/tn" call ThankNext


/*Edit this list with to up to 5 exiles you like to share with automatically. Note will only work with debug = 1 */
to thank the next person on the list. See the macro header for more information.
set listA "Yor Talin Phroon Lorikeet Kyvnn"


set debug 0
==Noteworthy Techniques==
set slotG 0
Use of arrays.
set theMessage ":)" //Edit this to whatever


shareMultiList
==Credits==
{
Noivad
setglobal count 0
if @text == ""
if debug == 1
message "No people listed. Defaulting to " listA
label LOOPA
      if count < listA.num_words
        "/share "  listA.word[count] "\r"
        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
else
"/share\r"
end if
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
}


/***************************** Thank Group v2.0.4 *****************************/
message "*Shares Macro Loaded"
 
/* -------------------------------------------------------------------------
 
| shareMultiple Version 1.1.3 | ThankGroup Version 2.5.3 |
ThankGroup // /thg This Thanks everyone in your thinkgroup one at a time
------------------------------- Description -----------------------------
{
Shares is an expansion of the default /share command to accept multiple names, to ease sharing and thanking groups of people.
if @text == "reset"
---------------------------------- Usage --------------------------------
call ClearThankGroup
##### type "/th?" for online help
goto END
type:
else if @text == "/reset"
sh [name*] [name] [name] [name] [name]
call ClearThankGroup
to share up to your maximum number of people.
goto END
*You can type partial names as you can with the default share command.
else
setglobal theMessage @text
  /ths
end if
  to build thank list of shares in and out
set thankTotalAdjustment thankTotal
set thankTotalAdjustment - 1
  /tn
pause 1
  to thank the next person on the list
label LOOP
if thankTarget < thankTotalAdjustment
  /ath
call ThankNext
  to automatically thank and set through the list
pause 1201
---------------------------------- Setup ----------------------------------
  goto LOOP
  Add the line below to your default macro file:
else
  include "Shares.txt"
message "***You are out of people to thank.***"
message "***To Add more type /thga <name> [name] ..."
  Note: to work properly you might have to remove the line
end if
  "sh" "/share " @text "\r" from your default macros file.
message ending thanks
  or you can use other built in triggers:
label END
  "shm" & "/shm"
}
------------------------------ 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 4 minutes (set with "delay" global. the delay by default is just over 4 minutes, 1200 Frames).
AddToThankGroup    // /thga
{
  The Default Triggers are listed below, feel free to edit them. A short description is listed next to each trigger.
  set num_people @text.num_words
  setglobal slot 0
  ** 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) the 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 tech speak
along with a short description
  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 (REMOVED 2.5)
  v.2.1.3 *fixed a small bug that threw an 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.
  v2.3 fixes moveUp bug. ThankRandom is Broken & has been
  v.2.5.2 & 1.1.2 won't add people that are already on list
  ----------------------------------------------------------------------- */
  /****** Share Triggers ******/
"sh" call shareMultiList //changes /share to add multiple people
"/shm" call shareMultiList // also adds to myTG
"shm" call shareMultiList //{{m_shareMultiList}}
  /****** Thank Group Triggers ******/
"/moveup" call moveUp //removes players who are now offline
"/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
"/thgm" call ThankMessage //sets the message given with karma
"/thm" call ThankMessage
"/thh" call ThankHelp //Online ThankGroup command help
"/thn" call ThankNext // Thanks next person in the list
"/tho" call ThankOptions // see ** Above or {{m_ThankOptions}} below
//"/thr" call ThankRandom // BROKEN: See * Above
"/ths" call ThankSharers //loads shares into thank list
"/tn" call ThankNext //Thanks the next person on list
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] "" //in case thankTarget is set to 0
set listA "Talin Silky Klur Natas Shadowfire" //EDIT to your friends
  /* ---- 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
set ATH 0 //<<ATH>> (bool:toggle) controls automatic thanking
set delay 1201 //<<delay>> (int:timer) controls pause between  {{m_AutoThank}}
set ht[0] "There is no entry here"
set ent 0
set initSwitch 0
  /* ******************** shareMultiple v1.1.3 *********************** */
  //<<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"
setglobal ht[1] "*'sh|/shm|shm <name> [name]' shares & adds exiles to list"
if slotG < 1
setglobal slotG 1
end if
if @text != ""
set count 0
label LOOP
if count <= @text.num_words
"/select " @text.word[count] " \r"
if @selplayer.simple_name == ""
set count + 1
goto LOOP
end if
"/share "  @selplayer.simple_name " \r"
if debug == 1
message "*attempted share with " @text.word[count] " in LOOP"
end if
pause 1
if "No player named " < @env.textLog
set count + 1
goto LOOP
end if
set i 1
LABEL COMPARELOOP
  //ADDED 20220625 EXPERIMENTAL trying to search array for string
if myThankGroup != ""
//message "myThankGroup:" myThankGroup
if myThankGroup < @selplayer.simple_name
message @selplayer.simple_name "in myThankGroup"
end if
end if
//ABOVE ADDED
  if myThankGroup[i] ==  @selplayer.simple_name
message "* "  @selplayer.name " already in list SKIPPING"
  set count + 1
  pause 25
  goto LOOP
  else
  if i < thankTotal
  set i + 1
  goto COMPARELOOP
  end if
setglobal myThankGroup[slotG] @selplayer.simple_name
pause 1
if debug == 1
message "* [" slotG "]" myThankGroup[slotG] " added to thank group."
end if
setglobal slotG + 1
setglobal thankTotal + 1
if count < @text.num_words
set count + 1
end if
pause 25
goto LOOP
end if
end if
else
"/share\r"
end if
label END
}
  /************************ Thank Group v2.5.3 *************************/
  //<<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 @text == "reset"
call ClearThankGroup
goto END
else if @text == "/reset"
call ClearThankGroup
goto END
else if @text == ?
message thga
message theMessage
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
AddToThankGroup
{
setglobal ht[thga] "'/thga <name> [name]' adds exile|s to list"
setglobal ht[3] "'/thga <name> [name]' adds exile|s to list"
set num_people @text.num_words //gets the number of names to add (only use one word names for accuracy)
set 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
"/select " @text.word[slot] "\r"
if debug == 1
message  "@selplayer.simple_name: " @selplayer.simple_name
end if
pause 1
if @env.textLog < "No player named "
  if debug == 1
message  "* " @text.word[slot] " NOT FOUND"
end if
set slot + 1
goto ADDLOOP
else if @selplayer.simple_name == ""
if debug == 1
message "* " @text.word[slot] " EMPTY"
end if
set slot + 1
goto ADDLOOP
else
set i 0
LABEL COMPARELOOP
if myThankGroup[i] ==  @selplayer.simple_name
message "* "  @selplayer.name " already in list SKIPPING"
  set slot + 1
  goto ADDLOOP
  else
  if i < thankTotal
  set i + 1
  goto COMPARELOOP
  end if
  setglobal myThankGroup[slotG] @selplayer.simple_name
  if debug == 1
message "*myThankGroup[" slotG "]= " myThankGroup[slotG]
end if
pause 1
set slot + 1
setglobal slotG + 1
setglobal thankTotal + 1
if debug == 1
message "thank total: " thankTotal
end if
goto ADDLOOP
end if
end if
  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 @text == ""
message "Clearing thank group"
setglobal thankTarget 1
setglobal counted 1 //NEW2021 was 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 //CurrentIndex used by moveUp
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
"/select " myThankGroup[thankTarget] "\r"
if @text == ""
"/select " myThankGroup[thankTarget] "\r"
call ThankMessage
"/thank " @selplayer.name " " theMessage " :)\r"
else
"/thank " myThankGroup[thankTarget] " " @text "\r"
end if
pause 1
set tocheck  @env.TextLog
  //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"
end if
setglobal missingTarget 1
call moveUp
if debug == 1
message "tht/tot:" thankTarget ":ThankTotal:" thankTotal
end if
else if thankTarget < thankTotal
call thankFeedback //20220625 EDIT switched order
setglobal thankTarget + 1 //20220625 EDIT switched order
else if thankTarget >= thankTotal
call thankFeedback //20220625 EDIT switched order
setglobal thankTarget 1 //20220625 EDIT switched order
end if
label END
}
thankFeedback
{
if debug == 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 20220621
  label LOOPSTART
if counted <= thankTotal
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
}
  /****** SHARERS *******/
// <<m_ThankSharers>>
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
set countB 0
set i 0
set j 0
if debug == 1
message "ThankShares In: " @my.shares_in.num_words
message "Shares in are " @my.shares_in
message "ThankShares Out:" @my.shares_out.num_words
message "Shares out are " @my.shares_out
message "thankTotal: " thankTotal
message "myThankGroup:" myThankGroup
end if
  label LOOP0
if count <=  @my.shares_in.num_words
"/select " @my.shares_in.word[count] " \r"
if @selplayer.simple_name == ""
set count + 1
goto LOOP0
else if debug == 1
message "(L0)Start: select exile" @selplayer.simple_name
end if
pause 1
set i 1
LABEL COMPARELOOP
if debug == 1
//message "(L0C1) ThankGroup[" i "]" myThankGroup[i]
end if
if myThankGroup[i] ==  @selplayer.simple_name
message "*"  @selplayer.name "in list (L0) SKIPPING"
set count + 1
goto LOOP0
else if i < thankTotal
set i + 1
//message "i:" i
goto COMPARELOOP
end if
setglobal myThankGroup[slotG] @selplayer.simple_name
pause 1
if debug == 1
message "* [" slotG "]" myThankGroup[slotG] " added to thank group. (L0)"
end if
setglobal slotG + 1
setglobal thankTotal + 1
if count < @my.shares_in.num_words
set count + 1
goto LOOP0
end if
pause 25
end if
label LOOP2
if countB <= @my.shares_out.num_words
"/select " @my.shares_out.word[countB] " \r"
if @selplayer.simple_name == ""
set countB + 1
goto LOOP2
else
if debug == 1
message "(L2)Start: select exile" @selplayer.simple_name
end if
end if
pause 1
set j 1
LABEL COMPARELOOP2
if debug == 1
//message "(L2C2) ThankGroup[" j "]" myThankGroup[j]
end if
if myThankGroup[j] == @selplayer.simple_name
message "*"  @selplayer.name "in list (L2) SKIPPING"
set countB + 1
goto LOOP2
else if j < thankTotal
set j + 1
//message "j:" j
goto COMPARELOOP2
end if
setglobal myThankGroup[slotG] @selplayer.simple_name
pause 1
if debug == 1
message "* [" slotG "]" myThankGroup[slotG] " added to thank group. (L2)"
end if
setglobal slotG + 1
setglobal thankTotal + 1
if countB < @my.shares_out.num_words
set countB + 1
goto LOOP2
end if
pause 25
end if
label END
  if debug == 1
  if debug == 1
  message "slotG="slotG
  call WhoAmIThanking
end if
}
//<<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
  label LOOPA
if ATH == 1
pause delay
if thankTarget <= thankTotal
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 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
setglobal currentIndex thankTarget
message "currentIndex:" currentIndex "exile to thank " myThankGroup[currentIndex]
message "**moving up**thankTotal:" thankTotal "*"
label DECLOOP
setglobal cIndexPlus currentIndex
setglobal cIndexPlus + 1 //CRITICAL: moves to next exile on list
if cIndexPlus > thankTotal
message "*m_moveUp*cIndexPlus Exceeds thankTotal"
//setglobal myThankGroup[currentIndex] "" //20220619 edit from currentIndex //20220703 EDIT bug check!
if debug == 1
message "*Thanklist reorganized* '/thg?' to see it (or '/set debug 1'"
end if
setglobal cIndexPlus thankTotal
else if currentIndex == thankTotal //20220625 ADDED
if myThankGroup[cIndexPlus] != ""
setglobal myThankGroup[currentIndex] myThankGroup[cIndexPlus]
setglobal currentIndex + 1
goto DECLOOP
end if
if thankTarget == currentIndex
message "  [" currentIndex "]* " myThankGroup[currentIndex]
else
message "  [" currentIndex "] " myThankGroup[currentIndex]
end if
else //overwrites current exile
if myThankGroup[cIndexPlus] != ""
setglobal myThankGroup[currentIndex] myThankGroup[cIndexPlus]
end if
if myThankGroup[currentIndex] ==  myThankGroup[cIndexPlus]
if thankTarget == currentIndex
message "  [" currentIndex "]* " myThankGroup[currentIndex]
else
message "  [" currentIndex "] " myThankGroup[currentIndex]
end if
end if
setglobal currentIndex + 1
goto DECLOOP
end if
setglobal thankTotal - 1
setglobal slotG - 1
end if
if thankTotal < currentIndex
if debug == 1
message "mTG[cI]" myThankGroup[currentIndex] currentIndex
end if
setglobal currentIndex 1
end if
}
  //<<m_ThankMessage>> (/thm|/thgm) Sets and|or shows the message
setglobal thankMessage 1
 
ThankMessage
{
if @text == "/m"
message theMessage
else if @text == "/message"
message theMessage
else if @text == "?"
message theMessage
else if @text == ""
random
setglobal theMessage " because why not? "
or
setglobal theMessage " Thanks "
or
setglobal theMessage " Thank you "
or
setglobal theMessage " Thankx "
or
setglobal theMessage " good hunting "
or
setglobal theMessage " thanks a lot "
or
setglobal theMessage " Why? Because we like you "
or
setglobal theMessage " not that it really matters, but here's some good karma "
or
setglobal theMessage " Woo! Woo! "
or
setglobal theMessage " got Karma? "
or
setglobal theMessage " hu! hu! "
or
setglobal theMessage " a GK a day keeps the departs away "
or
setglobal theMessage " GK!GK!"
or
setglobal theMessage " happiness is GK"
or
setglobal theMessage " what's in a GK?"
or
setglobal theMessage " Good Karma is its own reward."
or
setglobal theMessage " this Good Karma brought to you by macros. Yes, macros"
or
setglobal theMessage " did you hear the one about the exile who got too much GK? — Turned ultraviolet"
or
setglobal theMessage " what's in. GK, let me count the ways…"
or
setglobal theMessage " A BK and a GK walk into a bar…"
or
setglobal theMessage " are we blue yet?"
or
setglobal theMessage " oh happy day, GK"
or
setglobal theMessage " GK ‘message and data rates still apply…’"
or
setglobal theMessage " keep healers blue! "
or
setglobal theMessage " Two by two; GK’s coming for you."
or
setglobal theMessage " Wooooooo!"
or
setglobal theMessage " There once was a mighty sailin’ man, a skipper brave and sure…"
or
setglobal theMessage " There are over 30 different good karma messages! Can you collect them all?"
or
setglobal theMessage "Karma Fever: Catch It!"
or
setglobal theMessage "Thanks for hunting with me."
or
setglobal theMessage "Thank you for the hunt."
or
setglobal theMessage "Without you here, it would be a duller world. :)"
end random
else if @text != ""
setglobal theMessage @text
  end if
  end if
  label addloop
  }
  if slot < num_people
setglobal myThankGroup[slotG] @text.word[slot]
if debug == 1
//<<m_ThankHelp>>  {/thgh|/?th|/thh }Lists how to control macro
message "*myThankGroup[" slotG "]=" myThankGroup[slotG]
ThankHelp
end if
{
pause 1
setglobal hEntry 0
setglobal slot + 1
set initSwitch 1
setglobal thankTotal + 1
call InitThG
setglobal slotG + 1
  if @text == "overview"
goto addloop
message "*Shares.txt::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 3
message "*Now you've done it!*"
pause 2
message "*9..."
pause 5
message "*8..."
pause 5
message "*7..."
pause 5
message "*6..."
pause 5
message "*5..."
pause 5
message "*4..."
pause 5
message "*3..."
pause 5
message "*2..."
pause 5
message "*1..."
pause 5
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.txt'"
//message "*thanks for trying this macro. Feedback is welcome"
  end if
  end if
  if modeverbose == 1
  label END
call WhoAmIThanking
  }
  end if
}
   InitThG
 
{
ClearThankGroup   // /thc
  if initSwitch == 1
{
call shareMultiList
message "Clearing thank group"
call AutoThank
setglobal thankTarget 0
call ThankGroup
setglobal counted 0
call AddToThankGroup
setglobal thankTotal 1
call WhoAmIThanking
setglobal myThankGroup ""
call ClearThankGroup
setglobal slotG 0
call ThankNext
message thankTarget "*" counted "*" thankTotal "*" myThankGroup "*" slotG "*"
call ThankOptions
}
// call ThankRandom
 
call ThankSharers
ThankNext      // /tn
end if
{
setglobal initSwitch 0
if @Text == ""
}
"/thank " myThankGroup[thankTarget] " thank you for being part of my group. =^)\r"
else
"/thank " myThankGroup[thankTarget] " " theMessage "\r"
end if
pause 1
if @env.TextLog < "You have no karma to give."
if debug == 1
message "*Unable to give kamra to " myThankGroup[thankTarget] " holding place."
end if
else if @env.TextLog < "myThankGroup[thankTarget] is not in the lands."
if debug == 1
message "*Unable to give kamra (No Target) holding place."
end if
    message "*Add more people to your thank group. /thga <name> [name] ...."
else
if thankTarget < thankTotal
setglobal thankTarget + 1
end if
end if
if debug == 1
pause 4
message "The next person to be thanked is " myThankGroup[thankTarget]
end if
}
 
WhoAmIThanking // /thgwho, /thg?
{
if @text == "reset"
call ClearThankGroup
else if @text == "/reset"
call ClearThankGroup
end if
message "•My thank group is currently: "
setglobal counted 0
set thankTotalAdjustment thankTotal
set thankTotalAdjustment - 1
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
}
 
ThankSharers // /ths
{
set number 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 number == @my.shares_in.num_words
goto END
else
setglobal myThankGroup[slotG] @my.shares_in.word[number]
setglobal slotG + 1
set number + 1
setglobal thankTotal + 1
goto LOOP0
end if
 
label END
if debug == 1
call WhoAmIThanking
end if
}
 
</pre>


==Revisions==
==Revisions==

Latest revision as of 10:21, 1 October 2024

Description[edit]

Shares is an expansion of the default /share command to accept multiple names, to speed sharing groups of people. This newer version of thank sharers 2.x has full thank list building and thanking built in.

Dependencies[edit]

Optional Dependency on "/set debug" command in alternate default

Usage[edit]

just type in

sh <name> <name> <name> <name> <name>

to share up to your maximum number of people (5).

When you have karma to give

/tn

to thank the next person on the list. See the macro header for more information.

Noteworthy Techniques[edit]

Use of arrays.

Credits[edit]

Noivad

message "*Shares Macro Loaded"
/* -------------------------------------------------------------------------
		| shareMultiple Version 1.1.3 | ThankGroup Version 2.5.3 |
------------------------------- Description -----------------------------
Shares is an expansion of the default /share command to accept multiple names, to ease sharing and thanking groups of people.
---------------------------------- Usage --------------------------------
##### type "/th?" for online help
type:
sh [name*] [name] [name] [name] [name]
	to share up to your maximum number of people.
	*You can type partial names as you can with the default share command.

 /ths
 to build thank list of shares in and out

 /tn
 to thank the next person on the list

 /ath
 to automatically thank and set through the list
---------------------------------- Setup ----------------------------------
 Add the line below to your default macro file:
 include "Shares.txt"

 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"
------------------------------ 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 4 minutes (set with "delay" global. the delay by default is just over 4 minutes, 1200 Frames).

  The Default Triggers are listed below, feel free to edit them. A short description is listed next to each trigger.

  ** 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) the 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 tech speak
			 along with a short description

 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 (REMOVED 2.5)
 v.2.1.3 *fixed a small bug that threw an 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.
 v2.3 fixes moveUp bug. ThankRandom is Broken & has been
 v.2.5.2 & 1.1.2 won't add people that are already on list
 ----------------------------------------------------------------------- */
 /****** 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 ******/
"/moveup"	call moveUp			//removes players who are now offline
"/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
"/thgm"		call ThankMessage //sets the message given with karma
"/thm"		call ThankMessage
"/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 	// BROKEN: See * Above
"/ths"		call ThankSharers	//loads shares into thank list
"/tn"		call ThankNext		//Thanks the next person on list

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] "" //in case thankTarget is set to 0
set listA "Talin Silky Klur Natas Shadowfire" //EDIT to your friends

 /* ---- 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
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

 /* ******************** shareMultiple v1.1.3 *********************** */
 //<<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"
setglobal ht[1] "*'sh|/shm|shm <name> [name]' shares & adds exiles to list"
if slotG < 1
	 setglobal slotG 1
end if

if @text != ""
	set count 0
	label LOOP
	if count <= @text.num_words
		"/select " @text.word[count] " \r"
		 if @selplayer.simple_name == ""
			set count + 1
			goto LOOP
		end if
		"/share "   @selplayer.simple_name " \r"
		if debug == 1
			message "*attempted share with " @text.word[count] " in LOOP"
		end if
		pause 1
		if "No player named " < @env.textLog
			set count + 1
			goto LOOP
		end if

		 set i 1
		LABEL COMPARELOOP

		  //ADDED 20220625 EXPERIMENTAL trying to search array for string
		if myThankGroup != ""
			//message "myThankGroup:" myThankGroup
			if myThankGroup < @selplayer.simple_name
				message @selplayer.simple_name "in myThankGroup"
			end if
		end if
		//ABOVE ADDED

		  if myThankGroup[i] ==  @selplayer.simple_name
			message "* "  @selplayer.name " already in list SKIPPING"
			  set count + 1
			  pause 25
			  goto LOOP
		  else
			  if i < thankTotal
				  set i + 1
				  goto COMPARELOOP
			  end if
			 setglobal myThankGroup[slotG] @selplayer.simple_name
			 pause 1
			 if debug == 1
				message "* [" slotG "]" myThankGroup[slotG] " added to thank group."
			end if
			 setglobal slotG + 1
			 setglobal thankTotal + 1
			 if count < @text.num_words
				 set count + 1
			 end if
			 pause 25
			 goto LOOP
		 end if
	end if
else
	"/share\r"
end if
label END
}


 /************************ Thank Group v2.5.3 *************************/
 //<<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 @text == "reset"
	call ClearThankGroup
	 goto END
else if @text == "/reset"
	call ClearThankGroup
	goto END
else if @text == ?
	 message thga
	 message theMessage
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
AddToThankGroup
{
setglobal ht[thga] "'/thga <name> [name]' adds exile|s to list"
setglobal ht[3] "'/thga <name> [name]' adds exile|s to list"
set num_people @text.num_words //gets the number of names to add (only use one word names for accuracy)
set 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
	 "/select " @text.word[slot] "\r"
	 if debug == 1
		 message  "@selplayer.simple_name: " @selplayer.simple_name
	 end if
	 pause 1
	 if @env.textLog < "No player named "
		  if debug == 1
			message  "* " @text.word[slot] " NOT FOUND"
		end if
		 set slot + 1
		 goto ADDLOOP
	 else if @selplayer.simple_name == ""
		 if debug == 1
			 message "* " @text.word[slot] " EMPTY"
		 end if
		 set slot + 1
		 goto ADDLOOP
	 else
		 set i 0
		 LABEL COMPARELOOP
		 if myThankGroup[i] ==  @selplayer.simple_name
			 message "* "  @selplayer.name " already in list SKIPPING"
			  set slot + 1
			  goto ADDLOOP
		  else
			   if i < thankTotal
				  set i + 1
				  goto COMPARELOOP
			  end if
			  setglobal myThankGroup[slotG] @selplayer.simple_name
			  if debug == 1
				message "*myThankGroup[" slotG "]= " myThankGroup[slotG]
			end if
			pause 1
			set slot + 1
			setglobal slotG + 1
			setglobal thankTotal + 1
			if debug == 1
				message "thank total: " thankTotal
			end if
			goto ADDLOOP
		end if
	end if
 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 @text == ""
	message "Clearing thank group"
	setglobal thankTarget 1
	setglobal counted 1 //NEW2021 was 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 //CurrentIndex used by moveUp
		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
"/select " myThankGroup[thankTarget] "\r"
if @text == ""
	"/select " myThankGroup[thankTarget] "\r"
	call ThankMessage
	"/thank " @selplayer.name " " theMessage " :)\r"
else
	"/thank " myThankGroup[thankTarget] " " @text "\r"
end if
pause 1

set tocheck  @env.TextLog

  //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"
	end if
	setglobal missingTarget 1
	call moveUp
	if debug == 1
		message "tht/tot:" thankTarget ":ThankTotal:" thankTotal
	end if
else if thankTarget < thankTotal
	call thankFeedback //20220625 EDIT switched order
	setglobal thankTarget + 1 //20220625 EDIT switched order
else if thankTarget >= thankTotal
	call thankFeedback	//20220625 EDIT switched order
	setglobal thankTarget 1 //20220625 EDIT switched order
end if

label END
}

thankFeedback
{
if debug == 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 20220621

	  label LOOPSTART
	if counted <= thankTotal
		 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
}


  /****** SHARERS *******/
// <<m_ThankSharers>>
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
set countB 0
set i 0
set j 0

if debug == 1
	message "ThankShares In: " @my.shares_in.num_words
	message "Shares in are " @my.shares_in
	message "ThankShares Out:" @my.shares_out.num_words
	message "Shares out are " @my.shares_out
	message "thankTotal: " thankTotal
	message "myThankGroup:" myThankGroup
end if

  label LOOP0
if count <=  @my.shares_in.num_words
	"/select " @my.shares_in.word[count] " \r"
	 if @selplayer.simple_name == ""
		set count + 1
		goto LOOP0
	else if debug == 1
		message "(L0)Start: select exile" @selplayer.simple_name
	end if
	pause 1

	set i 1
	LABEL COMPARELOOP
	if debug == 1
		//message "(L0C1) ThankGroup[" i "]" myThankGroup[i]
	end if
	if myThankGroup[i] ==  @selplayer.simple_name
		message "*"  @selplayer.name "in list (L0) SKIPPING"
		set count + 1
		goto LOOP0
	else if i < thankTotal
			set i + 1
			//message "i:" i
			goto COMPARELOOP
	end if
	setglobal myThankGroup[slotG] @selplayer.simple_name
	pause 1
	if debug == 1
		message "* [" slotG "]" myThankGroup[slotG] " added to thank group. (L0)"
	end if
	setglobal slotG + 1
	setglobal thankTotal + 1
	if count < @my.shares_in.num_words
		set count + 1
		 goto LOOP0
	end if
	pause 25
end if

label LOOP2
if countB <= @my.shares_out.num_words
	"/select " @my.shares_out.word[countB] " \r"
	 if @selplayer.simple_name == ""
		set countB + 1
		goto LOOP2
	else
		if debug == 1
			message "(L2)Start: select exile" @selplayer.simple_name
		end if
	end if
	pause 1
	set j 1
	LABEL COMPARELOOP2
	if debug == 1
		//message "(L2C2) ThankGroup[" j "]" myThankGroup[j]
	end if
	if myThankGroup[j] ==  @selplayer.simple_name
		message "*"  @selplayer.name "in list (L2) SKIPPING"
		set countB + 1
		goto LOOP2
	else if j < thankTotal
		set j + 1
		//message "j:" j
		goto COMPARELOOP2
	end if
	setglobal myThankGroup[slotG] @selplayer.simple_name
	pause 1
	if debug == 1
		message "* [" slotG "]" myThankGroup[slotG] " added to thank group. (L2)"
	end if
	setglobal slotG + 1
	setglobal thankTotal + 1
	if countB < @my.shares_out.num_words
		set countB + 1
		goto LOOP2
	end if
	pause 25
end if

label END
if debug == 1
	call WhoAmIThanking
end if
}


//<<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

  label LOOPA
if ATH == 1
	pause delay
	if thankTarget <= thankTotal
		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 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
	setglobal currentIndex thankTarget
	message "currentIndex:" currentIndex "exile to thank " myThankGroup[currentIndex]
	message "**moving up**thankTotal:" thankTotal "*"

	 label DECLOOP
	setglobal cIndexPlus currentIndex
	setglobal cIndexPlus + 1 //CRITICAL: moves to next exile on list

	if cIndexPlus > thankTotal
		message "*m_moveUp*cIndexPlus Exceeds thankTotal"
		//setglobal myThankGroup[currentIndex] "" //20220619 edit from currentIndex //20220703 EDIT bug check!
		if debug == 1
			message "*Thanklist reorganized* '/thg?' to see it (or '/set debug 1'"
			end if
		setglobal cIndexPlus thankTotal
	else if currentIndex == thankTotal //20220625 ADDED
		if myThankGroup[cIndexPlus] != ""
			setglobal myThankGroup[currentIndex] myThankGroup[cIndexPlus]
			setglobal currentIndex + 1
			goto DECLOOP
		end if
		if thankTarget == currentIndex
			 message "  [" currentIndex "]* " myThankGroup[currentIndex]
		 else
			 message "  [" currentIndex "] " myThankGroup[currentIndex]
		 end if
	else //overwrites current exile
		if myThankGroup[cIndexPlus] != ""
			 setglobal myThankGroup[currentIndex] myThankGroup[cIndexPlus]
		 end if
		 if myThankGroup[currentIndex] ==  myThankGroup[cIndexPlus]
			 if thankTarget == currentIndex
				 message "  [" currentIndex "]* " myThankGroup[currentIndex]
			 else
				 message "  [" currentIndex "] " myThankGroup[currentIndex]
			 end if
		 end if
		 setglobal currentIndex + 1
		 goto DECLOOP
	end if
	setglobal thankTotal - 1
	setglobal slotG - 1
end if
if thankTotal < currentIndex
	if debug == 1
		message "mTG[cI]" myThankGroup[currentIndex] currentIndex
	end if
	setglobal currentIndex 1
end if
}


  //<<m_ThankMessage>> (/thm|/thgm) Sets and|or shows the message

setglobal thankMessage 1
  
ThankMessage
{

if @text == "/m"
	message theMessage
else if @text == "/message"
	message theMessage
else if @text == "?"
	message theMessage
else if @text == ""
	random
		setglobal theMessage " because why not? "
	or
		setglobal theMessage " Thanks "
	or
		setglobal theMessage " Thank you "
	or
		setglobal theMessage " Thankx "
	or
		setglobal theMessage " good hunting "
	or
		setglobal theMessage " thanks a lot "
	or
		setglobal theMessage " Why? Because we like you "
	or
		setglobal theMessage " not that it really matters, but here's some good karma "
	or
		setglobal theMessage " Woo! Woo! "
	or
		setglobal theMessage " got Karma? "
	or
		setglobal theMessage " hu! hu! "
	or
		setglobal theMessage " a GK a day keeps the departs away "
	or
		setglobal theMessage " GK!GK!"
	or
		setglobal theMessage " happiness is GK"
	or
		setglobal theMessage " what's in a GK?"
	or
		setglobal theMessage " Good Karma is its own reward."
	or
		setglobal theMessage " this Good Karma brought to you by macros. Yes, macros"
	or
		setglobal theMessage " did you hear the one about the exile who got too much GK? — Turned ultraviolet"
	or
		setglobal theMessage " what's in. GK, let me count the ways…"
	or
		setglobal theMessage " A BK and a GK walk into a bar…"
	or
		setglobal theMessage " are we blue yet?"
	or
		setglobal theMessage " oh happy day, GK"
	or
		setglobal theMessage " GK ‘message and data rates still apply…’"
	or
		setglobal theMessage " keep healers blue! "
	or
		setglobal theMessage " Two by two; GK’s coming for you."
	or
		setglobal theMessage " Wooooooo!"
	or
		setglobal theMessage " There once was a mighty sailin’ man, a skipper brave and sure…"
	or
		setglobal theMessage " There are over 30 different good karma messages! Can you collect them all?"
	or
		setglobal theMessage "Karma Fever: Catch It!"
	or 
		setglobal theMessage "Thanks for hunting with me."
	or 
		setglobal theMessage "Thank you for the hunt."
	or 
		setglobal theMessage "Without you here, it would be a duller world. :)"
	end random
else if @text != ""
	setglobal theMessage @text
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 "*Shares.txt::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 3
		message "*Now you've done it!*"
		pause 2
		message "*9..."
		pause 5
		message "*8..."
		pause 5
		message "*7..."
		pause 5
		message "*6..."
		pause 5
		message "*5..."
		pause 5
		message "*4..."
		pause 5
		message "*3..."
		pause 5
		message "*2..."
		pause 5
		message "*1..."
		pause 5
		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.txt'"
	//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
}

Revisions[edit]

  • 20100827-NV:

Links[edit]