17173首页 - 免费新游 - 火爆论坛 - 游戏博客 - 游戏播客 - 百科问答 - 网游排行榜 - 网游期待榜
| 通行证 注册
大航海时代OL > > 正文
HodakDu的***采集&自动生产脚本(1)
2007-03-15           【 加入收藏 / 文章投稿 / 截图上传 / 发表评论
作者:HodakDu 获得积分: Z 投稿总数:

此脚本特点如下:


1. 1024*768*32位系统分辨率设置,800*600窗口模式运行大航海时代OL;
2. 不需要调整窗口位置,脚本中采用的全部是相对坐标;
3. 快捷方式按键F1,装载按键F7,露天市场按键F9,使用技能按键F11,变更副官负责内容F2;
4. 采集快捷键F1,吃料理快捷键F2,F3,F4,依次为料理1,料理2,料理3,F5为红宝石切割书,F6为金属提炼的书;
5. 自动判断料理数量,用户可以自定义3种料理,请自行修改“料理恢复数值数组”部分的数值;
6. 自动调整露天市场的价格,可以设置不同的时间段,丢弃不同的货物,销售不同的价格;
7. 自动生产,如果不需要生产铁材,请注释掉 “Gosub 制作铁材” 语句;
8. 自动更换副官内容,以追求采集成功率和生产大成功率;
9. 脚本编写的相当规范,任何人都能够看懂;
10. 自动喊话,自动保存日志,以观察脚本运行状态;
11. 定时下线,定时关机功能;
12.自动判断疲劳度,自动判断行动力,自动判断网络连接,自动判断船舱容量;
13.日志文件保存在C盘根目录下。


[General]
Description=***超级采集
BeginHotkey=49
BeginHotkeyMod=2
PauseHotkey=32775
PauseHotkeyMod=0
StopHotkey=123
StopHotkeyMod=0
RunOnce=1
EnableWindow=
Enable=0
[Repeat]
Type=0
Number=1
[CallBack]
OnSetup=
[Comment]
Content=


