bank plugin: add option to input bankpin with keyboard
This commit is contained in:
@@ -108,4 +108,15 @@ public interface BankConfig extends Config
|
|||||||
{
|
{
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import java.util.List;
|
|||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import static net.runelite.api.Constants.HIGH_ALCHEMY_MULTIPLIER;
|
import static net.runelite.api.Constants.HIGH_ALCHEMY_MULTIPLIER;
|
||||||
import net.runelite.api.InventoryID;
|
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.ScriptCallbackEvent;
|
||||||
import net.runelite.api.events.ScriptPostFired;
|
import net.runelite.api.events.ScriptPostFired;
|
||||||
import net.runelite.api.events.WidgetLoaded;
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
|
import net.runelite.api.widgets.JavaScriptCallback;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import net.runelite.api.widgets.WidgetID;
|
import net.runelite.api.widgets.WidgetID;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
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.callback.ClientThread;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
@@ -71,6 +75,7 @@ import net.runelite.client.util.QuantityFormatter;
|
|||||||
description = "Modifications to the banking interface",
|
description = "Modifications to the banking interface",
|
||||||
tags = {"grand", "exchange", "high", "alchemy", "prices", "deposit"}
|
tags = {"grand", "exchange", "high", "alchemy", "prices", "deposit"}
|
||||||
)
|
)
|
||||||
|
@Slf4j
|
||||||
public class BankPlugin extends Plugin
|
public class BankPlugin extends Plugin
|
||||||
{
|
{
|
||||||
private static final List<Varbits> TAB_VARBITS = ImmutableList.of(
|
private static final List<Varbits> TAB_VARBITS = ImmutableList.of(
|
||||||
@@ -200,6 +205,41 @@ public class BankPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
1
runelite-client/src/main/scripts/BankpinButtonSetup.hash
Normal file
1
runelite-client/src/main/scripts/BankpinButtonSetup.hash
Normal file
@@ -0,0 +1 @@
|
|||||||
|
48C575A71CD8CDDBFC8A7C0D2F8915A5EE263731213FFC23BEFFF39B6441A9FF
|
||||||
121
runelite-client/src/main/scripts/BankpinButtonSetup.rs2asm
Normal file
121
runelite-client/src/main/scripts/BankpinButtonSetup.rs2asm
Normal 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
|
||||||
Reference in New Issue
Block a user