├── README.md ├── d2 project Andy ├── Project 1.3.zip ├── Project 2.0.zip ├── Project Source │ ├── Aim.cpp │ ├── Aim.h │ ├── Array Ex.h │ ├── Common Math.cpp │ ├── Common Math.h │ ├── Configuration.cpp │ ├── Configuration.h │ ├── Constants.h │ ├── Copy and Paste.cpp │ ├── Copy and Paste.h │ ├── D2 Pointers.h │ ├── D2 Stdio.cpp │ ├── D2 Stdio.h │ ├── D2 Structs.h │ ├── D2 Stubs.cpp │ ├── D2 Stubs.h │ ├── Design.cpp │ ├── Design.h │ ├── Enchant.cpp │ ├── Enchant.h │ ├── Escape.cpp │ ├── Escape.h │ ├── Game Filter.cpp │ ├── Game Filter.h │ ├── Hack.cpp │ ├── Hack.h │ ├── Hack.suo │ ├── Handlers.cpp │ ├── Handlers.h │ ├── Helpers.cpp │ ├── Helpers.h │ ├── Item.cpp │ ├── Item.h │ ├── Matrix.h │ ├── Message.cpp │ ├── Message.h │ ├── Miscellaneous.cpp │ ├── Miscellaneous.h │ ├── Offset.cpp │ ├── Offset.h │ ├── Packet Received.cpp │ ├── Packet Received.h │ ├── Packet Sent.cpp │ ├── Packet Sent.h │ ├── Patch Stubs.cpp │ ├── Patch Stubs.h │ ├── Patch.h │ ├── Potion.cpp │ ├── Potion.h │ ├── Project.cbp │ ├── Project.layout │ ├── Project.ncb │ ├── Project.sln │ ├── Project.suo │ ├── Project.vcproj │ ├── Project.vcproj.PC.Boozled.user │ ├── Release │ │ ├── Aim.obj │ │ ├── Automatically Close Errors.exe │ │ ├── BuildLog.htm │ │ ├── Common Math.obj │ │ ├── Configuration.obj │ │ ├── Copy and Paste.obj │ │ ├── D2 Stdio.obj │ │ ├── D2 Stubs.obj │ │ ├── Design.obj │ │ ├── Enchant.obj │ │ ├── Escape.obj │ │ ├── Font Colors.txt │ │ ├── Game Filter.obj │ │ ├── Hack.obj │ │ ├── Handlers.obj │ │ ├── Helpers.obj │ │ ├── In-Game Commands.txt │ │ ├── Item.obj │ │ ├── Key List.txt │ │ ├── Kill Log.txt │ │ ├── Message.obj │ │ ├── Messages.txt │ │ ├── Miscellaneous.obj │ │ ├── Offset.obj │ │ ├── Packet Received.obj │ │ ├── Packet Sent.obj │ │ ├── Patch Stubs.obj │ │ ├── Potion.obj │ │ ├── Project.dll │ │ ├── Project.dll.intermediate.manifest │ │ ├── Project.exe │ │ ├── Project.ini │ │ ├── Project.pdb │ │ ├── Reveal.obj │ │ ├── Shrines │ │ │ ├── blobcell.bmp │ │ │ ├── blobcircle.bmp │ │ │ ├── blobcross1.bmp │ │ │ ├── blobcross2.bmp │ │ │ ├── blobdiamond.bmp │ │ │ ├── blobdot.bmp │ │ │ ├── minishrine00.bmp │ │ │ ├── minishrine01.bmp │ │ │ ├── minishrine02.bmp │ │ │ ├── minishrine03.bmp │ │ │ ├── minishrine06.bmp │ │ │ ├── minishrine07.bmp │ │ │ ├── minishrine08.bmp │ │ │ ├── minishrine09.bmp │ │ │ ├── minishrine10.bmp │ │ │ ├── minishrine11.bmp │ │ │ ├── minishrine12.bmp │ │ │ ├── minishrine15.bmp │ │ │ ├── minishrine17.bmp │ │ │ ├── minishrine18.bmp │ │ │ ├── shrine00.bmp │ │ │ ├── shrine01.bmp │ │ │ ├── shrine02.bmp │ │ │ ├── shrine03.bmp │ │ │ ├── shrine06.bmp │ │ │ ├── shrine07.bmp │ │ │ ├── shrine08.bmp │ │ │ ├── shrine09.bmp │ │ │ ├── shrine10.bmp │ │ │ ├── shrine11.bmp │ │ │ ├── shrine12.bmp │ │ │ ├── shrine13.bmp │ │ │ ├── shrine14.bmp │ │ │ ├── shrine15.bmp │ │ │ ├── shrine17.bmp │ │ │ ├── shrine18.bmp │ │ │ ├── shrine19.bmp │ │ │ ├── shrine21.bmp │ │ │ ├── shrine22.bmp │ │ │ └── waypoint.bmp │ │ ├── Skill.obj │ │ ├── Speed.obj │ │ ├── Teleport.obj │ │ ├── Threads.obj │ │ ├── Unit.obj │ │ ├── Vectors.obj │ │ ├── Winamp.obj │ │ ├── mt.dep │ │ ├── vc90.idb │ │ └── vc90.pdb │ ├── Reveal.cpp │ ├── Reveal.h │ ├── Rogue.cpp │ ├── Rogue.h │ ├── Skill.cpp │ ├── Skill.h │ ├── Speed.cpp │ ├── Speed.h │ ├── SyncObj.h │ ├── Teleport.cpp │ ├── Teleport.h │ ├── Threads.cpp │ ├── Threads.h │ ├── Unit.cpp │ ├── Unit.h │ ├── UpgradeLog.XML │ ├── Vars.h │ ├── Vectors.cpp │ ├── Vectors.h │ ├── Winamp.cpp │ ├── Winamp.h │ └── _UpgradeReport_Files │ │ ├── UpgradeReport.css │ │ ├── UpgradeReport.xslt │ │ ├── UpgradeReport_Minus.gif │ │ └── UpgradeReport_Plus.gif └── Readme.md └── pdf saved pages ├── Blizzhackers • Index page.pdf ├── Diablo II hacking development ├── Diablo II Hacking Development.pdf ├── D2 Packet List & Everything Packet Related.pdf ├── Diablo II 1.14b Pointers - Patches - Functions - Structures.pdf ├── Diablo II Next Generation 1.14D.pdf ├── Diablo II Packet Lists & Info.pdf ├── Extra-work, stagec.dll.pdf ├── Project 1.3 and 2.0 for v1.13 [works with Version Hack].pdf └── Trying to predict IDs in game. How do you convert.._.pdf ├── Diablo II programs and exploits ├── Diablo II Programs and Exploits.pdf ├── 1.12 and RedVex_ Plugin list and information.pdf ├── Archived Hacks for previous patches.pdf ├── Download Links.pdf └── Serby's 1.13c 16 & 26-Digit CD-Key Viewer & Changer.pdf ├── core and scripts releases ├── Core and Script Releases.pdf ├── AutoIt OOG by usabrad86.pdf ├── D2BS v1.2 - Release Thread.pdf ├── D2BS v1.2.1 - Release Thread.pdf ├── D2BS v1.3 - Release Thread.pdf ├── D2BS v1.3.1 - Release Thread.pdf ├── D2BS v1.3.2 - Release Thread.pdf ├── D2BS v1.3.3 - Release Thread.pdf ├── D2BS v1.4 - Release Thread.pdf ├── InvRipper v1.3 with DIO (Darien's Inventory OOG).pdf ├── OOG by bobite (d2bs 1.4 +ntbot).pdf ├── OOG#.pdf ├── Pickit Items including ALL sets, and ALL uniques.pdf ├── Revly autobuilds.pdf ├── YAMB for D2BS 1.4.1 on battle.net 1.13d.pdf ├── [BETA] D2Driver - the alternative game manager.pdf ├── d2bot# with kolbot release.pdf └── d2bot# with kolbot release2.pdf ├── d2bs help-support ├── D2BS Help_Support.pdf ├── CALL FOR ASSISTANCE_ Reverse engineers.pdf ├── D2BS 1.14d.pdf ├── D2BS Rules & Guidelines - Free hugs if you read this!.pdf ├── D2Bot # + D2BS 1.14d.pdf ├── Official IRC Channel - Now offering support_.pdf ├── Official kolbot Support Thread.pdf ├── Official kolbot Support Thread1.pdf └── vampwolf idea thread.pdf └── d2bs script development ├── D2BS Script Development.pdf ├── AutoChaos - an intuitive team cs script.pdf ├── AutoChaos - an intuitive team cs script2.pdf ├── AutoSmurf (level & quest) _ why be awake for next reset_.pdf ├── Bumperless Rusher for Kolbot.pdf ├── D2 Dropper project.pdf ├── D2BS Compiled Scripts.pdf ├── DiabloHelper healing pala and enchant sorc_.pdf ├── FastExp.js.pdf ├── How do you get D2BS to return a running script list_.pdf ├── How does sendPacket function work.pdf ├── How would I write this_.pdf ├── Kolbot tcp_ip starter.pdf ├── Manual play script with packet sniffing tools and more.pdf ├── Manual play script with packet sniffing tools and more2.pdf ├── Modified Classic Rush Script which Incorporates Followers.pdf ├── Project_ D2BS Classic - update [pic 16_02_16, vid 25_01_16].pdf ├── Reroll Items with Kolbot.pdf ├── Script to export AutoMule files.pdf ├── [!] Want to contribute in 2018_.pdf ├── auto-BO-bot-script.pdf ├── autoequip for merc.pdf └── noob tomb script.pdf /README.md: -------------------------------------------------------------------------------- 1 | # www.bhfiles.com mirrors: 2 | 3 | * [mirror 1 mega.nz](https://bit.ly/bhfiles) 4 | * [mirror 2 bnetdocs.org](https://files.bnetdocs.org/bhfiles/) 5 | 6 | Note: 7 | 1. anyone interested about [Diablo II\1.13d\C3PO_V700_B87.zip encrypted archive](https://mega.nz/#F!C2IWgYIL!Mn4eJY1gNMQZRZ72-Sj8SQ?Sm5SFAwb) should use **ogrr.com** 8 | 9 | --- 10 | 11 | # [www.blizzhackers.cc - latest web.archive](https://web.archive.org/web/20180624044043/http://www.blizzhackers.cc/) 12 | 13 | some of the pages are saved in [pdf format](https://github.com/blizzhackers/bhfiles/tree/master/pdf%20saved%20pages) - visible on-line using the in-built github pdf viewer. 14 | 15 | --- 16 | 17 | ## Specific projects: 18 | 19 | ### [Project Andy](https://github.com/blizzhackers/bhfiles/tree/master/d2%20project%20Andy) 20 | -------------------------------------------------------------------------------- /d2 project Andy/Project 1.3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project 1.3.zip -------------------------------------------------------------------------------- /d2 project Andy/Project 2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project 2.0.zip -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Aim.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | BOOL AttackNearestTarget() 4 | { 5 | D2SpellInfo Spell; 6 | GetSkillInfo(GetCurrentSkill(V_LeftAttack), &Spell); 7 | 8 | if (!ClientReady(TRUE) || !V_Aim) 9 | return FALSE; 10 | 11 | if (InTown(Me) || UsingSkill()) 12 | return FALSE; 13 | 14 | POINT Mouse = {MouseX, MouseY}; 15 | LPUNITANY Target = FindNearestUnit(Mouse, Spell.dwSpellInfoFlag, FALSE, FALSE); 16 | 17 | if (Target && Target->dwMode != PLAYER_MODE_DEAD && Target->dwMode != PLAYER_MODE_DEATH) 18 | { 19 | if (Me->dwMode != PLAYER_MODE_CAST) 20 | { 21 | AttackTarget(Target->dwUnitId, Target->dwType); 22 | return TRUE; 23 | } 24 | } 25 | 26 | return FALSE; 27 | } 28 | 29 | BOOL AttackTarget(DWORD UnitID, DWORD UnitType) 30 | { 31 | LPUNITANY Target = (LPUNITANY)GetUnit(UnitID, UnitType); 32 | BLIND Blinds[4] = {{2, 2}, {3, 2}, {-1, 3}, {2.0, -1.2}}; 33 | WORD SkillID = GetCurrentSkill(V_LeftAttack); 34 | 35 | PACKETEDATTACK Attacks[] = 36 | { 37 | {D2S_ATTACK, TRUE}, 38 | {D2S_BERSERK, TRUE}, 39 | {D2S_BLIZZARD, FALSE}, 40 | {D2S_BONEPRISON, FALSE}, 41 | {D2S_CHARGE, FALSE}, 42 | {D2S_CHARGEDSTRIKE, TRUE}, 43 | {D2S_DECOY, FALSE}, 44 | {D2S_ENCHANT, FALSE}, 45 | {D2S_FIREBALL, FALSE}, 46 | {D2S_KICK, TRUE}, 47 | {D2S_LEAPATTACK, TRUE}, 48 | {D2S_LIGHTNINGSTRIKE, TRUE}, 49 | {D2S_SLOWMISSILES, FALSE}, 50 | {D2S_SMITE, TRUE} 51 | }; 52 | 53 | if (!ClientReady(TRUE) || InTown(Me) || !V_Aim) 54 | return FALSE; 55 | 56 | if (V_BlockFakes && UsingSkill()) 57 | return FALSE; 58 | 59 | if (!Target) 60 | return FALSE; 61 | 62 | if (Target->dwType == UNIT_TYPE_PLAYER && (Target->dwMode == PLAYER_MODE_DEAD || Target->dwMode == PLAYER_MODE_DEATH)) 63 | return FALSE; 64 | 65 | if (Target->dwType == UNIT_TYPE_NPC && (Target->dwMode == NPC_MODE_DEAD || Target->dwMode == NPC_MODE_DEATH)) 66 | return FALSE; 67 | 68 | for (INT i = 0; i < ArraySize(Attacks); i++) 69 | { 70 | if (SkillID == Attacks[i].SkillID) 71 | { 72 | UseSkillOnUnit(Target, Attacks[i].SkillID, V_LeftAttack, Attacks[i].Shift, TRUE); 73 | return TRUE; 74 | } 75 | } 76 | 77 | if (SkillID == D2S_TELEPORT && V_Blind == 0 && Target->dwMode != PLAYER_MODE_RUN && !GetUnitState(Target, AFFECT_WHIRLWIND)) 78 | { 79 | UseSkillOnUnit(Target, SkillID, V_LeftAttack, FALSE, TRUE); 80 | return TRUE; 81 | } 82 | 83 | else 84 | { 85 | AttackStruct Attack; 86 | D2SpellInfo Spell; 87 | 88 | Attack.dwAttackType = V_LeftAttack ? ATTACKTYPE_SHIFTLEFT : ATTACKTYPE_SHIFTRIGHT; 89 | GetSkillInfo(SkillID, &Spell); 90 | 91 | if (SkillID == D2S_TELEPORT) 92 | { 93 | if (Target->dwMode == PLAYER_MODE_RUN || GetUnitState(Target, AFFECT_WHIRLWIND)) 94 | { 95 | Attack.dwTargetX = Target->pPath->xTarget; 96 | Attack.dwTargetY = Target->pPath->yTarget; 97 | } 98 | 99 | else 100 | { 101 | if (V_Blind >= 1 && V_Blind <= 4) 102 | { 103 | Attack.dwTargetX = Target->pPath->xPos + (WORD)Blinds[V_Blind - 1].X; 104 | Attack.dwTargetY = Target->pPath->yPos + (WORD)Blinds[V_Blind - 1].Y; 105 | } 106 | 107 | if (V_Blind == 5) 108 | { 109 | Attack.dwTargetX = Target->pPath->xTarget; 110 | Attack.dwTargetY = Target->pPath->yTarget; 111 | } 112 | } 113 | } 114 | 115 | else 116 | { 117 | Attack.dwTargetX = Target->pPath->xPos; 118 | Attack.dwTargetY = Target->pPath->yPos; 119 | } 120 | 121 | Attack.lpPlayerUnit = Me; 122 | 123 | if (Spell.dwSpellInfoFlag & DSI_GUIDED) 124 | { 125 | Attack.dwAttackType = V_LeftAttack ? ATTACKTYPE_LEFT : ATTACKTYPE_RIGHT; 126 | Attack.lpTargetUnit = Target; 127 | } 128 | 129 | else 130 | Attack.lpTargetUnit = NULL; 131 | 132 | Attack._1 = 3; 133 | Attack._2 = 4; 134 | 135 | D2CLIENT_Attack(&Attack, (Spell.dwSpellInfoFlag & DSI_GUIDED) ? TRUE : FALSE); 136 | return TRUE; 137 | } 138 | 139 | return FALSE; 140 | } 141 | 142 | BOOL EnumeratePlayers() 143 | { 144 | CArrayEx TempInfo; 145 | INT NewTarget = NULL; 146 | 147 | if (V_Players.IsLocked) 148 | return FALSE; 149 | 150 | V_Players.Lock(); 151 | 152 | for (INT i = 0; i < V_Players.GetSize(); i++) 153 | TempInfo.Add(V_Players[i]); 154 | 155 | V_Players.RemoveAll(); 156 | 157 | for (LPROSTERUNIT Unit = *p_D2CLIENT_PlayerUnitList; Unit; Unit = Unit->pNext) 158 | { 159 | if (!Unit) 160 | continue; 161 | 162 | if (Unit->dwUnitId == Me->dwUnitId) 163 | continue; 164 | 165 | PTARGETINFO PlayerInfo = new TARGETINFO; 166 | 167 | strcpy_s(PlayerInfo->PlayerName, Unit->szName); 168 | PlayerInfo->UnitId = Unit->dwUnitId; 169 | PlayerInfo->Level = (BYTE)Unit->wLevel; 170 | PlayerInfo->ClassId = Unit->dwClassId; 171 | PlayerInfo->Flashing = FALSE; 172 | PlayerInfo->Life = (BYTE)Unit->dwPartyLife; 173 | 174 | for (INT i = 0; i < TempInfo.GetSize(); i++) 175 | { 176 | if (TempInfo[i]->UnitId == Unit->dwUnitId) 177 | { 178 | PlayerInfo->Flashing = TempInfo[i]->Flashing; 179 | PlayerInfo->Life = TempInfo[i]->Life; 180 | } 181 | } 182 | 183 | V_Players.Add(PlayerInfo); 184 | 185 | if (!TempInfo.IsEmpty() && PlayerInfo->UnitId == TempInfo[V_Target]->UnitId) 186 | NewTarget = V_Players.GetSize() - 1; 187 | } 188 | 189 | for (INT i = 0; i < TempInfo.GetSize(); i++) 190 | delete TempInfo[i]; 191 | 192 | V_Target = NewTarget; 193 | V_Players.Unlock(); 194 | 195 | return TRUE; 196 | } 197 | 198 | BOOL Knockback() 199 | { 200 | if (!ClientReady(TRUE)) 201 | return FALSE; 202 | 203 | if (InTown(Me) || V_Players.IsEmpty()) 204 | return FALSE; 205 | 206 | for (LPROOM1 Room1 = Me->pAct->pRoom1; Room1; Room1 = Room1->pRoomNext) 207 | { 208 | for (LPUNITANY Unit = Room1->pUnitFirst; Unit; Unit = Unit->pListNext) 209 | { 210 | if (Unit && Unit->dwType == UNIT_TYPE_PLAYER) 211 | { 212 | if (Unit->dwUnitId == Me->dwUnitId) 213 | continue; 214 | 215 | if (GetUnitDist(Me, Unit) > V_AutoKBDistance) 216 | continue; 217 | 218 | if (InTown(Unit)) 219 | continue; 220 | 221 | if (Unit->dwMode == PLAYER_MODE_DEAD || Unit->dwMode == PLAYER_MODE_DEATH) 222 | continue; 223 | 224 | if (GetPvPFlags(Unit->dwUnitId) & PVP_HOSTILED_YOU || GetPvPFlags(Unit->dwUnitId) & PVP_HOSTILED_BY_YOU) 225 | { 226 | WORD Old = GetCurrentSkill(TRUE); 227 | WORD KB = GetSkill(D2S_SMITE) ? D2S_SMITE : D2S_KICK; 228 | 229 | if (GetCurrentSkill(TRUE) != KB) 230 | SetSkill(KB, TRUE); 231 | 232 | while (GetCurrentSkill(TRUE) != KB) 233 | SleepEx(1, TRUE); 234 | 235 | if (GetCurrentSkill(TRUE) == KB) 236 | UseSkillOnUnit(Unit, KB, TRUE, TRUE, TRUE); 237 | 238 | if (GetCurrentSkill(TRUE) != Old) 239 | SetSkill(Old, TRUE); 240 | 241 | while (GetCurrentSkill(TRUE) != Old) 242 | SleepEx(1, TRUE); 243 | 244 | return TRUE; 245 | } 246 | } 247 | } 248 | } 249 | 250 | return FALSE; 251 | } 252 | 253 | BOOL MiddleMouseButton() 254 | { 255 | if (!ClientReady(TRUE)) 256 | return FALSE; 257 | 258 | if (InTown(Me)) 259 | return FALSE; 260 | 261 | if (Me->dwMode == PLAYER_MODE_CAST || Me->dwMode == PLAYER_MODE_ATTACK1 || Me->dwMode == PLAYER_MODE_ATTACK2 || 262 | Me->dwMode == PLAYER_MODE_KICK || Me->dwMode == PLAYER_MODE_THROW) 263 | return FALSE; 264 | 265 | if (KeyDown(VK_MBUTTON)) 266 | { 267 | if (V_FarcastTeleport && GetCurrentSkill(FALSE) == D2S_TELEPORT) 268 | { 269 | POINT Origin = {(Me->pPath->xPos), (Me->pPath->yPos)}; 270 | POINT Mouse = {(MouseX), (MouseY)}; 271 | 272 | V_Design->ScreenToAutoMap(&Mouse); 273 | 274 | INT Angle = CalculateAngle(Origin, Mouse); 275 | INT Radius = 100; 276 | POINT Cast; 277 | 278 | while (TRUE) 279 | { 280 | if (Radius <= 0) 281 | break; 282 | 283 | Cast = CalculatePointOnTrack(Origin, Radius--, Angle); 284 | 285 | if (GetRoom(Cast.x, Cast.y)) 286 | { 287 | if (!D2COMMON_CheckCollision(Me->pPath->pRoom1, Cast.x, Cast.y, 2)) 288 | if (::abs(Me->pPath->xPos - Cast.x) <= 50) 289 | if (::abs(Me->pPath->yPos - Cast.y) <= 50) 290 | break; 291 | } 292 | } 293 | 294 | AttackStruct Attack; 295 | Attack.dwAttackType = ATTACKTYPE_SHIFTRIGHT; 296 | 297 | Attack.dwTargetX = Cast.x; 298 | Attack.dwTargetY = Cast.y; 299 | 300 | Attack.lpPlayerUnit = Me; 301 | Attack.lpTargetUnit = NULL; 302 | 303 | D2CLIENT_Attack(&Attack, FALSE); 304 | SleepEx(50, TRUE); 305 | return TRUE; 306 | } 307 | 308 | else if (V_Aim && GetCurrentSkill(FALSE) != D2S_TELEPORT) 309 | { 310 | AttackNearestTarget(); 311 | SleepEx(50, TRUE); 312 | return TRUE; 313 | } 314 | } 315 | 316 | return FALSE; 317 | } 318 | 319 | BOOL NextTarget() 320 | { 321 | if (V_Players.IsEmpty()) 322 | return FALSE; 323 | 324 | if (V_Target <= V_Players.GetSize() - 1 && V_Target > 0) 325 | V_Target--; 326 | 327 | else if (V_Target == NULL && V_Players.GetSize() - 1 > 0) 328 | V_Target = V_Players.GetSize() - 1; 329 | 330 | else if (V_Players.GetSize() <= 0) 331 | return FALSE; 332 | 333 | return TRUE; 334 | } 335 | 336 | BOOL PreviousTarget() 337 | { 338 | if (V_Players.IsEmpty()) 339 | return FALSE; 340 | 341 | if (V_Target >= 0 && V_Target < V_Players.GetSize() - 1) 342 | V_Target++; 343 | 344 | else if (V_Target == V_Players.GetSize() - 1 && V_Players.GetSize() - 1 > 0) 345 | V_Target = NULL; 346 | 347 | else if (V_Players.GetSize() <= 0) 348 | return FALSE; 349 | 350 | return TRUE; 351 | } 352 | 353 | BOOL Reblind() 354 | { 355 | if (!ClientReady(TRUE)) 356 | return FALSE; 357 | 358 | if (InTown(Me) || V_Players.IsEmpty()) 359 | return FALSE; 360 | 361 | if (!GetSkill(D2S_TELEPORT)) 362 | return FALSE; 363 | 364 | for (LPROOM1 Room1 = Me->pAct->pRoom1; Room1; Room1 = Room1->pRoomNext) 365 | { 366 | for (LPUNITANY Unit = Room1->pUnitFirst; Unit; Unit = Unit->pListNext) 367 | { 368 | if (Unit && Unit->dwType == UNIT_TYPE_PLAYER) 369 | { 370 | if (Unit->dwUnitId == Me->dwUnitId) 371 | continue; 372 | 373 | if (GetUnitDist(Me, Unit) > V_AutoBlindDistance) 374 | continue; 375 | 376 | if (InTown(Unit)) 377 | continue; 378 | 379 | if (Unit->dwMode == PLAYER_MODE_DEAD || Unit->dwMode == PLAYER_MODE_DEATH) 380 | continue; 381 | 382 | if (GetPvPFlags(Unit->dwUnitId) & PVP_HOSTILED_YOU || GetPvPFlags(Unit->dwUnitId) & PVP_HOSTILED_BY_YOU) 383 | { 384 | WORD Old = GetCurrentSkill(V_LeftAttack); 385 | 386 | if (V_Blind >= 1 && V_Blind <= 4) 387 | { 388 | if (GetCurrentSkill(V_LeftAttack) != D2S_TELEPORT) 389 | SetSkill(D2S_TELEPORT, V_LeftAttack); 390 | 391 | while (GetCurrentSkill(V_LeftAttack) != D2S_TELEPORT) 392 | SleepEx(1, TRUE); 393 | 394 | if (Me->dwMode == PLAYER_MODE_CAST) 395 | { 396 | Me->dwMode = PLAYER_MODE_STAND_OUTTOWN; 397 | Me->dwFrameRemain = 1; 398 | } 399 | 400 | if (GetCurrentSkill(V_LeftAttack) == D2S_TELEPORT) 401 | AttackTarget(Unit->dwUnitId, UNIT_TYPE_PLAYER); 402 | 403 | if (GetCurrentSkill(V_LeftAttack) != Old) 404 | SetSkill(Old, V_LeftAttack); 405 | 406 | while (GetCurrentSkill(V_LeftAttack) != Old) 407 | SleepEx(1, TRUE); 408 | 409 | return TRUE; 410 | } 411 | 412 | else if (V_Blind == 0 || V_Blind == 5) 413 | { 414 | INT Blind = V_Blind; 415 | 416 | if (GetCurrentSkill(V_LeftAttack) != D2S_TELEPORT) 417 | SetSkill(D2S_TELEPORT, V_LeftAttack); 418 | 419 | while (GetCurrentSkill(V_LeftAttack) != D2S_TELEPORT) 420 | SleepEx(1, TRUE); 421 | 422 | if (Me->dwMode == PLAYER_MODE_CAST) 423 | { 424 | Me->dwMode = PLAYER_MODE_STAND_OUTTOWN; 425 | Me->dwFrameRemain = 1; 426 | } 427 | 428 | V_Blind = 1; 429 | 430 | if (GetCurrentSkill(V_LeftAttack) == D2S_TELEPORT) 431 | AttackTarget(Unit->dwUnitId, UNIT_TYPE_PLAYER); 432 | 433 | V_Blind = Blind; 434 | 435 | if (GetCurrentSkill(V_LeftAttack) != Old) 436 | SetSkill(Old, V_LeftAttack); 437 | 438 | while (GetCurrentSkill(V_LeftAttack) != Old) 439 | SleepEx(1, TRUE); 440 | 441 | return TRUE; 442 | } 443 | } 444 | } 445 | } 446 | } 447 | 448 | return FALSE; 449 | } 450 | 451 | VOID DestroyTargets() 452 | { 453 | if (!V_Players.IsEmpty()) 454 | { 455 | for (INT i = 0; i < V_Players.GetSize(); i++) 456 | { 457 | if (V_Players[i]) 458 | delete V_Players[i]; 459 | } 460 | 461 | V_Players.RemoveAll(); 462 | } 463 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Aim.h: -------------------------------------------------------------------------------- 1 | #define ATTACKTYPE_LEFT 0xC5 2 | #define ATTACKTYPE_SHIFTLEFT 0xE5 3 | #define ATTACKTYPE_RIGHT 0x46 4 | #define ATTACKTYPE_SHIFTRIGHT 0x66 5 | 6 | typedef struct TargetInfo_t 7 | { 8 | CHAR PlayerName[0x10]; 9 | DWORD UnitId; 10 | DWORD ClassId; 11 | BYTE Level; 12 | BYTE Life; 13 | BOOL Flashing; 14 | } TARGETINFO, *PTARGETINFO; 15 | 16 | typedef struct Blind_t 17 | { 18 | DOUBLE X; 19 | DOUBLE Y; 20 | } BLIND, *PBLIND; 21 | 22 | typedef struct PacketedAttack_t 23 | { 24 | WORD SkillID; 25 | BOOL Shift; 26 | } PACKETEDATTACK, *PPACKETEDATTACK; 27 | 28 | BOOL AttackNearestTarget(); 29 | BOOL AttackTarget(DWORD UnitID, DWORD UnitType); 30 | BOOL EnumeratePlayers(); 31 | BOOL MiddleMouseButton(); 32 | BOOL Knockback(); 33 | BOOL NextTarget(); 34 | BOOL PreviousTarget(); 35 | BOOL Reblind(); 36 | VOID DestroyTargets(); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Common Math.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | BYTE CalcPercent(DWORD dwVal, DWORD dwMaxVal, BYTE iMin) 4 | { 5 | if (dwVal == 0 || dwMaxVal == 0) 6 | return NULL; 7 | 8 | BYTE iRes = (BYTE)((double)dwVal / (double)dwMaxVal * 100.0); 9 | 10 | if (iRes > 100) 11 | iRes = 100; 12 | 13 | return max(iRes, iMin); 14 | } 15 | 16 | long CalculateDistance(const POINT& pt1, const POINT& pt2) 17 | { 18 | return CalculateDistance(pt1.x, pt1.y, pt2.x, pt2.y); 19 | } 20 | 21 | long CalculateAngle(const POINT& pt1, const POINT& pt2) 22 | { 23 | return CalculateAngle(pt1.x, pt1.y, pt2.x, pt2.y); 24 | } 25 | 26 | long CalculateDistance(long x1, long y1, long x2, long y2) 27 | { 28 | return (long)::sqrt((double)((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))); 29 | } 30 | 31 | BOOL PtInCircle(const POINT& pt, const POINT& ptOrigin, int nRadius) 32 | { 33 | return CalculateDistance(pt, ptOrigin) < ::abs(nRadius); 34 | } 35 | 36 | void NormalizeAngle(int& rAngle) 37 | { 38 | if (::abs(rAngle) >= 360) 39 | rAngle %= 360; 40 | 41 | if (rAngle < 0) 42 | rAngle += 360; 43 | } 44 | 45 | void NormalizeRect(RECT& rRect) 46 | { 47 | NormalizeRect(&rRect); 48 | } 49 | 50 | void NormalizeRect(LPRECT lpRect) 51 | { 52 | if (lpRect == NULL) 53 | return; 54 | 55 | long temp; 56 | if (lpRect->left > lpRect->right) 57 | { 58 | temp = lpRect->left; 59 | lpRect->left = lpRect->right; 60 | lpRect->right = temp; 61 | } 62 | 63 | if (lpRect->top > lpRect->bottom) 64 | { 65 | temp = lpRect->top; 66 | lpRect->top = lpRect->bottom; 67 | lpRect->bottom = temp; 68 | } 69 | } 70 | 71 | long CalculateAngle(long x1, long y1, long x2, long y2) 72 | { 73 | // mathematic stuff 74 | if (x1 == x2 && y1 == y2) 75 | return 0; 76 | 77 | double fAngle = 0.0; 78 | 79 | if (x1 == x2) 80 | { 81 | // vertical special case 82 | fAngle = y2 > y1 ? 270.0 : 90.0; 83 | } 84 | else if (y1 == y2) 85 | { 86 | // horizontal special case 87 | fAngle = x2 > x1 ? 0.0 : 180.0; 88 | } 89 | else 90 | { 91 | // common case 92 | fAngle = ::atan(((double)y2 - (double)y1) / ((double)x2 - (double)x1)) * 180.0 / PI; 93 | 94 | // determine the phases (1-4) 95 | // Phases allocation figure: 96 | /* 97 | y 98 | | 99 | P2 | P1 100 | | 101 | -----------+----------->x 102 | | 103 | P3 | P4 104 | | 105 | */ 106 | int nPhase = 0; 107 | if (y2 < y1) 108 | nPhase = x2 > x1 ? 1 : 2; 109 | else 110 | nPhase =x2 > x1 ? 4 : 3; 111 | 112 | // adjust the angle according to phases 113 | switch (nPhase) 114 | { 115 | case 1: 116 | fAngle = -fAngle; 117 | break; 118 | 119 | case 2: 120 | case 3: 121 | fAngle = 180.0 - fAngle; 122 | break; 123 | 124 | case 4: 125 | fAngle = 360.0 - fAngle; 126 | break; 127 | 128 | default: 129 | fAngle = 0.0; 130 | break; 131 | } 132 | } 133 | 134 | return (long)fAngle; 135 | } 136 | 137 | POINT CalculatePointOnTrack(const POINT& ptOrigin, int nRadius, int nAngle) 138 | { 139 | if(nRadius == 0) 140 | return ptOrigin; 141 | 142 | NormalizeAngle(nAngle); 143 | 144 | POINT pt; 145 | pt.x = LONG(DOUBLE(ptOrigin.x) + ::cos((DOUBLE)nAngle * PI / 180.0) * (DOUBLE)nRadius); 146 | pt.y = LONG(DOUBLE(ptOrigin.y) - ::sin((DOUBLE)nAngle * PI / 180.0) * (DOUBLE)nRadius); 147 | return pt; 148 | } 149 | 150 | POINT CalculateRandomPosition(const POINT& ptOrigin, int nRadiusMin, int nRadiusMax, int nAngleMin/*=0*/, int nAngleMax/*=360*/) 151 | { 152 | // Data validation 153 | nRadiusMin = max(0, nRadiusMin); 154 | nRadiusMax = max(0, nRadiusMax); 155 | 156 | NormalizeAngle(nAngleMin); 157 | NormalizeAngle(nAngleMax); 158 | 159 | const int R1 = min(nRadiusMin, nRadiusMax); 160 | const int R2 = max(nRadiusMin, nRadiusMax); 161 | const int A1 = min(nAngleMin, nAngleMax); 162 | const int A2 = max(nAngleMin, nAngleMax); 163 | 164 | srand((int)time(NULL)); 165 | 166 | const int R = (R1 == R2) ? R1 : (R1 + (::rand() % (R2 - R1))); // Final radius 167 | const int A = (A1 == A2) ? A1 : (A1 + (::rand() % (A2 - A1))); // Final angle 168 | 169 | return CalculatePointOnTrack(ptOrigin, R, A); 170 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Common Math.h: -------------------------------------------------------------------------------- 1 | #ifndef _COMMONMATH_H 2 | #define _COMMONMATH_H 3 | 4 | #define PI 3.1415926535897932384626433832795 5 | 6 | BYTE CalcPercent(DWORD dwVal, DWORD dwMaxVal, BYTE iMin = 0); 7 | long CalculateDistance(const POINT& pt1, const POINT& pt2); 8 | long CalculateAngle(const POINT& pt1, const POINT& pt2); 9 | long CalculateDistance(long x1, long y1, long x2, long y2); 10 | void NormalizeAngle(int& rAngle); 11 | void NormalizeRect(RECT& rRect); 12 | void NormalizeRect(LPRECT lpRect); 13 | long CalculateAngle(long x1, long y1, long x2, long y2); 14 | POINT CalculatePointOnTrack(const POINT& ptOrigin, int nRadius, int nAngle); 15 | POINT CalculateRandomPosition(const POINT& ptOrigin, int nRadiusMin, int nRadiusMax, int nAngleMin = 0 , int nAngleMax = 360); 16 | BOOL PtInCircle(const POINT& pt, const POINT& ptOrigin, int nRadius); 17 | 18 | #endif -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Configuration.h: -------------------------------------------------------------------------------- 1 | #define BOOLEAN 1 2 | #define INTEGER 2 3 | #define STRING 3 4 | 5 | struct CONFIGURATION 6 | { 7 | LPCSTR Section; 8 | LPCSTR Name; 9 | LPCSTR Default; 10 | INT Type; 11 | LPVOID Variable; 12 | }; 13 | 14 | BOOL Bool(LPSTR Value); 15 | INT Integer(LPSTR Value); 16 | BOOL Load(); 17 | BOOL Save(); 18 | VOID GetModuleDirectory(); 19 | VOID WritePrivateProfileIntA(LPCSTR Section, LPCSTR Entry, INT Value, LPCSTR Filename); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Copy and Paste.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | VOID CheckEditBox() 4 | { 5 | if (V_EditBox) 6 | { 7 | if (*(LPDWORD)p_D2CLIENT_ChatMessage != 0xAD5AFFFF) 8 | { 9 | D2WIN_DestroyEditBox(V_EditBox); 10 | V_EditBox = NULL; 11 | *p_D2WIN_FocusedControl = NULL; 12 | } 13 | 14 | D2WIN_SetTextSize(1); 15 | } 16 | } 17 | 18 | VOID DestroyEditBox() 19 | { 20 | if (V_EditBox) 21 | { 22 | *(LPDWORD)p_D2CLIENT_ChatMessage = NULL; 23 | WCHAR * Text = wcscpy(p_D2CLIENT_ChatMessage, D2WIN_GetEditBoxText(V_EditBox)); 24 | *p_D2CLIENT_TextLength = (INT)wcslen(Text); 25 | D2WIN_DestroyEditBox(V_EditBox); 26 | V_EditBox = NULL; 27 | *p_D2WIN_FocusedControl = NULL; 28 | } 29 | } 30 | 31 | BOOL STDCALL EditBoxCallBack(LPCONTROL HWND, DWORD Argument2, DWORD Argument3) 32 | { 33 | return TRUE; 34 | } 35 | 36 | BOOL FUNCCALL InitEditBox() 37 | { 38 | if (!V_CopyPaste) 39 | return FALSE; 40 | 41 | if (!V_EditBox) 42 | { 43 | static DWORD DW[] = {0x0D, 0}; 44 | 45 | INT X = V_Design->GetScreenSizeX2(); 46 | INT Y = V_Design->GetScreenSizeY2(); 47 | 48 | if (*p_D2CLIENT_ScreenSizeX == 800 && *p_D2CLIENT_ScreenSizeY == 600) 49 | V_EditBox = D2WIN_CreateEditBox(0x83, Y + 62, X - 100, 0x2D, 0, 0, 0, (BOOL (STDCALL *)(LPCONTROL))0, (BOOL (STDCALL *)(LPCONTROL))0, sizeof(DW), (LPCONTROLPREFERENCES)DW); 50 | else if (*p_D2CLIENT_ScreenSizeX == 640 && *p_D2CLIENT_ScreenSizeY == 480) 51 | V_EditBox = D2WIN_CreateEditBox(0x83, Y - 58, X - 266, 0x2D, 0, 0, 0, (BOOL (STDCALL *)(LPCONTROL))0, (BOOL (STDCALL *)(LPCONTROL))0, sizeof(DW), (LPCONTROLPREFERENCES)DW); 52 | 53 | *p_D2WIN_FocusedControl = V_EditBox; 54 | 55 | if (V_EditBox) 56 | { 57 | D2WIN_SetEditBoxProc(V_EditBox, &EditBoxCallBack); 58 | D2WIN_SetEditBoxText(V_EditBox, p_D2CLIENT_ChatMessage); 59 | } 60 | 61 | *(LPDWORD)p_D2CLIENT_ChatMessage = 0x0AD5AFFFF; 62 | } 63 | 64 | if (V_EditBox) 65 | (V_EditBox->Initialize)(V_EditBox); 66 | 67 | return TRUE; 68 | } 69 | 70 | BOOL FUNCCALL InputLine(BYTE Key) 71 | { 72 | if (V_CopyPaste && Key != VK_ESCAPE) 73 | { 74 | if (Key != VK_RETURN) 75 | return TRUE; 76 | 77 | if (V_EditBox) 78 | wcscpy(p_D2CLIENT_ChatMessage, D2WIN_GetEditBoxText(V_EditBox)); 79 | } 80 | 81 | return FALSE; 82 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Copy and Paste.h: -------------------------------------------------------------------------------- 1 | #include "D2 Structs.h" 2 | 3 | VOID CheckEditBox(); 4 | VOID DestroyEditBox(); 5 | BOOL STDCALL EditBoxCallBack(LPCONTROL HWND, DWORD Argument2, DWORD Argument3); 6 | BOOL FUNCCALL InitEditBox(); 7 | BOOL FUNCCALL InputLine(BYTE Key); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/D2 Stdio.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/D2 Stdio.cpp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/D2 Stdio.h: -------------------------------------------------------------------------------- 1 | BOOL ClientReady(BOOL StateCheck); 2 | LPWSTR ColorD2String(LPWSTR wString, DWORD dwColor); 3 | INT GetTextWidth(LPSTR szText, DWORD dwSize); 4 | INT LongestCharName(INT Length, INT Name = 0, INT LongestName = 0); 5 | VOID MyMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, INT cbMultiByte, LPWSTR lpWideCharStr, INT cchWideChar); 6 | INT RemoveColorSpecs(LPWSTR lpwsz); 7 | BOOL Print(BOOL Bottom, INT Color, CHAR * Format, ...); 8 | VOID PrintPacket(LPBYTE aPacket, DWORD aLen, BOOL PacketReceived); 9 | BOOL Say(LPSTR Message, ...); 10 | VOID ScrollMap(CHAR X, CHAR Y); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/D2 Structs.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/D2 Structs.h -------------------------------------------------------------------------------- /d2 project Andy/Project Source/D2 Stubs.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | DWORD NAKED FASTCALL DrawRectangleFrameSTUB(RECT * Rectangle) 4 | { 5 | __asm 6 | { 7 | MOV EAX, ECX; 8 | JMP D2CLIENT_DrawRectFrame; 9 | } 10 | } 11 | 12 | DWORD NAKED FASTCALL GetInventoryIDSTUB(LPUNITANY Unit, DWORD ID, DWORD Unknown) 13 | { 14 | __asm 15 | { 16 | PUSH ESI; 17 | PUSH EDI; 18 | TEST ECX, ECX; 19 | JZ SHORT LOC3; 20 | MOV EAX, p_D2CLIENT_pUnitList; 21 | MOV EAX, [EAX]; 22 | MOV ECX, [ECX]Unit.dwUnitId; 23 | TEST EAX, EAX; 24 | JZ SHORT LOC3; 25 | MOV ESI, [ESP + 0x0C]; 26 | 27 | LOC1: 28 | CMP [EAX + 4], EDX; 29 | JNZ SHORT LOC2; 30 | CMP [EAX + 0CH], ECX; 31 | JNZ SHORT LOC2; 32 | TEST ESI, ESI; 33 | 34 | JNZ SHORT LOC4; 35 | MOV EDI, [EAX + 20H]; 36 | TEST EDI, EDI; 37 | JNZ SHORT LOC4; 38 | 39 | LOC2: 40 | MOV EAX, [EAX + 30H]; 41 | TEST EAX, EAX; 42 | JNZ SHORT LOC1; 43 | 44 | LOC3: 45 | POP EDI; 46 | OR EAX, 0FFFFFFFFH; 47 | POP ESI; 48 | RETN 4; 49 | 50 | LOC4: 51 | MOV EAX, [EAX + 8]; 52 | POP EDI; 53 | POP ESI; 54 | RETN 4; 55 | } 56 | } 57 | 58 | DWORD NAKED FASTCALL GetUIVarSTUB(DWORD UI) 59 | { 60 | __asm 61 | { 62 | MOV EAX, ECX; 63 | JMP D2CLIENT_GetUiVar_I; 64 | } 65 | } 66 | 67 | DWORD NAKED FASTCALL GetUnitNameSTUB(DWORD Unit) 68 | { 69 | __asm 70 | { 71 | MOV EAX, ECX; 72 | JMP D2CLIENT_GetUnitName_I; 73 | } 74 | } 75 | 76 | DWORD NAKED FASTCALL GetUnitSTUB(DWORD dwUnitId, DWORD dwUnitType) 77 | { 78 | __asm 79 | { 80 | POP EAX; 81 | PUSH EDX; 82 | PUSH EAX; 83 | SHL EDX, 9; 84 | MOV EAX, D2CLIENT_GetUnitFromId_I; 85 | ADD EDX, EAX; 86 | MOV EAX, ECX; 87 | AND EAX, 0x7F; 88 | JMP D2CLIENT_GetUnitFromId_II; 89 | } 90 | } 91 | 92 | DWORD NAKED FASTCALL LoadUIImage(LPSTR szPath) 93 | { 94 | __asm 95 | { 96 | MOV EAX, ECX; 97 | PUSH 0; 98 | CALL D2CLIENT_LoadUiImage_I; 99 | RETN; 100 | } 101 | } 102 | 103 | DWORD NAKED FASTCALL InitAutomapLayerSTUB(DWORD dwLayer) 104 | { 105 | __asm 106 | { 107 | PUSH EAX; 108 | MOV EAX, ECX; 109 | CALL D2CLIENT_InitAutomapLayer_I; 110 | POP EAX; 111 | RET; 112 | } 113 | } 114 | 115 | DWORD NAKED FASTCALL TestPvPFlagSTUB(DWORD Argument1, DWORD Argument2, DWORD Flag) 116 | { 117 | __asm 118 | { 119 | PUSH ESI; 120 | PUSH [ESP + 8]; 121 | MOV ESI, EDX; 122 | MOV EDX, ECX; 123 | CALL D2CLIENT_TestPvPFlag_I; 124 | POP ESI; 125 | RET 4; 126 | } 127 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/D2 Stubs.h: -------------------------------------------------------------------------------- 1 | DWORD FASTCALL DrawRectangleFrameSTUB(RECT * Rectangle); 2 | DWORD FASTCALL GetInventoryIDSTUB(LPUNITANY Unit, DWORD ID, DWORD Unknown); 3 | DWORD FASTCALL GetUIVarSTUB(DWORD UI); 4 | DWORD FASTCALL GetUnitNameSTUB(DWORD Unit); 5 | DWORD FASTCALL GetUnitSTUB(DWORD dwUnitId, DWORD dwUnitType); 6 | DWORD FASTCALL InitAutomapLayerSTUB(DWORD dwLayer); 7 | DWORD FASTCALL LoadUIImage(LPSTR szPath); 8 | DWORD FASTCALL TestPvPFlagSTUB(DWORD Argument1, DWORD Argument2, DWORD Flag); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Design.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Design.cpp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Design.h: -------------------------------------------------------------------------------- 1 | #define D2FONT_SMALL 6 2 | #define D2FONT_THIN 4 3 | #define D2FONT_NORMAL 0 4 | #define D2FONT_SMOOTH 13 5 | #define D2FONT_BIGSMOOTH 5 6 | #define D2FONT_CAPS 1 7 | #define D2FONT_ROUGH 7 8 | #define D2FONT_BIGROUGH 2 9 | #define D2FONT_BIGBIGROUGH 3 10 | #define D2FONT_SMOKE 11 11 | 12 | struct AUTOMAP 13 | { 14 | LPSTR Message; 15 | LPSTR Data; 16 | INT FontColor; 17 | INT FontType; 18 | }; 19 | 20 | struct STATE 21 | { 22 | LPSTR Text; 23 | DWORD State; 24 | DWORD Timer; 25 | }; 26 | 27 | class Design 28 | { 29 | public: 30 | Design(); 31 | virtual ~Design(); 32 | 33 | BOOL GameFilter(); 34 | BOOL Mouse(); 35 | BOOL Options(); 36 | BOOL Supplies(); 37 | 38 | VOID GameDraw(); 39 | VOID GameDraw2(); 40 | VOID GameDraw3(); 41 | VOID GameDrawAutomap(); 42 | VOID WinDraw(); 43 | 44 | INT GetScreenSizeX(); 45 | INT GetScreenSizeX2(); 46 | INT GetScreenSizeY(); 47 | INT GetScreenSizeY2(); 48 | 49 | VOID DrawOut(INT X, INT Y, INT Color, INT Size, LPSTR Format, ...); 50 | BOOL DrawOutCenter(INT xPos, INT yPos, DWORD dwColor, DWORD dwSize, DWORD dwDiv, LPSTR lpFormat, ...); 51 | VOID TextHook(INT X, INT Y, DWORD Color, BOOL Automap, INT Font, INT Center, LPSTR Text, ...); 52 | 53 | BOOL ClearScreen(INT Screen); 54 | VOID ScreenToAutoMap(LPPOINT Point); 55 | VOID ScreenToAutomap(LPPOINT Position, INT X, INT Y); 56 | 57 | BOOL CharacterStats; 58 | BOOL Hide; 59 | 60 | protected: 61 | 62 | BOOL AutomapInfo(); 63 | BOOL EscapeInfo(); 64 | BOOL ExperienceInfo(); 65 | BOOL PotionInfo(); 66 | 67 | BOOL Missiles(); 68 | BOOL Monsters(); 69 | 70 | BOOL MusicPlayer(); 71 | 72 | BOOL Orbs(); 73 | BOOL PlayerLifePercent(); 74 | BOOL States(); 75 | BOOL Stats(); 76 | 77 | BOOL Targets(); 78 | BOOL Vectors(); 79 | 80 | VOID BoxHook(INT X, INT Y, INT XSize, INT YSize, DWORD Color, DWORD Transparency, BOOL Automap); 81 | VOID DrawBox(INT X1, INT Y1, INT X2, INT Y2, INT LineColor, INT BackGroundColor, INT Transparency); 82 | 83 | VOID DrawCross(INT X, INT Y, DWORD Color, BOOL Automap); 84 | 85 | VOID GetPlayerPosition(LPPOINT Player); 86 | VOID MapToScreenCoords(LPPOINT Position); 87 | VOID Rectangle(INT X, INT Y, INT X2, INT Y2, INT Color, INT Transparency); 88 | 89 | VOID ScreenToAutomapRelative(LPPOINT ptPos, INT x, INT y); 90 | }; 91 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Enchant.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Enchant.cpp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Enchant.h: -------------------------------------------------------------------------------- 1 | #ifndef _ENCHANT_H 2 | #define _ENCHANT_H 3 | 4 | #define PLAYER 1 5 | #define MERCENARY 2 6 | #define ALL 3 7 | 8 | typedef struct EnchantInfo_t 9 | { 10 | INT nEnchantType; 11 | DWORD dwPlayerId; 12 | } ENCHANTINFO, *LPENCHANTINFO; 13 | 14 | VOID DestroyEnchantQueue(); 15 | BOOL ExecuteEnchantQueue(LPENCHANTINFO EnchInfo); 16 | 17 | #endif -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Escape.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Escape.cpp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Escape.h: -------------------------------------------------------------------------------- 1 | VOID Chicken(); 2 | BOOL Exit(); 3 | VOID ExitGame(); 4 | BOOL Portal(); 5 | BOOL Town(); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Game Filter.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | VOID BuildGameList(string sFilter) 4 | { 5 | if (!V_GameList.empty() && (*p_D2MULTI_GameListControl)) 6 | { 7 | LPCONTROLTEXT pText = (*p_D2MULTI_GameListControl)->pFirstText; 8 | 9 | (*p_D2MULTI_GameListControl)->pFirstText = NULL; 10 | (*p_D2MULTI_GameListControl)->pLastText = NULL; 11 | (*p_D2MULTI_GameListControl)->pSelectedText = NULL; 12 | (*p_D2MULTI_GameListControl)->dwSelectEnd = 0; 13 | (*p_D2MULTI_GameListControl)->dwSelectStart = 0; 14 | (*p_D2MULTI_GameListControl)->dwMaxLength = 0; 15 | 16 | (*p_D2MULTI_GameListControl)->pChildControl->dwMaxLength = 0; 17 | (*p_D2MULTI_GameListControl)->pChildControl->dwScrollPosition = 0; 18 | (*p_D2MULTI_GameListControl)->pChildControl->dwScrollEntries = 0; 19 | 20 | while (pText) 21 | { 22 | LPCONTROLTEXT pNext = pText->pNext; 23 | 24 | delete[] pText->wText; 25 | delete[] pText->wText2; 26 | delete pText; 27 | 28 | pText = pNext; 29 | } 30 | 31 | for (list::iterator ListEntry = V_GameList.begin(); ListEntry != V_GameList.end(); ListEntry++) 32 | { 33 | string sGameName((*ListEntry)->sGameName); 34 | 35 | for (UINT i = 0; i < sGameName.length(); i++) 36 | sGameName[i] = toupper(sGameName[i]); 37 | 38 | if (sGameName.find(sFilter) != string::npos) 39 | { 40 | LPCONTROLTEXT pText = new ControlText; 41 | memset(pText, NULL, sizeof(ControlText)); 42 | 43 | pText->dwColor = 4; 44 | pText->wText = new WCHAR[64]; 45 | pText->wText2 = new WCHAR[12]; 46 | 47 | memset(pText->wText, NULL, 64); 48 | memset(pText->wText2, NULL, 12); 49 | 50 | wstring wGameName((*ListEntry)->sGameName.begin(), (*ListEntry)->sGameName.end()); 51 | 52 | wcscpy_s(pText->wText, 64, wGameName.c_str()); 53 | pText->wText2[0] = (*ListEntry)->bPlayers + 0x30; 54 | 55 | if ((*p_D2MULTI_GameListControl)->pFirstText) 56 | { 57 | (*p_D2MULTI_GameListControl)->pLastText->pNext = pText; 58 | (*p_D2MULTI_GameListControl)->pLastText = pText; 59 | } 60 | 61 | else 62 | { 63 | (*p_D2MULTI_GameListControl)->pFirstText = pText; 64 | (*p_D2MULTI_GameListControl)->pLastText = pText; 65 | (*p_D2MULTI_GameListControl)->pSelectedText = pText; 66 | } 67 | 68 | (*p_D2MULTI_GameListControl)->dwSelectEnd += 1; 69 | (*p_D2MULTI_GameListControl)->pChildControl->dwScrollEntries = (*p_D2MULTI_GameListControl)->dwSelectEnd > 10 ? (*p_D2MULTI_GameListControl)->dwSelectEnd - 10 : 0; 70 | } 71 | } 72 | } 73 | } 74 | 75 | VOID CreateGameList() 76 | { 77 | if (!V_GameList.empty()) 78 | { 79 | for (list::iterator ListEntry = V_GameList.begin(); ListEntry != V_GameList.end(); ListEntry++) 80 | delete (*ListEntry); 81 | 82 | V_GameList.clear(); 83 | } 84 | 85 | if (V_GameFilter && !V_FilterBox) 86 | { 87 | V_FilterBox = D2WIN_CreateEditBox(599, 185, 145, 41, 7, 0, 0, (BOOL (STDCALL *)(LPCONTROL))FilterBoxReturn, NULL, NULL, (LPCONTROLPREFERENCES)p_D2MULTI_EditboxPreferences); 88 | V_FilterBox->pCellFile = (LPCELLFILE)LoadUIImage("DATA\\GLOBAL\\UI\\FrontEnd\\TextBox2"); 89 | D2WIN_SetEditBoxCallback(V_FilterBox, FilterBoxInput); 90 | V_FilterBox->dwMaxLength = 0x12; 91 | V_FilterBox->Initialize(V_FilterBox); 92 | } 93 | } 94 | 95 | VOID DestroyFilterBox() 96 | { 97 | if (V_FilterBox) 98 | { 99 | if (!V_GameList.empty()) 100 | { 101 | for (list::iterator ListEntry = V_GameList.begin(); ListEntry != V_GameList.end(); ListEntry++) 102 | delete (*ListEntry); 103 | 104 | V_GameList.clear(); 105 | } 106 | 107 | D2WIN_DestroyEditBox(V_FilterBox); 108 | V_FilterBox = NULL; 109 | } 110 | } 111 | 112 | VOID STDCALL DestroyGameList(LPCONTROL pControl) 113 | { 114 | if (pControl) 115 | { 116 | if(V_FilterBox) 117 | { 118 | if (!V_GameList.empty()) 119 | { 120 | for (list::iterator ListEntry = V_GameList.begin(); ListEntry != V_GameList.end(); ListEntry++) 121 | delete (*ListEntry); 122 | 123 | V_GameList.clear(); 124 | } 125 | 126 | D2WIN_DestroyEditBox(V_FilterBox); 127 | V_FilterBox = NULL; 128 | } 129 | 130 | D2WIN_DestroyControl(pControl); 131 | } 132 | } 133 | 134 | BOOL STDCALL FilterBoxInput(LPCONTROL pControl, DWORD dwLength, LPSTR pChar) 135 | { 136 | wstring wInput(pControl->wText); 137 | 138 | string sFilter(wInput.begin(), wInput.end()); 139 | 140 | if (dwLength > 0) 141 | sFilter += *pChar; 142 | 143 | for (UINT i = 0; i < sFilter.length(); i++) 144 | sFilter[i] = toupper(sFilter[i]); 145 | 146 | BuildGameList(sFilter); 147 | return TRUE; 148 | } 149 | 150 | BOOL STDCALL FilterBoxReturn(WCHAR * wText) 151 | { 152 | return TRUE; 153 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Game Filter.h: -------------------------------------------------------------------------------- 1 | VOID BuildGameList(string sFilter); 2 | VOID CreateGameList(); 3 | VOID DestroyFilterBox(); 4 | VOID STDCALL DestroyGameList(LPCONTROL pControl); 5 | BOOL STDCALL FilterBoxInput(LPCONTROL pControl, DWORD dwLength, LPSTR pChar); 6 | BOOL STDCALL FilterBoxReturn(WCHAR * wText); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Hack.cpp: -------------------------------------------------------------------------------- 1 | #define PTRS 2 | #define VARS 3 | 4 | #include "Hack.h" 5 | 6 | BOOL WINAPI DllMain(HINSTANCE DLL, DWORD Reason, LPVOID Reserved) 7 | { 8 | if (Reason == DLL_PROCESS_ATTACH) 9 | return Attach(DLL); 10 | 11 | else if (Reason == DLL_PROCESS_DETACH) 12 | return Detach(); 13 | 14 | return TRUE; 15 | } 16 | 17 | BOOL Attach(HINSTANCE DLL) 18 | { 19 | V_Name = "Project"; 20 | V_DLL = DLL; 21 | V_Version = 1.3f; 22 | 23 | DefineOffsets(); 24 | Load(); 25 | 26 | if (D2GFX_GetHwnd()) 27 | { 28 | V_OldWndProc = (WNDPROC)GetWindowLongA(D2GFX_GetHwnd(), GWL_WNDPROC); 29 | SetWindowLongA(D2GFX_GetHwnd(), GWL_WNDPROC, (LONG)WindowProc); 30 | } 31 | 32 | if (ClientReady(FALSE)) 33 | { 34 | V_Design = new Design; 35 | V_Reveal = new Reveal; 36 | 37 | InstallPatches(INGAME); 38 | V_PatchInGame = TRUE; 39 | } 40 | 41 | else 42 | { 43 | if (RemovePEHeader(DLL)) 44 | { 45 | InstallPatches(OUTGAME); 46 | V_PatchOutGame = TRUE; 47 | V_PatchInGame = -1; 48 | } 49 | 50 | else 51 | TerminateProcess(GetCurrentProcess(), NULL); 52 | } 53 | 54 | V_PrimaryThread.Handle = MakeThread((LPVOID)Threads, (LPVOID)PRIMARY); 55 | 56 | return TRUE; 57 | } 58 | 59 | BOOL Detach() 60 | { 61 | DestroyThread(V_PrimaryThread.Handle, PRIMARY, INFINITE); 62 | DestroyInGameThreads(); 63 | 64 | if (ClientReady(FALSE)) 65 | RemovePatches(INGAME); 66 | else if (!ClientReady(FALSE)) 67 | RemovePatches(OUTGAME); 68 | 69 | if (ClientReady(FALSE) && (!V_HostileImage || V_Design->Hide)) 70 | PatchBytes((DWORD)LoadLibraryA("D2Client.dll") + 0x2864C, 0x46, 1); 71 | 72 | if (D2GFX_GetHwnd()) 73 | SetWindowLongA(D2GFX_GetHwnd(), GWL_WNDPROC, (LONG)V_OldWndProc); 74 | 75 | if (ClientReady(FALSE)) 76 | { 77 | V_Reveal->DestroyLevelExits(); 78 | V_Reveal->RemoveMyAutomapCells(); 79 | V_Reveal->DestroyMyAutomapCells(); 80 | V_Reveal->DeleteShrines(); 81 | } 82 | 83 | DestroyEditBox(); 84 | DestroyFilterBox(); 85 | DestroyTargets(); 86 | DestroyVectors(); 87 | 88 | return TRUE; 89 | } 90 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Hack.h: -------------------------------------------------------------------------------- 1 | #define WIN32_LEAN_AND_MEAN 2 | #define _CRT_SECURE_NO_DEPRECATE 3 | #define _WIN32_WINNT 0x600 4 | 5 | #undef UNICODE 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | #pragma comment(lib, "psapi.lib") 28 | #pragma comment(lib, "shlwapi.lib") 29 | 30 | #define EXPORT __declspec(dllexport) 31 | #define FASTCALL __fastcall 32 | #define FUNCCALL __cdecl 33 | #define IMPORT __declspec(dllimport) 34 | #define NAKED __declspec(naked) 35 | #define STDCALL __stdcall 36 | 37 | #pragma warning(disable : 4311) 38 | #pragma warning(disable : 4312) 39 | 40 | #include "Aim.h" 41 | #include "Array Ex.h" 42 | #include "Common Math.h" 43 | #include "Configuration.h" 44 | #include "Constants.h" 45 | #include "Copy and Paste.h" 46 | #include "D2 Pointers.h" 47 | #include "D2 Stdio.h" 48 | #include "D2 Structs.h" 49 | #include "D2 Stubs.h" 50 | #include "Design.h" 51 | #include "Enchant.h" 52 | #include "Escape.h" 53 | #include "Game Filter.h" 54 | #include "Handlers.h" 55 | #include "Helpers.h" 56 | #include "Item.h" 57 | #include "Matrix.h" 58 | #include "Message.h" 59 | #include "Miscellaneous.h" 60 | #include "Offset.h" 61 | #include "Packet Received.h" 62 | #include "Packet Sent.h" 63 | #include "Patch Stubs.h" 64 | #include "Potion.h" 65 | #include "Reveal.h" 66 | #include "Skill.h" 67 | #include "Speed.h" 68 | #include "Teleport.h" 69 | #include "Threads.h" 70 | #include "Unit.h" 71 | #include "Vars.h" 72 | #include "Winamp.h" 73 | #include "Rogue.h" 74 | 75 | BOOL Attach(HINSTANCE DLL); 76 | BOOL Detach(); 77 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Hack.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Hack.suo -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Handlers.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Handlers.cpp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Handlers.h: -------------------------------------------------------------------------------- 1 | VOID Game(BOOL ExitGame); 2 | VOID GameEnd(); 3 | VOID GameStart(); 4 | VOID GameLoop(); 5 | 6 | VOID SetAutomap(); 7 | VOID SetStates(); 8 | VOID SetVars(); 9 | VOID SetDeathMessage(); 10 | VOID SetInTownVars(); 11 | 12 | VOID HostileImage(); 13 | VOID KillLog(); 14 | VOID RemainingFrames(); 15 | VOID ScreenShot(); 16 | 17 | VOID FASTCALL AssignPlayer(LPUNITANY Unit); 18 | VOID STDCALL GameShake(LPDWORD lpX, LPDWORD lpY); 19 | DWORD FASTCALL PlayerBlobs(LPUNITANY Unit); 20 | BOOL FASTCALL InfraVision(LPUNITANY Unit); 21 | VOID FASTCALL MonsterDescComma(WCHAR * String, LPMONSTERTXT Text); 22 | WCHAR * FASTCALL MonsterLifeBarName(WCHAR * Old, LPDWORD TextSize, LPDWORD Size, DWORD Flag); 23 | VOID FASTCALL OnGameKeyDown(BYTE Key, BYTE Repeat); 24 | INT FASTCALL OutTownSelect(LPUNITANY Unit); 25 | 26 | LONG STDCALL WindowProc(HWND HWnd, UINT MSG, WPARAM WParam, LPARAM LParam); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Helpers.h: -------------------------------------------------------------------------------- 1 | #define ArraySize(X) (sizeof(X) / sizeof(X[0])) 2 | #define KeyDown(Code) ((GetAsyncKeyState(Code) & 0x8000) ? TRUE : FALSE) 3 | 4 | LPSTR AddCommas(DOUBLE f, INT places); 5 | LPBYTE AllocReadFile(LPSTR FileName); 6 | VOID DeleteCellFile(LPCELLFILE File); 7 | BOOL DropGold(DWORD ID, INT Amount); 8 | BOOL EnableDebugPrivileges(); 9 | DWORD GetExp(DWORD Level); 10 | BOOL GetMapName(BYTE iMapID, LPSTR lpszBuffer, DWORD dwMaxChars); 11 | INT GetPlayerClassName(INT nClass, LPSTR szBuffer, DWORD dwMaxLen); 12 | INT GetPlayerClassNameShort(INT nClass, LPSTR szBuffer, DWORD dwMaxLen); 13 | LPSTR GetShrinesFolder(LPSTR dest, CHAR ch); 14 | DWORD GetTextFileNo(WCHAR * str); 15 | DWORD GetTextWidth(WCHAR * str); 16 | BOOL HostilePlayer(DWORD dwUnitId); 17 | LPCELLFILE InitCellFile(LPCELLFILE File); 18 | BOOL Interact(DWORD ID, DWORD Type, BOOL Check); 19 | LPCELLFILE LoadBMPCellFile(BYTE * Buffer, INT Width, INT Height); 20 | LPCELLFILE LoadBMPCellFile(LPSTR FileName); 21 | VOID * memcpy2(LPVOID Destination, CONST VOID * Source, size_t Count); 22 | HANDLE OpenFileRead(LPSTR filename); 23 | HANDLE OpenFileWrite(LPSTR filename); 24 | DWORD ReadFile(HANDLE hFile, LPVOID buf, DWORD len); 25 | BOOL RemovePEHeader(HMODULE DLL); 26 | LPSTR ReplaceString(CHAR * Source, CHAR * Old, CHAR * New); 27 | BOOL ReassignPlayer(LPUNITANY Unit, WORD X, WORD Y); 28 | BOOL ResynchPlayer(DWORD ID, INT Type); 29 | VOID SendClick(INT nX, INT nY); 30 | BOOL SpoofTownPortal(BYTE State, BYTE AreaID, DWORD UnitID); 31 | INT StringTokenize(CHAR * Input, CHAR Separator, LPSTR * TokenBuffer, INT MaxTokens); 32 | BOOL ValidHostileMonsters(LPUNITANY Unit); 33 | BOOL ValidMonsters(LPUNITANY Unit); 34 | VOID wcscpy(WCHAR * dest, CHAR * src); 35 | WCHAR * wcsrcat(WCHAR * dest, WCHAR * src); 36 | WCHAR * FUNCCALL wsprintfW2(WCHAR * dest, LPSTR fmt, ...); 37 | WCHAR * FUNCCALL wsprintfW2Colour(WCHAR * dest, INT col, LPSTR fmt, ...); 38 | DWORD WriteFile(HANDLE hFile, LPVOID buf, DWORD len); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Item.h: -------------------------------------------------------------------------------- 1 | #ifndef _ITEM_H 2 | #define _ITEM_H 3 | 4 | LPUNITANY FASTCALL FindItem(DWORD dwCode, INT nLoc); 5 | INT GetItemLocation(LPUNITANY pItem); 6 | BOOL GetItemCode(LPUNITANY pItem, LPSTR szBuffer, DWORD dwMax); 7 | VOID DropItem(DWORD dwItemID); 8 | INT GetItemQualityFromStr(LPSTR szQuality); 9 | LPUNITANY FindEquipItem(INT nLoc); 10 | INT GetTotalBeltItems(); 11 | DWORD UseItemIds(INT nLoc); 12 | VOID UseItem(LPUNITANY Unit); 13 | BOOL IsBeltFull(); 14 | LPINVENTORYINFO GetInventoryInfo(INT nLoc); 15 | INT D2IsBelt(LPSTR lpszItemCode); 16 | INT D2IsPotion(LPSTR lpszItemCode); 17 | INT GetTotalBeltMana(); 18 | INT GetTotalCubeMana(); 19 | INT GetTotalInvMana(); 20 | INT GetTotalStashMana(); 21 | INT GetTotalBeltHealth(); 22 | INT GetTotalCubeHealth(); 23 | INT GetTotalInvHealth(); 24 | INT GetTotalStashHealth(); 25 | INT GetTotalBeltRejuvenation(); 26 | INT GetTotalCubeRejuvenation(); 27 | INT GetTotalInvRejuvenation(); 28 | INT GetTotalStashRejuvenation(); 29 | INT GetTotalBeltTPs(); 30 | INT GetTotalCubeTPs(); 31 | INT GetTotalInvTPs(); 32 | INT GetTotalStashTPs(); 33 | BOOL D2IsCirclets(LPSTR lpszItemCode); 34 | BOOL D2IsGloves(LPSTR lpszItemCode); 35 | BOOL D2IsBoots(LPSTR lpszItemCode); 36 | BOOL D2IsThrowItem(LPSTR szItemCode); 37 | BOOL D2IsBow(LPSTR szItemCode); 38 | BOOL D2IsCrossBow(LPSTR szItemCode); 39 | 40 | #endif -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Matrix.h: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////// 2 | // CMatrix 3 | // 4 | // Two dimensional array template class. 5 | // 6 | // Abin (abinn32@yahoo.com) 7 | //////////////////////////////////////////////////////////////////////////// 8 | 9 | #ifndef __MATRIX_H__ 10 | #define __MATRIX_H__ 11 | 12 | #define USE_MULTI_THREAD // uncomment this line if used in multi-thread application 13 | 14 | #ifdef USE_MULTI_THREAD 15 | #include "SyncObj.h" 16 | #endif // USE_MULTI_THREAD 17 | 18 | ////////////////////////////////////////////////////////////////////// 19 | // Necessary Definitions for Non-MFC applications 20 | ////////////////////////////////////////////////////////////////////// 21 | #ifndef __AFXWIN_H__ // If non-MFC ... 22 | #define WIN32_LEAN_AND_MEAN 23 | #include 24 | #include 25 | #include 26 | #ifndef ASSERT 27 | #define ASSERT(x) assert(x) 28 | #endif 29 | #endif // __AFXWIN_H__ 30 | 31 | template 32 | class CMatrix 33 | #ifdef USE_MULTI_THREAD 34 | : public CSyncObj 35 | #endif // USE_MULTI_THREAD 36 | { 37 | public: 38 | 39 | ///////////////////////////////////////////////////////////// 40 | // Constructor & Destructor 41 | ///////////////////////////////////////////////////////////// 42 | CMatrix(); 43 | virtual ~CMatrix(); 44 | 45 | ///////////////////////////////////////////////////////////// 46 | // Creation & Deletion 47 | ///////////////////////////////////////////////////////////// 48 | BOOL Create(int cx, int cy); 49 | BOOL Create(int cx, int cy, ARG_TYPE initValue); 50 | void Destroy(); 51 | 52 | ///////////////////////////////////////////////////////////// 53 | // Attributes & Operations 54 | ///////////////////////////////////////////////////////////// 55 | BOOL IsCreated() const; 56 | BOOL IsValidIndex(int x, int y) const; 57 | const TYPE& GetAt(int x, int y) const; 58 | TYPE& ElementAt(int x, int y); 59 | BOOL SetAt(int x, int y, ARG_TYPE data); 60 | TYPE** GetData(); 61 | const TYPE** GetData() const; 62 | int GetCX() const; 63 | int GetCY() const; 64 | BOOL ImportData(const TYPE** ppSrc, int cx, int cy); 65 | BOOL ImportData(const CMatrix& rSrc); 66 | SIZE ExportData(TYPE** ppBuffer, int cx, int cy) const; 67 | BOOL ExportData(CMatrix& rMatrix) const; 68 | 69 | ///////////////////////////////////////////////////////////// 70 | // Operator Overloads 71 | ///////////////////////////////////////////////////////////// 72 | TYPE* operator[] (int nIndex); 73 | const TYPE* operator[] (int nIndex) const; 74 | 75 | protected: 76 | 77 | ///////////////////////////////////////////////////////////// 78 | // Member Data 79 | ///////////////////////////////////////////////////////////// 80 | TYPE** m_ppData; // The matrix data array 81 | int m_cx; // Matrix size x 82 | int m_cy; // Matrix size y 83 | }; 84 | 85 | template 86 | CMatrix::CMatrix() 87 | { 88 | m_ppData = NULL; 89 | m_cx = 0; 90 | m_cy = 0; 91 | } 92 | 93 | template 94 | CMatrix::~CMatrix() 95 | { 96 | Destroy(); 97 | } 98 | 99 | template 100 | BOOL CMatrix::Create(int cx, int cy) 101 | { 102 | Destroy(); 103 | 104 | if (cx <= 0 || cy <= 0) 105 | return FALSE; 106 | 107 | m_cx = cx; 108 | m_cy = cy; 109 | 110 | m_ppData = new TYPE*[m_cx]; 111 | if (m_ppData == NULL) 112 | return FALSE; 113 | 114 | ::memset(m_ppData, 0, m_cx * sizeof(TYPE*)); 115 | for (int i = 0; i < m_cx; i++) 116 | { 117 | m_ppData[i] = new TYPE[m_cy]; 118 | if (m_ppData[i] == NULL) 119 | { 120 | Destroy(); 121 | return FALSE; 122 | } 123 | } 124 | 125 | return TRUE; 126 | } 127 | 128 | template 129 | BOOL CMatrix::Create(int cx, int cy, ARG_TYPE initValue) 130 | { 131 | if (!Create(cx, cy)) 132 | return FALSE; 133 | 134 | for (int i = 0; i < m_cx; i++) 135 | { 136 | for (int j = 0; j < m_cy; j++) 137 | m_ppData[i][j] = initValue; 138 | } 139 | 140 | return TRUE; 141 | } 142 | 143 | template 144 | void CMatrix::Destroy() 145 | { 146 | if (m_ppData) 147 | { 148 | for (int i = 0; i < m_cx; i++) 149 | { 150 | if (m_ppData[i]) 151 | { 152 | delete [] m_ppData[i]; 153 | m_ppData[i] = NULL; 154 | } 155 | } 156 | 157 | delete [] m_ppData; 158 | m_ppData = NULL; 159 | } 160 | 161 | m_cx = 0; 162 | m_cy = 0; 163 | } 164 | 165 | template 166 | BOOL CMatrix::IsValidIndex(int x, int y) const 167 | { 168 | return m_ppData != NULL && x >= 0 && x < m_cx && y >= 0 && y < m_cy; 169 | } 170 | 171 | template 172 | const TYPE& CMatrix::GetAt(int x, int y) const 173 | { 174 | ASSERT(IsValidIndex(x, y)); 175 | return m_ppData[x][y]; 176 | } 177 | 178 | template 179 | TYPE& CMatrix::ElementAt(int x, int y) 180 | { 181 | ASSERT(IsValidIndex(x, y)); 182 | return m_ppData[x][y]; 183 | } 184 | 185 | template 186 | BOOL CMatrix::SetAt(int x, int y, ARG_TYPE data) 187 | { 188 | if (!IsValidIndex(x, y)) 189 | return FALSE; 190 | 191 | m_ppData[x][y] = data; 192 | return TRUE; 193 | } 194 | 195 | template 196 | TYPE** CMatrix::GetData() 197 | { 198 | return m_ppData; 199 | } 200 | 201 | template 202 | const TYPE** CMatrix::GetData() const 203 | { 204 | return (const TYPE**)m_ppData; 205 | } 206 | 207 | template 208 | TYPE* CMatrix::operator[] (int nIndex) 209 | { 210 | if (nIndex < 0 || nIndex >= m_cx) 211 | return NULL; 212 | 213 | return m_ppData[nIndex]; 214 | } 215 | 216 | template 217 | const TYPE* CMatrix::operator[] (int nIndex) const 218 | { 219 | if (nIndex < 0 || nIndex >= m_cx) 220 | return NULL; 221 | 222 | return (const TYPE*)m_ppData[nIndex]; 223 | } 224 | 225 | template 226 | int CMatrix::GetCX() const 227 | { 228 | return m_cx; 229 | } 230 | 231 | template 232 | int CMatrix::GetCY() const 233 | { 234 | return m_cy; 235 | } 236 | 237 | template 238 | BOOL CMatrix::IsCreated() const 239 | { 240 | return m_ppData != NULL; 241 | } 242 | 243 | template 244 | SIZE CMatrix::ExportData(TYPE** ppBuffer, int cx, int cy) const 245 | { 246 | SIZE cz = { 0 }; 247 | 248 | if (ppBuffer == m_ppData) 249 | { 250 | cz.cx = m_cx; 251 | cz.cy = m_cy; 252 | return cz; 253 | } 254 | 255 | if (ppBuffer == NULL || cx <= 0 || cy <= 0 || !IsCreated()) 256 | return cz; 257 | 258 | cz.cx = min(cx, m_cx); 259 | cz.cy = min(cy, m_cy); 260 | 261 | for (int i = 0; i < cz.cx; i++) 262 | { 263 | for (int j = 0; j < cz.cy; j++) 264 | ppBuffer[i][j] = m_ppData[i][j]; 265 | } 266 | 267 | return cz; 268 | } 269 | 270 | template 271 | BOOL CMatrix::ExportData(CMatrix& rMatrix) const 272 | { 273 | if (&rMatrix == this) 274 | return IsCreated(); 275 | 276 | if (!IsCreated()) 277 | return FALSE; 278 | 279 | if (rMatrix.GetCX() != m_cx || rMatrix.GetCY() != m_cy) 280 | { 281 | if (!rMatrix.Create(m_cx, m_cy)) 282 | return FALSE; 283 | } 284 | 285 | for (int i = 0; i < m_cx; i++) 286 | { 287 | for (int j = 0; j < m_cy; j++) 288 | rMatrix.m_ppData[i][j] = m_ppData[i][j]; 289 | } 290 | 291 | return TRUE; 292 | } 293 | 294 | template 295 | BOOL CMatrix::ImportData(const TYPE** ppSrc, int cx, int cy) 296 | { 297 | if (ppSrc == m_ppData) 298 | return IsCreated(); 299 | 300 | Destroy(); 301 | if (ppSrc == NULL || cx <= 0 || cy <= 0) 302 | return FALSE; 303 | 304 | if (!Create(cx, cy)) 305 | return FALSE; 306 | 307 | for (int i = 0; i < m_cx; i++) 308 | { 309 | for (int j = 0; j < m_cy; j++) 310 | m_ppData[i][j] = ppSrc[i][j]; 311 | } 312 | 313 | return TRUE; 314 | } 315 | 316 | template 317 | BOOL CMatrix::ImportData(const CMatrix& rSrc) 318 | { 319 | return rSrc.ExportData(*this); 320 | } 321 | 322 | #endif // __MATRIX_H__ -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Message.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Message.cpp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Message.h: -------------------------------------------------------------------------------- 1 | VOID DeathMessage(); 2 | BOOL FASTCALL Input(WCHAR * Text); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Miscellaneous.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | VOID GameInfo() 4 | { 5 | if (V_RememberGameName || V_RememberGamePassword) 6 | { 7 | LPGAMESTRUCTINFO Info = D2CLIENT_GetGameInfo(); 8 | 9 | if (Info) 10 | { 11 | if (V_RememberGameName) wcscpy(V_GameName, Info->szGameName); 12 | if (V_RememberGamePassword) wcscpy(V_GamePassword, Info->szGamePassword); 13 | } 14 | } 15 | } 16 | 17 | VOID FASTCALL LogInGameMessages(WCHAR * Message) 18 | { 19 | CHAR buf[0x400]; 20 | CHAR c; 21 | c = 0; 22 | LPSTR p = buf; 23 | 24 | for (WCHAR * pw = Message; *pw; ++pw) 25 | { 26 | if (*pw == 0xFF) 27 | c = 3; 28 | 29 | if (c != 0) 30 | --c; 31 | else 32 | *p++ = *(LPSTR)pw; 33 | } 34 | 35 | *p++ = '\r'; 36 | *p++ = '\n'; 37 | *p = '\0'; 38 | 39 | CHAR File[MAX_PATH]; 40 | strncpy_s(File, sizeof(File), V_FileNamePath, sizeof(File)); 41 | strcat_s(File, "\\Message Log.txt"); 42 | 43 | HANDLE hFile = OpenFileWrite(File); 44 | SetFilePointer(hFile, 0, 0, FILE_END); 45 | WriteFile(hFile, buf, (DWORD)strlen(buf)); 46 | CloseHandle(hFile); 47 | } 48 | 49 | BOOL FASTCALL NextGameName(LPCONTROL Box, BOOL (STDCALL * FunCallBack)(LPCONTROL, DWORD, DWORD)) 50 | { 51 | if (!V_RememberGameName || wcslen(V_GameName) <= 0) 52 | return FALSE; 53 | 54 | D2WIN_SetControlText(Box, V_GameName); 55 | D2WIN_SelectEditBoxText(Box, V_GameName); 56 | D2WIN_SetEditBoxProc(Box, FunCallBack); 57 | return TRUE; 58 | } 59 | 60 | BOOL FASTCALL NextGamePassword(LPCONTROL Box, BOOL (STDCALL * FunCallBack)(LPCONTROL, DWORD, DWORD)) 61 | { 62 | if (!V_RememberGamePassword || wcslen(V_GamePassword) <= 0) 63 | return FALSE; 64 | 65 | D2WIN_SetControlText(Box, V_GamePassword); 66 | D2WIN_SelectEditBoxText(Box, V_GamePassword); 67 | D2WIN_SetEditBoxProc(Box, FunCallBack); 68 | return TRUE; 69 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Miscellaneous.h: -------------------------------------------------------------------------------- 1 | VOID GameInfo(); 2 | VOID FASTCALL LogInGameMessages(WCHAR * Message); 3 | BOOL FASTCALL NextGameName(LPCONTROL Box, BOOL (STDCALL * FunCallBack)(LPCONTROL, DWORD, DWORD)); 4 | BOOL FASTCALL NextGamePassword(LPCONTROL Box, BOOL (STDCALL * FunCallBack)(LPCONTROL, DWORD, DWORD)); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Offset.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | #include "Patch.h" 3 | 4 | VOID DefineOffsets() 5 | { 6 | LPDWORD Pointer = (LPDWORD)&D2PTRS_START; 7 | 8 | do *Pointer = GetDllOffset(*Pointer); 9 | while (++Pointer <= (LPDWORD)&D2PTRS_END); 10 | 11 | for (INT i = 0; i < ArraySize(Patches); i++) 12 | Patches[i].dwAddr = GetDllOffset(Patches[i].dwAddr); 13 | } 14 | 15 | DWORD GetDllOffset(LPSTR DLLName, INT Offset) 16 | { 17 | HMODULE Mod = GetModuleHandleA(DLLName); 18 | 19 | if (!Mod) 20 | Mod = LoadLibraryA(DLLName); 21 | 22 | if (!Mod) 23 | return FALSE; 24 | 25 | if (Offset < 0) 26 | return (DWORD)GetProcAddress(Mod, (LPCSTR)(-Offset)); 27 | 28 | return (DWORD)Mod + Offset; 29 | } 30 | 31 | DWORD GetDllOffset(INT Number) 32 | { 33 | static LPSTR DLL[] = 34 | { 35 | "D2Client.DLL", 36 | "D2Common.DLL", 37 | "D2Gfx.DLL", 38 | "D2Lang.DLL", 39 | "D2Win.DLL", 40 | "D2Net.DLL", 41 | "D2Game.DLL", 42 | "D2Launch.DLL", 43 | "Fog.DLL", 44 | "BNClient.DLL", 45 | "Storm.DLL", 46 | "D2Cmp.DLL", 47 | "D2Multi.DLL", 48 | "D2MCPClient.DLL" 49 | }; 50 | 51 | return GetDllOffset(DLL[Number & 0xFF], Number >> 8); 52 | } 53 | 54 | VOID InstallPatches(BOOL Type) 55 | { 56 | for (INT i = 0; i < ArraySize(Patches); i++) 57 | { 58 | if (Patches[i].Type == Type) 59 | { 60 | Patches[i].bOldCode = new BYTE[Patches[i].dwLen]; 61 | memcpy((LPVOID)Patches[i].bOldCode, (LPVOID)Patches[i].dwAddr, Patches[i].dwLen); 62 | Patches[i].pFunc(Patches[i].dwAddr, Patches[i].dwFunc, Patches[i].dwLen); 63 | } 64 | } 65 | } 66 | 67 | VOID RemovePatches(BOOL Type) 68 | { 69 | for (INT i = 0; i < ArraySize(Patches); i++) 70 | { 71 | if (Patches[i].Type == Type) 72 | { 73 | WriteBytes((LPVOID)Patches[i].dwAddr, Patches[i].bOldCode, Patches[i].dwLen); 74 | delete Patches[i].bOldCode; 75 | } 76 | } 77 | } 78 | 79 | BOOL WriteBytes(LPVOID pAddr, VOID * pData, DWORD dwLen) 80 | { 81 | DWORD dwOld; 82 | 83 | if(!VirtualProtect(pAddr, dwLen, PAGE_READWRITE, &dwOld)) 84 | return FALSE; 85 | 86 | ::memcpy(pAddr, pData, dwLen); 87 | return VirtualProtect(pAddr, dwLen, dwOld, &dwOld); 88 | } 89 | 90 | VOID FillBytes(LPVOID Address, BYTE Fill, DWORD Length) 91 | { 92 | BYTE * Code = new BYTE[Length]; 93 | ::memset(Code, Fill, Length); 94 | WriteBytes(Address, Code, Length); 95 | delete Code; 96 | } 97 | 98 | VOID InterceptLocalCode(BYTE bInst, DWORD pAddr, DWORD pFunc, DWORD dwLen) 99 | { 100 | BYTE *bCode = new BYTE[dwLen]; 101 | ::memset(bCode, 0x90, dwLen); 102 | DWORD dwFunc = pFunc - (pAddr + 5); 103 | 104 | bCode[0] = bInst; 105 | *(DWORD *)&bCode[1] = dwFunc; 106 | WriteBytes((VOID *)pAddr, bCode, dwLen); 107 | delete bCode; 108 | } 109 | 110 | VOID PatchCall(DWORD dwAddr, DWORD dwFunc, DWORD dwLen) 111 | { 112 | InterceptLocalCode(INST_CALL, dwAddr, dwFunc, dwLen); 113 | } 114 | 115 | VOID PatchFill(DWORD dwAddr, DWORD dwFunc, DWORD dwLen) 116 | { 117 | FillBytes((LPVOID)dwAddr, (BYTE)dwFunc, dwLen); 118 | } 119 | 120 | VOID PatchJmp(DWORD dwAddr, DWORD dwFunc, DWORD dwLen) 121 | { 122 | InterceptLocalCode(INST_JMP, dwAddr, dwFunc, dwLen); 123 | } 124 | 125 | VOID PatchBytes(DWORD dwAddr, DWORD dwValue, DWORD dwLen) 126 | { 127 | BYTE *bCode = new BYTE[dwLen]; 128 | ::memset(bCode, (BYTE)dwValue, dwLen); 129 | WriteBytes((LPVOID)dwAddr, bCode, dwLen); 130 | delete bCode; 131 | } 132 | 133 | VOID GamePatch(BOOL InGame) 134 | { 135 | if (InGame) 136 | { 137 | if (V_PatchInGame == -1) 138 | { 139 | V_Design = new Design; 140 | V_Reveal = new Reveal; 141 | } 142 | 143 | if (V_PatchInGame == FALSE) 144 | { 145 | RemovePatches(OUTGAME); 146 | InstallPatches(INGAME); 147 | } 148 | 149 | if (V_PatchOutGame) 150 | { 151 | RemovePatches(OUTGAME); 152 | InstallPatches(INGAME); 153 | V_PatchOutGame = FALSE; 154 | } 155 | } 156 | 157 | else 158 | { 159 | if (V_PatchInGame == -1) 160 | { 161 | if (V_Design) delete V_Design; 162 | if (V_Design) delete V_Reveal; 163 | } 164 | 165 | if (V_PatchInGame == TRUE) 166 | { 167 | if (RemovePEHeader(V_DLL)) 168 | { 169 | RemovePatches(INGAME); 170 | 171 | delete V_Design; 172 | delete V_Reveal; 173 | 174 | InstallPatches(OUTGAME); 175 | V_PatchOutGame = TRUE; 176 | 177 | V_PatchInGame = -1; 178 | } 179 | 180 | else 181 | TerminateProcess(GetCurrentProcess(), NULL); 182 | } 183 | 184 | if (!V_PatchOutGame) 185 | { 186 | RemovePatches(INGAME); 187 | InstallPatches(OUTGAME); 188 | V_PatchOutGame = TRUE; 189 | } 190 | } 191 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Offset.h: -------------------------------------------------------------------------------- 1 | #ifndef _OFFSETS_H 2 | #define _OFFSETS_H 3 | 4 | #define INST_INT3 0xCC 5 | #define INST_CALL 0xE8 6 | #define INST_NOP 0x90 7 | #define INST_JMP 0xE9 8 | #define INST_RET 0xC3 9 | 10 | #define INGAME 1 11 | #define OUTGAME 0 12 | 13 | typedef struct Patch_t 14 | { 15 | VOID (*pFunc)(DWORD, DWORD, DWORD); 16 | DWORD dwAddr; 17 | DWORD dwFunc; 18 | DWORD dwLen; 19 | BOOL Type; 20 | LPBYTE bOldCode; 21 | } PATCH; 22 | 23 | VOID DefineOffsets(); 24 | DWORD GetDllOffset(INT Number); 25 | DWORD GetDllOffset(LPSTR DLLName, INT Offset); 26 | VOID RemovePatches(BOOL Type); 27 | VOID InstallPatches(BOOL Type); 28 | VOID PatchBytes(DWORD dwAddr, DWORD dwValue, DWORD dwLen); 29 | VOID PatchJmp(DWORD dwAddr, DWORD dwFunc, DWORD dwLen); 30 | VOID PatchFill(DWORD dwAddr, DWORD dwFunc, DWORD dwLen); 31 | VOID PatchCall(DWORD dwAddr, DWORD dwFunc, DWORD dwLen); 32 | VOID InterceptLocalCode(BYTE bInst, DWORD pAddr, DWORD pFunc, DWORD dwLen); 33 | VOID FillBytes(LPVOID Address, BYTE Fill, DWORD Length); 34 | BOOL WriteBytes(LPVOID pAddr, VOID *pData, DWORD dwLen); 35 | VOID GamePatch(BOOL InGame); 36 | 37 | #endif -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Packet Received.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Packet Received.cpp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Packet Received.h: -------------------------------------------------------------------------------- 1 | BOOL FASTCALL OnGamePacketReceived(LPBYTE Packet, DWORD Length); 2 | BOOL FASTCALL OnMCPPacketReceived(LPBYTE Packet); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Packet Sent.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | BOOL FASTCALL OnGamePacketSent(LPBYTE Packet, DWORD Length) 4 | { 5 | if (Packet[0] <= 0x11) 6 | { 7 | if (V_TP) 8 | return FALSE; 9 | 10 | if (!V_TeleportQueue.IsEmpty()) 11 | V_TeleportQueue.RemoveAll(); 12 | 13 | if (V_TeleWalk) 14 | { 15 | Teleport(*(LPWORD)&Packet[1], *(LPWORD)&Packet[3]); 16 | V_TeleWalk = FALSE; 17 | } 18 | } 19 | 20 | if (Packet[0] == 0x13) 21 | { 22 | if (V_BlockTP && ClientReady(TRUE)) 23 | { 24 | LPUNITANY Unit = (LPUNITANY)GetUnit(*(LPDWORD)&Packet[5], UNIT_TYPE_OBJECT); 25 | DOUBLE LifePercent = CalcPercent((GetUnitStat(Me, STAT_HP) >> 8), (GetUnitStat(Me, STAT_MAXHP) >> 8)); 26 | DOUBLE ManaPercent = CalcPercent((GetUnitStat(Me, STAT_MANA) >> 8), (GetUnitStat(Me, STAT_MAXMANA) >> 8)); 27 | 28 | if (Unit && Unit->dwTxtFileNo == 0x3B && InTown(Me)) 29 | { 30 | if (V_LifeTownPercent > 0 && LifePercent <= V_LifeTownPercent || V_ManaTownPercent > 0 && ManaPercent <= V_ManaTownPercent) 31 | return FALSE; 32 | } 33 | } 34 | } 35 | 36 | if (Packet[0] == 0x18) 37 | { 38 | if (V_CubeOrStashOpened) 39 | if ((*(LPDWORD)&Packet[13] == STORAGE_STASH || *(LPDWORD)&Packet[13] == STORAGE_CUBE) && !InTown(Me)) 40 | return FALSE; 41 | } 42 | 43 | if (Packet[0] == 0x19) 44 | { 45 | if (V_CubeOrStashOpened) 46 | { 47 | LPUNITANY Unit = (LPUNITANY)GetUnit(*(LPDWORD)&Packet[1], UNIT_TYPE_ITEM); 48 | 49 | if (Unit && (GetItemLocation(Unit) == STORAGE_STASH || GetItemLocation(Unit) == STORAGE_CUBE)) 50 | return FALSE; 51 | } 52 | } 53 | 54 | return TRUE; 55 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Packet Sent.h: -------------------------------------------------------------------------------- 1 | BOOL FASTCALL OnGamePacketSent(LPBYTE Packet, DWORD Length); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Patch Stubs.h: -------------------------------------------------------------------------------- 1 | VOID AddShrineSTUB(); 2 | VOID AfterAttackSTUB(); 3 | VOID CreateGameBoxSTUB(); 4 | VOID DrawSTUB(); 5 | VOID DrawAutomapSTUB(); 6 | VOID DrawEnteringLevelTextSTUB(); 7 | VOID DrawManaOrbSTUB(); 8 | VOID EndSTUB(); 9 | VOID FrameRemainSTUB(); 10 | VOID FullLightRadiusSTUB(); 11 | VOID InfraVisionSTUB(); 12 | VOID InputLineSTUB1(); 13 | VOID InputLineSTUB2(); 14 | VOID InputSTUB(); 15 | VOID ItemBasicStatSTUB(); 16 | VOID ItemNameSTUB(); 17 | VOID LifeBarSTUB(); 18 | VOID LoadAutomapLayerFromFileSTUB(); 19 | VOID LoopSTUB(); 20 | VOID MessageLogSTUB1(); 21 | VOID MessageLogSTUB2(); 22 | VOID MonsterDeathSTUB(); 23 | VOID MonsterDescCommaSTUB1(); 24 | VOID MonsterDescCommaSTUB2(); 25 | VOID MonsterDescCommaSTUB3(); 26 | VOID MonsterLifeBarNameSTUB(); 27 | VOID OnGameKeyDownSTUB(); 28 | VOID OnGamePacketReceivedSTUB(); 29 | VOID OnGamePacketSentSTUB(); 30 | VOID OnMCPPacketReceivedSTUB(); 31 | VOID OnUseSkillSTUB(); 32 | VOID OutTownSelectSTUB1(); 33 | VOID OutTownSelectSTUB2(); 34 | VOID OutTownSelectSTUB3(); 35 | VOID OverrideShrineSTUB(); 36 | VOID PassingActBugFixSTUB(); 37 | VOID PlayerAssignmentSTUB(); 38 | VOID PlayerBlobSTUB(); 39 | VOID RefreshGameListSTUB(); 40 | VOID SaveAutomapLayerToFileSTUB(); 41 | VOID ShakeSTUB(); 42 | VOID SocketProtectionSTUB(); 43 | VOID SocketProtectionSTUB1(); 44 | VOID SocketProtectionSTUB2(); 45 | VOID SocketViewtableSTUB1(); 46 | VOID SocketViewtableSTUB2(); 47 | VOID ViewInventorySTUB1(); 48 | VOID ViewInventorySTUB2(); 49 | VOID ViewInventorySTUB3(); 50 | VOID ViewInventorySTUB4(); 51 | VOID ViewStatSTUB1(); 52 | VOID ViewStatSTUB2(); 53 | VOID WeatherSTUB(); 54 | VOID WindowProcSTUB(); 55 | VOID WinDrawSTUB(); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Patch.h: -------------------------------------------------------------------------------- 1 | #define CopyAndPasteBugFix INST_JMP 2 | #define FloorsInside INST_NOP 3 | #define LeftClickAllSkills 0xEB 4 | #define ShiftClickFarcast 0x01 5 | #define ShrineDistance INST_NOP 6 | #define WallsInside INST_NOP 7 | 8 | PATCH Patches[] = 9 | { 10 | {PatchCall, DLLOFFSET(D2CLIENT, 0x61D83), (DWORD)AddShrineSTUB, 6, INGAME}, 11 | //{PatchCall, DLLOFFSET(D2CLIENT, 0xA302B), (DWORD)AfterAttackSTUB, 10, INGAME}, 12 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x3CB20), (DWORD)AttackLoop, 6, INGAME}, 13 | {PatchCall, DLLOFFSET(D2CLIENT, 0x604EA), (DWORD)AutomapCells, 5, INGAME}, 14 | {PatchJmp, DLLOFFSET(D2CLIENT, 0xC3DB5), (DWORD)DrawSTUB, 5, INGAME}, 15 | {PatchJmp, DLLOFFSET(D2CLIENT, 0x626C9), (DWORD)DrawAutomapSTUB, 5, INGAME}, 16 | {PatchCall, DLLOFFSET(D2CLIENT, 0xC3AA1), (DWORD)DrawEnteringLevelTextSTUB, 5, INGAME}, 17 | {PatchCall, DLLOFFSET(D2CLIENT, 0x2929E), (DWORD)DrawManaOrbSTUB, 5, INGAME}, 18 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x45153), (DWORD)EndSTUB, 5, INGAME}, 19 | {PatchFill, DLLOFFSET(D2CLIENT, 0x625C4), (DWORD)FloorsInside, 2, INGAME}, 20 | {PatchCall, DLLOFFSET(D2CLIENT, 0xA9A27), (DWORD)FullLightRadiusSTUB, 5, INGAME}, 21 | {PatchCall, DLLOFFSET(D2CLIENT, 0xA3030), (DWORD)GameAfterAttack, 5, INGAME}, 22 | {PatchCall, DLLOFFSET(D2CLIENT, 0x442A2), (DWORD)GameShake, 5, INGAME}, 23 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x1BF94), (DWORD)GetSelectedUnit, 5, INGAME}, 24 | {PatchCall, DLLOFFSET(D2CLIENT, 0x9A695), (DWORD)GetViewingUnit, 5, INGAME}, 25 | //{PatchCall, DLLOFFSET(D2CLIENT, 0xBCBA3), (DWORD)GetViewingUnit, 5, INGAME}, 26 | //{PatchCall, DLLOFFSET(D2CLIENT, 0xBCEA6), (DWORD)GetViewingUnit, 5, INGAME}, 27 | //{PatchCall, DLLOFFSET(D2CLIENT, 0xBD743), (DWORD)GetViewingUnit, 5, INGAME}, 28 | //{PatchCall, DLLOFFSET(D2CLIENT, 0xBB983), (DWORD)InfraVisionSTUB, 7, INGAME}, 29 | {PatchCall, DLLOFFSET(D2CLIENT, 0x70C6C), (DWORD)InputLineSTUB1, 5, INGAME}, 30 | {PatchCall, DLLOFFSET(D2CLIENT, 0x7037B), (DWORD)InputLineSTUB2, 5, INGAME}, 31 | {PatchCall, DLLOFFSET(D2CLIENT, 0x70B75), (DWORD)InputSTUB, 5, INGAME}, 32 | {PatchBytes, DLLOFFSET(D2CLIENT, 0x3F8DF), (DWORD)INST_NOP, 2, INGAME}, 33 | {PatchBytes, DLLOFFSET(D2CLIENT, 0x1A073), (DWORD)INST_NOP, 6, INGAME}, 34 | {PatchCall, DLLOFFSET(D2CLIENT, 0x55C1D), (DWORD)ItemBasicStatSTUB, 5, INGAME}, 35 | {PatchCall, DLLOFFSET(D2CLIENT, 0x92366), (DWORD)ItemNameSTUB, 6, INGAME}, 36 | {PatchBytes, DLLOFFSET(D2CLIENT, 0x3E8E4), (DWORD)LeftClickAllSkills, 1, INGAME}, 37 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x61E70), (DWORD)LoadAutomapLayerFromFileSTUB, 6, INGAME}, 38 | {PatchCall, DLLOFFSET(D2CLIENT, 0x44230), (DWORD)LoopSTUB, 7, INGAME}, 39 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x7D8A8), (DWORD)MessageLogSTUB1, 5, INGAME}, 40 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x7D61F), (DWORD)MessageLogSTUB2, 5, INGAME}, 41 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x20FBE), (DWORD)MonsterDeathSTUB, 5, INGAME}, 42 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x1FE3B), (DWORD)MonsterDescCommaSTUB1, 5, INGAME}, 43 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x1FF25), (DWORD)MonsterDescCommaSTUB2, 5, INGAME}, 44 | //{PatchCall, DLLOFFSET(D2CLIENT, 0xC0C01), (DWORD)MonsterDescCommaSTUB3, 6, INGAME}, 45 | {PatchCall, DLLOFFSET(D2CLIENT, 0x38BB5), (DWORD)OnGameKeyDownSTUB, 7, INGAME}, 46 | {PatchCall, DLLOFFSET(D2CLIENT, 0xACE61), (DWORD)OnGamePacketReceivedSTUB, 5, INGAME}, 47 | {PatchJmp, DLLOFFSET(D2CLIENT, 0xD252), (DWORD)OnGamePacketSentSTUB, 6, INGAME}, 48 | {PatchCall, DLLOFFSET(D2CLIENT, 0x1A060), (DWORD)OnUseSkillSTUB, 5, INGAME}, 49 | {PatchCall, DLLOFFSET(D2CLIENT, 0x1BF25), (DWORD)OutTownSelectSTUB1, 6, INGAME}, 50 | {PatchCall, DLLOFFSET(D2CLIENT, 0xA6941), (DWORD)OutTownSelectSTUB2, 6, INGAME}, 51 | {PatchCall, DLLOFFSET(D2CLIENT, 0xA69EE), (DWORD)OutTownSelectSTUB3, 6, INGAME}, 52 | {PatchCall, DLLOFFSET(D2CLIENT, 0x61354), (DWORD)OverrideShrineSTUB, 7, INGAME}, 53 | //{PatchCall, DLLOFFSET(D2CLIENT, 0xC5A24), (DWORD)PassingActBugFixSTUB, 9, INGAME}, 54 | //{PatchJmp, DLLOFFSET(D2CLIENT, 0xADF37), (DWORD)PlayerAssignmentSTUB, 5, INGAME}, 55 | {PatchCall, DLLOFFSET(D2CLIENT, 0x6175D), (DWORD)PlayerBlobSTUB, 6, INGAME}, 56 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x61140), (DWORD)SaveAutomapLayerToFileSTUB, 5, INGAME}, 57 | {PatchCall, DLLOFFSET(D2CLIENT, 0x8B096), (DWORD)ShakeSTUB, 6, INGAME}, 58 | {PatchBytes, DLLOFFSET(D2CLIENT, 0x1B7A7), (DWORD)ShiftClickFarcast, 1, INGAME}, 59 | {PatchFill, DLLOFFSET(D2CLIENT, 0x61D31), (DWORD)ShrineDistance, 6, INGAME}, 60 | {PatchCall, DLLOFFSET(D2CLIENT, 0x99174), (DWORD)SocketProtectionSTUB1, 6, INGAME}, 61 | {PatchCall, DLLOFFSET(D2CLIENT, 0x96FAB), (DWORD)SocketProtectionSTUB2, 6, INGAME}, 62 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x93450), (DWORD)SocketViewtableSTUB1, 5, INGAME}, 63 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x933E2), (DWORD)SocketViewtableSTUB2, 5, INGAME}, 64 | {PatchCall, DLLOFFSET(D2CLIENT, 0x953E2), (DWORD)ViewInventorySTUB1, 6, INGAME}, 65 | {PatchCall, DLLOFFSET(D2CLIENT, 0x94AB4), (DWORD)ViewInventorySTUB2, 6, INGAME}, 66 | {PatchCall, DLLOFFSET(D2CLIENT, 0x93A6F), (DWORD)ViewInventorySTUB3, 5, INGAME}, 67 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x99120), (DWORD)ViewInventorySTUB4, 5, INGAME}, 68 | //{PatchCall, DLLOFFSET(D2CLIENT, 0x2FE63), (DWORD)ViewStatSTUB1, 6, INGAME}, 69 | //{PatchCall, DLLOFFSET(D2CLIENT, 0xBC524), (DWORD)ViewStatSTUB2, 6, INGAME}, 70 | {PatchFill, DLLOFFSET(D2CLIENT, 0x6260A), (DWORD)WallsInside, 2, INGAME}, 71 | 72 | //{PatchJmp, DLLOFFSET(D2COMMON, 0x325B1), (DWORD)FrameRemainSTUB, 5, INGAME}, 73 | {PatchJmp, DLLOFFSET(D2COMMON, 0x6CCB6), (DWORD)WeatherSTUB, 5, INGAME}, 74 | 75 | {PatchCall, DLLOFFSET(D2MCPCLIENT, 0x69D7), (DWORD)OnMCPPacketReceivedSTUB, 5, OUTGAME}, 76 | 77 | {PatchCall, DLLOFFSET(D2MULTI, 0x149EF), (DWORD)CreateGameBoxSTUB, 5, OUTGAME}, 78 | {PatchCall, DLLOFFSET(D2MULTI, 0x11DC3), (DWORD)DestroyGameList, 5, OUTGAME}, 79 | {PatchCall, DLLOFFSET(D2MULTI, 0x14A0B), (DWORD)NextGameName, 5, OUTGAME}, 80 | {PatchCall, DLLOFFSET(D2MULTI, 0x14D29), (DWORD)NextGameName, 5, OUTGAME}, 81 | {PatchCall, DLLOFFSET(D2MULTI, 0x14A46), (DWORD)NextGamePassword, 5, OUTGAME}, 82 | {PatchCall, DLLOFFSET(D2MULTI, 0x14D64), (DWORD)NextGamePassword, 5, OUTGAME}, 83 | {PatchCall, DLLOFFSET(D2MULTI, 0xDF4E), (DWORD)RefreshGameListSTUB, 5, OUTGAME}, 84 | 85 | //{PatchFill, DLLOFFSET(D2WIN, 0x9E1A), (DWORD)CopyAndPasteBugFix, 1, INGAME}, 86 | //{PatchCall, DLLOFFSET(D2WIN, 0x12C68), (DWORD)LifeBarSTUB, 6, INGAME}, 87 | {PatchCall, DLLOFFSET(D2WIN, 0x118F0), (DWORD)MonsterLifeBarNameSTUB, 6, INGAME}, 88 | //{PatchCall, DLLOFFSET(D2WIN, 0x17740), (DWORD)WindowProcSTUB, 5, INGAME}, 89 | {PatchCall, DLLOFFSET(D2WIN, 0x18911), (DWORD)WinDrawSTUB, 5, OUTGAME} 90 | }; -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Potion.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Potion.cpp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Potion.h: -------------------------------------------------------------------------------- 1 | BOOL Health(); 2 | BOOL Mana(); 3 | BOOL Potion(); 4 | BOOL Rejuvenation(); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Project.cbp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 116 | 117 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Project.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Project.ncb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Project.ncb -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Project.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 10.00 3 | # Visual C++ Express 2008 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Project", "Project.vcproj", "{BF4CDA19-DF6F-457D-9DAA-75D0389C2776}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {BF4CDA19-DF6F-457D-9DAA-75D0389C2776}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {BF4CDA19-DF6F-457D-9DAA-75D0389C2776}.Debug|Win32.Build.0 = Debug|Win32 14 | {BF4CDA19-DF6F-457D-9DAA-75D0389C2776}.Release|Win32.ActiveCfg = Release|Win32 15 | {BF4CDA19-DF6F-457D-9DAA-75D0389C2776}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Project.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Project.suo -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Project.vcproj: -------------------------------------------------------------------------------- 1 |  2 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | 24 | 27 | 30 | 33 | 36 | 39 | 51 | 54 | 57 | 60 | 69 | 72 | 75 | 78 | 81 | 84 | 87 | 90 | 91 | 97 | 100 | 103 | 106 | 109 | 112 | 125 | 128 | 131 | 134 | 146 | 149 | 152 | 155 | 158 | 161 | 164 | 167 | 168 | 169 | 170 | 171 | 172 | 177 | 180 | 181 | 184 | 185 | 188 | 189 | 192 | 193 | 196 | 197 | 200 | 201 | 204 | 205 | 208 | 209 | 212 | 213 | 216 | 217 | 220 | 221 | 224 | 225 | 228 | 229 | 232 | 233 | 236 | 237 | 240 | 241 | 244 | 245 | 248 | 249 | 252 | 253 | 256 | 257 | 260 | 261 | 264 | 265 | 268 | 269 | 272 | 273 | 276 | 277 | 280 | 281 | 284 | 285 | 288 | 289 | 292 | 293 | 296 | 297 | 300 | 301 | 304 | 305 | 308 | 309 | 312 | 313 | 316 | 317 | 320 | 321 | 324 | 325 | 326 | 331 | 332 | 337 | 340 | 341 | 344 | 345 | 348 | 349 | 352 | 353 | 356 | 357 | 360 | 361 | 364 | 365 | 368 | 369 | 372 | 373 | 376 | 377 | 380 | 381 | 384 | 385 | 388 | 389 | 392 | 393 | 396 | 397 | 400 | 401 | 404 | 405 | 408 | 409 | 412 | 413 | 416 | 417 | 420 | 421 | 424 | 425 | 428 | 429 | 432 | 433 | 436 | 437 | 440 | 441 | 444 | 445 | 448 | 449 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Project.vcproj.PC.Boozled.user: -------------------------------------------------------------------------------- 1 |  2 | 7 | 8 | 11 | 35 | 36 | 39 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Aim.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Aim.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Automatically Close Errors.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Automatically Close Errors.exe -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/BuildLog.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/BuildLog.htm -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Common Math.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Common Math.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Configuration.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Configuration.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Copy and Paste.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Copy and Paste.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/D2 Stdio.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/D2 Stdio.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/D2 Stubs.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/D2 Stubs.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Design.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Design.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Enchant.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Enchant.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Escape.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Escape.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Font Colors.txt: -------------------------------------------------------------------------------- 1 | Bright White - -1 2 | White - 0 3 | Red - 1 4 | Green - 2 5 | Blue - 3 6 | Gold - 4 7 | Gray - 5 8 | Black - 6 9 | Gold 2 - 7 10 | Orange - 8 11 | Yellow - 9 12 | Dark Green - 10 13 | Purple - 11 14 | Dark Green 2 - 12 15 | Bright White 2 - 13 16 | Black 2 - 14 17 | Silver - 15 18 | Light Gray - 16 19 | Messy - 17 20 | Bright White 3 - 18 21 | Red 2 - 19 -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Game Filter.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Game Filter.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Hack.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Hack.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Handlers.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Handlers.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Helpers.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Helpers.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/In-Game Commands.txt: -------------------------------------------------------------------------------- 1 | -------------------------------AIM----------------------------- 2 | .AA - Toggles Aim 3 | .BF - Toggles Block Fake Attacks/Casts when attacking with Aim 4 | 5 | --------------------------CONFIGURATION------------------------ 6 | .Load - Reloads this configuration file 7 | .Save - Saves in-game settings to this configuration file 8 | 9 | --------------------------DEATH MESSAGE------------------------ 10 | .DM - Toggles Death Message 11 | 12 | ------------------------------DESIGN--------------------------- 13 | .Clean - Toggles Design 14 | .SS - Toggles Hide On Screenshot 15 | 16 | ------------------------------ENCHANT-------------------------- 17 | .EB - Toggles Enchant Bot 18 | 19 | ------------------------------ESCAPE--------------------------- 20 | .BTP - Toggles town portal interaction block when escaped to town 21 | .EL *Variable* - Sets Exit Life % to *Variable* 22 | .EM *Variable* - Sets Exit Mana % to *Variable* 23 | .TL *variable* - Sets Town Life % to *Variable* 24 | .TM *Variable* - Sets Town Mana % to *Variable* 25 | 26 | ------------------------------FLASH---------------------------- 27 | .AF - Toggles Anti Flash 28 | .FC - Stops flashing all flashed players 29 | .FD *Variable* - Sets Flash Delay to *Variable* 30 | 31 | -----------------------------MESSAGE--------------------------- 32 | .0 - Says Death Message Lines 33 | .1 - "Fuck You" message (15 Lines) 34 | .2 - "Swastika" message (18 Lines) 35 | .3 - "Eat A Dick" message (9 Lines) 36 | .4 - "Smoked" message (9 Lines) 37 | .5 - "Schooled" message (10 Lines) 38 | .6 - "Shot The Fuck Down" message (12 Lines) 39 | .7 - "Trash" message (9 Lines) 40 | .8 - "RIP" message (12 Lines) 41 | .9 - "Swastika" message (17 Lines) 42 | .10 - "Pigeon" message (17 Lines) 43 | .11 - "AK-47" message (12 Lines) 44 | .12 - "RHINOWNED" message (16 Lines) 45 | .13 - "Snake" message (16 Lines) 46 | .14 - "FUCK YO' COUCH" message (5 Lines) 47 | .15 - "Clan PvP" message (9 Lines) 48 | .16 - "Fuck you" message (9 Lines) 49 | .17 - "Dead" message (7 Lines) 50 | .18 - "OWNED" message (8 Lines) 51 | .19 - "OWNT" message (8 Lines) 52 | .20 - "Serious Internetting" message (15 Lines) 53 | .21 - "SIT" message (15 Lines) 54 | .22 - "<3" message (9 Lines) 55 | .23 - "Penis'd" message (7 Lines) 56 | .24 - "EZ" message (8 Lines) 57 | .25 - "Raped" message (11 Lines) 58 | <3 - "<3" message (9 Lines) 59 | 60 | --------------------------MISCELLANEOUS------------------------ 61 | .CS *Variable* - Whispers current song to friends in *Variable* color 62 | .Cube - Opens Horadric Cube from anywhere 63 | .Fake *Variable 1* *Variable 2* - Prints out "*Variable 1* was slain by *My Character Name*", followed with an exit message using *Variable 2* for account name 64 | .Hack - Exits the game without a message ("Silent Exit") 65 | .OTS - Toggles Select Players Out Of Town 66 | .SBNM *Variable 1* *Variable 2* - Whispers *Variable 2* to friends in *Variable 1* color 67 | .Stash - Opens Stash from anywhere 68 | .Unload - Unloads this hack 69 | ?Ver - Says the name of this hack 70 | ?Time - Says your local time 71 | ?Score - Says your total score of kills/deaths 72 | ?Ping - Says current FPS, Skip, and Ping 73 | ?Date - Says your local date 74 | ;HC - Toggles hidden commands 75 | 76 | ------------------------------POTION--------------------------- 77 | .HP *Variable* - Sets Life % to *Variable* 78 | .RL *Variable* - Sets Rejuvenation Life % to *Variable* 79 | .MP *Variable* - Sets Mana % to *Variable* 80 | .RM *Variable* - Sets Rejuvenation Mana % to *Variable* 81 | 82 | ------------------------------REVEAL--------------------------- 83 | .MH - Reveals Current Act 84 | .VBS - Toggles View Basic Basic Stats Of Items 85 | 86 | ------------------------------SPEED---------------------------- 87 | .AS *Variable* - Adds *Variable* amount to attack speed % (Max is 255) 88 | .BR *Variable* - Adds *Variable* amount to block rate % (Max is 255) 89 | .CR *Variable* - Adds *Variable* amount to cast rate % (Max is 255) 90 | .HR *Variable* - Adds *Variable* amount to hit recovery rate % (Max is 255) 91 | .RW *Variable* - Adds *Variable* amount to run/walk speed % (Max is 255) 92 | .VP *Variable* - Adds *Variable* amount to velocity % (Max is 255) -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Item.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Item.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Key List.txt: -------------------------------------------------------------------------------- 1 | Left Mouse Button - 1 2 | Right Mouse Button - 2 3 | Control-Break Processing - 3 4 | Middle Mouse Button - 4 5 | Backspace - 8 6 | Tab - 9 7 | Clear - 12 8 | Enter - 13 9 | Shift - 16 10 | Ctrl - 17 11 | Alt - 18 12 | Pause Break - 19 13 | Caps Lock - 20 14 | Esc - 27 15 | Space - 32 16 | Page Up - 33 17 | Page Down - 34 18 | End - 35 19 | Home - 36 20 | Left Arrow - 37 21 | Up Arrow - 38 22 | Right Arrow - 39 23 | Down Arrow - 40 24 | Print - 42 25 | PrtScn - 44 26 | Insert - 45 27 | Delete - 46 28 | Help - 47 29 | 0 - 48 30 | 1 - 49 31 | 2 - 50 32 | 3 - 51 33 | 4 - 52 34 | 5 - 53 35 | 6 - 54 36 | 7 - 55 37 | 8 - 56 38 | 9 - 57 39 | A - 65 40 | B - 66 41 | C - 67 42 | D - 68 43 | E - 69 44 | F - 70 45 | G - 71 46 | H - 72 47 | I - 73 48 | J - 74 49 | K - 75 50 | L - 76 51 | M - 77 52 | N - 78 53 | O - 79 54 | P - 80 55 | Q - 81 56 | R - 82 57 | S - 83 58 | T - 84 59 | U - 85 60 | V - 86 61 | W - 87 62 | X - 88 63 | Y - 89 64 | Z - 90 65 | Left Windows Key - 91 66 | Right Windows Key - 92 67 | Applications Key - 93 68 | Computer Sleep Key - 95 69 | Numpad 0 - 96 70 | Numpad 1 - 97 71 | Numpad 2 - 98 72 | Numpad 3 - 99 73 | Numpad 4 - 100 74 | Numpad 5 - 101 75 | Numpad 6 - 102 76 | Numpad 7 - 103 77 | Numpad 8 - 104 78 | Numapd 9 - 105 79 | Numpad * - 106 80 | Numpad + - 107 81 | Separator Key - 108 82 | Numpad - - 109 83 | Numpad . - 110 84 | Numpad / - 111 85 | F1 - 112 86 | F2 - 113 87 | F3 - 114 88 | F4 - 115 89 | F5 - 116 90 | F6 - 117 91 | F7 - 118 92 | F8 - 119 93 | F9 - 120 94 | F10 - 121 95 | F11 - 122 96 | F12 - 123 97 | F13 - 124 98 | Num Lock - 144 99 | ScrLk - 145 100 | Left Shift Key - 160 101 | Right Shift Key - 161 102 | Left Control Key - 162 103 | Right Control Key - 163 104 | Left Menu Key - 164 105 | Right Menu Key - 165 106 | = - 187 107 | , - 188 108 | - - 189 109 | . - 190 110 | / - 191 111 | ` - 192 112 | [ - 219 113 | \ - 220 114 | ] - 221 -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Message.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Message.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Messages.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Messages.txt -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Miscellaneous.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Miscellaneous.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Offset.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Offset.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Packet Received.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Packet Received.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Packet Sent.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Packet Sent.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Patch Stubs.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Patch Stubs.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Potion.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Potion.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Project.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Project.dll -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Project.dll.intermediate.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Project.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Project.exe -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Project.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Project.ini -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Project.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Project.pdb -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Reveal.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Reveal.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/blobcell.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/blobcell.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/blobcircle.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/blobcircle.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/blobcross1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/blobcross1.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/blobcross2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/blobcross2.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/blobdiamond.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/blobdiamond.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/blobdot.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/blobdot.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine00.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine00.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine01.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine01.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine02.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine02.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine03.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine03.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine06.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine06.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine07.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine07.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine08.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine08.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine09.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine09.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine10.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine11.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine11.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine12.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine12.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine15.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine15.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine17.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine17.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/minishrine18.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/minishrine18.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine00.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine00.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine01.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine01.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine02.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine02.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine03.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine03.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine06.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine06.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine07.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine07.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine08.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine08.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine09.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine09.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine10.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine10.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine11.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine11.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine12.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine12.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine13.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine13.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine14.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine14.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine15.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine15.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine17.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine17.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine18.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine18.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine19.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine19.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine21.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine21.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/shrine22.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/shrine22.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Shrines/waypoint.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Shrines/waypoint.bmp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Skill.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Skill.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Speed.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Speed.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Teleport.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Teleport.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Threads.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Threads.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Unit.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Unit.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Vectors.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Vectors.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/Winamp.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/Winamp.obj -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/mt.dep: -------------------------------------------------------------------------------- 1 | Manifest resource last updated at 12:38:02.06 on Thu 12/30/2010 2 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/vc90.idb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/vc90.idb -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Release/vc90.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Release/vc90.pdb -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Reveal.h: -------------------------------------------------------------------------------- 1 | #include "Matrix.h" 2 | 3 | #define MAP_DATA_NULL -1 4 | #define MAP_DATA_AVOID 11115 5 | #define MAP_DATA_FILL 11111 6 | 7 | #define MYCELL_CHUNK_NUM 15 8 | 9 | typedef struct TCTallys 10 | { 11 | INT groupnos[5]; 12 | INT runeno; 13 | } TCTALLYS, *LPTCTALLYS; 14 | 15 | typedef struct MyAutomapCell 16 | { 17 | WORD nCellNo; 18 | WORD xPixel; 19 | WORD yPixel; 20 | } MYAUTOMAPCELL, *LPMYAUTOMAPCELL; 21 | 22 | typedef struct MyAutomapLayer 23 | { 24 | MyAutomapCell aMyCell[MYCELL_CHUNK_NUM]; 25 | MyAutomapLayer *pNextChunk; 26 | } MYAUTOMAPLAYER, *LPMYAUTOMAPLAYER; 27 | 28 | typedef struct MyAutomapLayerMan 29 | { 30 | MyAutomapLayer *pMyLayer; 31 | WORD wCellChunkNum; 32 | WORD wCellNodeNum; 33 | } MYAUTOMAPLAYERMAN, *LPMYAUTOMAPLAYERMAN; 34 | 35 | typedef struct CaveDescriptor_t 36 | { 37 | CHAR szName[0x40]; 38 | POINT ptPos; 39 | DWORD dwLevelNo; 40 | DWORD dwTargetLevelNo; 41 | DWORD dwAct; 42 | } CAVEDESC, *LPCAVEDESC; 43 | 44 | typedef struct LevelExit_t 45 | { 46 | POINT ptPos; 47 | DWORD dwTargetLevel; 48 | } LEVELEXIT, *LPLEVELEXIT; 49 | 50 | class Reveal 51 | { 52 | public: 53 | Reveal(); 54 | virtual ~Reveal(); 55 | 56 | VOID RevealAutomap(); 57 | BOOL CreateCollisionMap(); 58 | LPLEVEL GetLevel(LPACTMISC misc, DWORD levelno); 59 | BOOL GetCaveExits(LPCAVEDESC *lpLevel, INT nMaxExits); 60 | BOOL GetLevelExits(LPLEVELEXIT *lpLevel, INT nMaxExits); 61 | VOID GetHighestTC(INT tcno, LPTCTALLYS tallys); 62 | VOID DestroyLevelExits(); 63 | 64 | VOID AddMyAutomapCell(LPAUTOMAPCELL cell); 65 | VOID DestroyMyAutomapCells(); 66 | VOID DoRemoveMyAutomapCell(AutomapCell* cell); 67 | VOID NextRemoveMyAutomapCell(AutomapCell* cell); 68 | VOID RemoveMyAutomapCells(); 69 | 70 | VOID DeleteShrines(); 71 | VOID InitShrines(); 72 | VOID InitTCList(); 73 | 74 | VOID STDCALL FilterOutMyAutomapCells(LPAUTOMAPCELL Cell); 75 | LPMYAUTOMAPCELL GetMyAutomapCell(INT Index); 76 | 77 | VOID LoadMyAutomapLayer(); 78 | 79 | WORD GetCollisionInfo(INT nX, INT nY); 80 | BOOL ExportCollisionMap(CMatrix& cMatrix); 81 | 82 | DWORD GetTileLevelNo(LPROOM2 lpRoom2, DWORD dwTileNo); 83 | 84 | CArrayEx m_LevelExits; 85 | 86 | UCHAR m_ActLevels[6]; 87 | UCHAR m_RevealedActs[5]; 88 | 89 | protected: 90 | VOID AddAutomapRoom(LPROOM2 pRoom2); 91 | VOID RemoveAutomapRoom(LPROOM2 pRoom2); 92 | 93 | VOID RevealLevel(LPLEVEL pLevel); 94 | VOID RevealRoom(LPROOM2 pRoom); 95 | VOID RevealRoom1(LPROOM2 pRoom); 96 | VOID AddRoomCell(INT xPos, INT yPos, INT nCell, LPROOM2 pRoom); 97 | 98 | INT GetUnitCellNumber(DWORD dwClassId, DWORD dwLevelNo); 99 | LPAUTOMAPLAYER2 InitAutomapLayer(DWORD dwLayer); 100 | 101 | BOOL AddCollisionData(LPROOM2 pRoom2, CArrayEx& aSkip); 102 | BOOL AddCollisionData(LPCOLLMAP pColl); 103 | BOOL FillGaps(); 104 | BOOL IsGap(INT nX, INT nY); 105 | 106 | INT m_LastLevel; 107 | INT m_SizeX; 108 | INT m_SizeY; 109 | POINT m_LevelOrigin; 110 | CMatrix m_Map; 111 | }; 112 | 113 | VOID STDCALL AutomapCells(LPCELLCONTEXT Context, DWORD X, DWORD Y, RECT * Clip, DWORD Bright); 114 | VOID GetMonsterLevelTC(WCHAR * String, LPUNITANY Unit, DWORD Number); 115 | VOID GetMonsterResists(WCHAR * String, LPUNITANY Unit, DWORD Number); 116 | LPUNITANY GetViewingUnit(); 117 | VOID FASTCALL OverrideShrine(LPAUTOMAPCELL New, LPAUTOMAPCELL Current); 118 | VOID FASTCALL ItemName(WCHAR * Name, LPUNITANY Item); 119 | VOID FASTCALL SocketViewtableCallRoutine(LPUNITANY Unit, DWORD Argument, VOID (STDCALL * Function)(LPUNITANY, DWORD)); 120 | VOID STDCALL SocketViewtable(VOID (STDCALL * Function)(LPUNITANY, DWORD), LPUNITANY Unit, DWORD Argument); 121 | LPUNITANY ViewInventory(); 122 | BOOL ViewInventorySocketProtection(); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Rogue.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Rogue.h: -------------------------------------------------------------------------------- 1 | #ifndef ROGUE_H_INCLUDED 2 | #define ROGUE_H_INCLUDED 3 | 4 | 5 | 6 | #endif // ROGUE_H_INCLUDED 7 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Skill.h: -------------------------------------------------------------------------------- 1 | #ifndef _SKILL_H 2 | #define _SKILL_H 3 | 4 | #define SPELL_MAX_NAME 25 5 | 6 | typedef struct D2SpellInfo_t 7 | { 8 | WORD wSpellID; 9 | INT nClass; 10 | DWORD dwSpellInfoFlag; 11 | CHAR szSpellName[SPELL_MAX_NAME + 1]; 12 | DWORD dwCoolDown; 13 | } D2SpellInfo; 14 | 15 | WORD GetCurrentSkill(BOOL Left); 16 | INT GetSkill(WORD SkillId); 17 | BOOL FASTCALL OnUseSkill(LPATTACKSTRUCT Attack, BOOL AttackingUnit); 18 | BOOL UsingSkill(); 19 | BOOL SetSkill(WORD SkillId, BOOL Left); 20 | BOOL GetSkillInfo(WORD wSpell, D2SpellInfo *lpBuffer); 21 | 22 | #endif -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Speed.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | VOID ChangeStat(BYTE StatID, BYTE Value) 4 | { 5 | LPBYTE Packet = new BYTE[3]; 6 | Packet[0] = 0x1D; 7 | Packet[1] = StatID; 8 | Packet[2] = Value; 9 | D2NET_ReceivePacket(Packet, 3); 10 | delete [] Packet; 11 | } 12 | 13 | VOID STDCALL GameAfterAttack(LPUNITANY Unit, DWORD SkillID, DWORD SkillLevel, BOOL Unknown) 14 | { 15 | if (!ClientReady(TRUE)) 16 | return; 17 | 18 | D2CLIENT_CreateAttack(Unit, SkillID, SkillLevel, Unknown); 19 | 20 | if (!Unit) 21 | return; 22 | 23 | if (Me && Unit->dwType == UNIT_TYPE_PLAYER && Unit->dwUnitId == Me->dwUnitId) 24 | { 25 | if (V_SpeedAttack) 26 | { 27 | if (Me->dwMode == PLAYER_MODE_ATTACK1 || Me->dwMode == PLAYER_MODE_ATTACK2 || 28 | Me->dwMode == PLAYER_MODE_KICK || Me->dwMode == PLAYER_MODE_THROW) 29 | Me->dwFrameRemain = V_AttackFrames * (Me->dwFrameRemain / 7); 30 | } 31 | 32 | if (V_SpeedCast) 33 | { 34 | if (SkillID == D2S_CHAINLIGHTNING || SkillID == D2S_INFERNO || SkillID == D2S_LIGHTNING) 35 | Me->dwFrameRemain = 0; 36 | 37 | if (SkillID == D2S_TELEPORT) 38 | if (GetUnitStat(Me, STAT_FASTERCAST) < 39) 39 | Me->dwFrameRemain = 0; 40 | 41 | if (SkillID != D2S_TELEPORT && SkillID != D2S_CHAINLIGHTNING && SkillID != D2S_INFERNO && SkillID != D2S_LIGHTNING) 42 | { 43 | if (Me->dwMode == PLAYER_MODE_CAST || Me->dwMode == PLAYER_MODE_USESKILL1 || 44 | Me->dwMode == PLAYER_MODE_USESKILL2 || Me->dwMode == PLAYER_MODE_USESKILL3 || 45 | Me->dwMode == PLAYER_MODE_USESKILL4) 46 | Me->dwFrameRemain = V_CastFrames * (Me->dwFrameRemain / 7); 47 | } 48 | } 49 | } 50 | } 51 | 52 | VOID IncreaseSpeedStats() 53 | { 54 | if (ClientReady(TRUE)) 55 | { 56 | if (V_AttackSpeed > 0) 57 | ChangeStat(STAT_IAS, V_AttackSpeed > 255 ? 255 : V_AttackSpeed); 58 | 59 | if (V_BlockRate > 0) 60 | ChangeStat(STAT_FASTERBLOCK, V_BlockRate > 255 ? 255 : V_BlockRate); 61 | 62 | if (V_CastRate > 0) 63 | ChangeStat(STAT_FASTERCAST, V_CastRate > 255 ? 255 : V_CastRate); 64 | 65 | if (V_HitRecoveryRate > 0) 66 | ChangeStat(STAT_FASTERHITRECOVERY, V_HitRecoveryRate > 255 ? 255 : V_HitRecoveryRate); 67 | 68 | if (V_RunWalkSpeed > 0) 69 | ChangeStat(STAT_FASTERRUNWALK, V_RunWalkSpeed > 255 ? 255 : V_RunWalkSpeed); 70 | 71 | if (V_VelocitySpeed > 0) 72 | ChangeStat(STAT_VELOCITYPERCENT, V_VelocitySpeed > 255 ? 255 : V_VelocitySpeed); 73 | } 74 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Speed.h: -------------------------------------------------------------------------------- 1 | VOID ChangeStat(BYTE StatID, BYTE Value); 2 | VOID STDCALL GameAfterAttack(LPUNITANY Unit, DWORD SkillID, DWORD SkillLevel, BOOL Unknown); 3 | VOID IncreaseSpeedStats(); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/SyncObj.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __SYNCOBJ_H__ 3 | #define __SYNCOBJ_H__ 4 | 5 | #include 6 | #include 7 | 8 | class CSyncObj 9 | { 10 | public: 11 | 12 | ///////////////////////////////////////////////////////////////// 13 | // Constructor & Destructor 14 | ///////////////////////////////////////////////////////////////// 15 | CSyncObj() { ::InitializeCriticalSection(&m_cs); IsLocked = false;} 16 | virtual ~CSyncObj() { ::DeleteCriticalSection(&m_cs); } 17 | 18 | ///////////////////////////////////////////////////////////////// 19 | // Public Operations 20 | ///////////////////////////////////////////////////////////////// 21 | void Lock() { ::EnterCriticalSection((LPCRITICAL_SECTION)&m_cs); IsLocked = true; } 22 | void Unlock() { ::LeaveCriticalSection((LPCRITICAL_SECTION)&m_cs); IsLocked = false; } 23 | 24 | bool IsLocked; 25 | 26 | private: 27 | 28 | ///////////////////////////////////////////////////////////////// 29 | // Private Member Data 30 | ///////////////////////////////////////////////////////////////// 31 | CRITICAL_SECTION m_cs; 32 | }; 33 | 34 | #endif // __SYNCOBJ_H__ 35 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Teleport.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | CPathFinder::CPathFinder() 4 | { 5 | m_pMap = NULL; 6 | m_nSizeX = 0; 7 | m_nSizeY = 0; 8 | memset(&m_ptStart, 0, sizeof(POINT)); 9 | memset(&m_ptEnd, 0, sizeof(POINT)); 10 | } 11 | 12 | CPathFinder::~CPathFinder() 13 | { 14 | } 15 | 16 | BOOL CPathFinder::CreateBestPath(POINT ptStart, POINT ptEnd, LPPOINT lpBuffer, DWORD dwMaxCount) 17 | { 18 | POINT ptPos; 19 | INT nFlag, nIterations = 0; 20 | DWORD dwFound; 21 | 22 | if(lpBuffer == NULL || dwMaxCount == 0 || m_nSizeX <= 0 || m_nSizeY <= 0 || m_pMap == NULL) 23 | return 0; 24 | 25 | if(ptStart.x > m_nSizeX || ptStart.y > m_nSizeY || ptEnd.x > m_nSizeX || ptEnd.y > m_nSizeY) 26 | return 0; 27 | 28 | memset(lpBuffer, 0, sizeof(POINT) * dwMaxCount); 29 | m_ptStart = ptStart; 30 | m_ptEnd = ptEnd; 31 | 32 | CreateDistanceTable(); 33 | 34 | lpBuffer[0] = ptStart; 35 | dwFound = 1; 36 | ptPos = ptStart; 37 | 38 | nFlag = GetNextMove(ptPos); 39 | 40 | while(nFlag != PATH_FAILED && dwFound < dwMaxCount) 41 | { 42 | if(nIterations > 5000) 43 | return 0; 44 | 45 | if(nFlag == PATH_REACHED) 46 | { 47 | lpBuffer[dwFound] = ptEnd; 48 | dwFound++; 49 | return dwFound; 50 | } 51 | 52 | int nRedundancy = CheckRedundancy(lpBuffer, dwFound, ptPos); 53 | if(nRedundancy == -1) 54 | { 55 | lpBuffer[dwFound] = ptPos; 56 | dwFound++; 57 | } 58 | else 59 | { 60 | dwFound = nRedundancy + 1; 61 | lpBuffer[dwFound] = ptPos; 62 | } 63 | 64 | nFlag = GetNextMove(ptPos); 65 | nIterations++; 66 | } 67 | 68 | return FALSE; 69 | } 70 | 71 | VOID CPathFinder::SetPathingMap(LPWORD *pMap, INT nSizeX, INT nSizeY) 72 | { 73 | m_pMap = pMap; 74 | m_nSizeX = nSizeX; 75 | m_nSizeY = nSizeY; 76 | } 77 | 78 | PATHRETURN CPathFinder::GetNextMove(POINT& pos, int nAdjust) 79 | { 80 | if(CalculateDistance(m_ptEnd, pos) <= TELEPORT_RANGE) 81 | { 82 | pos = m_ptEnd; 83 | return PATH_REACHED; 84 | } 85 | 86 | if (!IsValidIndex(pos.x, pos.y)) 87 | return PATH_FAILED; 88 | 89 | BlockLocation(pos, nAdjust); 90 | 91 | POINT p, best; 92 | int value = RANGE_INVALID; 93 | 94 | for (p.x = pos.x - TELEPORT_RANGE; p.x <= pos.x + TELEPORT_RANGE; p.x++) 95 | { 96 | for (p.y = pos.y - TELEPORT_RANGE; p.y <= pos.y + TELEPORT_RANGE; p.y++) 97 | { 98 | if (!IsValidIndex(p.x, p.y)) 99 | continue; 100 | 101 | if (m_pMap[p.x][p.y] < value && CalculateDistance(p, pos) <= TELEPORT_RANGE) 102 | { 103 | value = m_pMap[p.x][p.y]; 104 | best = p; 105 | } 106 | } 107 | } 108 | 109 | if (value >= RANGE_INVALID) 110 | return PATH_FAILED; 111 | 112 | pos = best; 113 | BlockLocation(pos, nAdjust); 114 | return PATH_CONTINUE; 115 | } 116 | 117 | BOOL CPathFinder::CreateDistanceTable() 118 | { 119 | if(m_pMap == NULL) 120 | return FALSE; 121 | 122 | for (int x = 0; x < m_nSizeX; x++) 123 | { 124 | for (int y = 0; y < m_nSizeY; y++) 125 | { 126 | if ((m_pMap[x][y] % 2) == 0) 127 | m_pMap[x][y] = (SHORT)CalculateDistance(x, y, m_ptEnd.x, m_ptEnd.y); 128 | else 129 | m_pMap[x][y] = RANGE_INVALID; 130 | } 131 | } 132 | 133 | m_pMap[m_ptEnd.x][m_ptEnd.y] = 1; 134 | return TRUE; 135 | } 136 | 137 | BOOL CPathFinder::CheckRedundancy(LPPOINT lpPath, INT nCount, POINT ptPos) 138 | { 139 | if(lpPath == NULL || nCount == 0) 140 | return -1; 141 | 142 | for(INT i = 0; i < nCount; i++) 143 | { 144 | if(CalculateDistance(ptPos, lpPath[i]) <= (TELEPORT_RANGE / 3)) 145 | return i; 146 | } 147 | 148 | return -1; 149 | } 150 | 151 | BOOL CPathFinder::IsValidIndex(INT nX, INT nY) 152 | { 153 | return nX >= 0 && nX < m_nSizeX && nY >= 0 && nY < m_nSizeY; 154 | } 155 | 156 | VOID CPathFinder::BlockLocation(POINT pos, INT nRange) 157 | { 158 | nRange = max(nRange, 1); 159 | 160 | for(INT i = pos.x - nRange; i < pos.x + nRange; i++) 161 | { 162 | for(INT j = pos.y - nRange; j < pos.y + nRange; j++) 163 | { 164 | if (IsValidIndex(i, j)) 165 | m_pMap[i][j] = RANGE_INVALID; 166 | } 167 | } 168 | } 169 | 170 | POINT PickFarcastLocation(POINT Target) 171 | { 172 | POINT Origin = {(Me->pPath->xPos), (Me->pPath->yPos)}; 173 | V_Design->ScreenToAutoMap(&Target); 174 | 175 | INT Angle = CalculateAngle(Origin, Target); 176 | INT Radius = 100; 177 | POINT Cast = {NULL}; 178 | 179 | while (TRUE) 180 | { 181 | Cast = CalculatePointOnTrack(Origin, Radius--, Angle); 182 | 183 | if (!D2COMMON_CheckCollision(Me->pPath->pRoom1, Cast.x, Cast.y, 2)) 184 | if (::abs(Me->pPath->xPos - Cast.x) <= 50 && ::abs(Me->pPath->yPos - Cast.y) <= 50) 185 | break; 186 | } 187 | 188 | return Cast; 189 | } 190 | 191 | BOOL Teleport(WORD X, WORD Y) 192 | { 193 | if (!ClientReady(TRUE)) 194 | return FALSE; 195 | 196 | LPBYTE Packet = new BYTE[5]; 197 | Packet[0] = 0x5F; 198 | *(LPWORD)&Packet[1] = X; 199 | *(LPWORD)&Packet[3] = Y; 200 | D2NET_SendPacket(5, 1, Packet); 201 | delete [] Packet; 202 | 203 | LPBYTE Update = new BYTE[9]; 204 | Update[0] = 0x4B; 205 | *(LPDWORD)&Update[1] = Me->dwType; 206 | *(LPDWORD)&Update[5] = Me->dwUnitId; 207 | D2NET_SendPacket(9, 1, Update); 208 | delete [] Update; 209 | return TRUE; 210 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Teleport.h: -------------------------------------------------------------------------------- 1 | #define RANGE_INVALID 10000 2 | #define TELEPORT_RANGE 33 3 | 4 | enum PATHRETURN 5 | { 6 | PATH_REACHED = 0, 7 | PATH_CONTINUE, 8 | PATH_FAILED, 9 | }; 10 | 11 | class CPathFinder 12 | { 13 | public: 14 | 15 | CPathFinder(); 16 | virtual ~CPathFinder(); 17 | 18 | VOID SetPathingMap(LPWORD *pMap, INT nSizeX, INT nSIzeY); 19 | BOOL CreateBestPath(POINT ptStart, POINT ptTarget, LPPOINT ptPath, DWORD dwPath); 20 | 21 | protected: 22 | PATHRETURN GetNextMove(POINT& ptTarget, INT nAdjust = 2); 23 | BOOL CreateDistanceTable(); 24 | 25 | BOOL IsValidIndex(INT nX, INT nY); 26 | VOID BlockLocation(POINT ptPos, INT nRange); 27 | BOOL CheckRedundancy(LPPOINT lpPath, INT nCount, POINT ptPos); 28 | 29 | LPWORD *m_pMap; 30 | INT m_nSizeX; 31 | INT m_nSizeY; 32 | POINT m_ptStart, m_ptEnd; 33 | }; 34 | 35 | typedef struct VectorTarget_t 36 | { 37 | POINT Position; 38 | INT Type; 39 | DWORD Target; 40 | DWORD TargetType; 41 | } VECTOR, *LPVECTOR; 42 | 43 | VOID DestroyVectors(); 44 | BOOL EnumerateVectors(); 45 | POINT PickFarcastLocation(POINT Target); 46 | BOOL Teleport(WORD X, WORD Y); 47 | BOOL TeleportToVector(INT VectorType); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Threads.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Threads.cpp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Threads.h: -------------------------------------------------------------------------------- 1 | #define PRIMARY 1 2 | #define DESIGN 2 3 | #define ENCHANT 3 4 | #define PACKETS 4 5 | #define PARTY 5 6 | #define TELEPORT 6 7 | 8 | typedef struct Thread_t 9 | { 10 | HANDLE Handle; 11 | DWORD ID; 12 | } THREAD, *LPTHREAD; 13 | 14 | BOOL STDCALL Threads(LPVOID Parameter); 15 | HANDLE MakeThread(LPVOID Process, LPVOID Parameter); 16 | VOID DestroyThread(HANDLE Thread, DWORD Parameter, DWORD MaxWaitTime); 17 | 18 | VOID CreateInGameThreads(); 19 | VOID DestroyInGameThreads(); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Unit.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | LPUNITANY FindNearestUnit(POINT Mouse, INT DamageType, BOOL TestSelect, BOOL CheckLoS) 4 | { 5 | LPUNITANY Target = NULL; 6 | INT Distance = 9999; 7 | 8 | if (V_Players.IsEmpty()) 9 | return FALSE; 10 | 11 | for (LPROOM1 Room1 = Me->pAct->pRoom1; Room1; Room1 = Room1->pRoomNext) 12 | { 13 | for (LPUNITANY Unit = Room1->pUnitFirst; Unit; Unit = Unit->pListNext) 14 | { 15 | if (Unit && Unit->dwType == UNIT_TYPE_PLAYER) 16 | { 17 | if (Unit->dwUnitId == Me->dwUnitId) 18 | continue; 19 | 20 | if ((INT)GetUnitDist(Me, Unit) > Distance) 21 | continue; 22 | 23 | if (InTown(Unit)) 24 | continue; 25 | 26 | if (Unit->dwMode == PLAYER_MODE_DEAD || Unit->dwMode == PLAYER_MODE_DEATH) 27 | continue; 28 | 29 | if (CheckLoS && D2COMMON_CheckUnitCollision(Me, Unit, 4)) 30 | continue; 31 | 32 | if (GetPvPFlags(Unit->dwUnitId) & PVP_HOSTILED_YOU || GetPvPFlags(Unit->dwUnitId) & PVP_HOSTILED_BY_YOU) 33 | { 34 | Target = Unit; 35 | Distance = (INT)GetUnitDist(Me, Unit); 36 | } 37 | } 38 | } 39 | } 40 | 41 | return Target; 42 | } 43 | 44 | LPUNITANY FindMercUnit(LPUNITANY pOwner) 45 | { 46 | for(LPROOM1 pRoom1 = Me->pAct->pRoom1; pRoom1; pRoom1 = pRoom1->pRoomNext) 47 | for(LPUNITANY pUnit = pRoom1->pUnitFirst; pUnit; pUnit = pUnit->pListNext) 48 | if(IsMercClassId(pUnit->dwTxtFileNo) && D2CLIENT_GetMonsterOwner(pUnit->dwUnitId) == pOwner->dwUnitId) 49 | return pUnit; 50 | 51 | return NULL; 52 | } 53 | 54 | LPROSTERUNIT FindPartyById(DWORD dwUnitId) 55 | { 56 | for(LPROSTERUNIT pUnit = *p_D2CLIENT_PlayerUnitList; pUnit; pUnit = pUnit->pNext) 57 | if(pUnit->dwUnitId == dwUnitId) 58 | return pUnit; 59 | 60 | return NULL; 61 | } 62 | 63 | LPROSTERUNIT FindPartyByName(LPSTR szName) 64 | { 65 | for(LPROSTERUNIT pUnit = *p_D2CLIENT_PlayerUnitList; pUnit; pUnit = pUnit->pNext) 66 | if(!_stricmp(szName, pUnit->szName)) 67 | return pUnit; 68 | 69 | return NULL; 70 | } 71 | 72 | LPPRESETUNIT FindPresetUnit(DWORD dwClassId, DWORD dwType, LPROOM2 *pRoom) 73 | { 74 | for(LPROOM2 pRoom2 = GetUnitLevel(Me)->pRoom2First; pRoom2; pRoom2 = pRoom2->pRoom2Next) 75 | { 76 | for(LPPRESETUNIT pUnit = pRoom2->pPreset; pUnit; pUnit = pUnit->pPresetNext) 77 | { 78 | if(pUnit->dwType == dwType && pUnit->dwTxtFileNo == dwClassId) 79 | { 80 | *pRoom = pRoom2; 81 | return pUnit; 82 | } 83 | } 84 | } 85 | 86 | return NULL; 87 | } 88 | 89 | LPUNITANY FindUnitFromUnitNo(DWORD unitno) 90 | { 91 | LPUNITANY Unit = NULL; 92 | 93 | while (Unit ? Unit = Unit->pListNext : Unit = *p_D2CLIENT_pUnitList) 94 | if (Unit->dwMode == unitno) 95 | break; 96 | 97 | return Unit; 98 | } 99 | 100 | LPUNITANY GetSelectedUnit() 101 | { 102 | return D2CLIENT_GetSelectedUnit(); 103 | } 104 | 105 | DWORD GetPvPFlags(DWORD dwPlayerId) 106 | { 107 | if (!ClientReady(FALSE)) 108 | return FALSE; 109 | 110 | DWORD dwFlags = 0; 111 | 112 | for (LPROSTERUNIT pUnit = (*p_D2CLIENT_PlayerUnitList); pUnit; pUnit = pUnit->pNext) 113 | { 114 | if (pUnit->dwUnitId != dwPlayerId) 115 | continue; 116 | 117 | if (pUnit->dwUnitId != Me->dwUnitId) 118 | { 119 | if (TestPvPFlag(dwPlayerId, Me->dwUnitId, 8)) 120 | dwFlags |= PVP_HOSTILED_YOU; 121 | 122 | if (TestPvPFlag(Me->dwUnitId, dwPlayerId, 8)) 123 | dwFlags |= PVP_HOSTILED_BY_YOU; 124 | 125 | if (pUnit->dwPartyFlags == 2) 126 | dwFlags |= PVP_INVITED_YOU; 127 | 128 | if (pUnit->dwPartyFlags == 4) 129 | dwFlags |= PVP_INVITED_BY_YOU; 130 | 131 | if (pUnit->wPartyId != 0xFFFF && pUnit->dwPartyFlags == 1) 132 | { 133 | LPROSTERUNIT pMe = FindPartyById(Me->dwUnitId); 134 | 135 | if (pMe->wPartyId == 0xFFFF) 136 | dwFlags |= PVP_ALLIED; 137 | else if (pMe->wPartyId == pUnit->wPartyId) 138 | dwFlags |= PVP_ALLIED_WITH_YOU; 139 | } 140 | 141 | return dwFlags; 142 | } 143 | } 144 | 145 | return dwFlags; 146 | } 147 | 148 | LPROOM1 GetRoom(UINT X, UINT Y) 149 | { 150 | for (UINT i = 0; i < Me->pPath->pRoom1->dwRoomsNear; i++) 151 | { 152 | LPROOM1 Room = Me->pPath->pRoom1->pRoomsNear[i]; 153 | 154 | if (Room->dwXStart <= X && Room->dwYStart <= Y && Room->dwXStart + Room->dwXSize >= X && Room->dwYStart + Room->dwYSize >= Y) 155 | return Room; 156 | } 157 | 158 | return NULL; 159 | } 160 | 161 | DWORD GetUnitDist(LPUNITANY pUnit1, LPUNITANY pUnit2) 162 | { 163 | DWORD dwDist[4] = {0}; 164 | 165 | switch(pUnit1->dwType) 166 | { 167 | case UNIT_TYPE_PLAYER: 168 | case UNIT_TYPE_MISSILE: 169 | case UNIT_TYPE_ITEM: 170 | dwDist[0] = pUnit1->pPath->xPos; 171 | dwDist[1] = pUnit1->pPath->yPos; 172 | break; 173 | 174 | case UNIT_TYPE_OBJECT: 175 | dwDist[0] = pUnit1->pObjectPath->dwPosX; 176 | dwDist[1] = pUnit1->pObjectPath->dwPosY; 177 | break; 178 | } 179 | 180 | switch(pUnit2->dwType) 181 | { 182 | case UNIT_TYPE_PLAYER: 183 | case UNIT_TYPE_MISSILE: 184 | case UNIT_TYPE_ITEM: 185 | dwDist[2] = pUnit2->pPath->xPos; 186 | dwDist[3] = pUnit2->pPath->yPos; 187 | break; 188 | 189 | case UNIT_TYPE_OBJECT: 190 | dwDist[2] = pUnit2->pObjectPath->dwPosX; 191 | dwDist[3] = pUnit2->pObjectPath->dwPosY; 192 | break; 193 | } 194 | 195 | for(int x = 0; x < 4; x++) 196 | if(!dwDist[x]) 197 | return INFINITE; 198 | 199 | return (DWORD)CalculateDistance(dwDist[0], dwDist[1], dwDist[2], dwDist[3]); 200 | } 201 | 202 | LPLEVEL GetUnitLevel(LPUNITANY pUnit) 203 | { 204 | if(pUnit) 205 | if(pUnit->pPath) 206 | if(pUnit->pPath->pRoom1) 207 | if(pUnit->pPath->pRoom1->pRoom2) 208 | return pUnit->pPath->pRoom1->pRoom2->pLevel; 209 | 210 | return FALSE; 211 | } 212 | 213 | BOOL InTown(LPUNITANY Unit) 214 | { 215 | LPLEVEL CurrentLevel = GetUnitLevel(Unit); 216 | 217 | if (!CurrentLevel) 218 | return TRUE; 219 | 220 | return IsTownLevel(CurrentLevel->dwLevelNo) || CurrentLevel->dwLevelNo == 0; 221 | } 222 | 223 | BOOL IsImmuneMonster(LPUNITANY Unit, D2SpellInfo Spell) 224 | { 225 | if (!ClientReady(FALSE)) 226 | return TRUE; 227 | 228 | if (Spell.dwSpellInfoFlag & DSI_COLD) 229 | { 230 | if ((INT)GetUnitStat(Unit, STAT_COLDRESIST) >= 100) 231 | return TRUE; 232 | } 233 | 234 | if (Spell.dwSpellInfoFlag & DSI_FIRE) 235 | { 236 | if ((INT)GetUnitStat(Unit, STAT_FIRERESIST) >= 100) 237 | return TRUE; 238 | } 239 | 240 | if (Spell.dwSpellInfoFlag & DSI_LIGHTNING) 241 | { 242 | if ((INT)GetUnitStat(Unit, STAT_LIGHTNINGRESIST) >= 100) 243 | return TRUE; 244 | } 245 | 246 | if (Spell.dwSpellInfoFlag & DSI_POISON) 247 | { 248 | if ((INT)GetUnitStat(Unit, STAT_POISONRESIST) >= 100) 249 | return TRUE; 250 | } 251 | 252 | if (Spell.dwSpellInfoFlag & DSI_PHYSICAL) 253 | { 254 | if (Spell.dwSpellInfoFlag & DSI_LIGHTNING) 255 | return FALSE; 256 | 257 | if ((INT)GetUnitStat(Unit, STAT_DAMAGEREDUCTION) >= 100) 258 | return TRUE; 259 | } 260 | 261 | if (Spell.dwSpellInfoFlag & DSI_MAGICAL) 262 | { 263 | if ((INT)GetUnitStat(Unit, STAT_MAGICRESIST) >= 100) 264 | return TRUE; 265 | } 266 | 267 | return FALSE; 268 | } 269 | 270 | BOOL IsMercClassId(DWORD dwClassID) 271 | { 272 | return dwClassID == MERC_A1 || dwClassID == MERC_A2 || dwClassID == MERC_A3 || dwClassID == MERC_A5; 273 | } 274 | 275 | BOOL IsTownLevel(INT nLevel) 276 | { 277 | if(nLevel == MAP_A1_ROGUE_ENCAMPMENT || 278 | nLevel == MAP_A2_LUT_GHOLEIN || 279 | nLevel == MAP_A3_KURAST_DOCKS || 280 | nLevel == MAP_A4_THE_PANDEMONIUM_FORTRESS || 281 | nLevel == MAP_A5_HARROGATH) 282 | return TRUE; 283 | 284 | return FALSE; 285 | } 286 | 287 | BOOL TestUnit(LPUNITANY Unit) 288 | { 289 | if (Unit && Unit->pInventory) 290 | { 291 | if (Unit->dwType == UNIT_TYPE_PLAYER) 292 | { 293 | if (Unit->dwMode != PLAYER_MODE_DEAD || Unit->dwMode != PLAYER_MODE_DEATH) 294 | return Unit->dwMode; 295 | } 296 | } 297 | 298 | return FALSE; 299 | } 300 | 301 | BOOL UseSkillOnUnit(LPUNITANY Unit, WORD Skill, BOOL Left, BOOL Shift, BOOL Animation) 302 | { 303 | if (!ClientReady(TRUE)) 304 | return FALSE; 305 | 306 | if (!GetSkill(Skill)) 307 | return FALSE; 308 | 309 | if (UsingSkill()) 310 | return FALSE; 311 | 312 | LPBYTE Packet = new BYTE[9]; 313 | Packet[0] = Shift ? (Left ? 0x0A : 0x11) : (Left ? 0x06 : 0x0D); 314 | *(LPDWORD)&Packet[1] = Unit->dwType; 315 | *(LPDWORD)&Packet[5] = Unit->dwUnitId; 316 | D2NET_SendPacket(9, 1, Packet); 317 | delete [] Packet; 318 | 319 | if (Animation) 320 | { 321 | LPBYTE Packet = new BYTE[16]; 322 | Packet[0] = 0x4C; 323 | *(LPDWORD)&Packet[1] = Me->dwType; 324 | *(LPDWORD)&Packet[2] = Me->dwUnitId; 325 | *(LPWORD)&Packet[6] = Skill; 326 | *(LPDWORD)&Packet[9] = Unit->dwType; 327 | *(LPDWORD)&Packet[10] = Unit->dwUnitId; 328 | D2NET_ReceivePacket(Packet, 16); 329 | delete [] Packet; 330 | } 331 | 332 | return TRUE; 333 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Unit.h: -------------------------------------------------------------------------------- 1 | LPUNITANY FindNearestUnit(POINT Mouse, INT DamageType, BOOL TestSelect, BOOL CheckLoS); 2 | LPUNITANY FindMercUnit(LPUNITANY pOwner); 3 | LPROSTERUNIT FindPartyById(DWORD dwUnitId); 4 | LPROSTERUNIT FindPartyByName(LPSTR szName); 5 | LPPRESETUNIT FindPresetUnit(DWORD dwClassId, DWORD dwType, LPROOM2 *pRoom); 6 | LPUNITANY FindUnitFromUnitNo(DWORD unitno); 7 | LPUNITANY GetSelectedUnit(); 8 | DWORD GetPvPFlags(DWORD dwPlayerId); 9 | LPROOM1 GetRoom(UINT X, UINT Y); 10 | DWORD GetUnitDist(LPUNITANY pUnit1, LPUNITANY pUnit2); 11 | LPLEVEL GetUnitLevel(LPUNITANY pUnit); 12 | BOOL InTown(LPUNITANY Unit); 13 | BOOL IsImmuneMonster(LPUNITANY Unit, D2SpellInfo Spell); 14 | BOOL IsMercClassId(DWORD dwClassID); 15 | BOOL IsTownLevel(INT nLevel); 16 | BOOL TestUnit(LPUNITANY Unit); 17 | BOOL UseSkillOnUnit(LPUNITANY Unit, WORD Skill, BOOL Left, BOOL Shift, BOOL Animation); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/UpgradeLog.XML: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Vars.h: -------------------------------------------------------------------------------- 1 | #ifdef VARS 2 | 3 | #define ARRAY(Type, Name) CArrayEx V_##Name; 4 | #define KEY(Name) INT K_##Name; 5 | #define TOGGLE(Name) BOOL V_##Name; INT K_##Name; 6 | #define VAR(Type, Name) Type V##_##Name; 7 | 8 | #else 9 | 10 | #define ARRAY(Type, Name) extern CArrayEx V_##Name; 11 | #define KEY(Name) extern INT K_##Name; 12 | #define TOGGLE(Name) extern BOOL V_##Name; extern INT K_##Name; 13 | #define VAR(Type, Name) extern Type V_##Name; 14 | 15 | #endif 16 | 17 | VAR(HINSTANCE, DLL) 18 | VAR(BOOL, Game) 19 | VAR(INT, PatchInGame) 20 | VAR(BOOL, PatchOutGame) 21 | VAR(DWORD, GameTimer) 22 | 23 | VAR(LPSTR, Name) 24 | VAR(FLOAT, Version) 25 | 26 | VAR(CHAR, FileNamePath[1000]) 27 | VAR(WNDPROC, OldWndProc) 28 | 29 | VAR(BOOL, AntiMinimize) 30 | VAR(BOOL, CubeOrStashOpened) 31 | VAR(BOOL, HideCommands) 32 | VAR(BOOL, HostileImage) 33 | 34 | KEY(ControlHotkey) 35 | KEY(LoadConfiguration) 36 | 37 | //Aim 38 | ARRAY(PTARGETINFO, Players) 39 | 40 | KEY(AttackMyselfLeft) 41 | KEY(AttackMyselfRight) 42 | KEY(AttackNearestTargetLeft) 43 | KEY(AttackNearestTargetRight) 44 | KEY(AttackTargetLeft) 45 | KEY(AttackTargetRight) 46 | KEY(Blind) 47 | KEY(NextTarget) 48 | KEY(PreviousTarget) 49 | KEY(SetKickLeft) 50 | KEY(SetKickRight) 51 | 52 | TOGGLE(AutoBlind) 53 | TOGGLE(AutoKB) 54 | 55 | VAR(BOOL, Aim) 56 | VAR(BOOL, BlockFakes) 57 | VAR(BOOL, HostilesOnly) 58 | VAR(BOOL, KB) 59 | VAR(BOOL, Kick) 60 | VAR(BOOL, LeftAttack) 61 | VAR(BOOL, Reblind) 62 | 63 | VAR(INT, Target) 64 | VAR(INT, Blind) 65 | 66 | VAR(DWORD, AutoBlindDistance) 67 | VAR(DWORD, AutoKBDistance) 68 | 69 | //Auto Party 70 | VAR(BOOL, AutoParty) 71 | 72 | //Copy & Paste 73 | VAR(BOOL, CopyPaste) 74 | VAR(LPCONTROL, EditBox) 75 | 76 | //Death Message 77 | VAR(BOOL, DeathMessage) 78 | VAR(BOOL, DeathMessageIteration) 79 | 80 | VAR(CHAR, LocalTime[50]) 81 | VAR(CHAR, LocalDate[50]) 82 | 83 | VAR(CHAR, InjectKills[1000]) 84 | VAR(CHAR, InGameKills[1000]) 85 | VAR(CHAR, InjectDeaths[1000]) 86 | VAR(CHAR, InGameDeaths[1000]) 87 | 88 | VAR(INT, InjectKillCount) 89 | VAR(INT, InGameKillCount) 90 | VAR(INT, InjectDeathCount) 91 | VAR(INT, InGameDeathCount) 92 | 93 | VAR(DWORD, DeathMessageDelay) 94 | 95 | VAR(CHAR, Line1[1000]) 96 | VAR(CHAR, Line2[1000]) 97 | VAR(CHAR, Line3[1000]) 98 | VAR(CHAR, Line4[1000]) 99 | VAR(CHAR, Line5[1000]) 100 | VAR(CHAR, Line6[1000]) 101 | VAR(CHAR, Line7[1000]) 102 | VAR(CHAR, Line8[1000]) 103 | VAR(CHAR, Line9[1000]) 104 | VAR(CHAR, Line10[1000]) 105 | VAR(CHAR, Line11[1000]) 106 | VAR(CHAR, Line12[1000]) 107 | VAR(CHAR, Line13[1000]) 108 | VAR(CHAR, Line14[1000]) 109 | VAR(CHAR, Line15[1000]) 110 | VAR(CHAR, Line16[1000]) 111 | VAR(CHAR, Line17[1000]) 112 | VAR(CHAR, Line18[1000]) 113 | VAR(CHAR, Line19[1000]) 114 | VAR(CHAR, Line20[1000]) 115 | 116 | VAR(CHAR, SlainName[30]) 117 | 118 | //Design 119 | KEY(Clean) 120 | KEY(Options) 121 | KEY(Stats) 122 | 123 | VAR(Design *, Design) 124 | 125 | VAR(BOOL, Mouse) 126 | VAR(BOOL, Orbs) 127 | VAR(BOOL, PlayerLifePercent) 128 | VAR(BOOL, PlayerLifeBar) 129 | VAR(BOOL, Screenshot) 130 | VAR(BOOL, Vectors) 131 | 132 | VAR(INT, HostilePlayerColor) 133 | VAR(INT, TargetPlayerColor) 134 | 135 | VAR(BOOL, TargetVector) 136 | VAR(INT, TargetVectorColor) 137 | 138 | VAR(BOOL, TargetClick) 139 | VAR(INT, TargetClickColor) 140 | 141 | VAR(CHAR, AutomapInfoGameNameText[0x100]) 142 | VAR(CHAR, AutomapInfoGamePasswordText[0x100]) 143 | VAR(CHAR, AutomapInfoLevelText[0x100]) 144 | VAR(CHAR, AutomapInfoDifficultyText[0x100]) 145 | VAR(CHAR, AutomapInfoIPText[0x100]) 146 | VAR(CHAR, AutomapInfoLocalTimeText[0x100]) 147 | VAR(CHAR, AutomapInfoGameTimerText[0x100]) 148 | VAR(CHAR, AutomapInfoFPSText[0x100]) 149 | VAR(CHAR, AutomapInfoSkipText[0x100]) 150 | VAR(CHAR, AutomapInfoPingText[0x100]) 151 | 152 | VAR(INT, AutomapInfoGameNameColor) 153 | VAR(INT, AutomapInfoGamePasswordColor) 154 | VAR(INT, AutomapInfoLevelColor) 155 | VAR(INT, AutomapInfoDifficultyColor) 156 | VAR(INT, AutomapInfoIPColor) 157 | VAR(INT, AutomapInfoLocalTimeColor) 158 | VAR(INT, AutomapInfoGameTimerColor) 159 | VAR(INT, AutomapInfoFPSColor) 160 | VAR(INT, AutomapInfoSkipColor) 161 | VAR(INT, AutomapInfoPingColor) 162 | 163 | VAR(INT, AutomapInfoGameNameFont) 164 | VAR(INT, AutomapInfoGamePasswordFont) 165 | VAR(INT, AutomapInfoLevelFont) 166 | VAR(INT, AutomapInfoDifficultyFont) 167 | VAR(INT, AutomapInfoIPFont) 168 | VAR(INT, AutomapInfoLocalTimeFont) 169 | VAR(INT, AutomapInfoGameTimerFont) 170 | VAR(INT, AutomapInfoFPSFont) 171 | VAR(INT, AutomapInfoSkipFont) 172 | VAR(INT, AutomapInfoPingFont) 173 | 174 | VAR(BOOL, EscapeInfo) 175 | VAR(INT, EscapeInfoX) 176 | VAR(INT, EscapeInfoY) 177 | VAR(INT, EscapeInfoTitleColor) 178 | VAR(INT, EscapeInfoExitLifeColor) 179 | VAR(INT, EscapeInfoExitManaColor) 180 | VAR(INT, EscapeInfoTownLifeColor) 181 | VAR(INT, EscapeInfoTownManaColor) 182 | 183 | VAR(BOOL, ExpInfo) 184 | VAR(INT, ExpInfoX) 185 | VAR(INT, ExpInfoY) 186 | VAR(INT, ExpInfoTitleColor) 187 | VAR(INT, ExpInfoLevelColor) 188 | VAR(INT, ExpInfoExperienceColor) 189 | VAR(INT, ExpInfoExperienceNeededColor) 190 | VAR(INT, ExpInfoExperienceGainedColor) 191 | 192 | VAR(INT, LifeOrbColor) 193 | VAR(INT, LifeOrbFont) 194 | VAR(INT, ManaOrbColor) 195 | VAR(INT, ManaOrbFont) 196 | 197 | VAR(BOOL, Options) 198 | VAR(INT, OptionTitleColor) 199 | VAR(INT, OptionTitleFont) 200 | VAR(INT, OptionVariableColor) 201 | VAR(INT, OptionVariableFont) 202 | VAR(INT, OptionCloseColor) 203 | VAR(INT, OptionCloseFont) 204 | 205 | VAR(BOOL, PotionInfo) 206 | VAR(INT, PotionInfoX) 207 | VAR(INT, PotionInfoY) 208 | VAR(INT, PotionInfoTitleColor) 209 | VAR(INT, PotionInfoLifePotColor) 210 | VAR(INT, PotionInfoManaPotColor) 211 | VAR(INT, PotionInfoLifeJuvColor) 212 | VAR(INT, PotionInfoManaJuvColor) 213 | 214 | VAR(BOOL, StateList) 215 | VAR(INT, StateListX) 216 | VAR(INT, StateListY) 217 | VAR(INT, StateListTitleColor) 218 | VAR(INT, StateListStateColor) 219 | 220 | VAR(BOOL, Supplies) 221 | VAR(INT, SuppliesX) 222 | VAR(INT, SuppliesY) 223 | VAR(INT, SuppliesTitleColor) 224 | VAR(INT, SuppliesHealPotColor) 225 | VAR(INT, SuppliesManaPotColor) 226 | VAR(INT, SuppliesJuvPotColor) 227 | VAR(INT, SuppliesTPColor) 228 | VAR(INT, SuppliesGoldColor) 229 | 230 | VAR(BOOL, TargetInfo) 231 | VAR(INT, TargetInfoX) 232 | VAR(INT, TargetInfoY) 233 | VAR(INT, TargetInfoTitleColor) 234 | VAR(INT, TargetInfoNameColor) 235 | VAR(INT, TargetInfoClassColor) 236 | VAR(INT, TargetInfoLevelColor) 237 | VAR(INT, TargetInfoLifeColor) 238 | 239 | VAR(BOOL, TargetList) 240 | VAR(INT, TargetListNonTargettedColor) 241 | VAR(INT, TargetListTitleColor) 242 | VAR(INT, TargetListTargettedColor) 243 | VAR(INT, TargetListX) 244 | VAR(INT, TargetListY) 245 | 246 | VAR(BOOL, MusicPlayer) 247 | VAR(INT, MusicPlayerX) 248 | VAR(INT, MusicPlayerY) 249 | VAR(INT, MusicPlayerTitleColor) 250 | VAR(INT, MusicPlayerSongColor) 251 | VAR(INT, MusicPlayerSongLength) 252 | VAR(INT, MusicPlayerTimeColor) 253 | 254 | //Drop Gold 255 | VAR(BOOL, GoldDrop) 256 | VAR(DWORD, GoldAmount) 257 | 258 | //Enchant 259 | ARRAY(LPENCHANTINFO, EnchantQueue) 260 | 261 | VAR(BOOL, Enchant) 262 | VAR(BOOL, EnchantNote) 263 | VAR(BOOL, EnchantNoteIteration) 264 | VAR(BOOL, EnchantWhisper) 265 | 266 | VAR(CHAR, EnchantPlayer[1000]) 267 | VAR(CHAR, EnchantMercenary[1000]) 268 | VAR(CHAR, EnchantAll[1000]) 269 | 270 | //Escape 271 | KEY(Exit) 272 | KEY(Town) 273 | KEY(TP) 274 | 275 | VAR(BOOL, BlockTP) 276 | VAR(BOOL, FastTP) 277 | VAR(BOOL, NoTPDelay) 278 | VAR(BOOL, TP) 279 | VAR(BOOL, TPWhenHostiled) 280 | VAR(BOOL, TPWhenAttacked) 281 | 282 | VAR(DWORD, TPIntervalTime) 283 | VAR(DWORD, TPInteractLast) 284 | VAR(DWORD, TPLast) 285 | 286 | VAR(DWORD, LifeExitPercent) 287 | VAR(DWORD, ManaExitPercent) 288 | 289 | VAR(DWORD, LifeTownPercent) 290 | VAR(DWORD, ManaTownPercent) 291 | 292 | //Experience 293 | VAR(DWORD, StartingExperience) 294 | 295 | //Flash 296 | VAR(BOOL, AntiFlash) 297 | 298 | VAR(DWORD, FlashDelay) 299 | VAR(DWORD, FlashLast) 300 | 301 | TOGGLE(Flash) 302 | 303 | //Game Filter 304 | VAR(LPCONTROL, FilterBox) 305 | VAR(list, GameList) 306 | VAR(BOOL, GameFilter) 307 | 308 | //Miscellaneous 309 | VAR(BOOL, AntiItemGlitch) 310 | VAR(BOOL, AntiQuestBox) 311 | VAR(BOOL, AutomapOnJoin) 312 | VAR(BOOL, MonsterDeathAnimation) 313 | 314 | VAR(BOOL, KillLog) 315 | VAR(BOOL, LogInGameMessages) 316 | VAR(BOOL, ModifiedJoinMessage) 317 | 318 | VAR(BOOL, OutTownSelect) 319 | VAR(BOOL, PlayerInTown) 320 | 321 | VAR(BOOL, RememberGameName) 322 | VAR(BOOL, RememberGamePassword) 323 | 324 | VAR(WCHAR, GameName[50]) 325 | VAR(WCHAR, GamePassword[50]) 326 | 327 | VAR(INT, ConsoleDelay) 328 | VAR(INT, ConsoleX) 329 | VAR(INT, ConsoleY) 330 | 331 | //Notification 332 | VAR(BOOL, Potion) 333 | VAR(BOOL, Quests) 334 | 335 | VAR(BOOL, LifePot) 336 | VAR(BOOL, ManaPot) 337 | VAR(BOOL, LifeJuv) 338 | VAR(BOOL, ManaJuv) 339 | 340 | //Potion 341 | VAR(DWORD, LifePotDelay) 342 | VAR(DWORD, LifePotLast) 343 | VAR(DWORD, LifePotPercent) 344 | 345 | VAR(DWORD, LifeJuvDelay) 346 | VAR(DWORD, LifeJuvLast) 347 | VAR(DWORD, LifeJuvPercent) 348 | 349 | VAR(DWORD, ManaPotDelay) 350 | VAR(DWORD, ManaPotLast) 351 | VAR(DWORD, ManaPotPercent) 352 | 353 | VAR(DWORD, ManaJuvDelay) 354 | VAR(DWORD, ManaJuvLast) 355 | VAR(DWORD, ManaJuvPercent) 356 | 357 | VAR(DWORD, MercJuvDelay) 358 | VAR(DWORD, MercJuvLast) 359 | VAR(DWORD, MercJuvPercent) 360 | 361 | VAR(DWORD, MercPotDelay) 362 | VAR(DWORD, MercPotLast) 363 | VAR(DWORD, MercPotPercent) 364 | 365 | //Reveal 366 | TOGGLE(ProtectItemSocket) 367 | TOGGLE(ViewItemBasicStats) 368 | TOGGLE(ViewSocketables) 369 | 370 | //Console 371 | TOGGLE(ConsoleLogs) 372 | 373 | VAR(BOOL, AntiShake) 374 | VAR(BOOL, AntiWeather) 375 | VAR(BOOL, AutoRevealAutomap) 376 | VAR(BOOL, Ethereal) 377 | VAR(BOOL, FullLightRadius) 378 | VAR(BOOL, ItemLevel) 379 | VAR(BOOL, LevelNames) 380 | VAR(BOOL, MiniShrine) 381 | VAR(BOOL, Missiles) 382 | VAR(BOOL, Monsters) 383 | VAR(BOOL, MonsterLifeBarResists) 384 | VAR(BOOL, MonsterLifeBarLevel) 385 | VAR(BOOL, MonsterLifeBarTC) 386 | VAR(BOOL, MonsterResists) 387 | VAR(BOOL, MonsterNames) 388 | VAR(BOOL, ShrineImages) 389 | VAR(BOOL, Sockets) 390 | VAR(BOOL, ViewSocketable) 391 | 392 | VAR(BOOL, MonsterLifeBarNameOn) 393 | VAR(BOOL, ViewSocketableMonsterLifeBarFlag) 394 | 395 | VAR(BYTE, MonsterTCs[1000]) 396 | VAR(BYTE, SuperUniqueTCs[100]) 397 | 398 | VAR(WCHAR, MonsterLifeBarName[0x400]) 399 | VAR(WCHAR, MonsterDesc[0x800]) 400 | 401 | VAR(LPCELLFILE, MyShrineCells[2][TOTALSHRINES]) 402 | VAR(LPCELLFILE, WaypointCell) 403 | VAR(LPCELLFILE, MinimapObjectCell) 404 | 405 | VAR(MYAUTOMAPLAYERMAN, MyAutoMapLayer[100]) 406 | 407 | VAR(INT, LevelNamesFontColor) 408 | VAR(CHAR, StaffTombIndicator[0x40]) 409 | 410 | VAR(BYTE, LifeBarTransparency) 411 | VAR(BYTE, LifeBarColor) 412 | 413 | VAR(INT, HostileSummonColor) 414 | VAR(INT, PartiedSummonColor) 415 | VAR(INT, NeutralSummonColor) 416 | VAR(INT, MySummonColor) 417 | 418 | VAR(INT, HostileColor) 419 | VAR(INT, MyColor) 420 | VAR(INT, NeutralColor) 421 | VAR(INT, PartyColor) 422 | 423 | VAR(INT, BossColor) 424 | VAR(INT, BossNameColor) 425 | VAR(INT, ChampionColor) 426 | VAR(INT, MinionColor) 427 | VAR(INT, NormalColor) 428 | 429 | VAR(Reveal *, Reveal) 430 | 431 | VAR(WCHAR *, MonsterDescComma) 432 | 433 | VAR(LPUNITANY, ViewingUnit) 434 | KEY(ViewInventory) 435 | 436 | //Speed 437 | VAR(BOOL, SpeedAttack) 438 | VAR(BOOL, SpeedCast) 439 | 440 | VAR(INT, AttackFrames) 441 | VAR(INT, CastFrames) 442 | 443 | VAR(INT, AttackSpeed) 444 | VAR(INT, BlockRate) 445 | VAR(INT, CastRate) 446 | VAR(INT, HitRecoveryRate) 447 | VAR(INT, RunWalkSpeed) 448 | VAR(INT, VelocitySpeed) 449 | 450 | //States 451 | VAR(BOOL, DelayedChicken) 452 | 453 | VAR(DWORD, AmplifyDamageTimer) 454 | VAR(DWORD, BattleCommandTimer) 455 | VAR(DWORD, BattleCryTimer) 456 | VAR(DWORD, BattleOrdersTimer) 457 | VAR(DWORD, BoneArmorTimer) 458 | VAR(DWORD, BurstOfSpeedTimer) 459 | VAR(DWORD, ChillingArmorTimer) 460 | VAR(DWORD, ColdTimer) 461 | VAR(DWORD, ConvictedTimer) 462 | VAR(DWORD, CycloneArmorTimer) 463 | VAR(DWORD, DecrepifyTimer) 464 | VAR(DWORD, EnchantTimer) 465 | VAR(DWORD, EnergyShieldTimer) 466 | VAR(DWORD, FadeTimer) 467 | VAR(DWORD, FrozenTimer) 468 | VAR(DWORD, FrozenArmorTimer) 469 | VAR(DWORD, HolyFrozenTimer) 470 | VAR(DWORD, HolyShieldTimer) 471 | VAR(DWORD, InnerSightTimer) 472 | VAR(DWORD, IronMaidenTimer) 473 | VAR(DWORD, LifeTapTimer) 474 | VAR(DWORD, LowerResistTimer) 475 | VAR(DWORD, OakSageTimer) 476 | VAR(DWORD, OpenWoundsTimer) 477 | VAR(DWORD, PoisonedTimer) 478 | VAR(DWORD, ShiverArmorTimer) 479 | VAR(DWORD, ShoutTimer) 480 | VAR(DWORD, SlowedTimer) 481 | VAR(DWORD, TerrorTimer) 482 | VAR(DWORD, ThunderStormTimer) 483 | VAR(DWORD, VenomTimer) 484 | 485 | //Teleport 486 | ARRAY(POINT, TeleportQueue) 487 | 488 | KEY(TeleHost) 489 | TOGGLE(TeleWalk) 490 | 491 | VAR(BOOL, FastTeleport) 492 | VAR(BOOL, FarcastTeleport) 493 | 494 | //Threads 495 | VAR(THREAD, PrimaryThread) 496 | ARRAY(HANDLE, Threads) 497 | 498 | //Vectors 499 | ARRAY(LPVECTOR, CurrentVectors) 500 | 501 | //Console 502 | //ARRAY(CONSOLEMESSAGE, List) 503 | 504 | KEY(NextLevelVector) 505 | KEY(PreviousLevelVector) 506 | KEY(QuestVector) 507 | KEY(WaypointVector) 508 | 509 | VAR(INT, ActiveVectorColor) 510 | VAR(INT, NextLevelVectorColor) 511 | VAR(INT, PreviousLevelVectorColor) 512 | VAR(INT, QuestVectorColor) 513 | VAR(INT, WaypointVectorColor) 514 | 515 | VAR(DWORD, LastLevel) 516 | VAR(LPVECTOR, CurrentVector) 517 | 518 | //Winamp 519 | KEY(CurrentSong) 520 | KEY(NextSong) 521 | KEY(PreviousSong) 522 | KEY(PlaySong) 523 | KEY(PauseSong) 524 | KEY(StopSong) 525 | KEY(FastForwardSong) 526 | KEY(RewindSong) 527 | KEY(HigherSongVolume) 528 | KEY(LowerSongVolume) 529 | 530 | VAR(CHAR, CurrentSongPhrase[1000]) 531 | 532 | #undef VARS 533 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Vectors.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/Vectors.cpp -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Winamp.cpp: -------------------------------------------------------------------------------- 1 | #include "Hack.h" 2 | 3 | LRESULT CurrentTime() 4 | { 5 | if (Winamp) 6 | return SendMessageA(Winamp, WM_USER, 0, 105); 7 | 8 | return FALSE; 9 | } 10 | 11 | LRESULT MaxTime() 12 | { 13 | if (Winamp) 14 | return SendMessageA(Winamp, WM_USER, 1, 105); 15 | 16 | return FALSE; 17 | } 18 | 19 | LPSTR CurrentSong() 20 | { 21 | static CHAR Title[1000]; 22 | 23 | if (!Winamp) 24 | return ""; 25 | 26 | if (Winamp) 27 | { 28 | GetWindowTextA(Winamp, Title, sizeof(Title)); 29 | 30 | if (strlen(Title) > 12) 31 | { 32 | * strrchr(Title, '-') = NULL; 33 | * strrchr(Title, ' ') = NULL; 34 | } 35 | 36 | else 37 | return ""; 38 | } 39 | 40 | return Title; 41 | } 42 | 43 | VOID Rewind() 44 | { 45 | if (Winamp) 46 | SendMessageA(Winamp, WM_COMMAND, 40061, 0); 47 | } 48 | 49 | VOID FastForward() 50 | { 51 | if (Winamp) 52 | SendMessageA(Winamp, WM_COMMAND, 40060, 0); 53 | } 54 | 55 | VOID LowerVolume() 56 | { 57 | if (Winamp) 58 | SendMessageA(Winamp, WM_COMMAND, 40059, 0); 59 | } 60 | 61 | VOID HigherVolume() 62 | { 63 | if (Winamp) 64 | SendMessageA(Winamp, WM_COMMAND, 40058, 0); 65 | } 66 | 67 | VOID NextSong() 68 | { 69 | if (Winamp) 70 | SendMessageA(Winamp, WM_COMMAND, 40048, 0); 71 | } 72 | 73 | VOID Stop() 74 | { 75 | if (Winamp) 76 | SendMessageA(Winamp, WM_COMMAND, 40047, 0); 77 | } 78 | 79 | VOID Pause() 80 | { 81 | if (Winamp) 82 | SendMessageA(Winamp, WM_COMMAND, 40046, 0); 83 | } 84 | 85 | VOID Play() 86 | { 87 | if (Winamp) 88 | SendMessageA(Winamp, WM_COMMAND, 40045, 0); 89 | } 90 | 91 | VOID PreviousSong() 92 | { 93 | if (Winamp) 94 | SendMessageA(Winamp, WM_COMMAND, 40044, 0); 95 | } -------------------------------------------------------------------------------- /d2 project Andy/Project Source/Winamp.h: -------------------------------------------------------------------------------- 1 | #define Winamp (FindWindowA("Winamp v1.x", NULL)) 2 | 3 | LRESULT CurrentTime(); 4 | LRESULT MaxTime(); 5 | LPSTR CurrentSong(); 6 | VOID Rewind(); 7 | VOID FastForward(); 8 | VOID LowerVolume(); 9 | VOID HigherVolume(); 10 | VOID NextSong(); 11 | VOID Stop(); 12 | VOID Pause(); 13 | VOID Play(); 14 | VOID PreviousSong(); -------------------------------------------------------------------------------- /d2 project Andy/Project Source/_UpgradeReport_Files/UpgradeReport.css: -------------------------------------------------------------------------------- 1 | BODY 2 | { 3 | BACKGROUND-COLOR: white; 4 | FONT-FAMILY: "Verdana", sans-serif; 5 | FONT-SIZE: 100%; 6 | MARGIN-LEFT: 0px; 7 | MARGIN-TOP: 0px 8 | } 9 | P 10 | { 11 | FONT-FAMILY: "Verdana", sans-serif; 12 | FONT-SIZE: 70%; 13 | LINE-HEIGHT: 12pt; 14 | MARGIN-BOTTOM: 0px; 15 | MARGIN-LEFT: 10px; 16 | MARGIN-TOP: 10px 17 | } 18 | .note 19 | { 20 | BACKGROUND-COLOR: #ffffff; 21 | COLOR: #336699; 22 | FONT-FAMILY: "Verdana", sans-serif; 23 | FONT-SIZE: 100%; 24 | MARGIN-BOTTOM: 0px; 25 | MARGIN-LEFT: 0px; 26 | MARGIN-TOP: 0px; 27 | PADDING-RIGHT: 10px 28 | } 29 | .infotable 30 | { 31 | BACKGROUND-COLOR: #f0f0e0; 32 | BORDER-BOTTOM: #ffffff 0px solid; 33 | BORDER-COLLAPSE: collapse; 34 | BORDER-LEFT: #ffffff 0px solid; 35 | BORDER-RIGHT: #ffffff 0px solid; 36 | BORDER-TOP: #ffffff 0px solid; 37 | FONT-SIZE: 70%; 38 | MARGIN-LEFT: 10px 39 | } 40 | .issuetable 41 | { 42 | BACKGROUND-COLOR: #ffffe8; 43 | BORDER-COLLAPSE: collapse; 44 | COLOR: #000000; 45 | FONT-SIZE: 100%; 46 | MARGIN-BOTTOM: 10px; 47 | MARGIN-LEFT: 13px; 48 | MARGIN-TOP: 0px 49 | } 50 | .issuetitle 51 | { 52 | BACKGROUND-COLOR: #ffffff; 53 | BORDER-BOTTOM: #dcdcdc 1px solid; 54 | BORDER-TOP: #dcdcdc 1px; 55 | COLOR: #003366; 56 | FONT-WEIGHT: normal 57 | } 58 | .header 59 | { 60 | BACKGROUND-COLOR: #cecf9c; 61 | BORDER-BOTTOM: #ffffff 1px solid; 62 | BORDER-LEFT: #ffffff 1px solid; 63 | BORDER-RIGHT: #ffffff 1px solid; 64 | BORDER-TOP: #ffffff 1px solid; 65 | COLOR: #000000; 66 | FONT-WEIGHT: bold 67 | } 68 | .issuehdr 69 | { 70 | BACKGROUND-COLOR: #E0EBF5; 71 | BORDER-BOTTOM: #dcdcdc 1px solid; 72 | BORDER-TOP: #dcdcdc 1px solid; 73 | COLOR: #000000; 74 | FONT-WEIGHT: normal 75 | } 76 | .issuenone 77 | { 78 | BACKGROUND-COLOR: #ffffff; 79 | BORDER-BOTTOM: 0px; 80 | BORDER-LEFT: 0px; 81 | BORDER-RIGHT: 0px; 82 | BORDER-TOP: 0px; 83 | COLOR: #000000; 84 | FONT-WEIGHT: normal 85 | } 86 | .content 87 | { 88 | BACKGROUND-COLOR: #e7e7ce; 89 | BORDER-BOTTOM: #ffffff 1px solid; 90 | BORDER-LEFT: #ffffff 1px solid; 91 | BORDER-RIGHT: #ffffff 1px solid; 92 | BORDER-TOP: #ffffff 1px solid; 93 | PADDING-LEFT: 3px 94 | } 95 | .issuecontent 96 | { 97 | BACKGROUND-COLOR: #ffffff; 98 | BORDER-BOTTOM: #dcdcdc 1px solid; 99 | BORDER-TOP: #dcdcdc 1px solid; 100 | PADDING-LEFT: 3px 101 | } 102 | A:link 103 | { 104 | COLOR: #cc6633; 105 | TEXT-DECORATION: underline 106 | } 107 | A:visited 108 | { 109 | COLOR: #cc6633; 110 | } 111 | A:active 112 | { 113 | COLOR: #cc6633; 114 | } 115 | A:hover 116 | { 117 | COLOR: #cc3300; 118 | TEXT-DECORATION: underline 119 | } 120 | H1 121 | { 122 | BACKGROUND-COLOR: #003366; 123 | BORDER-BOTTOM: #336699 6px solid; 124 | COLOR: #ffffff; 125 | FONT-SIZE: 130%; 126 | FONT-WEIGHT: normal; 127 | MARGIN: 0em 0em 0em -20px; 128 | PADDING-BOTTOM: 8px; 129 | PADDING-LEFT: 30px; 130 | PADDING-TOP: 16px 131 | } 132 | H2 133 | { 134 | COLOR: #000000; 135 | FONT-SIZE: 80%; 136 | FONT-WEIGHT: bold; 137 | MARGIN-BOTTOM: 3px; 138 | MARGIN-LEFT: 10px; 139 | MARGIN-TOP: 20px; 140 | PADDING-LEFT: 0px 141 | } 142 | H3 143 | { 144 | COLOR: #000000; 145 | FONT-SIZE: 80%; 146 | FONT-WEIGHT: bold; 147 | MARGIN-BOTTOM: -5px; 148 | MARGIN-LEFT: 10px; 149 | MARGIN-TOP: 20px 150 | } 151 | H4 152 | { 153 | COLOR: #000000; 154 | FONT-SIZE: 70%; 155 | FONT-WEIGHT: bold; 156 | MARGIN-BOTTOM: 0px; 157 | MARGIN-TOP: 15px; 158 | PADDING-BOTTOM: 0px 159 | } 160 | UL 161 | { 162 | COLOR: #000000; 163 | FONT-SIZE: 70%; 164 | LIST-STYLE: square; 165 | MARGIN-BOTTOM: 0pt; 166 | MARGIN-TOP: 0pt 167 | } 168 | OL 169 | { 170 | COLOR: #000000; 171 | FONT-SIZE: 70%; 172 | LIST-STYLE: square; 173 | MARGIN-BOTTOM: 0pt; 174 | MARGIN-TOP: 0pt 175 | } 176 | LI 177 | { 178 | LIST-STYLE: square; 179 | MARGIN-LEFT: 0px 180 | } 181 | .expandable 182 | { 183 | CURSOR: hand 184 | } 185 | .expanded 186 | { 187 | color: black 188 | } 189 | .collapsed 190 | { 191 | DISPLAY: none 192 | } 193 | .foot 194 | { 195 | BACKGROUND-COLOR: #ffffff; 196 | BORDER-BOTTOM: #cecf9c 1px solid; 197 | BORDER-TOP: #cecf9c 2px solid 198 | } 199 | .settings 200 | { 201 | MARGIN-LEFT: 25PX; 202 | } 203 | .help 204 | { 205 | TEXT-ALIGN: right; 206 | margin-right: 10px; 207 | } 208 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/_UpgradeReport_Files/UpgradeReport.xslt: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 |

