TC官方合作论坛

 找回密码
 立即注册
查看: 1615|回复: 8

[讨论] 各种导致脚本崩溃的原因

[复制链接]
发表于 2013-1-31 22:36:40 | 显示全部楼层 |阅读模式

马上加入TC

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

x
历经千辛万苦,终于,终于脚本写出来了。可是,可是!脚本运行一段时间就会报错!!!!!老天,你折磨死我算了!
脚本运行一段时间会崩溃提示内存不能为读.求解释
我就不贴代码了,因为不知道问题在哪,估计贴上来也没人看,700多行的代码我自己看着都难过。。。
窗口绑定多次后会不会导致脚本崩溃呢?是前台模式绑定。两个线程。
求大神分享经验 ,各种脚本崩溃的原因贴上来 小弟感激不尽。
另外问个问题,TC学多了会不会对人有什么影响? 这两天和朋友说话间听到他说如果什么什么的,我就忍不住想告诉他他的话还缺个如果结束呢。。。
回复

使用道具 举报

发表于 2013-1-31 22:37:30 | 显示全部楼层
贴源码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-31 22:42:40 | 显示全部楼层
源码奉上 主要的两个线程
功能 打怪() //通过传参获得选项后 执行打怪
    dm=com("dm.dmsoft")
   
    窗口句柄=窗口.鼠标所在窗口句柄()
    如果(窗口句柄==0)
        辅助.消息框("获得窗口句柄失败,请将鼠标移至游戏窗口!","提示")
    否则
        是否绑定成功=dm.BindWindow(窗口句柄,"normal","normal","normal",0)
        如果(是否绑定成功==0)
            辅助.消息框("窗口绑定失败,请联系客服!","提示")
        如果结束
    如果结束
    辅助.等待(1000)
   
   
   
    //****************************************************************************************************************
   
   
    var x,y,X,Y,x1,y1,x2,y2,x3,y3,c,d
   
    循环(真)  
        sm=dm.FindColor(72,25,81,38,"900909",0.9,0,X,Y)
        如果(X!=-1)
            a=复选框.获得状态("复选框0")//是否过滤打怪
            找怪=编辑框.获得文本("编辑框0")      
            选择(a)
                条件 真://过滤打过
                gm= dm.Ocr(413,12,521,26,"ffffff-000000",1.0)
                如果(gm==找怪)
                    打怪技能.开始()
  
                    辅助.等待(500)
                否则
                    dm.KeyPress(9)
                    辅助.等待(200)  
                如果结束
                s1=dm.FindPic(409,8,523,29,"E:\\幽魂打怪\\幽魂打怪\\资源\\死亡.bmp","000000",0.9,0,x1,y1)
                如果(x1!=-1)//怪物死亡        
                    日志.日志()
                    辅助.等待(100)
                    for(6)
                        捡物.捡物品()
                        辅助.等待(100)
                    endfor
                    dm.KeyPress(9)
                    辅助.等待(200)  
                如果结束         
               
                //**************************************************************************************   
               
                条件 假://无差别打怪
               
               
                tz=dm.FindPic(403,5,426,27,"E:\\幽魂打怪\\幽魂打怪\\资源\\怪特征.bmp","090909",0.9,0,x2,y2)//找特征点
                如果(tz!=-1)
                    打怪技能.开始()
      
                    辅助.等待(500)
                否则
                    dm.KeyPress(9)
                    辅助.等待(200)      
                如果结束
                s=dm.FindPic(409,8,523,29,"E:\\幽魂打怪\\幽魂打怪\\资源\\死亡.bmp","000000",0.9,0,x3,y3)
                如果(x3!=-1)//怪物死亡   
                    日志.日志()
                    辅助.等待(100)            
                    for(6)
                        捡物.捡物品()
                        辅助.等待(100)
                    endfor
                    dm.KeyPress(9)
                    辅助.等待(200)   
                如果结束
            选择结束
            
        否则
            辅助.等待(2000)
            复活方法.选择复活方式()//人物死亡 复活
            
        如果结束
    循环结束
功能结束


功能 加血()
    dm=com("dm.dmsoft")
    窗口句柄=窗口.鼠标所在窗口句柄()
    如果(窗口句柄==0)
        辅助.消息框("获得窗口句柄失败,请将鼠标移至游戏窗口!","提示")
    否则
        是否绑定成功=dm.BindWindow(窗口句柄,"normal","normal","normal",0)
        如果(是否绑定成功==0)
            辅助.消息框("窗口绑定失败,请联系客服!","提示")
        如果结束
    如果结束
    辅助.等待(1000)
   循环(真)
       var x,y,x1,y1
    a7=下拉框.得到选项("下拉框6")
    如果(a7>=100)
        辅助.消息框("请设置1~99的整数值")
    如果结束
    内容=类型.转整型(编辑框.获得文本("编辑框8"))
    起点=73
    终点=184
    长度=终点-起点
    加血X坐标=起点+长度*内容/100
    加血X坐标1=类型.转整型(加血X坐标)  
    是否找到=dm.FindColor(加血X坐标1,28,184,37,"900909-000000",0.8,0,x,y)   
    如果(x==-1)                 
        dm.KeyPressChar(下拉框.获得内容("下拉框6",a7))                     
    如果结束
    a8=下拉框.得到选项("下拉框8")
    如果(a7>=100)
        辅助.消息框("请设置1~99的整数值")
    如果结束
    内容=类型.转整型(编辑框.获得文本("编辑框9"))
    起点=74
    终点=183
    长度=终点-起点
    加蓝X坐标=起点+长度*内容/100
    加蓝X坐标1=类型.转整型(加蓝X坐标)
    是否找到1=dm.FindColor(加蓝X坐标1,40,184,50,"093b95-000000",0.8,0,x1,y1)
    如果(!是否找到1)
        dm.KeyPressChar(下拉框.获得内容("下拉框8",a8))
    如果结束
   循环结束
功能结束
回复 支持 反对

使用道具 举报

发表于 2013-2-1 01:10:24 | 显示全部楼层
粗看这两段不至于崩,不过很多错误,比如鼠标取句柄不可能=0的,除非你电脑关了,第二各种错误提示之后其实没啥实际意义,后面的代码还是照着走下去,该错的还得错,该爆的还得爆
回复 支持 反对

使用道具 举报

发表于 2013-2-1 09:37:53 | 显示全部楼层
原因有可能是窗口多次绑定大漠。
lz可以试一下把加血的线程关了,手动加血一段时间。
回复 支持 反对

使用道具 举报

发表于 2013-2-1 14:25:56 | 显示全部楼层
你太幽默了 还如果结束  哈哈哈
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-1 14:52:34 | 显示全部楼层
把加血功能取消后还是崩溃 估计不是多次绑定的原因。创建大漠对象过多会不会是原因之一呢?崩溃ING
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-1 15:03:23 | 显示全部楼层
也不是大漠的问题 ,大漠对象改成全局值后还是崩溃,只不过崩溃的时间大大延长了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-1 15:10:58 | 显示全部楼层
问题应该是打怪.开始()那 因为打怪开始 打开了6个以上的线程 而打怪开始()在循环里 。加个打怪.结束()试试去
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-6-3 07:32 , Processed in 0.046614 second(s), 22 queries .

Powered by 海安简单软件服务部

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

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