From ae31b9ee3a415dc3ddd418cdc9b7d7ab2b558f3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=ADn?= Date: Thu, 27 Jul 2023 18:43:28 +0200 Subject: [PATCH 01/25] Quest proxy --- .../darkbot/core/manager/FacadeManager.java | 3 ++ .../core/objects/facades/QuestProxy.java | 35 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java diff --git a/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java b/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java index 3489efa00..48f444b69 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java +++ b/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java @@ -24,6 +24,7 @@ import com.github.manolo8.darkbot.core.objects.facades.SpaceMapWindowProxy; import com.github.manolo8.darkbot.core.objects.facades.StatsProxy; import com.github.manolo8.darkbot.core.objects.facades.WorldBossOverviewProxy; +import com.github.manolo8.darkbot.core.objects.facades.QuestProxy; import com.github.manolo8.darkbot.core.objects.swf.PairArray; import eu.darkbot.api.PluginAPI; @@ -58,6 +59,7 @@ public class FacadeManager implements Manager, eu.darkbot.api.API.Singleton { public final NpcEventProxy npcEventProxy; public final WorldBossOverviewProxy worldBossOverview; public final Updatable group; + public final QuestProxy quest; public FacadeManager(PluginAPI pluginApi) { this.pluginAPI = pluginApi; @@ -80,6 +82,7 @@ public FacadeManager(PluginAPI pluginApi) { this.npcEventProxy = registerProxy("npc_event", NpcEventProxy.class); this.worldBossOverview = registerProxy("worldBoss_overview", WorldBossOverviewProxy.class); this.group = registerProxy("GroupProxy", Updatable.NoOp.class); + this.quests = registerProxy("QuestProxy", QuestProxy.class); registerProxy("dispatch", DispatchProxy.class); registerProxy("ggBuilder", GalaxyBuilderProxy.class); diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java new file mode 100644 index 000000000..38e1b4dbe --- /dev/null +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -0,0 +1,35 @@ +package com.github.manolo8.darkbot.core.objects.facades; + +import com.github.manolo8.darkbot.core.itf.Updatable; +import com.github.manolo8.darkbot.core.objects.swf.ObjArray; +import com.github.manolo8.darkbot.core.utils.ByteUtils; + +import eu.darkbot.api.API; + +import static com.github.manolo8.darkbot.Main.API; + +public class QuestProxy extends Updatable implements API.Singleton { + + private final ObjArray questConditionsArr = ObjArray.ofVector(true); + private boolean active; + private String category, title, descriptiuon; + private int id; + + @Override + public void update() { + if (address == 0) { + return; + } + + long questClass = API.readMemoryLong(address + 0x98) & ByteUtils.ATOM_MASK; + + long actualQuest = API.readMemoryLong(questClass + 0x28) & ByteUtils.ATOM_MASK; + + this.id = API.readMemoryInt(actualQuest + 0x20); + this.active = API.readMemoryBoolean(actualQuest + 0x24); + this.category = API.readMemoryString(actualQuest, 0x48); + this.title = API.readMemoryString(actualQuest, 0x68); + this.descriptiuon = API.readMemoryString(actualQuest, 0x70); + } + +} \ No newline at end of file From 0da8598b9efcfd0b8a0eecd547f0fe964cb4778b Mon Sep 17 00:00:00 2001 From: dm94 Date: Thu, 27 Jul 2023 18:45:44 +0200 Subject: [PATCH 02/25] fixed typo error --- .../darkbot/core/manager/FacadeManager.java | 54 ++++++++++--------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java b/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java index 48f444b69..646fe9cb6 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java +++ b/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java @@ -34,9 +34,9 @@ import static com.github.manolo8.darkbot.Main.API; public class FacadeManager implements Manager, eu.darkbot.api.API.Singleton { - private final PairArray commands = PairArray.ofArray(); - private final PairArray proxies = PairArray.ofArray(); - private final PairArray mediators = PairArray.ofArray(); + private final PairArray commands = PairArray.ofArray(); + private final PairArray proxies = PairArray.ofArray(); + private final PairArray mediators = PairArray.ofArray(); private final List updatables = new ArrayList<>(); private final PluginAPI pluginAPI; @@ -59,30 +59,30 @@ public class FacadeManager implements Manager, eu.darkbot.api.API.Singleton { public final NpcEventProxy npcEventProxy; public final WorldBossOverviewProxy worldBossOverview; public final Updatable group; - public final QuestProxy quest; + public final QuestProxy quests; public FacadeManager(PluginAPI pluginApi) { this.pluginAPI = pluginApi; - this.log = registerMediator("LogWindowMediator", LogMediator.class); - this.chat = registerProxy("ChatProxy", ChatProxy.class); - this.stats = registerProxy("StatsProxy", StatsProxy.class); - this.escort = registerProxy("payload_escort", EscortProxy.class); - this.booster = registerProxy("BoosterProxy", BoosterProxy.class); - this.settings = registerProxy("SettingsWindowFUIProxy", SettingsProxy.class); - this.slotBars = registerProxy("ItemsControlMenuProxy", SlotBarsProxy.class); - this.labyrinth = registerProxy("frozen_labyrinth", FrozenLabyrinthProxy.class); - this.eternalGate = registerProxy("eternal_gate", EternalGateProxy.class); - this.blacklightGate = registerProxy("eternal_blacklight", EternalBlacklightProxy.class); - this.chrominEvent = registerProxy("chrominEvent", ChrominProxy.class); - this.astralGate = registerProxy("rogue_lite", AstralGateProxy.class); - this.highlight = registerProxy("HighlightProxy", HighlightProxy.class); - this.spaceMapWindowProxy = registerProxy("spacemap", SpaceMapWindowProxy.class); - this.plutus = registerProxy("plutus", GauntletPlutusProxy.class); - this.npcEventProxy = registerProxy("npc_event", NpcEventProxy.class); - this.worldBossOverview = registerProxy("worldBoss_overview", WorldBossOverviewProxy.class); - this.group = registerProxy("GroupProxy", Updatable.NoOp.class); - this.quests = registerProxy("QuestProxy", QuestProxy.class); + this.log = registerMediator("LogWindowMediator", LogMediator.class); + this.chat = registerProxy("ChatProxy", ChatProxy.class); + this.stats = registerProxy("StatsProxy", StatsProxy.class); + this.escort = registerProxy("payload_escort", EscortProxy.class); + this.booster = registerProxy("BoosterProxy", BoosterProxy.class); + this.settings = registerProxy("SettingsWindowFUIProxy", SettingsProxy.class); + this.slotBars = registerProxy("ItemsControlMenuProxy", SlotBarsProxy.class); + this.labyrinth = registerProxy("frozen_labyrinth", FrozenLabyrinthProxy.class); + this.eternalGate = registerProxy("eternal_gate", EternalGateProxy.class); + this.blacklightGate = registerProxy("eternal_blacklight", EternalBlacklightProxy.class); + this.chrominEvent = registerProxy("chrominEvent", ChrominProxy.class); + this.astralGate = registerProxy("rogue_lite", AstralGateProxy.class); + this.highlight = registerProxy("HighlightProxy", HighlightProxy.class); + this.spaceMapWindowProxy = registerProxy("spacemap", SpaceMapWindowProxy.class); + this.plutus = registerProxy("plutus", GauntletPlutusProxy.class); + this.npcEventProxy = registerProxy("npc_event", NpcEventProxy.class); + this.worldBossOverview = registerProxy("worldBoss_overview", WorldBossOverviewProxy.class); + this.group = registerProxy("GroupProxy", Updatable.NoOp.class); + this.quests = registerProxy("QuestProxy", QuestProxy.class); registerProxy("dispatch", DispatchProxy.class); registerProxy("ggBuilder", GalaxyBuilderProxy.class); @@ -124,13 +124,15 @@ public void install(BotInstaller botInstaller) { public void tick() { // Currently commands are not used by the bot and they represent - // a decently big cpu chunk in ticking. Leaving them out reduces tick time significantly. - //commands.update(); + // a decently big cpu chunk in ticking. Leaving them out reduces tick time + // significantly. + // commands.update(); proxies.update(); mediators.update(); for (Updatable updatable : updatables) { - if (updatable.address != 0) updatable.update(); + if (updatable.address != 0) + updatable.update(); } } } From 992d78ca7602f9c8e14f8d078c8bd3176dab7a2f Mon Sep 17 00:00:00 2001 From: dm94 Date: Thu, 27 Jul 2023 20:25:19 +0200 Subject: [PATCH 03/25] Updated quest proxy --- .../core/objects/facades/QuestProxy.java | 69 +++++++++++++++---- 1 file changed, 57 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index 38e1b4dbe..663437d4a 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -1,19 +1,16 @@ package com.github.manolo8.darkbot.core.objects.facades; import com.github.manolo8.darkbot.core.itf.Updatable; -import com.github.manolo8.darkbot.core.objects.swf.ObjArray; import com.github.manolo8.darkbot.core.utils.ByteUtils; import eu.darkbot.api.API; import static com.github.manolo8.darkbot.Main.API; -public class QuestProxy extends Updatable implements API.Singleton { +import org.jetbrains.annotations.Nullable; - private final ObjArray questConditionsArr = ObjArray.ofVector(true); - private boolean active; - private String category, title, descriptiuon; - private int id; +public class QuestProxy extends Updatable implements API.Singleton { + private Quest currentQuest = new Quest(); @Override public void update() { @@ -23,13 +20,61 @@ public void update() { long questClass = API.readMemoryLong(address + 0x98) & ByteUtils.ATOM_MASK; - long actualQuest = API.readMemoryLong(questClass + 0x28) & ByteUtils.ATOM_MASK; + long currentQuestAddr = API.readMemoryLong(questClass + 0x28) & ByteUtils.ATOM_MASK; + + if (currentQuestAddr == 0) { + this.currentQuest = null; + } else { + if (this.currentQuest == null) { + this.currentQuest = new Quest(); + } + + this.currentQuest.update(currentQuestAddr); + } + } - this.id = API.readMemoryInt(actualQuest + 0x20); - this.active = API.readMemoryBoolean(actualQuest + 0x24); - this.category = API.readMemoryString(actualQuest, 0x48); - this.title = API.readMemoryString(actualQuest, 0x68); - this.descriptiuon = API.readMemoryString(actualQuest, 0x70); + public @Nullable Quest getCurrenQuest() { + return currentQuest; } + public static class Quest extends Auto { + private boolean active; + private String category; + private String description; + private String title; + private int id; + + @Override + public void update() { + if (address == 0) { + return; + } + + this.id = API.readMemoryInt(address + 0x20); + this.active = API.readMemoryBoolean(address + 0x24); + this.category = API.readMemoryString(address, 0x48); + this.title = API.readMemoryString(address, 0x68); + this.description = API.readMemoryString(address, 0x70); + } + + public int getCurrentQuestId() { + return id; + } + + public boolean isActive() { + return active; + } + + public String getCategory() { + return category; + } + + public String getTitle() { + return title; + } + + public String getDescriptiuon() { + return description; + } + } } \ No newline at end of file From febc967e254500bbfd40b04d822b6e9ed38da39e Mon Sep 17 00:00:00 2001 From: dm94 Date: Thu, 27 Jul 2023 20:26:04 +0200 Subject: [PATCH 04/25] fix typo error --- .../github/manolo8/darkbot/core/objects/facades/QuestProxy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index 663437d4a..148d2a5fd 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -73,7 +73,7 @@ public String getTitle() { return title; } - public String getDescriptiuon() { + public String getDescription() { return description; } } From c5eda9037a30f36eb298107b2ec3cd8f868c83e8 Mon Sep 17 00:00:00 2001 From: dm94 Date: Thu, 27 Jul 2023 20:44:26 +0200 Subject: [PATCH 05/25] Added conditionsCount --- .../manolo8/darkbot/core/objects/facades/QuestProxy.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index 148d2a5fd..b18ff7762 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -42,6 +42,7 @@ public static class Quest extends Auto { private String category; private String description; private String title; + private int conditionsCount; private int id; @Override @@ -55,6 +56,9 @@ public void update() { this.category = API.readMemoryString(address, 0x48); this.title = API.readMemoryString(address, 0x68); this.description = API.readMemoryString(address, 0x70); + + long conditionsAddr = API.readMemoryLong(address + 0x38) & ByteUtils.ATOM_MASK; + this.conditionsCount = API.readMemoryInt(conditionsAddr + 0x30); } public int getCurrentQuestId() { @@ -76,5 +80,9 @@ public String getTitle() { public String getDescription() { return description; } + + public int getConditionsCount() { + return conditionsCount; + } } } \ No newline at end of file From 3465050c23b5098b973a773a3b99d6199715a9f2 Mon Sep 17 00:00:00 2001 From: dm94 Date: Thu, 27 Jul 2023 20:46:50 +0200 Subject: [PATCH 06/25] Revert facade manager format --- .../darkbot/core/manager/FacadeManager.java | 52 +++++++++---------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java b/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java index 646fe9cb6..7fd5a659d 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java +++ b/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java @@ -34,9 +34,9 @@ import static com.github.manolo8.darkbot.Main.API; public class FacadeManager implements Manager, eu.darkbot.api.API.Singleton { - private final PairArray commands = PairArray.ofArray(); - private final PairArray proxies = PairArray.ofArray(); - private final PairArray mediators = PairArray.ofArray(); + private final PairArray commands = PairArray.ofArray(); + private final PairArray proxies = PairArray.ofArray(); + private final PairArray mediators = PairArray.ofArray(); private final List updatables = new ArrayList<>(); private final PluginAPI pluginAPI; @@ -64,25 +64,25 @@ public class FacadeManager implements Manager, eu.darkbot.api.API.Singleton { public FacadeManager(PluginAPI pluginApi) { this.pluginAPI = pluginApi; - this.log = registerMediator("LogWindowMediator", LogMediator.class); - this.chat = registerProxy("ChatProxy", ChatProxy.class); - this.stats = registerProxy("StatsProxy", StatsProxy.class); - this.escort = registerProxy("payload_escort", EscortProxy.class); - this.booster = registerProxy("BoosterProxy", BoosterProxy.class); - this.settings = registerProxy("SettingsWindowFUIProxy", SettingsProxy.class); - this.slotBars = registerProxy("ItemsControlMenuProxy", SlotBarsProxy.class); - this.labyrinth = registerProxy("frozen_labyrinth", FrozenLabyrinthProxy.class); - this.eternalGate = registerProxy("eternal_gate", EternalGateProxy.class); - this.blacklightGate = registerProxy("eternal_blacklight", EternalBlacklightProxy.class); - this.chrominEvent = registerProxy("chrominEvent", ChrominProxy.class); - this.astralGate = registerProxy("rogue_lite", AstralGateProxy.class); - this.highlight = registerProxy("HighlightProxy", HighlightProxy.class); - this.spaceMapWindowProxy = registerProxy("spacemap", SpaceMapWindowProxy.class); - this.plutus = registerProxy("plutus", GauntletPlutusProxy.class); - this.npcEventProxy = registerProxy("npc_event", NpcEventProxy.class); - this.worldBossOverview = registerProxy("worldBoss_overview", WorldBossOverviewProxy.class); - this.group = registerProxy("GroupProxy", Updatable.NoOp.class); - this.quests = registerProxy("QuestProxy", QuestProxy.class); + this.log = registerMediator("LogWindowMediator", LogMediator.class); + this.chat = registerProxy("ChatProxy", ChatProxy.class); + this.stats = registerProxy("StatsProxy", StatsProxy.class); + this.escort = registerProxy("payload_escort", EscortProxy.class); + this.booster = registerProxy("BoosterProxy", BoosterProxy.class); + this.settings = registerProxy("SettingsWindowFUIProxy", SettingsProxy.class); + this.slotBars = registerProxy("ItemsControlMenuProxy", SlotBarsProxy.class); + this.labyrinth = registerProxy("frozen_labyrinth", FrozenLabyrinthProxy.class); + this.eternalGate = registerProxy("eternal_gate", EternalGateProxy.class); + this.blacklightGate = registerProxy("eternal_blacklight", EternalBlacklightProxy.class); + this.chrominEvent = registerProxy("chrominEvent", ChrominProxy.class); + this.astralGate = registerProxy("rogue_lite", AstralGateProxy.class); + this.highlight = registerProxy("HighlightProxy", HighlightProxy.class); + this.spaceMapWindowProxy = registerProxy("spacemap", SpaceMapWindowProxy.class); + this.plutus = registerProxy("plutus", GauntletPlutusProxy.class); + this.npcEventProxy = registerProxy("npc_event", NpcEventProxy.class); + this.worldBossOverview = registerProxy("worldBoss_overview", WorldBossOverviewProxy.class); + this.group = registerProxy("GroupProxy", Updatable.NoOp.class); + this.quests = registerProxy("QuestProxy", QuestProxy.class); registerProxy("dispatch", DispatchProxy.class); registerProxy("ggBuilder", GalaxyBuilderProxy.class); @@ -124,15 +124,13 @@ public void install(BotInstaller botInstaller) { public void tick() { // Currently commands are not used by the bot and they represent - // a decently big cpu chunk in ticking. Leaving them out reduces tick time - // significantly. - // commands.update(); + // a decently big cpu chunk in ticking. Leaving them out reduces tick time significantly. + //commands.update(); proxies.update(); mediators.update(); for (Updatable updatable : updatables) { - if (updatable.address != 0) - updatable.update(); + if (updatable.address != 0) updatable.update(); } } } From f0f61d81da1d1b83da89efb575b4619f04e5d5f4 Mon Sep 17 00:00:00 2001 From: dm94 Date: Sun, 30 Jul 2023 19:02:46 +0200 Subject: [PATCH 07/25] Updated method names --- .../core/objects/facades/QuestProxy.java | 174 +++++++++--------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index b18ff7762..115bebf86 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -1,88 +1,88 @@ -package com.github.manolo8.darkbot.core.objects.facades; - -import com.github.manolo8.darkbot.core.itf.Updatable; -import com.github.manolo8.darkbot.core.utils.ByteUtils; - -import eu.darkbot.api.API; - -import static com.github.manolo8.darkbot.Main.API; - -import org.jetbrains.annotations.Nullable; - -public class QuestProxy extends Updatable implements API.Singleton { - private Quest currentQuest = new Quest(); - - @Override - public void update() { - if (address == 0) { - return; - } - - long questClass = API.readMemoryLong(address + 0x98) & ByteUtils.ATOM_MASK; - - long currentQuestAddr = API.readMemoryLong(questClass + 0x28) & ByteUtils.ATOM_MASK; - - if (currentQuestAddr == 0) { - this.currentQuest = null; - } else { - if (this.currentQuest == null) { - this.currentQuest = new Quest(); - } - - this.currentQuest.update(currentQuestAddr); - } - } - - public @Nullable Quest getCurrenQuest() { - return currentQuest; - } - - public static class Quest extends Auto { - private boolean active; - private String category; - private String description; - private String title; - private int conditionsCount; - private int id; - - @Override - public void update() { - if (address == 0) { - return; - } - - this.id = API.readMemoryInt(address + 0x20); - this.active = API.readMemoryBoolean(address + 0x24); - this.category = API.readMemoryString(address, 0x48); - this.title = API.readMemoryString(address, 0x68); - this.description = API.readMemoryString(address, 0x70); - - long conditionsAddr = API.readMemoryLong(address + 0x38) & ByteUtils.ATOM_MASK; - this.conditionsCount = API.readMemoryInt(conditionsAddr + 0x30); - } - - public int getCurrentQuestId() { - return id; - } - - public boolean isActive() { - return active; - } - - public String getCategory() { - return category; - } - - public String getTitle() { - return title; - } - - public String getDescription() { - return description; - } - - public int getConditionsCount() { - return conditionsCount; - } - } +package com.github.manolo8.darkbot.core.objects.facades; + +import com.github.manolo8.darkbot.core.itf.Updatable; +import com.github.manolo8.darkbot.core.utils.ByteUtils; + +import eu.darkbot.api.API; + +import static com.github.manolo8.darkbot.Main.API; + +import org.jetbrains.annotations.Nullable; + +public class QuestProxy extends Updatable implements API.Singleton { + private Quest currentQuest = new Quest(); + + @Override + public void update() { + if (address == 0) { + return; + } + + long questClass = API.readMemoryLong(address + 0x98) & ByteUtils.ATOM_MASK; + + long currentQuestAddr = API.readMemoryLong(questClass + 0x28) & ByteUtils.ATOM_MASK; + + if (currentQuestAddr == 0) { + this.currentQuest = null; + } else { + if (this.currentQuest == null) { + this.currentQuest = new Quest(); + } + + this.currentQuest.update(currentQuestAddr); + } + } + + public @Nullable Quest getCurrentQuest() { + return currentQuest; + } + + public static class Quest extends Auto { + private boolean active; + private String category; + private String description; + private String title; + private int conditionsCount; + private int id; + + @Override + public void update() { + if (address == 0) { + return; + } + + this.id = API.readMemoryInt(address + 0x20); + this.active = API.readMemoryBoolean(address + 0x24); + this.category = API.readMemoryString(address, 0x48); + this.title = API.readMemoryString(address, 0x68); + this.description = API.readMemoryString(address, 0x70); + + long conditionsAddr = API.readMemoryLong(address + 0x38) & ByteUtils.ATOM_MASK; + this.conditionsCount = API.readMemoryInt(conditionsAddr + 0x30); + } + + public int getId() { + return id; + } + + public boolean isActive() { + return active; + } + + public String getCategory() { + return category; + } + + public String getTitle() { + return title; + } + + public String getDescription() { + return description; + } + + public int getConditionsCount() { + return conditionsCount; + } + } } \ No newline at end of file From 02a4d627b51451fdb069c7fba69029eed662ac8f Mon Sep 17 00:00:00 2001 From: dm94 Date: Mon, 21 Aug 2023 22:29:48 +0200 Subject: [PATCH 08/25] New test offsets --- .../core/objects/facades/QuestProxy.java | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index 115bebf86..e8174a1ba 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -1,17 +1,27 @@ package com.github.manolo8.darkbot.core.objects.facades; import com.github.manolo8.darkbot.core.itf.Updatable; +import com.github.manolo8.darkbot.core.objects.swf.ObjArray; import com.github.manolo8.darkbot.core.utils.ByteUtils; import eu.darkbot.api.API; import static com.github.manolo8.darkbot.Main.API; +import java.util.ArrayList; +import java.util.List; + import org.jetbrains.annotations.Nullable; public class QuestProxy extends Updatable implements API.Singleton { private Quest currentQuest = new Quest(); + private final List questItems = new ArrayList<>(); + + private final ObjArray questItemsArr = ObjArray.ofVector(true); + + private @Nullable QuestListItem questGiverSelected = new QuestListItem(); + @Override public void update() { if (address == 0) { @@ -31,12 +41,61 @@ public void update() { this.currentQuest.update(currentQuestAddr); } + + questItemsArr.update(API.readMemoryPtr(0x58)); + questItemsArr.sync(questItems, Quest::new); + + long questGiverSelectedAddr = API.readMemoryLong(questClass + 0x0A8) & ByteUtils.ATOM_MASK; + if (questGiverSelectedAddr == 0) { + this.questGiverSelected = null; + } else { + if (this.questGiverSelected == null) { + this.questGiverSelected = new QuestListItem(); + } + + this.questGiverSelected.update(questGiverSelectedAddr); + } } public @Nullable Quest getCurrentQuest() { return currentQuest; } + public static class QuestListItem extends Auto { + private boolean selected; + private boolean completed; + private String title; + private String type; + + @Override + public void update() { + if (address == 0) { + return; + } + + this.selected = API.readBoolean(address + 0x34); + this.completed = API.readBoolean(address + 0x38); + this.title = API.readMemoryString(address, 0x58); + this.type = API.readMemoryString(address, 0x70); + } + + public boolean isSelected() { + return selected; + } + + public boolean isCompleted() { + return completed; + } + + public String getTitle() { + return title; + } + + public String getType() { + return type; + } + } + public static class Quest extends Auto { private boolean active; private String category; @@ -45,6 +104,12 @@ public static class Quest extends Auto { private int conditionsCount; private int id; + private final List conditionItems = new ArrayList<>(); + private final ObjArray conditionItemsArr = ObjArray.ofVector(true); + + private final List rewardItems = new ArrayList<>(); + private final ObjArray rewardItemsArr = ObjArray.ofVector(true); + @Override public void update() { if (address == 0) { @@ -59,6 +124,12 @@ public void update() { long conditionsAddr = API.readMemoryLong(address + 0x38) & ByteUtils.ATOM_MASK; this.conditionsCount = API.readMemoryInt(conditionsAddr + 0x30); + + conditionItemsArr.update(API.readMemoryPtr(conditionsAddr + 0x40)); + conditionItemsArr.sync(conditionItems, Contition::new); + + rewardItemsArr.update(API.readMemoryPtr(address + 0x50)); + rewardItemsArr.sync(rewardItems, Reward::new); } public int getId() { @@ -85,4 +156,44 @@ public int getConditionsCount() { return conditionsCount; } } + + public static class Reward extends Auto { + @Override + public void update() { + if (address == 0) { + return; + } + + System.out.println(address); + } + } + + public static class Contition extends Auto { + private String description; + private double goalReached; + private double goal; + + @Override + public void update() { + if (address == 0) { + return; + } + + this.description = API.readMemoryString(address, 0x5F); + this.goalReached = API.readMemoryDouble(address + 0x77); + this.goal = API.readMemoryDouble(address + 0x7F); + } + + public String getDescription() { + return description; + } + + public double getGoalReached() { + return goalReached; + } + + public double getGoal() { + return goal; + } + } } \ No newline at end of file From da2b8844d56a7563232c69bd11a1604b4051f9b3 Mon Sep 17 00:00:00 2001 From: Dm94 Date: Sat, 26 Aug 2023 11:54:08 +0200 Subject: [PATCH 09/25] More data --- .../core/objects/facades/QuestProxy.java | 48 ++++++++++++++++--- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index e8174a1ba..9e49ef350 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -14,9 +14,9 @@ import org.jetbrains.annotations.Nullable; public class QuestProxy extends Updatable implements API.Singleton { - private Quest currentQuest = new Quest(); + private @Nullable Quest currentQuest = new Quest(); - private final List questItems = new ArrayList<>(); + private final List questItems = new ArrayList<>(); private final ObjArray questItemsArr = ObjArray.ofVector(true); @@ -43,7 +43,7 @@ public void update() { } questItemsArr.update(API.readMemoryPtr(0x58)); - questItemsArr.sync(questItems, Quest::new); + questItemsArr.sync(questItems, QuestListItem::new); long questGiverSelectedAddr = API.readMemoryLong(questClass + 0x0A8) & ByteUtils.ATOM_MASK; if (questGiverSelectedAddr == 0) { @@ -57,15 +57,26 @@ public void update() { } } - public @Nullable Quest getCurrentQuest() { + public @Nullable Quest getCurrentQuestDisplayed() { return currentQuest; } + public @Nullable QuestListItem getCurrentQuestSeleted() { + return questGiverSelected; + } + + public @Nullable List getCurrestQuests() { + return questItems; + } + public static class QuestListItem extends Auto { + private int id; private boolean selected; private boolean completed; private String title; private String type; + private int levelRequired; + private boolean activable; @Override public void update() { @@ -73,12 +84,33 @@ public void update() { return; } - this.selected = API.readBoolean(address + 0x34); - this.completed = API.readBoolean(address + 0x38); + this.id = API.readMemoryInt(address + 0x24); + this.levelRequired = API.readMemoryInt(address + 0x28); + this.selected = API.readMemoryBoolean(address + 0x34); + this.completed = API.readMemoryBoolean(address + 0x38); + this.activable = API.readMemoryBoolean(address + 0x3C); this.title = API.readMemoryString(address, 0x58); + + /* + * Types: + * questType_kill - NPC/Player Kill + * questType_collect - Resources Farm + * questType_epic - Various types + * questType_discovery - Go to x points + * questType_daily1 + */ + this.type = API.readMemoryString(address, 0x70); } + public int getId() { + return id; + } + + public int getLevelRequired() { + return levelRequired; + } + public boolean isSelected() { return selected; } @@ -94,6 +126,10 @@ public String getTitle() { public String getType() { return type; } + + public boolean isActivable() { + return activable; + } } public static class Quest extends Auto { From b91744ffd35b06cd25d2811d4d806b90c4ad61f2 Mon Sep 17 00:00:00 2001 From: dm94 Date: Mon, 23 Oct 2023 22:48:17 +0200 Subject: [PATCH 10/25] QuestProxy updated --- .../core/objects/facades/QuestProxy.java | 74 +++++++++++++++---- 1 file changed, 58 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index 9e49ef350..84d83ede5 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -90,16 +90,6 @@ public void update() { this.completed = API.readMemoryBoolean(address + 0x38); this.activable = API.readMemoryBoolean(address + 0x3C); this.title = API.readMemoryString(address, 0x58); - - /* - * Types: - * questType_kill - NPC/Player Kill - * questType_collect - Resources Farm - * questType_epic - Various types - * questType_discovery - Go to x points - * questType_daily1 - */ - this.type = API.readMemoryString(address, 0x70); } @@ -139,12 +129,13 @@ public static class Quest extends Auto { private String title; private int conditionsCount; private int id; + private boolean completed; private final List conditionItems = new ArrayList<>(); - private final ObjArray conditionItemsArr = ObjArray.ofVector(true); + private final ObjArray conditionItemsArr = ObjArray.ofArrObj(true); private final List rewardItems = new ArrayList<>(); - private final ObjArray rewardItemsArr = ObjArray.ofVector(true); + private final ObjArray rewardItemsArr = ObjArray.ofArrObj(true); @Override public void update() { @@ -160,6 +151,7 @@ public void update() { long conditionsAddr = API.readMemoryLong(address + 0x38) & ByteUtils.ATOM_MASK; this.conditionsCount = API.readMemoryInt(conditionsAddr + 0x30); + this.completed = API.readMemoryBoolean(conditionsAddr, 0x38); conditionItemsArr.update(API.readMemoryPtr(conditionsAddr + 0x40)); conditionItemsArr.sync(conditionItems, Contition::new); @@ -191,16 +183,40 @@ public String getDescription() { public int getConditionsCount() { return conditionsCount; } + + public boolean isCompleted() { + return completed; + } + + public List getConditions() { + return conditionItems; + } + + public List getRewards() { + return rewardItems; + } } public static class Reward extends Auto { + private int amount; + private String type; + @Override public void update() { if (address == 0) { return; } - System.out.println(address); + this.amount = API.readMemoryInt(address + 0x20); + this.type = API.readMemoryString(address, 0x28); + } + + public int getAmount() { + return amount; + } + + public String getType() { + return type; } } @@ -208,6 +224,12 @@ public static class Contition extends Auto { private String description; private double goalReached; private double goal; + private boolean completed; + + private final List conditionItems = new ArrayList<>(); + private final ObjArray conditionItemsArr = ObjArray.ofArrObj(true); + + private String conditionType; @Override public void update() { @@ -215,9 +237,16 @@ public void update() { return; } - this.description = API.readMemoryString(address, 0x5F); - this.goalReached = API.readMemoryDouble(address + 0x77); - this.goal = API.readMemoryDouble(address + 0x7F); + this.completed = API.readMemoryBoolean(address, 0x34); + this.description = API.readMemoryString(address, 0x60); + this.goalReached = API.readMemoryDouble(address + 0x78); + this.goal = API.readMemoryDouble(address + 0x80); + + long definitionAddr = API.readMemoryLong(address + 0x58) & ByteUtils.ATOM_MASK; + this.conditionType = API.readMemoryString(definitionAddr, 0x28); + + conditionItemsArr.update(API.readMemoryPtr(address + 0x48)); + conditionItemsArr.sync(conditionItems, Contition::new); } public String getDescription() { @@ -231,5 +260,18 @@ public double getGoalReached() { public double getGoal() { return goal; } + + public boolean isCompleted() { + return completed; + } + + public String getConditionType() { + return conditionType; + } + + public List getConditions() { + return conditionItems; + } + } } \ No newline at end of file From ed190a5306cb3a821e39e12f97df97472de0a39b Mon Sep 17 00:00:00 2001 From: dm94 Date: Tue, 24 Oct 2023 10:08:56 +0200 Subject: [PATCH 11/25] Fix typo error --- .../darkbot/core/objects/facades/QuestProxy.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index 84d83ede5..d40a1b4d6 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -131,7 +131,7 @@ public static class Quest extends Auto { private int id; private boolean completed; - private final List conditionItems = new ArrayList<>(); + private final List conditionItems = new ArrayList<>(); private final ObjArray conditionItemsArr = ObjArray.ofArrObj(true); private final List rewardItems = new ArrayList<>(); @@ -154,7 +154,7 @@ public void update() { this.completed = API.readMemoryBoolean(conditionsAddr, 0x38); conditionItemsArr.update(API.readMemoryPtr(conditionsAddr + 0x40)); - conditionItemsArr.sync(conditionItems, Contition::new); + conditionItemsArr.sync(conditionItems, Condition::new); rewardItemsArr.update(API.readMemoryPtr(address + 0x50)); rewardItemsArr.sync(rewardItems, Reward::new); @@ -188,7 +188,7 @@ public boolean isCompleted() { return completed; } - public List getConditions() { + public List getConditions() { return conditionItems; } @@ -220,13 +220,13 @@ public String getType() { } } - public static class Contition extends Auto { + public static class Condition extends Auto { private String description; private double goalReached; private double goal; private boolean completed; - private final List conditionItems = new ArrayList<>(); + private final List conditionItems = new ArrayList<>(); private final ObjArray conditionItemsArr = ObjArray.ofArrObj(true); private String conditionType; @@ -246,7 +246,7 @@ public void update() { this.conditionType = API.readMemoryString(definitionAddr, 0x28); conditionItemsArr.update(API.readMemoryPtr(address + 0x48)); - conditionItemsArr.sync(conditionItems, Contition::new); + conditionItemsArr.sync(conditionItems, Condition::new); } public String getDescription() { @@ -269,7 +269,7 @@ public String getConditionType() { return conditionType; } - public List getConditions() { + public List getConditions() { return conditionItems; } From 7956a627369d2367a63d6263a0255f1c5a9563e0 Mon Sep 17 00:00:00 2001 From: dm94 Date: Wed, 25 Oct 2023 17:00:12 +0200 Subject: [PATCH 12/25] Fixed questGiverSelected and added isVisibleQuestGiver method --- .../core/objects/facades/QuestProxy.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index d40a1b4d6..b36bb9d3e 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -14,13 +14,15 @@ import org.jetbrains.annotations.Nullable; public class QuestProxy extends Updatable implements API.Singleton { - private @Nullable Quest currentQuest = new Quest(); + private @Nullable Quest currentQuest; private final List questItems = new ArrayList<>(); private final ObjArray questItemsArr = ObjArray.ofVector(true); - private @Nullable QuestListItem questGiverSelected = new QuestListItem(); + private @Nullable Quest questGiverSelected; + + private boolean visibleQuestGiver; @Override public void update() { @@ -30,6 +32,8 @@ public void update() { long questClass = API.readMemoryLong(address + 0x98) & ByteUtils.ATOM_MASK; + this.visibleQuestGiver = API.readMemoryBoolean(address, 0x40); + long currentQuestAddr = API.readMemoryLong(questClass + 0x28) & ByteUtils.ATOM_MASK; if (currentQuestAddr == 0) { @@ -45,12 +49,12 @@ public void update() { questItemsArr.update(API.readMemoryPtr(0x58)); questItemsArr.sync(questItems, QuestListItem::new); - long questGiverSelectedAddr = API.readMemoryLong(questClass + 0x0A8) & ByteUtils.ATOM_MASK; + long questGiverSelectedAddr = API.readMemoryLong(address + 0xB0) & ByteUtils.ATOM_MASK; if (questGiverSelectedAddr == 0) { this.questGiverSelected = null; } else { if (this.questGiverSelected == null) { - this.questGiverSelected = new QuestListItem(); + this.questGiverSelected = new Quest(); } this.questGiverSelected.update(questGiverSelectedAddr); @@ -61,7 +65,7 @@ public void update() { return currentQuest; } - public @Nullable QuestListItem getCurrentQuestSeleted() { + public @Nullable Quest getCurrentQuestSeleted() { return questGiverSelected; } @@ -69,6 +73,10 @@ public void update() { return questItems; } + public boolean isVisibleQuestGiver() { + return visibleQuestGiver; + } + public static class QuestListItem extends Auto { private int id; private boolean selected; From bcab6aca5bdf82fbc10461e7ff00aeef7feb5aa8 Mon Sep 17 00:00:00 2001 From: dm94 Date: Wed, 25 Oct 2023 17:57:39 +0200 Subject: [PATCH 13/25] Implement getTabSelected and getCurrentQuestInfoSeleted --- .../core/objects/facades/QuestProxy.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index b36bb9d3e..b46dee808 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -18,11 +18,13 @@ public class QuestProxy extends Updatable implements API.Singleton { private final List questItems = new ArrayList<>(); - private final ObjArray questItemsArr = ObjArray.ofVector(true); + private final ObjArray questItemsArr = ObjArray.ofArrObj(true); private @Nullable Quest questGiverSelected; + private @Nullable QuestListItem questInfoGiverSelected; private boolean visibleQuestGiver; + private int tabSelected; @Override public void update() { @@ -33,6 +35,7 @@ public void update() { long questClass = API.readMemoryLong(address + 0x98) & ByteUtils.ATOM_MASK; this.visibleQuestGiver = API.readMemoryBoolean(address, 0x40); + this.tabSelected = API.readMemoryInt(address, 0X50); long currentQuestAddr = API.readMemoryLong(questClass + 0x28) & ByteUtils.ATOM_MASK; @@ -49,6 +52,17 @@ public void update() { questItemsArr.update(API.readMemoryPtr(0x58)); questItemsArr.sync(questItems, QuestListItem::new); + long questInfoGiverSelectedAddr = API.readMemoryLong(address + 0xA8) & ByteUtils.ATOM_MASK; + if (questInfoGiverSelectedAddr == 0) { + this.questInfoGiverSelected = null; + } else { + if (this.questInfoGiverSelected == null) { + this.questInfoGiverSelected = new QuestListItem(); + } + + this.questInfoGiverSelected.update(questInfoGiverSelectedAddr); + } + long questGiverSelectedAddr = API.readMemoryLong(address + 0xB0) & ByteUtils.ATOM_MASK; if (questGiverSelectedAddr == 0) { this.questGiverSelected = null; @@ -69,6 +83,10 @@ public void update() { return questGiverSelected; } + public @Nullable QuestListItem getCurrentQuestInfoSeleted() { + return questInfoGiverSelected; + } + public @Nullable List getCurrestQuests() { return questItems; } @@ -77,6 +95,10 @@ public boolean isVisibleQuestGiver() { return visibleQuestGiver; } + public int getTabSelected() { + return tabSelected; + } + public static class QuestListItem extends Auto { private int id; private boolean selected; From 9a58833da7f855fd8e52410772d740df9af86d49 Mon Sep 17 00:00:00 2001 From: dm94 Date: Wed, 25 Oct 2023 18:21:30 +0200 Subject: [PATCH 14/25] Added isEnabled method --- .../manolo8/darkbot/core/objects/facades/QuestProxy.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index b46dee808..d9239d178 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -255,6 +255,7 @@ public static class Condition extends Auto { private double goalReached; private double goal; private boolean completed; + private boolean enabled; private final List conditionItems = new ArrayList<>(); private final ObjArray conditionItemsArr = ObjArray.ofArrObj(true); @@ -267,6 +268,7 @@ public void update() { return; } + this.enabled = API.readMemoryBoolean(address + 0x24); this.completed = API.readMemoryBoolean(address, 0x34); this.description = API.readMemoryString(address, 0x60); this.goalReached = API.readMemoryDouble(address + 0x78); @@ -279,6 +281,10 @@ public void update() { conditionItemsArr.sync(conditionItems, Condition::new); } + public boolean isEnabled() { + return enabled; + } + public String getDescription() { return description; } From 6f1762ed6148b5c7496612f2f56f2959da1e1d91 Mon Sep 17 00:00:00 2001 From: dm94 Date: Thu, 26 Oct 2023 10:19:24 +0200 Subject: [PATCH 15/25] Renamed Condition by Requirement --- .../core/objects/facades/QuestProxy.java | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index d9239d178..7a4a26abd 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -157,12 +157,12 @@ public static class Quest extends Auto { private String category; private String description; private String title; - private int conditionsCount; + private int requirementCount; private int id; private boolean completed; - private final List conditionItems = new ArrayList<>(); - private final ObjArray conditionItemsArr = ObjArray.ofArrObj(true); + private final List requirementItems = new ArrayList<>(); + private final ObjArray requirementItemsArr = ObjArray.ofArrObj(true); private final List rewardItems = new ArrayList<>(); private final ObjArray rewardItemsArr = ObjArray.ofArrObj(true); @@ -179,12 +179,12 @@ public void update() { this.title = API.readMemoryString(address, 0x68); this.description = API.readMemoryString(address, 0x70); - long conditionsAddr = API.readMemoryLong(address + 0x38) & ByteUtils.ATOM_MASK; - this.conditionsCount = API.readMemoryInt(conditionsAddr + 0x30); - this.completed = API.readMemoryBoolean(conditionsAddr, 0x38); + long requirementAddr = API.readMemoryLong(address + 0x38) & ByteUtils.ATOM_MASK; + this.requirementCount = API.readMemoryInt(requirementAddr + 0x30); + this.completed = API.readMemoryBoolean(requirementAddr, 0x38); - conditionItemsArr.update(API.readMemoryPtr(conditionsAddr + 0x40)); - conditionItemsArr.sync(conditionItems, Condition::new); + requirementItemsArr.update(API.readMemoryPtr(requirementAddr + 0x40)); + requirementItemsArr.sync(requirementItems, Requirement::new); rewardItemsArr.update(API.readMemoryPtr(address + 0x50)); rewardItemsArr.sync(rewardItems, Reward::new); @@ -210,16 +210,16 @@ public String getDescription() { return description; } - public int getConditionsCount() { - return conditionsCount; + public int getRequirementsCount() { + return requirementCount; } public boolean isCompleted() { return completed; } - public List getConditions() { - return conditionItems; + public List getRequirements() { + return requirementItems; } public List getRewards() { @@ -250,17 +250,17 @@ public String getType() { } } - public static class Condition extends Auto { + public static class Requirement extends Auto { private String description; private double goalReached; private double goal; private boolean completed; private boolean enabled; - private final List conditionItems = new ArrayList<>(); - private final ObjArray conditionItemsArr = ObjArray.ofArrObj(true); + private final List requirementItems = new ArrayList<>(); + private final ObjArray requirementItemsArr = ObjArray.ofArrObj(true); - private String conditionType; + private String requirementType; @Override public void update() { @@ -275,14 +275,10 @@ public void update() { this.goal = API.readMemoryDouble(address + 0x80); long definitionAddr = API.readMemoryLong(address + 0x58) & ByteUtils.ATOM_MASK; - this.conditionType = API.readMemoryString(definitionAddr, 0x28); + this.requirementType = API.readMemoryString(definitionAddr, 0x28); - conditionItemsArr.update(API.readMemoryPtr(address + 0x48)); - conditionItemsArr.sync(conditionItems, Condition::new); - } - - public boolean isEnabled() { - return enabled; + requirementItemsArr.update(API.readMemoryPtr(address + 0x48)); + requirementItemsArr.sync(requirementItems, Requirement::new); } public String getDescription() { @@ -301,13 +297,16 @@ public boolean isCompleted() { return completed; } - public String getConditionType() { - return conditionType; + public String getRequirementType() { + return requirementType; } - public List getConditions() { - return conditionItems; + public List getRequirements() { + return requirementItems; } + public boolean isEnabled() { + return enabled; + } } } \ No newline at end of file From a2a0ebfb5cd9bdd45865222fd35bfb39d1cc7c2f Mon Sep 17 00:00:00 2001 From: dm94 Date: Fri, 3 Nov 2023 20:22:44 +0100 Subject: [PATCH 16/25] Updated QuestProxy method names --- .../darkbot/core/objects/facades/QuestProxy.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index 7a4a26abd..f90748b88 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -75,15 +75,15 @@ public void update() { } } - public @Nullable Quest getCurrentQuestDisplayed() { + public @Nullable Quest getDisplayedQuest() { return currentQuest; } - public @Nullable Quest getCurrentQuestSeleted() { + public @Nullable Quest getSelectedQuest() { return questGiverSelected; } - public @Nullable QuestListItem getCurrentQuestInfoSeleted() { + public @Nullable QuestListItem getSelectedQuestInfo() { return questInfoGiverSelected; } @@ -91,11 +91,11 @@ public void update() { return questItems; } - public boolean isVisibleQuestGiver() { + public boolean isQuestGiverOpen() { return visibleQuestGiver; } - public int getTabSelected() { + public int getSelectedTab() { return tabSelected; } @@ -285,7 +285,7 @@ public String getDescription() { return description; } - public double getGoalReached() { + public double getProgress() { return goalReached; } @@ -297,7 +297,7 @@ public boolean isCompleted() { return completed; } - public String getRequirementType() { + public String getType() { return requirementType; } From ef22a07eba8daa800a0f45eb3bb96bb54be2b8ba Mon Sep 17 00:00:00 2001 From: dm94 Date: Sat, 4 Nov 2023 23:01:37 +0100 Subject: [PATCH 17/25] Updated quest object --- .../core/objects/facades/QuestProxy.java | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index f90748b88..5c53255b5 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -1,6 +1,7 @@ package com.github.manolo8.darkbot.core.objects.facades; import com.github.manolo8.darkbot.core.itf.Updatable; +import com.github.manolo8.darkbot.core.objects.swf.FlashList; import com.github.manolo8.darkbot.core.objects.swf.ObjArray; import com.github.manolo8.darkbot.core.utils.ByteUtils; @@ -154,15 +155,12 @@ public boolean isActivable() { public static class Quest extends Auto { private boolean active; - private String category; private String description; private String title; - private int requirementCount; private int id; private boolean completed; - private final List requirementItems = new ArrayList<>(); - private final ObjArray requirementItemsArr = ObjArray.ofArrObj(true); + private final FlashList requirementItems = FlashList.ofArray(Requirement.class); private final List rewardItems = new ArrayList<>(); private final ObjArray rewardItemsArr = ObjArray.ofArrObj(true); @@ -175,16 +173,14 @@ public void update() { this.id = API.readMemoryInt(address + 0x20); this.active = API.readMemoryBoolean(address + 0x24); - this.category = API.readMemoryString(address, 0x48); this.title = API.readMemoryString(address, 0x68); this.description = API.readMemoryString(address, 0x70); long requirementAddr = API.readMemoryLong(address + 0x38) & ByteUtils.ATOM_MASK; - this.requirementCount = API.readMemoryInt(requirementAddr + 0x30); this.completed = API.readMemoryBoolean(requirementAddr, 0x38); - requirementItemsArr.update(API.readMemoryPtr(requirementAddr + 0x40)); - requirementItemsArr.sync(requirementItems, Requirement::new); + requirementItems.update(API.readMemoryPtr(address + 0x40)); + requirementItems.update(); rewardItemsArr.update(API.readMemoryPtr(address + 0x50)); rewardItemsArr.sync(rewardItems, Reward::new); @@ -198,10 +194,6 @@ public boolean isActive() { return active; } - public String getCategory() { - return category; - } - public String getTitle() { return title; } @@ -210,10 +202,6 @@ public String getDescription() { return description; } - public int getRequirementsCount() { - return requirementCount; - } - public boolean isCompleted() { return completed; } From 06909595061ed55d2cb7cb09fd72c74b564fe373 Mon Sep 17 00:00:00 2001 From: dm94 Date: Sun, 26 Nov 2023 10:07:02 +0100 Subject: [PATCH 18/25] reversed automatic formatting of facademanager --- .../darkbot/core/manager/FacadeManager.java | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java b/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java index 4e1e82e9e..91fa47a9c 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java +++ b/src/main/java/com/github/manolo8/darkbot/core/manager/FacadeManager.java @@ -34,9 +34,9 @@ import static com.github.manolo8.darkbot.Main.API; public class FacadeManager implements Manager, eu.darkbot.api.API.Singleton { - private final PairArray commands = PairArray.ofArray(); - private final PairArray proxies = PairArray.ofArray(); - private final PairArray mediators = PairArray.ofArray(); + private final PairArray commands = PairArray.ofArray(); + private final PairArray proxies = PairArray.ofArray(); + private final PairArray mediators = PairArray.ofArray(); private final List updatables = new ArrayList<>(); private final PluginAPI pluginAPI; @@ -65,26 +65,26 @@ public class FacadeManager implements Manager, eu.darkbot.api.API.Singleton { public FacadeManager(PluginAPI pluginApi) { this.pluginAPI = pluginApi; - this.log = registerMediator("LogWindowMediator", LogMediator.class); - this.chat = registerProxy("ChatProxy", ChatProxy.class); - this.stats = registerProxy("StatsProxy", StatsProxy.class); - this.escort = registerProxy("payload_escort", EscortProxy.class); - this.booster = registerProxy("BoosterProxy", BoosterProxy.class); - this.settings = registerProxy("SettingsWindowFUIProxy", SettingsProxy.class); - this.slotBars = registerProxy("ItemsControlMenuProxy", SlotBarsProxy.class); - this.labyrinth = registerProxy("frozen_labyrinth", FrozenLabyrinthProxy.class); - this.eternalGate = registerProxy("eternal_gate", EternalGateProxy.class); - this.blacklightGate = registerProxy("eternal_blacklight", EternalBlacklightProxy.class); - this.chrominEvent = registerProxy("chrominEvent", ChrominProxy.class); - this.astralGate = registerProxy("rogue_lite", AstralGateProxy.class); - this.highlight = registerProxy("HighlightProxy", HighlightProxy.class); - this.spaceMapWindowProxy = registerProxy("spacemap", SpaceMapWindowProxy.class); - this.plutus = registerProxy("plutus", GauntletPlutusProxy.class); - this.npcEventProxy = registerProxy("npc_event", NpcEventProxy.class); - this.worldBossOverview = registerProxy("worldBoss_overview", WorldBossOverviewProxy.class); - this.group = registerProxy("GroupProxy", Updatable.NoOp.class); - this.quests = registerProxy("QuestProxy", QuestProxy.class); - this.groupMediator = registerMediator("GroupSystemMediator", Updatable.NoOp.class); + this.log = registerMediator("LogWindowMediator", LogMediator.class); + this.chat = registerProxy("ChatProxy", ChatProxy.class); + this.stats = registerProxy("StatsProxy", StatsProxy.class); + this.escort = registerProxy("payload_escort", EscortProxy.class); + this.booster = registerProxy("BoosterProxy", BoosterProxy.class); + this.settings = registerProxy("SettingsWindowFUIProxy", SettingsProxy.class); + this.slotBars = registerProxy("ItemsControlMenuProxy", SlotBarsProxy.class); + this.labyrinth = registerProxy("frozen_labyrinth", FrozenLabyrinthProxy.class); + this.eternalGate = registerProxy("eternal_gate", EternalGateProxy.class); + this.blacklightGate = registerProxy("eternal_blacklight", EternalBlacklightProxy.class); + this.chrominEvent = registerProxy("chrominEvent", ChrominProxy.class); + this.astralGate = registerProxy("rogue_lite", AstralGateProxy.class); + this.highlight = registerProxy("HighlightProxy", HighlightProxy.class); + this.spaceMapWindowProxy = registerProxy("spacemap", SpaceMapWindowProxy.class); + this.plutus = registerProxy("plutus", GauntletPlutusProxy.class); + this.npcEventProxy = registerProxy("npc_event", NpcEventProxy.class); + this.worldBossOverview = registerProxy("worldBoss_overview", WorldBossOverviewProxy.class); + this.group = registerProxy("GroupProxy", Updatable.NoOp.class); + this.groupMediator = registerMediator("GroupSystemMediator", Updatable.NoOp.class); + this.quests = registerProxy("QuestProxy", QuestProxy.class); registerProxy("dispatch", DispatchProxy.class); registerProxy("ggBuilder", GalaxyBuilderProxy.class); @@ -126,15 +126,14 @@ public void install(BotInstaller botInstaller) { public void tick() { // Currently commands are not used by the bot and they represent - // a decently big cpu chunk in ticking. Leaving them out reduces tick time - // significantly. - // commands.update(); + // a decently big cpu chunk in ticking. Leaving them out reduces tick time significantly. + //commands.update(); + proxies.update(); mediators.update(); for (Updatable updatable : updatables) { - if (updatable.address != 0) - updatable.update(); + if (updatable.address != 0) updatable.update(); } } } From 63e09fe13e17d0f19213391542d5b215413a7464 Mon Sep 17 00:00:00 2001 From: dm94 Date: Sun, 26 Nov 2023 10:26:51 +0100 Subject: [PATCH 19/25] Updated to link the API --- .../core/objects/facades/QuestProxy.java | 69 +++++++++++++------ 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index 5c53255b5..c77127b54 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -5,7 +5,7 @@ import com.github.manolo8.darkbot.core.objects.swf.ObjArray; import com.github.manolo8.darkbot.core.utils.ByteUtils; -import eu.darkbot.api.API; +import eu.darkbot.api.managers.QuestAPI; import static com.github.manolo8.darkbot.Main.API; @@ -14,15 +14,15 @@ import org.jetbrains.annotations.Nullable; -public class QuestProxy extends Updatable implements API.Singleton { - private @Nullable Quest currentQuest; +public class QuestProxy extends Updatable implements QuestAPI { + private @Nullable QuestProxy.Quest currentQuest; - private final List questItems = new ArrayList<>(); + private final List questItems = new ArrayList<>(); private final ObjArray questItemsArr = ObjArray.ofArrObj(true); - private @Nullable Quest questGiverSelected; - private @Nullable QuestListItem questInfoGiverSelected; + private @Nullable QuestProxy.Quest questGiverSelected; + private @Nullable QuestProxy.QuestListItem questInfoGiverSelected; private boolean visibleQuestGiver; private int tabSelected; @@ -76,31 +76,37 @@ public void update() { } } - public @Nullable Quest getDisplayedQuest() { + @Override + public @Nullable QuestAPI.Quest getDisplayedQuest() { return currentQuest; } - public @Nullable Quest getSelectedQuest() { + @Override + public @Nullable QuestAPI.Quest getSelectedQuest() { return questGiverSelected; } - public @Nullable QuestListItem getSelectedQuestInfo() { + @Override + public @Nullable QuestAPI.QuestListItem getSelectedQuestInfo() { return questInfoGiverSelected; } - public @Nullable List getCurrestQuests() { + @Override + public @Nullable List getCurrestQuests() { return questItems; } + @Override public boolean isQuestGiverOpen() { return visibleQuestGiver; } + @Override public int getSelectedTab() { return tabSelected; } - public static class QuestListItem extends Auto { + public static class QuestListItem extends Auto implements QuestAPI.QuestListItem { private int id; private boolean selected; private boolean completed; @@ -124,45 +130,52 @@ public void update() { this.type = API.readMemoryString(address, 0x70); } + @Override public int getId() { return id; } + @Override public int getLevelRequired() { return levelRequired; } + @Override public boolean isSelected() { return selected; } + @Override public boolean isCompleted() { return completed; } + @Override public String getTitle() { return title; } + @Override public String getType() { return type; } + @Override public boolean isActivable() { return activable; } } - public static class Quest extends Auto { + public static class Quest extends Auto implements QuestAPI.Quest { private boolean active; private String description; private String title; private int id; private boolean completed; - private final FlashList requirementItems = FlashList.ofArray(Requirement.class); + private final FlashList requirementItems = FlashList.ofArray(Requirement.class); - private final List rewardItems = new ArrayList<>(); + private final List rewardItems = new ArrayList<>(); private final ObjArray rewardItemsArr = ObjArray.ofArrObj(true); @Override @@ -186,36 +199,43 @@ public void update() { rewardItemsArr.sync(rewardItems, Reward::new); } + @Override public int getId() { return id; } + @Override public boolean isActive() { return active; } + @Override public String getTitle() { return title; } + @Override public String getDescription() { return description; } + @Override public boolean isCompleted() { return completed; } - public List getRequirements() { + @Override + public List getRequirements() { return requirementItems; } - public List getRewards() { + @Override + public List getRewards() { return rewardItems; } } - public static class Reward extends Auto { + public static class Reward extends Auto implements QuestAPI.Reward { private int amount; private String type; @@ -229,23 +249,25 @@ public void update() { this.type = API.readMemoryString(address, 0x28); } + @Override public int getAmount() { return amount; } + @Override public String getType() { return type; } } - public static class Requirement extends Auto { + public static class Requirement extends Auto implements QuestAPI.Requirement { private String description; private double goalReached; private double goal; private boolean completed; private boolean enabled; - private final List requirementItems = new ArrayList<>(); + private final List requirementItems = new ArrayList<>(); private final ObjArray requirementItemsArr = ObjArray.ofArrObj(true); private String requirementType; @@ -269,30 +291,37 @@ public void update() { requirementItemsArr.sync(requirementItems, Requirement::new); } + @Override public String getDescription() { return description; } + @Override public double getProgress() { return goalReached; } + @Override public double getGoal() { return goal; } + @Override public boolean isCompleted() { return completed; } + @Override public String getType() { return requirementType; } - public List getRequirements() { + @Override + public List getRequirements() { return requirementItems; } + @Override public boolean isEnabled() { return enabled; } From 682893b0032f0fde5223b4d19374ec4633ad3cfc Mon Sep 17 00:00:00 2001 From: dm94 Date: Sun, 26 Nov 2023 10:49:12 +0100 Subject: [PATCH 20/25] Updated to resolve comments --- .../darkbot/core/objects/facades/QuestProxy.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index c77127b54..fe70eed51 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -33,12 +33,12 @@ public void update() { return; } - long questClass = API.readMemoryLong(address + 0x98) & ByteUtils.ATOM_MASK; + long questClass = API.readMemoryPtr(address + 0x98); this.visibleQuestGiver = API.readMemoryBoolean(address, 0x40); this.tabSelected = API.readMemoryInt(address, 0X50); - long currentQuestAddr = API.readMemoryLong(questClass + 0x28) & ByteUtils.ATOM_MASK; + long currentQuestAddr = API.readMemoryPtr(questClass + 0x28); if (currentQuestAddr == 0) { this.currentQuest = null; @@ -50,10 +50,7 @@ public void update() { this.currentQuest.update(currentQuestAddr); } - questItemsArr.update(API.readMemoryPtr(0x58)); - questItemsArr.sync(questItems, QuestListItem::new); - - long questInfoGiverSelectedAddr = API.readMemoryLong(address + 0xA8) & ByteUtils.ATOM_MASK; + long questInfoGiverSelectedAddr = API.readMemoryPtr(address + 0xA8); if (questInfoGiverSelectedAddr == 0) { this.questInfoGiverSelected = null; } else { @@ -64,7 +61,7 @@ public void update() { this.questInfoGiverSelected.update(questInfoGiverSelectedAddr); } - long questGiverSelectedAddr = API.readMemoryLong(address + 0xB0) & ByteUtils.ATOM_MASK; + long questGiverSelectedAddr = API.readMemoryPtr(address + 0xB0); if (questGiverSelectedAddr == 0) { this.questGiverSelected = null; } else { @@ -93,6 +90,9 @@ public void update() { @Override public @Nullable List getCurrestQuests() { + questItemsArr.update(API.readMemoryPtr(address + 0x58)); + questItemsArr.sync(questItems, QuestListItem::new); + return questItems; } From e0b4d7bb87ea297b9f638e84ef10fe0b78781a97 Mon Sep 17 00:00:00 2001 From: dm94 Date: Sun, 26 Nov 2023 10:56:59 +0100 Subject: [PATCH 21/25] Now it does not update certain values until the quest giver is open --- .../darkbot/core/objects/facades/QuestProxy.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index fe70eed51..a9ddd4d43 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -35,9 +35,6 @@ public void update() { long questClass = API.readMemoryPtr(address + 0x98); - this.visibleQuestGiver = API.readMemoryBoolean(address, 0x40); - this.tabSelected = API.readMemoryInt(address, 0X50); - long currentQuestAddr = API.readMemoryPtr(questClass + 0x28); if (currentQuestAddr == 0) { @@ -50,6 +47,16 @@ public void update() { this.currentQuest.update(currentQuestAddr); } + this.visibleQuestGiver = API.readMemoryBoolean(address, 0x40); + + if (!visibleQuestGiver) { + this.questInfoGiverSelected = null; + this.questGiverSelected = null; + return; + } + + this.tabSelected = API.readMemoryInt(address, 0X50); + long questInfoGiverSelectedAddr = API.readMemoryPtr(address + 0xA8); if (questInfoGiverSelectedAddr == 0) { this.questInfoGiverSelected = null; From 847f7157a10b99543cd41eb3146896989f14344e Mon Sep 17 00:00:00 2001 From: dm94 Date: Sun, 26 Nov 2023 18:09:30 +0100 Subject: [PATCH 22/25] Changes regarding comments and some improvements --- .../core/objects/facades/QuestProxy.java | 51 +++++++------------ 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index a9ddd4d43..7cd7e7fbc 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -3,7 +3,6 @@ import com.github.manolo8.darkbot.core.itf.Updatable; import com.github.manolo8.darkbot.core.objects.swf.FlashList; import com.github.manolo8.darkbot.core.objects.swf.ObjArray; -import com.github.manolo8.darkbot.core.utils.ByteUtils; import eu.darkbot.api.managers.QuestAPI; @@ -36,16 +35,10 @@ public void update() { long questClass = API.readMemoryPtr(address + 0x98); long currentQuestAddr = API.readMemoryPtr(questClass + 0x28); - - if (currentQuestAddr == 0) { - this.currentQuest = null; - } else { - if (this.currentQuest == null) { - this.currentQuest = new Quest(); - } - - this.currentQuest.update(currentQuestAddr); + if (this.currentQuest == null) { + this.currentQuest = new Quest(); } + this.currentQuest.update(currentQuestAddr); this.visibleQuestGiver = API.readMemoryBoolean(address, 0x40); @@ -55,44 +48,34 @@ public void update() { return; } - this.tabSelected = API.readMemoryInt(address, 0X50); + this.tabSelected = API.readMemoryInt(address, 0x50); long questInfoGiverSelectedAddr = API.readMemoryPtr(address + 0xA8); - if (questInfoGiverSelectedAddr == 0) { - this.questInfoGiverSelected = null; - } else { - if (this.questInfoGiverSelected == null) { - this.questInfoGiverSelected = new QuestListItem(); - } - - this.questInfoGiverSelected.update(questInfoGiverSelectedAddr); + if (this.questInfoGiverSelected == null) { + this.questInfoGiverSelected = new QuestListItem(); } + this.questInfoGiverSelected.update(questInfoGiverSelectedAddr); long questGiverSelectedAddr = API.readMemoryPtr(address + 0xB0); - if (questGiverSelectedAddr == 0) { - this.questGiverSelected = null; - } else { - if (this.questGiverSelected == null) { - this.questGiverSelected = new Quest(); - } - - this.questGiverSelected.update(questGiverSelectedAddr); + if (this.questGiverSelected == null) { + this.questGiverSelected = new Quest(); } + this.questGiverSelected.update(questGiverSelectedAddr); } @Override public @Nullable QuestAPI.Quest getDisplayedQuest() { - return currentQuest; + return currentQuest == null || currentQuest.address == 0 ? null : currentQuest; } @Override public @Nullable QuestAPI.Quest getSelectedQuest() { - return questGiverSelected; + return questGiverSelected == null || questGiverSelected.address == 0 ? null : questGiverSelected; } @Override public @Nullable QuestAPI.QuestListItem getSelectedQuestInfo() { - return questInfoGiverSelected; + return questInfoGiverSelected == null || questInfoGiverSelected.address == 0 ? null : questInfoGiverSelected; } @Override @@ -196,12 +179,16 @@ public void update() { this.title = API.readMemoryString(address, 0x68); this.description = API.readMemoryString(address, 0x70); - long requirementAddr = API.readMemoryLong(address + 0x38) & ByteUtils.ATOM_MASK; + long requirementAddr = API.readMemoryPtr(address + 0x38); this.completed = API.readMemoryBoolean(requirementAddr, 0x38); requirementItems.update(API.readMemoryPtr(address + 0x40)); requirementItems.update(); + if (this.rewardItems.size() > 0) { + return; + } + rewardItemsArr.update(API.readMemoryPtr(address + 0x50)); rewardItemsArr.sync(rewardItems, Reward::new); } @@ -291,7 +278,7 @@ public void update() { this.goalReached = API.readMemoryDouble(address + 0x78); this.goal = API.readMemoryDouble(address + 0x80); - long definitionAddr = API.readMemoryLong(address + 0x58) & ByteUtils.ATOM_MASK; + long definitionAddr = API.readMemoryPtr(address + 0x58); this.requirementType = API.readMemoryString(definitionAddr, 0x28); requirementItemsArr.update(API.readMemoryPtr(address + 0x48)); From 983e00d3ef04f11ab3b5ba72ec5991bb6eabbfd6 Mon Sep 17 00:00:00 2001 From: dm94 Date: Wed, 13 Dec 2023 09:29:07 +0100 Subject: [PATCH 23/25] feat: Recommended changes in the PR have been made --- .../core/objects/facades/QuestProxy.java | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index 7cd7e7fbc..616a3101d 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -14,14 +14,15 @@ import org.jetbrains.annotations.Nullable; public class QuestProxy extends Updatable implements QuestAPI { - private @Nullable QuestProxy.Quest currentQuest; + private @Nullable QuestProxy.Quest currentQuest = new Quest(); private final List questItems = new ArrayList<>(); + private boolean questsUpdated = false; private final ObjArray questItemsArr = ObjArray.ofArrObj(true); - private @Nullable QuestProxy.Quest questGiverSelected; - private @Nullable QuestProxy.QuestListItem questInfoGiverSelected; + private @Nullable QuestProxy.Quest questGiverSelected = new Quest(); + private @Nullable QuestProxy.QuestListItem questInfoGiverSelected = new QuestListItem(); private boolean visibleQuestGiver; private int tabSelected; @@ -32,56 +33,52 @@ public void update() { return; } + this.questsUpdated = false; + long questClass = API.readMemoryPtr(address + 0x98); long currentQuestAddr = API.readMemoryPtr(questClass + 0x28); - if (this.currentQuest == null) { - this.currentQuest = new Quest(); - } this.currentQuest.update(currentQuestAddr); this.visibleQuestGiver = API.readMemoryBoolean(address, 0x40); if (!visibleQuestGiver) { - this.questInfoGiverSelected = null; - this.questGiverSelected = null; return; } this.tabSelected = API.readMemoryInt(address, 0x50); long questInfoGiverSelectedAddr = API.readMemoryPtr(address + 0xA8); - if (this.questInfoGiverSelected == null) { - this.questInfoGiverSelected = new QuestListItem(); - } this.questInfoGiverSelected.update(questInfoGiverSelectedAddr); long questGiverSelectedAddr = API.readMemoryPtr(address + 0xB0); - if (this.questGiverSelected == null) { - this.questGiverSelected = new Quest(); - } this.questGiverSelected.update(questGiverSelectedAddr); } @Override public @Nullable QuestAPI.Quest getDisplayedQuest() { - return currentQuest == null || currentQuest.address == 0 ? null : currentQuest; + return currentQuest.address == 0 ? null : currentQuest; } @Override public @Nullable QuestAPI.Quest getSelectedQuest() { - return questGiverSelected == null || questGiverSelected.address == 0 ? null : questGiverSelected; + return !this.visibleQuestGiver || questGiverSelected.address == 0 ? null + : questGiverSelected; } @Override public @Nullable QuestAPI.QuestListItem getSelectedQuestInfo() { - return questInfoGiverSelected == null || questInfoGiverSelected.address == 0 ? null : questInfoGiverSelected; + return !this.visibleQuestGiver || questInfoGiverSelected.address == 0 ? null + : questInfoGiverSelected; } @Override public @Nullable List getCurrestQuests() { - questItemsArr.update(API.readMemoryPtr(address + 0x58)); - questItemsArr.sync(questItems, QuestListItem::new); + if (!questsUpdated) { + questsUpdated = true; + questItemsArr.update(API.readMemoryPtr(address + 0x58)); + questItemsArr.sync(questItems, QuestListItem::new); + } return questItems; } From d78cf747b27a7561e67538b5d50a7a674834a1af Mon Sep 17 00:00:00 2001 From: dm94 Date: Sat, 23 Dec 2023 17:20:30 +0100 Subject: [PATCH 24/25] Sonar change --- .../github/manolo8/darkbot/core/objects/facades/QuestProxy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java index 616a3101d..bbdb0c5c6 100644 --- a/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java +++ b/src/main/java/com/github/manolo8/darkbot/core/objects/facades/QuestProxy.java @@ -182,7 +182,7 @@ public void update() { requirementItems.update(API.readMemoryPtr(address + 0x40)); requirementItems.update(); - if (this.rewardItems.size() > 0) { + if (!this.rewardItems.isEmpty()) { return; } From 017b6e55e3350888dfd00f5fc1475cce9d20945b Mon Sep 17 00:00:00 2001 From: Pablo Herrera Date: Thu, 4 Jan 2024 07:43:18 +0100 Subject: [PATCH 25/25] Update api version --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 0568d93f0..17544cf25 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -43,7 +43,7 @@ publishing { } dependencies { - val apiVersion = "0.8.3" + val apiVersion = "0.8.5" val flatLafVersion = "3.1.1" // use this if you want to use local(mavenLocal) darkbot API