TC官方合作论坛

 找回密码
 立即注册
查看: 774|回复: 7

[已解决] 求助呀,, 我基础不好, 碰到一个 问题 解决不了,

[复制链接]
发表于 2014-1-16 16:05:14 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
空间 tl
//---------------------------------插件变量---------------------------------//
dm
//---------------------------------数组变量---------------------------------//
窗口句柄数组=数组[],dm数组=数组[],任务线程=数组[]
//---------------------------------开关变量---------------------------------//
是否重定义=真,检测开关=真
//---------------------------------其他变量---------------------------------//
Index=0

//---------------------------------热键开启---------------------------------//
功能 开启_热键()
    tl.启动()
功能结束
//---------------------------------程序启动---------------------------------//
功能 启动()
    变量 窗口句柄
    窗口句柄 = tl.获取窗口句柄()
    如果(窗口句柄 > 0)
        tl.窗口绑定(窗口句柄)
    如果结束
功能结束
//---------------------------------获取窗口---------------------------------//
功能 获取窗口句柄()
    变量 窗口句柄, 数组下标
    dm=com("dm.dmsoft")
    窗口句柄 = dm.GetForegroundWindow()
    如果(窗口句柄 > 0)
        //对数组进行重定义
        如果(是否重定义)
            窗口句柄数组 = 数组空间.重定义(窗口句柄数组, 真, Index+1)
            dm数组 = 数组空间.重定义(dm数组, 真, Index+1)
            任务线程 = 数组空间.重定义(任务线程, 真, Index+1)
        如果结束
        //查看是否已经已经绑定了
        数组下标 = 数组空间.查找(窗口句柄数组,窗口句柄)
        
        如果(数组下标==-1)
            //说明没有绑定过
            窗口句柄数组[Index] = 窗口句柄
            返回 窗口句柄
        否则
            返回 -1
        如果结束
    否则
        返回 -1
    如果结束
功能结束
//---------------------------------窗口绑定---------------------------------//
功能 窗口绑定(窗口句柄)
    变量 dm_ret, 错误码, 下标, 长度
    //获取传入参数 在窗口句柄数组中的下标
    下标 = 数组空间.查找(窗口句柄数组,窗口句柄)
    //开始创业大漠对象
    dm数组[下标] = com("dm.dmsoft")
    dm数组[下标].SetPath(辅助.获取资源路径("rc:")) //设置资源路径
    //dm数组[下标].SetDict(0,"dm_soft.txt") //设置字库
    //dm数组[下标].SetDict(0,"神鬼坐标字库.txt") //活动字库
    //绑定窗口
    dm_ret = dm数组[下标].BindWindow(窗口句柄,"gdi","windows","windows",0)
    如果(dm_ret == 1)
        //绑定成功
        tl.系统报警()
        //开启线程
        任务线程[下标] = 线程.开启("tl.任务线程",下标)
        Index = Index + 1
        //错误判断机制
        数组空间.大小(窗口句柄数组, 长度)
        如果(Index != 长度)
            Index = 长度
        如果结束
        是否重定义 = 真
    否则
        错误码 = dm数组[下标].GetLastError()
        辅助.消息框("[主窗口绑定] 失败","提示")
    如果结束
功能结束
//---------------------------------任务线程---------------------------------//
功能 任务线程(下标)
    变量 延迟,坐标集="85,133|85,133"
    延迟 = 辅助.随机数(200,300)
   
    tl.关闭聊天窗口(下标)
    辅助.等待(延迟)
    tl.是否组队(下标,延迟)
    辅助.等待(延迟)
    tl.坐标分析(下标,延迟,坐标集)
功能结束

//---------------------------------坐标分析---------------------------------//
功能 坐标分析(下标,延迟,坐标集)
    路线数组,c1,坐标
   
    字符串.分割(坐标集,"|",路线数组)
    数组空间.大小(路线数组,c1)
    遍历(i=0 ; i<c1 ; i++)
        字符串.分割(路线数组[i],",",坐标)
        tl.移动人物(下标,延迟,坐标[0],坐标[1])
        辅助.等待(延迟)
    遍历结束
