Compare commits
81 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7f1dc47c98 | |||
| 45b85d728f | |||
| d2fe8b0769 | |||
| 20ccc2399a | |||
| af522dbe1b | |||
| db696431e6 | |||
| 43775016ba | |||
| 4fe3f446a4 | |||
| 0120892521 | |||
| e404eadb3b | |||
| fd731242dd | |||
| 86e7b93b3b | |||
| cad090d8fe | |||
| 0e484985ad | |||
| e293bde96f | |||
| d155a57380 | |||
| a2d24978a4 | |||
| af7ae6185e | |||
| e679891a2d | |||
| 48d3f64795 | |||
| 83b2c119b3 | |||
| d4179ca6b7 | |||
| 6fecac4b55 | |||
| 566d04744c | |||
| 4f6afe496c | |||
| fc0782104b | |||
| 9e285b96c5 | |||
| 94026b854f | |||
| 0105314d04 | |||
| 58796561a3 | |||
| 55ca851d07 | |||
| 88a9562e03 | |||
| 491a7db451 | |||
| 5d6827d82b | |||
| 0721314a6d | |||
| e6ff7550f5 | |||
| a26d5cf7eb | |||
| 572c80b32e | |||
| fad41f9947 | |||
| 9c5ea6ec1d | |||
| 81e6344dd8 | |||
| 67efff663e | |||
| 64f9654377 | |||
| 2da0029a41 | |||
| 9d5d1c57ac | |||
| 5db6da334d | |||
| eab153ee3f | |||
| b2212d357e | |||
| a5df216be9 | |||
| 1a2a7e2b9b | |||
| 42727bde11 | |||
| f59e396359 | |||
| c42dc29f73 | |||
| 628d8b98da | |||
| 209dae48a6 | |||
| fa7418929e | |||
| d7a70fdfdc | |||
| ec77731ff5 | |||
| 64d4990c99 | |||
| 0754b24aa7 | |||
| 32947bbd15 | |||
| d5490bd39d | |||
| aab9cfe951 | |||
| 15d6b9f35a | |||
| ccf628f0b1 | |||
| da8471673f | |||
| 62b26c5585 | |||
| e517be1bfb | |||
| afdf369104 | |||
| 8e750096cd | |||
| 7f79dff665 | |||
| 6e69dea45a | |||
| e46b7142c3 | |||
| aa6dbba8e2 | |||
| 66a554aeeb | |||
| 8cf8a4db2c | |||
| 1ad531d244 | |||
| f56402845b | |||
| 9fd4b470c8 | |||
| 5dea59f903 | |||
| 7514826803 |
@@ -1,4 +1,4 @@
|
||||
# This workflow will build a Java project with Maven
|
||||
# This workflow will build a Java project with Maven
|
||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
|
||||
|
||||
name: Java CI with Maven
|
||||
@@ -11,14 +11,28 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up JDK 1.8
|
||||
uses: actions/setup-java@v1
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
java-version: 1.8
|
||||
distribution: 'zulu'
|
||||
java-version: '8'
|
||||
cache: 'maven'
|
||||
- name: Build with Maven
|
||||
run: mvn -B clean install
|
||||
id: build
|
||||
run: |
|
||||
mvn -B clean package
|
||||
mkdir -p ~/artifacts
|
||||
cp "2006Scape Client/target/client-1.0-jar-with-dependencies.jar" ~/artifacts/Client.jar
|
||||
cp "2006Scape Server/target/server-1.0-jar-with-dependencies.jar" ~/artifacts/Server.jar
|
||||
cp "2006Scape Server/ServerConfig.Sample.json" ~/artifacts/ServerConfig.json
|
||||
cp SinglePlayer.bat ~/artifacts/
|
||||
cp -r "2006Scape Server/plugins" ~/artifacts/
|
||||
cp -r "2006Scape Server/data" ~/artifacts/
|
||||
- name: Publish build to GH Actions
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: ~/artifacts/*
|
||||
name: 2006Scape-SinglePlayer
|
||||
|
||||
@@ -2,49 +2,144 @@ import java.math.BigInteger;
|
||||
|
||||
/**
|
||||
* ClientSettings
|
||||
*
|
||||
* @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus)
|
||||
*/
|
||||
|
||||
public class ClientSettings {
|
||||
|
||||
/**
|
||||
* @QoL
|
||||
* Require control key to zoom the client
|
||||
*/
|
||||
public static boolean CONTROL_KEY_ZOOMING = false;
|
||||
|
||||
/**
|
||||
* @QoL
|
||||
* Show zoom level messages in chat when changing zoom levels
|
||||
*/
|
||||
public static boolean SHOW_ZOOM_LEVEL_MESSAGES = false;
|
||||
/**
|
||||
* @QoL
|
||||
* Hide roofs
|
||||
*/
|
||||
public static boolean HIDE_ROOFS = false;
|
||||
/**
|
||||
* @QoL
|
||||
* Hide buggy varrock sword shop snow
|
||||
*/
|
||||
public static boolean HIDE_BUGGY_VARROCK_SWORD_SHOP_SNOW = true;
|
||||
/**
|
||||
* @QoL
|
||||
* Forces Server-Wide Snow floor
|
||||
*/
|
||||
public static boolean SNOW_FLOOR_FORCE_ENABLED = false;
|
||||
/**
|
||||
* @QoL
|
||||
* Toggles Server-Wide Snow floor (for the designated month)
|
||||
*/
|
||||
public static boolean SNOW_FLOOR_ENABLED = true;
|
||||
/**
|
||||
* @QoL
|
||||
* Forces Server-Wide Snow overlay
|
||||
*/
|
||||
public static boolean SNOW_OVERLAY_FORCE_ENABLED = false;
|
||||
/**
|
||||
* @QoL
|
||||
* Toggles Server-Wide Snow overlay (for the designated month)
|
||||
*/
|
||||
public static boolean SNOW_OVERLAY_ENABLED = false;
|
||||
/**
|
||||
* @QoL
|
||||
* Enables Server-Wide Snow In The Designated Month
|
||||
*/
|
||||
public static String SNOW_MONTH = ".12";
|
||||
/**
|
||||
* The Servers Name
|
||||
*/
|
||||
public final static String SERVER_NAME = "2006Scape";
|
||||
/**
|
||||
* The Servers Website
|
||||
*/
|
||||
public final static String SERVER_WEBSITE = "www.2006Scape.org";
|
||||
/**
|
||||
* The Servers Ip
|
||||
* You don't have to change this, the client will automatically connect to the server
|
||||
* on localhost (Assuming you're running Client and LocalGame respectively)
|
||||
*/
|
||||
public static String SERVER_IP = "server.2006Scape.org";
|
||||
/**
|
||||
* The Servers World
|
||||
* This Determines The Port The Server Will Connect On
|
||||
* World 1 Will Connect On Port 43594
|
||||
* World 2 Will Connect On Port 43598
|
||||
*/
|
||||
public static int SERVER_WORLD = 1;
|
||||
/**
|
||||
* The Servers Name
|
||||
*/
|
||||
public final static String SERVER_NAME = "2006Scape";
|
||||
/**
|
||||
* The Servers Website
|
||||
*/
|
||||
public final static String SERVER_WEBSITE = "https://2006Scape.org/";
|
||||
/**
|
||||
* The Servers Ip
|
||||
* You don't have to change this, the client will automatically connect to the server
|
||||
* on localhost (Assuming you're running Client and LocalGame respectively)
|
||||
*/
|
||||
public static String SERVER_IP = "server.2006scape.org";
|
||||
/**
|
||||
* The Servers World
|
||||
* This Determines The Port The Server Will Connect On
|
||||
* World 1 Will Connect On Port 43594
|
||||
* World 2 Will Connect On Port 43598
|
||||
*/
|
||||
public static int SERVER_WORLD = 1;
|
||||
|
||||
/**
|
||||
* Enables/Disables FileServer CRC Checking For Cache Updates
|
||||
* FileServer Must Be Running Before Starting The Client If This Is True
|
||||
*/
|
||||
public static boolean CHECK_CRC = true;
|
||||
/**
|
||||
* @QoL
|
||||
* If false, the client will run the on demand fetcher based on SERVER_WORLD. If true it will
|
||||
* only connect to the server on world 1/Port 43594.
|
||||
*/
|
||||
public static boolean SINGLE_ONDEMAND = true;
|
||||
|
||||
public static boolean SHOW_NAVBAR = true;
|
||||
public static final String NAV_MAINMENU_LINK = SERVER_WEBSITE;
|
||||
public static final String NAV_WORLDMAP_LINK = SERVER_WEBSITE + "img/worldmap.jpg";
|
||||
public static final String NAV_MANUAL_LINK = SERVER_WEBSITE;
|
||||
public static final String NAV_RULES_LINK = SERVER_WEBSITE + "kbase/rules.php";
|
||||
|
||||
/**
|
||||
* @QoL
|
||||
* Enables A Custom Tab With Various QoL Changes
|
||||
*/
|
||||
public static boolean CUSTOM_SETTINGS_TAB = false;
|
||||
/**
|
||||
* @QoL
|
||||
* Enables Bilinear Minimap Filtering Which Smooths Out Lines And Sprites On The Minimap
|
||||
*/
|
||||
public static boolean BILINEAR_MINIMAP_FILTERING = false;
|
||||
/**
|
||||
* @QoL
|
||||
* fixes overlapping lines drawn on transparent objects by post-incrementing the offset
|
||||
* note: there's 2 other instances that haven't been updated in Texture.java (misnamed) because rarely used like this
|
||||
*/
|
||||
public static boolean FIX_TRANSPARENCY_OVERFLOW = false;
|
||||
/**
|
||||
* @QoL
|
||||
* render the game to 512px instead of 511px (black line on right side)
|
||||
*/
|
||||
public static boolean FULL_512PX_VIEWPORT = false;
|
||||
|
||||
/**
|
||||
* @QoL
|
||||
* Enables/Disables FileServer CRC Checking For Cache Updates
|
||||
* FileServer Must Be Running Before Starting The Client If This Is True
|
||||
*/
|
||||
public static boolean CHECK_CRC = true;
|
||||
|
||||
/**
|
||||
* @QoL
|
||||
* Enables the ability to take screenshots
|
||||
*/
|
||||
public static boolean SCREENSHOTS_ENABLED = false;
|
||||
|
||||
/**
|
||||
* @QoL
|
||||
* Enables the ability to take automatic screenshots on stats tab click and bank open
|
||||
* This is a poor man's player exports.
|
||||
*/
|
||||
public static boolean AUTOMATIC_SCREENSHOTS_ENABLED = false;
|
||||
|
||||
/**
|
||||
* The Npc Bits for the Server
|
||||
*/
|
||||
public final static int NPC_BITS = 12;
|
||||
/**
|
||||
* The Servers Uid
|
||||
*/
|
||||
public final static int UID = 314268572;
|
||||
|
||||
public static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443");
|
||||
public static final BigInteger RSA_EXPONENT = new BigInteger("65537");
|
||||
|
||||
/**
|
||||
* The Npc Bits for the Server
|
||||
*/
|
||||
public final static int NPC_BITS = 12;
|
||||
/**
|
||||
* The Servers Uid
|
||||
*/
|
||||
public final static int UID = 314268572;
|
||||
|
||||
public static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443");
|
||||
public static final BigInteger RSA_EXPONENT = new BigInteger("65537");
|
||||
}
|
||||
|
||||
@@ -16,7 +16,11 @@ public class DrawingArea extends NodeSub {
|
||||
topY = 0;
|
||||
bottomX = width;
|
||||
bottomY = height;
|
||||
centerX = bottomX - 1;
|
||||
if (ClientSettings.FULL_512PX_VIEWPORT) {
|
||||
centerX = bottomX;
|
||||
} else {
|
||||
centerX = bottomX - 1;
|
||||
}
|
||||
centerY = bottomX / 2;
|
||||
}
|
||||
|
||||
@@ -37,7 +41,11 @@ public class DrawingArea extends NodeSub {
|
||||
topY = l;
|
||||
bottomX = k;
|
||||
bottomY = i;
|
||||
centerX = bottomX - 1;
|
||||
if (ClientSettings.FULL_512PX_VIEWPORT) {
|
||||
centerX = bottomX;
|
||||
} else {
|
||||
centerX = bottomX - 1;
|
||||
}
|
||||
centerY = bottomX / 2;
|
||||
anInt1387 = bottomY / 2;
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ public final class Flo {
|
||||
} else if (i == 1) {
|
||||
anInt390 = stream.read3Bytes();
|
||||
Calendar date = new GregorianCalendar();
|
||||
if ((date.get(Calendar.MONTH) + 1) == 12) {
|
||||
if (ClientSettings.SNOW_FLOOR_FORCE_ENABLED || (ClientSettings.SNOW_FLOOR_ENABLED && (date.get(Calendar.MONTH) + 1) == Integer.parseInt(ClientSettings.SNOW_MONTH.substring(1)))) {
|
||||
anInt390 = 0xffffff;
|
||||
}
|
||||
method262(anInt390);
|
||||
|
||||
@@ -3,12 +3,14 @@
|
||||
* THIS IS TO ALLOW LOCAL PARABOT TO CONTINUE TO WORK
|
||||
*/
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.swing.*;
|
||||
import java.applet.AppletContext;
|
||||
import java.awt.*;
|
||||
import java.awt.datatransfer.*;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseWheelEvent;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.EOFException;
|
||||
@@ -23,6 +25,7 @@ import java.net.URL;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.zip.CRC32;
|
||||
@@ -1808,7 +1811,7 @@ public class Game extends RSApplet {
|
||||
invBack.method361(0, 0);
|
||||
if (invOverlayInterfaceID == -1) {
|
||||
if (tabInterfaceIDs[tabID] != -1) {
|
||||
if (tabID == 7) {
|
||||
if (tabID == 7 && ClientSettings.CUSTOM_SETTINGS_TAB) {
|
||||
try {
|
||||
int centerX = 95;
|
||||
int currentY = 10;
|
||||
@@ -1830,10 +1833,13 @@ public class Game extends RSApplet {
|
||||
aTextDrawingArea_1271.textCenterShadow(Color.WHITE.hashCode(), centerX, WorldController.drawDistance + " tiles", currentY + textBottom, true);
|
||||
|
||||
drawButton(customSettingShowExperiencePerHour, centerX - 73, currentY += 40, 146);
|
||||
aTextDrawingArea_1271.textCenterShadow(customSettingShowExperiencePerHour ? Color.YELLOW.hashCode() : Color.YELLOW.hashCode(), centerX, "show exp info", currentY + textMiddle, true);
|
||||
aTextDrawingArea_1271.textCenterShadow(Color.YELLOW.hashCode(), centerX, "show exp info", currentY + textMiddle, true);
|
||||
|
||||
drawButton(showInfo, centerX - 73, currentY += 40, 146);
|
||||
aTextDrawingArea_1271.textCenterShadow(showInfo ? Color.YELLOW.hashCode() : Color.YELLOW.hashCode(), centerX, "show debug info", currentY + textMiddle, true);
|
||||
aTextDrawingArea_1271.textCenterShadow(Color.YELLOW.hashCode(), centerX, "show debug info", currentY + textMiddle, true);
|
||||
|
||||
drawButton(customSettingVisualFixes, centerX - 73, currentY += 40, 146);
|
||||
aTextDrawingArea_1271.textCenterShadow(Color.YELLOW.hashCode(), centerX, "visual fixes", currentY + textMiddle, true);
|
||||
} catch (Exception e) { }
|
||||
}
|
||||
}
|
||||
@@ -2972,7 +2978,11 @@ public class Game extends RSApplet {
|
||||
if (anInt1011 > 0) {
|
||||
anInt1011--;
|
||||
}
|
||||
for (int j = 0; j < 5; j++) {
|
||||
//TODO: Technically, this loop should be < 5 for authenticity, but until we reduce server inefficiencies
|
||||
//(for example killing a bunch of cows results in client lag,
|
||||
//likely from all the items on the ground for example), < 100 is fine.
|
||||
//OSRS uses < 100 and there are no drawbacks from having this < 100.
|
||||
for (int j = 0; j < 100; j++) {
|
||||
if (!parsePacket()) {
|
||||
break;
|
||||
}
|
||||
@@ -3755,7 +3765,7 @@ public class Game extends RSApplet {
|
||||
worldController.method312(k - 4, j - 4);
|
||||
}
|
||||
}
|
||||
if (l == 1062) {
|
||||
if (l == 1062) { //Fifth click
|
||||
anInt924 += baseX;
|
||||
if (anInt924 >= 113) {
|
||||
stream.createFrame(183);
|
||||
@@ -4672,7 +4682,10 @@ public class Game extends RSApplet {
|
||||
mouseDetection.running = false;
|
||||
}
|
||||
mouseDetection = null;
|
||||
onDemandFetcher.disable();
|
||||
if (onDemandFetcher != null) {
|
||||
// prevent an exception if the client hasn't connected but tries to close the client, so it will actually close
|
||||
onDemandFetcher.disable();
|
||||
}
|
||||
onDemandFetcher = null;
|
||||
aStream_834 = null;
|
||||
stream = null;
|
||||
@@ -4813,9 +4826,6 @@ public class Game extends RSApplet {
|
||||
Component getGameComponent() {
|
||||
if (Signlink.mainapp != null) {
|
||||
return Signlink.mainapp;
|
||||
}
|
||||
if (super.gameFrame != null) {
|
||||
return super.gameFrame;
|
||||
} else {
|
||||
return this;
|
||||
}
|
||||
@@ -5031,6 +5041,10 @@ public class Game extends RSApplet {
|
||||
if (inputString.equals("::gfxtgl") || inputString.equals("::tglgfx") || inputString.equals("::togglerender") || inputString.equals("::togglegfx")) {
|
||||
graphicsEnabled = !graphicsEnabled;
|
||||
}
|
||||
if (inputString.equals("::crtlkeyzoom") || inputString.equals("::controlkeyzoom")) {
|
||||
ClientSettings.CONTROL_KEY_ZOOMING = !ClientSettings.CONTROL_KEY_ZOOMING;
|
||||
pushMessage("Your control key zooming is now: " + (ClientSettings.CONTROL_KEY_ZOOMING ? "enabled" : "disabled"), 0, "");
|
||||
}
|
||||
if (myPrivilege >= 2) {
|
||||
if (inputString.equals("::noclip"))
|
||||
for (int k1 = 0; k1 < 4; k1++)
|
||||
@@ -5576,7 +5590,51 @@ public class Game extends RSApplet {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void screenshot(boolean sendMessage, String... subfolders) {
|
||||
try {
|
||||
Window window = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusedWindow();
|
||||
if (window == null) {
|
||||
return;
|
||||
}
|
||||
Point point = window.getLocationOnScreen();
|
||||
int x = (int) point.getX();
|
||||
int y = (int) point.getY();
|
||||
int w = window.getWidth();
|
||||
int h = window.getHeight();
|
||||
Robot robot = new Robot(window.getGraphicsConfiguration().getDevice());
|
||||
Rectangle captureSize = new Rectangle(x, y, w, h);
|
||||
BufferedImage bufferedimage = robot.createScreenCapture(captureSize);
|
||||
|
||||
// Format the current date and time
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd-HH_mm_ss");
|
||||
String dateTime = dateFormat.format(new Date());
|
||||
|
||||
// Update the file path and naming
|
||||
String fileExtension = myUsername != null && !myUsername.isEmpty() ? myUsername : ClientSettings.SERVER_NAME;
|
||||
|
||||
String subfolderPath = String.join(File.separator, subfolders);
|
||||
if (!subfolderPath.isEmpty()) {
|
||||
subfolderPath += File.separator;
|
||||
}
|
||||
|
||||
String screenshotDir = System.getProperty("user.home") + File.separatorChar + ClientSettings.SERVER_NAME + File.separatorChar + "screenshots" + File.separatorChar + subfolderPath;
|
||||
File dir = new File(screenshotDir);
|
||||
if (!dir.exists()) {
|
||||
dir.mkdirs(); // Create the directory if it doesn't exist
|
||||
}
|
||||
|
||||
File file = new File(screenshotDir, fileExtension + "_" + dateTime + ".png");
|
||||
|
||||
if (!file.exists()) {
|
||||
ImageIO.write(bufferedimage, "png", file);
|
||||
if (sendMessage) {
|
||||
pushMessage("A picture has been saved in your screenshots folder.", 0, "");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
public void pushMessage(String s, int i, String s1) {
|
||||
if (i == 0 && dialogID != -1) {
|
||||
aString844 = s;
|
||||
@@ -5607,12 +5665,13 @@ public class Game extends RSApplet {
|
||||
}
|
||||
|
||||
int customTabAction = 0;
|
||||
boolean customSettingVisiblePlayerNames = true;
|
||||
int customSettingMinItemValue = 1000;
|
||||
static boolean customSettingVisiblePlayerNames = false;
|
||||
static int customSettingMinItemValue = Integer.MAX_VALUE;
|
||||
boolean customSettingShowExperiencePerHour = false;
|
||||
long customSettingShowExperiencePerHourStartExp = 0;
|
||||
long customSettingShowExperiencePerHourStart = System.currentTimeMillis();
|
||||
int customSettingShowExperiencePerHourStartLevels = 0;
|
||||
boolean customSettingVisualFixes = true;
|
||||
|
||||
public void processTabClick() {
|
||||
if (super.clickMode3 == 1) {
|
||||
@@ -5625,6 +5684,16 @@ public class Game extends RSApplet {
|
||||
needDrawTabArea = true;
|
||||
tabID = 1;
|
||||
tabAreaAltered = true;
|
||||
if(ClientSettings.SCREENSHOTS_ENABLED && ClientSettings.AUTOMATIC_SCREENSHOTS_ENABLED) {
|
||||
java.util.Timer timer = new java.util.Timer();
|
||||
java.util.TimerTask delayedScreenshot = new java.util.TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
screenshot(false, "stats");
|
||||
}
|
||||
};
|
||||
timer.schedule(delayedScreenshot, 300);
|
||||
}
|
||||
}
|
||||
if (super.saveClickX >= 597 && super.saveClickX <= 627 && super.saveClickY >= 168 && super.saveClickY < 205 && tabInterfaceIDs[2] != -1) {
|
||||
needDrawTabArea = true;
|
||||
@@ -5651,7 +5720,7 @@ public class Game extends RSApplet {
|
||||
tabID = 6;
|
||||
tabAreaAltered = true;
|
||||
}
|
||||
if (super.saveClickX >= 540 && super.saveClickX <= 574 && super.saveClickY >= 466 && super.saveClickY < 502 && tabInterfaceIDs[7] != -1) {
|
||||
if (super.saveClickX >= 540 && super.saveClickX <= 574 && super.saveClickY >= 466 && super.saveClickY < 502 && tabInterfaceIDs[7] != -1 && ClientSettings.CUSTOM_SETTINGS_TAB) {
|
||||
/* Unused tab bottom left */
|
||||
needDrawTabArea = true;
|
||||
tabID = 7;
|
||||
@@ -5690,7 +5759,7 @@ public class Game extends RSApplet {
|
||||
if (invOverlayInterfaceID == -1) {
|
||||
if (tabInterfaceIDs[tabID] != -1) {
|
||||
// Handle our custom tab
|
||||
if (tabID == 7 && super.saveClickX >= 575 && super.saveClickX <= 720 && super.saveClickY >= 210 && super.saveClickY <= 465) {
|
||||
if (tabID == 7 && ClientSettings.CUSTOM_SETTINGS_TAB && super.saveClickX >= 575 && super.saveClickX <= 720 && super.saveClickY >= 210 && super.saveClickY <= 465) {
|
||||
int startY = 217 + 3;
|
||||
if (super.saveClickY >= startY && super.saveClickY <= (startY + 30)) {
|
||||
customSettingVisiblePlayerNames = !customSettingVisiblePlayerNames;
|
||||
@@ -5724,6 +5793,13 @@ public class Game extends RSApplet {
|
||||
if (super.saveClickY >= startY && super.saveClickY <= (startY + 30)) {
|
||||
showInfo= !showInfo;
|
||||
}
|
||||
startY += 40;
|
||||
if (super.saveClickY >= startY && super.saveClickY <= (startY + 30)) {
|
||||
customSettingVisualFixes = !customSettingVisualFixes;
|
||||
ClientSettings.BILINEAR_MINIMAP_FILTERING = !ClientSettings.BILINEAR_MINIMAP_FILTERING;
|
||||
ClientSettings.FIX_TRANSPARENCY_OVERFLOW = !ClientSettings.FIX_TRANSPARENCY_OVERFLOW;
|
||||
ClientSettings.FULL_512PX_VIEWPORT = !ClientSettings.FULL_512PX_VIEWPORT;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6144,7 +6220,7 @@ public class Game extends RSApplet {
|
||||
return;
|
||||
}
|
||||
if (k == 11) {
|
||||
loginMessage2 = "Login server rejected session.";
|
||||
loginMessage1 = "Login server rejected session.";
|
||||
loginMessage2 = "Please try again.";
|
||||
return;
|
||||
}
|
||||
@@ -7971,7 +8047,7 @@ public class Game extends RSApplet {
|
||||
backBase2.method361(0, 0);
|
||||
if (invOverlayInterfaceID == -1) {
|
||||
if (tabInterfaceIDs[tabID] != -1) {
|
||||
if (tabID == 7) {
|
||||
if (tabID == 7 && ClientSettings.CUSTOM_SETTINGS_TAB) {
|
||||
redStone1_3.method361(42, 0);
|
||||
}
|
||||
if (tabID == 8) {
|
||||
@@ -7993,7 +8069,7 @@ public class Game extends RSApplet {
|
||||
redStone1_4.method361(229, 0);
|
||||
}
|
||||
}
|
||||
if (tabInterfaceIDs[7] != -1 && (anInt1054 != 7 || loopCycle % 20 < 10)) {
|
||||
if (tabInterfaceIDs[7] != -1 && (anInt1054 != 7 || loopCycle % 20 < 10) && ClientSettings.CUSTOM_SETTINGS_TAB) {
|
||||
sideIcons[10].method361(47, 2);
|
||||
}
|
||||
if (tabInterfaceIDs[8] != -1 && (anInt1054 != 8 || loopCycle % 20 < 10)) {
|
||||
@@ -9031,7 +9107,14 @@ public class Game extends RSApplet {
|
||||
return;
|
||||
}
|
||||
if (k == 3) {
|
||||
boolean debugPlanes = false;
|
||||
if (debugPlanes) {
|
||||
System.out.println("plane is " + plane);
|
||||
}
|
||||
plane = stream.readBits(2);
|
||||
if (debugPlanes) {
|
||||
System.out.println("plane is now " + plane);
|
||||
}
|
||||
int j1 = stream.readBits(1);
|
||||
int i2 = stream.readBits(1);
|
||||
if (i2 == 1) {
|
||||
@@ -9040,6 +9123,15 @@ public class Game extends RSApplet {
|
||||
int k2 = stream.readBits(7);
|
||||
int l2 = stream.readBits(7);
|
||||
myPlayer.setPos(l2, k2, j1 == 1);
|
||||
//Handle plane changes, higher planes need the roof drawing checks disabled, and we need to manually update ObjectManager's anInt131 (plane) then manually call method22 to let the ObjectManaegr know we're on a different plane. This makes plane changes draw properly. Coords for testing this: lumb: 3207 3227 and varrock: 3209, 3392 and gnome agil: 2474, 3427
|
||||
ObjectManager.hideRoofs = ClientSettings.HIDE_ROOFS;
|
||||
ObjectManager.hideBuggyVarrockSwordShopSnow = ClientSettings.HIDE_BUGGY_VARROCK_SWORD_SHOP_SNOW;
|
||||
if (plane > 0) {
|
||||
ObjectManager.hideRoofs = false;
|
||||
ObjectManager.hideBuggyVarrockSwordShopSnow = false;
|
||||
}
|
||||
ObjectManager.anInt131 = plane;
|
||||
method22();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11236,6 +11328,16 @@ public class Game extends RSApplet {
|
||||
tabAreaAltered = true;
|
||||
aBoolean1149 = false;
|
||||
pktType = -1;
|
||||
if (ClientSettings.SCREENSHOTS_ENABLED && ClientSettings.AUTOMATIC_SCREENSHOTS_ENABLED && i5 == 5292) {
|
||||
java.util.Timer timer = new java.util.Timer();
|
||||
java.util.TimerTask delayedScreenshot = new java.util.TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
screenshot(false, "bank");
|
||||
}
|
||||
};
|
||||
timer.schedule(delayedScreenshot, 600);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (pktType == 79) {
|
||||
@@ -11560,7 +11662,7 @@ public class Game extends RSApplet {
|
||||
// 15774 = Good/Bad Password
|
||||
// 15767 = Drama Type
|
||||
if (l7 == 15244) {
|
||||
if (Flo.getTodaysDate().contains(ClientSettings.SNOW_MONTH)) {
|
||||
if (ClientSettings.SNOW_OVERLAY_FORCE_ENABLED || (ClientSettings.SNOW_OVERLAY_ENABLED && Flo.getTodaysDate().contains(ClientSettings.SNOW_MONTH))) {
|
||||
openInterfaceID = 15819;
|
||||
} else {
|
||||
openInterfaceID = 15801;
|
||||
@@ -11803,8 +11905,8 @@ public class Game extends RSApplet {
|
||||
draw3dScreen();
|
||||
if (showInfo) {
|
||||
int debugX = 0;
|
||||
int debugY = 249;
|
||||
int debugItems = 4;
|
||||
int debugY = 234;
|
||||
int debugItems = 5;
|
||||
int debugWidth = 140;
|
||||
int debugHeight = 25 + (debugItems * 15);
|
||||
int fill = 0x5d5447;
|
||||
@@ -11831,6 +11933,8 @@ public class Game extends RSApplet {
|
||||
chatTextDrawingArea.textRightShadow(true, debugX + debugWidth - 4, Color.YELLOW.hashCode(), (myPlayer.smallX[0] + baseX) + ", " + (myPlayer.smallY[0] + baseY), debugY);
|
||||
chatTextDrawingArea.textLeftShadow(true, debugX + 4, Color.WHITE.hashCode(), "Interface:", debugY += 15);
|
||||
chatTextDrawingArea.textRightShadow(true, debugX + debugWidth - 4, Color.YELLOW.hashCode(), "" + openInterfaceID, debugY);
|
||||
chatTextDrawingArea.textLeftShadow(true, debugX + 4, Color.WHITE.hashCode(), "Zoom level:", debugY += 15);
|
||||
chatTextDrawingArea.textRightShadow(true, debugX + debugWidth - 4, Color.YELLOW.hashCode(), "" + zoom, debugY);
|
||||
}
|
||||
|
||||
if (customSettingShowExperiencePerHour) {
|
||||
@@ -12608,12 +12712,20 @@ public class Game extends RSApplet {
|
||||
tabAreaAltered = true;
|
||||
break;
|
||||
case KeyEvent.VK_PAGE_UP:
|
||||
if (zoom > -1)
|
||||
if (zoom > -1) {
|
||||
zoom--;
|
||||
if (ClientSettings.SHOW_ZOOM_LEVEL_MESSAGES) {
|
||||
pushMessage("Your zoom level is now: " + zoom, 0, "");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KeyEvent.VK_PAGE_DOWN:
|
||||
if (zoom < (WorldController.drawDistance / 3))
|
||||
if (zoom < (WorldController.drawDistance / 3)) {
|
||||
zoom++;
|
||||
if (ClientSettings.SHOW_ZOOM_LEVEL_MESSAGES) {
|
||||
pushMessage("Your zoom level is now: " + zoom, 0, "");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KeyEvent.VK_V:
|
||||
if (keyevent.isControlDown()) {
|
||||
@@ -12625,6 +12737,9 @@ public class Game extends RSApplet {
|
||||
}
|
||||
|
||||
}
|
||||
if (ClientSettings.SCREENSHOTS_ENABLED && keyevent.getKeyCode() == KeyEvent.VK_PRINTSCREEN && keyevent.isControlDown()) {
|
||||
screenshot(true);
|
||||
}
|
||||
}
|
||||
|
||||
public long calculateTotalExp() {
|
||||
@@ -12772,7 +12887,7 @@ public class Game extends RSApplet {
|
||||
inputTaken = true;
|
||||
}
|
||||
if (interfaceID == 15244) {
|
||||
if (Flo.getTodaysDate().contains(ClientSettings.SNOW_MONTH)) {
|
||||
if (ClientSettings.SNOW_OVERLAY_FORCE_ENABLED || (ClientSettings.SNOW_OVERLAY_ENABLED && Flo.getTodaysDate().contains(ClientSettings.SNOW_MONTH))) {
|
||||
openInterfaceID = 15819;
|
||||
} else {
|
||||
openInterfaceID = 15801;
|
||||
@@ -12795,14 +12910,25 @@ public class Game extends RSApplet {
|
||||
|
||||
public final void mouseWheelMoved(MouseWheelEvent e) {
|
||||
int notches = e.getWheelRotation();
|
||||
if (ClientSettings.CONTROL_KEY_ZOOMING && !e.isControlDown()) {
|
||||
return;
|
||||
}
|
||||
// If mouse over main game screen, without anything else opened
|
||||
if (openInterfaceID == -1 && mouseX < 515 && mouseY < 340) {
|
||||
if (notches < 0) {
|
||||
if (zoom > -1)
|
||||
if (zoom > -1) {
|
||||
zoom--;
|
||||
if (ClientSettings.SHOW_ZOOM_LEVEL_MESSAGES) {
|
||||
pushMessage("Your zoom level is now: " + zoom, 0, "");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (zoom < (WorldController.drawDistance / 3))
|
||||
if (zoom < (WorldController.drawDistance / 3)) {
|
||||
zoom++;
|
||||
if (ClientSettings.SHOW_ZOOM_LEVEL_MESSAGES) {
|
||||
pushMessage("Your zoom level is now: " + zoom, 0, "");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ public final class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
// Process server/ip address to connect to
|
||||
// Process client arguments to connect to
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
switch(args[i]) {
|
||||
case "-dev" :
|
||||
@@ -26,6 +26,42 @@ public final class Main {
|
||||
case "-no-cache-crc":
|
||||
ClientSettings.CHECK_CRC = false;
|
||||
break;
|
||||
case "-qol":
|
||||
case "-fixes":
|
||||
ClientSettings.CUSTOM_SETTINGS_TAB = true;
|
||||
ClientSettings.BILINEAR_MINIMAP_FILTERING = true;
|
||||
ClientSettings.FIX_TRANSPARENCY_OVERFLOW = true;
|
||||
ClientSettings.FULL_512PX_VIEWPORT = true;
|
||||
ClientSettings.CONTROL_KEY_ZOOMING = true;
|
||||
break;
|
||||
case "-no-nav":
|
||||
case "-disable-nav":
|
||||
ClientSettings.SHOW_NAVBAR = false;
|
||||
break;
|
||||
case"-no-snow":
|
||||
case"-hide-snow":
|
||||
case"-disable-snow":
|
||||
ClientSettings.SNOW_FLOOR_ENABLED = false;
|
||||
ClientSettings.SNOW_FLOOR_FORCE_ENABLED = false;
|
||||
ClientSettings.SNOW_OVERLAY_FORCE_ENABLED = false;
|
||||
ClientSettings.SNOW_OVERLAY_ENABLED = false;
|
||||
break;
|
||||
case"-no-roofs":
|
||||
case"-hide-roofs":
|
||||
case"-disable-roofs":
|
||||
ClientSettings.HIDE_ROOFS = true;
|
||||
break;
|
||||
case"-show-zoom":
|
||||
ClientSettings.SHOW_ZOOM_LEVEL_MESSAGES = true;
|
||||
break;
|
||||
case"-screenshots":
|
||||
case"-enable-screenshots":
|
||||
ClientSettings.SCREENSHOTS_ENABLED = true;
|
||||
break;
|
||||
case"-auto-screenshots":
|
||||
case"-enable-auto-screenshots":
|
||||
ClientSettings.AUTOMATIC_SCREENSHOTS_ENABLED = true;
|
||||
break;
|
||||
}
|
||||
if (args[i].startsWith("-") && (i + 1) < args.length && !args[i + 1].startsWith("-")) {
|
||||
switch(args[i]) {
|
||||
|
||||
@@ -146,7 +146,7 @@ final class ObjectManager {
|
||||
k15 -= anIntArray127[k18];
|
||||
k16 -= anIntArray128[k18];
|
||||
}
|
||||
if (k17 >= 1 && k17 < anInt147 - 1 && (!lowMem || (aByteArrayArrayArray149[0][l6][k17] & 2) != 0 || (aByteArrayArrayArray149[l][l6][k17] & 0x10) == 0 && method182(k17, l, l6) == anInt131)) {
|
||||
if (k17 >= 1 && k17 < anInt147 - 1 && ((!hideBuggyVarrockSwordShopSnow && !hideRoofs && !lowMem) || (aByteArrayArrayArray149[0][l6][k17] & 2) != 0 || (aByteArrayArrayArray149[l][l6][k17] & 0x10) == 0 && method182(k17, l, l6) == anInt131)) {
|
||||
if (l < anInt145) {
|
||||
anInt145 = l;
|
||||
}
|
||||
@@ -456,7 +456,7 @@ final class ObjectManager {
|
||||
}
|
||||
|
||||
private void method175(int i, WorldController worldController, CollisionMap class11, int j, int k, int l, int i1, int j1) {
|
||||
if (lowMem && (aByteArrayArrayArray149[0][l][i] & 2) == 0) {
|
||||
if ((hideRoofs || lowMem) && (aByteArrayArrayArray149[0][l][i] & 2) == 0) {
|
||||
if ((aByteArrayArrayArray149[k][l][i] & 0x10) != 0) {
|
||||
return;
|
||||
}
|
||||
@@ -1355,6 +1355,10 @@ final class ObjectManager {
|
||||
private final byte[][][] aByteArrayArrayArray148;
|
||||
private final byte[][][] aByteArrayArrayArray149;
|
||||
static boolean lowMem = true;
|
||||
|
||||
static boolean hideRoofs = ClientSettings.HIDE_ROOFS;
|
||||
|
||||
static boolean hideBuggyVarrockSwordShopSnow = ClientSettings.HIDE_BUGGY_VARROCK_SWORD_SHOP_SNOW; //There is some buggy snow near Varrock sword shop, let's hide it. I know, this is not ideal, but it does work.
|
||||
private static final int anIntArray152[] = {1, 2, 4, 8};
|
||||
|
||||
}
|
||||
|
||||
@@ -235,7 +235,7 @@ public final class OnDemandFetcher extends OnDemandFetcherParent implements Runn
|
||||
return;
|
||||
}
|
||||
openSocketTime = l;
|
||||
socket = clientInstance.openSocket(43596 + Game.portOff);
|
||||
socket = clientInstance.openSocket((ClientSettings.SINGLE_ONDEMAND || ClientSettings.SERVER_WORLD == 1) ? 43594 : 43596 + ClientSettings.SERVER_WORLD + Game.portOff);
|
||||
inputStream = socket.getInputStream();
|
||||
outputStream = socket.getOutputStream();
|
||||
outputStream.write(15);
|
||||
|
||||
@@ -5,17 +5,10 @@
|
||||
import javax.swing.*;
|
||||
import java.applet.Applet;
|
||||
import java.awt.*;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.FocusListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.KeyListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.awt.event.MouseWheelEvent;
|
||||
import java.awt.event.MouseWheelListener;
|
||||
import java.awt.event.MouseMotionListener;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.awt.event.WindowListener;
|
||||
import java.awt.event.*;
|
||||
import java.awt.font.TextAttribute;
|
||||
import java.net.URI;
|
||||
import java.util.Map;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class RSApplet extends Applet implements Runnable, MouseListener, MouseWheelListener, MouseMotionListener, KeyListener, FocusListener, WindowListener {
|
||||
@@ -29,10 +22,209 @@ public class RSApplet extends Applet implements Runnable, MouseListener, MouseWh
|
||||
final void createClientFrame(int i, int j) {
|
||||
myWidth = j;
|
||||
myHeight = i;
|
||||
gameFrame = new RSFrame(this, myWidth, myHeight);
|
||||
this.setPreferredSize(new Dimension(this.myWidth, this.myHeight));
|
||||
|
||||
gameFrame = new RSFrame(this);
|
||||
graphics = getGameComponent().getGraphics();
|
||||
fullGameScreen = new RSImageProducer(myWidth, myHeight, getGameComponent());
|
||||
|
||||
if (ClientSettings.SHOW_NAVBAR) {
|
||||
try {
|
||||
java.awt.Font arial = new java.awt.Font("Arial", java.awt.Font.PLAIN, 11);
|
||||
Map attributes = arial.getAttributes();
|
||||
attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
|
||||
|
||||
JLayeredPane layers = new JLayeredPane();
|
||||
layers.setPreferredSize(new Dimension(765, 25));
|
||||
|
||||
ImageIcon backgroundImg = new ImageIcon(this.getClass().getResource("navbar.gif"));
|
||||
ImageIcon menuImg = new ImageIcon(this.getClass().getResource("navbar_mainmenu.gif"));
|
||||
ImageIcon companyImg = new ImageIcon(this.getClass().getResource("navbar_jagex.gif"));
|
||||
ImageIcon worldmapImg = new ImageIcon(this.getClass().getResource("navbar_worldmap.gif"));
|
||||
ImageIcon manualImg = new ImageIcon(this.getClass().getResource("navbar_manual.gif"));
|
||||
ImageIcon rulesImg = new ImageIcon(this.getClass().getResource("navbar_rules.gif"));
|
||||
|
||||
// set up containers
|
||||
JLabel background = new JLabel(backgroundImg);
|
||||
background.setBounds(0, 0, backgroundImg.getIconWidth(), backgroundImg.getIconHeight());
|
||||
|
||||
JLabel company = new JLabel(companyImg);
|
||||
company.setBounds(5, 0, companyImg.getIconWidth(), companyImg.getIconHeight());
|
||||
|
||||
JLabel mainMenu = new JLabel(menuImg);
|
||||
mainMenu.setBounds(126, 0, menuImg.getIconWidth(), menuImg.getIconHeight());
|
||||
mainMenu.addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
try {
|
||||
Desktop.getDesktop().browse(URI.create(ClientSettings.NAV_MAINMENU_LINK));
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
JLabel mainMenuText = new JLabel();
|
||||
mainMenuText.setForeground(Color.WHITE);
|
||||
mainMenuText.setFont(arial.deriveFont(attributes));
|
||||
mainMenuText.setBounds(126 + menuImg.getIconWidth() + 4, 0, 75, 25);
|
||||
mainMenuText.setText("Main Menu");
|
||||
mainMenuText.addMouseListener(mainMenu.getMouseListeners()[0]);
|
||||
mainMenuText.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
mainMenuText.setForeground(Color.LIGHT_GRAY);
|
||||
mainMenuText.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
mainMenuText.setForeground(Color.WHITE);
|
||||
mainMenuText.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
||||
}
|
||||
});
|
||||
|
||||
JLabel worldSelect = new JLabel(menuImg);
|
||||
worldSelect.setBounds(250, 0, menuImg.getIconWidth(), menuImg.getIconHeight());
|
||||
worldSelect.addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
// TODO: world select popup? redirect to launcher?
|
||||
}
|
||||
});
|
||||
JLabel worldSelectText = new JLabel();
|
||||
worldSelectText.setForeground(Color.WHITE);
|
||||
worldSelectText.setFont(arial.deriveFont(attributes));
|
||||
worldSelectText.setBounds(250 + menuImg.getIconWidth() + 4, 0, 75, 25);
|
||||
worldSelectText.setText("World Select");
|
||||
worldSelectText.addMouseListener(worldSelect.getMouseListeners()[0]);
|
||||
worldSelectText.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
worldSelectText.setForeground(Color.LIGHT_GRAY);
|
||||
worldSelectText.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
worldSelectText.setForeground(Color.WHITE);
|
||||
worldSelectText.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
||||
}
|
||||
});
|
||||
|
||||
JLabel worldmap = new JLabel(worldmapImg);
|
||||
worldmap.setBounds(387, 0, worldmapImg.getIconWidth(), worldmapImg.getIconHeight());
|
||||
worldmap.addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
try {
|
||||
Desktop.getDesktop().browse(URI.create(ClientSettings.NAV_WORLDMAP_LINK));
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
JLabel worldmapText = new JLabel();
|
||||
worldmapText.setForeground(Color.WHITE);
|
||||
worldmapText.setFont(arial.deriveFont(attributes));
|
||||
worldmapText.setBounds(387 + worldmapImg.getIconWidth() + 4, 0, 75, 25);
|
||||
worldmapText.setText("World Map");
|
||||
worldmapText.addMouseListener(worldmap.getMouseListeners()[0]);
|
||||
worldmapText.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
worldmapText.setForeground(Color.LIGHT_GRAY);
|
||||
worldmapText.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
worldmapText.setForeground(Color.WHITE);
|
||||
worldmapText.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
||||
}
|
||||
});
|
||||
|
||||
JLabel manual = new JLabel(manualImg);
|
||||
manual.setBounds(520, 0, manualImg.getIconWidth(), manualImg.getIconHeight());
|
||||
manual.addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
try {
|
||||
Desktop.getDesktop().browse(URI.create(ClientSettings.NAV_MANUAL_LINK));
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
JLabel manualText = new JLabel();
|
||||
manualText.setForeground(Color.WHITE);
|
||||
manualText.setFont(arial.deriveFont(attributes));
|
||||
manualText.setBounds(520 + manualImg.getIconWidth() + 4, 0, 50, 25);
|
||||
manualText.setText("Manual");
|
||||
manualText.addMouseListener(manual.getMouseListeners()[0]);
|
||||
manualText.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
manualText.setForeground(Color.LIGHT_GRAY);
|
||||
manualText.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
manualText.setForeground(Color.WHITE);
|
||||
manualText.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
||||
}
|
||||
});
|
||||
|
||||
JLabel rules = new JLabel(rulesImg);
|
||||
rules.setBounds(636, 0, rulesImg.getIconWidth(), rulesImg.getIconHeight());
|
||||
rules.addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
try {
|
||||
Desktop.getDesktop().browse(URI.create(ClientSettings.NAV_RULES_LINK));
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
JLabel rulesText = new JLabel();
|
||||
rulesText.setForeground(Color.WHITE);
|
||||
rulesText.setFont(arial.deriveFont(attributes));
|
||||
rulesText.setBounds(636 + rulesImg.getIconWidth() + 4, 0, 100, 25);
|
||||
rulesText.setText("Rules & Security");
|
||||
rulesText.addMouseListener(rules.getMouseListeners()[0]);
|
||||
rulesText.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
rulesText.setForeground(Color.LIGHT_GRAY);
|
||||
rulesText.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
rulesText.setForeground(Color.WHITE);
|
||||
rulesText.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
||||
}
|
||||
});
|
||||
|
||||
// layer images
|
||||
layers.add(background, 0);
|
||||
layers.add(company, 0);
|
||||
layers.add(mainMenu, 0);
|
||||
layers.add(mainMenuText, 0);
|
||||
layers.add(worldSelect, 0);
|
||||
layers.add(worldSelectText, 0);
|
||||
layers.add(worldmap, 0);
|
||||
layers.add(worldmapText, 0);
|
||||
layers.add(manual, 0);
|
||||
layers.add(manualText, 0);
|
||||
layers.add(rules, 0);
|
||||
layers.add(rulesText, 0);
|
||||
gameFrame.add(layers, BorderLayout.NORTH);
|
||||
gameFrame.pack();
|
||||
gameFrame.setLocationRelativeTo(null); // re-center based on the new size
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
startRunnable(this, 1);
|
||||
this.requestFocus();
|
||||
}
|
||||
|
||||
final void initClientFrame(int i, int j) {
|
||||
@@ -183,7 +375,7 @@ public class RSApplet extends Applet implements Runnable, MouseListener, MouseWh
|
||||
public final void destroy() {
|
||||
anInt4 = -1;
|
||||
try {
|
||||
Thread.sleep(5000L);
|
||||
Thread.sleep(1000L);
|
||||
} catch (Exception _ex) {
|
||||
}
|
||||
if (anInt4 == -1) {
|
||||
@@ -215,10 +407,6 @@ public class RSApplet extends Applet implements Runnable, MouseListener, MouseWh
|
||||
public final void mousePressed(MouseEvent mouseevent) {
|
||||
int i = mouseevent.getX();
|
||||
int j = mouseevent.getY();
|
||||
if (gameFrame != null) {
|
||||
i -= 4;
|
||||
j -= 22;
|
||||
}
|
||||
idleTime = 0;
|
||||
clickX = i;
|
||||
clickY = j;
|
||||
@@ -265,11 +453,6 @@ public class RSApplet extends Applet implements Runnable, MouseListener, MouseWh
|
||||
public final void mouseDragged(MouseEvent e) {
|
||||
int x = e.getX();
|
||||
int y = e.getY();
|
||||
if(gameFrame != null) {
|
||||
Insets insets = gameFrame.getInsets();
|
||||
x -= insets.left;//4
|
||||
y -= insets.top;//22
|
||||
}
|
||||
if (mouseWheelDown) {
|
||||
y = mouseWheelX - e.getX();
|
||||
int k = mouseWheelY - e.getY();
|
||||
@@ -290,10 +473,6 @@ public class RSApplet extends Applet implements Runnable, MouseListener, MouseWh
|
||||
public void mouseMoved(MouseEvent mouseevent) {
|
||||
int i = mouseevent.getX();
|
||||
int j = mouseevent.getY();
|
||||
if (gameFrame != null) {
|
||||
i -= 4;
|
||||
j -= 22;
|
||||
}
|
||||
idleTime = 0;
|
||||
mouseX = i;
|
||||
mouseY = j;
|
||||
@@ -498,11 +677,7 @@ public class RSApplet extends Applet implements Runnable, MouseListener, MouseWh
|
||||
}
|
||||
|
||||
Component getGameComponent() {
|
||||
if (gameFrame != null) {
|
||||
return gameFrame;
|
||||
} else {
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public void startRunnable(Runnable runnable, int priority) {
|
||||
|
||||
@@ -6,33 +6,23 @@ import java.awt.*;
|
||||
|
||||
final class RSFrame extends Frame {
|
||||
|
||||
public RSFrame(RSApplet RSApplet_, int i, int j) {
|
||||
rsApplet = RSApplet_;
|
||||
setTitle(ClientSettings.SERVER_NAME + " World: " + ClientSettings.SERVER_WORLD);
|
||||
setResizable(false);
|
||||
setMinimumSize(new Dimension(i + 8, j + 28));
|
||||
setVisible(true);
|
||||
toFront();
|
||||
setSize(i + 8, j + 28);
|
||||
setLocationRelativeTo(null);
|
||||
}
|
||||
public RSFrame(RSApplet applet) {
|
||||
rsApplet = applet;
|
||||
|
||||
@Override
|
||||
public Graphics getGraphics() {
|
||||
Graphics g = super.getGraphics();
|
||||
g.translate(4, 24);
|
||||
return g;
|
||||
}
|
||||
setTitle(ClientSettings.SERVER_NAME + " World: " + ClientSettings.SERVER_WORLD + ((ClientSettings.SERVER_IP.equals("localhost") || ClientSettings.SERVER_IP.equals("127.0.0.1")) ? " [Local]" : ""));
|
||||
this.setResizable(false);
|
||||
this.setBackground(Color.BLACK);
|
||||
|
||||
@Override
|
||||
public void update(Graphics g) {
|
||||
rsApplet.update(g);
|
||||
}
|
||||
this.setLayout(new BorderLayout());
|
||||
this.add(applet, BorderLayout.CENTER);
|
||||
this.pack();
|
||||
|
||||
@Override
|
||||
public void paint(Graphics g) {
|
||||
rsApplet.paint(g);
|
||||
this.setLocationRelativeTo(null);
|
||||
this.setVisible(true);
|
||||
this.toFront();
|
||||
this.transferFocus();
|
||||
}
|
||||
|
||||
private final RSApplet rsApplet;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,23 +1,18 @@
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import javax.sound.sampled.AudioInputStream;
|
||||
import javax.sound.sampled.AudioSystem;
|
||||
import javax.sound.sampled.Clip;
|
||||
import javax.sound.sampled.DataLine;
|
||||
import javax.sound.sampled.FloatControl;
|
||||
|
||||
import sun.audio.AudioPlayer; //Note! If you see a compile error here, make sure you set your JDK to Java 8!
|
||||
import javax.sound.sampled.*;
|
||||
|
||||
public class SoundPlayer implements Runnable {
|
||||
|
||||
private AudioInputStream stream;
|
||||
private DataLine.Info info;
|
||||
private Clip sound;
|
||||
private SourceDataLine sound;
|
||||
|
||||
private InputStream soundStream;
|
||||
private Thread player;
|
||||
private int delay;
|
||||
private int soundLevel;
|
||||
private InputStream arg0;
|
||||
public static int volume;
|
||||
|
||||
/**
|
||||
@@ -42,22 +37,37 @@ public class SoundPlayer implements Runnable {
|
||||
*/
|
||||
public void run() {
|
||||
try {
|
||||
AudioPlayer.player.start(arg0);
|
||||
stream = AudioSystem.getAudioInputStream(soundStream);
|
||||
info = new DataLine.Info(Clip.class, stream.getFormat());
|
||||
sound = (Clip) AudioSystem.getLine(info);
|
||||
sound.open(stream);
|
||||
|
||||
AudioFormat format = stream.getFormat();
|
||||
info = new DataLine.Info(SourceDataLine.class, format);
|
||||
sound = (SourceDataLine) AudioSystem.getLine(info);
|
||||
sound.open(format);
|
||||
|
||||
FloatControl volume = (FloatControl) sound.getControl(FloatControl.Type.MASTER_GAIN);
|
||||
volume.setValue(getDecibels(soundLevel - getVolume()));
|
||||
if (delay > 0) {
|
||||
Thread.sleep(delay);
|
||||
}
|
||||
sound.start();
|
||||
while (sound.isActive()) {
|
||||
Thread.sleep(250);
|
||||
|
||||
int nBytesRead = 0;
|
||||
int EXTERNAL_BUFFER_SIZE = 524288;
|
||||
byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
|
||||
try {
|
||||
while (nBytesRead != -1) {
|
||||
nBytesRead = stream.read(abData, 0, abData.length);
|
||||
if (nBytesRead >= 0) {
|
||||
sound.write(abData, 0, nBytesRead);
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
sound.drain();
|
||||
sound.close();
|
||||
}
|
||||
Thread.sleep(10000);
|
||||
sound.close();
|
||||
|
||||
stream.close();
|
||||
player.interrupt();
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -366,7 +366,30 @@ public final class Sprite extends DrawingArea {
|
||||
int k4 = j3 + i3 * i4;
|
||||
int l4 = k3 - l2 * i4;
|
||||
for (k1 = -ai[j1]; k1 < 0; k1++) {
|
||||
DrawingArea.pixels[j4++] = pixels[(k4 >> 16) + (l4 >> 16) * width];
|
||||
if (ClientSettings.BILINEAR_MINIMAP_FILTERING) {
|
||||
int x1 = k4 >> 16;
|
||||
int y1 = l4 >> 16;
|
||||
int x2 = x1 + 1;
|
||||
int y2 = y1 + 1;
|
||||
int sampleColor1 = pixels[x1 + y1 * width];
|
||||
int sampleColor2 = pixels[x2 + y1 * width];
|
||||
int sampleColor3 = pixels[x1 + y2 * width];
|
||||
int sampleColor4 = pixels[x2 + y2 * width];
|
||||
int x1Distance = (k4 >> 8) - (x1 << 8);
|
||||
int y1Distance = (l4 >> 8) - (y1 << 8);
|
||||
int x2Distance = (x2 << 8) - (k4 >> 8);
|
||||
int y2Distance = (y2 << 8) - (l4 >> 8);
|
||||
int sampleAlpha1 = x2Distance * y2Distance;
|
||||
int sampleAlpha2 = x1Distance * y2Distance;
|
||||
int sampleAlpha3 = x2Distance * y1Distance;
|
||||
int sampleAlpha4 = x1Distance * y1Distance;
|
||||
int red = (sampleColor1 >> 16 & 0xff) * sampleAlpha1 + (sampleColor2 >> 16 & 0xff) * sampleAlpha2 + (sampleColor3 >> 16 & 0xff) * sampleAlpha3 + (sampleColor4 >> 16 & 0xff) * sampleAlpha4 & 0xff0000;
|
||||
int green = (sampleColor1 >> 8 & 0xff) * sampleAlpha1 + (sampleColor2 >> 8 & 0xff) * sampleAlpha2 + (sampleColor3 >> 8 & 0xff) * sampleAlpha3 + (sampleColor4 >> 8 & 0xff) * sampleAlpha4 >> 8 & 0xff00;
|
||||
int blue = (sampleColor1 & 0xff) * sampleAlpha1 + (sampleColor2 & 0xff) * sampleAlpha2 + (sampleColor3 & 0xff) * sampleAlpha3 + (sampleColor4 & 0xff) * sampleAlpha4 >> 16;
|
||||
DrawingArea.pixels[j4++] = red | green | blue;
|
||||
} else {
|
||||
DrawingArea.pixels[j4++] = pixels[(k4 >> 16) + (l4 >> 16) * width];
|
||||
}
|
||||
k4 += i3;
|
||||
l4 -= l2;
|
||||
}
|
||||
|
||||
@@ -730,22 +730,47 @@ final class Texture extends DrawingArea {
|
||||
} else {
|
||||
int j2 = anInt1465;
|
||||
int l2 = 256 - anInt1465;
|
||||
while (--k >= 0) {
|
||||
j = anIntArray1482[j1 >> 8];
|
||||
j1 += l1;
|
||||
j = ((j & 0xff00ff) * l2 >> 8 & 0xff00ff) + ((j & 0xff00) * l2 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
}
|
||||
k = i1 - l & 3;
|
||||
if (k > 0) {
|
||||
j = anIntArray1482[j1 >> 8];
|
||||
j = ((j & 0xff00ff) * l2 >> 8 & 0xff00ff) + ((j & 0xff00) * l2 >> 8 & 0xff00);
|
||||
do {
|
||||
if (ClientSettings.FIX_TRANSPARENCY_OVERFLOW) {
|
||||
while (--k >= 0) {
|
||||
j = anIntArray1482[j1 >> 8];
|
||||
j1 += l1;
|
||||
j = ((j & 0xff00ff) * l2 >> 8 & 0xff00ff) + ((j & 0xff00) * l2 >> 8 & 0xff00);
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
i++;
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
i++;
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
i++;
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
i++;
|
||||
}
|
||||
k = i1 - l & 3;
|
||||
if (k > 0) {
|
||||
j = anIntArray1482[j1 >> 8];
|
||||
j = ((j & 0xff00ff) * l2 >> 8 & 0xff00ff) + ((j & 0xff00) * l2 >> 8 & 0xff00);
|
||||
do {
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
i++;
|
||||
} while (--k > 0);
|
||||
}
|
||||
} else {
|
||||
while (--k >= 0) {
|
||||
j = anIntArray1482[j1 >> 8];
|
||||
j1 += l1;
|
||||
j = ((j & 0xff00ff) * l2 >> 8 & 0xff00ff) + ((j & 0xff00) * l2 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
} while (--k > 0);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
}
|
||||
k = i1 - l & 3;
|
||||
if (k > 0) {
|
||||
j = anIntArray1482[j1 >> 8];
|
||||
j = ((j & 0xff00ff) * l2 >> 8 & 0xff00ff) + ((j & 0xff00) * l2 >> 8 & 0xff00);
|
||||
do {
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j2 >> 8 & 0xff00);
|
||||
} while (--k > 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
@@ -777,12 +802,22 @@ final class Texture extends DrawingArea {
|
||||
}
|
||||
int k2 = anInt1465;
|
||||
int i3 = 256 - anInt1465;
|
||||
do {
|
||||
j = anIntArray1482[j1 >> 8];
|
||||
j1 += i2;
|
||||
j = ((j & 0xff00ff) * i3 >> 8 & 0xff00ff) + ((j & 0xff00) * i3 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * k2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * k2 >> 8 & 0xff00);
|
||||
} while (--k > 0);
|
||||
if (ClientSettings.FIX_TRANSPARENCY_OVERFLOW) {
|
||||
do {
|
||||
j = anIntArray1482[j1 >> 8];
|
||||
j1 += i2;
|
||||
j = ((j & 0xff00ff) * i3 >> 8 & 0xff00ff) + ((j & 0xff00) * i3 >> 8 & 0xff00);
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * k2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * k2 >> 8 & 0xff00);
|
||||
i++;
|
||||
} while (--k > 0);
|
||||
} else {
|
||||
do {
|
||||
j = anIntArray1482[j1 >> 8];
|
||||
j1 += i2;
|
||||
j = ((j & 0xff00ff) * i3 >> 8 & 0xff00ff) + ((j & 0xff00) * i3 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * k2 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * k2 >> 8 & 0xff00);
|
||||
} while (--k > 0);
|
||||
}
|
||||
}
|
||||
|
||||
public static void method376(int i, int j, int k, int l, int i1, int j1, int k1) {
|
||||
@@ -1125,16 +1160,32 @@ final class Texture extends DrawingArea {
|
||||
int j1 = anInt1465;
|
||||
int k1 = 256 - anInt1465;
|
||||
j = ((j & 0xff00ff) * k1 >> 8 & 0xff00ff) + ((j & 0xff00) * k1 >> 8 & 0xff00);
|
||||
while (--k >= 0) {
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
if (ClientSettings.FIX_TRANSPARENCY_OVERFLOW) {
|
||||
while (--k >= 0) {
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
i++;
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
i++;
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
i++;
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
i++;
|
||||
}
|
||||
for (k = i1 - l & 3; --k >= 0;) {
|
||||
ai[i] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
i++;
|
||||
}
|
||||
} else {
|
||||
while (--k >= 0) {
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
}
|
||||
for (k = i1 - l & 3; --k >= 0;) {
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
}
|
||||
}
|
||||
for (k = i1 - l & 3; --k >= 0;) {
|
||||
ai[i++] = j + ((ai[i] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((ai[i] & 0xff00) * j1 >> 8 & 0xff00);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void method378(int i, int j, int k, int l, int i1, int j1, int k1, int l1, int i2, int j2, int k2, int l2, int i3, int j3, int k3, int l3, int i4, int j4, int k4) {
|
||||
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 978 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"server_name": "2006Scape",
|
||||
"server_test_version": 2.3,
|
||||
"gui_enabled": false,
|
||||
"website_link": "https://2006Scape.org",
|
||||
"server_debug": false,
|
||||
"file_server": true,
|
||||
"http_port": 8080,
|
||||
"jaggrab_port": 43595,
|
||||
"world_id": 1,
|
||||
"xp_rate": 1.0,
|
||||
"variable_xp_rate": false,
|
||||
@@ -19,5 +23,7 @@
|
||||
"timeout": 60,
|
||||
"item_requirements": true,
|
||||
"max_players": 200,
|
||||
"website_integration": false
|
||||
"website_integration": false,
|
||||
"cycle_logging": true,
|
||||
"cycle_logging_tick": 10
|
||||
}
|
||||
@@ -570,7 +570,7 @@
|
||||
"id": 94
|
||||
},
|
||||
{
|
||||
"hitpoints": 70,
|
||||
"hitpoints": 69,
|
||||
"name": "Wolf",
|
||||
"combat": 64,
|
||||
"id": 95
|
||||
@@ -846,7 +846,7 @@
|
||||
"id": 140
|
||||
},
|
||||
{
|
||||
"hitpoints": 67,
|
||||
"hitpoints": 74,
|
||||
"name": "Big Wolf",
|
||||
"combat": 73,
|
||||
"id": 141
|
||||
@@ -991,7 +991,7 @@
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Gnome shop keeper",
|
||||
"name": "Gnome Shop keeper",
|
||||
"combat": 0,
|
||||
"id": 165
|
||||
},
|
||||
@@ -3121,31 +3121,31 @@
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Keeper",
|
||||
"name": "Shop keeper",
|
||||
"combat": 0,
|
||||
"id": 520
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Assistant",
|
||||
"name": "Shop assistant",
|
||||
"combat": 0,
|
||||
"id": 521
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Keeper",
|
||||
"name": "Shop keeper",
|
||||
"combat": 0,
|
||||
"id": 522
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Assistant",
|
||||
"name": "Shop assistant",
|
||||
"combat": 0,
|
||||
"id": 523
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Keeper",
|
||||
"name": "Shop keeper",
|
||||
"combat": 0,
|
||||
"id": 524
|
||||
},
|
||||
@@ -3157,61 +3157,61 @@
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Keeper",
|
||||
"name": "Shop keeper",
|
||||
"combat": 0,
|
||||
"id": 526
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Assistant",
|
||||
"name": "Shop assistant",
|
||||
"combat": 0,
|
||||
"id": 527
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Keeper",
|
||||
"name": "Shop keeper",
|
||||
"combat": 0,
|
||||
"id": 528
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Assistant",
|
||||
"name": "Shop assistant",
|
||||
"combat": 0,
|
||||
"id": 529
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Keeper",
|
||||
"name": "Shop keeper",
|
||||
"combat": 0,
|
||||
"id": 530
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Assistant",
|
||||
"name": "Shop assistant",
|
||||
"combat": 0,
|
||||
"id": 531
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Keeper",
|
||||
"name": "Shop keeper",
|
||||
"combat": 0,
|
||||
"id": 532
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Shop Assistant",
|
||||
"name": "Shop assistant",
|
||||
"combat": 0,
|
||||
"id": 533
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Fairy Shop Keeper",
|
||||
"name": "Fairy shop keeper",
|
||||
"combat": 0,
|
||||
"id": 534
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Fairy Shop assistant",
|
||||
"name": "Fairy shop assistant",
|
||||
"combat": 0,
|
||||
"id": 535
|
||||
},
|
||||
@@ -3253,7 +3253,7 @@
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Louie legs",
|
||||
"name": "Louie Legs",
|
||||
"combat": 0,
|
||||
"id": 542
|
||||
},
|
||||
@@ -3325,7 +3325,7 @@
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Fancy dress shop owner",
|
||||
"name": "Fancy-dress shop owner",
|
||||
"combat": 0,
|
||||
"id": 554
|
||||
},
|
||||
@@ -10207,7 +10207,7 @@
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Ghost Shopkeeper",
|
||||
"name": "Ghost shopkeeper",
|
||||
"combat": 0,
|
||||
"id": 1699
|
||||
},
|
||||
@@ -16217,6 +16217,12 @@
|
||||
"combat": 0,
|
||||
"id": 3109
|
||||
},
|
||||
{
|
||||
"hitpoints": 0,
|
||||
"name": "Mike",
|
||||
"combat": 0,
|
||||
"id": 3166
|
||||
},
|
||||
{
|
||||
"hitpoints": 250,
|
||||
"name": "Chaos Elemental",
|
||||
@@ -16583,6 +16589,7 @@
|
||||
"combat": 140,
|
||||
"id": 3068
|
||||
},
|
||||
|
||||
{
|
||||
"hitpoints": 7,
|
||||
"name": "Drunken Man",
|
||||
@@ -16643,4 +16650,4 @@
|
||||
"combat": 0,
|
||||
"id": 3790
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB |
@@ -1,11 +0,0 @@
|
||||
[2014/02/01] 13:44 andrewadsfa1 cast High Alchemy on bread for 14 coins
|
||||
[2014/02/01] 13:44 andrewadsfa1 cast High Alchemy on empty pot for 0 coins
|
||||
[2014/02/01] 13:44 andrewadsfa1 cast High Alchemy on bucket for 0 coins
|
||||
[2014/02/01] 13:44 andrewadsfa1 cast High Alchemy on bronze pickaxe for 0 coins
|
||||
[2014/02/01] 13:44 andrewadsfa1 cast High Alchemy on shrimps for 3 coins
|
||||
[2014/02/01] 13:44 andrewadsfa1 cast High Alchemy on small fishing net for 3 coins
|
||||
[2014/02/01] 13:44 andrewadsfa1 cast High Alchemy on tinderbox for 0 coins
|
||||
[2014/02/01] 13:44 andrewadsfa1 cast High Alchemy on bronze hatchet for 9 coins
|
||||
[2014/02/01] 13:46 andrewadsfa1 cast High Alchemy on nature rune for 74 coins
|
||||
[2014/02/01] 13:46 andrewadsfa1 cast High Alchemy on nature rune for 74 coins
|
||||
[2014/02/01] 13:46 andrewadsfa1 cast High Alchemy on nature rune for 74 coins
|
||||
@@ -1,7 +0,0 @@
|
||||
[2019/10/26] 21:23 michael2 clicked item bones
|
||||
[2019/10/26] 21:25 michael2 clicked item bones
|
||||
[2019/10/26] 21:26 michael2 clicked item bones
|
||||
[2019/10/26] 21:28 michael2 clicked item bones
|
||||
[2019/10/26] 21:30 michael2 clicked item bones
|
||||
[2019/10/26] 21:30 michael2 clicked item bones
|
||||
[2019/10/26] 21:30 michael2 clicked item bones
|
||||
@@ -1,2 +0,0 @@
|
||||
[2019/10/28] 15:43 michael8 clicked item herb
|
||||
[2019/10/28] 15:43 michael8 clicked item bones
|
||||
@@ -1,110 +0,0 @@
|
||||
[2014/01/12] 10:51 andrew used command: ipban andrew
|
||||
[2014/01/12] 10:59 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:00 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:01 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:07 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:07 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:08 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:09 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:09 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:10 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:11 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:11 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:12 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:12 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:12 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:12 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 11:13 andrew used command: ipbot andrew10
|
||||
[2014/01/12] 12:27 andrew used command: ipban andrew11
|
||||
[2014/01/12] 13:52 andrew used command: ipban andrew25
|
||||
[2014/01/12] 13:53 andrew used command: ipban andrew25
|
||||
[2014/01/12] 13:54 andrew used command: ipban andrew25 hi
|
||||
[2014/01/12] 13:55 andrew used command: ipban andrew25
|
||||
[2014/01/12] 13:56 andrew used command: ipban andrew25 botting
|
||||
[2014/01/12] 13:57 andrew used command: ipban andrew25
|
||||
[2014/01/12] 13:57 andrew used command: ipban andrew25 botting bitch
|
||||
[2014/01/12] 13:58 andrew used command: ipban andrew25 botting
|
||||
[2014/01/12] 16:07 andrew used command: ipban andrew22 fucker
|
||||
[2014/01/12] 16:09 andrew used command: ipban andrew22 botting
|
||||
[2014/01/12] 16:10 andrew used command: ipban andrew22
|
||||
[2014/01/12] 16:10 andrew used command: ipban andrew22 botting
|
||||
[2014/01/12] 16:11 andrew used command: ipbanned andrew22 BOTTING
|
||||
[2014/01/12] 16:24 andrew used command: ipmute andrew22 fuckoff
|
||||
[2014/01/12] 16:26 andrew used command: ipmute andrew22 hi
|
||||
[2014/01/12] 16:28 andrew used command: ipban andrew22
|
||||
[2014/01/12] 16:28 andrew used command: ipban andrew22 fuckoff
|
||||
[2014/01/12] 16:32 andrew used command: ipban andrew22 fucker
|
||||
[2014/01/12] 16:35 andrew used command: ipmute andrew22
|
||||
[2014/01/12] 16:35 andrew used command: ipmute andrew22 spam
|
||||
[2014/01/12] 16:37 andrew used command: ipmute andrew22
|
||||
[2014/01/12] 16:37 andrew used command: ipmute andrew22 fucker
|
||||
[2014/01/12] 16:37 andrew used command: unipmute andrew22
|
||||
[2014/01/12] 16:39 andrew used command: unipmute andrew22
|
||||
[2014/01/12] 16:39 andrew used command: ipmute andrew 22 botting
|
||||
[2014/01/12] 16:39 andrew used command: ipmute andrew 22 botting
|
||||
[2014/01/12] 16:39 andrew used command: ipmute andrew 22 botting
|
||||
[2014/01/12] 16:42 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 16:42 andrew used command: ipmute andrew 22 hi..
|
||||
[2014/01/12] 16:44 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 16:44 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 16:45 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 16:45 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 16:48 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 16:49 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 16:56 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 16:57 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 16:57 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 16:59 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 17:00 andrew used command: ipmute andrew 22 hi
|
||||
[2014/01/12] 17:01 andrew used command: ipmute adsfasdf adsfasdf asdf
|
||||
[2014/01/13] 19:31 andrew used command: ipmute andrew 30 hi
|
||||
[2014/01/13] 19:33 andrew used command: ipmute andrew 35 hi
|
||||
[2014/01/13] 19:37 andrew used command: ipmute andrew_35 hi
|
||||
[2014/01/13] 19:42 andrew used command: ipmute_andrew 35_botting
|
||||
[2014/01/13] 19:42 andrew used command: ipban_andrew 35_botting
|
||||
[2014/01/13] 19:47 andrew used command: ipmute
|
||||
[2014/01/13] 19:48 andrew used command: ipmute
|
||||
[2014/01/14] 18:39 andrew used command: mute andrew45 cuz
|
||||
[2014/01/14] 18:39 andrew used command: mute-andrew45-cuz
|
||||
[2014/01/14] 18:39 andrew used command: mute-Andrew45-cuz
|
||||
[2014/01/14] 18:40 andrew used command: mute-Andrew45-jj
|
||||
[2014/01/14] 18:40 andrew used command: ipmute-andrew45-cuz
|
||||
[2014/01/14] 18:40 andrew used command: unipmute-andrew-cuz
|
||||
[2014/01/14] 18:40 andrew used command: unipmute andrew
|
||||
[2014/01/14] 18:44 andrew used command: mute-andrew45-cuz
|
||||
[2014/01/14] 18:44 andrew used command: mute
|
||||
[2014/01/14] 18:44 andrew used command: mute-andrew45-da
|
||||
[2014/01/14] 18:45 andrew used command: unmute andrew45
|
||||
[2014/03/08] 13:37 andrew used command: bank
|
||||
[2014/03/08] 13:39 andrew used command: bank
|
||||
[2014/03/08] 13:41 andrew used command: bank
|
||||
[2014/03/08] 13:43 andrew used command: bank
|
||||
[2014/03/08] 13:45 andrew used command: bank
|
||||
[2014/03/08] 13:46 andrew used command: bank
|
||||
[2014/03/08] 13:47 andrew used command: bank
|
||||
[2014/03/08] 13:47 andrew used command: bank
|
||||
[2014/03/08] 13:53 andrew used command: bank
|
||||
[2014/03/08] 13:54 andrew used command: bank
|
||||
[2014/03/08] 13:54 andrew used command: bank
|
||||
[2014/03/08] 13:54 andrew used command: bank:
|
||||
[2014/03/08] 13:55 andrew used command: bank
|
||||
[2014/03/08] 13:56 andrew used command: bank
|
||||
[2014/03/08] 14:06 andrew used command: bank
|
||||
[2014/03/08] 14:08 andrew used command: bank
|
||||
[2014/03/08] 14:11 andrew used command: bank
|
||||
[2014/03/08] 14:12 andrew used command: bank
|
||||
[2014/03/08] 14:14 andrew used command: bank
|
||||
[2014/03/08] 14:15 andrew used command: bank
|
||||
[2014/03/08] 14:21 andrew used command: bank
|
||||
[2014/03/08] 14:21 andrew used command: bank
|
||||
[2014/03/08] 14:22 andrew used command: bank
|
||||
[2014/03/08] 14:24 andrew used command: bank
|
||||
[2014/03/08] 14:27 andrew used command: bank
|
||||
[2014/03/08] 14:28 andrew used command: bank
|
||||
[2014/03/08] 14:30 andrew used command: bank
|
||||
[2014/03/08] 14:32 andrew used command: bank
|
||||
[2014/03/08] 14:36 andrew used command: bank
|
||||
[2014/03/08] 14:41 andrew used command: bank
|
||||
[2014/03/08] 14:51 andrew used command: bank
|
||||
[2014/03/08] 14:57 andrew used command: bank
|
||||
[2014/03/08] 15:01 andrew used command: bank
|
||||
@@ -1,11 +0,0 @@
|
||||
[2014/03/08] 14:22 andrew1 used command: bank
|
||||
[2014/03/08] 14:26 andrew1 used command: bank
|
||||
[2014/03/08] 14:31 andrew1 used command: bank
|
||||
[2014/03/08] 14:33 andrew1 used command: bank
|
||||
[2014/03/08] 14:40 andrew1 used command: bank
|
||||
[2014/03/08] 14:44 andrew1 used command: bank
|
||||
[2014/03/08] 14:44 andrew1 used command: bank
|
||||
[2014/03/08] 14:49 andrew1 used command: bank
|
||||
[2014/03/08] 14:54 andrew1 used command: bank
|
||||
[2014/03/08] 14:55 andrew1 used command: bank
|
||||
[2014/03/08] 14:57 andrew1 used command: bank
|
||||
@@ -1,16 +0,0 @@
|
||||
[2019/11/21] 18:52 andrew5 used command: bank
|
||||
[2019/11/21] 19:04 andrew5 used command: bank
|
||||
[2019/12/04] 13:26 andrew5 used command: bank
|
||||
[2019/12/22] 05:47 andrew5 used command: bank
|
||||
[2019/12/22] 05:58 andrew5 used command: bank
|
||||
[2019/12/22] 05:58 andrew5 used command: bank
|
||||
[2019/12/22] 05:59 andrew5 used command: bank
|
||||
[2020/01/03] 07:00 andrew5 used command: bank
|
||||
[2020/01/03] 07:00 andrew5 used command: bank
|
||||
[2020/01/03] 07:02 andrew5 used command: bank
|
||||
[2020/03/13] 04:15 andrew5 used command: bank
|
||||
[2020/03/13] 04:17 andrew5 used command: bank
|
||||
[2020/03/13] 04:21 andrew5 used command: bank
|
||||
[2020/03/13] 04:25 andrew5 used command: bank
|
||||
[2020/03/13] 04:25 andrew5 used command: bank
|
||||
[2020/03/13] 04:29 andrew5 used command: bank
|
||||
@@ -1,2 +0,0 @@
|
||||
[2020/02/09] 23:17 andrew55 used command: bank
|
||||
[2020/02/09] 23:19 andrew55 used command: bank
|
||||
@@ -1,4 +0,0 @@
|
||||
[2019/10/27] 16:16 michael used command: bank
|
||||
[2019/11/24] 09:27 michael used command: bank
|
||||
[2019/11/24] 09:31 michael used command: bank
|
||||
[2019/11/24] 09:38 michael used command: bank
|
||||
@@ -1 +0,0 @@
|
||||
[2019/10/28] 16:52 michael2 used command: bank
|
||||
@@ -1 +0,0 @@
|
||||
[2014/01/18] 22:22 mod den used command: bank
|
||||
@@ -1 +0,0 @@
|
||||
[2014/02/11] 20:05 andrewf dropped 1 empty pot absX: 3222 absY: 3218
|
||||
@@ -1,3 +0,0 @@
|
||||
[2014/02/11] 20:24 andrewsdf dropped 1 bronze hatchet absX: 3222 absY: 3218
|
||||
[2014/02/11] 20:24 andrewsdf dropped 1 tinderbox absX: 3223 absY: 3219
|
||||
[2014/02/11] 20:24 andrewsdf dropped 1 shrimps absX: 3226 absY: 3219
|
||||
@@ -1,2 +0,0 @@
|
||||
[2019/06/19] 22:04 irdb dropped 1 bronze sword absX: 3210 absY: 3218
|
||||
[2019/06/19] 22:14 irdb dropped 1 bronze dagger absX: 3207 absY: 3215
|
||||
@@ -1,2 +0,0 @@
|
||||
[2019/10/26] 13:49 michael dropped 1 chef's hat absX: 3250 absY: 3225
|
||||
[2019/10/26] 13:49 michael dropped 1 fire talisman absX: 3250 absY: 3225
|
||||
@@ -1,16 +0,0 @@
|
||||
[2019/10/26] 21:23 michael2 dropped 3 iron arrow absX: 3248 absY: 3225
|
||||
[2019/10/26] 21:24 michael2 dropped 17 bronze arrow absX: 3262 absY: 3228
|
||||
[2019/10/26] 21:24 michael2 dropped 1 air talisman absX: 3262 absY: 3228
|
||||
[2019/10/26] 21:26 michael2 dropped 1 bronze longsword absX: 3259 absY: 3229
|
||||
[2019/10/26] 21:28 michael2 dropped 1 bronze med helm absX: 3251 absY: 3225
|
||||
[2019/10/26] 21:28 michael2 dropped 1 air talisman absX: 3251 absY: 3225
|
||||
[2019/10/26] 21:29 michael2 dropped 9 coins absX: 3255 absY: 3223
|
||||
[2019/10/26] 21:29 michael2 dropped 6 water rune absX: 3255 absY: 3223
|
||||
[2019/10/26] 21:29 michael2 dropped 1 goblin mail absX: 3255 absY: 3223
|
||||
[2019/10/26] 21:31 michael2 dropped 1 bronze sq shield absX: 3260 absY: 3228
|
||||
[2019/10/26] 21:32 michael2 dropped 9 coins absX: 3259 absY: 3227
|
||||
[2019/10/26] 21:34 michael2 dropped 1 bronze sq shield absX: 3262 absY: 3229
|
||||
[2019/10/26] 21:34 michael2 dropped 1 bronze sq shield absX: 3255 absY: 3223
|
||||
[2019/10/26] 21:34 michael2 dropped 1 bronze longsword absX: 3255 absY: 3223
|
||||
[2019/10/26] 21:35 michael2 dropped 1 raw chicken absX: 3260 absY: 3227
|
||||
[2019/10/26] 21:51 michael2 dropped 1 ashes absX: 3234 absY: 3218
|
||||
@@ -1,21 +0,0 @@
|
||||
[2019/10/27] 18:50 michael5 dropped 1 bronze arrow absX: 3247 absY: 3226
|
||||
[2019/10/27] 18:50 michael5 dropped 1 bronze arrow absX: 3247 absY: 3226
|
||||
[2019/10/27] 18:50 michael5 dropped 1 bronze arrow absX: 3247 absY: 3226
|
||||
[2019/10/27] 18:50 michael5 dropped 2 bronze arrow absX: 3247 absY: 3226
|
||||
[2019/10/27] 18:50 michael5 dropped 3 bronze arrow absX: 3247 absY: 3226
|
||||
[2019/10/27] 18:50 michael5 dropped 4 bronze arrow absX: 3247 absY: 3226
|
||||
[2019/10/27] 18:50 michael5 dropped 5 bronze arrow absX: 3247 absY: 3226
|
||||
[2019/10/27] 18:50 michael5 dropped 6 bronze arrow absX: 3247 absY: 3226
|
||||
[2019/10/27] 18:51 michael5 dropped 2 air rune absX: 3248 absY: 3226
|
||||
[2019/10/27] 18:51 michael5 dropped 5 iron arrow absX: 3248 absY: 3226
|
||||
[2019/10/27] 18:51 michael5 dropped 1 bronze arrow absX: 3251 absY: 3226
|
||||
[2019/10/27] 18:51 michael5 dropped 1 bronze arrow absX: 3253 absY: 3225
|
||||
[2019/10/27] 18:51 michael5 dropped 2 bronze arrow absX: 3252 absY: 3225
|
||||
[2019/10/27] 18:51 michael5 dropped 3 bronze arrow absX: 3252 absY: 3225
|
||||
[2019/10/27] 18:51 michael5 dropped 1 bronze arrow absX: 3242 absY: 3225
|
||||
[2019/10/27] 18:51 michael5 dropped 2 bronze arrow absX: 3242 absY: 3225
|
||||
[2019/10/27] 18:52 michael5 dropped 3 bronze arrow absX: 3242 absY: 3225
|
||||
[2019/10/27] 18:52 michael5 dropped 4 bronze arrow absX: 3242 absY: 3225
|
||||
[2019/10/27] 18:52 michael5 dropped 5 bronze arrow absX: 3242 absY: 3225
|
||||
[2019/10/27] 18:52 michael5 dropped 6 bronze arrow absX: 3242 absY: 3225
|
||||
[2019/10/27] 18:55 michael5 dropped 1 ashes absX: 3234 absY: 3230
|
||||
@@ -1,27 +0,0 @@
|
||||
[2019/10/28] 13:45 michael6 dropped 1 bronze arrow absX: 3224 absY: 3222
|
||||
[2019/10/28] 13:45 michael6 dropped 1 bronze arrow absX: 3224 absY: 3224
|
||||
[2019/10/28] 13:45 michael6 dropped 2 bronze arrow absX: 3224 absY: 3224
|
||||
[2019/10/28] 13:45 michael6 dropped 3 bronze arrow absX: 3224 absY: 3222
|
||||
[2019/10/28] 13:45 michael6 dropped 4 bronze arrow absX: 3224 absY: 3224
|
||||
[2019/10/28] 13:45 michael6 dropped 5 bronze arrow absX: 3224 absY: 3224
|
||||
[2019/10/28] 13:45 michael6 dropped 6 bronze arrow absX: 3224 absY: 3224
|
||||
[2019/10/28] 13:45 michael6 dropped 7 bronze arrow absX: 3224 absY: 3224
|
||||
[2019/10/28] 13:46 michael6 dropped 8 bronze arrow absX: 3224 absY: 3224
|
||||
[2019/10/28] 13:46 michael6 dropped 9 bronze arrow absX: 3224 absY: 3222
|
||||
[2019/10/28] 13:46 michael6 dropped 10 bronze arrow absX: 3224 absY: 3224
|
||||
[2019/10/28] 13:48 michael6 dropped 1 bronze arrow absX: 3220 absY: 3224
|
||||
[2019/10/28] 13:48 michael6 dropped 1 bronze arrow absX: 3219 absY: 3223
|
||||
[2019/10/28] 13:48 michael6 dropped 2 bronze arrow absX: 3221 absY: 3223
|
||||
[2019/10/28] 13:48 michael6 dropped 1 bronze arrow absX: 3221 absY: 3225
|
||||
[2019/10/28] 13:48 michael6 dropped 1 bronze arrow absX: 3222 absY: 3221
|
||||
[2019/10/28] 13:48 michael6 dropped 2 bronze arrow absX: 3222 absY: 3221
|
||||
[2019/10/28] 13:48 michael6 dropped 3 bronze arrow absX: 3222 absY: 3221
|
||||
[2019/10/28] 13:48 michael6 dropped 4 bronze arrow absX: 3222 absY: 3221
|
||||
[2019/10/28] 13:48 michael6 dropped 5 bronze arrow absX: 3222 absY: 3221
|
||||
[2019/10/28] 13:48 michael6 dropped 6 bronze arrow absX: 3222 absY: 3221
|
||||
[2019/10/28] 13:52 michael6 dropped 1 bronze arrow absX: 3221 absY: 3219
|
||||
[2019/10/28] 13:52 michael6 dropped 1 bronze arrow absX: 3232 absY: 3219
|
||||
[2019/10/28] 14:01 michael6 dropped 1 bronze arrow absX: 3217 absY: 3244
|
||||
[2019/10/28] 14:01 michael6 dropped 1 bronze arrow absX: 3228 absY: 3218
|
||||
[2019/10/28] 14:01 michael6 dropped 1 bronze arrow absX: 3230 absY: 3218
|
||||
[2019/10/28] 14:02 michael6 dropped 1 bronze arrow absX: 3232 absY: 3217
|
||||
@@ -1,29 +0,0 @@
|
||||
[2019/10/28] 15:09 michael7 dropped 1 bronze arrow absX: 3225 absY: 3223
|
||||
[2019/10/28] 15:13 michael7 dropped 1 bronze arrow absX: 3225 absY: 3224
|
||||
[2019/10/28] 15:13 michael7 dropped 1 bronze arrow absX: 3225 absY: 3222
|
||||
[2019/10/28] 15:18 michael7 dropped 1 bronze arrow absX: 3230 absY: 3219
|
||||
[2019/10/28] 15:19 michael7 dropped 2 bronze arrow absX: 3230 absY: 3219
|
||||
[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3234 absY: 3217
|
||||
[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3235 absY: 3221
|
||||
[2019/10/28] 15:19 michael7 dropped 2 bronze arrow absX: 3235 absY: 3221
|
||||
[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3236 absY: 3222
|
||||
[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3233 absY: 3222
|
||||
[2019/10/28] 15:19 michael7 dropped 2 bronze arrow absX: 3233 absY: 3222
|
||||
[2019/10/28] 15:19 michael7 dropped 3 bronze arrow absX: 3233 absY: 3222
|
||||
[2019/10/28] 15:19 michael7 dropped 4 bronze arrow absX: 3233 absY: 3222
|
||||
[2019/10/28] 15:19 michael7 dropped 5 bronze arrow absX: 3233 absY: 3222
|
||||
[2019/10/28] 15:19 michael7 dropped 6 bronze arrow absX: 3233 absY: 3222
|
||||
[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3232 absY: 3220
|
||||
[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3233 absY: 3220
|
||||
[2019/10/28] 15:19 michael7 dropped 2 bronze arrow absX: 3233 absY: 3220
|
||||
[2019/10/28] 15:20 michael7 dropped 1 bronze arrow absX: 3234 absY: 3218
|
||||
[2019/10/28] 15:20 michael7 dropped 1 ashes absX: 3230 absY: 3218
|
||||
[2019/10/28] 15:20 michael7 dropped 3 bronze arrow absX: 3230 absY: 3219
|
||||
[2019/10/28] 15:20 michael7 dropped 1 bronze arrow absX: 3223 absY: 3228
|
||||
[2019/10/28] 15:23 michael7 dropped 1 bronze arrow absX: 3223 absY: 3227
|
||||
[2019/10/28] 15:23 michael7 dropped 2 bronze arrow absX: 3223 absY: 3229
|
||||
[2019/10/28] 15:23 michael7 dropped 1 bronze arrow absX: 3234 absY: 3218
|
||||
[2019/10/28] 15:23 michael7 dropped 1 bronze arrow absX: 3236 absY: 3218
|
||||
[2019/10/28] 15:23 michael7 dropped 1 bronze arrow absX: 3234 absY: 3218
|
||||
[2019/10/28] 15:23 michael7 dropped 2 bronze arrow absX: 3234 absY: 3218
|
||||
[2019/10/28] 15:23 michael7 dropped 3 bronze arrow absX: 3234 absY: 3218
|
||||
@@ -1,20 +0,0 @@
|
||||
[2019/10/28] 15:25 michael8 dropped 1 bronze arrow absX: 3234 absY: 3226
|
||||
[2019/10/28] 15:25 michael8 dropped 1 bronze arrow absX: 3234 absY: 3226
|
||||
[2019/10/28] 15:25 michael8 dropped 1 bronze arrow absX: 3234 absY: 3226
|
||||
[2019/10/28] 15:29 michael8 dropped 1 bronze arrow absX: 3228 absY: 3219
|
||||
[2019/10/28] 15:29 michael8 dropped 1 bronze arrow absX: 3226 absY: 3220
|
||||
[2019/10/28] 15:29 michael8 dropped 2 bronze arrow absX: 3226 absY: 3220
|
||||
[2019/10/28] 15:29 michael8 dropped 3 bronze arrow absX: 3226 absY: 3220
|
||||
[2019/10/28] 15:29 michael8 dropped 4 bronze arrow absX: 3228 absY: 3220
|
||||
[2019/10/28] 15:30 michael8 dropped 1 bronze arrow absX: 3229 absY: 3217
|
||||
[2019/10/28] 15:30 michael8 dropped 1 bronze arrow absX: 3226 absY: 3218
|
||||
[2019/10/28] 15:31 michael8 dropped 5 bronze arrow absX: 3226 absY: 3220
|
||||
[2019/10/28] 15:31 michael8 dropped 6 bronze arrow absX: 3226 absY: 3220
|
||||
[2019/10/28] 15:31 michael8 dropped 7 bronze arrow absX: 3226 absY: 3220
|
||||
[2019/10/28] 15:31 michael8 dropped 1 iron dagger absX: 3226 absY: 3220
|
||||
[2019/10/28] 15:36 michael8 dropped 1 bronze arrow absX: 3219 absY: 3222
|
||||
[2019/10/28] 15:36 michael8 dropped 2 bronze arrow absX: 3219 absY: 3222
|
||||
[2019/10/28] 15:36 michael8 dropped 3 bronze arrow absX: 3219 absY: 3222
|
||||
[2019/10/28] 15:36 michael8 dropped 4 bronze arrow absX: 3219 absY: 3222
|
||||
[2019/10/28] 15:41 michael8 dropped 1 air talisman absX: 3220 absY: 3222
|
||||
[2019/10/28] 15:41 michael8 dropped 1 herb absX: 3220 absY: 3222
|
||||
@@ -1,9 +0,0 @@
|
||||
[2020/08/09] 21:08 sandro dropped 1 waterskin(0) absX: 3303 absY: 3136
|
||||
[2020/08/09] 21:08 sandro dropped 1 waterskin(0) absX: 3303 absY: 3136
|
||||
[2020/08/09] 21:08 sandro dropped 1 waterskin(0) absX: 3301 absY: 3138
|
||||
[2020/08/09] 21:08 sandro dropped 1 waterskin(0) absX: 3299 absY: 3139
|
||||
[2020/08/09] 21:08 sandro dropped 1 waterskin(0) absX: 3297 absY: 3141
|
||||
[2020/08/09] 21:08 sandro dropped 1 waterskin(0) absX: 3297 absY: 3141
|
||||
[2020/08/09] 21:08 sandro dropped 1 waterskin(0) absX: 3297 absY: 3141
|
||||
[2020/08/09] 21:08 sandro dropped 1 waterskin(0) absX: 3297 absY: 3141
|
||||
[2020/08/09] 21:08 sandro dropped 1 waterskin(0) absX: 3293 absY: 3147
|
||||
@@ -1 +0,0 @@
|
||||
[2019/11/10] 22:30 spamtest1 dropped 1 grimy lantadyme absX: 3231 absY: 3207
|
||||
@@ -1 +0,0 @@
|
||||
[2019/10/04] 22:10 test dropped 3 coins absX: 3224 absY: 3202
|
||||
@@ -1 +0,0 @@
|
||||
[2014/01/08] 16:07 andrew1 killed andrew in the duel arena.
|
||||
@@ -1,4 +0,0 @@
|
||||
[2019/11/17] 15:52 andrew22 picked up knife itemX: 3224, itemY: 3202
|
||||
[2019/11/17] 15:52 andrew22 picked up knife itemX: 3224, itemY: 3202
|
||||
[2019/11/17] 15:54 andrew22 picked up knife itemX: 3224, itemY: 3202
|
||||
[2019/11/17] 15:56 andrew22 picked up knife itemX: 3224, itemY: 3202
|
||||
@@ -1,2 +0,0 @@
|
||||
[2019/06/19] 22:14 irdb picked up bronze dagger itemX: 3207, itemY: 3215
|
||||
[2019/10/03] 18:17 irdb picked up cabbage itemX: 3217, itemY: 9622
|
||||
@@ -1,2 +0,0 @@
|
||||
[2019/10/26] 13:50 michael picked up fire talisman itemX: 3250, itemY: 3226
|
||||
[2019/10/26] 13:50 michael picked up chef's hat itemX: 3250, itemY: 3226
|
||||
@@ -1,20 +0,0 @@
|
||||
[2019/10/26] 21:23 michael2 picked up iron arrow itemX: 3249, itemY: 3225
|
||||
[2019/10/26] 21:23 michael2 picked up bones itemX: 3249, itemY: 3225
|
||||
[2019/10/26] 21:24 michael2 picked up bronze arrow itemX: 3261, itemY: 3228
|
||||
[2019/10/26] 21:24 michael2 picked up bones itemX: 3261, itemY: 3228
|
||||
[2019/10/26] 21:24 michael2 picked up air talisman itemX: 3261, itemY: 3228
|
||||
[2019/10/26] 21:26 michael2 picked up bones itemX: 3251, itemY: 3225
|
||||
[2019/10/26] 21:26 michael2 picked up bones itemX: 3260, itemY: 3229
|
||||
[2019/10/26] 21:26 michael2 picked up bronze longsword itemX: 3260, itemY: 3229
|
||||
[2019/10/26] 21:27 michael2 picked up bones itemX: 3262, itemY: 3229
|
||||
[2019/10/26] 21:28 michael2 picked up bronze med helm itemX: 3250, itemY: 3225
|
||||
[2019/10/26] 21:28 michael2 picked up bones itemX: 3250, itemY: 3225
|
||||
[2019/10/26] 21:28 michael2 picked up air talisman itemX: 3250, itemY: 3225
|
||||
[2019/10/26] 21:30 michael2 picked up bones itemX: 3250, itemY: 3225
|
||||
[2019/10/26] 21:30 michael2 picked up goblin mail itemX: 3254, itemY: 3223
|
||||
[2019/10/26] 21:31 michael2 picked up bronze sq shield itemX: 3260, itemY: 3229
|
||||
[2019/10/26] 21:31 michael2 picked up bones itemX: 3260, itemY: 3229
|
||||
[2019/10/26] 21:33 michael2 picked up coins itemX: 3261, itemY: 3229
|
||||
[2019/10/26] 21:34 michael2 picked up bronze sq shield itemX: 3262, itemY: 3230
|
||||
[2019/10/26] 21:34 michael2 picked up bronze sq shield itemX: 3254, itemY: 3223
|
||||
[2019/10/26] 21:34 michael2 picked up bronze longsword itemX: 3254, itemY: 3223
|
||||
@@ -1,5 +0,0 @@
|
||||
[2019/10/27] 18:51 michael5 picked up bronze arrow itemX: 3248, itemY: 3226
|
||||
[2019/10/27] 18:51 michael5 picked up air rune itemX: 3248, itemY: 3226
|
||||
[2019/10/27] 18:51 michael5 picked up bones itemX: 3248, itemY: 3226
|
||||
[2019/10/27] 18:51 michael5 picked up iron arrow itemX: 3248, itemY: 3226
|
||||
[2019/10/27] 18:51 michael5 picked up bronze arrow itemX: 3249, itemY: 3226
|
||||
@@ -1,5 +0,0 @@
|
||||
[2019/10/28] 13:46 michael6 picked up bronze arrow itemX: 3224, itemY: 3223
|
||||
[2019/10/28] 13:48 michael6 picked up bronze arrow itemX: 3220, itemY: 3223
|
||||
[2019/10/28] 13:48 michael6 picked up bronze arrow itemX: 3222, itemY: 3222
|
||||
[2019/10/28] 13:48 michael6 picked up bronze arrow itemX: 3220, itemY: 3225
|
||||
[2019/10/28] 13:48 michael6 picked up bronze arrow itemX: 3220, itemY: 3226
|
||||
@@ -1,5 +0,0 @@
|
||||
[2019/10/28] 15:19 michael7 picked up bronze arrow itemX: 3234, itemY: 3222
|
||||
[2019/10/28] 15:19 michael7 picked up bronze arrow itemX: 3234, itemY: 3221
|
||||
[2019/10/28] 15:19 michael7 picked up bronze arrow itemX: 3234, itemY: 3220
|
||||
[2019/10/28] 15:19 michael7 picked up bronze arrow itemX: 3235, itemY: 3220
|
||||
[2019/10/28] 15:19 michael7 picked up bronze arrow itemX: 3234, itemY: 3218
|
||||
@@ -1,4 +0,0 @@
|
||||
[2019/10/28] 15:36 michael8 picked up bronze arrow itemX: 3219, itemY: 3221
|
||||
[2019/10/28] 15:43 michael8 picked up air talisman itemX: 3219, itemY: 3222
|
||||
[2019/10/28] 15:43 michael8 picked up herb itemX: 3219, itemY: 3222
|
||||
[2019/10/28] 15:43 michael8 picked up bones itemX: 3219, itemY: 3222
|
||||
@@ -1,2 +0,0 @@
|
||||
[2019/11/10] 22:46 spamtest1 picked up bones itemX: 3231, itemY: 3236
|
||||
[2019/11/10] 22:46 spamtest1 picked up bones itemX: 3231, itemY: 3236
|
||||
@@ -1,9 +0,0 @@
|
||||
[2019/10/04] 22:06 test picked up knife itemX: 3224, itemY: 3202
|
||||
[2019/10/04] 22:10 test picked up knife itemX: 3224, itemY: 3202
|
||||
[2019/10/04] 22:10 test picked up knife itemX: 3224, itemY: 3202
|
||||
[2019/10/04] 22:11 test picked up coins itemX: 3224, itemY: 3202
|
||||
[2019/10/04] 22:16 test picked up knife itemX: 3224, itemY: 3202
|
||||
[2019/10/04] 22:16 test picked up knife itemX: 3224, itemY: 3202
|
||||
[2019/10/04] 22:16 test picked up knife itemX: 3224, itemY: 3202
|
||||
[2019/10/04] 22:23 test picked up knife itemX: 3224, itemY: 3202
|
||||
[2019/10/04] 22:24 test picked up knife itemX: 3224, itemY: 3202
|
||||
@@ -1 +0,0 @@
|
||||
[2014/01/07] 18:47 andrew was killed by andrew1 absX: 3087 absY: 3900
|
||||
@@ -1 +0,0 @@
|
||||
[2019/11/21] 19:51 andrew5 was killed by andrew44 absX: 3104 absY: 3898
|
||||
@@ -1 +0,0 @@
|
||||
[2014/01/07] 18:47 andrew1 killed andrew absX: 3088 absY: 3900
|
||||
@@ -1,2 +0,0 @@
|
||||
[2014/01/14] 18:40 andrew45 said hi
|
||||
[2014/01/14] 18:48 andrew45 said hi
|
||||
@@ -1,10 +0,0 @@
|
||||
andrew1 was reported by andrew2, Offensive language, January, 06
|
||||
.
|
||||
|
||||
andrew2 was reported by andrew, Offensive language, January, 06
|
||||
-[01:09:58: andrew2]: asdfasdfa
|
||||
-[01:09:59: andrew2]: aa
|
||||
-[01:09:59: andrew2]: sdfa
|
||||
-[01:10:00: andrew]: adsfasdfadsfa
|
||||
.
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
[2019/11/08] 19:22 bot bought newcomer map from store id: 88 for 1 coins
|
||||
@@ -1 +0,0 @@
|
||||
[2019/11/08] 19:22 bot sold newcomer map to store id: 88 for 1 coins
|
||||
@@ -1,23 +0,0 @@
|
||||
[2019/10/04] 10:46 irdb sold thread to store id: 24 for 2 coins
|
||||
[2019/10/04] 10:47 irdb sold bronze dagger to store id: 88 for 8 coins
|
||||
[2019/10/04] 16:54 irdb sold bronze dagger to store id: 88 for 8 coins
|
||||
[2019/10/04] 16:54 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:54 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:54 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:54 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:54 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:54 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:54 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:54 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:54 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:54 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:55 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:55 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:55 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:55 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:55 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:55 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:55 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:55 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:55 irdb sold bucket to store id: 88 for 0 coins
|
||||
[2019/10/04] 16:55 irdb sold bucket to store id: 88 for 0 coins
|
||||
@@ -1,13 +0,0 @@
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Knife
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
[2020/01/03] 07:19 andrew was traded by andrew5 and recieved 1 Logs
|
||||
@@ -1,2 +0,0 @@
|
||||
[2019/10/27] 14:45 irdb2 was traded by irdb3 and recieved 1 Bronze dagger
|
||||
[2019/10/27] 14:45 irdb2 was traded by irdb3 and recieved 1 Wooden shield
|
||||
@@ -1 +0,0 @@
|
||||
0
|
||||