The Wiki for Tale 4 is in read-only mode and is available for archival and reference purposes only. Please visit the current Tale 11 Wiki in the meantime.

If you have any issues with this Wiki, please post in #wiki-editing on Discord or contact Brad in-game.

User:Shuofthefieryheat/MyUtilitiesPage/Shu Enhanced Clicker

From A Tale in the Desert
Jump to navigationJump to search

Shuofthefieryheat Enhanced Clicker Page

Other Pages of Interest

MyHomePage

MyUtilitiesPage


Notes

These macros where created and compiled on Vista x64 using AutoIt 3.0. If you are using a different OS or get an error when you run them, you need to get the AutoIt 3.0 compiler/editor utility and recompile the macro on your own system. The macro utilities and compilers can be found on the main macro page : Macros

Shu's Enhanced Clicker Macro

This is an enhanced clicker based on Sithid's Clicker Sithid's Clicker .


To use the macro in game you click on the progam Shu_One_Clicker_Enhanced_v2_0_d.exe

To Start the macro running do CTRL + p

To Exit the macro do CTRL + x

To see a help message do CTRL + h

The macro will prompt you for all the options. You can select the ones that make sense to have running.

It will repeatedly click a location that you designate. An icon or a line in a pinned menu.

It will monitor for Bright Red and skip clicking when its recognized.

It will also monitor for Green Stats and send you a msg when the food has run out. new: the status msg should properly display now

There is a counter for when you just want to collect X amount of something new: option to display the counter status while collecting stuff

There is also a Delay Timer so you dont click too often.

You can use any or all of them at one time.

Once you have set the locations, you can RESET them to a NEW location by just hovering over the NEW location and doing the appropriate CTRL key for that item.

These are the options in the program

Global $HelpMsg1 = "This clicker uses several controls: "
Global $HelpMsg2 = "CTRL+x = Exit "
Global $HelpMsg3 = "CTRL+p = Start/Pause "
Global $HelpMsg4 = "CTRL+1 = Set the Click Location "
Global $HelpMsg5 = "CTRL+2 = Set the Delay Timer "
Global $HelpMsg6 = "CTRL+3 = Red Spot Monitor "
Global $HelpMsg7 = "CTRL+4 = Green Spot Monitor "
Global $HelpMsg8 = "CTRL+5 = Set Counter "
Global $HelpMsg9 = "CTRL+h = This help message "

Shu's Enhanced Clicker Macro: Zip file with Source & EXE & Info File

Shu's Enhanced Clicker Zip File

Shu's Enhanced Clicker Macro Source

#cs --------------------------------------------------------------------------------------
	
	AutoIt Version 3.2.12.1
	
	Author: ShuoftheFieryHeat
	Date:		03.13.09
	Version:	2.0.d 
	Script Function:
	Repeat Clicker - With Prompt for Delay Time.
	Changed all inputs to use the CTRL Key
	so that two copies of this program can work
	
	This version should allow you to pick 2 spots to monitor
	1 spot is for Bright Red 
    2 spot is for Green
	
	This allows you to skip performing an action when it cannot complete
	and also sends a message that your food buffs are gone.
	
	Added: a Counter = collect exactly what you want
	Added: option to display counter status.
	
	Bug Fix: Green Monitor Food Out Msg 
	
	Based on the work of Sithid.
		
	Author:		Sithid
	Date:		07.12.08
	Version:	1.3
	
	Script Function:
	Repeat Clicker - Automagical
	

#ce --------------------------------------------------------------------------------------

#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#Include <Array.au3>

Opt( "MustDeclareVars", 1 )

GLOBAL $dll = DllOpen("user32.dll")

Global $Paused = False

Global $ClickPosSet = False 
Global $ClickPos[2]

Global $RedPosSet = False 
Global $RedPos[2]
Global $isRed = False
Global $BrightRed = 0xFF0000 

Global $GreenPosSet = False 
Global $GreenPos[2]
Global $isGreen = False
Global $BrightGreen = 0x009900

Global $ShowBuffMsg = False
Global $ShowBuffMsgTimes = 2
Global $ShowBuffMsgCurrentCount = 0