[Script]
//变量定义开始
//功能键代码
//F1=112,F2=113,F3=114,F4=115,F5=116,F6=117
//F7=118,F8=119,F9=120,F10=121,F11=122,F12=123,ESC=27
//丢弃货物中心点坐标
//Pos1=116,138;Pos2=172,138;Pos3=228,138;Pos4=284,138;Pos5=340,138;(X+56)
//Pos6=116,194;Pos7=172,194;Pos8=228,194;Pos9=284,194;Pos10=340,194;(Y+56)
//
//
//快捷键设置
//快捷方式按键F1,装载按键F7,露天市场按键F9,使用技能按键F11,变更副官负责内容F2
//采集快捷键F1,吃料理快捷键F2,F3,F4,依次为料理1,料理2,料理3,F5为红宝石切割书,F6为金属提炼的书
//
//
//其它设置
UserVar UpdateTimeInterval=10 刷新时间间隔(分钟)
UserVar ShutDownTime="07:45|08:15" 定时关机时间(HH:MM)
UserVar AutoShutDown=0 自动关机设置
UserVar TimeShutDownSet=1 定时关机设置
UserVar AutoSayPrice=1 自动报价设置
UserVar AutoSellGoods=1 自动露天市场设置
UserVar BloodValueSet=500 行动力维持数值设置
UserVar PriceAdjustValueSet=10 价格调整幅度设置
UserVar GoodsCount=10 货物种类总数设置
UserVar AutoMakeSet=1 自动生产宝石
UserVar Food_Name_1="海鲜披萨" 料理一名称
UserVar Food_AddValue_1=50 料理一恢复数值
UserVar Food_Name_2="希腊肉末茄盒" 料理二名称
UserVar Food_AddValue_2=55 料理二恢复数值
UserVar Food_Name_3="土耳其烤牛肉" 料理三名称
UserVar Food_AddValue_3=60 料理三恢复数值
UserVar OutputMessageSet=0 输出消息设置
//0-输出喊话消息,系统日志记录  3不记录
//1-输出全部消息,系统日志记录  4不记录
//2-公开输出消息,系统日志记录  5不记录
//
//显示消息类型    Ctrl+P:舰队80,Ctrl+S:公开83
VBS Dim OutputType
//
//料理名称数组
VBS Dim Food_Name(5)
//料理恢复数值数组
VBS Dim Food_AddValue(5)
//
//货物中心点颜色数组
VBS Dim Goods_Color(20)
//货物名称数组
VBS Dim Goods_Name(20)
//货物初始价格数组
VBS Dim Goods_Price(20)
//货物价格调整参数数组(12个数字,5表示初始价格,4表示-10%,6表示+10%)
VBS Dim Goods_PriceAdjust(20)
//货物展销价格数组
VBS Dim Goods_SellPrice(20)
//货物展销旧价格
VBS Dim Goods_OldPrice(20)
//上次价格调整时间
VBS Dim OldPriceAdjustTime
//货物设置
VBS Goods_Color(1)="8181DE"
VBS Goods_Name(1)="红矿石"
VBS Goods_Price(1)=5000
VBS Goods_PriceAdjust(1)="555555555555"
//价格调整时间段标记     "000001111122"
//价格调整时间段标记     "024680246802"
//
VBS Goods_Color(2)="0A031F"
VBS Goods_Name(2)="石榴石"
VBS Goods_Price(2)=10000
VBS Goods_PriceAdjust(2)="555555555555"
//价格调整时间段标记     "000001111122"
//价格调整时间段标记     "024680246802"
//
VBS Goods_Color(3)="4B0ECD"
VBS Goods_Name(3)="红宝石"
VBS Goods_Price(3)=30000
VBS Goods_PriceAdjust(3)="555555555555"
//价格调整时间段标记     "000001111122"
//价格调整时间段标记     "024680246802"
//
VBS Goods_Color(4)="8B9FB5"
VBS Goods_Name(4)="砂"
VBS Goods_Price(4)=0
VBS Goods_PriceAdjust(4)="000000000000"
//价格调整时间段标记     "000001111122"
//价格调整时间段标记     "024680246802"
//
VBS Goods_Color(5)="B1B8AF"
VBS Goods_Name(5)="石材"
VBS Goods_Price(5)=200
VBS Goods_PriceAdjust(5)="555555555555"
//价格调整时间段标记     "000001111122"
//价格调整时间段标记     "024680246802"
//
VBS Goods_Color(6)="6592D4"
VBS Goods_Name(6)="杏仁"
VBS Goods_Price(6)=0
VBS Goods_PriceAdjust(6)="000000000000"
//价格调整时间段标记     "000001111122"
//价格调整时间段标记     "024680246802"
//
VBS Goods_Color(7)="6EA8E9"
VBS Goods_Name(7)="植物油"
VBS Goods_Price(7)=0
VBS Goods_PriceAdjust(7)="555555555555"
//价格调整时间段标记     "000001111122"
//价格调整时间段标记     "024680246802"
//
VBS Goods_Color(8)="A3B6D0"
VBS Goods_Name(8)="圆木头"
VBS Goods_Price(8)=0
VBS Goods_PriceAdjust(8)="000000000000"
//价格调整时间段标记     "000001111122"
//价格调整时间段标记     "024680246802"
//
VBS Goods_Color(9)="4D3D2F"
VBS Goods_Name(9)="铁矿石"
VBS Goods_Price(9)=1000
VBS Goods_PriceAdjust(9)="555555555555"
//价格调整时间段标记     "000001111122"
//价格调整时间段标记     "024680246802"
//
//时间段数组
VBS Dim Time_Area(13)
//价格时间段设置(HH:MM)
VBS Time_Area(1)="00:00"
VBS Time_Area(2)="02:00"
VBS Time_Area(3)="04:00"
VBS Time_Area(4)="06:00"
VBS Time_Area(5)="08:00"
VBS Time_Area(6)="10:00"
VBS Time_Area(7)="12:00"
VBS Time_Area(8)="14:00"
VBS Time_Area(9)="16:00"
VBS Time_Area(10)="18:00"
VBS Time_Area(11)="20:00"
VBS Time_Area(12)="22:00"
VBS Time_Area(13)="24:00"
//
//当前料理设置
VBS Dim CurrentFoodNo
//结束采集标志
VBS Dim EndFlag
//行动力数值
VBS Dim Blood
//
Plugin hwn = Window.GetKeyFocusWnd()
//变量定义结束
//
//主脚本开始
EndFlag = 0
CurrentFoodNo = 0
OldPriceAdjustTime = 0
If PriceAdjustValueSet < 10
    PriceAdjustValueSet = 10
