此脚本特点如下:
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全新积分兑换系统上线 点卡周边等你拿>>>详情点击 |