Global $Delay  = 30000; time in ms between clicks about 30 seconds

Global $GoodToGo = False

Global $CountItems = False
Global $CurrentItemCount = 0
Global $QuantityToCount = 0

Global $DisplayCounterStatus = False
Global $DisplayCounterStatusFadeValue = 2000 ; have msg fade in 2 seconds
Global $FrequencyToShowCount = 10
Global $msgholder ;changeable msg text


Global $HelpMsg1 = "This clicker uses several controls: "
Global $HelpMsg2 = "CTRL+x = Exit "
Global $HelpMsg3 = "CTRL+p = Start/Pause "
Global $HelpMsg4 = "CTRL+1 = Set the Click Location "
Global $HelpMsg5 = "CTRL+2 = Set the Delay Timer "
Global $HelpMsg6 = "CTRL+3 = Red Spot Monitor "
Global $HelpMsg7 = "CTRL+4 = Green Spot Monitor "
Global $HelpMsg8 = "CTRL+5 = Set Counter "
Global $HelpMsg9 = "CTRL+h = This help message "

HotKeySet( "^x", "Terminate" )
HotKeySet( "^X", "Terminate" )

HotKeySet( "^p", "TogglePause" )
HotKeySet( "^P", "TogglePause" )
HotKeySet("^{PAUSE}", "TogglePause")

; These are now enabled when doing the setup
;HotKeySet( "^1", "SetClickPos" )
;HotKeySet( "^2", "SetClickDelay" )
;HotKeySet( "^3", "SetRedPos" )
;HotKeySet( "^4", "SetGreenPos" )
;HotKeySet( "^5", "SetCounterAmount" )


HotKeySet( "^h", "HelpMsg" )
HotKeySet( "^H", "HelpMsg" )

WinWaitActive( "eGenesis Client" );
	
TogglePause()

SetupClickPositions()

Main()


Func HelpMsg()
	; Using a single set of messages to give instructions
	Local $msg

	$msg = ( $HelpMsg1 & @CRLF & @CRLF & @TAB & $HelpMsg2  & @CRLF &  @TAB & $HelpMsg3 _
		& @CRLF &  @TAB & $HelpMsg4  & @CRLF &  @TAB & $HelpMsg5  & @CRLF &  @TAB & $HelpMsg6  _
		& @CRLF &  @TAB & $HelpMsg7 & @CRLF &  @TAB & $HelpMsg8  & @CRLF &  @TAB & $HelpMsg9 )
	
	MsgBox(0x40000,"Info Box", $msg)
EndFunc

Func MsgFoodOut()
	;send msg that the food buff is gone msg lasts 4 seconds
	;only do this 2 times - we don't need constant reminders
	
	MsgBox( 0x40040, "Food All Gone", "Food buff is all gone."  _
		& @CRLF & @CRLF & "This message will display twice. " & @CRLF & _
		"(" & "... message going away in 4 seconds...." & ")", 4 )	
	
EndFunc

Func MsgCountDone()
	;send msg that the count has been reached
	
	MsgBox( 0x40000, "Count Complete", "You have collected: "  _ 
		& $CurrentItemCount & " of " & $QuantityToCount)
	
EndFunc

Func ToolTipCounterStatus()
	;send tooltip with the current count 
	Local $WinPos [4]
	Local $i = 0
	Local $DisplayToolTip = True
	
	;find the bottom right corner for the tooltip display
	$WinPos = WinGetPos( "eGenesis Client" );
	
	For $i = 0 To 3 Step 1
		If $WinPos[$i] < 0 Then
			;window is minimized skip this
			$DisplayToolTip = False
			ExitLoop
		EndIf
	Next
	
	If $DisplayToolTip Then
		; display the tip near the middle bottom of the screen
		ToolTip("You have collected: "  _ 
			& $CurrentItemCount & " of " & $QuantityToCount, int($WinPos[2]/2) , int($WinPos[3]-50) ,"Count Status", 1, 2 )
		
		;wait just a bit and then clear the tooltip 
		Sleep($DisplayCounterStatusFadeValue) 
		ToolTip("")
	EndIf
	
EndFunc