63 | Solution: 64 | Project: 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 |

73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 92 | 102 | 103 | 104 | 105 | 106 | 107 | src 108 | 109 | 126 | 127 | 128 | 129 | 130 | 131 | 139 | 143 | 144 | 145 | 146 |
FilenameStatusErrorsWarnings
90 | javascript:document.images[''].click()src 91 | 93 | 94 | 95 | Converted 96 | 97 | 98 | 99 | Converted 100 | 101 |
132 | 133 | files 134 | 135 | 136 | 1 file 137 | 138 | 140 | Converted:
141 | Not converted: 142 |
147 |
148 |
149 | 150 | 151 | 152 | : 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | Conversion Report 162 | <xsl:if test="Properties/Property[@Name='LogNumber']"> 163 | <xsl:value-of select="Properties/Property[@Name='LogNumber']/@Value"/> 164 | </xsl:if> 165 | 166 | 189 | 190 | 191 |

Conversion Report -

192 | 193 |

194 | Time of Conversion:
195 |

196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 |

221 | 222 | 223 | 226 | 227 | 228 |
224 | Conversion Settings 225 |

229 | 230 | 231 |
232 |
233 | -------------------------------------------------------------------------------- /d2 project Andy/Project Source/_UpgradeReport_Files/UpgradeReport_Minus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/_UpgradeReport_Files/UpgradeReport_Minus.gif -------------------------------------------------------------------------------- /d2 project Andy/Project Source/_UpgradeReport_Files/UpgradeReport_Plus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/d2 project Andy/Project Source/_UpgradeReport_Files/UpgradeReport_Plus.gif -------------------------------------------------------------------------------- /d2 project Andy/Readme.md: -------------------------------------------------------------------------------- 1 | # Project Andy 2 | 3 | * the [source files](https://github.com/blizzhackers/bhfiles/tree/master/d2%20project%20Andy/Project%20Source) were shared by wisewolf on https://d2bot.discourse.group/t/bhfiles-software-archive/39/3 4 | 5 | * the files [Project 1.3.zip](https://github.com/blizzhackers/bhfiles/raw/master/d2%20project%20Andy/Project%201.3.zip) and [Project 2.0.zip](https://github.com/blizzhackers/bhfiles/raw/master/d2%20project%20Andy/Project%202.0.zip) were shared in [this bh.cc topic](https://web.archive.org/web/20180120120615/http://www.blizzhackers.cc/viewtopic.php?f=182&t=545191) 6 | -------------------------------------------------------------------------------- /pdf saved pages/Blizzhackers • Index page.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Blizzhackers • Index page.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II hacking development/ Diablo II Hacking Development.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II hacking development/ Diablo II Hacking Development.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II hacking development/D2 Packet List & Everything Packet Related.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II hacking development/D2 Packet List & Everything Packet Related.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II hacking development/Diablo II 1.14b Pointers - Patches - Functions - Structures.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II hacking development/Diablo II 1.14b Pointers - Patches - Functions - Structures.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II hacking development/Diablo II Next Generation 1.14D.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II hacking development/Diablo II Next Generation 1.14D.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II hacking development/Diablo II Packet Lists & Info.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II hacking development/Diablo II Packet Lists & Info.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II hacking development/Extra-work, stagec.dll.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II hacking development/Extra-work, stagec.dll.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II hacking development/Project 1.3 and 2.0 for v1.13 [works with Version Hack].pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II hacking development/Project 1.3 and 2.0 for v1.13 [works with Version Hack].pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II hacking development/Trying to predict IDs in game. How do you convert.._.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II hacking development/Trying to predict IDs in game. How do you convert.._.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II programs and exploits/ Diablo II Programs and Exploits.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II programs and exploits/ Diablo II Programs and Exploits.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II programs and exploits/1.12 and RedVex_ Plugin list and information.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II programs and exploits/1.12 and RedVex_ Plugin list and information.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II programs and exploits/Archived Hacks for previous patches.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II programs and exploits/Archived Hacks for previous patches.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II programs and exploits/Download Links.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II programs and exploits/Download Links.pdf -------------------------------------------------------------------------------- /pdf saved pages/Diablo II programs and exploits/Serby's 1.13c 16 & 26-Digit CD-Key Viewer & Changer.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/Diablo II programs and exploits/Serby's 1.13c 16 & 26-Digit CD-Key Viewer & Changer.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/ Core and Script Releases.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/ Core and Script Releases.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/AutoIt OOG by usabrad86.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/AutoIt OOG by usabrad86.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/D2BS v1.2 - Release Thread.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/D2BS v1.2 - Release Thread.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/D2BS v1.2.1 - Release Thread.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/D2BS v1.2.1 - Release Thread.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/D2BS v1.3 - Release Thread.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/D2BS v1.3 - Release Thread.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/D2BS v1.3.1 - Release Thread.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/D2BS v1.3.1 - Release Thread.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/D2BS v1.3.2 - Release Thread.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/D2BS v1.3.2 - Release Thread.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/D2BS v1.3.3 - Release Thread.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/D2BS v1.3.3 - Release Thread.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/D2BS v1.4 - Release Thread.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/D2BS v1.4 - Release Thread.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/InvRipper v1.3 with DIO (Darien's Inventory OOG).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/InvRipper v1.3 with DIO (Darien's Inventory OOG).pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/OOG by bobite (d2bs 1.4 +ntbot).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/OOG by bobite (d2bs 1.4 +ntbot).pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/OOG#.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/OOG#.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/Pickit Items including ALL sets, and ALL uniques.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/Pickit Items including ALL sets, and ALL uniques.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/Revly autobuilds.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/Revly autobuilds.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/YAMB for D2BS 1.4.1 on battle.net 1.13d.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/YAMB for D2BS 1.4.1 on battle.net 1.13d.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/[BETA] D2Driver - the alternative game manager.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/[BETA] D2Driver - the alternative game manager.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/d2bot# with kolbot release.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/d2bot# with kolbot release.pdf -------------------------------------------------------------------------------- /pdf saved pages/core and scripts releases/d2bot# with kolbot release2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/core and scripts releases/d2bot# with kolbot release2.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs help-support/ D2BS Help_Support.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs help-support/ D2BS Help_Support.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs help-support/CALL FOR ASSISTANCE_ Reverse engineers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs help-support/CALL FOR ASSISTANCE_ Reverse engineers.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs help-support/D2BS 1.14d.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs help-support/D2BS 1.14d.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs help-support/D2BS Rules & Guidelines - Free hugs if you read this!.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs help-support/D2BS Rules & Guidelines - Free hugs if you read this!.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs help-support/D2Bot # + D2BS 1.14d.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs help-support/D2Bot # + D2BS 1.14d.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs help-support/Official IRC Channel - Now offering support_.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs help-support/Official IRC Channel - Now offering support_.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs help-support/Official kolbot Support Thread.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs help-support/Official kolbot Support Thread.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs help-support/Official kolbot Support Thread1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs help-support/Official kolbot Support Thread1.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs help-support/vampwolf idea thread.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs help-support/vampwolf idea thread.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/ D2BS Script Development.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/ D2BS Script Development.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/AutoChaos - an intuitive team cs script.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/AutoChaos - an intuitive team cs script.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/AutoChaos - an intuitive team cs script2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/AutoChaos - an intuitive team cs script2.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/AutoSmurf (level & quest) _ why be awake for next reset_.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/AutoSmurf (level & quest) _ why be awake for next reset_.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/Bumperless Rusher for Kolbot.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/Bumperless Rusher for Kolbot.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/D2 Dropper project.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/D2 Dropper project.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/D2BS Compiled Scripts.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/D2BS Compiled Scripts.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/DiabloHelper healing pala and enchant sorc_.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/DiabloHelper healing pala and enchant sorc_.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/FastExp.js.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/FastExp.js.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/How do you get D2BS to return a running script list_.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/How do you get D2BS to return a running script list_.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/How does sendPacket function work.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/How does sendPacket function work.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/How would I write this_.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/How would I write this_.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/Kolbot tcp_ip starter.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/Kolbot tcp_ip starter.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/Manual play script with packet sniffing tools and more.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/Manual play script with packet sniffing tools and more.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/Manual play script with packet sniffing tools and more2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/Manual play script with packet sniffing tools and more2.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/Modified Classic Rush Script which Incorporates Followers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/Modified Classic Rush Script which Incorporates Followers.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/Project_ D2BS Classic - update [pic 16_02_16, vid 25_01_16].pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/Project_ D2BS Classic - update [pic 16_02_16, vid 25_01_16].pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/Reroll Items with Kolbot.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/Reroll Items with Kolbot.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/Script to export AutoMule files.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/Script to export AutoMule files.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/[!] Want to contribute in 2018_.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/[!] Want to contribute in 2018_.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/auto-BO-bot-script.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/auto-BO-bot-script.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/autoequip for merc.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/autoequip for merc.pdf -------------------------------------------------------------------------------- /pdf saved pages/d2bs script development/noob tomb script.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blizzhackers/bhfiles/2afc3a59da83617853ebbb0bcbb099b5c4bf4d4e/pdf saved pages/d2bs script development/noob tomb script.pdf --------------------------------------------------------------------------------