EndIf
VBS Food_Name(1) = Food_Name_1
VBS Food_AddValue(1) = Food_AddValue_1
VBS Food_Name(2) = Food_Name_2
VBS Food_AddValue(2) = Food_AddValue_2
VBS Food_Name(3) = Food_Name_3
VBS Food_AddValue(3) = Food_AddValue_3
//
Gosub 建立日志文件
Gosub 当前时间
Message = CurrentTime & "脚本开始......"
Gosub 输出消息
//
Rem 自动采集开始
Gosub 自动采集
//
Rem 完成采集
Gosub 当前时间
Message = CurrentTime & "本次采集结束, 自动登出游戏......"
Gosub 输出消息
Gosub 自动登出
Gosub 自动登出
//
Rem 脚本结束
If AutoShutDown = 1
    Gosub 自动关机
EndIf
//
Beep
Beep
EndScript
//
//主脚本结束
//
//输出消息(参数Message)
Sub 输出消息
    If (Left(Message,3) <> "07-")
        OutputType = 83
        Gosub 显示消息
        Goto 输出消息结束
    EndIf
    If (OutputMessageSet = 1) Or (OutputMessageSet = 4)
        OutputType = 80
        Gosub 显示消息
    EndIf
    If (OutputMessageSet = 2) Or (OutputMessageSet = 5)
        OutputType = 83
        Gosub 显示消息
    EndIf
    If (OutputMessageSet < 3)
        Gosub 写入日志文件
    EndIf
    Rem 输出消息结束
    Beep
Return 输出消息
//建立日志文件
Sub 建立日志文件
    VBS Set File = CreateObject("Scripting.FileSystemObject")
    LogFileName = "C:\超级宝石" & Right("0000" & Year(Date),2) & "-" & Right("00" & Month(Date),2) & "-" & Right("00" & Day(Date),2) & ".TXT"
    If File.FileExists(LogFileName)=0
        VBS Set LogFile = File.CreateTextFile(LogFileName,2)
        VBS LogFile.Close
    EndIf
Return 建立日志文件
//写入日志文件
Sub 写入日志文件
    VBS Set LogFile = File.OpenTextFile(LogFileName,8)
    VBS LogFile.WriteLine(Message)
    VBS LogFile.Close
Return 写入日志文件
//显示消息
Sub 显示消息
    Plugin OldWindow = Window.Foreground()
    If hwn = OldWindow
        VBS Set objIE = CreateObject("InternetExplorer.Application")
        VBS objIE.Navigate("about:blank")
        VBS objIE.document.parentwindow.clipboardData.SetData "text", Message
        VBS objIE.Quit
        Delay 500
        KeyDown 17 1
        If OutputType = 80
            KeyPress 80 1
        Else
            KeyPress 83 1
        EndIf
        KeyUp 17 1
        Delay 500
        KeyDown 17 1
        KeyPress 86 1
        KeyUp 17 1
        Delay 500
        KeyPress 13 1
        Delay 500
    EndIf
Return 显示消息
//坐标转换(参数PosX,PosY)
Sub 坐标转换
    Plugin winRect=Window.GetClientRect(hwn)
    winPoint = Split(winRect, "|", -1, 1)
    AbsX = CInt(winPoint(0)) + PosX
    AbsY = CInt(winPoint(1)) + PosY
    PosX = AbsX
    PosY = AbsY
Return 坐标转换
//移动鼠标到指定点(以窗口为准参数PosX,PosY相对坐标)
Sub 移动鼠标
    Plugin winRect=Window.GetClientRect(hwn)
    winPoint = Split(winRect, "|", -1, 1)
    AbsX = CInt(winPoint(0)) + PosX
    AbsY = CInt(winPoint(1)) + PosY
    MoveTo AbsX AbsY
    PosX = AbsX
    PosY = AbsY
    Delay 500
Return 移动鼠标
//常规吃料理
Sub 常规吃料理
    //F1-快捷方式按键
    Plugin Window.SendKeyPress(hwn,112)
    Delay 1500
    If CurrentFoodNo = 1
        //F2-吃料理快捷键
        Plugin Window.SendKeyPress(hwn,113)
        Goto 常规吃料理结束
    EndIf
    If CurrentFoodNo = 2
        //F3-吃料理快捷键
        Plugin Window.SendKeyPress(hwn,114)
        Goto 常规吃料理结束
    EndIf
    If CurrentFoodNo = 3
        //F4-吃料理快捷键
        Plugin Window.SendKeyPress(hwn,115)
        Goto 常规吃料理结束
    EndIf
    Rem 常规吃料理结束
    Delay 1500
