;***********************************************************************************; ;******************************** 脚本概述 ************************************; ;***********************************************************************************; ;** 第〇,请不要利用本脚本的技术和方法进行非法外挂开发,否则后果自负!!! **; ;** **; ;** 第一,本脚本功能不存在非法外挂特性,仅仅是为了玩家更好的体验游戏,并且仅 **; ;** 仅重新动态映射了游戏的三个功能键(f,g,h),并且完全开源。如果腾讯无端官方认定本 **; ;** 脚本为外挂,请论坛版主们手下留情。我会立即删除这个帖子。 **; ;** **; ;** 第二,本脚本由腾讯生死狙击二区丿fly灬帝尊战队的高手高高手願願原创并分享, **; ;** 并保留软件所有权权利。本脚本测试环境为微软win8.1(64位)系统的firefox火狐网页 **; ;** 下的NPFLASH(64位)腾讯生死狙击flash游戏。其他系统如xp,vista,win10等等系统 **; ;** 以及微端和IE等等环境,未经测试。 **; ;** **; ;** 第三,希望无端腾讯官方尽早开发游戏键盘按键设置功能,终结本脚本的使命。 **; ;** **; ;** 第四,本脚本完全免费,完全开源,请自行辨别脚本的适用性。本脚本需要安装 **; ;** AutoHotkey Version 1.1.28.02及以上的版本。为避免windows系统的用户帐户控制UAC **; ;** 的限制,最好以administrator身份运行本脚本。运行方法:右键点击脚本,选择选项卡 **; ;** Run Script。如果未出现Run Script选项,再次右键 点击脚本,重复操作。退出方法: **; ;** 点击任务栏,出现“H”字样图标,右键点击,选择 Exit。退出后,系统恢复原始状态,**; ;** 本脚本的功能完全失效。本脚本为纯绿色软件等级,本脚本基本不消耗系统资源,极其 **; ;** 轻质。 **; ;** **; ;** 第五,本脚本使用的语言是AutoHotkey Version 1.1.28.02软件的语言。如发现本 **; ;** 脚本有bug,请在论坛回复我,也可在游戏中告诉我,如有时间我会回复。 **; ;** **; ;** 第六,本脚本在概念上划分了三个键盘布局:一是竞技键盘布局,二是正常键盘布 **; ;** 局,三是windows原始键盘布局。 **; ;** **; ;** 第七,windows原始键盘布局,不解释,就是字面上的意思。而正常键盘布局,仅仅 **; ;** 监听了ScrollLock键和Enter键的状态,其他特性与原始键盘布局完全一致;而竞技键盘 **; ;** 布局相比于正常键盘布局有三个变化:一是把f键变成q键,二是把g键也变成q键,三是 **; ;** 把h键变成原来的g键。 **; ;** **; ;** 第八,在全屏游戏下,ScrollLock键灯亮时,按回车,可在两种键盘布局间切换。 **; ;** 这样既保证了生死狙击竞技模式下,可以正常聊天打字,又保证了换枪和扔枪按键的需 **; ;** 要。 **; ;** **; ;** 第九,在脚本运行时,按ScrollLock键使其灯灭,再反复按回车键2次,则无条件 **; ;** 恢复成正常键盘布局。这样做保证了,在生死狙击冒险模式时,可以迅速恢复成正常键 **; ;** 盘,因为冒险模式打僵尸时,很少需要右换枪换枪,并且f和g键是加血或者加子弹的功 **; ;** 能,不需要再次将f键和g键重新映射,正常键盘就可以了。 **; ;** **; ;***********************************************************************************; ;******************************** 完 *************************************; ;***********************************************************************************; ;//////////////////////////////////////代码开始///////////////////////////////////; ;第一,#InstallKeybdHook,用来调试,查看按键消息需要; ;第二,一般需要用键盘钩子有四种情况(帮助文档中有); ;第三,本脚本功能不需要键盘钩子,所以这里注释掉了,可节约系统资源。 ;;;;#InstallKeybdHook ; ;/////////////////////////////////////////////////////////////////////////; ;第一,Hotkey, IfWinActive语句可以限定脚本生效窗口; ;第二,本语句限定该脚本生效的游戏窗口为flash窗口; ;第三,可以用autohotkey自带spy查看游戏窗口的ahk_class名称; ;第四,Hotkey, IfWinActive语句使用一次就可以了,详见帮助文档。 Hotkey, IfWinActive, ahk_class ShockwaveFlashFullScreen ; ;/////////////////////////////////////////////////////////////////////////; ;第一,刚开始是正常键盘布局,无热键生效。 HotKey,f,switchKeyBoard,off ; HotKey,g,switchKeyBoard,off ; HotKey,h,switchKeyBoard2,off ; ;/////////////////////////////////////////////////////////////////////////; ;第一,本脚本,脚本明文只有一个线程和一个进程,若有其他线程则是由系统自己管理的; ;第二,本脚本,线程不会主动退出,也没有提供退出的热键; ;第三,想要退出,请直接在任务栏关闭本脚本; ;第四,一旦脚本出现问题,先熄灭ScrollLock,然后反复按回 ; 车键2次,便可以恢复到正常键盘布局。 while true ;死循环 ;/////////////////////////////////////////////////////////////////////////; { ;/////////////////////////////////////////////////////////////////////////; while not GetKeyState("ScrollLock" ,"T") ;ScrollLock灯灭,则恢复成正常键盘布局 { BlockInput, On ;避免再次按下ScrollLock键,保证脚本运行稳定 HotKey,f,,Off ; HotKey,g,,Off ; HotKey,h,,Off ; BlockInput, Off ;恢复键盘和鼠标响应 KeyWait,ScrollLock,D ;无限时间等待ScrollLock键按下 KeyWait,ScrollLock ;无限时间等待ScrollLock键放开 } ;/////////////////////////////////////////////////////////////////////////; ;第一,logicFlag这个布尔类型变量是用来使能切换热键状态的; ;第二,OnlyOneTimeFlag这个布尔类型变量用来在循环块中设置只执行一次的语句块; ;第三,光标坐标设置为相对于整个屏幕。 CoordMode,Caret,Screen ; logicFlag:=true ; OnlyOneTimeFlag:=true ; ;/////////////////////////////////////////////////////////////////////////; ;第一,ScrollLock灯亮并且游戏进入全屏模式后,进入回车键切换布局状态; ;第二,ScrollLock灯灭或者游戏退出全屏模式后,退出回车键切换布局状态。 while GetKeyState("ScrollLock" ,"T") and WinActive("ahk_class ShockwaveFlashFullScreen") ; ;/////////////////////////////////////////////////////////////////////////; { ;/////////////////////////////////////////////////////////////////////////; ;为了不影响回车键切换键盘布局,所以只执行一次,并设置键盘布局为竞技键盘布局。 if OnlyOneTimeFlag ; { HotKey,f,,On ; HotKey,g,,On ; HotKey,h,,On ; OnlyOneTimeFlag:=false ; } ;/////////////////////////////////////////////////////////////////////////; ;第一,此处if-else语句用来在竞技键盘布局和正常键盘布局两个键盘布局间交替切换; ;第二,理想的语句应该是HotKey Toggle语句,但不会用,只能这样; ;第三,一旦出现意外情况,比如游戏退出全屏或者游戏正常结束退出全屏,只 ; 需要反复按回车,就能回到正常状态; ;第四,等待回车键敲击,用GetKeyState语句效果不好,只能用KeyWait语句; ;第五,这里必须是按下和松开这两条语句。如果只写一条,回车键切换布局功能将不稳定; ;第六,这里用KeyWait语句有诸多考虑,比如:关于输入法及其窗口生命期过程等等。 if logicFlag ;如果logicFlag变量为真,则进入正常键盘布局 { KeyWait,Enter,D ;无限时间等待Enter键按下 HotKey,f,,off ; HotKey,g,,off ; HotKey,h,,off ; logicFlag:=false ;下次循环执行else语句块 KeyWait,Enter ;无限时间等待Enter键放开 } else ;如果logicFlag变量为假,则执行 { KeyWait,Enter,D ;无限时间等待Enter键按下 KeyWait,Enter ;无限时间等待Enter键放开 BlockInput, On ;避免再次按下Enter键,保证脚本运行稳定 sleep,16 ;等待输入窗口被销毁 if A_CaretY = ;判断输入窗口是否已经完全销毁 { HotKey,f,,on ; HotKey,g,,on ; HotKey,h,,on ; logicFlag:=true ;下次循环执行if语句块 } BlockInput, Off ; } ;/////////////////////////////////////////////////////////////////////////; } ;/////////////////////////////////////////////////////////////////////////; ;退出循环,也就是ScrollLock键灯灭后,立即恢复成正常键盘布局。 HotKey,f,,off ; HotKey,g,,off ; HotKey,h,,off ; ;/////////////////////////////////////////////////////////////////////////; sleep,663 ;为了减少对cpu时间的占用,这里规定脚本代码睡眠663毫秒 ;/////////////////////////////////////////////////////////////////////////; } ;/////////////////////////////////////////////////////////////////////////; ;第一,这里的代码是从按键历史消息中复制过来的,当时是使用静态映射f::q。 ;第二,标签label名称可以随便取名,这里用了如下两个名字。 switchKeyBoard: ; Send,{Blind}{q DownR} ; SetKeyDelay,-1 ; Send,{Blind}{q Up} ; return ; switchKeyBoard2: ; Send,{Blind}{g DownR} ; SetKeyDelay,-1 ; Send,{Blind}{g Up} ; return ; ;//////////////////////////////////////代码完///////////////////////////////////;