植物大战僵尸2无尽版无尽版键盘用法

[2011/04]&植物大战僵尸无尽手动键控按键精灵通用脚本介绍文档
植物大战僵尸无尽手动键控按键精灵通用脚本介绍文档
七阶子()
首帖地址:
【名词释疑】
  键控: 用按键精灵辅助操作, 用较少的键盘操作代替重复繁冗的鼠标操作, 主要用于玩《植物大战僵尸》无尽模式;
  手动: 仍需由玩家根据局势反应按键, 不支持挂机游戏, 纯粹模拟手工操作, 无其他修改作弊,挂机不是LZ追求的目标,
使用LZ的脚本, 必须手动, 仍需建立在对阵型的理解, 对节奏与炸点落点的把握上……
一、使用方法
  适用按键精灵8.21(及以后)版本,导入或复制该脚本,启动即可。如果系统已经打开了PvZ游戏,脚本将自动找到窗口;否则将弹出文件选择框让玩家选择PvZ程序,如果取消了选择文件或选择了非PvZ游戏程序,脚本将退出运行。在正常使用下,需要保证PvZ游戏窗口在前台获得焦点。可以移动窗口,也可以最小化后再恢复运行。如果PvZ窗口被置后台或最小化,本脚本不会影响或干扰其他程序窗口的操作。如果关闭游戏再重新打开,也需要重启脚本。本脚本将在PvZ安装文件夹的“userdata”目录再创建一个名为“按键精灵”的目录,用于记录日志、保存配置与备份游戏存档。
二、普通快捷键
  裸键,单独按某键将执行相应的一系列点击操作。脚本为主键盘区的大部分按键预设了快捷键,但是也允许用户自定义录制覆盖之。
  1) 数字键,1-0
分别代表十个卡槽,右边的“-”代表铲子,“=”代表上次(用数字键选择的)卡槽。假定玩家已经买了十格卡槽,如果少于十格,后面一些快捷键将不能正确操作而已。
左区字母键使用炮组向主落点开炮,右区字母键使用炮组向副落点开炮(炮组快捷键),中间的几个键是用于自动寻炮打炮的快捷键:
  QWER(UIOP)表示上路炮,ASDF(JKL;)表示中路炮,ZXCV(M,./)表示下路炮,每个键对应一组炮(两门炮),最多能表示后院泳池的二十四炮。在前院与屋顶也有类似的定义,但中三路的A/D(J/L)表示同一组炮,S/F(K/;)也是同一组炮,即两个快捷键将执行相同的操作。括号中的字母,向右平移对应的键,表示相同位置的炮,但是执行时向另外的副落点开炮。对于一般的炮阵,脚本默认只定义了两个主落点,没有副落点,所以右边那些按键无实际效果。如果连主落点也没有(比如无炮阵),那左边那些键也无效了。
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/forum/pic/item/9fdc7.jpg" STYLE="max-width:690"
ALT="[2011/04]&植物大战僵尸无尽手动键控按键精灵通用脚本介绍文档"
TITLE="[2011/04]&植物大战僵尸无尽手动键控按键精灵通用脚本介绍文档" />
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/forum/pic/item/20db40b4bb178a7f62d09fde.jpg" STYLE="max-width:690"
ALT="[2011/04]&植物大战僵尸无尽手动键控按键精灵通用脚本介绍文档"
TITLE="[2011/04]&植物大战僵尸无尽手动键控按键精灵通用脚本介绍文档" />
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/forum/pic/item/f0cb5e1d58a66b7ecffca3b4.jpg" STYLE="max-width:690"
ALT="[2011/04]&植物大战僵尸无尽手动键控按键精灵通用脚本介绍文档"
TITLE="[2011/04]&植物大战僵尸无尽手动键控按键精灵通用脚本介绍文档" />
  主落点、副落点与多落点的概念与不同:
  尽管一般炮阵都是对称地向上下半场各发一炮,使用两个落点,但脚本中并不限制与检测落点个数(落点数组)。可以只定义一个落点,比如半场有炮半场无炮的阵型;也可以定义多个落点,比如后置八炮打C2节奏,可以认为是四个落点(只不过后两个落点与前两个落点相同)。与各个独立炮组快捷键相关联的炮数应该与落点个数相同,如果个数不同,将截断打前面几炮,因此可能不是想要的效果。多落点表示需要多炮同时发射,但另有一些阵型要求向不同的落点开炮的时机并不一致,比如十四以上的底线炮可能需要漏炸矿工,二十四炮需要空中拦截小鬼,其落点都与主炮不一样,这就是副落点的意义。如果你的阵型有此种需要,可以定义副落点,就能使用右边那些快捷键了。脚本最多使用主副两套落点,觉得没必要再扩充了,也没有那么大的键盘——如果说既要炸小鬼又会漏矿工怎么办?回答是如果这么渣操作为什么要自虐……
  中间的字母(G)用于自动向主落点开炮,字母(N)用于自动向副落点开炮(同样若未定义副落无效果),发炮数量与相应的落点数目相同。字母(B)用于半自动打炮,只寻找一炮并激活,再等玩家自主按下左键发射,这可能在少炮阵中能用得上。字母(T)重置炮序,字母(Y)重置炮位,用于解决自动寻炮中可能遇到的意外问题,这在后面再专门介绍吧。
  剩下一个字母(H)用于冰消珊瑚。在后院场景(PE与FE)中有定义,要求前两格选卡分别是咖啡豆与(原版)冰菇,并且2路第8格可种植。在其他两个场景中H快捷键无意义,但在屋顶场景中你可以为它录制冰消空降的操作。录制与自定义快捷键见后文。
  落点微调快捷键,使用小键盘的*、+、-号,分别表示恢复默认位置,向右或向左移动1/4格(20像素)。注意只对主落点有效,且只改变横坐标,不改变纵坐标。后院的默认落点是2-5路8列中,前院的默认落点是2-4路8列中,屋顶的默认落点是2-5路8列中(据说屋顶有上界之风影响,要打在第5路才不易漏炸5路)