Return 常规吃料理
//前台吃料理
Sub 前台吃料理
    Rem 前台吃料理开始
    VBSCall ReadMemory(&h00998dcc,2,Blood)
    If Blood > BloodValueSet
        Goto 前台吃料理结束
    EndIf
    Plugin Window.SendKeyPress(hwn,27)
    Delay 1000
    Plugin Window.SendKeyPress(hwn,122)
    Delay 1000
    Gosub 常规吃料理
    VBSCall ReadMemory(&h00998dcc,2,NewBlood)
    If NewBlood <= Blood
        CurrentFoodNo = CurrentFoodNo + 1
        If CurrentFoodNo > 3
            CurrentFoodNo = 1
            Goto 前台吃料理结束
        EndIf
    EndIf
    Goto 前台吃料理开始
    Rem 前台吃料理结束
Return 前台吃料理
//紧急吃料理
Sub 紧急吃料理
    Gosub 窗口初始化
    //F1-快捷方式按键
    Plugin Window.SendKeyPress(hwn,112)
    Delay 1500
    //F2-吃料理快捷键
    Plugin Window.SendKeyPress(hwn,113)
    Delay 1500
    //F11-使用技能(刷新用)
    Plugin Window.SendKeyPress(hwn,122)
    Delay 1500
    //F1-快捷方式按键
    Plugin Window.SendKeyPress(hwn,112)
    Delay 1500
    //F3-吃料理快捷键
    Plugin Window.SendKeyPress(hwn,114)
    Delay 1500
    //F11-使用技能(刷新用)
    Plugin Window.SendKeyPress(hwn,122)
    Delay 1500
    //F1-快捷方式按键
    Plugin Window.SendKeyPress(hwn,112)
    Delay 1500
    //F4-吃料理快捷键
    Plugin Window.SendKeyPress(hwn,115)
    Delay 1500
    //F11-使用技能(刷新用)
    Plugin Window.SendKeyPress(hwn,122)
    Delay 1500
    Gosub 窗口初始化
    //再次检查疲劳度
    PosX = 115 : PosY = 100
    Gosub 坐标转换
    IfColor PosX PosY 0080ff 0
        CheckFlag = 1
        Goto 紧急吃料理结束
    Else
        CheckFlag = 0
    EndIf
    Delay 500
    //再次检查行动力
    PosX = 50 : PosY = 115
    Gosub 坐标转换
    IfColor PosX PosY f77cf7 1
        CheckFlag = 1
        Goto 紧急吃料理结束
    Else
        CheckFlag = 0
    EndIf
    Rem 紧急吃料理结束
Return 紧急吃料理
//断线保护
Sub 断线保护
    //断线提示窗口坐标
    PosX = 411 : PosY = 315
    Gosub 坐标转换
    IfColor PosX PosY 3a2815 0
        EndFlag = 1
        Goto 脚本结束
    Else
        Message = Message & "网络连接:正常" & "  "
    EndIf
Return 断线保护
//疲劳度保护
Sub 疲劳度保护
    CheckFlag = 0
    //疲劳度显示坐标
    PosX = 115 : PosY = 100
    Gosub 坐标转换
    IfColor PosX PosY 0080ff 0
        CheckFlag = 1
        Gosub 紧急吃料理
        If CheckFlag = 1
            EndFlag = 1
            Gosub 当前时间
            Message = CurrentTime & "疲劳度过高, 自动登出游戏......"
            Gosub 输出消息
            Gosub 自动登出
            Goto 脚本结束
        EndIf
    EndIf
    Message = Message & "疲劳度:正常" & "  "
Return 疲劳度保护
//无行动力保护
Sub 无行动力保护
    CheckFlag = 0
    //行动力显示坐标
    PosX = 50 : PosY = 115
    Gosub 坐标转换
    IfColor PosX PosY f77cf7 1
        CheckFlag = 1
        Gosub 紧急吃料理
        If CheckFlag = 1
            EndFlag = 1
            Gosub 当前时间
            Message = CurrentTime & "行动力不足, 自动登出游戏......"
            Gosub 输出消息
            Gosub 自动登出
            Goto 脚本结束
        EndIf
    EndIf
    Message = Message & "行动力:正常" & "  "
Return 无行动力保护
//行动力过高处理
Sub 行动力过高处理
    VBSCall ReadMemory(&h00998dcc,2,Blood)
    If Blood > BloodValueSet + 60
        Gosub 当前时间
        Message = CurrentTime & "行动力过高, 追加采集10次......"
        Gosub 输出消息
        For 10
            Gosub 采集一次
        EndFor
    EndIf