功能结束
//---------------------------------移动人物---------------------------------//
功能 移动人物(下标,延迟,目标x,目标y)
    坐标数组, 当前x,当前y,大小
    解锁x=1,解锁y=1
   
    dm数组[下标].KeyPress(192)
    dm数组[下标].SetDict(0,"神鬼坐标字库.txt") //坐标字库
    当前坐标=dm.Ocr(930,15,990,30,"aaa99d-3e3d39",1.0)
    字符串.分割(当前坐标,",",坐标数组)
    数组空间.大小(坐标数组,大小)
    当前x=坐标数组[0]
    当前y=坐标数组[1]
    如果(当前x>目标x)//往左
        dm数组[下标].KeyDown(65)
    如果结束
    如果(当前x<目标x)//往右
        dm数组[下标].KeyDown(68)
    如果结束
    如果(当前y>目标y)//往上
        dm数组[下标].KeyDown(87)
    如果结束
    如果(当前y<目标y)//往下
        dm数组[下标].KeyDown(83)
    如果结束
   
    循环(!(当前x==目标x && 当前y==目标y))
        当前坐标=dm.Ocr(930,15,990,30,"aaa99d-3e3d39",1.0)
        如果(字符串.查找字符串(当前坐标,",")<0)
            辅助.等待(延迟)
            继续
        如果结束
        字符串.分割(当前坐标,",",坐标数组)
        当前x=坐标数组[0]
        当前y=坐标数组[1]
        
        如果(当前x>目标x && 解锁x==0)//往左
            dm数组[下标].KeyDown(65)
            解锁x=1
        如果结束
        如果(当前x<目标x && 解锁x==0)//往右
            dm数组[下标].KeyDown(68)
            解锁x=1
        如果结束
        如果(当前y>目标y && 解锁y==0)//往上
            dm数组[下标].KeyDown(87)
            解锁y=1
        如果结束
        如果(当前y<目标y && 解锁y==0)//往下
            dm数组[下标].KeyDown(83)
            解锁y=1
        如果结束
        如果(当前y == 目标y)//松开上下
            dm数组[下标].KeyUp(83)
            dm数组[下标].KeyUp(87)
            解锁x=0
        如果结束
        如果(当前x == 目标x)//松开左右
            dm数组[下标].KeyUp(65)
            dm数组[下标].KeyUp(68)
            解锁y=0
        如果结束
        辅助.等待(延迟)
    循环结束
功能结束

//----------------------------------初始化----------------------------------//
功能 初始化()
功能结束

//---------------------------------程序退出---------------------------------//
功能 退出_点击()
    辅助.退出()
功能结束
//---------------------------------程序关闭---------------------------------//
功能 tl_关闭()
    辅助.退出()
功能结束
//-------------------------------关闭聊天窗口-------------------------------//
功能 关闭聊天窗口(下标)
    x,y
标记1:
    dm数组[下标].FindPic(1,669,121,769,"关闭聊天窗口1.bmp","000000",0.9,0,x,y)
    如果(x>0 && y>0)
        dm数组[下标].MoveTo(x,y)
        辅助.等待(100)
        dm数组[下标].LeftClick()
        辅助.等待(300)
        跳转 标记1
    如果结束
功能结束
//---------------------------------关闭窗口---------------------------------//
功能 关闭窗口(下标,延迟)
    变量 x, y
    dm数组[下标].FindPic(8,9,1022,766,"关闭1.bmp|关闭2.bmp|关闭3.bmp", "000000", 0.9, 0, x, y)
    dm数组[下标].MoveTo(x,y)
    辅助.等待(延迟)
    dm数组[下标].LeftClick()
    tl.鼠标归位(下标)