Func SetupClickPositions()
	; The setup of this macro needs some user directions
	
	HelpMsg()
		
	SetRedLocation()
	SetGreenLocation()
	SetClickDelay()
	SetCounterAmount()
	SetClickLocation()

	
EndFunc


Func LookForInput_Red()
	
	If _IsPressed(11) Then
        If _IsPressed(33) Or _IsPressed(63) Then
			Return(True)
		Else
			Return(False)
		EndIf
	EndIf
		
EndFunc

Func LookForInput_Green()
	
	If _IsPressed(11) Then
        If _IsPressed(34) Or _IsPressed(64) Then
			Return(True)
		Else
			Return(False)
		EndIf
	EndIf
		
EndFunc

Func LookForInput_Location()
	
	If _IsPressed(11) Then
        If _IsPressed(31) Or _IsPressed(61) Then
			Return(True)
		Else
			Return(False)
		EndIf
	EndIf
		
EndFunc

Func SetRedLocation()
	Local $yesno

	$yesno = MsgBox(0x40004,"Red Spot Setup" ,"Do you want to monitor for Bright Red?")
	
	If $yesno == 6  Then
					
	    MsgBox( 0x40000, "Red Spot Location", _
			"Please hover over the place you want to monitor for Bright RED conditon and press CTRL+3.")

		While Not $RedPosSet
			
			; now we have to look for the CTRL + 3 keys
			$GoodToGo = LookForInput_Red()
	
			;when captured set the position		
			If $GoodToGo Then
				SetRedPos()
				;enable the hotkey for this feature
				HotKeySet( "^3", "SetRedPos" )
				MsgBox(0x40000,"Red Spot", _
					"Red Spot has been recorded. You can now use CTRL+3 to reset it")
			
			EndIf		
		WEnd
				
	Else
		MsgBox( 0x40000, "Red Spot Location", "Red will not be monitored. " )
	EndIf

EndFunc


Func SetGreenLocation()
	Local $yesno

	$yesno = MsgBox(0x40004,"Green Spot Setup" ,"Do you want to monitor for Green?")
	
	If $yesno == 6  Then
					
	    MsgBox( 0x40000, "Green Spot Location", _
			"Please hover over the place you want to monitor for GREEN conditon and press CTRL+4.")

		While Not $GreenPosSet
			
			; now we have to look for the CTRL + 4 keys
			$GoodToGo = LookForInput_Green()
	
			;when captured set the position		
			If $GoodToGo Then
				SetGreenPos()
				;enable the hotkey for this feature
				HotKeySet( "^4", "SetGreenPos" )
				MsgBox(0x40000,"Green Spot", _
					"Green Spot has been recorded. You can now use CTRL+4 to reset it")
			
			EndIf		
		WEnd
				
	Else
		MsgBox(0x40000, "Green Spot Location", "Green will not be monitored. " )
	EndIf
	
EndFunc


Func SetClickDelay()
	Local $yesno
	
	$yesno = MsgBox(0x40004,"Click Delay Setup" ,"Do you want to set a Click Delay?")
	
	If $yesno == 6  Then
	    $Delay = InputBox( "Pause Delay", "Please enter the delay time between clicks. 30000 is about 30 seconds.", $Delay)
		$Delay = Int($Delay)
		HotKeySet( "^2", "SetClickDelay" )
		MsgBox( 0x40000, "Pause Delay", "The Pause Delay is now set for: " & $Delay & @CRLF & @CRLF & _ 
				"You can now use CTRL+2 to reset it")	
	Else
		$Delay = 1	
		MsgBox( 0x40000, "Pause Delay", "Pause Delay will not be used. " )
	EndIf
		
EndFunc

Func SetClickLocation()
	
	MsgBox(0x40000,"Click Location Setup" ,"You MUST set a Click Location." & @CRLF & @CRLF &  _ 
		"Please hover over the place you want to repeat click and press CTRL+1.")
			
	While Not $ClickPosSet
			
		; now we have to look for the CTRL + 1 keys
		$GoodToGo = LookForInput_Location()
	
		;when captured set the position		
		If $GoodToGo Then
			SetClickPos()
			;enable the hotkey for this feature
			HotKeySet( "^1", "SetClickPos" )
			MsgBox(0x40000,"Click Location", _
				"Click Location has been recorded. You can now use CTRL+1 to reset it")			
		EndIf		
	WEnd