三、录制快捷键
  Ctrl修饰的意义。先按下Ctrl键,再按另一个键,将为该键定义快捷操作,即录制点击序列。在窗口中用鼠标左键点击一些位置后(所以可以在实际操作过程中同时录制),再右键结束录制。此后就能使用这个快捷键了,将顺次点击刚才定义的位置序列,当然在这之前还插入一个右键取消上次操作的动作(在左上角的太阳位置上右键,完全无害的),但在结束点击序列之后不再右键取消——这叫做“左闭右开”模式,你有可能需要录制一半的操作,另一半操作可接着使用鼠标点击。
  录制过程要注意的几个问题:
避免特殊键。脚本中已经检测禁用了Esc、空格、Ctrl、Shift、Alt这五个键,前两个将暂停PvZ游戏,后三个脚本另有用途。至于其他键,只要键盘上能按到的,理论上都可用于录制快捷键,但又要注意避免与你的系统中其他热键相冲突,尽量不用特殊键就对了。
在一个完整的录制过程中,不要移动游戏窗口,否则可能得不到正确的窗口坐标了。录制过程是反复暂停等待用户鼠标动作的过程,所以录制结束前也暂时无法使用快捷键了。
为避免中断游戏,录制过程无声无提示。通过回放来测试是否录制成功,若不成功,可以试着重录覆盖,如还有问题,可以查看日志与自动保存的配置文件;于是也可以直接修改配置文件来修正或新定义快捷键。
  定义特殊变量的录制快捷键:
  Ctrl -
G:定义炮位,(此时为避免发炮,改为右键拾点,左键结束),将拾取的点添加入“本阵炮位”数组中,此后的自动寻炮过程就是在这个数组中查找。
  Ctrl - B:定义主落点
  Ctrl - N:定义副落点
  注意到,GNB是内置的自动打炮与半自动打炮快捷键,所以无法用Ctrl来改变其定义。但其他诸多独立的炮组快捷键是可以用Ctrl来改变定义的,一般是将当前阵型中用不上的炮组快捷键重定义其他需要的操作。
  定义炮组快捷键:Ctrl - Shift - Key
  如果当前阵型的炮位比较奇怪,无法用预置的炮组快捷键访问,或者不想用预置的炮组快捷键,则可在按下Ctrl之后再按Shift,再按待定义的键,然后用“鼠标右键”选择炮,再“鼠标左键”结束。选炮个数一般应与落点个数相同(比如2个)。这样右键选取的炮也会添加到自动寻炮的数组中。
  定义延时快捷键:Ctrl - Alt - Key
  典型的类似冰消珊瑚操作,回放点击录制序列之前将延时一定时间。脚本设置的值是固定延时5秒半,但如果想精确延时其他时长,可以修改配制文件。配置文件介绍见后文。
