选择角色登录


我们想要让脚本一个角色执行完之后执行下一个角色,首先,要记录角色的序号

1、把角色的序号写到ini文件中

ini文件内容设置(角色序号默认设置为1,第一个角色):

[角色ID]

角色=1

2、每执行完一个角色之后,角色序号加一

3、判断最后一个角色执行完成之后退出脚本

拿上面三个角色做例子。

我们第一次启动,角色序号是一,选择第一个账号登录。

1、键盘上的方向键可以选择人物,小编设置每次选择角色的时候,鼠标先点击第一个人物,然后读取当前该执行的角色序号,例如当前要执行的角色序号是2,那就按下一次右方向键,选择第二个人物,如果是3则按下两次方向键。

(方式有很多,例如,记录第一个角色的中心坐标点来遍历找到其它要执行的角色。哪种方便选哪种。

  • w = CInt(Plugin.File.ReadINI("角色ID", "角色", "G:estDNF.ini")) //读取角色序号

  • If w > 3 Then

  • MessageBox "所有角色都执行完毕。"

  • ExitScript

  • End If

  • MoveTo 90, 120

  • LeftClick 1 //点击选择第一个角色

  • Delay 1000

  • If w > 1 Then 判断如果不是第一个角色就按方向键选择其他角色

  • For i = 1 To w - 1

  • KeyPressS "Right", 1

  • KeyPress 39,1//按下方向键右键进行选择角色

  • Delay 1000

  • Next

  • End If

  • 复制代码

    角色登录之后


    角色登录之后,开始执行任务。

    1、建立一个线程,命名为主线程。主线程里写我们需要脚本执行的任务。

    2、再建立一个新的线程,命名为时间监视。用来监控时间。

    *第一重判断,判断当前时间是否是早晨六点

    *是早晨六点的话,停止主线程,把ini里的角色序号重置为1

    *重新启动主线程,从第一个角色开始执行

    全部代码:

  • //在角色选择界面启动脚本

  • Dim 总共角色数

  • 总共角色数=3

  • hwnd= Plugin.Window.Find("地下城与勇士", 0)

  • Call Plugin.Window.Size(hwnd,800,600)

  • Call Plugin.Window.move(hwnd, 0, 0)

  • Call Plugin.Window.Active(hwnd)

  • 线程ID = BeginThread(主线程)

  • 线程ID2=BeginThread(时间监视)

  • Sub 主线程()

  • Do

  • //点击第一个角色

  • w = CInt(Plugin.File.ReadINI("角色ID", "角色", "G:estDNF.ini"))

  • If w > 3 Then

  • MessageBox "所有角色都执行完毕。"

  • ExitScript

  • End If

  • TracePrint w

  • MoveTo 90, 120

  • LeftClick 1 //点击

  • Delay 1000

  • If w > 1 Then

  • For i = 1 To w - 1

  • KeyPressS "Right", 1

  • KeyPress 39,1//按下方向键右键进行选择角色

  • Delay 1000

  • Next

  • End If

  • Call Plugin.File.WriteINI("角色ID", "角色", w + 1, "G:estDNF.ini")

  • Moveto 395, 547

  • LeftClick 1 //点击开始游戏

  • Delay 8000

  • KeyPress "Esc", 1 //调出游戏菜单

  • Moveto 390, 410

  • LeftClick 1//点击选择角色

  • Delay 3000

  • Loop

  • End Sub

  • Sub 时间监视()

  • Do

  • s = Hour(Time)//获取系统时间 小时

  • m =minute(Time)//获取系统时间 分钟

  • If s = 6 and m = 0 Then //如果是六点

  • StopThread 线程ID //停止主线程

  • Call Plugin.File.WriteINI("角色ID", "角色", 1, "G:estDNF.ini")

  • KeyPress "Esc", 1 //调出游戏菜单

  • Moveto 390, 410

  • LeftClick 1//点击选择角色

  • Delay 3000

  • End If

  • Delay 6000

  • Loop

  • 线程ID= BeginThread(主线程)

  • End Sub

  • 复制代码

    注意:小编的代码简单说明了下思路,许多细节的地方,童鞋们在写的过程中需要多加注意下。例如,当我们判断到当前时间是六点的时候,如果我们的角色还在做副本怎么办?

    拓展思路:


    如果童鞋们希望在角色把当前的任务执行完之后再从第一个角色开始,我们可以这样:

    1、我们建立一个全局变量

    2、时间监控线程判断到当前时间是六点的时候,全局变量的值设置为1

    3、判断下当前角色的疲劳值,如果疲劳值还有,继续做任务

    (在主线程的末尾,角色任务执行完的时候,判断下全局变量,如果为1,退到角色选择界面,从第一个角色开始执行。)

    4、如果疲劳值没有了则退出到角色选择界面

    (注意:这里需要做的是判断当前角色是在什么地方,然后该如何回到角色选择界面,例如,如果在副本里,就需要先退出副本然后再回到主界面)