|
应该可以。这需要你首先对LR有所了解。录制游戏时通常使用windows sockets协议。
首先,录制一个登录脚本。如果没有加密,就简单很多。录制后要查看并了解通讯包内容(可能请教程序),找出登录参数,比如角色ID。
然后,你需要做的就是修改脚本,将角色ID参数化,比如角色ID为\x11\x00\x00\x00,只需将其替换为参数即可(比如<GamerID>)。如果该ID是需要从接收包中获取的,可以从包中截取出来做参数化。下面几个函数比较常用:lrs_save_param()用来获取包中某位置的字段(详细查看LR的帮助);lr_save_string()用来将变量保存入参数;lr_eval_string()取出参数值;
一个例子:
lrs_save_param ("socket0","buf4","GamerID",16,4);//截取buf4(一个数据包)中的字段(从第16开始截取4个字符),保存到GamerID
lr_output_message ("GamerID值为:%s",lr_eval_string ("<GamerID>"));//打印出该参数值,用来查看是否正确。
如果参数是加密传送的,可以使用外部的dll对参数加密,这个库文件(dll文件)有游戏对参数进行加密的接口,可以向程序求教或索要。
一个例子:动态链接库(dll)的局部调用
一个参数<GamerID>将其加密,先配置好参数。然后使用前将其加密。
char *str1;
char *str2;
str1=lr_eval_string ("<GamerID>");//取出GName值赋给str1
lr_load_dll("encode.dll");// 加载动态连接库,encode.dll是一个加密库的文件全名。
str2=(char*)encodeGID(str1);//调用库文件里面的接口函数,对str1进行加密。
lr_save_string (str2,"GamerID");//将str2的值,存入参数GamerID。
lr_output_message ("GamerID值为:%s",lr_eval_string ("<GamerID>"));//打印出该参数值,查看是否正确。
解密的方式与其类似。
配置好参数后,运行脚本,基本的登录一类的操作应该可以实现。由于游戏中收发包内容大都变化较大,做起脚本来比较困难,我目前也是处于探索阶段,希望大大们指点,大家一起多多尝试,多多交流。 |
|