TC官方合作论坛

 找回密码
 立即注册
查看: 3358|回复: 13

[脚本] 无法停止的TC脚本.

[复制链接]
发表于 2013-12-1 10:02:55 | 显示全部楼层 |阅读模式

马上加入TC

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

x
情况:不小心按下两次开启就无法热键停止,必须要点击退出键.
注明:按一次开启键的话可以正常停止(也就是,不管是按开始键或则热键来启动,只要是只开始一次就正常)
不知道是不是我哪里写错了,请指教.

空间 我的脚本
//默认空间
截取线程=0,循环测试=0  //全局变量
功能 截取字符()
    a=0,b=0
    循环(真)
        a++
        调试输出("A"&a)
        辅助.等待(500)
        如果(a==5)
            a=0
            循环(真)
                b++
                调试输出("B"&b)
                辅助.等待(500)
                如果(b==10)
                    b=0
                    跳出
                如果结束
            循环结束
        如果结束
    循环结束
    返回 真  //有没有这个返回值都是一样无法停止
功能结束
功能 循环测试()
    c=0,d=0
    循环(真)
        c++
        调试输出("C"&c)
        辅助.等待(600)
        如果(c==15)
            c=0
            线程.暂停(截取线程) //我另外的一个脚本有时候这个位置无法停止,而且有时候会有灵异的情况出现。
            循环(真)                     如果我暂停的是采集脚本,而这里是打怪代码,当打了怪后我想再做一个动作的时候,这个动作往往只能做一半就停止了,有时候能完成。
                d++                        注明:那个动作的代码没有问题,应为代码单独运行正常。                    
                辅助.等待(600)
                调试输出("D"&d)
                如果(d==20)
                    d=0
                    线程.恢复(截取线程)
                    跳出
                如果结束
            循环结束
        如果结束
    循环结束
    返回 真   //有没有这个返回值都是一样无法停止
功能结束
//开始按钮_点击操作
功能 开始_点击()
    截取线程=线程.开启("我的脚本.截取字符","")
    循环测试=线程.开启("我的脚本.循环测试","")
功能结束
//退出按钮_点击操作
功能 退出_点击()
    辅助.退出()
功能结束

功能 热键1_热键()
    //这里添加你要执行的代码
    线程.关闭(截取线程)
    线程.关闭(循环测试)
功能结束
//空间结束语句
功能 热键0_热键()
    //这里添加你要执行的代码
    我的脚本.开始_点击()
功能结束
空间结束
回复

使用道具 举报

 楼主| 发表于 2013-12-1 10:11:42 | 显示全部楼层
没人帮忙吗{:soso_e127:}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-1 10:30:00 | 显示全部楼层
求助啊求助啊{:soso_e118:}
回复 支持 反对

使用道具 举报

发表于 2013-12-1 11:38:33 | 显示全部楼层
句柄需要全局声明
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-1 16:35:10 | 显示全部楼层

有全局变量的声明啊```还请指教```
回复 支持 反对

使用道具 举报

发表于 2013-12-1 18:03:20 | 显示全部楼层
你是热键启动的吧.我想你那样的话,肯定会出现灵异时间的.
回复 支持 反对

使用道具 举报

发表于 2013-12-2 17:14:34 | 显示全部楼层
第一,如果不需要或者为了避免开启后又开启,可以设置一个开关控制,如果不懂可以问我

第二,你的问题不是全局不全局的问题,举例,第一次开启后,截取线程这个句柄假如是1,第二次开启后,截取线程被重新赋值了,假如是2,你现在操作截取线程这个变量,他里面的值是2,所以你只能控制句柄是2的这个线程,而第一个线程你没办法控制,他一直在循环,所以你停止不了他。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-3 16:07:13 | 显示全部楼层
kaixindexifan 发表于 2013-12-2 17:14
第一,如果不需要或者为了避免开启后又开启,可以设置一个开关控制,如果不懂可以问我

第二,你的问题不是 ...

高人啊 其实我也想到了这个问题 至于开关控制的话我还没试过 本来是想在开关那里加个如果语句的
不知道你有什么样的见解呢 还请指教
回复 支持 反对

使用道具 举报

发表于 2013-12-3 20:00:33 | 显示全部楼层
54984871 发表于 2013-12-3 16:07
高人啊 其实我也想到了这个问题 至于开关控制的话我还没试过 本来是想在开关那里加个如果语句的
不知道你 ...

说不上什么见解,这个是大家都知道的常用方法,比如初始开关=0

代码那里思路:

  1. 如果(开关==0)
  2. 线程.开启()
  3. 开关=1
  4. 如果结束
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-5 12:36:25 | 显示全部楼层
本帖最后由 54984871 于 2013-12-5 12:41 编辑
kaixindexifan 发表于 2013-12-3 20:00
说不上什么见解,这个是大家都知道的常用方法,比如初始开关=0

代码那里思路:


不好意思 最近很忙 都没上论坛···这个办法是可行的 但有个问题还没解决···如果语句里有多个循环真时 线程暂停语句无法停止怎么办呢 这个应该是BUG来的 可是不知道怎么避免···
这个无法停止 意思指当第一个线程运行到某处循环真的时候 而另外一个线程要启动了并且发送了暂停指令给第一个线程 第一个线程也接受到了指令 并且暂停了 但在循环真体里面还是在运行循环真 无法停止!也无法跳出 应为该循环体没有达到指令要求所以无法跳出 从而打乱了第二个线程的正常运行
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-9-23 11:43 , Processed in 0.037957 second(s), 22 queries .

Powered by 海安简单软件服务部

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

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