17173首页 - 免费新游 - 火爆论坛 - 游戏博客 - 游戏播客 - 百科问答 - 网游排行榜 - 网游期待榜
| 通行证 注册
大航海时代OL > > 正文
好玩写的操舵和划船脚本
2008-01-20           【 加入收藏 / 文章投稿 / 截图上传 / 发表评论
作者:an 获得积分: Z 投稿总数:

觉得写脚本很有意思,就读了下别人写的,然后修了个适合自己用的。既然是自己写,当然是想到什么就往里面追加,结果,就变得跟王妈妈的裹脚一样了。脚本说明有很长一段,是因为传给朋友们的时候,不想每次都重复地说怎么用。前几个版本,划船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全新积分兑换系统上线 点卡周边等你拿>>>详情点击
关键字:

相关链接

http://dol.17173.com/jingyan/jingyan.shtml

游戏截图
用户: 匿名
史上最强的拼音输入法 下载>>>
评论

我要发布Sogou推广服务

热点标签:
新闻 标题 栏目 文章 图片 链接
热点标签:
新闻 标题 栏目 文章 图片 链接