功能结束
//---------------------------------是否组队---------------------------------//
功能 是否组队(下标,延迟)
    x,y
    dm数组[下标].FindPic(0,0,271,102,"是否组队1.bmp","000000",0.9,0,x,y)
    如果(x<1&&y<1)
        dm数组[下标].KeyPress(84)
        辅助.等待(延迟)
        辅助.等待(延迟)
        dm数组[下标].MoveTo(237,153)
        辅助.等待(延迟)
        dm数组[下标].LeftClick()
        辅助.等待(延迟)
        dm数组[下标].MoveTo(751,438)
        辅助.等待(延迟)
        dm数组[下标].LeftClick()
        辅助.等待(延迟)
        dm数组[下标].KeyPress(84)
    如果结束
    tl.关闭聊天窗口(下标)
    tl.关闭窗口(下标,延迟)
功能结束
//---------------------------------鼠标归位---------------------------------//
功能 鼠标归位(下标)
    dm数组[下标].MoveTo(23,696)
功能结束
//---------------------------------系统报警---------------------------------//
功能 系统报警()
    变量 系统版本
    系统版本 = 系统.版本()
    如果(系统版本 == 2)
        //xp系统
        辅助.蜂鸣(800,300)
    否则
        如果(系统版本 == 5 || 系统版本 == 6)
            //win7系统
            辅助.播放(辅助.获取资源路径("rc:msg.wav"))
        如果结束
    如果结束
功能结束
//---------------------------------空间关闭---------------------------------//
空间结束



117行   为什么会数组越界呀?? 奇怪了,,  不懂了,,  请教!!!!
回复

使用道具 举报

 楼主| 发表于 2014-1-16 16:06:58 | 显示全部楼层
空间 tl
//---------------------------------插件变量---------------------------------//
dm
//---------------------------------数组变量---------------------------------//
窗口句柄数组=数组[],dm数组=数组[],任务线程=数组[]
//---------------------------------开关变量---------------------------------//
是否重定义=真,检测开关=真
//---------------------------------其他变量---------------------------------//
Index=0

//---------------------------------热键开启---------------------------------//
功能 开启_热键()
    tl.启动()
功能结束
//---------------------------------程序启动---------------------------------//
功能 启动()
    变量 窗口句柄
    窗口句柄 = tl.获取窗口句柄()
    如果(窗口句柄 > 0)
        tl.窗口绑定(窗口句柄)
    如果结束
功能结束
//---------------------------------获取窗口---------------------------------//
功能 获取窗口句柄()
    变量 窗口句柄, 数组下标
    dm=com("dm.dmsoft")
    窗口句柄 = dm.GetForegroundWindow()
    如果(窗口句柄 > 0)
        //对数组进行重定义
        如果(是否重定义)
            窗口句柄数组 = 数组空间.重定义(窗口句柄数组, 真, Index+1)
            dm数组 = 数组空间.重定义(dm数组, 真, Index+1)
            任务线程 = 数组空间.重定义(任务线程, 真, Index+1)
        如果结束
        //查看是否已经已经绑定了
        数组下标 = 数组空间.查找(窗口句柄数组,窗口句柄)
        
        如果(数组下标==-1)
            //说明没有绑定过
            窗口句柄数组[Index] = 窗口句柄
            返回 窗口句柄
        否则
            返回 -1
        如果结束
    否则
        返回 -1
    如果结束
