觉得写脚本很有意思,就读了下别人写的,然后修了个适合自己用的。既然是自己写,当然是想到什么就往里面追加,结果,就变得跟王妈妈的裹脚一样了。脚本说明有很长一段,是因为传给朋友们的时候,不想每次都重复地说怎么用。前几个版本,划船60天可以得58经验,偶尔会出现得60的情况,这个版本测试不足,不能保证。但不想再写新版本了,打算直接用它到操舵15去了。反正是飘,能多飘几样其他技能才划算,才写得这么长的,呵呵。另外,检测断线的是新加的,没测试过,就注释掉了。还是那句话,能看就看,不能看直接关闭页面就行了,呵呵。
脚本全文如下:
[General]
Description=DOL-操舵划船(港口)
BeginHotkey=122
BeginHotkeyMod=0
PauseHotkey=0
PauseHotkeyMod=0
StopHotkey=123
StopHotkeyMod=0
RunOnce=1
EnableWindow=
Enable=0
[Repeat]
Type=0
Number=1
[CallBack]
OnSetup=
[Comment]
Content=
[Script]
//***********************************************************************
// 脚本说明
// (by AN)
//***********************************************************************
//--- < 脚本文件 > ---------------------------------------
//1. 将本文件直接复制到[..\按键精灵\script\]目录下,然后启动按键精灵。
//2. 或者启动按键精灵后直接导入。
//--- < 环境设置 > ---------------------------------------
//1. 脚本启动 :(F11)
//2. 脚本中止 :(F12)
//3. DOL环境 :800*600窗口模式 (使用前台功能时,脚本启动后,勿移动窗口)
//4. DOL快捷键 :(F1~F8)自定义栏 (F9)使用技能 (F11)无 (F12)无
//5. DOL自定义栏:(F1)料理 (F2)救助 (F3)统率 (F4)xx (F5)划船 (F6)运用 (F7)警戒 (F8)修理
//6. 自定义栏的其他设置方案:
// 固定: (F1)料理 (F2)救助 (F5)划船 。
// 特别: (F3)一次划船周期,使用4次;不占用航海技能图标的技能(例如 统率 修理 疾病学 等)。不设置可。
// 可选: (F6) (F7) (F8);节约料理时,可不设置。(例如 测量 钓鱼 生存 运用 警戒 望风 操帆 等)
// 无效: (F4)本脚本未使用。
// 其他: 脚本中用F8打开自定义栏,建议(F8)设置为不占用航海技能图标的技能(例如 统率 修理 疾病学 等)。
// 其他: 建议使用修理技能,不然因船耐久而白旗的频率会很高。
//7. 生存的练法:只带水或不带(重要);生存的级别会影响划船得的经验(使之减少);练生存时救助长得快(救助救起的水手一多就费粮食)。
//8. 关于料理-1:正常情况下2次划船周期一次料理;未满划船周期而白旗时,吃一次料理后技能重开。
// 关于料理-2:每隔8次白旗检测一次行动力是否不足一半,不足一半则连续吃3次料理。
//--- < 关于用户变量 > ---------------------------------------
//1. 【检测划船持续时间(1)不检测(0)】
// →独立功能,与其他用户变量无关。测试完毕,脚本结束。
// →使用前提:前台;勿动鼠标;海上非白旗状态;未使用其他航海技能(即窗口右中部无图标)。
// →检测完毕:弹出消息框,提示下面2中[划船技能持续时间(秒)]的大概值。误差可能在10秒内。
//
//2. 【划船技能持续时间(秒)】
// →最好设置为偶数。
// →参考:8级划船持续时间为170秒;9级为178秒。
//
//3. 【前台全自动(1)后台半自动(0)】
// →前台全自动(1):脚本启动后不能移动窗体,并须保持前台状态;大约每3秒检测白旗。
// 脚本启动前提 :脚本启动时可以为白旗或起帆状态;不能为满帆状态
// 交替使用技能 :救助 划船 (F6) (F7) (F8) [ 转圈or触礁 & 检测白旗] (F3)×4 [转圈or触礁 & 检测白旗] 料理
// 触礁时的坐标 :调整视角,使窗口中上部与(船只耐久度)水平的地方为陆地。最好窗口上部一半是陆地。
// →后台半自动(0):可后台或最小化窗口;白旗后的起帆须手动。
// 交替使用技能 :救助 划船 (F6) (F7) (F8) (F3)×4 料理
//
//4. 【前台转圈(1)前台触礁(0)】
// →前台全自动(1)时有效。
// →前台转圈(1):顺时针转圈。有飘离港口的可能。
// →前台触礁(0):调整视角,使窗口中上部与(船只耐久度)水平的地方为陆地。最好窗口上部一半是陆地。
//***********************************************************************
// 用户变量
//***********************************************************************
UserVar ChkRowSecFlg=0 检测划船持续时间(1)不检测(0)
UserVar RowingSecond=178 划船技能持续时间(秒)
UserVar ForegroundFlg=1 前台全自动(1)后台半自动(0)
UserVar TurnRingFlg=0 └前台┄转圈(1)-触礁(0)
//***********************************************************************
// 脚本变量
//***********************************************************************
//--- < 关键通用变量 > -----
Dim RowMicroSec //划船技能持续时间(毫秒)
//--- < Flag相关 > ---------
Dim SkillOnFlg //技能使用中
//--- < 循环相关 > ---------
Dim SailMicroSec, SailLoop, BkgdDelay //操舵划船时用
//--- < 临时变量 > ---------
Dim tmpVar, tmpCnt, chkCnt
//--- < 常量 > ---------
//正常情况下 [ OnceFoodLoop ] 次划船周期一次料理
VBS OnceFoodLoop=2
//每 [ ChkWhiteFlgSec ] 秒检测白旗
VBS ChkWhiteFlgSec=3
//检测到行动力不足一半时连续吃 [ ContFoodCnt ] 次料理。
VBS ContFoodCnt=3
//检测断线和行动力的周期时间:划船持续时间 × ( ChkDisConCnt + 1 )
VBS ChkDisConCnt=8
//微调用
VBS msecOffset=20
//--- < DOL坐标相关 > ------
Dim SkillCheckCoX, SkillCheckCoY //航海技能坐标
Dim SailCheckCoX, SailCheckCoY //起帆键的坐标
Dim EnergyChkCoX, EnergyChkCoY //行动力的坐标
Dim DisConChkCoX, DisConChkCoY //检查断线坐标
//--- < 窗口坐标相关 > -----
Dim winPoint //窗口信息
Dim AbsCoX, AbsCoY, RelCoX, RelCoY //绝对与相对坐标
//***********************************************************************
// 主程序
//***********************************************************************
VBS set TiShiObj = createobject("WScript.Shell")
Plugin hwnd=Window.GetKeyFocusWnd()
Delay 1000
RowMicroSec=RowingSecond*1000
Gosub 获取窗口信息
If ChkRowSecFlg=1
ForegroundFlg=1
Gosub 判断窗口分辨率
Gosub 获取技能的坐标
Gosub 检测划船持续时间
Gosub 结束
EndIf
If ForegroundFlg=1
Gosub 判断窗口分辨率
Gosub 获取起帆的坐标
Gosub 获取行动力坐标
Gosub 获取断线的坐标
EndIf
Gosub 计算循环变量
For 999999
Gosub 港口操舵划船
EndFor
Rem 结束
EndScript
//***********************************************************************
// 子程序<检测划船持续时间>
//***********************************************************************
//------------------------ 检测划船持续时间 --------------------
Sub 检测划船持续时间
MsgHint=" 检测开始,勿动鼠标! "
VBSCall TiShiObj.Popup(MsgHint,5,"检测划船技能持续时间",0)
Gosub 起帆
//--- 移动鼠标到航海技能图标
Delay 500
VBS RelCoX=781:RelCoY=292
Gosub 移动鼠标
Delay 500
//--- 使用划船技能(F5)
Plugin Window.SendKeyPress(hwnd,119)
Delay 2000
Plugin Window.SendKeyPress(hwnd,116)
Delay 1500
//--- 开始计时
SkillOnFlg=1
tmpCnt=0
For 500
Delay 1900
Gosub 检测划船技能
If SkillOnFlg=0
Goto 停止检测
EndIf
tmpCnt=tmpCnt+2
EndFor
Rem 停止检测
//--- 提示检测结果
MsgHint=""
If tmpCnt=0
MsgHint="检测失败!请检查鼠标是否移动!"
ElseIf tmpCnt=1000
MsgHint="检测失败!请检查是否打开了其他航海技能!"
ElseIf MsgHint=""
MsgHint=" 检测结束,大约为[ " & tmpCnt & " ]秒! "
EndIf
VBSCall TiShiObj.Popup(MsgHint,8,"检测划船技能持续时间",0)
Return 检测划船持续时间
//------------------------ 检测划船技能 --------------------
Sub 检测划船技能
IfColor SkillCheckCoX (SkillCheckCoY+30) FFFFFF 1
//划船技能结束
SkillOnFlg=0
EndIf
Return 检测划船技能
//***********************************************************************
// 子程序<港口操舵划船>
//***********************************************************************
//------------------------ 计算循环变量 --------------------
Sub 计算循环变量
SailMicroSec=RowMicroSec-20000
tmpVar=(SailMicroSec)/4-5000
SailLoop=tmpVar/(1000+msecOffset)
BkgdDelay=tmpVar+1000
Return 计算循环变量
//------------------------ 港口操舵划船 --------------------
Sub 港口操舵划船
chkCnt=0
Rem 白旗后重开
For OnceFoodLoop
chkCnt=chkCnt+1
Gosub 救助技能
Gosub 划船技能
Gosub 起帆
Gosub 其他技能
Gosub 航行
EndFor
Gosub 使用料理
If chkCnt >ChkDisConCnt
//Gosub 检查断线
chkCnt=0
EndIf
Goto 白旗后重开
Return 港口操舵划船
//***********************************************************************
// 子程序<自定义栏>
//***********************************************************************
//------------------------ 使用料理 (3500 ms) ------------------
Sub 使用料理
// F1料理
Gosub 技能纠错
Plugin Window.SendKeyPress(hwnd,119)
Delay 1500
Plugin Window.SendKeyPress(hwnd,112)
Delay 500
Return 使用料理
//------------------------ 救助技能 (5000 ms) --------------
Sub 救助技能
// F2 救助
Gosub 技能纠错
Plugin Window.SendKeyPress(hwnd,119)
Delay 2000
Plugin Window.SendKeyPress(hwnd,113)
Delay 1500
Return 救助技能
//------------------------ 统率技能 (5000 ms) -------------
Sub 统率技能
// F3 统率
Gosub 技能纠错
Plugin Window.SendKeyPress(hwnd,119)
Delay 2000
Plugin Window.SendKeyPress(hwnd,114)
Delay 1500
Return 统率技能
//------------------------ 划船技能 (5000 ms) -------------
Sub 划船技能
// F5 划船
Gosub 技能纠错
Plugin Window.SendKeyPress(hwnd,119)
Delay 2000
Plugin Window.SendKeyPress(hwnd,116)
Delay 1500
Return 划船技能
//------------------------ 其他技能 (12000 ms) -------------
Sub 其他技能
Gosub 技能纠错
// F6 运用
Plugin Window.SendKeyPress(hwnd,119)
Delay 2000
Plugin Window.SendKeyPress(hwnd,117)
Delay 1500
// F7警戒
Plugin Window.SendKeyPress(hwnd,119)
Delay 2000
Plugin Window.SendKeyPress(hwnd,118)
Delay 1500
// F8 修理
Plugin Window.SendKeyPress(hwnd,119)
Delay 2000
Plugin Window.SendKeyPress(hwnd,119)
Delay 1500
Return 其他技能
//***********************************************************************
// 子程序<技能纠错>
//***********************************************************************
//------------------------ 技能纠错 (1500 ms) ------------------
Sub 技能纠错
// F9使用技能
Plugin Window.SendKeyPress(hwnd,120)
Delay 1500
Return 技能纠错
//***********************************************************************
// 子程序<前台事件>
//***********************************************************************
//------------------------ 前台起帆 ------------------------
Sub 起帆
//前台全自动
If ForegroundFlg=1
//左转
KeyPress 37 1
//Plugin Window.SendKeyPress(hwnd,37)
Delay 200
//右转
KeyPress 39 1
//Plugin Window.SendKeyPress(hwnd,39)
Delay 200
EndIf
Return 起帆
//------------------------ 前台航行 ------------------------
Sub 航行
//后台半自动
If ForegroundFlg=0
For 4
Delay BkgdDelay
Gosub 统率技能
EndFor
EndIf
//前台全自动
If ForegroundFlg=1
For 4
tmpCnt=0
//转圈或触礁循环
For SailLoop
tmpCnt=tmpCnt+1
If tmpCnt=ChkWhiteFlgSec
Gosub 检查白旗
tmpCnt=0
EndIf
If TurnRingFlg=1
Gosub 顺时针转圈
Else
Gosub 触礁
EndIf
EndFor
//统率
Gosub 统率技能
EndFor
EndIf
Return 航行
//------------------------ 触礁 (1000 ms) ------------------
Sub 触礁
//--- 移动到陆地并点击(船耐久右边的中间)
VBS RelCoX=400:RelCoY=76
Gosub 移动鼠标
LeftClick 2
Delay 430
Return 触礁
//------------------------ 顺时针转圈 (1000 ms) ------------
Sub 顺时针转圈
For 3
//右转
KeyPress 39 1
//Plugin Window.SendKeyPress(hwnd,39)
Delay 300
EndFor
Return 顺时针转圈
//------------------------ 检查白旗 ---------------------------
Sub 检查白旗
IfColor SailCheckCoX SailCheckCoY E8E8E8 0
//起帆状态非白旗
Else
Gosub 使用料理
//检查行动力和断线
If chkCnt >ChkDisConCnt
Gosub 检查行动力
//Gosub 检查断线
chkCnt=0
EndIf
Goto 白旗后重开
EndIf
Return 检查白旗
//------------------------ 检查行动力 (2500 ms) ------------
Sub 检查行动力
If ForegroundFlg=1
//行动力不足一半则连续吃料理
IfColor EnergyChkCoX EnergyChkCoY 353535 0
For ContFoodCnt
Gosub 使用料理
EndFor
EndIf
EndIf
Return 检查行动力
//------------------------ 检查断线 ------------------
Sub 检查断线
If ForegroundFlg=1
IfColor DisConChkCoX DisConChkCoY FFFFFF 0
IfColor (DisConChkCoX+41) DisConChkCoY FFFFFF 0
//显示断线检出时间,误差半小时左右
VBS h=Hour(time):m=Minute(time):s=Second(time)
MsgHint = " 断线检出后脚本停止时间[ "&h&" : "&m&" : "&s&" ]! "
VBSCall MessageBox(MsgHint)
//结束脚本
Goto 结束
EndIf
EndIf
EndIf
Return 检查断线
//***********************************************************************
// 子程序<窗口与坐标>
//***********************************************************************
//------------------------ 获取窗口信息 --------------------
Sub 获取窗口信息
//获取窗口信息,保存到变量中
Plugin winRect=Window.GetClientRect(hwnd)
winPoint = Split(winRect, "|", -1, 1)
//CInt(winPoint(0)) //窗口的左边坐标
//CInt(winPoint(1)) //窗口的上边坐标
//CInt(winPoint(2)) //窗口的宽度
//CInt(winPoint(3)) //窗口的高度
Return 获取窗口信息
//------------------------ 判断窗口分辨率 ------------------
Sub 判断窗口分辨率
If CInt(winPoint(2)) <> 800
MsgHint=" 请设置窗口分辨率为[800*600]! "
VBSCall TiShiObj.Popup(MsgHint,5,"提示五秒",0)
Goto 结束
EndIf
Return 判断窗口分辨率
//------------------------ 查找绝对坐标 --------------------
//调用前参数设置例:VBS RelCoX=400:RelCoY=300
Sub 查找绝对坐标
//参数(RelCoX,RelCoY)为窗口相对坐标
AbsCoX = CInt(winPoint(0)) + RelCoX
AbsCoY = CInt(winPoint(1)) + RelCoY
//返回值(AbsCoX,AbsCoY)为屏幕绝对坐标
Return 查找绝对坐标
//------------------------ 获取技能的坐标 ------------------
Sub 获取技能的坐标
VBS RelCoX=781:RelCoY=292
Gosub 查找绝对坐标
SkillCheckCoX=AbsCoX
SkillCheckCoY=AbsCoY
Return 获取技能的坐标
//------------------------ 获取起帆的坐标 ------------------
Sub 获取起帆的坐标
VBS RelCoX=781:RelCoY=522
Gosub 查找绝对坐标
SailCheckCoX=AbsCoX
SailCheckCoY=AbsCoY
Return 获取起帆的坐标
//------------------------ 获取行动力坐标 ------------------
Sub 获取行动力坐标
VBS RelCoX=96:RelCoY=115
Gosub 查找绝对坐标
EnergyChkCoX=AbsCoX
EnergyChkCoY=AbsCoY
Return 获取行动力坐标
//------------------------ 获取断线的坐标 ------------------
Sub 获取断线的坐标
VBS RelCoX=298:RelCoY=302
Gosub 查找绝对坐标
DisConChkCoX=AbsCoX
DisConChkCoY=AbsCoY
Return 获取断线的坐标
//------------------------ 移动鼠标 ------------------------
Sub 移动鼠标
Gosub 查找绝对坐标
MoveTo AbsCoX AbsCoY
Delay 500
Return 移动鼠标
//***********************************************************************
// 文件<结束>
//***********************************************************************
| 此篇文章为17173玩家原创作品,获得积分奖励 Z。 17173全新积分兑换系统上线 点卡周边等你拿>>>详情点击 |





