Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Diablo III CM Wizard Script - Save your fingers while you can [2500+ Downloads]


  • Please log in to reply
50 replies to this topic
Wickster
  • Members
  • 97 posts
  • Last active: Apr 06 2019 02:28 PM
  • Joined: 12 Jan 2013

Of course its ok that you modified it, Im just here to help. I subbed your post so I can keep up with it. :)



SnowFlake_FlowSnake
  • Members
  • 845 posts
  • Last active: Jan 24 2016 05:24 PM
  • Joined: 08 Oct 2012

Hi i really like your program Tannex grin.png, i think you should add like a splash image to the program so it shows when you start it.

 

http://img27.imagesh...izardscript.png

 

you also need to include GDIP and GDIPHelper just put them in  Mydocuments/autohotkey/lib folder.

and run the code

 

i think it looks alot cooler happy.png

 

GDIP

https://ahknet.autoh...m/~tic/Gdip.ahk

 

GDIPHelper

JustTheBasics() {
	global
	
	; Start gdi+
	If !pToken := Gdip_Startup()
	{
		MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
		ExitApp
	}
	OnExit, Exit
	return
	
	
	Exit:
	; gdi+ may now be shutdown on exiting the program
	Gdip_Shutdown(pToken)
	ExitApp
	Return
 
}
 
SetUpGDIP(iWidth=-1, iHeight=-1) {
	global
	Width := iWidth
	Height := iHeight
	If (iWidth < 0) {
		Width := A_ScreenWidth
	}
	if (iHeight < 0) {
		height := A_ScreenHeight
	}
	
	
	JustTheBasics()
	
	; Create a layered window (+E0x80000 : must be used for UpdateLayeredWindow to work!) that is always on top (+AlwaysOnTop), has no taskbar entry or caption
	Gui, 1: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +OwnDialogs
 
	; Show the window
	Gui, 1: Show, NA
 
	; Get a handle to this window we have created in order to update it later
	hwnd1 := WinExist()
	return
}
 
StartDrawGDIP() {
	global
	
	; Create a gdi bitmap with width and height of what we are going to draw into it. This is the entire drawing area for everything
	hbm := CreateDIBSection(Width, Height)
 
	; Get a device context compatible with the screen
	hdc := CreateCompatibleDC()
 
	; Select the bitmap into the device context
	obm := SelectObject(hdc, hbm)
 
	; Get a pointer to the graphics of the bitmap, for use with drawing functions
	G := Gdip_GraphicsFromHDC(hdc)	
}
 
EndDrawGDIP() {
	global
	
	; Update the specified window we have created (hwnd1) with a handle to our bitmap (hdc), specifying the x,y,w,h we want it positioned on our screen
	; So this will position our gui at (0,0) with the Width and Height specified earlier
	UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
 
 
	; Select the object back into the hdc
	SelectObject(hdc, obm)
 
	; Now the bitmap may be deleted
	DeleteObject(hbm)
 
	; Also the device context related to the bitmap may be deleted
	DeleteDC(hdc)
 
	; The graphics may now be deleted
	Gdip_DeleteGraphics(G)
}
 
ClearDrawGDIP() {
	global
	Gdip_GraphicsClear(G)
}

Diablo III CM Wizard Script

#NoEnv
#SingleInstance force
SendMode Input
SetWorkingDir %A_ScriptDir%
SetBatchLines, -1
#MaxThreadsPerHotkey 2
#Include <GDIp>
#Include <GDIpHelper>

SetUpGDIP()
 

StartDrawGDIP()
ClearDrawGDIP()
 
Gdip_SetSmoothingMode(G, 4)
 
pBitmap := Gdip_CreateBitmapFromFile("diabloiiicmwizardscript.png")
Gdip_DrawImage(G, pBitmap, 0, 0, 565, 374)
Gdip_DisposeImage(pBitmap)
EndDrawGDIP()
 
Sleep 1000
StartDrawGDIP()
ClearDrawGDIP()
EndDrawGDIP()


