TC官方合作论坛

 找回密码
 立即注册
查看: 2213|回复: 2

[语法] 某游戏全自动半内存辅助《源码》

[复制链接]
发表于 2015-4-30 07:05:37 | 显示全部楼层 |阅读模式

马上加入TC

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

x
恩 直接上代码 只有源码 界面不发  喜欢看代码的看看我的代码风格 是否可以优化  ,,请指教
空间 JJ

//定义默认空间
dm_tx = com("dm.dmsoft")
var 基址 = "<TKInterimdataDll.dll>+3AF4C"
var 状态基址 = "[<TkMCEx.exe>+699E4]+a9c"


function Get_Date(&内存地址,窗口句柄_temp,&dm_dm)//获取内存数据
    var q_temp//全局临时变量
    var q_temp_Err//错误变量
a:   
    q_temp = 0
    q_temp = dm_dm.ReadInt(窗口句柄_temp,内存地址,0)
    q_temp_Err = dm_dm.GetLastError()
    if(q_temp_Err != 0)
        goto a
    endif
    return q_temp
endfunction


function Get_Vacancy(&dm_dm,窗口句柄_temp)//获取游戏桌面上的空位
    if(JJ.Get_Date("[["&基址&"]+140]+50",窗口句柄_temp,dm_dm)==0)
        return 1
    endif
    if(JJ.Get_Date("[["&基址&"]+13c]+50",窗口句柄_temp,dm_dm)==0)
        return 2
    endif
    if(JJ.Get_Date("[["&基址&"]+144]+50",窗口句柄_temp,dm_dm)==0)
        return 3
    endif
    if(JJ.Get_Date("[["&基址&"]+138]+50",窗口句柄_temp,dm_dm)==0)
        return 4
    endif
    if(JJ.Get_Date("[["&基址&"]+134]+50",窗口句柄_temp,dm_dm)==0)
        return 5
    endif
    return 0//如果都没有空位那么就返回0
endfunction


function Get_Rs(窗口句柄_temp,&dm_dm)//获取当前桌面人数
    var 人数 = 0
    if(JJ.Get_Date("[["&基址&"]+140]+50",窗口句柄_temp,dm_dm)>0)
        人数++
    endif
    if(JJ.Get_Date("[["&基址&"]+13c]+50",窗口句柄_temp,dm_dm)>0)
        人数++
    endif
    if(JJ.Get_Date("[["&基址&"]+144]+50",窗口句柄_temp,dm_dm)>0)
        人数++
    endif
    if(JJ.Get_Date("[["&基址&"]+138]+50",窗口句柄_temp,dm_dm)>0)
        人数++
    endif
    if(JJ.Get_Date("[["&基址&"]+134]+50",窗口句柄_temp,dm_dm)>0)
        人数++
    endif
    if(JJ.Get_Date(状态基址,窗口句柄_temp,dm_dm)>0)
        人数--
    endif
    return 人数
endfunction


function Up(&dm_dm,窗口句柄_temp)//上位
    var 空位
    var 状态
    空位 = JJ.Get_Vacancy(dm_dm,窗口句柄_temp)
    状态 = JJ.Get_Date(状态基址,窗口句柄_temp,dm_dm)
    if(状态 == 0)   
        if(空位 == 0)
            return false
        else
            //dm_dm.SetWindowState(窗口句柄_temp,14)//12
            窗口.激活(窗口句柄_temp)
            help.sleep(500)
            select(空位)
                条件 1:
                dm_dm.MoveTo(122,116)
                dm_dm.LeftClick()
                help.sleep(1000)               
                条件 2:
                dm_dm.MoveTo(652,112)
                dm_dm.LeftClick()
                help.sleep(1000)
                条件 3:
                dm_dm.MoveTo(59,340)
                dm_dm.LeftClick()
                help.sleep(1000)
                条件 4:
                dm_dm.MoveTo(714,347)
                dm_dm.LeftClick()
                help.sleep(1000)
                条件 5:
                dm_dm.MoveTo(393,501)
                dm_dm.LeftClick()
                help.sleep(1000)
            endselect
        endif
    endif
