This commit is contained in:
zeruth
2019-06-17 17:58:35 -04:00
12 changed files with 919 additions and 327 deletions

View File

@@ -2,16 +2,16 @@
# RuneLitePlus-PS [![Build Status](https://travis-ci.org/runelite-extended/runelite.svg?branch=master)](https://travis-ci.org/runelite-extended/runelite) [![Discord](https://img.shields.io/discord/373382904769675265.svg)](https://discord.gg/HN5gf3m) # RuneLitePlus-PS rev180 [![Build Status](https://travis-ci.org/runelite-extended/runelite.svg?branch=master)](https://travis-ci.org/runelite-extended/runelite) [![Discord](https://img.shields.io/discord/373382904769675265.svg)](https://discord.gg/HN5gf3m)
[RuneLitePlus-PS](https://runelitepl.us) is a fork of [RuneLite](https://github.com/runelite/runelite) that provides more functionality and less restrictions while staying open source. This is specific version meant for rs-mod which can be found here: [RuneLitePlus-PS](https://runelitepl.us) is a fork of [RuneLite](https://github.com/runelite/runelite) that provides more functionality and less restrictions while staying open source. This is specific version meant for rs-mod which can be found here:
https://www.rune-server.ee/runescape-development/rs2-server/downloads/684206-180-rs-mod-release.html https://www.rune-server.ee/runescape-development/rs2-server/downloads/684206-180-rs-mod-release.html
## Usage ## Usage
It's ran much like RuneLite or RuneLitePlus, install then run RuneLite.main() To setup your rsa keys, navigate to runelite-mixins and go to RSBufferMixin and set modulus and exponent
First you will want to use [Recaf](https://github.com/Col-E/Recaf/releases) to modify the RSA class (currently cm.class for 180) <clinit> instructions for the server keys you use in the vanilla-RSVERSION.jar in the root of the project. I will implement mixins but this works for now. After that it's ran much like RuneLite or RuneLitePlus, install then run RuneLite.main()
## License ## License

View File

@@ -62,10 +62,12 @@ public class ClanManModePlugin extends Plugin
@Inject @Inject
private ClanManager clanManager; private ClanManager clanManager;
private static final String CAST = "CAST";
private static final String ATTACK_OPTIONS_ATTACK = "ATTACK"; private static final String ATTACK_OPTIONS_ATTACK = "ATTACK";
public static final HashSet<String> ATTACK_OPTIONS_KEYWORDS = new HashSet<>(); public static final HashSet<String> ATTACK_OPTIONS_KEYWORDS = new HashSet<>();
static static
{ {
ATTACK_OPTIONS_KEYWORDS.add(CAST);
ATTACK_OPTIONS_KEYWORDS.add(ATTACK_OPTIONS_ATTACK); ATTACK_OPTIONS_KEYWORDS.add(ATTACK_OPTIONS_ATTACK);
} }

View File

@@ -24,7 +24,6 @@
*/ */
package net.runelite.client.plugins.lizardmenshaman; package net.runelite.client.plugins.lizardmenshaman;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -36,8 +35,10 @@ import net.runelite.api.Actor;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.LocalPoint;
import net.runelite.api.events.AnimationChanged; import net.runelite.api.events.AnimationChanged;
import net.runelite.api.events.ChatMessage;
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.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginType; import net.runelite.client.plugins.PluginType;
@@ -94,6 +95,18 @@ public class LizardmenShamanPlugin extends Plugin
spawns.clear(); spawns.clear();
} }
@Subscribe
public void onChatMessage(ChatMessage event)
{
if (config.notifyOnSpawn())
{
if (event.getMessage().contains(MESSAGE))
{
notifier.notify(MESSAGE);
}
}
}
@Subscribe @Subscribe
public void onAnimationChanged(AnimationChanged event) public void onAnimationChanged(AnimationChanged event)
{ {
@@ -102,17 +115,13 @@ public class LizardmenShamanPlugin extends Plugin
{ {
return; return;
} }
else if (actor.getName().equals(SHAMAN) && actor.getAnimation() == 7157)
if (actor.getName().equals(SHAMAN) && actor.getAnimation() == 7157)
{ {
if (config.showTimer()) if (config.showTimer())
{ {
spawns.put(event.getActor().getLocalLocation(), new LizardmenShamanSpawn(8.4, null)); spawns.put(event.getActor().getLocalLocation(), new LizardmenShamanSpawn(8.4, null));
} }
if (config.notifyOnSpawn())
{
notifier.notify(MESSAGE);
}
} }
} }
} }

View File