GUI_Enabled = False
1_count := 0
2_count := 0
3_count := 0
latest_key = 0
Screen_x := A_ScreenWidth/4.5
Screen_y := A_ScreenHeight-50
;Awsome On/Off system from Wickster below!
CustomColor = 000000
Gui 1: +Disabled
Gui 1: +LastFound +AlwaysOnTop -Caption +ToolWindow
Gui 1: Color, %CustomColor%
Gui 1: add, Picture, x0 y0 w50 h50 vOgre, %A_ScriptDir%\Off Button.png
WinSet, TransColor, %CustomColor% 230
;End of the setup for the On/Off system by Wickster
SetTimer, Diablo, 100
IfNotExist, CM.config
{
    Gui 2: Add, Text, x10 y10 w150 h30 , Script Toggle Key
    Gui 2: Add, Hotkey, x180 y10 w120 h30 vToggle, X
    Gui 2: Add, Text, x10 y50 w150 h30 , Ingame key for 1st spell
    Gui 2: Add, Edit, x180 y50 w120 h30 vKey1, 1
    Gui 2: Add, Text, x10 y90 w150 h30 , Ingame key for 2nd spell
    Gui 2: Add, Edit, x180 y90 w120 h30 vKey2, 2
    Gui 2: Add, Text, x10 y130 w150 h30 , Ingame key for 3rd spell
    Gui 2: Add, Edit, x180 y130 w120 h30 vKey3, 3
    Gui 2: Add, Text, x10 y170 w150 h40 , Min Time between keypresses in ms
    Gui 2: Add, Edit, x180 y170 w120 h30 vMinDelay, 10
    Gui 2: Add, Text, x10 y220 w150 h40 , Max Time between keypresses in ms
    Gui 2: Add, Edit, x180 y220 w120 h30 vMaxDelay, 30
    Gui 2: Add, Text, x10 y270 w150 h30 , Script Exit Hotkey
    Gui 2: Add, Hotkey, x181 y270 w120 h30 vExitKey, ^!Esc
    Gui 2: Add, Button, x111 y320 w100 h30 gButtonDone , Done
    Gui 2: +AlwaysOnTop
    Gui 2: Show, w330 h370, Config
}else {
    FileReadLine, Toggle, CM.config, 1
    FileReadLine, Key1, CM.config, 2
    FileReadLine, Key2, CM.config, 3
    FileReadLine, Key3, CM.config, 4
    FileReadLine, MinDelay, CM.config, 5
    FileReadLine, MaxDelay, CM.config, 6
    FileReadLine, ExitKey, CM.config, 7
    Hotkey, %Toggle%, Main
    Hotkey, %ExitKey%, ExitSub
}
return
Main:
 {
    t:=!t
    ;On/Off System by Wickster
    if (t) {
        GuiControl 1:,Ogre, %A_ScriptDir%\On Button.png
    }else{
        GuiControl 1:,Ogre, %A_ScriptDir%\Off Button.png
    }
    ;End of On/Off System by Wickster
    loop:
while t {
    IfWinActive, Diablo III
    {
    Random, X, 1, 3
    if (X == 1) and (latest_key != 1) {
        RandSleep(MinDelay,MaxDelay)
        Send, {%Key1% Down}
        RandSleep(MinDelay,MaxDelay)
        Send, {%Key1% Up}
        EnvAdd, 1_count, 1
        latest_key = 1
    }else if (X == 2) and (latest_key != 2) {
        RandSleep(MinDelay,MaxDelay)
        Send, {%Key2% Down}
        RandSleep(MinDelay,MaxDelay)
        Send, {%Key2% Up}
        EnvAdd, 2_count, 1
        latest_key = 2
    }else if (X == 3) and (latest_key != 3) {
        RandSleep(MinDelay,MaxDelay)
        Send, {%Key3% Down}
        RandSleep(MinDelay,MaxDelay)
        Send, {%Key3% Up}
        EnvAdd, 3_count, 1
        latest_key = 3
    }else{
        goto, loop
    }
}
}
}
return
RandSleep(x,y) {
Random, rand, %x%, %y%
Sleep %rand%
}
return
ButtonDone:
Gui 2: submit
Hotkey, %Toggle%, Main
Hotkey, %ExitKey%, ExitSub
if (MinDelay <= 0) {
    MinDelay = 10
    MsgBox, Min delay was too low, set to default (10ms)
}
if (MaxDelay <= MinDelay) {
    MaxDelay := MinDelay + 10
    MsgBox, Max delay was too low, set to %MaxDelay%ms
}
FileAppend, %Toggle%`n, CM.config
FileAppend, %Key1%`n, CM.config
FileAppend, %Key2%`n, CM.config
FileAppend, %Key3%`n, CM.config
FileAppend, %MinDelay%`n, CM.config
FileAppend, %MaxDelay%`n, CM.config
FileAppend, %ExitKey%, CM.config
return
Diablo:
if (GUI_Enabled="False")
{
    IfWinActive, Diablo III
    {
        Gui 1: Show, w50 h50 x%Screen_x% y%Screen_y%
        WinActivate, Diablo III
        GUI_Enabled = True
    }
} else {
    IfWinNotActive, Diablo III
    {
        Gui 1: Hide
        GUI_Enabled = False
    }
}
return
GuiClose:
    ExitApp