endfunction


function Under(&dm_dm,窗口句柄_temp)//下位
    var 状态
    var 筹码
    状态 = JJ.Get_Date(状态基址,窗口句柄_temp,dm_dm)
    筹码 = JJ.Get_Date("["&基址&"]+4",窗口句柄_temp,dm_dm)
    if(状态==1)
        if(筹码<5)
            while(true)               
                状态 = JJ.Get_Date("<TKInterimdataDll.dll>+3C070",窗口句柄_temp,dm_dm)
                if(状态 == 1)
                    return true
                else
                    dm_dm.MoveTo(137,663)               
                    dm_dm.LeftClick()
                endif
            endwhile
        endif
    endif
endfunction


空间结束
//空间结束语句

#include"JJ.t"

空间 Udate_JJ
//默认空间
d = com("dm.dmsoft")
//开始按钮_点击操作
var 掉线 = 数组[100]//对应ID
var Thread_State//线程空闲状态
var 窗口句柄_ID = 数组[100]//存放找到的游戏窗口句柄
var 窗口句柄_ID_id//窗口数量


function GetThread_Vacancy()//获取空位的线程号
    var buff
    for(i=1;i<100;i++)
        buff = 表格.获得内容("表格0",i,0)
        if(buff=="")
            return i
        endif
    endfor   
endfunction


function GetWindows_Hwnd()//获取全部游戏窗口
    var 类名
    var dx
    var buff
    var ckmc   
    if(单选框.获得状态("单选框0")==true)
        类名 = "Afx:00400000:0"
    else
        类名 = "Afx:00400000:0"
    endif
    返回值=系统.枚举(类名,1)
    while(字符串.分割(返回值,"|",buff)==false)
        返回值=系统.枚举(类名,1)
    endwhile
    数组空间.大小(buff,dx)
    for(i=0;i<dx;i++)
        ckmc = 窗口.得到标题(buff)
        if(字符串.查找字符串(ckmc,"JJ卡当")!= -1)
            窗口句柄_ID[窗口句柄_ID_id] = buff
            窗口句柄_ID_id++
            表格.设置内容("表格0",窗口句柄_ID_id,1,"0")
            表格.设置内容("表格0",窗口句柄_ID_id,2,"0")
            表格.设置内容("表格0",窗口句柄_ID_id,3,"没有上桌")
            表格.设置内容("表格0",窗口句柄_ID_id,4,"3")
            表格.设置内容("表格0",窗口句柄_ID_id,5,"0")
        endif
    endfor   
endfunction


function Thread_Major(线程_ID)//主要的线程
    Thread_State = 1
    thread_dm = com("dm.dmsoft")//线程里面的DM
    var thread_jc//检测线程句柄
    var 桌面筹码
    var 桌面人数
    var 自身状态
    var thread_hwnd
    if(单选框.获得状态("单选框0")==true)   
        thread_hwnd = d.EnumWindow(窗口句柄_ID[线程_ID],"","Afx:00400000:0:00010011:00000000:00000000",2+4+8+16)//上下位窗口
    else
        thread_hwnd = d.EnumWindow(窗口句柄_ID[线程_ID],"","Afx:00400000:0:00010003:00000000:00000000",2+4+8+16)//上下位窗口
    endif
    while(thread_dm.BindWindowEx(thread_hwnd,"normal","windows","normal","",101) !=1)        
    endwhile//绑定窗口
    //检测线程
    Thread_State = 0
    表格.设置内容("表格0",(线程_ID+1),0,(线程_ID+1))
    while(true)
        桌面筹码 = JJ.Get_Date("["&JJ.基址&"]+4",窗口句柄_ID[线程_ID],thread_dm)
        桌面人数 = JJ.Get_Rs(窗口句柄_ID[线程_ID],thread_dm)
        自身状态 = JJ.Get_Date(JJ.状态基址,窗口句柄_ID[线程_ID],thread_dm)
        表格.设置内容("表格0",(线程_ID+1),1,桌面人数)
        表格.设置内容("表格0",(线程_ID+1),5,桌面筹码)
        if(自身状态==1)
            表格.设置内容("表格0",(线程_ID+1),3,"在桌上")
        else
            表格.设置内容("表格0",(线程_ID+1),3,"没有上桌")
        endif
        if(桌面人数<类型.转整型(表格.获得内容("表格0",(线程_ID+1),4)))
            // if(Thread_State == 0)
            Thread_State = 1
            JJ.Under(thread_dm,窗口句柄_ID[线程_ID])
            Thread_State = 0
            //else
            help.sleep(1000)
            //endif
        else
            //if(Thread_State == 0)
            Thread_State = 1
            JJ.Up(thread_dm,窗口句柄_ID[线程_ID])
            Thread_State = 0
            //else
            help.sleep(1000)
            //endif
        endif
        if(窗口.是否有效(窗口句柄_ID[线程_ID])==false)
            thread_dm.UnBindWindow()
            表格.设置内容("表格0",(线程_ID+1),0,"")
            表格.设置内容("表格0",(线程_ID+1),2,"窗口关闭")
            return 0
        endif
        help.sleep(类型.转整型(编辑框.获得文本("编辑框0")))
    endwhile
   
   
