Add destroy support to Item Charge plugin
This commit is contained in:
committed by
TheStonedTurtle
parent
0489d7de9d
commit
f3387bc9f9
@@ -41,6 +41,9 @@ import net.runelite.api.ItemID;
|
|||||||
import net.runelite.api.events.ChatMessage;
|
import net.runelite.api.events.ChatMessage;
|
||||||
import net.runelite.api.events.ConfigChanged;
|
import net.runelite.api.events.ConfigChanged;
|
||||||
import net.runelite.api.events.ItemContainerChanged;
|
import net.runelite.api.events.ItemContainerChanged;
|
||||||
|
import net.runelite.api.events.ScriptCallbackEvent;
|
||||||
|
import net.runelite.api.widgets.Widget;
|
||||||
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
import net.runelite.client.Notifier;
|
import net.runelite.client.Notifier;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
@@ -94,6 +97,9 @@ public class ItemChargePlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private ItemChargeConfig config;
|
private ItemChargeConfig config;
|
||||||
|
|
||||||
|
// Limits destroy callback to once per tick
|
||||||
|
private int lastCheckTick;
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
ItemChargeConfig getConfig(ConfigManager configManager)
|
ItemChargeConfig getConfig(ConfigManager configManager)
|
||||||
{
|
{
|
||||||
@@ -111,6 +117,7 @@ public class ItemChargePlugin extends Plugin
|
|||||||
{
|
{
|
||||||
overlayManager.remove(overlay);
|
overlayManager.remove(overlay);
|
||||||
infoBoxManager.removeIf(ItemChargeInfobox.class::isInstance);
|
infoBoxManager.removeIf(ItemChargeInfobox.class::isInstance);
|
||||||
|
lastCheckTick = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -241,6 +248,21 @@ public class ItemChargePlugin extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
private void onScriptCallbackEvent(ScriptCallbackEvent event)
|
||||||
|
{
|
||||||
|
if (!"destroyOnOpKey".equals(event.getEventName()))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final int yesOption = client.getIntStack()[client.getIntStackSize() - 1];
|
||||||
|
if (yesOption == 1)
|
||||||
|
{
|
||||||
|
checkDestroyWidget();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void updateDodgyNecklaceCharges(final int value)
|
private void updateDodgyNecklaceCharges(final int value)
|
||||||
{
|
{
|
||||||
config.dodgyNecklace(value);
|
config.dodgyNecklace(value);
|
||||||
@@ -275,6 +297,32 @@ public class ItemChargePlugin extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkDestroyWidget()
|
||||||
|
{
|
||||||
|
final int currentTick = client.getTickCount();
|
||||||
|
if (lastCheckTick == currentTick)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lastCheckTick = currentTick;
|
||||||
|
|
||||||
|
final Widget widgetDestroyItemName = client.getWidget(WidgetInfo.DESTROY_ITEM_NAME);
|
||||||
|
if (widgetDestroyItemName == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (widgetDestroyItemName.getText())
|
||||||
|
{
|
||||||
|
case "Binding necklace":
|
||||||
|
updateBindingNecklaceCharges(MAX_BINDING_CHARGES);
|
||||||
|
break;
|
||||||
|
case "Dodgy necklace":
|
||||||
|
updateDodgyNecklaceCharges(MAX_DODGY_CHARGES);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void updateJewelleryInfobox(ItemWithSlot item, Item[] items)
|
private void updateJewelleryInfobox(ItemWithSlot item, Item[] items)
|
||||||
{
|
{
|
||||||
for (final EquipmentInventorySlot equipmentInventorySlot : item.getSlots())
|
for (final EquipmentInventorySlot equipmentInventorySlot : item.getSlots())
|
||||||
|
|||||||
1
runelite-client/src/main/scripts/DestroyOnOpKey.hash
Normal file
1
runelite-client/src/main/scripts/DestroyOnOpKey.hash
Normal file
@@ -0,0 +1 @@
|
|||||||
|
DA7BFF3D4B1135F264904DDCED76BC0CD56CEF4B41E1D7852097E9EECC235B9A
|
||||||
93
runelite-client/src/main/scripts/DestroyOnOpKey.rs2asm
Normal file
93
runelite-client/src/main/scripts/DestroyOnOpKey.rs2asm
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
.id 1651
|
||||||
|
.int_stack_count 5
|
||||||
|
.string_stack_count 2
|
||||||
|
.int_var_count 5
|
||||||
|
.string_var_count 2
|
||||||
|
iload 0
|
||||||
|
iconst 1
|
||||||
|
if_icmpeq LABEL13
|
||||||
|
iload 1
|
||||||
|
iconst -1
|
||||||
|
if_icmpne LABEL7
|
||||||
|
jump LABEL74
|
||||||
|
LABEL7:
|
||||||
|
sload 1
|
||||||
|
iload 1
|
||||||
|
string_indexof_char
|
||||||
|
iconst -1
|
||||||
|
if_icmpne LABEL13
|
||||||
|
jump LABEL74
|
||||||
|
LABEL13:
|
||||||
|
iload 0
|
||||||
|
iconst 1
|
||||||
|
if_icmpne LABEL17
|
||||||
|
jump LABEL24
|
||||||
|
LABEL17:
|
||||||
|
iconst 584
|
||||||
|
iconst -1
|
||||||
|
invoke 1701
|
||||||
|
iconst 0
|
||||||
|
if_icmpeq LABEL23
|
||||||
|
jump LABEL24
|
||||||
|
LABEL23:
|
||||||
|
return
|
||||||
|
LABEL24:
|
||||||
|
iload 3
|
||||||
|
sconst "destroyOnOpKey" ; load event name
|
||||||
|
runelite_callback ; invoke callback
|
||||||
|
pop_int
|
||||||
|
iconst 2266
|
||||||
|
iconst 1
|
||||||
|
iconst 0
|
||||||
|
sound_synth
|
||||||
|
iload 2
|
||||||
|
iload 4
|
||||||
|
cc_find
|
||||||
|
iconst 1
|
||||||
|
if_icmpeq LABEL34
|
||||||
|
jump LABEL38
|
||||||
|
LABEL34:
|
||||||
|
iconst 16777215
|
||||||
|
cc_setcolour
|
||||||
|
sconst "..."
|
||||||
|
cc_settext
|
||||||
|
LABEL38:
|
||||||
|
iconst -1
|
||||||
|
sconst ""
|
||||||
|
iload 2
|
||||||
|
if_setonmouserepeat
|
||||||
|
iconst -1
|
||||||
|
sconst ""
|
||||||
|
iload 2
|
||||||
|
if_setonmouseleave
|
||||||
|
iload 2
|
||||||
|
if_clearops
|
||||||
|
iconst -1
|
||||||
|
sconst ""
|
||||||
|
iload 2
|
||||||
|
if_setonop
|
||||||
|
iconst -1
|
||||||
|
sconst ""
|
||||||
|
iload 2
|
||||||
|
if_setonkey
|
||||||
|
iconst 1652
|
||||||
|
iload 2
|
||||||
|
sload 0
|
||||||
|
iload 3
|
||||||
|
sload 1
|
||||||
|
clientclock
|
||||||
|
iconst 40
|
||||||
|
add
|
||||||
|
sconst "Isisi"
|
||||||
|
iload 2
|
||||||
|
if_setontimer
|
||||||
|
iconst 38273024
|
||||||
|
iload 3
|
||||||
|
cc_find
|
||||||
|
iconst 1
|
||||||
|
if_icmpeq LABEL73
|
||||||
|
jump LABEL74
|
||||||
|
LABEL73:
|
||||||
|
cc_resume_pausebutton
|
||||||
|
LABEL74:
|
||||||
|
return
|
||||||
Reference in New Issue
Block a user