@@ -727,8 +727,10 @@ public class MenuEntrySwapperPlugin extends Plugin
{ {
if (event.getType() == WALK.getId()) if (event.getType() == WALK.getId())
{ {
MenuEntry menuEntry = entries[entries.length - 1]; MenuEntry[] menuEntries = client.getMenuEntries();
MenuEntry menuEntry = menuEntries[menuEntries.length - 1];
menuEntry.setType(MenuAction.WALK.getId() + MENU_ACTION_DEPRIORITIZE_OFFSET); menuEntry.setType(MenuAction.WALK.getId() + MENU_ACTION_DEPRIORITIZE_OFFSET);
client.setMenuEntries(menuEntries);
} }
else if (option.equalsIgnoreCase("examine")) else if (option.equalsIgnoreCase("examine"))
{ {
@@ -938,6 +940,11 @@ public class MenuEntrySwapperPlugin extends Plugin
swap(client, "buy-plank", option, target, true); swap(client, "buy-plank", option, target, true);
} }
if (config.claimDynamite() && target.equals("thirus"))
{
swap(client, "claim", option, target, true);
}
if (config.swapTrade()) if (config.swapTrade())
{ {
swap(client, "trade", option, target, true); swap(client, "trade", option, target, true);
@@ -950,11 +957,6 @@ public class MenuEntrySwapperPlugin extends Plugin
swap(client, "claim-slime", option, target, true); swap(client, "claim-slime", option, target, true);
} }
if (config.claimDynamite() && target.contains("Thirus"))
{
swap(client, "claim-dynamite", option, target, true);
}
if (config.swapTravel()) if (config.swapTravel())
{ {
swap(client, "travel", option, target, true); swap(client, "travel", option, target, true);

View File

@@ -105,10 +105,12 @@ public class PvpToolsPlugin extends Plugin
private static final String WALK_HERE = "WALK HERE"; private static final String WALK_HERE = "WALK HERE";
private static final String CANCEL = "CANCEL"; private static final String CANCEL = "CANCEL";
private static final String CAST = "CAST";
private static final String ATTACK_OPTIONS_ATTACK = "ATTACK"; private static final String ATTACK_OPTIONS_ATTACK = "ATTACK";
public static final HashSet<String> ATTACK_OPTIONS_KEYWORDS = new HashSet<>(); public static final HashSet<String> ATTACK_OPTIONS_KEYWORDS = new HashSet<>();
static static
{ {
ATTACK_OPTIONS_KEYWORDS.add(CAST);
ATTACK_OPTIONS_KEYWORDS.add(ATTACK_OPTIONS_ATTACK); ATTACK_OPTIONS_KEYWORDS.add(ATTACK_OPTIONS_ATTACK);
} }

View File

@@ -158,89 +158,86 @@ public class RaidsOverlay extends Overlay
boolean unknownCombat = false; boolean unknownCombat = false;
String puzzles = ""; String puzzles = "";
String roomName = ""; String roomName = "";
if (config.enhanceScouterTitle() || config.scavsBeforeIce() || sharable) for (Room layoutRoom : plugin.getRaid().getLayout().getRooms())
{ {
for (Room layoutRoom : plugin.getRaid().getLayout().getRooms()) int position = layoutRoom.getPosition();
{ RaidRoom room = plugin.getRaid().getRoom(position);
int position = layoutRoom.getPosition();
RaidRoom room = plugin.getRaid().getRoom(position);
if (room == null) if (room == null)
{
continue;
}
switch (room.getType())
{
case COMBAT:
combatCount++;
roomName = room.getBoss().getName();
switch (RaidRoom.Boss.fromString(roomName))
{
case VANGUARDS:
vanguards = true;
break;
case UNKNOWN:
unknownCombat = true;
break;
}
break;
case PUZZLE:
roomName = room.getPuzzle().getName();
switch (RaidRoom.Puzzle.fromString(roomName))
{
case CRABS:
crabs = true;
break;
case ICE_DEMON:
iceDemon = true;
iceRooms.add(roomCount);
break;
case THIEVING:
thieving = true;
break;
case TIGHTROPE:
tightrope = true;
break;
}
break;
case SCAVENGERS:
scavRooms.add(roomCount);
break;
}
roomCount++;
}
if (tightrope)
{ {
puzzles = crabs ? "cr" : iceDemon ? "ri" : thieving ? "tr" : "?r"; continue;
} }
if ((config.hideVanguards() && vanguards) || (config.hideRopeless() && !tightrope) || (config.hideUnknownCombat() && unknownCombat)) switch (room.getType())
{ {
panelComponent.getChildren().add(TitleComponent.builder() case COMBAT:
.text("Bad Raid!") combatCount++;
.color(Color.RED) roomName = room.getBoss().getName();
.build()); switch (RaidRoom.Boss.fromString(roomName))
return panelComponent.render(graphics);
}
scouterActive = true;
displayLayout = (config.enhanceScouterTitle() ? "" + combatCount + "c " + puzzles + " " : "") + displayLayout;
for (Integer i : iceRooms)
{
int prev = 0;
for (Integer s : scavRooms)
{
if (s > i)
{ {
break; case VANGUARDS:
vanguards = true;
break;
case UNKNOWN:
unknownCombat = true;
break;
} }
prev = s; break;
} case PUZZLE:
scavsBeforeIceRooms.add(prev); roomName = room.getPuzzle().getName();
switch (RaidRoom.Puzzle.fromString(roomName))
{
case CRABS:
crabs = true;
break;
case ICE_DEMON:
iceDemon = true;
iceRooms.add(roomCount);
break;
case THIEVING:
thieving = true;
break;
case TIGHTROPE:
tightrope = true;
break;
}
break;
case SCAVENGERS:
scavRooms.add(roomCount);
break;
} }
roomCount++;
}
if (tightrope)
{
puzzles = crabs ? "cr" : iceDemon ? "ri" : thieving ? "tr" : "?r";
}
if ((config.hideVanguards() && vanguards) || (config.hideRopeless() && !tightrope) || (config.hideUnknownCombat() && unknownCombat))
{
panelComponent.getChildren().add(TitleComponent.builder()
.text("Bad Raid!")
.color(Color.RED)
.build());
return panelComponent.render(graphics);
}
scouterActive = true;
displayLayout = (config.enhanceScouterTitle() ? "" + combatCount + "c " + puzzles + " " : "") + displayLayout;
for (Integer i : iceRooms)
{
int prev = 0;
for (Integer s : scavRooms)
{
if (s > i)
{
break;
}
prev = s;
}
scavsBeforeIceRooms.add(prev);
} }
int lastScavs = scavRooms.get(scavRooms.size() - 1); int lastScavs = scavRooms.get(scavRooms.size() - 1);
panelComponent.getChildren().add(TitleComponent.builder() panelComponent.getChildren().add(TitleComponent.builder()

View File

@@ -1,3 +1,27 @@
/*
* Copyright (c) 2019, gazivodag <https://github.com/gazivodag>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.runedoku; package net.runelite.client.plugins.runedoku;
import java.awt.Color; import java.awt.Color;

View File

@@ -1,3 +1,27 @@
/*
* Copyright (c) 2019, gazivodag <https://github.com/gazivodag>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.runedoku; package net.runelite.client.plugins.runedoku;
import java.awt.Color; import java.awt.Color;
@@ -138,7 +162,14 @@ class RunedokuUtil
item = sudokuScreen.getWidgetItem(myIndex); item = sudokuScreen.getWidgetItem(myIndex);
if (item != null) if (item != null)
{ {
myArr[i][ii] = RunedokuPiece.getById(item.getId()).getPieceForSudoku(); if (item.getId() != -1)
{
myArr[i][ii] = RunedokuPiece.getById(item.getId()).getPieceForSudoku();
}
else
{
myArr[i][ii] = 0;
}
} }
else else
{ {

View File

@@ -252,6 +252,7 @@ public class RuneLitePlusPlugin extends Plugin
{ {
if (client.getWidget(WidgetID.BANK_PIN_GROUP_ID, 0) == null if (client.getWidget(WidgetID.BANK_PIN_GROUP_ID, 0) == null
|| !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Bank of Gielinor") || !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Bank of Gielinor")
&& !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Chambers of Xeric")
&& !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Grand Exchange") && !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Grand Exchange")
&& !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Housing Security System")) && !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Housing Security System"))
{ {

View File

@@ -39,7 +39,7 @@ import net.runelite.client.plugins.PluginType;
* Shift Walker Plugin. Credit to MenuEntrySwapperPlugin for code some code structure used here. * Shift Walker Plugin. Credit to MenuEntrySwapperPlugin for code some code structure used here.
*/ */
@PluginDescriptor( @PluginDescriptor(
name = "Shift To Walk", name = "Shift Walk Under",
description = "Use Shift to toggle the Walk Here menu option. While pressed you will Walk rather than interact with objects.", description = "Use Shift to toggle the Walk Here menu option. While pressed you will Walk rather than interact with objects.",
tags = {"npcs", "items", "objects"}, tags = {"npcs", "items", "objects"},
type = PluginType.UTILITY, type = PluginType.UTILITY,

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,50 @@
/*
* Copyright (c) 2019, Null (zeruth)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.mixins;
import java.math.BigInteger;
import net.runelite.api.mixins.Copy;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.rs.api.RSBuffer;
@Mixin(RSBuffer.class)
public abstract class RSBufferMixin implements RSBuffer
{
@Inject
private static BigInteger modulus = new BigInteger("10001", 16);
@Inject
private static BigInteger exponent = new BigInteger("db7adc8af6f44b1359c5d1701d6bddc3eb47ce3ff2c690521ec8a9ea27525bf69263cea25648540cb572db8c703eeab85e740d1b44342555ab5733e9884f979fb42929d0a21b79d4a180fe83e48e1abaf08ec41e9dc2c0d8b087dc1a9637df68a64b82dddfdfbc6ae31a3c077434c892c7e8425a0184eed3971fa77b0ec895399d7b683042ee981990d9dd2ce3c436be9b2ec93587fb25d1f17cbb771e0f0bf88b27c47af0fd5417f4d1977e3f5483f787a71f59820d1b29a9af9460c6ad8a713ee2a1bf4021e51ce9776aa4eddae3616a808174493b572218c957c15b06df5aef889dbfd5de3a1326ea2d47dbf68b5bd06201b36d6ca5dedb69a8be84c254bb", 16);
@Copy("encryptRsa")
public void rs$encryptRsa(BigInteger var1, BigInteger var2) { }
@Replace("encryptRsa")
public void rl$encryptRsa(BigInteger var1, BigInteger var2) {
rs$encryptRsa(modulus, exponent);
}
}