TC官方合作论坛

 找回密码
 立即注册
查看: 1845|回复: 4

[源码分享] 发后台多开源码,顺便来高手答问~

[复制链接]
发表于 2013-10-22 23:26:04 | 显示全部楼层 |阅读模式

马上加入TC

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

x
空间 游戏多开
hwnd=array[1]//窗口句柄组
tsall=array[1]//天使对象组
count=0//用于存储窗口数量
threadN=array[1]//线程句柄组
threadS=0//单开备用
tss//单开备用
次数,延时

功能 开始_点击()
    help.messagebox("are you ready??")
    hwnds=system.enum("游戏",0)
   
    //分割窗口句柄
    if(str.strleng(hwnds)==0)
        help.messagebox("please open the game and restart this program")
        help.exit()
    else
        if(str.findstr(hwnds,"|")<0)
            hwnd[0]=hwnds
        else
            str.split(hwnds,"|",hwnd)
        endif
        //获得窗口句柄的个数
        arraysp.size(hwnd,count)
        //重新定义对象数组的大小
        tsall=arraysp.alloc(tsall,true,count)
        for(i=0;i<count;i++)
            if(i==0)
                tsall[0]=com("ts.TsSoft")
                threadN[0]=thread.beginthread("游戏多开.linkup",0)
            else
                arraysp.add(threadN,0,1)
                tsall=com("ts.TsSoft")
                threadN=thread.beginthread("游戏多开.linkup",i)
            endif
        endfor
    endif
功能结束

function linkup(i)
    tsall.SetPath(help.getrcpath("rc:"))
    ret=tsall.BindWindow(hwnd,"dx","dx","dx",1)//分别绑定窗口了
    help.sleep(help.randto(500,3000))
    窗口.激活(hwnd)//激活一次
    if(ret==0)
        help.messagebox("can&#39;t be used")
    else
        游戏多开.realstart(tsall,hwnd)//功能函数
    endif
endfunction

function realstart(ts,fhwnd)
   这中间是功能函数
endfunction


function number()//返回鼠标窗口在句柄组中的序号
    mousehwnd=window.getmousemovewndhand()
    for(i=0;i<count;i++)
        if(mousehwnd==hwnd)
            return i   
        endif
        help.sleep(20)
    endfor
    return null
endfunction

功能 初始化()
    //这里添加你要执行的代码
    i=help.regdll("rc:TSPlug.dll",true)
    traceprint("注册结果为"&i)
    tab.active("选项卡0",0)
    radio.setstate("单选框0",true)
功能结束

功能 退出_点击()
    //这里添加你要执行的代码
    for(i=0;i<count;i++)
        tsall.UnBindWindow()
        thread.closethread(threadN)
    endfor
功能结束

功能 按钮0_点击()//暂停
  i=游戏多开.number()
     thread.suspendthread(threadN)
功能结束

功能 按钮1_点击()//恢复
    i=游戏多开.number()
    thread.resumethread(threadN)
功能结束

空间结束



因为没附上源码,重新发个帖子求教吧
以上是源码。因为游戏中一些意外干扰的问题,我希望在动作出错的时候,暂停脚本,允许手动鼠标操作,动作纠正以后,再继续脚本
但是有这样一个问题:
因为游戏必须绑定dx键鼠
所以需要解绑重绑,这样进程又会崩溃
想求教高手,这种情况一般是怎么解决的

回复

使用道具 举报

 楼主| 发表于 2013-10-22 23:41:36 | 显示全部楼层
好像大漠的enablebind接口有这个功能,但是是收费的,天使有这接口么
回复 支持 反对

使用道具 举报

发表于 2013-10-23 00:51:20 | 显示全部楼层
正常解绑应该是不会崩溃的吧。可能解绑的地方不对?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-23 08:01:54 | 显示全部楼层
回复 3楼cylhb的帖子

不是解绑啊,我的意思是解绑手动操作我还想继续脚本,这个时候重新绑定,好几次都直接崩溃了,还有几次不能继续运行
回复 支持 反对

使用道具 举报

发表于 2013-10-23 09:07:34 | 显示全部楼层
线程暂停线程环境被封闭起来,包括com对象.没看到你暂停后如何让物理鼠标开启的,不过估计不管怎么弄,都不行,因为目标被封闭了,解绑不了,下次再绑相当于重复绑定,建议死心吧,或者TS有提供暂时解绑接口的话兴许有搞头.
如果你是任务类的,建议让程序自己判断现在该做啥,那么当需要暂停时实际是结束线程并且解绑,下次再绑定后,程序自己决定该怎么接续
如果是挂机的,那无所谓,啥时候开始都是那样打怪而已
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-9-23 19:54 , Processed in 0.039101 second(s), 22 queries .

Powered by 海安简单软件服务部

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

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