能力值:
(RANK:1130 )
|
-
-
2 楼
学习 一下
|
能力值:
(RANK:350 )
|
-
-
3 楼
感谢楼主分享
但这个只是针对dota的吗?其他地图是否适用?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
学习哈!怎么后面的代码没了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
不错,,学习中。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
这个,怎么做到?
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
不止是DOTA,其他地图都可以,这个只是伪代码,要实际能用还要考虑很多。。
VS跟HF都是HOOK这里来判断游戏里面的一些信息的。当然,统计游戏信息可以有两种方法:一种是实时的,一种是游戏打完了。
1,要做到实时,比如我要统计每个人的杀人数和死亡数,就要HOOK这个函数,比较字符串“XXX杀死了YYY”。
2,游戏打完再统计也有两种方法
A,游戏完了会有游戏每个玩家的信息显示,也可以HOOK里面的函数来判断。。
B,通过replay来统计各种信息,我Google到一个很NB的,用来解析War3Replay的库,就叫 War3RepLib
War3RepLib.rar
|
能力值:
( LV13,RANK:280 )
|
-
-
8 楼
[QUOTE=exile;622264]/*************************************************************
作者:MentalDease
地址: http://hi.baidu.com/堕落的神曲
时间:2009-5-12
******************************...[/QUOTE]
是gkend那个XXX吧
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
[QUOTE='火翼[CCG];622601']是gkend那个XXX吧[/QUOTE]
是那个xxx
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
学习。。谢谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
期待整个系列
|
能力值:
( LV3,RANK:20 )
|
-
-
12 楼
看不着了
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
来晚了啊啊啊啊啊啊啊
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
还好来的不算晚,google cache还没过期,看到了,呵呵。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
//伪代码,要用自己去改
//storm.dll
////////////////////////////////////////////////////////////////////////////////////////////////////
//1503AE83 E8 58FDABED call GameStat.02AFABE0 // hook Storm #501号函数,Storm.dll库的详细函数列表请看
// code.google.com/p/vgce/wiki/stormDLL
//GameStatDota.dll( modulebase:0x2af0000, size:0x1a000)
void GameStatDota_02afabe0(str) //比较游戏中的一些字符串,获得游戏结果等等
{
if(!IsBadReadPtr(str))
Func_2af9980(str); //跟据字符串内容做出动作
}
char * mystrstr(char * str1, char * str2, int len)
{
int i = strlen(str1);
for( int j=0; j< i - len; j++)
{
if(memcmp(str1+j, str2, len) == 0)
return str1+j;
}
return NULL;
}
Func_2af9980(str) //判断内容,做出动作
//只要在游戏中显示出来的字符串,都可以在这里面弄到,然后做一些分析
//比如统计杀人次数,死亡次数,金钱,等级。。。等等
{
install_seh(); //?
if(mystrstr(str, utf-8(":|r"), 4) != 0) // 0x3A, 0x20, 0x7C, 0x72
//不知道做啥的,=我再研究下
if(mystrstr(str, utf-8("等待其他玩家中"), 0x15) != 0)
GetTickCount();
if(mystrstr(str, asc("0:"), 2) != 0)
GetTickCount();
//上面两个if不知道在干啥。。。不管了
if(mystrstr(str, utf-8("获得了胜利"), 0xF) != 0 ||
mystrstr(str, utf-8("取得了胜利"), 0xF) != 0) //中文
{
if(mystrstr(str, utf-8("近卫军团"), 0xC) != 0)
function_2af9540(0); //近卫军团取得胜利, 报告结果
else if(mystrstr(str, utf-8("天灾军团"), 0xC) != 0)
function_2af9540(1); //天灾军团取得胜利, 报告结果
}
if(mystrstr(str, asc("has won!"), 8)!=0) //英文
{
if(mystrstr(str, asc("The Sentinel"), 0xC) !=0 )
function_2af9540(0); //近卫军团取得胜利, 报告结果
else if(mystrstr(str, asc("The Scourge"), 0xB) !=0 )
function_2af9540(1); //天灾军团取得胜利, 报告结果
}
if(mystrstr(str, utf-8("刚刚杀死了")) != 0) //XXX刚刚杀死了YYY得到ZZZ黄金
{
if(mystrstr(str, asc("|c"), 2) !=0)
if(mystrstr(str, asc("|r"), 2) !=0)
if(mystrstr(str, utf-8("得到"), 6) != 0)
if(mystrstr(str, utf-8("黄金"), 6) !=0)
//.......
}
//......
}
还不算晚。
|
能力值:
( LV4,RANK:50 )
|
-
-
16 楼
ls的最好删掉
|