EndFunc

Func SetCounterAmount()
	; how much to gather

	Local $yesno

	$yesno = MsgBox(0x40004,"Counter Setup" ,"Do you want to set a Counter?")
	
	If $yesno == 6  Then
	    $QuantityToCount = InputBox( "Counter", "Please enter the quanity you want to collect. 0 will be unlimited.", $QuantityToCount)
		$QuantityToCount = Int($QuantityToCount)
		
		If $QuantityToCount > 0 Then
			$CountItems = True
			$CurrentItemCount = 0 ;start counter over
			SetCounterDisplay() ;get frequency of msg popups
		Else
			$CountItems = False
		EndIf
		
		;enable the hotkey for this feature
		HotKeySet( "^5", "SetCounterAmount" )
		MsgBox( 0x40000, "Counter Setting", "The Counter is now set for: " & $QuantityToCount &@CRLF & _ 
				$msgholder & @CRLF & @CRLF & "You can now use CTRL+5 to reset it")	
	Else
		$CountItems = False		
		$QuantityToCount = 0	
		MsgBox( 0x40000, "Counter", "A counter will not be used. " )
	EndIf	
	
EndFunc

Func SetCounterDisplay()
	; setup to show a running count

	Local $yesno
	
	$yesno = MsgBox(0x40004,"Counter Info Setup" ,"Do you want to monitor the status of the Count?")
	
	If $yesno == 6  Then
	    $FrequencyToShowCount = InputBox( "Counter", "Please enter how often you want the count message to appear." & _ 
			@CRLF & "ex: 10 = when you've gathered every 10th item" & @CRLF & " 0 will be continuous updates.", $FrequencyToShowCount)
		$FrequencyToShowCount = Int($FrequencyToShowCount)
		
		If $FrequencyToShowCount >= 0 Then
			$DisplayCounterStatus = True
			; add frequency to the confirmation MsgBox
			$msgholder = ("The Counter Display Frequency is now set for: " & $FrequencyToShowCount)
		Else
			$DisplayCounterStatus = False
			$msgholder = ""
		EndIf

		MsgBox( 0x40000, "Display Counter Frequency Setting", "The Counter Display Frequency is now set for: " & $FrequencyToShowCount)
	Else
		$DisplayCounterStatus = False		
		MsgBox( 0x40000, "Counter", "The counter will not be monitored. " )
	EndIf	
	
EndFunc


Func SetRedPos()
	$RedPos = MouseGetpos()
	$RedPosSet = True
EndFunc

Func SetGreenPos()
	$GreenPos = MouseGetpos()
	$GreenPosSet = True	
EndFunc

Func SetClickPos()
	$ClickPos = MouseGetpos()
	$ClickPosSet = True
EndFunc

Func CheckforRed()
	;look for bright red
	
	Local $OldMouseLoc[2]
	Local $coord[2]
	
	If $RedPosSet Then
		$OldMouseLoc = MouseGetPos()
		MouseMove( $RedPos[0], $RedPos[1], 1)
		
		; Find a pure red pixel or a red pixel within 50 shades variations of pure red
		$coord = PixelSearch( $RedPos[0], $RedPos[1], $RedPos[0]+70, $RedPos[1]+5, $BrightRed, 50 )
		If Not @error Then
			$isRed = True
			;MsgBox(0x40000, "X and Y are:", "Red was found at: " & $coord[0] & "," & $coord[1])
		Else
			$isRed = False
			;MsgBox(0x40000, "X and Y are:", "Red was NOT found at: " & $RedPos[0] & "," & $RedPos[1])
		EndIf
		
		;return mouse to previous location
		MouseMove( $OldMouseLoc[0], $OldMouseLoc[1], 1)
			
	EndIf
	
EndFunc