Return 行动力过高处理
//自动登出
Sub 自动登出
    //系统按钮坐标
    PosX = 775 : PosY = 20
    Gosub 移动鼠标
    IfColor PosX PosY bbd3ee 0
        LeftClick 1
        Delay 500
        //登出菜单坐标
        PosX = 745 : PosY = 120
        Gosub 移动鼠标
        LeftClick 1
        Delay 500
        //确认窗<是>按钮坐标
        PosX = 370 : PosY = 325
        Gosub 移动鼠标
        IfColor PosX PosY 1e1c17 0
            LeftClick 1
            Delay 500
        EndIf
    EndIf
    Delay 30000
Return 自动登出
//自动关机
Sub 自动关机
    Set ShutDownObj = CreateObject("WScript.Shell")
    VBSCall ShutDownObj.Popup("系统将在30秒后关机!!",5,"自动关机",48)
    Delay 30000
    VBS ShutDownObj.Run "shutdown /f /s /t 0"
Return 自动关机
//定时关机
Sub 定时关机
    If TimeShutDownSet <> 1
        Goto 定时关机结束
    EndIf
    If Len(ShutDownTime) <> 11
        Goto 定时关机结束
    EndIf
    If (Mid(ShutDownTime,3,1) <> ":") Or (Mid(ShutDownTime,6,1) <> "|") Or (Mid(ShutDownTime,9,1) <> ":")
        Goto 定时关机结束
    EndIf
    ShutDownTimeSet = Split(ShutDownTime, "|", -1, 1)
    ShutDownTimeLow = ShutDownTimeSet(0)
    ShutDownTimeHigh = ShutDownTimeSet(1)
    NowTimeSet = Right("00" & Hour(Time),2) & ":" & Right("00" & Minute(Time),2)
    If (NowTimeSet > ShutDownTimeLow) And (NowTimeSet < ShutDownTimeHigh)
        Gosub 当前时间
        Message = CurrentTime & "定时关机时间已到, 自动登出游戏......"
        Gosub 输出消息
        Gosub 自动登出
        Goto 脚本结束
    EndIf
    Rem 定时关机结束
Return 定时关机
//当前时间
Sub 当前时间
    CurrentTime = Right("0000" & Year(Date),2) & "-" & Right("00" & Month(Date),2) & "-" & Right("00" & Day(Date),2)
    CurrentTime = CurrentTime & "/" & Right("00" & Hour(Time),2) & ":" & Right("00" & Minute(Time),2) & ":" & Right("00" & Second(Time),2) & "  "
Return 当前时间
//价格调整
Sub 价格调整
    NowTimeSet = Right("00" & Hour(Time),2) & ":" & Right("00" & Minute(Time),2)
    TimeSetCount = 1
    For 12
        If (NowTimeSet >= Time_Area(TimeSetCount)) And (NowTimeSet < Time_Area(TimeSetCount+1))
            Goto 执行价格调整
        EndIf
        TimeSetCount = TimeSetCount + 1
    EndFor
    Rem 执行价格调整
    If OldPriceAdjustTime <> TimeSetCount
        OldPriceAdjustTime = TimeSetCount
        Gosub 当前时间
        AdjustPriceSetCount = 1
        Message = CurrentTime & "进行价格调整......"
        For GoodsCount
            OldPrice = Goods_SellPrice(AdjustPriceSetCount)
            AdjustPriceValue = Mid(Goods_PriceAdjust(AdjustPriceSetCount), TimeSetCount, 1)
            If AdjustPriceValue = 0
                Goods_SellPrice(AdjustPriceSetCount) = 0
                Goto 继续价格调整
            EndIf
            If AdjustPriceValue = 9
                Goods_SellPrice(AdjustPriceSetCount) = -1
                Goto 继续价格调整
            EndIf
            Goods_SellPrice(AdjustPriceSetCount) = Goods_Price(AdjustPriceSetCount) * (100 + (AdjustPriceValue - 5) * PriceAdjustValueSet) / 100
            If (Goods_Name(AdjustPriceSetCount) <> "")
                Message = Message & Goods_Name(AdjustPriceSetCount) & ":" & Goods_SellPrice(AdjustPriceSetCount) & "  "
            EndIf
            Rem 继续价格调整
            AdjustPriceSetCount = AdjustPriceSetCount + 1
        EndFor
        Gosub 输出消息
    EndIf
Return 价格调整


此篇文章为17173玩家原创作品,获得积分奖励 Z。
17173全新积分兑换系统上线 点卡周边等你拿>>>详情点击
关键字:

相关链接

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

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

我要发布Sogou推广服务

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