Commit Graph

159 Commits

Author SHA1 Message Date
crazywh1t3
88d456c640 Fix memory address for reading game quests 2025-10-15 23:41:29 +02:00
guiyomu-dev
8844908462 fix comparison 2025-10-15 02:38:59 +02:00
guiyomu-dev
294273abfc fix offsets 2025-10-15 02:13:53 +02:00
guiyomu-dev
b7017a4cb3 add helper to get latest Inventory data 2025-10-13 23:16:27 +02:00
guiyomu-dev
05ef02e35b update send packet to be compatible with win 11 24h2 2025-10-13 23:16:27 +02:00
adpist
3d5be6b2c0 Safeguard from divide by 0 on replenish stat computation 2025-10-12 13:08:33 +02:00
guiyomu-dev
8c72ab6d50 add send packet function 2025-10-04 20:42:14 +02:00
guiyomu-dev
ead8e9fbe3 use pattern for key bindings 2025-10-01 21:05:46 +02:00
guiyomu-dev
00cfbed068 add ability to get the merc list in legacy graphic mode 2025-09-09 07:39:04 +02:00
elb
dba9a7b5a5 Make OpenMenus and Hover data accessible outside GetData() (#92)
Simply making openMenu and hoverData exposed like everything else in game_reader.go

to be used with koolo on demand  outside of  GetData()
This will improve openMenu and hover refresh by avoiding updating everything from GetData  when we only need light information.

Benefit:
Increase responsiveness of bot, reduce cpu usage by much

i already have the work done on koolo side waiting on this to be merged.
2025-03-24 09:05:59 +02:00
Arto Simonyan
169a765152 Add IsBlocking function (#89)
- Add IsBlocking function that checks if confirmation popup or blocking panel (loading screen as in when trying to re-connect to bnet) are on the screen
2025-03-14 20:50:00 +02:00
Arto Simonyan
844439002c Panel Manager Improvements (#85)
* Panel Manager Improvements

- Now maps instead of slices for easy traverse
- Function for easy and safe traverse of paths
- Removed constant updates of Panel Manager to reduce usage. It will now be called on demand.
- Updated some functions to use the new Panel Manager.

* Remove unused struct members

* Added IsDismissalModalPresent (error popup)

* Correct function return for char select screen and dismissal modal

* Add error checking to IsDismissableModalPresent
2025-03-04 08:09:22 +09:00
joffreybesos
4a7e782343 panels (#84) 2025-03-01 22:00:50 +09:00
elb
4204d68f23 Performance upgrade? (#83)
* Performance upgrade?

* update monster to be on 200ms since 250ms will skip to 300
2025-02-27 17:04:16 +02:00
joffreybesos
7d37526163 Added waypoint pattern scan (#80)
Co-authored-by: Arto Simonyan <artosimonyan@protonmail.com>
2025-02-23 21:01:16 +02:00
elb
fd7f7ba8a4 Pattern Scanner for missing FPS (#82) 2025-02-23 20:59:23 +02:00
elb
5455fd9772 Fix broken negative stats, update some stat description (#79)
* Fix broken negative stats, update some stat description

* ###

* #2

* curses is necro, frw on armor is velocity percent ( unused)

* Update rules to accept negative value

fix a bug with unique grand charm tz

[name] == grandcharm && [quality] == unique # ([fireresist] + [coldresist] + [lightresist]) >= -75

Single stat rules like [coldresist] >= -75 require the stat to exist

expressions like ([fireresist] + [coldresist] + [lightresist]) >= -75 treat missing stats as 0

Unidentified items with any stat requirements need identification first

* LevelReq + identifiedName added for all Crafted items

* Fix issue with rule.go

* Update stat throw damage and basename: GrandCharm -- Grand Charm

* Adjusting rule for ItemLevelReq  = 0

* update rule again
2025-02-21 18:11:27 +02:00
elb
438f80b911 Added WidgetStates + ActiveWeaponSlot (#62) 2025-02-19 20:15:33 +09:00
elb
1aa957dd96 Linking Item.LevelReq to stat(92) stat.LevelRequire + nip parser, Upped item levelreq (#78)
* Linking Item.LevelReq to stat(92) stat.LevelRequire . Update nip parser

* LevelReq for upgraded items

LevelReq is now accurate for upgraded and double upgraded set/unique items

Fixed an issue with levelreq not working with socketed jewels on items.
2025-02-17 19:28:27 +02:00
elb
120c2ba144 Prefix,Suffix,LevelReq Socketed items on bases, bodyloc, Merc equipment (#74)
* Prefix,Suffix, Socketed with base, bodyloc, Merc equipment

Will add better description later:

Item that has socketed items now display their linked runes/jewels/gems in accurate order

Rare prefix, rare suffix id
Magic prefix1,2,3  magic suffix1,2,3
Prefix1 also used to tell wich runeword it is
Spirit 20635, cta 20519 , infinity 20566 see : getlocalestring.txt

Mercenary equipment now displaying in inventory list . Also has custom location : mercenary instead of equipped

Bodyloc :
	// Body locations
	LocNone              LocationType = "none"
	LocHead              LocationType = "head"
	LocNeck              LocationType = "neck"
	LocTorso             LocationType = "torso"
	LocLeftArm           LocationType = "left_arm"
	LocRightArm          LocationType = "right_arm"
	LocLeftRing          LocationType = "left_ring"
	LocRightRing         LocationType = "right_ring"
	LocBelt              LocationType = "belt"
	LocFeet              LocationType = "feet"
	LocGloves            LocationType = "gloves"
	LocLeftArmSecondary  LocationType = "left_arm_secondary"
	LocRightArmSecondary LocationType = "right_arm_secondary"

	Note that if you begin game on secondary slot it will be left_arm  then primary will be  left_arm_secondary (inversed):  With pr 62 (activeweaponslot) we will be able to solve this potential issue.

* small optimization

* Socketed items to base from pointer

new helper functions.
AutoAffix offset.

* remove helpers fnc, flag isEquipped to HasBeenEquipped

* Runewords names mapped

* helper function not needed

* Optimization

* adjust pre-allocations

* readd removed itemloc comment

* Addex prefix/suffix to rules .nip

new structure:
[Type], [Quality],[Class], [Name], [Flag], [Color], [Prefix], [Suffix]  #  Stats

Exemple : [name] == ring && [quality] == rare && [suffix] == 174 #

Any magic ring with suffix 'of The Apprentice'  ( 10 faster cast rate)

Will be useful for trophy items with fool/cruel  [prefix] == 1416 [prefix] == 1273

* LevelReq + Affixes mapping rare/magic/base/runewords. Nip parser LevelReq

* Unique and set items mapping + LevelReq
2025-02-16 23:02:03 +02:00
Arto Simonyan
09dfe3c65d Add more item flags (#69)
* Add more item flags

- Add more item flags
- Modify some of the stat strings

* fix ethereal

* Rename flag
2025-02-09 01:08:58 +02:00
elb
415ac29ab1 Chat Open menu + additions to IsMenuOpen() (#71) 2025-01-19 18:32:31 +02:00
elb
8bce23b039 fix missing stats (#68)
Credits to gogigogi1  thanks!
2025-01-06 03:50:39 +02:00
elb
2924189fe8 Added Entrance/Stairs unittype5 table lvlwrap.txt (#64) 2024-12-23 20:06:15 +02:00
Arto Simonyan
8203394c9f Revert "Update missing itemstat offset (#65)" (#66)
This reverts commit 5eae82b847.
2024-12-23 19:51:50 +02:00
elb
5eae82b847 Update missing itemstat offset (#65) 2024-12-23 16:59:01 +02:00
elb
444f4b0e9b Added a few OpenMenus, also HasMerc() (#60)
* wpList, LoadingScreen, GetSelectedCharacterName
Credits to gogigogi1

* Class offset updated

* TZ online

* IsCorpse Offset

* Added a few OpenMenus, also HasMerc()
PortraitsShown,BeltRows,QuestLog,MercInventory,NewStats
then  func  HasMerc()  return true if we have merc.
2024-12-20 17:50:33 +09:00
Héctor Giménez
bfd86a6535 Revert "Added more OpenMenus (#58)" (#59)
This reverts commit 7f2eb8b8f1.
2024-12-18 22:17:39 +09:00
elb
7f2eb8b8f1 Added more OpenMenus (#58) 2024-12-18 22:08:14 +09:00
elb
de6942b464 Remove baal tentacles from grid
Prevent pathing issue in baal chamber
2024-12-17 00:24:04 +09:00
elb
77bf135bf8 New quest offset and structure
Credits to gogigogi1
2024-12-17 00:23:14 +09:00
elb
889fa020f2 Lastgamename/lastgamepassword (#56)
* Lastgamename/lastgamepassword

Credits to Gogigogi1

* Remove //outdated ckm

* Removing offset since we have direct address
2024-12-12 18:16:29 +02:00
elb
823a0a05b0 player.go Corpse offset (#53) 2024-12-08 00:39:19 +02:00
elb
89a1b3ca26 IsCorpse Offset (#52)
Update corpse offset
2024-12-07 23:52:22 +02:00
elb
aecd76dcb7 TZ online 2024-12-07 15:26:15 +09:00
elb
7a98fc5117 Class offset updated 2024-12-07 15:26:15 +09:00
elb
1cf22f10cd wpList, LoadingScreen, GetSelectedCharacterName
Credits to gogigogi1
2024-12-07 15:26:15 +09:00
Héctor Giménez
bd7e8656b8 update addresses 2024-12-07 03:14:59 +09:00
joffreybesos
2270b7c621 fixed following patch (#50) 2024-12-06 15:54:59 +09:00
elb
2eeee0cf1f Npc/Monsters Mode and Portals destination + optimization (#49)
* Added States for monsters and corpses

Now can properly identify if a corpse is interactable with a skill ( barbarian, necromancer)
Also getting states about monsters  : Exemple  Soul Killer with Conviction aura:   State  28 // conviction

Also can tell if monster has a state after you used a skill on it  Exemple:   State 56  Terror ( After using Barbarian skill Howl to fear )

Another Exemple  using Grief on Mephistos he now have  states :    2 poison
    52  Preventheal

will be very useful for further development.

* Added modes to player

Now accessible in koolo using : s.data.PlayerUnit.Mode

Those are Modes for player:
const Death: 0;
        const StandingOutsideTown: 1;
        const Walking: 2;
        const Running: 3;
        const GettingHit: 4;
        const StandingInTown: 5;
        const WalkingInTown: 6;
        const Attacking1: 7;
        const Attacking2: 8;
        const Blocking: 9;
        const CastingSkill: 10;
        const ThrowingItem: 11;
        const Kicking: 12;
        const UsingSkill1: 13;
        const UsingSkill2: 14;
        const UsingSkill3: 15;
        const UsingSkill4: 16;
        const Dead: 17;
        const SkillActionSequence: 18;
        const KnockedBack: 19;

* update Added alias(const) for player modes

can be used like this s.data.PlayerUnit.Mode == mode.StandingInTown

* added modes to object

0 = Object idle
1 = Object operating
2 = Object opened
3 = Object special 1    ?? to be determined what it does exactly
4 = Object special 2    ?? to be determined what it does exactly
5 = Object special 3    ?? to be determined what it does exactly
6 = Object special 4    ?? to be determined what it does exactly
7 = Object special 5    ?? to be determined what it does exactly

* update object mode strings

* Update object_mode.go

* Update object_mode.go

* update object modes again. accurate now

* Added IsSealBoss()  for Chaos Run

* Npc/Monster Modes and Portals destination
also IsEscapingType()  Monster cannot be attacked when airborne or hide in water (NpcMode 8)

* Npc/Monster Modes and Portals destination
also IsEscapingType()  Monster cannot be attacked when airborne or hide in water (NpcMode 8)

* Optimized monsters.go and object.go
also catapults have been added to ignore list

* Tz Frigid Higland ingores added
2024-12-01 22:54:57 +09:00
Héctor Giménez
b2c710dc5c fix necro revive and proper locate items from cube 2024-11-07 21:56:02 +09:00
elb
7523a5caed added modes to object (update) (#46)
* Added States for monsters and corpses

Now can properly identify if a corpse is interactable with a skill ( barbarian, necromancer)
Also getting states about monsters  : Exemple  Soul Killer with Conviction aura:   State  28 // conviction

Also can tell if monster has a state after you used a skill on it  Exemple:   State 56  Terror ( After using Barbarian skill Howl to fear )

Another Exemple  using Grief on Mephistos he now have  states :    2 poison
    52  Preventheal

will be very useful for further development.

* Added modes to player

Now accessible in koolo using : s.data.PlayerUnit.Mode

Those are Modes for player:
const Death: 0;
        const StandingOutsideTown: 1;
        const Walking: 2;
        const Running: 3;
        const GettingHit: 4;
        const StandingInTown: 5;
        const WalkingInTown: 6;
        const Attacking1: 7;
        const Attacking2: 8;
        const Blocking: 9;
        const CastingSkill: 10;
        const ThrowingItem: 11;
        const Kicking: 12;
        const UsingSkill1: 13;
        const UsingSkill2: 14;
        const UsingSkill3: 15;
        const UsingSkill4: 16;
        const Dead: 17;
        const SkillActionSequence: 18;
        const KnockedBack: 19;

* update Added alias(const) for player modes

can be used like this s.data.PlayerUnit.Mode == mode.StandingInTown

* added modes to object

0 = Object idle
1 = Object operating
2 = Object opened
3 = Object special 1    ?? to be determined what it does exactly
4 = Object special 2    ?? to be determined what it does exactly
5 = Object special 3    ?? to be determined what it does exactly
6 = Object special 4    ?? to be determined what it does exactly
7 = Object special 5    ?? to be determined what it does exactly

* update object mode strings

* Update object_mode.go

* Update object_mode.go

* update object modes again. accurate now
2024-10-05 11:47:06 +09:00
elb
19376148b3 Added modes to player (#44)
* Added States for monsters and corpses

Now can properly identify if a corpse is interactable with a skill ( barbarian, necromancer)
Also getting states about monsters  : Exemple  Soul Killer with Conviction aura:   State  28 // conviction

Also can tell if monster has a state after you used a skill on it  Exemple:   State 56  Terror ( After using Barbarian skill Howl to fear )

Another Exemple  using Grief on Mephistos he now have  states :    2 poison
    52  Preventheal

will be very useful for further development.

* Added modes to player

Now accessible in koolo using : s.data.PlayerUnit.Mode

Those are Modes for player:
const Death: 0;
        const StandingOutsideTown: 1;
        const Walking: 2;
        const Running: 3;
        const GettingHit: 4;
        const StandingInTown: 5;
        const WalkingInTown: 6;
        const Attacking1: 7;
        const Attacking2: 8;
        const Blocking: 9;
        const CastingSkill: 10;
        const ThrowingItem: 11;
        const Kicking: 12;
        const UsingSkill1: 13;
        const UsingSkill2: 14;
        const UsingSkill3: 15;
        const UsingSkill4: 16;
        const Dead: 17;
        const SkillActionSequence: 18;
        const KnockedBack: 19;

* update Added alias(const) for player modes

can be used like this s.data.PlayerUnit.Mode == mode.StandingInTown
2024-10-03 07:29:40 +09:00
elb
9020cc396e Added States for monsters and corpses (#43) 2024-09-29 20:32:19 +09:00
Arto Simonyan
7ec2f584f5 Refactor Checks (#39)
- Refactor IsInLobby
- Refactor IsInCharacterCreationScreen
- Refactor IsInCharacterSelectionScreen
2024-08-26 15:38:00 +03:00
Farmith
ddeb350bee new questptr (#38) 2024-08-23 21:16:21 +03:00
Héctor Giménez
fea2e20b84 tz online address 2024-08-23 21:57:17 +09:00
Héctor Giménez
ff36ccda9e fix kb address (again) 2024-08-23 08:51:09 +09:00
Héctor Giménez
778d21fb73 fix kb address 2024-08-22 21:27:32 +09:00
Farmith
0b4365936e Panel manager addition (#36)
* Added panelManager support for d2go (crude implementation but works)

* Refined a little bit

* Made widget map a more mappy map which can be access without iterations

* Added widgets to debugger
2024-08-22 19:58:53 +09:00