不好意思啊,老师,又要麻烦您了,菜鸟又遇到问题了。

[复制链接]
查看11 | 回复2 | 2011-8-26 09:56:40 | 显示全部楼层 |阅读模式
老师,我写了一段代码,调试时也没有语法问题,但是后边有一部分总是不执行。我先说一下全部代码要表达的意思:游戏人物需要自动跑一段比较长的路(游戏支持自动巡径),期间会随机遇到一些怪,然后自动战斗,战斗结束后会自动接着跑,一直跑到目的地。代码内容前面是自动寻找任务人、自动接任务并开始跑任务,中间是遇到怪时的自动战斗命令,后边还有一段到达目的地后自动结束任务的代码。问题就出现在战斗命令上,只要开始执行自动战斗命令,后边的指令就不再执行了。
下面是自动战斗命令及以后的代码,您看下错在哪里,帮忙改一下。
Rem 战斗
FindPic 126, 57, 142, 70, "E:\护卫图库\战斗标志.bmp", 0.9, x, y
If x > 0 And y > 0 Then
        Delay 1000

KeyPress "F1", 1

Delay 1000

MoveTo 260, 280

Delay 1000

LeftClick 2

MoveTo 516, 393
End If
Delay 20000
Goto 战斗
FindPic 671, 271, 764, 361, "E:\护卫图库\到达目的地.bmp", 1, x, y
If x > 0 And y > 0 Then

Delay 1000

MoveTo 720, 312

Delay 1000

LeftClick 1
End If
FindPic 0, 0, 160, 48, "E:\护卫图库\滴血洞.bmp", 1, x, y
If x > 0 And y > 0 Then

FindPic 0, 0, 1030, 800, "E:\护卫图库\问号.bmp", 0.55, x, y

If x > 0 And y > 0 Then

MoveTo x-7, x+77

Delay 1000

LeftClick 1

Delay 1000

MoveTo 341, 469

Delay 1000

LeftClick 1

Delay 1000

MoveTo 347, 500

Delay 1000

LeftClick 1

Delay 1000

MoveTo 355, 490

Delay 1000

LeftClick 1

Delay 3000

KeyPress "F3", 3

Goto 任务结束

End If

FindPic 0, 0, 160, 48, "E:\护卫图库\流波山.bmp", 1, x, y

If x > 0 And y > 0 Then

FindPic 0, 0, 1030, 800, "E:\护卫图库\问号.bmp", 0.55, x, y

If x > 0 And y > 0 Then

MoveTo x-3, y+88

Delay 1000

LeftClick 1

Delay 1000

MoveTo 356, 477

Delay 1000

LeftClick 1

Delay 1000

MoveTo 359, 499

Delay 1000

LeftClick 1

Delay 1000

MoveTo 359, 499

Delay 1000

LeftClick 1

Delay 3000

KeyPress "F3", 3

Goto 任务结束

End If

End If
End If
Rem 任务结束
Goto 开始
这部分代码太多了,这里写不开,所以省略了一部分寻找目的地的代码,但是应该足以表达出我的意思。我还想问一下“Goto 战斗"以下的代码(不包括Goto 战斗)能表达出下面的意思吗:首先到达了目的地,但由于任务是随机的,所以目的地会有4个(由于字数限制,我只列出了2个寻找地图的代码),所以需要先筛选出到达的是哪一个目的地,所以先寻找"滴血洞",如果找到了就执行带有"滴血洞.bmp"的那段代码,完成后回到标记为“开始”的地方,如果没有找到滴血洞就再寻找流波山,找到流波山就执行带有"流波山.bmp"代码,完成后回到标记为“开始”的地方,依次类推。找到一个目的地后自动完成结束任务,在返回标记为“开始”的地方。

回复

使用道具 举报

千问 | 2011-8-26 09:56:40 | 显示全部楼层
你最好去看下子程序或函数,这样代码逻辑会简单很多,代码量也可以减少。比如我定义了Fight和FindQuestion两个函数:Function Fight()FindPic 126, 57, 142, 70, "E:\护卫图库\战斗标志.bmp", 0.9, x, yIf x > 0 And y > 0 Then
Delay 1000
KeyPress "F1", 1
Delay 1000
MoveTo 260, 280
Delay 1000
LeftClick 2
MoveTo 516, 393End IfEnd FunctionFunction FindQuestion()...
回复

使用道具 举报

千问 | 2011-8-26 09:56:40 | 显示全部楼层
艹,这么复杂...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行