return
ExitSub:
if A_ExitReason not in Logoff,Shutdown
{
    MsgBox, 64, Results, %1_count% %Key1%'s`n%2_count% %Key2%'s`n%3_count% %Key3%'s, 10
}
ExitApp

  • Download link of my scripts on Autohotkey.com 2/10/2015 [DOWNLAND]
  • Contact Info:  https://github.com/floowsnaake //  FloowSnaake(A)gmail.com
  • IF you need Help send me a PM,Email or Post on Github

  • Quote by tank  Posted 29 September 2015 - 06:14 PM

  • "Eventually i will find a way to convert the DB back to PHPBB3. but i dont have the bandwidth right now. No one that has tried has had success. It is the Only way i can keep this open is if i could successfully convert it."

Tannex
  • Members
  • 59 posts
  • Last active: Nov 13 2015 03:26 PM
  • Joined: 29 Apr 2013

i was actually thinking about adding something like this myself. But wouldent that give people without gdi+ problems?

 

i really want this script to be usable by as many as possible



Tannex
  • Members
  • 59 posts
  • Last active: Nov 13 2015 03:26 PM
  • Joined: 29 Apr 2013

I ended up adding the splash image anyways, resulting in having to use .exe files, but i think it ended up working good. If not, please post here



Tannex
  • Members
  • 59 posts
  • Last active: Nov 13 2015 03:26 PM
  • Joined: 29 Apr 2013

Thinking about adding "silent mode" where you can choose not to have the on/of images enabled, this could be usefull for streamers and people whom make youtube vids

 

Please post what you think

 



sld5434
  • Members
  • 1 posts
  • Last active: Jun 11 2013 05:30 PM
  • Joined: 10 Jun 2013

First of all, I'm a huge fan of this script. Well done. I do, however, have 1 question/suggestion:

 

I have basic programming experience but nothing advanced enough to be able to modify this script in the slightest. The only thing I really want to modify is changing the "toggle key to activate" to a "hold key to activate." This just seems more natural to me and I feel like I would perform better with this option. I guess I'm requesting maybe a quick rundown of how I could modify this script myself to accomplish this, or you could even alter it yourself and add a setting for this if you think that other people may be interested in it as well.

 

Again, I love the script as it is, this is just a request/suggestion that I would enjoy if it's not too much trouble for you.



Tannex
  • Members
  • 59 posts
  • Last active: Nov 13 2015 03:26 PM
  • Joined: 29 Apr 2013

the thing is, the script used to be hold-to-activate, but the keyboard would still send the activaiton key every once in a while. If anyone has a fix for this please post or pm me.

 

an example would be if the activation key were x, the input windows detected would be something like "213231231x3213x1213231x"

 

 

anyways, i will look into it since this is the 2nd or 3rd time its requested, and i really do appreciate the feedback



Leviathan
  • Members
  • 3 posts
  • Last active: Aug 10 2013 01:02 PM
  • Joined: 19 Jun 2013

Nice script, but, i try to hold shift and it does'nt works =/, some one have the same problem? any one have a solution?? =/ Tkx!



Wickster
  • Members
  • 97 posts
  • Last active: Apr 06 2019 02:28 PM
  • Joined: 12 Jan 2013

its a toggle on and off script its not a push and hold script and also you may have sticky keys if your using windows on, turn that off. and you might wanna chose a different hotkey shift isnt ideal of hotkeys imo. if that didnt help sorry :3 thats all i know



Leviathan
  • Members
  • 3 posts
  • Last active: Aug 10 2013 01:02 PM
  • Joined: 19 Jun 2013

I'm sry, my bad, i try to hold shift for STAND, script runs pretty good!



Wickster
  • Members
  • 97 posts
  • Last active: Apr 06 2019 02:28 PM
  • Joined: 12 Jan 2013

ah i use F1 to turn it on and off and i use 5 to stand still and it works find for me :)



Aelfin
  • Members
  • 6 posts
  • Last active: Jun 22 2013 08:50 PM
  • Joined: 16 Jun 2013

 

 

THIS SCRIPT IS NOT TO BE RELEASED ANYWHERE BUT HERE (OFFICIAL AUTOHOTKEY FORUMS) AND IF YOU WANT SOMEONE ELSE TO KNOW ABOUT IT, SEND A LINK TO THIS THREAD, THANK YOU FOR RESPECTING THIS.

You put this in your OP but copy my RefreshArmor code *and* credit Wickster. Puh-lease. Gimme a break.

 

Also, to solve the stand still issue, use {Blind}. From the docs:

 

 

When {Blind} is the first item in the string, the program avoids releasing Alt/Control/Shift/Win if they started out in the down position. For example, the hotkey +s::Send {Blind}abc would send ABC rather than abc because the user is holding down the Shift key.

 



Wickster
  • Members
  • 97 posts
  • Last active: Apr 06 2019 02:28 PM
  • Joined: 12 Jan 2013

the reason i got credit for it was because i did indeed make it. lol. i msged him a day before your post even came out. then i saw your post. sorry if u think i stole it but i was working on it for awhile. ever since i started helping tannex with the script.



Aelfin
  • Members
  • 6 posts
  • Last active: Jun 22 2013 08:50 PM
  • Joined: 16 Jun 2013

uh huh. amazing we named things exactly the same. and amazing that armorTimer is the only camel-cased variable in the code. truly bizarre that the initial timer is set for 10s.

total coincidence.

 

you probably don't even know why the initial SetTimer, RefreshArmor, off is in there.

because it's not needed for this. i put it in there due to interaction with other things running in the full version of the script i run.

 

it's not that big a deal. pretty easy code.

but to see you try and take credit for it? ... distasteful.



Wickster
  • Members
  • 97 posts
  • Last active: Apr 06 2019 02:28 PM
  • Joined: 12 Jan 2013

I PM'd you. its fine that you think i stole it. already messaged tannex to take care of it. told him to remove me for credit so no feelings are hurt.