dota游戏改键程序war3key的源码
;War3Key 源代码
;作者 : lwjiee
;日期 : 2008年8月30日
;代码说明
;m_开头表示自定义标量
;f_开头表示自定义标号/子程序
;详见注释
;编译器版本
;
;软件功能详细说明
/*
1.War3中显血条
2.程序间切换,不改变显血状态
3.自定义技能/物品栏/英雄快捷键
4.支持聊天,聊天模式下,自动取消自定义键盘。采用的是,判断像素点的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
。 该方法局限性巨大,准备工作量大。目前技能支持 800*600*32 模式及 1024*786*32 模式。并且,魔兽中 选项(O)->图像(V) 下面都要调成高。 5.屏蔽左Win
6.ScrollLock 手动取消/启动自定义键盘,因为比如在BN聊天室,或者局域网主 机等人界面,没有游戏中黄色的聊天对话框,但是用户想聊天的情况。
启动显血功能 7.End,Home 手动取消/
8.用户设置自动保存,以隐藏文件war3key.ini的方法,因此,用户移动war3key
到其它目录,需要重新设置。
9.如果感觉我描述不清晰,使用该软件,在游戏环境中体会即可。 */
;----------------------------------------------------------------
;主程序
;----------------------------------------------------------------
Gosub, f_EnvironmentSetting ;脚本环境设置
Gosub, f_Initialize ;初始化变量
Gosub, f_ShowMainWindow ;显示用户界面
Gosub, f_ShowTray ;显示托盘图标
Gosub, f_UserDefineKeyboard ;自定义键盘
SetScrollLockState, On ;打开指示灯
Loop ;进入循环
{
;不停检测War3是否为活动程序
IfWinActive, Warcraft III ahk_class Warcraft III
{
;切入到War3程序
If (m_bInWarCraft == False)
{
;显血
If (m_bAllyHealthBarOn == True)
{
;从其它程序切回War3,需要重新发送 [ 和 ] 显血,刷新War3显示
Send, {[ Up}
Send, {[ Down}
}
If (m_bEnemyHealthBarOn == True)
{
Send, {] Up}
Send, {] Down}
}
m_bInWarCraft := True
}
Gosub, f_CheckChatFrame
}
Else ;如果不再war3程序里
{
;如果是从war3里切出来的
If (m_bInWarCraft == True)
{
m_bInWarCraft := False
}
}
;时间间隔100ms
Sleep 100
}
;----------------------------------------------------------------
;主程序结束
;----------------------------------------------------------------
;----------------------------------------------------------------
;子程序定义
;----------------------------------------------------------------
;设置脚本环境
f_EnvironmentSetting:
{
#SingleInstance force
#NoEnv
#IfWinActive, Warcraft III ahk_class Warcraft III ;仅在war3下有效
SendMode, Play
SetMouseDelay, 0
SetKeyDelay, 0
CoordMode, Pixel, Screen
Return
}
;初始化变量
f_Initialize:
{
;初始化自定义变量
m_bAllyHealthBarOn := True ;友方血条
m_bEnemyHealthBarOn := True ;敌方血条
m_bInWarCraft := False ;是否在war3程序中
m_bUseHotKey := True ;是否开启了自定义快捷键
m_Data=2008年8月30日 ;日期
;800*600模式下标志点的坐标
m_SmallPointX = 375
m_SmallPointY = 468
;1024*786模式下标志点的坐标
m_LargePointX = 499
m_LargePointY = 599
;系统屏幕尺寸
m_SmallScreenSize = 800
m_LargeScreenSize = 1024
;标志点颜色,4个数组元素分别是NE,UD,HUM,ORC,800*600模式下,32位模式
m_SmallPointColorNE = 0x101916
m_SmallPointColorUD = 0x111519
m_SmallPointColorHUM = 0x10141A
m_SmallPointColorORC = 0x11161C
;标志点颜色,4个数组元素分别是NE,UD,HUM,ORC,1024*786模式下,32位模式
m_LargePointColorNE = 0x685309
m_LargePointColorUD = 0x654F09
m_LargePointColorHUM = 0x67510C
m_LargePointColorORC = 0x68510C
m_HelpText =
(
. 提示
该工具读像素点颜色值,判断是否处于聊天状态,因此具有一定局限性。 仅在 800*600*32 或 1024*786*32 图像模式下有效,且【选项】-> 【图像】->下各选项需均为高。
BN 聊天室里,或者局域网主机等人时聊天,请使用 ScrollLock 键手动 开启/取消 自定义键盘。
Fighting!
)
Return
}
;设置用户输入界面主窗口
f_ShowMainWindow:
{
Gui, -MaximizeBox -MinimizeBox +ToolWindow
Gui, Font, s16 bold, Matisse ITC
;组合框
Gui, Add, GroupBox, x186 y13 w170 h150, 物品栏
Gui, Add, GroupBox, x6 y93 w170 h110, 技能
Gui, Add, GroupBox, x6 y13 w170 h70, 英雄
;静态文本显示
Gui, Add, Text, x296 y48 w40 h20, ->8
Gui, Add, Text, x296 y88 w40 h20, ->5
Gui, Add, Text, x296 y128 w40 h20, ->2
Gui, Add, Text, x216 y48 w40 h20, ->7
Gui, Add, Text, x216 y88 w40 h20, ->4
Gui, Add, Text, x216 y128 w40 h20, ->1
Gui, Add, Text, x36 y48 w50 h20, ->F1
Gui, Add, Text, x116 y48 w50 h20, ->F2
Gui, Add, Text, x36 y128 w25 h20, ->
Gui, Add, Text, x36 y168 w25 h20, ->
Gui, Add, Text, x116 y128 w25 h20, ->
Gui, Add, Text, x116 y168 w25 h20, ->
;英雄编辑框
Gui, Add, Edit, x16 y43 w20 h30 vm_Hero1 Limit1,
Gui, Add, Edit, x96 y43 w20 h30 vm_Hero2 Limit1,
;物品栏编辑框
Gui, Add, Edit, x196 y43 w20 h30 vm_Item7 Limit1,
Gui, Add, Edit, x276 y43 w20 h30 vm_Item8 Limit1,
Gui, Add, Edit, x196 y83 w20 h30 vm_Item4 Limit1,
Gui, Add, Edit, x276 y83 w20 h30 vm_Item5 Limit1,
Gui, Add, Edit, x196 y123 w20 h30 vm_Item1 Limit1,
Gui, Add, Edit, x276 y123 w20 h30 vm_Item2 Limit1,
;技能编辑框
Gui, Add, Edit, x16 y123 w20 h30 vm_OldSkill1 Limit1,
Gui, Add, Edit, x61 y123 w20 h30 vm_NewSkill1 Limit1,
Gui, Add, Edit, x96 y123 w20 h30 vm_OldSkill2 Limit1,
Gui, Add, Edit, x141 y123 w20 h30 vm_NewSkill2 Limit1,
Gui, Add, Edit, x16 y163 w20 h30 vm_OldSkill3 Limit1,
Gui, Add, Edit, x61 y163 w20 h30 vm_NewSkill3 Limit1,
Gui, Add, Edit, x96 y163 w20 h30 vm_OldSkill4 Limit1,
Gui, Add, Edit, x141 y163 w20 h30 vm_NewSkill4 Limit1,
;按钮
Gui, Add, Button, x196 y173 w60 h30, 帮助
Gui, Add, Button, default x286 y173 w60 h30, 确定
;读取INI文件,初始化这些编辑框控件
GoSub, f_ReadSetting
Return
}
;设置托盘图标
f_ShowTray:
{
Menu, Tray, NoStandard
Menu, Tray, Add, 设置
Menu, Tray, Add, 说明
Menu, Tray, Add, 退出
Menu, Tray, Default, 设置
Menu, Tray, Click, 1 ;单击打开托盘图标
Menu, Tray, Tip, 魔兽自定义快捷键
Menu, Tray, Icon, , , 1 ;保持不变
Return
}
;自定义键盘
f_UserDefineKeyboard: {
if m_Item7
{
HotKey, %m_Item7%, f_OnItem7
}
if m_Item4
{
HotKey, %m_Item4%, f_OnItem4
}
if m_Item1
{
HotKey, %m_Item1%, f_OnItem1
}
if m_Item8
{
HotKey, %m_Item8%, f_OnItem8
}
if m_Item5
{
HotKey, %m_Item5%, f_OnItem5
}
if m_Item2
{
HotKey, %m_Item2%, f_OnItem2
}
if m_Hero1
{
HotKey, %m_Hero1%, f_OnHero1
}
if m_Hero2
{
HotKey, %m_Hero2%, f_OnHero2
}
if m_OldSkill1
{
if m_NewSkill1
{
Hotkey, %m_NewSkill1%, f_OnSkill1
}
}
if m_OldSkill2
{
if m_NewSkill2
{
Hotkey, %m_NewSkill2%, f_OnSkill2
}
}
if m_OldSkill3
{
if m_NewSkill3
{
Hotkey, %m_NewSkill3%, f_OnSkill3
}
}
if m_OldSkill4
{
if m_NewSkill4
{
Hotkey, %m_NewSkill4%, f_OnSkill4
}
}
Return
}
;保存用户设置
f_SaveSetting:
{
Gui, Submit ;获取用户输入
m_FileText= ;INI文件的内容
(
[Item]
Item8=%m_Item8%
Item7=%m_Item7%
Item5=%m_Item5%
Item4=%m_Item4%
Item2=%m_Item2%
Item1=%m_Item1%
[Hero]
Hero1=%m_Hero1%
Hero2=%m_Hero2%
[Skill]
OldSkill1=%m_OldSkill1%
NewSkill1=%m_NewSkill1%
OldSkill2=%m_OldSkill2%
NewSkill2=%m_NewSkill2%
OldSkill3=%m_OldSkill3%
NewSkill3=%m_NewSkill3%
OldSkill4=%m_OldSkill4%
NewSkill4=%m_NewSkill4%
)
FileDelete, %A_ScriptDir%\War3key.ini ;存在该文件,删除先
FileAppend, %m_FileText%, %A_ScriptDir%\War3key.ini ;写入
FileSetAttrib, +H, %A_ScriptDir%\War3key.ini ;设置为隐藏属性
Return
}
;读取用户设置
f_ReadSetting:
{
m_SettingFile =%A_ScriptDir%\War3key.ini ;INI文件名
if FileExist( m_SettingFile ) ;读入到相应变量
{
;物品栏
IniRead, m_Item8, %A_ScriptDir%\War3key.ini, Item, Item8
IniRead, m_Item7, %A_ScriptDir%\War3key.ini, Item, Item7
IniRead, m_Item5, %A_ScriptDir%\War3key.ini, Item, Item5
IniRead, m_Item4, %A_ScriptDir%\War3key.ini, Item, Item4
IniRead, m_Item2, %A_ScriptDir%\War3key.ini, Item, Item2
IniRead, m_Item1, %A_ScriptDir%\War3key.ini, Item, Item1
;英雄
IniRead, m_Hero1, %A_ScriptDir%\War3key.ini, Hero, Hero1
IniRead, m_Hero2, %A_ScriptDir%\War3key.ini, Hero, Hero2
;技能
IniRead, m_OldSkill1, %A_ScriptDir%\War3key.ini, Skill, OldSkill1
IniRead, m_OldSkill2, %A_ScriptDir%\War3key.ini, Skill, OldSkill2
IniRead, m_OldSkill3, %A_ScriptDir%\War3key.ini, Skill, OldSkill3
IniRead, m_OldSkill4, %A_ScriptDir%\War3key.ini, Skill, OldSkill4
IniRead, m_NewSkill1, %A_ScriptDir%\War3key.ini, Skill, NewSkill1
IniRead, m_NewSkill2, %A_ScriptDir%\War3key.ini, Skill, NewSkill2
IniRead, m_NewSkill3, %A_ScriptDir%\War3key.ini, Skill, NewSkill3
IniRead, m_NewSkill4, %A_ScriptDir%\War3key.ini, Skill, NewSkill4
;刷新用户界面显示,更新控件
;物品栏
GuiControl, , m_Item8, %m_Item8%
GuiControl, , m_Item7, %m_Item7%
GuiControl, , m_Item5, %m_Item5%
GuiControl, , m_Item4, %m_Item4%
GuiControl, , m_Item2, %m_Item2%
GuiControl, , m_Item1, %m_Item1%
;英雄
GuiControl, , m_Hero1, %m_Hero1%
GuiControl, , m_Hero2, %m_Hero2%
;技能
GuiControl, , m_OldSkill1, %m_OldSkill1%
GuiControl, , m_OldSkill2, %m_OldSkill2%
GuiControl, , m_OldSkill3, %m_OldSkill3%
GuiControl, , m_OldSkill4, %m_OldSkill4%
GuiControl, , m_NewSkill1, %m_NewSkill1%
GuiControl, , m_NewSkill2, %m_NewSkill2%
GuiControl, , m_NewSkill3, %m_NewSkill3%
GuiControl, , m_NewSkill4, %m_NewSkill4%
}
Return
}
;判断是否有聊天框
f_CheckChatFrame:
{
If(A_ScreenWidth = m_SmallScreenSize) ;如果是 800*600*32 显示模式
{
PixelGetColor, m_Color, m_SmallPointX, m_SmallPointY, RGB ;获取标志点颜色值
If(m_Color = m_SmallPointColorNE Or m_Color = m_SmallPointColorUD Or m_Color =
m_SmallPointColorHUM Or m_Color = m_SmallPointColorORC)
{ ;如果出现聊天框
SetScrollLockState, Off ;关 ScrollLock 灯
Suspend, On ;挂起脚本
}
Else ;如果没有聊天框
{
If(m_bUseHotkey == True) ;愿意使用自定义键盘,在游戏中
{
SetScrollLockState, On
Suspend, Off
; MsgBox,hellp
}
Else ;不愿意使用自定义键盘,在局域网聊天频道,或者 BN 聊天频道,
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
,黄色的)聊天框,大家还是不希望使用自定义键盘 { ;虽然没有(
SetScrollLockState, Off
Suspend, On
}
}
}
Else
{
If(A_ScreenWidth = m_LargeScreenSize) ;如果是 1024*786*32 显示模式
{
PixelGetColor, m_Color, m_LargePointX, m_LargePointY, RGB
If(m_Color = m_LargePointColorNE Or m_Color = m_LargePointColorUD Or m_Color
= m_LargePointColorHUM Or m_Color = m_LargePointColorORC)
{
SetScrollLockState, Off
Suspend, On
}
Else
{
If(m_bUseHotkey == True)
{
SetScrollLockState, On
Suspend, Off
;MsgBox,hellp
}
Else
{
SetScrollLockState, Off
Suspend, On
}
}
}
}
Return
}
;----------------------------------------------------------------
;子程序定义结束
;----------------------------------------------------------------
;----------------------------------------------------------------
;快捷键定义开始
;----------------------------------------------------------------
;Home键开启/关闭友方血条显示
Home::
Suspend, Permit
{
if ( m_bAllyHealthBarOn == False )
{
Send, {[ Down}
}
else
{
Send, {[ Up}
}
m_bAllyHealthBarOn := Not m_bAllyHealthBarOn
return
}
;End键开启/关闭敌方血条显示
End::
Suspend, Permit
{
if ( m_bEnemyHealthBarOn == False )
{
Send, {] Down}
}
else
{
Send, {] Up}
}
m_bEnemyHealthBarOn := Not m_bEnemyHealthBarOn
return
}
;ScrollLock键开启/关闭自定义键盘
ScrollLock::
Suspend, Permit
{
m_bUseHotkey := Not m_bUseHotkey
return
}
;屏蔽左Win键
LWin::
Suspend, Permit
Return
;----------------------------------------------------------------
;快捷键定义结束
;----------------------------------------------------------------
;----------------------------------------------------------------
;用户界面响应
;----------------------------------------------------------------
;按钮动作——帮助
Button帮助:
{
;显示帮助文件
MsgBox, , War3Key - Help,%m_HelpText%,
return
}
;按钮动作——确定
Button确定:
{
;读取用户设置,保存到INI文件
GoSub, f_SaveSetting
;重启脚本
Reload
return
}
;按钮动作——关闭
GuiClose:
{
ExitApp
return
}
;托盘按钮动作——设置
设置:
{
Gui, Show, , War3Key ;显示主界面-设置界面
return
}
;托盘按钮动作——说明
说明:
{
GoSub, Button帮助 ;作用同Button帮助按钮相同
return
}
;托盘按钮动作——退出
退出:
{
ExitApp
return
}
;----------------------------------------------------------------
;用户界面响应结束
;----------------------------------------------------------------
;----------------------------------------------------------------
;自定义键盘相关子程序
;----------------------------------------------------------------
f_OnItem7:
{
Send, {Numpad7}
return
}
f_OnItem4:
{
Send, {Numpad4}
return
}
f_OnItem1:
{
Send, {Numpad1}
return
}
f_OnItem8:
{
Send, {Numpad8}
return
}
f_OnItem5:
{
Send, {Numpad5}
Return
}
f_OnItem2:
{
Send, {Numpad2}
return
}
f_OnHero1:
{
Send, {F1}
return
}
f_OnHero2:
{
Send, {F2}
return
}
f_OnSkill1:
{
Send, %m_OldSkill1%
return
}
f_OnSkill2:
{
Send, %m_OldSkill2%
return
}
f_OnSkill3:
{
Send, %m_OldSkill3%
return
}
f_OnSkill4:
{
Send, %m_OldSkill4%
return
}
;----------------------------------------------------------------
;自定义键盘相关子程序结束
;----------------------------------------------------------------
;----------------------------------------------------------------
;注释: lwjiee
;日期: 2008年8月30日
;程序结束
;----------------------------------------------------------------