四、Alt命令与Shift命令
  Alt(与Shift)-Key,用于执行其他操作,实现某些特殊功能。这是脚本内置的,无法自定义修改了,当然可以通过改源代码来更改关联快捷键。
  游戏存档备份:
  Alt-S/Alt-L:自动保存或读入最近保存的存档。自动保存在“.../userdate/按键精灵/自动保存/目录下”,最多保存10个备份,以“game1_13.dat.b0”至“game1_13.dat.b9”命名,超过限额则覆盖最旧的备份。只限备份“game1_13.dat”,即第一个用户的无尽存档,脚本没那么智能判断你是第几个用户。
  Alt-B/Alt-R:手动保存或读取存档。将弹出文件选择对话框让你选择文件。
  Bug:用Alt-B手动保存时,只能选择已存在的文件名,不能指定新文件——这是按键蛋疼的File插件方法只能选择已存在的文件名,否则不让返回——于是只能覆盖已有存档,无法新建文件了。
  注意使用这些命令时应保证“game1_13.dat”可读写,即无法在游戏中存取,只能在选卡界面时存档,退出至主界面中读档才有效。
  保存配置文件:Alt-数字键
  默认配置文件是“gameX_13.ini”,在脚本启动与退出将自动加载与保存。但运行过程中使用Alt-数字键(主键盘)将保存至“gameX_13_n.ini”文件,“n“表示相应的数字;而“X”只是字面文本,与哪个用户无关啦。按“Alt-=”(按Alt之后再按“=”键)将弹出对话框让你选择保存至其他文件(仍然有上面那个Bug,只能保存至已有文件中)
  读取配置文件:Shift-数字键
  与Alt-数字键保存的意义相仿相反,只是“Shift-=”能完全正确工作,因为这本来就是只读的。
  切换场景:Shift-F1,F2,F3, (F4)
  脚本初始状态使用的是后院泳池场景,但可以用“Shift-功能”切换,、、分别表示后院、前院与屋顶。切换场景之后将改变落点(及默认落点,小键盘*)的值;更新主键盘各字母(及几个符号)键表示的炮组快捷键,如果曾为这些键自定义,自定义的意义将丢失;重置自动打炮要用到的“本阵炮位”与“循环炮序”。
  最后Shift-将恢复脚本内置的最初设置状态,并且忽略加载默认配置文件“gameX_13.ini”,因为该文件每次退出将保存,所以也不是最初状态了。
  Shift秘籍:
  PvZ有一些秘籍,但输入这些单词也许觉得麻烦,这个脚本提供了快捷方式,只需按“Shift-首字母”即可。这些秘籍有:“future,
mustache, trickedout, daisies pinata, sukhbir,
dance”,注意有两个“D”开头的单词,所以改用“Shift-A”输入“dance”秘籍。
  再提醒一个问题,这个Ctrl、Shift、Alt组合键,脚本要求依次先后按下,但不要求同时按下。
五、自动寻炮与一键打炮
  本脚本使用最原始的数组加速寻炮方法。需要用到两个数组,援用脚本中使用的变量名,就是“本阵炮位”表示阵型中实际存在的炮位(注意与全覆盖的预置炮组快捷键相区别),以及“循环炮序”表示这些炮的循环硬节奏顺序。因此,使用脚本的自动打炮功能将涉及以下三个步骤:
确定本阵炮位的信息。以下操作可以向该数组中添加炮位:Ctrl-G定义的炮位,Ctrl-Shift-Key定义的炮组,以及“手动”用炮组快捷键(预定义或自定义)打出去的炮;能够检测避免添加重复的炮位。
确定循环炮序的节奏。按自动打炮的“G”(或“N”“B”)快捷键将从所有炮位寻找已经准备好的炮,并记录这些先后找到的炮。在这个过程中使用延时准星判断炮的准备状态。
直接一键无延时开炮。在确定了炮位与炮序之后,就可以直接依据炮序找到已循环到的炮,也是最有可能已准备的炮,直接向落点发射。
  在第二步涉及对每个炮的准星测试,所以炮越多,可能的总延时越多。为尽可能减少延时,有个操作技巧,可以根据自己的打炮习惯控制添加炮位的次序(可以先按“Y”把原有可能的炮位清空)与开始转入自动寻炮的时机,保证程序总是能在第一时间内找到准星。
  注意在第三步,也是主要的自动发炮过程,为了避免无延时,不再检测炮的准备状态。这是在炮节奏固定的情况下再假定有人脑值守,总是看到有炮准备好再按“G”(NB)键的。如果不小心提前按了自动打炮命令,将依然在空炮上点击并跳过这些空炮的循环,无法重按“G”键发射——事实上如果重按,将一错再错——这种错误在有意外使已准备好的炮发射失败也可能出现,比如炮点上正好有阳光钱币,当然脚本已然设置多次点击,尽量避免这种意外。解决这个问题的办法用手动或那些独立的炮组快捷键打出这些夭折的炮。实在手忙脚乱的情况下,可以按“T”键重置循环炮序,回到第二步;也可以按“Y”键把本阵炮位也重置,回到第一步——不小心按到不存在的炮组快捷键时可能会添加错误的炮位。
  这也是为什么在已经能实现自动打炮(甚至还有更好的方法)的情形下仍然提供全套冗余的炮组快捷键。因为我觉得在非挂机的手动操作下,为每组炮关联一个键乃是最简捷有效办法,所以也不推荐重定义覆盖那些确实存在的炮组快捷键。本脚本的主要目的在于辅助手动操作,尽可能模拟手动操作,利用可感知的信息——找色可算模拟眼睛判断,而读内存这种不可感知的信息就有点像上帝全知的视角了,有点不同的意义,当然它确保容错性很有效,在挂机中尤其重要。
六、配置文件
  配置文件中主要将保存以下信息:
  落点:包括主落点与副落点,但默认的落点基位(小键盘*恢复的值)不保存;
  自动打炮的信息:也就是上述的两个数组;
  所有快捷键:包括预定义与自定义的都将保存;
  由于有默认配置文件自动加载与保存,能够继承上次的配置并保存每次的改动,可以使用该脚本持续打某个阵型冲关,只需在开始定义好自己习惯的快捷键并建立循环炮位炮序——在没完成这功能之前LZ自己测试也觉得每次运行要重复定义快捷键与循环炮位炮序很麻烦——如果要同时尝试不同的阵型,则要注意转存相应的配置文件,可以将相应的存档放在同一文件夹。
  首次启动脚本,或者删除默认配置文件再启动,然后不执行任何有效操作退出,或者在运行中途使用“Shift-”强制恢复再退出,查看自动保存的“gameX_13.ini”,可以看到本脚本的默认设置。下面不妨帖出介绍一下:
