生活随笔
收集整理的這篇文章主要介紹了
梦醒暗黑廿年(补)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、仔細翻了下d2hackmap的代碼,發現怪物是否死亡其實是有標志位的:
BYTE __fastcall
MissileBlobCol(UnitAny
*pMissile
){if ( tAutomapMissiles
.isOn
&& !(pMissile
->dwFlags1
&0x00010000)) {...
注釋上寫得很清楚,非死亡的,UnitAny結構中dwFlags1的偏移是0xC4
那么改下IsNpcLive中關于NPC的判斷
else if(NpcType
==1){return !(*(ULONG
*)(Addr
+0xC4) & 0x00010000);}
2、關于當前玩家的地址,游戲都會有個當前玩家,結構上和其它玩家是一致的,但為了便于操作,會有個基址專門存放當前玩家的地址。
直接用NPC遍歷找到所有NPC和玩家的地址,然后用CE找當前玩家的地址,看保存在哪個基址中就OK了。
3、關于發包,發包函數也在d2hackmap中找吧(感覺d2hackmap是個大寶庫啊):
void __fastcall
AutoBackToTown(BYTE
*aPacket
)
{if( aPacket
[0]==0x60 && aPacket
[1] == 0x00 ) {if ( fBackToTown
&& tNoBackToTown
.isOn
== 0 ){fBackToTown
= FALSE
;BYTE castMove
[9] = {0x13};*(DWORD
*)&castMove
[1] = 2;*(DWORD
*)&castMove
[5] = *(DWORD
*)&aPacket
[3]; D2SendPacket(sizeof(castMove
), 0, castMove
);}if( nTownportalAlertNums
!= (DWORD
)-1 ){DWORD srollcount
= CalSrollOfTownportal();if ( srollcount
<= nTownportalAlertNums
){wchar_t temp
[512];wsprintfW(temp
, L
"<Hackmap>: Warning !! Only %d Townportals Left ", srollcount
);D2ShowGameMessage(temp
, 8);}}}
}
自動回城的處理中有D2SendPacket,發包的包頭是0x13,直接在d2hackmap模塊中搜索常量0x13,把匯編和源代碼對比下就很容易找到發包函數了。
總結
以上是生活随笔為你收集整理的梦醒暗黑廿年(补)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。