功能结束
//---------------------------------窗口绑定---------------------------------//
功能 窗口绑定(窗口句柄)
    变量 dm_ret, 错误码, 下标, 长度
    //获取传入参数 在窗口句柄数组中的下标
    下标 = 数组空间.查找(窗口句柄数组,窗口句柄)
    //开始创业大漠对象
    dm数组[下标] = com("dm.dmsoft")
    dm数组[下标].SetPath(辅助.获取资源路径("rc:")) //设置资源路径
    //dm数组[下标].SetDict(0,"dm_soft.txt") //设置字库
    //dm数组[下标].SetDict(0,"神鬼坐标字库.txt") //活动字库
    //绑定窗口
    dm_ret = dm数组[下标].BindWindow(窗口句柄,"gdi","windows","windows",0)
    如果(dm_ret == 1)
        //绑定成功
        tl.系统报警()
        //开启线程
        任务线程[下标] = 线程.开启("tl.任务线程",下标)
        Index = Index + 1
        //错误判断机制
        数组空间.大小(窗口句柄数组, 长度)
        如果(Index != 长度)
            Index = 长度
        如果结束
        是否重定义 = 真
    否则
        错误码 = dm数组[下标].GetLastError()
        辅助.消息框("[主窗口绑定] 失败","提示")
    如果结束
功能结束
//---------------------------------任务线程---------------------------------//
功能 任务线程(下标)
    变量 延迟,坐标集="85,133|85,133"
    延迟 = 辅助.随机数(200,300)
   
    tl.关闭聊天窗口(下标)
    辅助.等待(延迟)
    tl.是否组队(下标,延迟)
    辅助.等待(延迟)
    tl.坐标分析(下标,延迟,坐标集)
功能结束

//---------------------------------坐标分析---------------------------------//
功能 坐标分析(下标,延迟,坐标集)
    路线数组,c1,坐标
   
    字符串.分割(坐标集,"|",路线数组)
    数组空间.大小(路线数组,c1)
    遍历(i=0 ; i<c1 ; i++)
        字符串.分割(路线数组,",",坐标)
        tl.移动人物(下标,延迟,坐标[0],坐标[1])
        辅助.等待(延迟)
    遍历结束
功能结束
//---------------------------------移动人物---------------------------------//
功能 移动人物(下标,延迟,目标x,目标y)
    坐标数组, 当前x,当前y,大小
    解锁x=1,解锁y=1
   
    dm数组[下标].KeyPress(192)
    dm数组[下标].SetDict(0,"神鬼坐标字库.txt") //坐标字库
    当前坐标=dm.Ocr(930,15,990,30,"aaa99d-3e3d39",1.0)
    字符串.分割(当前坐标,",",坐标数组)
    数组空间.大小(坐标数组,大小)
    116当前x=坐标数组[0]
    117当前y=坐标数组[1]
    如果(当前x>目标x)//往左
        dm数组[下标].KeyDown(65)
    如果结束
    如果(当前x<目标x)//往右
        dm数组[下标].KeyDown(68)
    如果结束
    如果(当前y>目标y)//往上
        dm数组[下标].KeyDown(87)
    如果结束
    如果(当前y<目标y)//往下
        dm数组[下标].KeyDown(83)
    如果结束
   
    循环(!(当前x==目标x && 当前y==目标y))
        当前坐标=dm.Ocr(930,15,990,30,"aaa99d-3e3d39",1.0)
        如果(字符串.查找字符串(当前坐标,",")<0)
            辅助.等待(延迟)
            继续
        如果结束
        字符串.分割(当前坐标,",",坐标数组)
        当前x=坐标数组[0]
        当前y=坐标数组[1]
        
        如果(当前x>目标x && 解锁x==0)//往左
            dm数组[下标].KeyDown(65)
            解锁x=1
        如果结束
        如果(当前x<目标x && 解锁x==0)//往右
            dm数组[下标].KeyDown(68)
            解锁x=1
        如果结束
        如果(当前y>目标y && 解锁y==0)//往上
            dm数组[下标].KeyDown(87)
            解锁y=1
        如果结束
        如果(当前y<目标y && 解锁y==0)//往下
            dm数组[下标].KeyDown(83)
            解锁y=1
        如果结束
        如果(当前y == 目标y)//松开上下
            dm数组[下标].KeyUp(83)
            dm数组[下标].KeyUp(87)
            解锁x=0
        如果结束
        如果(当前x == 目标x)//松开左右
            dm数组[下标].KeyUp(65)
            dm数组[下标].KeyUp(68)
            解锁y=0
        如果结束
        辅助.等待(延迟)
    循环结束