FileName: gameX_13.ini
------------------------------ {{{
多重点炮=8
记录操作=1
主落点={ 2元素: (630,215); (630,485)
副落点=Null
本阵炮位=Null
循环炮序=Null
49={ 1元素: (120,35) }
50={ 1元素: (170,35) }
51={ 1元素: (220,35) }
52={ 1元素: (270,35) }
53={ 1元素: (320,35) }
54={ 1元素: (370,35) }
55={ 1元素: (420,35) }
56={ 1元素: (470,35) }
57={ 1元素: (520,35) }
48={ 1元素: (570,35) }
189={ 1元素: (640,35) }
187={ 1元素: (120,35) }
65={ 3元素: -1; (80,260); (80,345)
83={ 3元素: -1; (240,260); (240,345)
68={ 3元素: -1; (400,260); (400,345)
70={ 3元素: -1; (560,260); (560,345)
81={ 3元素: -1; (80,90); (80,175)
87={ 3元素: -1; (240,90); (240,175)
69={ 3元素: -1; (400,90); (400,175)
82={ 3元素: -1; (560,90); (560,175)
90={ 3元素: -1; (80,430); (80,515)
88={ 3元素: -1; (240,430); (240,515)
67={ 3元素: -1; (400,430); (400,515)
86={ 3元素: -1; (560,430); (560,515)
74={ 3元素: -2; (80,260); (80,345)
75={ 3元素: -2; (240,260); (240,345)
76={ 3元素: -2; (400,260); (400,345)
186={ 3元素: -2; (560,260); (560,345)
85={ 3元素: -2; (80,90); (80,175)
73={ 3元素: -2; (240,90); (240,175)
79={ 3元素: -2; (400,90); (400,175)
80={ 3元素: -2; (560,90); (560,175)
77={ 3元素: -2; (80,430); (80,515)
188={ 3元素: -2; (240,430); (240,515)
190={ 3元素: -2; (400,430); (400,515)
191={ 3元素: -2; (560,430); (560,515)
72={ 5元素: -5400; (170,35);
(630,215); (120,35); (630,215) }
71=Call 自动发炮(主落点)
78=Call 自动发炮(副落点)
66=Call 半自动发炮()
84=Call 清空炮序()
89=Call 清空炮位()
16= Call Shift秘籍()
17= Call Ctrl录制()
18= Call Alt命令()
106=Call 校正落点(0)
107=Call 校正落点(1)
109=Call 校正落点(-1)
-----------------------------------------------------
  [设置]中的“多重点炮”键,就是为了避名点炮点到阳光钱币而作的多次循环,如果你觉得这个数字不够大,可以自己另外设一个。“记录操作”键表示是否在打印脚本的输出至日志文件中,如果不需要,可改为0。日志文件是“...\userdata\按键精灵\操作日志.log”
  [阵型]的“场景”可取三个值,“后院”、“前院”、“屋顶”。而落点与炮位炮序的意义已在上面介绍过了。其实单独设置场景这个值,也可以自动设置这几个变量以及许多快捷键。但在配置文件显示设置的键值与快捷键有覆盖权。键值可以用“Null”表示空值。
  主要介绍下[快捷键]的格式。由于有些键码是不可打印字符,所以偷懒直接用键码用于等号左边的键名了,每个数字(键码)所表示的按键可以从按键精灵中查到。一般快捷键所存储的内容是一个数组,数组元素是坐标,坐标在按键vb的语法中也是用(1*2)的数组表示。
  可以看到键48-57(主数字键)只存了一个坐标,就是对应卡槽的位置。快捷键映射数组中有个前导“-1”标志的表示主炮组,即“QWER,ASDF,ZXCV”这些键,按下它们将使用相应的炮位向主落点打炮;含“-2”前导标志的是副炮组,就是右边的“UIOP
M,./”,由于副落点未定义,其实是会中断无效的。然后“72”是“H”键,有个前导“-5400”,表示延时5400毫秒,然后点击后面那些坐标。
  后面那些是内置的特殊按键,用于调用子过程。写在配置文件中是只读的,修改无效。因为我不知道VBS是否有类似函数指针的东西,暂时没能实现动态调用子过程啦。
  目前LZ正在打FE的火焰十二炮,自己另定义的一些快捷键,也把保存的配置文件示例帖出以作比较,只帖与上面不同的行:
FileName: gameX_13.ini
-----(FE火焰十二炮)----------- {{{
主落点={ 2元素: (710,215); (710,485)
本阵炮位={ 12元素: (80,260); (80,345);
(240,260); (240,345); (400,260); (400,345); (560,260); (560,345);
(400,90); (400,175); (400,430); (400,515) }
循环炮序={ 13元素: 9; 0; 1; 2; 3; 4; 5;
6; 7; 8; 9; 10; 11 }
81={ 1元素: (372,41) }
87={ 1元素: (471,45) }
82={ 2元素: (565,38); (722,473)
90={ 1元素: (512,41) }
88={ 1元素: (558,39) }
86={ 2元素: (424,34); (629,470)
96={ 10元素: (111,367); (376,215);
(156,428); (411,507); (51,289); (362,363); (197,369); (96,215);
(102,283); (419,232) }
-----------------------------------------------------
  可以看到我已经把落点前移了一格。阵型中存了十二炮,后面列出各个炮位的坐标。循环炮序这数组比本阵炮位多1,后面12个元素表示那些炮的循环次序(存储本阵炮位的坐标,vb数组下标从0开始),由于我自己在操作按照相同的次序添炮寻炮,它们正好是依次增加的。循环炮序的第一个元素值表示当前循环到的炮号:9表示先在找到循环炮序的第9个元素,循环炮序(9)=8,再找到本阵炮位(8)=(400,90),这就是根据炮循环硬节奏找到的炮。不失一般情况,循环炮序数组后面那些元素的值,比如0-11,可能是乱序出现的,但找炮的方式是一样的。
  由于十二炮阵只用到ASDFEC六组炮,所以我重定义了其他的左区字母键。QWZX只定义了一个坐标,其实也是某个卡槽位置,Q表示点选南瓜套,因为经常要补后面四个南瓜及水路两个前置南瓜(LZ渣操作不解释),W表示点选阳光菇,既用于垫材,也可创收;Z用于点选窝瓜,X用于点选核弹备用。这四个键是只选卡,不种,按键之后鼠标马上获得相应植物,再看情况种哪路。RV各定义了两个坐标,其实是直接在某处种下一株植物。我用V在5路8列种三叶草,当灯笼被砸时用于应急吹雾;用R直接在5路9列种核弹,如果弹坑未恢复不能种下,核弹在停在鼠标中,可改种他处(似乎与X的功能有点重复了,反复真正用到的不多,不管了)。
  可能有人会问,既然已经预定义了数字键用卡,何必再定义其他键呢。问题是那些数字键有点远,按起来不方便,所以把最常用的卡重复定义。我前两格选灯笼与冰菇,灯笼使用频度也不小,但左手按数字1还不算远,所以就直接用了。一个键只定义一个点,是否有点浪费呢,其实这至少也能节省一半的鼠标操作,也是可以的。而且覆盖不存在的炮组定义,也是为了避免不必要的麻烦。大量预定义的数字键点选卡片,用途似乎不是很大,不过至少还有个检测的功能。当脚本失去响应,出现反常,可以试试按数字键,看看是否真的没响应了,若是,可能就表示在哪死循环了。或者是脚本本身的错误,或者操作失误,比如录制时忘右键结束。
  要使快捷键正确选到卡片,还要保证每次选卡都在相同的位置选相同的植物,于是最后那个很长的含有10个元素的快捷键就是干这事的。对于稳定阵型,每次选卡都差不多的,所以就一键选卡了。我定义在小键盘的0键,因为这是不能在游戏中按到的,否则乱点一通可能点到什么炮就射了,所以就放得远远的,只在每次选卡腾出右手按一下,选卡完毕。此键我没有把下方的“确定”也录入,是为了有时要再确认一下僵尸种类,看看是否要调整选卡,并且若觉得可能是有危险的关,也可按下Alt-S自动保存下。这里要提到一个问题,录制一键选卡,暂时无法选到模仿者,因为要在中途延时,写代码时尚未处理这种情况。
七、结语与感想
  不想多唠叨了,以上介绍了我写这个脚本的主要功能与使用方法,以及自己用于某一阵型的使用心得。如果吧友们觉得有趣,能用之于你们正在玩的阵形,尤其是辅助尝试各种奇异阵型,那将是我的荣幸,我码这些代码与文字也算有点价值了。
  同时也衷心希望程序脚本行家提出反馈意见。尽管还有很多功能可以改进与添加,虽然暂时我不一定有闲暇维护大改动了,但讨论该游戏的脚本实现本身不也是件有趣的事吗,也有益于后来人。谢谢各位关注的朋友。向几位挂机帝致获,虽然我们的理念与方向不一样。
  谨以这个脚本向PvZ两周年献礼。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。怎样运用植物大战僵尸修改器?是那种无限阳光、无需冷却的那种,我按了小键盘没用_百度知道求高手发一下植物大战僵尸中文版的修改器要怎么使用,笔记本使用的,没有小键盘。_百度知道问一下?这个植物大战僵尸是什么版本?手机端的,要游戏键盘才能运行。_百度知道植物大战僵尸年度版是用键盘操作吗?_百度知道}

我要回帖

更多关于 植物大战僵尸2无尽版 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信