2011年11月30日 基址更新,点击下载最新脚本: 
 
 
源码版: 
亲门  由于版本比较旧 请大家用新版本时候 把个别地方的代码自己改下咯 
【脚本说明】: 
1.脚本使用内存操作,动态获取人物的血量和真气,以及人物属性等; 
2.进入游戏后,点击启动,脚本动态获取全部界面列表信息。属性和血量时刻监视着,让PK变得更加犀利; 
3.加血和加蓝功能不仅适合小药玩家,还适合大药玩家,加血和加蓝相对客观,帮站对于清蓝相当起效。 
【脚本界面图】: 
 
读取前界面 
 
读取后界面 
 
帮助PK+背包数据界面图 
 
 
【源码如下】: 
1.主空间源码: 
#include"prodction(生产).t" 
 #include"hit guai(PK).t" 
 #include"bagdata(背包数据).t" 
 #include"Character Sheet(属性).t" 
 namespace 诛仙2全后台打怪脚本 int bloodthread//控制血量线程句柄 
 int indigothread//控制真气线程句柄 
 int characterthread//控制人物属性线程句柄 
 int bagdatathread//控制背包线程句柄 int productionthread//控制生产线程句柄  
 function bool judge()//判断游戏是否开启,若开启,开启加血和加蓝功能 int handle handle = process.getprocessid("诛仙前传")//获取诛仙前传线程句柄 if(handle != 0)//判断线程句柄是否为空   bloodthread = thread.beginthread("recover.addblood")//调用子空间recover的addblood函数,将子空间文件在主空间导入(##include"hit guai(PK).t")   indigothread = thread.beginthread("recover.addindigo")//调用子空间recover的addingdigo函数,只导入一次空间文件即可 else   help.messagebox("请检查游戏是否开启!")//输出消息框提示游戏没有开启 endif 
 return true 
 endfunction 
  
function bool readdata_click()//获取人物属性函数   //调用子空间character的gaindata函数,将子空间文件在主空间导入(#include"Character Sheet(属性).t"),导入一次即可。   characterthread = thread.beginthread("character.gaindata") return true 
 endfunction 
  
function bool stop_click()//停止人物属性数据获取   thread.closethread(characterthread)//关闭人物属性线程句柄 return true 
 endfunction 
  
function bool readbagdata_click()//获取背包数据函数    //调用子空间bagdata的readingbag函数,将子空间文件在主空间导入(#include"bagdata(背包数据).t"),导入一次即可。   bagdatathread = thread.beginthread("bagdata.readingbag") return true 
 endfunction 
  
function bool start_click()//判断血和蓝函数   诛仙2全后台打怪脚本.judge()//在本空间诛仙2全后台打怪脚本调用judge函数,judge用于开启判断蓝和血线程 return true 
 endfunction 
  
function bool production_click()//进行生产函数    //调用子空间prodction的prodction函数,将子空间文件在主空间导入(#include"prodction(生产).t"),导入一次即可。   productionthread = thread.beginthread("prodction.prodction") return true 
 endfunction 
  
function bool stopproduction_click()//暂停生产函数   thread.closethread(productionthread)//关闭生产线程 return true 
 endfunction 
  
function bool exit_click()//退出   thread.closethread(bloodthread)//关闭血线程   thread.closethread(indigothread)//关闭看线程   thread.closethread(characterthread)//关闭人物属性线程 return true 
 endfunction 
  
function bool destory()//注销,防止用户不点退出,点X关闭脚本,同样将全部线程关闭   thread.closethread(productionthread)   thread.closethread(bloodthread)   thread.closethread(indigothread)   thread.closethread(characterthread)   thread.closethread(bagdatathread) return true 
 endfunction 
  
function bool explain_click()//属性列表说明,按钮弹消息框说明函数   help.messagebox("观看此属性动态变化,在每次使用技能让人物属性加强时,需要使用快捷键ALT+C让角色读取一次数据,这时为正确的数据,否则为人物本身无状态下的属性!") return true 
 endfunction 
  
