bank plugin: add option to input bankpin with keyboard

This commit is contained in:
Adam
2020-04-19 12:57:01 -04:00
parent 3422a7cfc8
commit c1fdec9d2e
4 changed files with 173 additions and 0 deletions

View File

@@ -108,4 +108,15 @@ public interface BankConfig extends Config
{
return true;
}
@ConfigItem(
keyName = "bankPinKeyboard",
name = "Keyboard Bankpin",
description = "Allows using the keyboard keys for bank pin input",
position = 8
)
default boolean bankPinKeyboard()
{
return false;
}
}

View File

@@ -37,6 +37,7 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import static net.runelite.api.Constants.HIGH_ALCHEMY_MULTIPLIER;
import net.runelite.api.InventoryID;
@@ -54,9 +55,12 @@ import net.runelite.api.events.MenuShouldLeftClick;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.events.ScriptPostFired;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.JavaScriptCallback;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo;
import static net.runelite.api.widgets.WidgetInfo.TO_CHILD;
import static net.runelite.api.widgets.WidgetInfo.TO_GROUP;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
@@ -71,6 +75,7 @@ import net.runelite.client.util.QuantityFormatter;
description = "Modifications to the banking interface",
tags = {"grand", "exchange", "high", "alchemy", "prices", "deposit"}
)
@Slf4j
public class BankPlugin extends Plugin
{
private static final List<Varbits> TAB_VARBITS = ImmutableList.of(
@@ -200,6 +205,41 @@ public class BankPlugin extends Plugin
}
break;
case "bankpinButtonSetup":
{
if (!config.bankPinKeyboard())
{
return;
}
final int compId = intStack[intStackSize - 2];
final int buttonId = intStack[intStackSize - 1];
Widget button = client.getWidget(TO_GROUP(compId), TO_CHILD(compId));
Widget buttonRect = button.getChild(0);
final Object[] onOpListener = buttonRect.getOnOpListener();
buttonRect.setOnKeyListener((JavaScriptCallback) e ->
{
int typedChar = e.getTypedKeyChar() - '0';
if (typedChar != buttonId)
{
return;
}
log.debug("Bank pin keypress");
final String input = client.getVar(VarClientStr.CHATBOX_TYPED_TEXT);
clientThread.invokeLater(() ->
{
// reset chatbox input to avoid pin going to chatbox..
client.setVar(VarClientStr.CHATBOX_TYPED_TEXT, input);
client.runScript(ScriptID.CHAT_PROMPT_INIT);
client.runScript(onOpListener);
});
});
break;
}
}
}

View File

@@ -0,0 +1 @@
48C575A71CD8CDDBFC8A7C0D2F8915A5EE263731213FFC23BEFFF39B6441A9FF

View File

@@ -0,0 +1,121 @@
.id 679
.int_stack_count 21
.string_stack_count 0
.int_var_count 21
.string_var_count 0
iload 0
cc_deleteall
iload 0
iconst 3
iconst 0
cc_create
iconst 64
iconst 64
iconst 0
iconst 0
cc_setsize
iconst 0
iconst 0
iconst 0
iconst 0
cc_setposition
iconst 16777215
cc_setcolour
iconst 1
cc_setfill
iconst 255
cc_settrans
iload 0
iconst 4
iconst 1
cc_create 1
iconst 10
iconst 15
iconst 0
iconst 0
cc_setsize 1
iconst 5
iload 0
if_getwidth
iconst 15
sub
randominc
add
iconst 5
iload 0
if_getheight
iconst 20
sub
randominc
add
iconst 0
iconst 0
cc_setposition 1
iconst 1
iconst 1
iconst 0
cc_settextalign 1
iconst 496
cc_settextfont 1
iconst 16744192
cc_setcolour 1
iconst 0
cc_settextshadow 1
sconst ""
cc_settext 1
iconst 683
iconst -2147483645
iconst -2147483643
iload 1
clientclock
iconst 5
add
sconst "Iiii"
cc_setontimer 1
iconst 684
iconst 0
iconst -2147483645
iconst -2147483643
cc_getid 1
sconst "1Iii"
cc_setonmouserepeat
iconst 684
iconst 1
iconst -2147483645
iconst -2147483643
cc_getid 1
sconst "1Iii"
cc_setonmouseleave
iconst 1
sconst "Select"
cc_setop
iconst 685
iload 1
iload 2
iload 3
iload 4
iload 5
iload 6
iload 7
iload 8
iload 9
iload 10
iload 11
iload 12
iload 13
iload 14
iload 15
iload 16
iload 17
iload 18
iload 19
iload 20
sconst "iiiIIIIIIIIIIIIIIIII"
cc_setonop
iload 0 ; button component id
iload 1 ; 0-9
sconst "bankpinButtonSetup"
runelite_callback
pop_int ; 0-9
pop_int ; button component id
return