endfunction


功能 初始化()
    //这里添加你要执行的代码
    d.Reg("3s387","")
    d.DmGuard(1,"np")
    d.DmGuard(1,"phide")
    for(i=0;i<100;i++)
        掉线 = 0//初始化0代表未掉线,1代表掉线
    endfor
    窗口句柄_ID_id = 0
    Thread_State = 0
功能结束




功能 按钮0_点击()
    //这里添加你要执行的代码
    窗口句柄_ID_id = 0
    Udate_JJ.GetWindows_Hwnd()
    help.messagebox("系统扫描到:"&Udate_JJ.窗口句柄_ID_id&"   个游戏窗口")
    控件.有效("按钮0",false)
功能结束


function xx()
    for(i=0;i<窗口句柄_ID_id;i++)   
        while(Thread_State==1)
            help.sleep(100)
        endwhile
        线程.开启("Udate_JJ.Thread_Major",i)        
        help.sleep(500)      
    endfor   
endfunction


功能 按钮1_点击()
    //这里添加你要执行的代码
    线程.开启("Udate_JJ.xx","")   
    控件.有效("按钮1",false)
功能结束




功能 表格0_左键单击()
    //这里添加你要执行的代码
    变量 r_beginRow,r_beginCol,r_endRow,r_end_Col
    表格.获得选中范围("表格0",r_beginRow,r_beginCol,r_endRow,r_end_Col)  
    编辑框.设置文本("编辑框1",字符串.移除(窗口.得到标题(Udate_JJ.窗口句柄_ID[(r_beginRow-1)]),10,true))
功能结束




功能 热键0_热键()
    //这里添加你要执行的代码
    var  标题
    var  句柄
    句柄=窗口.鼠标所在窗口句柄()
    标题=窗口.得到标题(句柄)
    if(字符串.查找字符串(标题,"JJ卡当")!= -1)
        窗口句柄_ID[窗口句柄_ID_id] = 句柄
        窗口句柄_ID_id++
        while(Thread_State==1)
            help.sleep(100)
        endwhile
        for(i=0;i<100;i++)
            if(表格.获得内容("表格0",i,0)=="")
                线程.开启("Udate_JJ.Thread_Major",(i-1))
                break
            endif
        endfor         
    endif   
功能结束


空间结束
//空间结束语句

回复

使用道具 举报

发表于 2015-4-30 08:11:50 | 显示全部楼层
代码好长
回复

使用道具 举报

发表于 2015-4-30 10:41:47 | 显示全部楼层
好腻害吧
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-4-25 12:47 , Processed in 0.040307 second(s), 22 queries .

Powered by 海安简单软件服务部

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

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