function bool explain1_click()//弹网站命令函数 bool ret3   ret3=help.cmd("http://www.tcmade.com/Tutorial/download.html",false) if(!ret3)    help.messagebox("open false!") endif 
 return true 
 endfunction 
  
function bool init()//初始化,用于激活第一个选项卡页面   tab.active("tab0",0) return true 
 endfunction 
  
endnamespace 
  
Character Sheet(属性).t文件源码:  
 //下面是人物属性空间函数 
 namespace character //定义一个character命名的空间,用于列出人物属性 
 int address//定义一个整型地址  
 function int reading(int hwnd)    //通过传入一个进程句柄,读取通用地址的偏移地址,也就是说,通过#00c1543c这个基址加上#1C加上#28获取人物属性前面的通用地址。    //很多人会问我,我怎么知道这个地址偏移多少呢?其实这个地址需要借助于内存搜索工具,本人在这里用的是CE工具进行搜索的,通过CE搜索一个内存地址,然后跟偏移    //量,每得到一个偏移都会得到新的指针地址,再根据指针地址搜索下一个指针地址,直到出现一个没有偏移的地址,那么这个就是基地址了。    //得到这个基址之后,很多人又会问怎么代码实现了,是不是基地址就是这个数据,其实并不是这样的。    //在大部分游戏当中都可能会有一个全局变量,也就是说我们找到的这个基地址就是一个全局变量,根据这个全局变量(基址)+偏移+...+偏移就是一个内存地址    //,这个内存地址显示的才是用户需要的地址,所谓的内存地址是变化的,每次游戏上线都会获得新的一个内存地址,所以每次游戏上线我们都要获取一次。    //那么下面我们就通过这个原理将基址+偏移得到我们所用到的数据,下面这个读取字节是一个通用的偏移,所以我给它放到一起,下次直接调用即可。 
    address = process.read4byte(hwnd,process.read4byte(hwnd,process.read4byte(hwnd,#00C1543C)+#1c) +#28) return address//返回一个地址 endfunction 
  
function bool gaindata()//下面开始获取人物属性数据 int handle,read //定义一个整型数据 句柄和一个read地址,很多人问为什么你知道定义一个这样的数据,如果你细致的话,多看看帮助文档每个函数的返回值和参数即可 double reading //定义一个浮点型数据,用于获取浮点数,英文有的人物属性是百分比的,所以我们读取内存地址也需要选择不一样的读取方式 
    handle = process.getprocessid("诛仙前传")//获得诛仙前传的进程句柄   if(handle != 0) //判断进程句柄是否为空     address = character.reading(handle)//调用上面我们通用的偏移地址,将获取的进程句柄传入到通用偏移函数中     while(true)//写一个循环动态的获取数据     //角色名     read=process.read4byte(handle,address+#4E4) //通用偏移+角色名偏移就得到了角色名地址,然后将数据读取即可,到了这里大家应该很清楚了。     statictext.settext("Static24",process.readstringunicode(handle,read,10))     help.sleep(100)     //人物等级     read=process.read4byte(handle,address +#360)     statictext.settext("Static49",convert.inttostr(read))     help.sleep(100)     //当前血量     read = process.read4byte(handle,address +#27C)     statictext.settext("Static44",convert.inttostr(read))     help.sleep(100)     //当前真气     read = process.read4byte(handle,address+#280)     statictext.settext("Static45",convert.inttostr(read))     help.sleep(100)     //最大血量上限     read = process.read4byte(handle,address+#2A0)     statictext.settext("Static46",convert.inttostr(read))     help.sleep(100)     //最大真气上限     read = process.read4byte(handle,address+#2A4)     statictext.settext("Static47",convert.inttostr(read))     help.sleep(100)     //眩晕抗性     read = process.read4byte(handle,address +#300)     statictext.settext("Static35",convert.inttostr(read))     help.sleep(100)     //昏睡抗性     read = process.read4byte(handle,address +#304)     statictext.settext("Static36",convert.inttostr(read))     help.sleep(100)     //魅惑抗性     read = process.read4byte(handle,address+#30C)     statictext.settext("Static37",convert.inttostr(read))     help.sleep(100)     //定身抗性     read = process.read4byte(handle,address +#308)     statictext.settext("Static38",convert.inttostr(read))     help.sleep(100)     //虚弱抗性     read = process.read4byte(handle,address +#310)     statictext.settext("Static39",convert.inttostr(read))     help.sleep(100)     //攻击     int attack1,attack2 //注意:这里我分开写了,因为在内存当中最小攻击和最大攻击的地址是分开的,所以需要分开获取。 
     attack1 = process.read4byte(handle,address +#2EC)     attack2 = process.read4byte(handle,address+#2F0)     statictext.settext("Static25",str.strcat(convert.inttostr(attack1),str.strcat("--",convert.inttostr(attack2))))     help.sleep(100)     //防御     read = process.read4byte(handle,address +#2F8)     statictext.settext("Static27",convert.inttostr(read))     help.sleep(100)     //普攻命中     read = process.read4byte(handle,address +#2F4)     statictext.settext("Static26",convert.inttostr(read))     help.sleep(100)    //普攻闪躲     read = process.read4byte(handle,address+#2FC)     statictext.settext("Static33",convert.inttostr(read))     help.sleep(100)     //致命伤害     reading = process.readfloat(handle,address+#2E8)     statictext.settext("Static28",convert.doubletostr(reading))     help.sleep(100)     //减免致命伤害     reading = process.readfloat(handle,address+#320)     statictext.settext("Static32",convert.doubletostr(reading))     help.sleep(100)     endwhile 
   else     help.messagebox("你还没有进入游戏,进入游戏后点击<readdate(读取数据)>按钮,获得人物属性值!")   endif 
 return true 
 endfunction 
  
endnamespace 
  
hit guai(PK).t文件源码: 
//这个是一个自动回血回蓝的子空间 
namespace recover //定义了一个recover命名的空间 
 int handle function bool addblood()//加血 
 int blood int current    handle = process.getprocessid("诛仙前传") //获取进程句柄 
    current = convert.strtoint(edit.gettext("edit2")) //获取用户当前设置血的值 
    while(true)    //读地址 
    blood=process.read4byte(handle,process.read4byte(handle,process.read4byte(handle,process.read4byte(handle,#00C1543C)+#1c) +#28) +#27c)    statictext.settext("Static15",convert.inttostr(blood))//获得数据写入界面标签    if(blood >= 0&¤t>= 0&&(blood-current) <= 0)//将用户设置和人物本身血量对比,判断是否加血      window.setwindowtop(window.findwindow("诛仙前传"))      help.sleep(20)      keyboard.keypress(57,1)      help.sleep(20)    endif    help.sleep(600)   endwhile 
 return true 
 endfunction 
  
function bool addindigo()//加蓝 和加血是一样的,就不在说明了 
 int indigo int current    handle = process.getprocessid("诛仙前传")    current = convert.strtoint(edit.gettext("edit3"))    while(true)        indigo=process.read4byte(handle,process.read4byte(handle,process.read4byte(handle,process.read4byte(handle,#00C1543C)+#1c) +#28) +#280)        statictext.settext("Static16",convert.inttostr(indigo))        if(indigo >= 0&¤t>= 0&&(indigo-current) <= 0)//加蓝           window.setwindowtop(window.findwindow("诛仙前传"))           help.sleep(20)           keyboard.keypress(48,1)           help.sleep(20)           help.sleep(20)        endif           help.sleep(600)    endwhile 
 return true 
 endfunction 
  
endnamespace 
  
 
 
 
  
 
 
 
 |