TC官方合作论坛

标题: 无法停止的TC脚本. [打印本页]

作者: 54984871    时间: 2013-12-1 10:02
标题: 无法停止的TC脚本.
情况:不小心按下两次开启就无法热键停止,必须要点击退出键.
注明:按一次开启键的话可以正常停止(也就是,不管是按开始键或则热键来启动,只要是只开始一次就正常)
不知道是不是我哪里写错了,请指教.

空间 我的脚本
//默认空间
截取线程=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_热键()
    //这里添加你要执行的代码
    我的脚本.开始_点击()
功能结束
空间结束

作者: 54984871    时间: 2013-12-1 10:11
没人帮忙吗
作者: 54984871    时间: 2013-12-1 10:30
求助啊求助啊
作者: qjl515728270    时间: 2013-12-1 11:38
句柄需要全局声明
作者: 54984871    时间: 2013-12-1 16:35
qjl515728270 发表于 2013-12-1 11:38
句柄需要全局声明

有全局变量的声明啊```还请指教```
作者: silei3058    时间: 2013-12-1 18:03
你是热键启动的吧.我想你那样的话,肯定会出现灵异时间的.
作者: kaixindexifan    时间: 2013-12-2 17:14
第一,如果不需要或者为了避免开启后又开启,可以设置一个开关控制,如果不懂可以问我

第二,你的问题不是全局不全局的问题,举例,第一次开启后,截取线程这个句柄假如是1,第二次开启后,截取线程被重新赋值了,假如是2,你现在操作截取线程这个变量,他里面的值是2,所以你只能控制句柄是2的这个线程,而第一个线程你没办法控制,他一直在循环,所以你停止不了他。
作者: 54984871    时间: 2013-12-3 16:07
kaixindexifan 发表于 2013-12-2 17:14
第一,如果不需要或者为了避免开启后又开启,可以设置一个开关控制,如果不懂可以问我

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

高人啊 其实我也想到了这个问题 至于开关控制的话我还没试过 本来是想在开关那里加个如果语句的
不知道你有什么样的见解呢 还请指教
作者: kaixindexifan    时间: 2013-12-3 20:00
54984871 发表于 2013-12-3 16:07
高人啊 其实我也想到了这个问题 至于开关控制的话我还没试过 本来是想在开关那里加个如果语句的
不知道你 ...

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

代码那里思路:

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

作者: 54984871    时间: 2013-12-5 12:36
本帖最后由 54984871 于 2013-12-5 12:41 编辑
kaixindexifan 发表于 2013-12-3 20:00
说不上什么见解,这个是大家都知道的常用方法,比如初始开关=0

代码那里思路:


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

作者: kaixindexifan    时间: 2013-12-5 16:06
54984871 发表于 2013-12-5 12:36
不好意思 最近很忙 都没上论坛···这个办法是可行的 但有个问题还没解决···如果语句里有多个循环真 ...

你有想法是好的 为什么不亲自测试下呢?看看是不是和你说的一样啊!~
作者: 54984871    时间: 2013-12-6 22:14
kaixindexifan 发表于 2013-12-5 16:06
你有想法是好的 为什么不亲自测试下呢?看看是不是和你说的一样啊!~ ...

这个办法虽然解决的多次开启无法控制 但还是找不到原因为什么多个循环真时 有时候会出错 最近都在写功能脚本 头都大了```
作者: kaixindexifan    时间: 2013-12-6 22:36
54984871 发表于 2013-12-6 22:14
这个办法虽然解决的多次开启无法控制 但还是找不到原因为什么多个循环真时 有时候会出错 最近都在写功能 ...

出错就贴代码,我擦
作者: 54984871    时间: 2013-12-8 13:25
kaixindexifan 发表于 2013-12-6 22:36
出错就贴代码,我擦

选不了最佳答案```




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1