函数名称 :
void tgclick( x, y)
函数说明 :
模拟鼠标单击 (目前该函数只能用在网页或flash中,在3D游戏插件中无效)
参数说明 :
- x:整数型,输入x坐标
- y:整数型,输入y坐标
调用例子:
window.external.tgclick(100,100); 在坐标100,100处单击鼠标一次 ps: 坐标是相对于网页的相对坐标 循环点击的例子: //每隔1秒钟点击位置(100,100) for(var i = 0; i < 5; i++){ external.tgclick( 100, 100 ); external.tgwait( 1000 ); }
函数名称:
void tgpresskey( virtualkey , isCtrlDown , isShiftDown , isAltDown )
函数说明:
模拟键盘按键
参数说明 :
- virtualkey:整形数,按键的虚拟键码
- isCtrlDown:布尔型 Ctrl是否按下
- isShiftDown: 布尔型 Shift是否按下
- isAltDown: 布尔型 Alt是否按下
调用例子:
//输入一个A window.external.tgpresskey('A',false, false, false); //输入Ctrl + A window.external.tgpresskey('A',true, false, false); //输入Ctrl + Shift + A window.external.tgpresskey('A',true, true, false);
函数名称 :
void tglockcursor( x, y)
函数说明 :
锁定或解锁鼠标位置,锁定后用户将不能通过移动鼠标而改变鼠标位置
参数说明 :
- x:整数型,输入x坐标
- y:整数型,输入x坐标
调用例子:
//锁定 window.external.tglockcursor(200, 200); //解除锁 window.external.tglockcursor(-1,-1);
函数名称:
void tgshowcursor(isShow)
函数说明 :
设置浏览器状态栏显示当前鼠标的位置以及鼠标所指位置的RGB值(相对于网页的坐标位置)
参数说明 :
- isShow:整数型,是否显示鼠标位置及RGB值
调用例子:
//显示 window.external.tgshowcursor(1); //不显示 window.external.tgshowcursor(0);
如何分析socket数据
糖果游戏浏览器可以分析多种游戏的socket数据
本文告诉大家怎么分析socket数据。
要分析socket数据,得先获取到socket数据,糖果游戏浏览器提供了可以分析神仙道数据的javascript函数,这个函数是tglistensocket(
pageid , script )
第一个参数pageid 参数:代表要分析的网页的编号,可以通过tggetleftpage()或tggetrightpage()这两个函数获取,
第二个参数script 参数:代表一段javascript代码,当监听到神仙道socket数据后,该网页会执行此javascript代码。
例如运行一下代码:
var pageid=window.external.tggetleftpage(); tglistensocket(pageid,"alert('hello world!');");
这段代码的意思就是监听左侧网页的神仙道socket数据,当监听到数据以后执行javascript代码alert('hello world!');
当然这些代码并没有实际用处,我们是要得到socket数据,糖果游戏浏览器也提供了获取socket数据的函数,获取socket数据的函数是:
tggetrawsocketdata(flag,offset,len):表示从监听到的一条数据得到偏移量为offset的一个数据。
第一个参数flag代表要得到分析的发送数据还是接受数据,1代表接受数据,0代表发送数据。第二个参数offset代表要得到数据的偏移量。第三个参数size代表要得到数据的类型,1代表得到一个byte类型的数据,2代表得到一个short类型的数据,4代表得到一个int类型的数据。
第一个参数flag代表要得到分析的发送数据还是接受数据,1代表接受数据,0代表发送数据。第二个参数offset代表要得到数据的偏移量。第三个参数size代表要得到数据的类型,1代表得到一个byte类型的数据,2代表得到一个short类型的数据,4代表得到一个int类型的数据。
有了这个函数,我们就可以很轻松的得到监听到的socket数据了,例如我们执行一下代码:
假设我们监听到神仙道的一条数据为 0x00 0x00 0x00 0x03 0x56 0x78 0x02
假设我们监听到神仙道的一条数据为 0x00 0x00 0x00 0x03 0x56 0x78 0x02
var pageid=window.external.tggetleftpage(); tglistensocket(pageid,"alert(tggetrawsocketdata(1,0,4));"); //结果显示为 3
这样我们就把监听到的一条接受数据的偏移量为0的一个整型的数据显示了出来。显示结果为 3 。
var pageid=window.external.tggetleftpage(); tglistensocket(pageid,"alert(tggetrawsocketdata(1,6,1));"); //结果显示为 2
我们可以通过tggetrawsocketdatalen(flag)得到一条发送或接受数据的长度。
有的时候我们要以字符串的方式得到socket数据,可以通过tggetrawsocketstr(flag,offset,len)来得到字符串,flag代表从发送或接受的数据中得到,offset代表字符串的偏移量,len代表字符串的长度。
当然我们获取到想获得的数据后,应该删除网页为你监听的一条socket数据。删除一条数据函数tgdeleterawsocketdata(flag)。当我们删除了一条接受或发送的数据后,我们就可以通过上面获取数据的函数获得下一条监听数据里面的内容了。
有的socket数据经过zlib压缩算法压缩过了,糖果游戏浏览器也提供了解压缩的函数,tguncompress(flag,offset,len),flag代表要解压的数据类型,1代表接受的数据,0代表发送的数据,offset代表要解压数据的偏移量,len代表要解压数据的长度。
我们解压了数据以后还要得到解压数据,糖果游戏浏览器也提供了得到解压缩数据的函数,tggetuncompressdata(offset,size),offset代表要得到数据的偏移量,size代表数据类型,1代表得到byte类型数据,2代表得到short类型数据,4代表得到int类型数据。我们可以通过tggetuncompressdatalen()得到解压缩后的数据长度。当解压缩后的数据为字符串时,我们可以通过tggetuncompressstr(offset,len)来得到解压缩数据中的字符串,offset代表偏移量,len代表字符串的长度。
一个显示socket数据的例子
1. 如何添加到右侧辅助栏里
在添加辅助按钮上单击,弹出菜单选择"添加外部辅助",如图
然后会弹出一个对话框,添加游戏辅助所在的网页的网址http://youxi.tg1234.com/option/socket.htm?pop=2,如图
点击确定后,可以在右侧辅助栏里找到刚添加的辅助工具图标
单击此图标,可以发现在右侧屏幕上打开了一个辅助工具界面
2. 如何使用辅助工具
打开一个网页游戏,点启动监听,此时应该就可以看到数据了。
3. 如何实现监听socket数据的辅助脚本
具体的实现方法请参考该例子的源码,网址是:http://youxi.tg1234.com/option/socket.htm
4. 神仙道百步BOSS猎杀器案例
通过这个例子,可以写出一个专业的辅助来:http://youxi.ucoz.com/sxd.html
函数名称 :
bool tgpostmsg( pageid , msgstring )
返回值: 布尔值:如果执行成功将返回true,否则返回false
返回值: 布尔值:如果执行成功将返回true,否则返回false
函数说明 :
向某网页发送消息来让其执行某一段注册好的js函数,并且将msgstring作为参数传入此js函数中
参数说明 :
- pageid:整形数: 要发送的网页的编号
- msgstring:字符串: 要传递的字符串参数
调用例子:
external.tgpostmsg( 101, "hello world!");
函数名称:
void tgsetmsgfunc( msgfunc )
函数说明 :
设置一个js函数来接收tgpostmsg发出的字符串
参数说明 :
- msgfunc:字符串(一个js函数名称,该js函数有一个参数,其内容就是tgpostmsg发送的内容)
调用例子:
function OnGetTGMsg( id , str ){ alert( str ); } external.tgsetmsgfunc( "OnGetTGMsg" );
函数名称:
void tglistensocket( pageid , script )
函数说明 :
监听网页编号为pageid的socket数据,当收到或发送socket数据时,会执行参数script里面的内容,当执行external.tgsetuserbreak(true)后,就不会执行参数script里面的内容了。
参数说明 :
- pageid:整形数,要监听的网页的编号
- script:字符串,当监听到网页游戏的socket数据后,被监听的网页会执行此script内容
调用例子:
//得到左边网页的pageid var pageid=window.external.tggetleftpage(); //监听左边的网页 window.external.tglistensocket(pageid,"alert('Hello World');");s
函数名称:
void tgsendsocketdata( str )
函数说明 :
调用socket发送一段内容
参数说明 :
- str:字符串,要发送的内容,每个数据之间用";"隔开,发送的数据以十进制表示。
调用例子:
//当前网页会执行以下内容 window.external.tgsendsocketdata("1;2;3;4"); char buf[4]={0x01,0x02,0x03,0x04}; send(sock,buf,sizeof(buf),0);
函数名称:
int tggetrawsocketdata(flag,offset,size)
函数说明 :
得到监听到的socket数据。
参数说明:
- flag:整形数,1代表从监听到的接受数据中获取数据,0代表从监听到的发送数据中获取数据。
- offset:整形数,代表要得到的数据的偏移量
- size:整形数,代表要得到的数据类型,1代表得到一个byte类型的数据,4代表要得到一个int类型的数据
调用例子:
//从监听到的接受数据中得到一个偏移量为10的int类型数据 window.external.tggetrawsocketdata(1,10,4);
函数名称:
int tggetrawsocketdatalen( flag )
函数说明 :
得到一条监听数据的长度
参数说明 :
- flag:整形数,1代表得到接受数据的长度,0代表得到发送数据的长度
调用例子:
//得到监听到的发送数据的长度 var len=window.external.tggetrawsocketdatalen(0);
函数名称:
int tgdeleterawsocketdata(flag)
函数说明 :
删除一条监听数据
参数说明 :
- flag:整形数,1代表删除一条接受数据,0代表删除一条发送数据
调用例子:
//删除一条发送数据 window.external.tgdeleterawsocketdata(0);
函数名称:
void tguncompress(flag,offset,len)
函数说明 :
调用zlib库解压缩一段监听到的socket数据
参数说明 :
- flag:整形数,1代表解压接受数据,0代表解压发送数据
- offset:整形数,要解压的数据的起始位置在socket数据中的偏移量
- len:整形数,要解压的数据长度
调用例子:
//解压监听到的一条接受数据,偏移量0,长度1000 window.external.tguncompress(1,0,1000);
函数名称:
int tggetuncompressdata( offset , size )
函数说明 :
得到解压后数据
参数说明 :
- offset:整形数,偏移量
- size:整形数,1代表byte类型,4代表int类型
调用例子:
//从解压后的数据的偏移量为0处得到int类型的数据 var b1=window.external.tggetuncompressdata(0,4);
函数名称:
int tggetuncompressdatalen( )
函数说明 :
得到监听发送数据偏移offset位置的一个int数据
调用例子:
//得到解压后数据的长度 var len=window.external.tggetuncompressdatalen();
函数名称:
tggetrawsocketstr(flag,offset,len)
函数说明 :
从socket数据中得到一个字符串。
参数说明 :
- flag:整形数,1代表从接受数据中获取字符串,0代表从发送数据中获取字符串。
- offset:整形数,偏移量
- len:整形数,要得到字符串的长度
调用例子:
//得到socket数据中的一段字符串 var len=window.external.tggetrawsocketstr(1,0,100);
函数名称:
int tggetuncompressstr(offset,len)
函数说明 :
从解压数据中得到一段字符串。
参数说明 :
- offset:整形数,偏移量
- len:整形数,要得到字符串的长度
调用例子:
//得到解压后数据的字符串 var len=window.external.tggetuncompressstr(0,100);
函数名称:
String tggetpixel(x, y, type)
返回值:字符串( 返回RGB值的字符串,格式为r,g, b 例子: "255,255,255")
返回值:字符串( 返回RGB值的字符串,格式为r,g, b 例子: "255,255,255")
函数说明 :
得到网页窗口上某一点的rgb值(目前该函数只能用在网页或flash中,在3D游戏插件中无效)
参数说明 :
- x:整数型,网页窗口左上角x坐标
- y:整数型,网页窗口左上角y坐标
- type:字符串,返回哪一个分量的值,r: 返回r的值, g:返回g的值 b:返回b的值, 0:返回3个分量的值
调用例子:
//如果100,100处点的rgb值为255,254,253.则rgb="255,254,253" var rgb = external.tggetpixel(100,100,"0"); var r = external.tggetpixel(100,100,"r"); //结果:r = "255"
函数名称:
int tggetnumfromrect( rect, font, textclr )
返回值: 整形数( 返回这个数字的值)
返回值: 整形数( 返回这个数字的值)
函数说明 :
得到屏幕上某个含有数字的矩形区域中的数字的值(目前该函数只能用在网页或flash中,在3D游戏插件中无效)
参数说明 :
- rect:字符串,矩形区域的位置,相对于网页的一个相对位置,如果为空,则为整个网页的区域大小
- font:字符串,字体(所包含的数字的字体信息),如果为空,则为windows默认字体格式
- textclr:字符串,字体的颜色 rgb用字符串表示:比如"255,255,255"
调用例子:
//字体颜色 var charclr = "255,255,255"; //矩形区域 var rcfieldnum = "50,50,66,65"; //如果rcfieldnum有包含数字,并且数字的字体是windows默认的字体,那么 var num = window.external.tggetnumfromrect(rcfieldnum,"",charclr); //如果字体为非默认字体,则用户需要自行提供字体的信息来作为参数传入,具体格式为: var font = nHeight nWidth nEscapement nOrientation nWeight bItalic bUnderline cStrikeOut nCharSet nOutPrecision nClipPrecision nQuality nPitchAndFamily lpszFacename 每一项用","隔开,形成字符串传给tggetnumfromrect第二个参数 windows系统默认字体一般应为: var font = "-12, 0, 0, 0, 400, 0, 0, 0, 134, 0, 0, 0, 0, 宋体"; //一般情况下游戏中只要改变字体的nHeight参数来匹配游戏中数字的高度即可 var num = window.external.tggetnumfromrect(rcfieldnum,font,charclr); 例子:如下代码可以在神仙道中得到当前铜钱数(此段代码只提供1亿以下铜钱识别) //查找金币图标在游戏中位置 var pt = "8,7,119,95,42 | 10,13,173,148,78 | 16,13,90,65,16"; var pos = window.external.tgfindpixels(pt, ""); var lx = external.tgx(pos); var ly = external.tgy(pos); //得到数字所在矩形区域,矩形的格式为: 左上横坐标,左上纵坐标,右下横坐标,右下纵坐标 var rect = String(lx)+","+String(ly-5)+","+String(lx+60)+","+String(ly+15); //得到数字值 var num = external.tggetnumfromrect(rect,"","255,255,255"); //在rect区域内查找“万”字(在各个比划中分别取几个点并取得RGB值) var ptwan = "4,8,255,255,255 | 13,7,255,255,255 | 13,8,255,255,255 | 8,11,255,255,255 | 4,17,255,255,255 | 12,16,255,255,255"; var pos = window.external.tgfindpixels(ptwan, rect); if(pos=="none"){//没有万字,值就是num alert(num); } else{//有万字,值是num*10000 var num = num*10000; alert(num); }
函数名称:
String tgfindcharfromrect( char , rect , font , textclr, filterclr, isFullMatch
)
返回值:( 字符串返回这个字所在位置的信息 字符串格式 "x,y" )
返回值:( 字符串返回这个字所在位置的信息 字符串格式 "x,y" )
函数说明 :
在屏幕的某个矩形区域中查找某个字,并返回该字在网页中的坐标
参数说明 :
- char:字符串,要查找的字
- rect:字符串,矩形区域的位置,相对于网页的一个相对位置,为空则表示整个网页矩形区域
- font:字符串,字体(所包含的数字的字体信息),如果为空,则为windows默认字体格式
- textclr:字符串,字体的颜色 rgb用字符串表示:比如"255,255,255"
- filterclr:字符串,过滤色的颜色 rgb用字符串表示:比如"243,243,243",与字体颜色不同的一个过滤颜色,用于数字识别用
- isFullMatch:布尔值,是否执行完全匹配。默认为不完全匹配。(不完全匹配识别率比较高)
调用例子:
var str = "药"; //字体颜色 var charclr = "255,255,255"; //过滤色颜色 var filterclr = "241,242,243"; //矩形区域 var rcfieldnum = "50,50,66,65"; //字体是windows默认的字体的话 var pos = window.external. tgfindcharfromrect(str,rcfieldnum,"",charclr,filterclr,true);
函数名称:
string tgfindbmpfromrect2(string bmppath, string rect,BOOL isFilter, string fitlerclr
)
返回值:( 返回这个图片所在位置的信息 字符串格式 "x,y" 或 "null" )
返回值:( 返回这个图片所在位置的信息 字符串格式 "x,y" 或 "null" )
函数说明 :
返回在网页中找出指定图的位置
参数说明 :
- bmppath:字符串, 文件路径(文件类型只支持bmp格式)
- rect:字符串,矩形区域的位置,相对于网页的一个相对位置,为空则代表整个网页的矩形区域
- isfilter:布尔值,是否设置过滤色,如果为true,则参数filterclr有效
- filterclr:字符串,设置过滤色,设置图片中没有的颜色作为过滤色
调用例子:
//第一步:下载测试图片(http://youxi.tg1234.com/option/sxd.bmp),请放在d:盘根目录下面 //第二步:打开测试小号 // 网址:http://sxd.37wan.com/game_login.php?server=S216 // 账号:txx100 // 密码:tg654321 var bmppath = "d:\\sxd.bmp"; //图片地址 //var rect = "0,0,1024,600"; //相对于网页指定区域 var rect=""; //全个网页查找 var pos = external.tgfindbmpfromrect2(bmppath, rect, false, ""); if(pos!="null"){ var arr = pos.split(","); external.tgclick(arr[0],arr[1]); } else{ alert("没有找到") }
函数名称:
String tgfindpixels(pixelsinfo, rect)
返回值:返回指定像素点阵所在坐标,格式"x,y","error"表示格式不对,"none"表示没找到
返回值:返回指定像素点阵所在坐标,格式"x,y","error"表示格式不对,"none"表示没找到
函数说明 :
在矩形区域或整个网页窗口中查找一个子图点阵,并返回这个点阵第一点在网页窗口中的坐标。
(目前该函数只能用在网页或flash中,在3D游戏插件中无效)
(目前该函数只能用在网页或flash中,在3D游戏插件中无效)
参数说明 :
- pixelsinfo:字符串,子图中几个像素点的坐标和RGB信息, 格式 "x,y,r,g,b | x2,y2,r2,g2,b2 | ...", 多个点用 '|' 隔开,坐标不能使用负数
- rect:字符串,矩形区域的位置,以网页窗口左上角为起点的矩形,为空则代表整个网页窗口区域
调用例子:
//神仙道查找药园的"药"字 var ptyao = "7,5,0,255,0 | 17,5,0,255,0 | 10,4,0,255,0 | 14,4,0,255,0 | 8,9,0,255,0 | 17,9,0,255,0 | 10,13,0,255,0 | 15,14,0,255,0"; //如果在整个网页范围内查找,则第二个参数置为""即可 var pos = window.external.tgfindpixels(ptyao, ""); //如果要在某个矩形区域内查找,则第二个参数输入一个矩形区域的坐标字符串, //矩形的格式为: 左上横坐标,左上纵坐标,右下横坐标,右下纵坐标,例如: // var lx = 150; // var ly = 50; //设置矩形区域 // var rect = String(lx)+","+String(ly-5)+","+String(lx+60)+","+String(ly+15); //得到rect为"150,45,210,65" // var pos = window.external.tgfindpixels(ptyao, rect); //也可以直接输入坐标字符串,例如: // var pos = window.external.tgfindpixels(ptyao, "150,45,210,65"); if(pos=="none"){//没有"药"字 alert("没找到"); } else{ external.tgclick( external.tgx(pos), external.tgy(pos) ); } 这个函数用于定位游戏中的图标或者固定文字,方法是截一小块图片到画图软件中,放大后取小图中的几个特征点(一般3个点即可定位),调用本函数即可找出该图标或文字的位置。
函数名称:
int tgx( strPos )
返回值:整形数,返回坐标字符串的横坐标值,例如:strPos="200,199",即返回200
返回值:整形数,返回坐标字符串的横坐标值,例如:strPos="200,199",即返回200
函数说明 :
根据坐标的字符串,返回坐标字符串的横坐标值
参数说明 :
- strPos:字符串,坐标字符串
调用例子:
var pos = external.tggetpagesize(); var intX = external.tgx(pos); var intY = external.tgy(pos); var rgb = external.tggetpixel(intX,intY,"0"); //可以简化成:var rgb = external.tggetpixel( external.tgx(pos), external.tgy(pos), "0" );
函数名称:
int tgy( strPos )
返回值:整形数,返回坐标字符串的纵坐标值,例如:strPos="200,199",即返回199
返回值:整形数,返回坐标字符串的纵坐标值,例如:strPos="200,199",即返回199
函数说明 :
根据坐标的字符串,返回坐标字符串的纵坐标值
参数说明 :
- strPos:字符串,坐标字符串
调用例子:
var pos = external.tggetpagesize(); var intX = external.tgx(pos); var intY = external.tgy(pos); var rgb = external.tggetpixel(intX,intY,"0"); //可以简化成:var rgb = external.tggetpixel( external.tgx(pos), external.tgy(pos), "0" );
如何抓点(取像素点颜色)
网页抓点有两种方法,在糖果游戏浏览器的状态栏中打开超级记事本
法1. 点击记事本上的网页抓点按钮
法2. 在记事本中输入external.tgshowcursor(1); 然后点击记事本中的“运行脚本”
然后移动鼠标看看,在状态栏左侧是不是可以看到鼠标的位置和RGB值了呢
如何在游戏中定位
一. 得到某一个区域中包含的数字的值
1.打开浏览器的超级记事本,执行脚本external.tgshowcursor(1); 这个函数可以让浏览器显示鼠标坐标和鼠标所在点的RGB值。
2.将鼠标移到所要获取的数字区域的左上角,并留出一些余量,然后在浏览器的状态栏中查看坐标
左上侧起始点坐标
然后将鼠标移到右下侧箭头,作为终止点,浏览器的状态栏中查看坐标:
右下侧起终止点坐标
3.用截图工具截取红色矩形框区域,并用画图工具打开,用取色工具取到数字字体的颜色,本例中数字颜色的RGB为255,255,255
4.获取数字的字体信息,本例中687字体为系统默认字体,因此调用
var font = "-12, 0, 0, 0, 400, 0, 0, 0, 134, 0, 0, 0, 0, 宋体";//如本例,大部分游戏中字体可能大小会有区别,
可以调整第一个参数"-12",代表字体的大小,绝对值越大代表字体越大,-13比-12字要大一号,例如:
var font = "-13, 0, 0, 0, 400, 0, 0, 0, 134, 0, 0, 0, 0, 宋体";
var num = external.tggetnumfromrect("185,44,208,58",font, "255,255,255");
PS:字体的第一个参数可以这样测算:
上下两条红线之间的像素差即为字体的高度,例如标准字体像素差为12,则font第一个参数为-12
二.点集合法找图或文字
当要寻找的图比较大时:
1.同样先在记事本中执行脚本external.tgshowcursor(1);
2.将鼠标移动到查找的图片上任意位置,然后查看状态栏左侧的鼠标坐标和RGB值,并记录下来。
例如在坐标12,28位置的RGB值为2,1,1,则记录"12,28,2,1,1"
3.以同样的方法再在图片比较代表性位置取2到3个点的坐标和RGB值
4.调用tgfindpixels,假如第三步又取了95,80,204,255,255 和 107,70,51,51,51两个点信息,则每个点信息用“|”隔开:
var pixelsinfo = "12,28,2,1,1 | 95,80,204,255,255 | 107,70,51,51,51";
var pos = external.tgfindpixels(pixelsinfo,"");//第二个参数为空代表在整个屏幕中查找该图片。pos即为该图片在网页中的位置
PS:实际返回的是所截取的第一个点在网页中的位置
当要找的图片很小不方便直接取点时:
1.用截图工具截取想要查找的图片区域,并用画图工具打开,例如
2.选择
取色工具,在图标上比较有代表性的位置取几个点
3.左键点击一下鼠标,并记录画图工具右下角的坐标
4.打开颜色à编辑颜色à规定自定义颜色,最右侧的rgb值即为该点的rgb值。
5.记录取到的坐标和RGB值,本例为:"12,28,2,1,1",以此方法再取2到3个点,并记录坐标和RGB值,
仿上一条步骤4,调用tgfindpixels即可获得该图片在网页中的位置了
函数名称:
void tgwait( time )
函数说明 :
脚本在此处暂停直到指定时间到了才会继续执行
参数说明 :
- time:时间,单位ms
调用例子:
//等待1s后js再继续运行 window.external.tgwait(1000);
函数名称:
void tgwait2( time )
函数说明 :
脚本在此处暂停直到指定时间到了才会继续执行
参数说明 :
- time:字符串,时间 (格式:hh:mm:ss 24小时制)
调用例子:
//等到15点35分20秒再继续运行 window.external.tgwait2("15:35:20");
函数名称:
int tggetleftpage()
返回值:整形数:返回左屏当前显示的网页的网页编号
返回值:整形数:返回左屏当前显示的网页的网页编号
函数说明 :
双屏时获得左屏当前显示的网页的网页编号
调用例子:
//得到双屏时获得左屏当前显示的网页的网页编号 var leftpageid = window.external.tggetleftpage();
函数名称:
int tggetrightpage()
返回值:整形数:获得右屏当前显示的网页的网页编号
返回值:整形数:获得右屏当前显示的网页的网页编号
函数说明 :
双屏时获得右屏当前显示的网页的网页编号
参数说明 :
- offset:整形数,偏移量
调用例子:
//得到双屏时获得右屏当前显示的网页的网页编号 var rightpageid = window.external.tggetrightpage();
函数名称:
void tgrunscript( pageid, jscontent)
函数说明 :
在编号为pageid的网页中执行javascript,jscontent为要执行的javascript脚本
参数说明 :
- pageid:整形数,要执行js脚本的网页的编号(pageid)
- jscontent:字符串,要执行的js脚本内容
调用例子:
var leftpageid = window.external.tggetleftpage(); var js = "alert('nihao');"; window.external.tgrunscript(leftpageid, js);
函数名称:
String tggetpagesize()
返回值:字符串
返回值:字符串
函数说明 :
返回网页窗口长和宽像素值,格式为字符串"x,y",例如:"1000,560"
调用例子:
var pos = external.tggetpagesize(); //在网页窗口的中间点击 external.tgclick( external.tgx(pos)/2, external.tgy(pos)/2 );
函数名称:
int tangover()
返回值:整型数
返回值:整型数
函数说明 :
返回当前浏览器的版本号,例如:"2100030"
调用例子:
var version = external.tangover();
函数名称:
int tguserbreak()
返回值:整型数
返回值:整型数
函数说明 :
设置中断标志,当点击超级记事本的中断脚本时,该函数将返回1,否则返回0
调用例子:
for(var i=0; i<10; i++) { if(external.tguserbreak())//点击“中断脚本”时,该函数返回1,退出循环 break; alert("还在循环中"); external.tgwait(5000); } alert("循环结束了!");
函数名称:
void tgsetuserbreak(int userbreak)
函数说明 :
手动设置中断条件,当传入的userbreak为1时,external.tguserbreak()返回1
参数说明 :
- userbreak:整形数,设置是否执行中断,1是执行,0是不执行
调用例子:
window.external.tgsetuserbreak(1);//参数为1时,external.tguserbreak()将返回1 for(var i=0; i<10; i++) { if(external.tguserbreak()) break; alert("循环中..."); } alert("循环结束");
函数名称:
int tgopenpage( url, username, pwd)
返回值:整形数,返回新打开的网页的pageid
返回值:整形数,返回新打开的网页的pageid
函数说明 :
打开网址为url的网页,并根据username和pwd来实现自动登陆
参数说明 :
- url:字符串,要打开的网页的网址
- username:字符串,要填表的用户名
- pwd:字符串,要填表的密码(可以为空,如果为空则从我的游戏小号列表中获取相应的密码)
调用例子:
var pageid = external.tgopenpage("http://www.6711.com/game_login.html?game=aszt&server=S84","zhaigame001","12345"); //如果我的游戏中的小号列表中有该url和用户名的小号,则密码可以设为空值,例如 var pageid = external.tgopenpage("http://www.6711.com/game_login.html?game=aszt&server=S84","zhaigame001","");
函数名称:
void tgclosepage( pageid )
函数说明 :
关闭编号为pageid的网页
参数说明 :
- pageid:整型数,要关闭的网页的pageid
调用例子:
var pageid = external.tgopenpage("http://www.6711.com/game_login.html?game=aszt&server=S84","zhaigame001","12345"); external.tgwait(10000);//等待10秒,根据网速情况有可能网页会没有完全打开,等待一会 external.tgclosepage(pageid);
函数名称:
void tgrefreshpage( pageid )
函数说明 :
刷新编号为pageid的网页
参数说明 :
- pageid:整型数,要刷新的网页的pageid
调用例子:
var pageid = external.tgopenpage("http://www.6711.com/game_login.html?game=aszt&server=S84","zhaigame001","12345"); external.tgwait(10000);//等待10秒,根据网速情况有可能网页会没有完全打开,等待一会 external.tgrefreshpage(pageid);
函数名称:
void tgsetcurpage( pageid )
函数说明 :
切换编号为pageid的网页到前台
参数说明 :
- pageid:整型数,要切换到前台的网页的pageid
调用例子:
var pageid = external.tgopenpage("http://www.6711.com/game_login.html?game=aszt&server=S84","zhaigame001","12345"); external.tgwait(10000);//等待10秒,根据网速情况有可能网页会没有完全打开,等待一会 external.tgsetcurpage(pageid);
函数名称:
int tggetcurpage()
返回值:整型数
返回值:整型数
函数说明 :
返回当前在前台的网页的pageid
调用例子:
var pageid = external.tggetcurpage(); var m_speed = external.tggetspeed(pageid);//得到当前网页的加速倍数
函数名称:
void tgsetspeed( pageid, speedrate )
函数说明 :
设置编号为pageid的网页的加速倍数
参数说明 :
- pageid:整型数,要设置加速倍数的网页的pageid
- speedrate:浮点数,要设置的加速倍数
调用例子:
var pageid = external.tggetcurpage(); var m_speed = external.tgsetspeed(pageid, 5.0);//设置当前网页的加速倍数为5.0倍
函数名称:
double tggetspeed()
返回值:浮点数
返回值:浮点数
函数说明 :
返回当前网页的加速倍数
调用例子:
var pageid = external.tggetcurpage(); var m_speed = external.tggetspeed(pageid);//得到当前网页的加速倍数
函数名称:
void tgprintmsg( strmsg )
函数说明 :
在浏览器状态栏里打印信息
参数说明 :
- strmsg:字符串,要打印的字符串
调用例子:
external.tgprintmsg("调试信息");
函数名称:
string tggetloginname()
函数说明 :
获取当前网页中的小号账号(注:0058以上版本支持)
调用例子:
var name = external.tggetloginname(); alert(name);
函数名称:
void tgsetbrowser(int state)
函数说明 :
设置浏览器还原或最小化(注:0058以上版本支持)
调用例子:
external.tgsetbrowser(1); //还原 external.tgsetbrowser(0); //最小化
函数名称:
void tgsetsize( int w,int h )
函数说明 :
设置浏览器宽度和高度(注:0058以上版本支持)
参数说明 :
- w:宽度
- h:高度
调用例子:
external.tgsetsize( 1200 , 800 ); //把浏览器设置成1200x800
函数名称:
string tggetsize()
返回值:字符串(格式:宽度|高度)
返回值:字符串(格式:宽度|高度)
函数说明 :
返回当前浏览器的宽度和高度(如果浏览器隐藏的话,获取为0|0)(注:0058以上版本支持)
调用例子:
var str = external.tggetsize; var arr = str.split("|"); var w = arr[0]; var h = arr[1]; alert("宽:"+w+",高:"+h);
函数名称:
void tgplayrecord( filename , playnum , interval)
函数说明 :
回放指定录制的键鼠录播(注:0058以上版本支持)
参数说明 :
- filename:字符串,要播放的键鼠录播文件名称
- playnum:整型,回放次数
- interval:整型,回放间隔(毫秒单位)
调用例子:
external.tgplayrecord("糖果录播_1",10,0); //回放“糖果录播_2”录制的键鼠录播,回放10次,回放间隔0毫秒
函数名称:
void tgplayrecord2( filename , playnum , interval)
函数说明 :
回放指定录制的键鼠录播(注:0066以上版本支持),隐藏键鼠录播窗口
参数说明 :
- filename:字符串,要播放的键鼠录播文件名称
- playnum:整型,回放次数
- interval:整型,回放间隔(毫秒单位)
调用例子:
external.tgplayrecord2("糖果录播_1",10,0); //回放“糖果录播_2”录制的键鼠录播,回放10次,回放间隔0毫秒
函数名称:
void tgrunjsfile( pageid,filename)
函数说明 :
在指定的网页(pageid)执行文件(路径:filename)的脚本
参数说明 :
- pageid:整型,网页编号(注:pageid=0,表明在当前执行)
- filename:字符串,文件所在位置(如d:/1.js)
调用例子:
external.tgrunjsfile(0,"d:\\1.js"); //在当前页执行文件(d:\\1.js)中的脚本信息 external.tgrunjsfile(103,"d:\\1.js"); //在网页(编号:103)执行文件(d:\\1.js)中的脚本信息
函数名称:
doc tggetiframedoc( win )
函数说明 :
获取指定win下的document信息(专门为了解决跨域问题)
参数说明 :
- win:iframe 的window对象
调用例子:
var win = window; for (var i = 0; i < win.frames.length; i++) { iframe = win.frames[i]; //可以获取跨域后document信息 doc = external.tggetiframedoc(iframe); }
函数名称:
string tggetallpageid()
函数说明 :
返回已经打开的网页的pageid(注:0061以上版本支持)
调用例子:
var pagaeids = external.tggetallpageid(); var arr = pagaeids.split(','); for(var i = 0 ; i < arr.length ; i++ ) alert( arr[i] );
函数名称:
void tgwritelog(filepath,str)
函数说明 :
向指定的文件写日志信息(注:0061以上版本支持)
参数说明 :
- filepath:文件名信息
- str:要写入的文本信息
调用例子:
//向d:\\1.txt 写入一行字符"123" external.tgwritelog("d:\\1.txt","123");
函数名称:
void tgflashinputstr(string str,int x,int y,int type)
函数说明 :
在flash的指定输入框中输入文字(支持中文)(注:0062以上版本支持)
参数说明 :
- str:要输入的信息
- x:相对于flash窗口的X坐标【请注意】
- y:相对于flash窗口的Y坐标【请注意】
- type:0:后台发送方式,1:前台发送【只有在后台发送无效的情况下使用这个】
调用例子:
//第一步:打开测试小号 // 网址:http://sxd.37wan.com/game_login.php?server=S216 // 账号:txx100 // 密码:tg654321 //这个从在下面的聊天窗口(相对于flash窗口的位置)中显示“糖果游戏浏览器” external.tgflashinputstr("糖果游戏浏览器",55,537,0);
函数名称:
string tgreadinifile(filename,group,key);
函数说明 :
返回指定文件指定配置信息 如果这个值不存在,返回"null"
参数说明 :
- filename::指定的文件名
- group:组名信息
- key:键名称
调用例子:
/* ini文件格式说明 [group] [key1]=[value1] [key2]=[value2] */ //读取D:\1.ini文件中[sec1]下面的key的值 external.tgreadinifile("d:\\1.ini","sec1","key")
函数名称:
void tgwriteinifile(filename,group,key,value);;
函数说明 :
向指定文件写入组下面的键值信息
参数说明 :
- filename::指定的文件名
- group:组名信息
- key:键名称
- value:值
调用例子:
/* ini文件格式说明 [group] [key1]=[value1] [key2]=[value2] */ //向指定文件(d:\\1.txt)写入组下面的键值信息 external.tgwriteinifile("c:\\1.txt","sec1","key","value"); //读取指定文件(d:\\1.txt)的键值 alert( external.tgreadinifile("d:\\1.txt","sec1","key") ); //下面因为文件中不存在该键值信息返回字符串”null” alert( external.tgreadinifile("d:\\1.txt","sec2","key") );
函数名称:
void tgrunjsfileEx(int pageid,string filename,string callbackfunc,string param)
函数说明 :
执行一段代码完毕后调用指定回调函数
参数说明 :
- pageid::网页编号(如果是当前页的话,设为0即可)
- filename:指定的脚本文件
- callbackfunc:指定的回调函数名称(函数原型:function callbackfunc(pageid,param){})
- param:回调函数的函数名
调用例子:
//第一步:在D盘新建一个1.js 里面写一段小的测试程序 alert("我是文件里面的弹出信息"); //第二步:在超级记事本里面运行以下脚本 external.tgrunjsfileEx(0,"d:\\1.js","jscallback","value"); //指定的回调函数 function jscallback(pageid,param){ alert("回调函数被调用,其中参数:("+pageid+","+param+")"); } /* 运行结果:会弹出依次弹出”我是文件里面的弹出信息”,和”"回调函数被调用...”的对话框 */
函数名称:
void tginclude(int pageid,string filename)
函数说明 :
在指定的网页中包含指定的脚本文件(一般公用函数js函数)
参数说明 :
- pageid::网页编号(如果是当前页的话,设为0即可)
- filename:指定的脚本文件
调用例子:
//第一步:先在D盘新建一个2.js里面写一段小的测试程序 //可以将一些公用的函数封装到公用的文件里 function test(){ alert("调用test函数"); } //第二步在超级记事本里面运行以下脚本 external.tginclude(0,"d:\\2.js"); test(); //运行结果:会弹出依次弹出”调用test函数”的对话框
前 言
从电脑游戏诞生的那一刻起,游戏辅助就随之而生。游戏辅助能帮助玩家在游戏过程中实现个性化和人性化的游戏操作,减少容易引起疲劳的机械化操作,在不触犯游戏版权的前提下,增加玩家的游戏乐趣。
良性游戏辅助(即能减轻玩家疲劳而又不破坏游戏平衡性)的存在,说明游戏在人性化上存在某种不足,游戏辅助正好改善了这种不足,增加了游戏的乐趣,对游戏本身是有正面意义的,有很多游戏开发商,正好是根据辅助的功能,改进了游戏,例如在《神仙道》上就有很多这种案例。
糖果游戏辅助开发接口是为了简化游戏辅助的开发而出现的,开发者只要有javascript知识,就能写出很好用的游戏辅助。
糖果游戏浏览器希望通过丰富游戏辅助,改善网页游戏的人性化,让玩家能更轻松的玩游戏。
(本接口适用于糖果游戏浏览器0041以上版本)
联系我们
如在开发中遇到问题,请用如下方法提交:
论坛:http://bbs.tangobrowser.net/showforum-45.html
邮箱:tg600@126.com
QQ群:199366730
官网:http://youxi.tg1234.com
论坛:http://bbs.tangobrowser.net/showforum-45.html
邮箱:tg600@126.com
QQ群:199366730
官网:http://youxi.tg1234.com
我们的优势
糖果游戏辅助开发接口是一个js扩展函数集合,开发出来的游戏辅助是以网页形式提交给用户,这个模式有如下优点:
* 界面设计更容易,网页的展现形式更丰富;
* 更容易发布,无需下载,发布网页用户不担心木马病毒;
* 更重要的,更容易升级,因为游戏经常升级,所以辅助也是经常需要升级的;
* 网页工具更容易放广告,给开发者带来收入;
在js扩展函数中,我们提供了一些常用的分析方法,比你独自开发要简单得多。 最后涉及到js代码的加密问题,百度下"js加密",目前js加密方案还是很多的。
如何发布自己的辅助
一.直接发布代码
你可以把代码发到论坛上,大家共同学习,共同改进。
其他玩家将代码复制到糖果游戏浏览器的超级记事本中,即可使用。
二.做成网页工具发布
游戏辅助开发完成后要发布到网站上去,目前有很多个人网站空间http://www.ucoz.com
国内:http://www.zhujiwu.com (速度快,稳定)
国外:http://www.ucoz.com (速度稍慢,但稳定)
还要记得设置网页的更新时间,以免用户每次打开都要下载
如何把辅助工具添加到糖果游戏浏览器上呢?
这儿有一个案例:http://yx.ucoz.com/sxdhelp.html
假设你的工具url是 http://www.myweb.com/mytool.html,再加上两个参数就可以添加到糖果游戏浏览器上:
www.myweb.com/mytool.html?pop=2?name=XXXXXX
pop 表示弹出方式:
0: 表示弹出小窗口
1: 表示以网页形式打开
2: 在右屏打开
name 表示加到糖果游戏浏览器右侧栏时显示的名字,汉字要用UTF8格式
pop 表示弹出方式:
0: 表示弹出小窗口
1: 表示以网页形式打开
2: 在右屏打开
name 表示加到糖果游戏浏览器右侧栏时显示的名字,汉字要用UTF8格式
如果你的辅助是良性辅助(即不破坏游戏平衡性),我们有可能将它添加到内置辅助中。
糖果游戏浏览器使用技巧
1 按住Ctrl+Shift+X, 截图并用画图打开,用于查看图形点阵
注意不能使用网页截图功能查看点阵及坐标,网页截图时改变了网页窗口大小,导致点阵及坐标都变了
注意不能使用网页截图功能查看点阵及坐标,网页截图时改变了网页窗口大小,导致点阵及坐标都变了
2 点击状态栏上的“超级记事本”,可以在超级记事本中执行js脚本(右侧第2按钮为执行);
3 查看像素坐标:在超级记事本中运行语句
external.tgshowcursor(1);这样鼠标在游戏中移动时,状态栏即可显示坐标;
第一个脚本:
//实现一个在网页的中心位置点击一下鼠标 alert("第一个脚本!"); //弹出一个“第一个脚本!”的对话框 var pos = external.tggetpagesize(); //得到网页的横纵坐标 alert(pos); //查看坐标值 var x = external.tgx(pos); //分别取得横竖坐标的值 var y = external.tgy(pos); external.tgclick(x/2,y/2); //在网页的中心处点击鼠标一次
进入一个网页游戏,点击状态栏上的“超级记事本”,将代码复制到超级记事本中,然后点击 执行js脚本,看看是否有效果
声明变量:
1.声明一个字符串并赋值:
var firstname = "George";
2.声明一个整型数并赋值:
var a = 5;
3.声明一个布尔变量b
var b = false;
逻辑控制语句:
PS: 首先请了解下"=="这个符号,这个符号用来判断左右两边是否相等
1. if...:
if( 条件1 ) { //代码a... } //条件1满足,执行代码a
当有多个条件时
a. "&&" 与操作符
if(条件1 && 条件2) { //代码a... } //条件1和条件2都满足会执行代码a
b. "||" 或操作符
if(条件1 || 条件2) { //代码a... } //条件1和条件2有一个满足就会执行代码a
c. "!" 非操作符
if( !条件1 ) { //代码a... } //条件1不满足就会执行代码a
2. if...else
if(条件1) { //代码a... } else { //代码b } //条件1满足会执行代码a,否则执行代码b
3. if...else if...else
if(条件1) { //代码a } else if(条件2) { //代码b } else { //代码c } //条件1满足就执行代码a, 条件2满足就执行代码b,否则执行代码c
例子:
var firstname = "George"; if( firstname == "James") { alert("Hello,James"); } else if( firstname == "Tom") { alert("Hello,Tom"); } else if( firstname == "George") { alert("Hello,George"); } else { alert("没有这个人"); }
循环控制语句:
while循环
/* while(判断条件) { //循环代码a } */ //如果判断条件成立,则将循环执行代码a,知道判断条件不满足,则循环结束 //例如: var i = 0; while(i < 10) { i=i+1; }
for循环
/* for(初始条件; 判断条件; 循环后动作) { //循环代码a } */ //如果判断条件成立,则执行循环代码a,然后执行循环后动作,然后再看判断条件是否成立,以此循环 //例子: for(var i=0; i<10; i++) { alert(i); }
break
/* break可以让循环中途停止,直接执行后面的代码 例子: while(i<10) { if(特殊情况) break; //循环代码a } alert("循环终于结束了"); 当特殊情况发生的时候,循环会立即结束,执行alert语句 */ //例子: var i=0; for(i=0; i<=10; i++) { if(i==6) { break;//如果i是6的话就退出循环 } }
continue
/* continue的作用是仅仅跳过本次循环,而整个循环体继续执行,格式如下: while(判断条件) { if(特殊情况) { continue; } 循环代码 } 当特殊情况发生的时候,本次循环将被跳过,而后续循环则不会受到影响 */ //例如: var i=0; for(i=0; i<=10; i++) { if(i==3) { continue;//i为3的时候循环被跳过,即alert不会被执行 } alert(i); }
函数:
函数是完成特定功能的一段代码,把一段完成特定功能的代码块放到一个函数里,以后就可以调用这个函数了,省去了重复输入大量代码的麻烦
1.定义一个函数
/* function 函数名(参数1,参数2,参数....) { 函数代码; } */ //例如: function add2(x1,x2) { var sum = x1+x2; alert(sum); } //在其他地方调用add2就可以计算出两个数的和
2.函数调用
将上面定义的add2里面的alert(sum);换成return sum;则得到带返回值的函数
例如:
var result = add2(5,6); //将返回值存储在变量result里 alert(result); //弹出11的对话框