功能结束

//----------------------------------初始化----------------------------------//
功能 初始化()
功能结束

//---------------------------------程序退出---------------------------------//
功能 退出_点击()
    辅助.退出()
功能结束
//---------------------------------程序关闭---------------------------------//
功能 tl_关闭()
    辅助.退出()
功能结束
//-------------------------------关闭聊天窗口-------------------------------//
功能 关闭聊天窗口(下标)
    x,y
标记1:
    dm数组[下标].FindPic(1,669,121,769,"关闭聊天窗口1.bmp","000000",0.9,0,x,y)
    如果(x>0 && y>0)
        dm数组[下标].MoveTo(x,y)
        辅助.等待(100)
        dm数组[下标].LeftClick()
        辅助.等待(300)
        跳转 标记1
    如果结束
功能结束
//---------------------------------关闭窗口---------------------------------//
功能 关闭窗口(下标,延迟)
    变量 x, y
    dm数组[下标].FindPic(8,9,1022,766,"关闭1.bmp|关闭2.bmp|关闭3.bmp", "000000", 0.9, 0, x, y)
    dm数组[下标].MoveTo(x,y)
    辅助.等待(延迟)
    dm数组[下标].LeftClick()
    tl.鼠标归位(下标)
功能结束
//---------------------------------是否组队---------------------------------//
功能 是否组队(下标,延迟)
    x,y
    dm数组[下标].FindPic(0,0,271,102,"是否组队1.bmp","000000",0.9,0,x,y)
    如果(x<1&&y<1)
        dm数组[下标].KeyPress(84)
        辅助.等待(延迟)
        辅助.等待(延迟)
        dm数组[下标].MoveTo(237,153)
        辅助.等待(延迟)
        dm数组[下标].LeftClick()
        辅助.等待(延迟)
        dm数组[下标].MoveTo(751,438)
        辅助.等待(延迟)
        dm数组[下标].LeftClick()
        辅助.等待(延迟)
        dm数组[下标].KeyPress(84)
    如果结束
    tl.关闭聊天窗口(下标)
    tl.关闭窗口(下标,延迟)
功能结束
//---------------------------------鼠标归位---------------------------------//
功能 鼠标归位(下标)
    dm数组[下标].MoveTo(23,696)
功能结束
//---------------------------------系统报警---------------------------------//
功能 系统报警()
    变量 系统版本
    系统版本 = 系统.版本()
    如果(系统版本 == 2)
        //xp系统
        辅助.蜂鸣(800,300)
    否则
        如果(系统版本 == 5 || 系统版本 == 6)
            //win7系统
            辅助.播放(辅助.获取资源路径("rc:msg.wav"))
        如果结束
    如果结束
功能结束
//---------------------------------空间关闭---------------------------------//
空间结束



我重新标注出117行了, 红色的, 帮忙看一下 到底是哪里错误吧?  谢谢了...

回复 支持 反对

使用道具 举报

发表于 2014-1-16 16:10:22 | 显示全部楼层
一个字:乱
回复 支持 反对

使用道具 举报

发表于 2014-1-16 16:11:03 | 显示全部楼层
俩字太乱.....
回复

使用道具 举报

发表于 2014-1-16 16:12:36 | 显示全部楼层
你取出的数组大小是多少啊   你先判断一下数组的大小 然后取值  
回复 支持 反对

使用道具 举报

发表于 2014-1-16 17:17:52 | 显示全部楼层
我支持楼上 先判断大小啊  三个字 这么乱!
回复 支持 反对

使用道具 举报

发表于 2014-1-16 17:18:38 | 显示全部楼层
本帖最后由 璀璨 于 2014-1-16 17:23 编辑

坐标数组=数组[]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-16 18:55:51 | 显示全部楼层
插件对象错了,,  谢谢了,  
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-23 23:55 , Processed in 0.052382 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表