Func CheckforGreen()
	;look for bright green
	
	Local $OldMouseLoc[2]
	Local $coord[2]
	
	If $GreenPosSet Then
		$OldMouseLoc = MouseGetPos()
		MouseMove( $GreenPos[0], $GreenPos[1], 1)
		
		; Find a pure green pixel or a green pixel within 50 shades variations of pure green
		$coord = PixelSearch( $GreenPos[0], $GreenPos[1], $GreenPos[0]+70, $GreenPos[1]+5, $BrightGreen, 50 )
		If Not @error Then
			$isGreen = True
			$ShowBuffMsg = True
			;MsgBox(0x40000, "X and Y are:", "Green was found at: " & $coord[0] & "," & $coord[1])
		Else
			$isGreen = False
			;MsgBox(0x40000, "X and Y are:", "Green was NOT found at: " & $GreenPos[0] & "," & $GreenPos[1])
		EndIf
		
		;return mouse to previous location
		MouseMove( $OldMouseLoc[0], $OldMouseLoc[1], 1)
			
	EndIf
	
	
EndFunc


Func DoClickLocation()
	; clicks the target location
		
	Local $OldMouseLoc[2]
	
	If $ClickPosSet Then
		$OldMouseLoc = MouseGetPos()
		
		MouseClick( "left", $ClickPos[0], $ClickPos[1], 1)
		;MsgBox(0x40000, "Location Click:", "Clicked location at: " & $ClickPos[0] & "," & $ClickPos[1])
		
		;Count the item if counter is enabled
		If $CountItems Then
				CheckCounter()
				
				;If the counter has been turned off 
				;then we got our quota and since we are done we should pause the script
				If Not $CountItems  Then
					MsgCountDone()

					MsgBox(0x40000, "Paused Now", "We have now gotten our quota so setting to Pause.")
					TogglePause()
					
				EndIf
					
		EndIf
				
		;return mouse to previous location
		MouseMove( $OldMouseLoc[0], $OldMouseLoc[1], 1)
		
	Else
		MsgBox(0x40000,"Location Click Error", "ERROR: Click Location is NOT set.")
			
	EndIf

EndFunc


Func CheckCounter()
	; count and check the values
	
	If $CountItems Then
		$CurrentItemCount += 1
	EndIf
		
	If $QuantityToCount > $CurrentItemCount Then
		DoCounterMsg()
	Else
		$CountItems = False
		$DisplayCounterStatus = False
	EndIf
	
EndFunc

Func DoCounterMsg()
	; show the counter amount
	Local $ModValue

	If $DisplayCounterStatus Then
		
		If $FrequencyToShowCount > 0 Then
			$ModValue = Mod($CurrentItemCount, $FrequencyToShowCount)
			If $ModValue == 0 Then
				ToolTipCounterStatus() ;this is a tooltip msg
			EndIf
		Else
			ToolTipCounterStatus() ;this is a tooltip msg
		EndIf
	EndIf
	
EndFunc


Func DoBuffMsgOut()
	; display the buff out message 2 times
		
	If $ShowBuffMsg Then
		If 	$ShowBuffMsgCurrentCount < $ShowBuffMsgTimes 	Then
			MsgFoodOut()
			$ShowBuffMsgCurrentCount += 1
		Else
			$ShowBuffMsg = False
			$ShowBuffMsgCurrentCount = 0
		EndIf
	EndIf

EndFunc

Func Main()
	
	#cs
	Work:
		We have Red and Green to monitor
		We have the Delay to wait
		We have the Location to Click
		
		Rule 1: When Red do not click
		Rule 2: If Green is out then do BuffMsg
		Rule 3: Wait for Timer to Click
	#ce
	
	Do
		WinWaitActive( "eGenesis Client" );

		CheckforRed()
		CheckforGreen()

		If $GreenPosSet Then
			If $isGreen Then
				; reset the current msg count at 0
				$ShowBuffMsgCurrentCount = 0
			Else
				DoBuffMsgOut()
			EndIf
		EndIf
	
		
		If $RedPosSet AND $isRed Then
			;skip
		Else
			DoClickLocation()
		EndIf
			
		Sleep( $Delay )
		
	Until 1 = 2
	
EndFunc

Func TogglePause()
	$Paused = Not $Paused ; this is a flipper
			
	While $Paused
		Sleep(100 )
	WEnd
EndFunc

Func Terminate()
	DllClose($dll)
	Exit
EndFunc