ThankGroup: Difference between revisions

From CLUMP
Jump to navigationJump to search
m (v3.0.1 fix)
m (upping ThankGroup to version 2.1.6 after fix)
Line 1: Line 1:
  /*-----------------------------------------------------------------------------
  /*-----------------------------------------------------------------------------
           | shareMultiple Version 1.0.1 | ThankGroup Version 2.1.5 |
           | shareMultiple Version 1.0.1 | ThankGroup Version 2.1.6 |
  --------------------------------- Description ---------------------------------
  --------------------------------- Description ---------------------------------
  Shares is an expansion of the default /share command to accept multiple names, to speed sharing and thanking groups of people.
  Shares is an expansion of the default /share command to accept multiple names, to speed sharing and thanking groups of people.
Line 45: Line 45:
  v.2.1.4 Added ability to remove a person from the list with /thgc <number>
  v.2.1.4 Added ability to remove a person from the list with /thgc <number>
  *Added ThankGroup Help "/thh" or "/thgh"
  *Added ThankGroup Help "/thh" or "/thgh"
v2.1.5 bug fixes to list behavior broken in 2.1.4 feature addition
  -----------------------------------------------------------------------------*/
  -----------------------------------------------------------------------------*/
  /****** Share Triggers ******/
  /****** Share Triggers ******/

Revision as of 23:53, 7 March 2017

/*-----------------------------------------------------------------------------
          | shareMultiple Version 1.0.1 | ThankGroup Version 2.1.6 |
--------------------------------- 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

-----------------------------------------------------------------------------*/
/****** 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 ""
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.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 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
	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
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
	if thankTarget < thankTotal
		setglobal thankTarget + 1
	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]
else if modeverbose == 1
	message "*thanking " myThankGroup[thankTarget] "/thh for help"
	setglobal modeverbose 0
end if
label END
}

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
	set thankTotalAdjustment thankTotal
	set 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

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
}