Shoutbox
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Topics - asshole_rule
Pages: [1] 1 « on: November 04, 2015, 03:08:35 PM » 2 « on: July 12, 2015, 11:33:31 AM »
Well for basically ANY tutorial that I post, they all have too much code to be posted with code tags. So I end up always needing to use pastebin. It's not a real problem, I just don't see a reason to have the limit, in the tutorial section at least. Examples: https://forum.moparscape.org/index.php/topic,671332.0.html/#msg4380153 And those are just the ones I remember needing to use pastebin for. I wouldn't be opposed to completely removing it, because I honestly don't see the point. But if we can just remove it for sections which require a pretty big amount of text EG(Server tutorials, Server development, Server Help, Private server client hacking) it would be convenient.
3 « on: July 11, 2015, 02:06:41 PM »
First things first, this is rodrigo + my code. A couple of people have been leaking so called Auction Houses, selling them, whatever, and I just want to say that this is in no way associated with any of them. Secondly, this code is from 2012. Obviously outdated and plenty of work to be done. It's an unfinished, yet still functional system. There will most likely be dupes, and glitches and what not. You'll have to fix them yourselves. The idea itself still isn't completely finished. If I was to use this code now, I would add a scroll bar, and add a search system. Remove the pages in general. It also could clearly be improved aesthetically, but whatever. It's actually a miracle I found this code on my computer. I had to recover a few files from my dropbox and amazingly found it. This isn't really an auction house either, lol. It's just click and buy. No real auctioning at all. This idea orginally came from [user]TheRedArmy[/user], so special thank you to him. I basically stole his whole idea. I guess he originally got his idea from W.O.W. You really screwed up my interface setup, I had it nice, clean and professionalism looking.
Especially since you used my idea, I have no problem with that, in fact I'm happy someone finished it, but you couldn't design your own interface instead of trying to copy mine?...
 https://www.youtube.com/watch?v=hpupAkuYyKYMAIN AUCTION CLASSES: http://pastebin.com/UWx1uNZHMAIN AUCTION CLASSES: http://pastebin.com/UWx1uNZHMAIN AUCTION CLASSES: http://pastebin.com/UWx1uNZHMAIN AUCTION CLASSES: http://pastebin.com/UWx1uNZHMAIN AUCTION CLASSES: http://pastebin.com/UWx1uNZHIn Player/Client.java public boolean auctionOpen; public int slotOffered = -1; public int priceDesired; public String sellerComment; public int page2; public int page; public void go() { if(auctionOpen) { if(slotOffered >= 0 && priceDesired >= 0 && sellerComment != null) { int itemId = this.playerItems[slotOffered]; int amount = this.playerItemsN[slotOffered]; Auction.getAuction().addOffer(this, sellerComment, itemId, amount, priceDesired); } } } in login or initialize method add Auction.getAuction().getHandler().login(this); In ClickingButtons.java case 43000: Auction.getAuction().getHandler().collectAll(c); break; case 42254: if(c.auctionOpen) { c.getPA().openUpBank(); } break; case 42252: c.sendMessage("Auction house help."); break; case 43002: case 43003: case 43004: case 43005: Auction.getAuction().getHandler().clickToBuy(c, actionButtonId); break; case 43008: c.page++; Auction.getAuction().changePage(c); break; case 43009: c.page--; Auction.getAuction().changePage(c); break; Now in your server find the packet that handles incoming text. It should be the same packet that handles when you enter a name for your clan chat. In the server I used the packet was (stupidly) named ClanChat.java. This is what it looks like. package server.model.players.packets;
import server.Server; import server.model.players.PacketType; import server.model.players.Player; import server.util.Misc; /** * Chat **/ public class ClanChat implements PacketType {
@Override public void processPacket(Player c, int packetType, int packetSize) { String textSent = Misc.longToPlayerName2(c.getInStream().readQWord()); textSent = textSent.replaceAll("_", " "); if(c.auctionOpen) { c.sellerComment = textSent; c.sendMessage(""+textSent); c.go(); return; } Server.clanChat.handleClanChat(c, textSent); } }
This is all i added to it if(c.auctionOpen) { c.sellerComment = textSent; c.sendMessage(""+textSent); c.go(); return; } BankX1 if(c.auctionOpen && c.Xamount >= 500 && c.Xamount <= 528) { int slot = c.Xamount - 500; if(slot == -1) slot = 0; c.slotOffered = slot; return; } else if (c.auctionOpen && c.Xamount >= 600) { int price = c.Xamount - 600; c.priceDesired = price; return; } BankX2 if(c.auctionOpen && c.Xamount >= 500 && c.Xamount <= 528) { int slot = c.Xamount - 500; if(slot == -1) slot = 0; c.slotOffered = slot; return; } else if (c.auctionOpen && c.Xamount >= 600) { int price = c.Xamount - 600; c.priceDesired = price; return; } Client side: In RSInterface.java public static void auctionHouse(TextDrawingArea[] TDA) { String path = "AuctionHouse"; RSInterface tab = addInterface(11000); addSprite(11001, 0, ""+path+"/InterfaceBack"); addSprite(11002, 0, ""+path+"/ItemBack"); addSprite(11003, 0, ""+path+"/ItemNameBack"); addButton(11004, 0, ""+path+"/Button", " Help"); addText(11005, "Help", 0xFF9900, false, true, -1, TDA, 1); addButton(11006, 0, ""+path+"/Button", " Bank"); addText(11007, "Bank", 0xFF9900, false, true, -1, TDA, 1); addButton(11008, 0, ""+path+"/Button", "Collect Items"); addText(11009, "Collect", 0xFF9900, false, true, -1, TDA, 1); addButton(11010, 0, ""+path+"/BuyItem", "Buy This Item"); addButton(11011, 0, ""+path+"/BuyItem", "Buy This Item"); addButton(11012, 0, ""+path+"/BuyItem", "Buy This Item"); addButton(11013, 0, ""+path+"/BuyItem", "Buy This Item"); addHoverText(11016, " Next Page ", "Next Page", TDA, 0, 0xFF9900, false, true, 63); addHoverText(11017, " Previous Page ", "Previous Page", TDA, 0, 0xFF9900, false, true, 82); addHoverText(11018, "123456789123456789", "Item Name Is Here", TDA, 1, 0xFF9900, true, true, 82); addText(11019, "Seller comment goes here",0xFF9900, false, true, -1, TDA, 1); addText(11020, "Seller comment goes here",0xFF9900, false, true, -1, TDA, 1); addText(11021, "Seller comment goes here",0xFF9900, false, true, -1, TDA, 1); addText(11022, "Seller comment goes here",0xFF9900, false, true, -1, TDA, 1); addText(11023, "Seller name",0xFF9900, false, true, -1, TDA, 1); addText(11024, "Seller name",0xFF9900, false, true, -1, TDA, 1); addText(11025, "Seller name",0xFF9900, false, true, -1, TDA, 1); addText(11026, "Seller name",0xFF9900, false, true, -1, TDA, 1); addText(11027, "Item Name",0xFF9900, false, true, -1, TDA, 1); addText(11028, "Item Name",0xFF9900, false, true, -1, TDA, 1); addText(11029, "Item Name",0xFF9900, false, true, -1, TDA, 1); addText(11030, "Item Name",0xFF9900, false, true, -1, TDA, 1); addText(11031, "Price",0xFF9900, false, true, -1, TDA, 1); addText(11032, "Price",0xFF9900, false, true, -1, TDA, 1); addText(11033, "Price",0xFF9900, false, true, -1, TDA, 1); addText(11034, "Price",0xFF9900, false, true, -1, TDA, 1); addInv(11035, 11000, 100, 100); tab.totalChildren(33); tab.child(0,11001,13,17); tab.child(1,11002,23,25); tab.child(2,11003,110,45); tab.child(3,11004,265,53); tab.child(4,11005,275,61); tab.child(5,11006,342,53); tab.child(6,11007,353,61); tab.child(7,11008,419,53); tab.child(8,11009,433,61); tab.child(9,11010,37,112); tab.child(10,11011,37,159); tab.child(11,11012,37,159 + 47); tab.child(12,11013,37,159 + 47 + 47); tab.child(13,11016,39,305); tab.child(14,11017,385,305); tab.child(15,11018,140,60); tab.child(16,11019,50,115); tab.child(17,11020,50,160); tab.child(18,11021,50,205); tab.child(19,11022,50,255); tab.child(20,11023,50,137); tab.child(21,11024,50,183); tab.child(22,11025,50,183 + 46); tab.child(23,11026,50,183 + 46 + 46); tab.child(24,11027,210,135); tab.child(25,11028,210,180); tab.child(26,11029,210,180 + 46); tab.child(27,11030,210,180 + 46 + 46); tab.child(28,11031,333,135); tab.child(29,11032,333,180); tab.child(30,11033,333,180 + 46); tab.child(31,11034,333,180 + 46 + 46); tab.child(32,11035,17,50); }
public static void addInv(int id, int pID, int h, int w) { RSInterface Tab = interfaceCache[id] = new RSInterface(); Tab.inv = new int[h * w]; Tab.invStackSizes = new int[h * w]; for(int i1 = 0; i1 < h * w; i1++) { Tab.inv[i1] = 0; Tab.invStackSizes[i1] = 0; } Tab.spritesX = new int[20]; Tab.spritesY = new int[20]; for(int i2 = 0; i2 < 20; i2++) { Tab.spritesX[i2] = 0; Tab.spritesY[i2] = 0; } Tab.type = 2; Tab.height = h; Tab.width = w; // Tab.mOverInterToTrigger = -1; Tab.isMouseoverTriggered = -1; Tab.scrollMax = 0; Tab.id = id; Tab.parentID = pID; } search for class44 = add auctionHouse(textDrawingAreas); sprites: Download Auction.House.zip @ UppITThere is some client code that I was unable to recover. It's not a lot of code but you will probably need it to get it fully functional. It has to do with sending the items information from the client to the server via that Clan Chat packet we edited. Credits to an old pal Rodrigo and TheRedArmy. Edit: If you whip up some of the client code that I lost and post it here, i'll add it and give you credits/rep. Cheers Enjoy guys.
4 « on: June 30, 2015, 08:15:48 PM »
Does anyone play this game? I'm a huge dragonball fan and I bought it probably 2 weeks after it came out, but didn't start playing until now, lol.
What're your thoughts on the game? I'm on the fence about it right now. It's probably the best dragonball game to be released to date, but it's certainly lacking. Like every other dbz game, it's pretty much just a button smasher. My girlfriend managed to beat me her first time ever playing, and she didn't even know the controls (although it could be because I'm horrible). I also would've liked to see more characters. I think adding characters can only make the game better. It's missing some of my favorites, such as Janemba, Dabura, Baby, etc. Haven't tried online yet, so if someone could tell me how it is for them, that'd be cool.
What're your thoughts and experiences with the game?
5 « on: September 20, 2014, 05:53:53 PM »
I like to find underground rappers from Florida.
don't judge him just cause how he looks, lol.
6 « on: September 03, 2014, 06:40:10 PM »
its legal for me to have sex your mom now
or dad...
7 « on: July 25, 2014, 02:38:28 PM »
First of, if there's already a topic for this, forgive me. Anyway, I bought a controller that lets me play PS2 games on my computer (although this topic is open to old xbox games too), and it made me start thinking of all the old PS2 games that I used to play, and how I want to replay through them all. My favs were: Jak 3  Maximo: Army of Zin  War of the Monsters  Jak and Maximo had amazing story modes with tons of replay value. Not to mention completely bad ass main characters. War of the Monsters was just fun to run around destroying cities. What were your favorite PS2 and xbox games? 8 « on: July 24, 2014, 12:50:52 PM » Hi, I'm looking to assemble a team of 1 or 2 other server developers, to help me create an old school type feel private server. The only requirements I have is that you are trustworthy, and are able to create your own content with your own code. The server I am looking to create is NOT A REMAKE, but will in fact include very close replicas to some of the content in RuneScape 2007, but also our own, fresh ideas. I don't have 1 main focus on the server, but instead intend to implement all aspects of RuneScape's game play (I.E skilling/pking/pvm). My general taste for servers are slow-medium EXP rate with reasonable drop rates, but to the point where it's still an accomplishment to get a rare drop. I do not currently have a goal yet on whether I want to host this, or release it. But anyways, if you want to apply, we can talk more about the server over Skype. Some of our current features are: - Fully Entity based combat
- Excellent and balanced NPC drop system
- POH base
- Dwarf Multicannon
- Reworked NPC and Player Updating
The server is a very bare, 317 Emulous, based off of Advocatus Diaboli's release. It is clearly lacking content but I intend to recreate boatloads of content that we are missing.   If you wish to apply, please leave a reply below filling out the following. Name: Experience: Skype: Anything else: Thanks  9 « on: December 07, 2011, 08:02:11 PM »
Been leaked and released everywhere but here, and I'm tired of people selling something that's released. Remove all your client side following shit. Post errors!Links: ; data ; classes
Ty RandQm FIRST: Download clip.rar and extract it and place this folder inside your server folder - it should now look like src/server/clip Download: Click here![/url] SECOND: Download world.rar and extract it, place this folder inside your data directory. e.g servername/Data/WORLD FOLDER HERE Download: Click here![/url] THIRD: Create a new class, name it Pathfinder.java - paste the following code in it and save it to your server.model.players folder. package server.model.players;
import java.util.LinkedList;
import server.clip.region.Region; import server.model.players.Client;
public class PathFinder {
private static final PathFinder pathFinder = new PathFinder();
public static PathFinder getPathFinder() { return pathFinder; }
public PathFinder() { }
public void findRoute(Client c, int destX, int destY, boolean moveNear, int xLength, int yLength) { if (destX == c.getLocalX() && destY == c.getLocalY() && !moveNear) { c.sendMessage("ERROR!"); return; } destX = destX - 8 * c.getMapRegionX(); destY = destY - 8 * c.getMapRegionY(); int[][] via = new int[104][104]; int[][] cost = new int[104][104]; LinkedList<Integer> tileQueueX = new LinkedList<Integer>(); LinkedList<Integer> tileQueueY = new LinkedList<Integer>(); for (int xx = 0; xx < 104; xx++) { for (int yy = 0; yy < 104; yy++) { cost[xx][yy] = 99999999; } } int curX = c.getLocalX(); int curY = c.getLocalY(); via[curX][curY] = 99; cost[curX][curY] = 0; int tail = 0; tileQueueX.add(curX); tileQueueY.add(curY); boolean foundPath = false; int pathLength = 4000; while (tail != tileQueueX.size() && tileQueueX.size() < pathLength) { curX = tileQueueX.get(tail); curY = tileQueueY.get(tail); int curAbsX = c.getMapRegionX() * 8 + curX; int curAbsY = c.getMapRegionY() * 8 + curY; if (curX == destX && curY == destY) { foundPath = true; break; } tail = (tail + 1) % pathLength; int thisCost = cost[curX][curY] + 1; if (curY > 0 && via[curX][curY - 1] == 0 && (Region.getClipping(curAbsX, curAbsY - 1, c.heightLevel) & 0x1280102) == 0) { tileQueueX.add(curX); tileQueueY.add(curY - 1); via[curX][curY - 1] = 1; cost[curX][curY - 1] = thisCost; } if (curX > 0 && via[curX - 1][curY] == 0 && (Region.getClipping(curAbsX - 1, curAbsY, c.heightLevel) & 0x1280108) == 0) { tileQueueX.add(curX - 1); tileQueueY.add(curY); via[curX - 1][curY] = 2; cost[curX - 1][curY] = thisCost; } if (curY < 104 - 1 && via[curX][curY + 1] == 0 && (Region.getClipping(curAbsX, curAbsY + 1, c.heightLevel) & 0x1280120) == 0) { tileQueueX.add(curX); tileQueueY.add(curY + 1); via[curX][curY + 1] = 4; cost[curX][curY + 1] = thisCost; } if (curX < 104 - 1 && via[curX + 1][curY] == 0 && (Region.getClipping(curAbsX + 1, curAbsY, c.heightLevel) & 0x1280180) == 0) { tileQueueX.add(curX + 1); tileQueueY.add(curY); via[curX + 1][curY] = 8; cost[curX + 1][curY] = thisCost; } if (curX > 0 && curY > 0 && via[curX - 1][curY - 1] == 0 && (Region.getClipping(curAbsX - 1, curAbsY - 1, c.heightLevel) & 0x128010e) == 0 && (Region.getClipping(curAbsX - 1, curAbsY, c.heightLevel) & 0x1280108) == 0 && (Region.getClipping(curAbsX, curAbsY - 1, c.heightLevel) & 0x1280102) == 0) { tileQueueX.add(curX - 1); tileQueueY.add(curY - 1); via[curX - 1][curY - 1] = 3; cost[curX - 1][curY - 1] = thisCost; } if (curX > 0 && curY < 104 - 1 && via[curX - 1][curY + 1] == 0 && (Region.getClipping(curAbsX - 1, curAbsY + 1, c.heightLevel) & 0x1280138) == 0 && (Region.getClipping(curAbsX - 1, curAbsY, c.heightLevel) & 0x1280108) == 0 && (Region.getClipping(curAbsX, curAbsY + 1, c.heightLevel) & 0x1280120) == 0) { tileQueueX.add(curX - 1); tileQueueY.add(curY + 1); via[curX - 1][curY + 1] = 6; cost[curX - 1][curY + 1] = thisCost; } if (curX < 104 - 1 && curY > 0 && via[curX + 1][curY - 1] == 0 && (Region.getClipping(curAbsX + 1, curAbsY - 1, c.heightLevel) & 0x1280183) == 0 && (Region.getClipping(curAbsX + 1, curAbsY, c.heightLevel) & 0x1280180) == 0 && (Region.getClipping(curAbsX, curAbsY - 1, c.heightLevel) & 0x1280102) == 0) { tileQueueX.add(curX + 1); tileQueueY.add(curY - 1); via[curX + 1][curY - 1] = 9; cost[curX + 1][curY - 1] = thisCost; } if (curX < 104 - 1 && curY < 104 - 1 && via[curX + 1][curY + 1] == 0 && (Region.getClipping(curAbsX + 1, curAbsY + 1, c.heightLevel) & 0x12801e0) == 0 && (Region.getClipping(curAbsX + 1, curAbsY, c.heightLevel) & 0x1280180) == 0 && (Region.getClipping(curAbsX, curAbsY + 1, c.heightLevel) & 0x1280120) == 0) { tileQueueX.add(curX + 1); tileQueueY.add(curY + 1); via[curX + 1][curY + 1] = 12; cost[curX + 1][curY + 1] = thisCost; } } if (!foundPath) { if (moveNear) { int i_223_ = 1000; int thisCost = 100; int i_225_ = 10; for (int x = destX - i_225_; x <= destX + i_225_; x++) { for (int y = destY - i_225_; y <= destY + i_225_; y++) { if (x >= 0 && y >= 0 && x < 104 && y < 104 && cost[x][y] < 100) { int i_228_ = 0; if (x < destX) { i_228_ = destX - x; } else if (x > destX + xLength - 1) { i_228_ = x - (destX + xLength - 1); } int i_229_ = 0; if (y < destY) { i_229_ = destY - y; } else if (y > destY + yLength - 1) { i_229_ = y - (destY + yLength - 1); } int i_230_ = i_228_ * i_228_ + i_229_ * i_229_; if (i_230_ < i_223_ || (i_230_ == i_223_ && (cost[x][y] < thisCost))) { i_223_ = i_230_; thisCost = cost[x][y]; curX = x; curY = y; } } } } if (i_223_ == 1000) { return; } } else { return; } } tail = 0; tileQueueX.set(tail, curX); tileQueueY.set(tail++, curY); int l5; for (int j5 = l5 = via[curX][curY]; curX != c.getLocalX() || curY != c.getLocalY(); j5 = via[curX][curY]) { if (j5 != l5) { l5 = j5; tileQueueX.set(tail, curX); tileQueueY.set(tail++, curY); } if ((j5 & 2) != 0) { curX++; } else if ((j5 & 8) != 0) { curX--; } if ((j5 & 1) != 0) { curY++; } else if ((j5 & 4) != 0) { curY--; } } c.resetWalkingQueue(); int size = tail--; int pathX = c.getMapRegionX() * 8 + tileQueueX.get(tail); int pathY = c.getMapRegionY() * 8 + tileQueueY.get(tail); c.addToWalkingQueue(localize(pathX, c.getMapRegionX()), localize(pathY, c.getMapRegionY())); for (int i = 1; i < size; i++) { tail--; pathX = c.getMapRegionX() * 8 + tileQueueX.get(tail); pathY = c.getMapRegionY() * 8 + tileQueueY.get(tail); c.addToWalkingQueue(localize(pathX, c.getMapRegionX()), localize(pathY, c.getMapRegionY())); } }
public int localize(int x, int mapRegion) { return x - 8 * mapRegion; }
} FOURTH: Open up playerAssistant.java and add this anywhere you like. public void playerWalk(int x, int y) { PathFinder.getPathFinder().findRoute(c, x, y, true, 1, 1); } Then search for public void followPlayer() and replace it with the one below. public void followPlayer() { if (PlayerHandler.players[c.followId] == null || PlayerHandler.players[c.followId].isDead) { resetFollow(); return; } if (c.freezeTimer > 0) { return; } if (c.isDead || c.playerLevel[3] <= 0) return;
int otherX = PlayerHandler.players[c.followId].getX(); int otherY = PlayerHandler.players[c.followId].getY();
boolean sameSpot = (c.absX == otherX && c.absY == otherY);
boolean hallyDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
boolean rangeWeaponDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 4); boolean bowDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 6); boolean mageDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 7);
boolean castingMagic = (c.usingMagic || c.mageFollow || c.autocasting || c.spellId > 0) && mageDistance; boolean playerRanging = (c.usingRangeWeapon) && rangeWeaponDistance; boolean playerBowOrCross = (c.usingBow) && bowDistance;
if (!c.goodDistance(otherX, otherY, c.getX(), c.getY(), 25)) { c.followId = 0; resetFollow(); return; } c.faceUpdate(c.followId + 32768); if (!sameSpot) { if (c.playerIndex > 0 && !c.usingSpecial && c.inWild()) { if (c.usingSpecial && (playerRanging || playerBowOrCross)) { c.stopMovement(); return; } if (castingMagic || playerRanging || playerBowOrCross) { c.stopMovement(); return; } if (c.getCombat().usingHally() && hallyDistance) { c.stopMovement(); return; } } } if (otherX == c.absX && otherY == c.absY) { int r = Misc.random(3); switch (r) { case 0: walkTo(0, -1); break; case 1: walkTo(0, 1); break; case 2: walkTo(1, 0); break; case 3: walkTo(-1, 0); break; } } else if (c.isRunning2) { if (otherY > c.getY() && otherX == c.getX()) { playerWalk(otherX, otherY - 1); } else if (otherY < c.getY() && otherX == c.getX()) { playerWalk(otherX, otherY + 1); } else if (otherX > c.getX() && otherY == c.getY()) { playerWalk(otherX - 1, otherY); } else if (otherX < c.getX() && otherY == c.getY()) { playerWalk(otherX + 1, otherY); } else if (otherX < c.getX() && otherY < c.getY()) { playerWalk(otherX + 1, otherY + 1); } else if (otherX > c.getX() && otherY > c.getY()) { playerWalk(otherX - 1, otherY - 1); } else if (otherX < c.getX() && otherY > c.getY()) { playerWalk(otherX + 1, otherY - 1); } else if (otherX > c.getX() && otherY < c.getY()) { playerWalk(otherX + 1, otherY - 1); } } else { if (otherY > c.getY() && otherX == c.getX()) { playerWalk(otherX, otherY - 1); } else if (otherY < c.getY() && otherX == c.getX()) { playerWalk(otherX, otherY + 1); } else if (otherX > c.getX() && otherY == c.getY()) { playerWalk(otherX - 1, otherY); } else if (otherX < c.getX() && otherY == c.getY()) { playerWalk(otherX + 1, otherY); } else if (otherX < c.getX() && otherY < c.getY()) { playerWalk(otherX + 1, otherY + 1); } else if (otherX > c.getX() && otherY > c.getY()) { playerWalk(otherX - 1, otherY - 1); } else if (otherX < c.getX() && otherY > c.getY()) { playerWalk(otherX + 1, otherY - 1); } else if (otherX > c.getX() && otherY < c.getY()) { playerWalk(otherX - 1, otherY + 1); } } c.faceUpdate(c.followId+32768); } FIFTH: Open up Player.java and add this in where else you want it. public int getLocalX() { return getX() - 8 * getMapRegionX(); }
public int getLocalY() { return getY() - 8 * getMapRegionY(); } SIXTH: Open up FollowPlayer.java which will be in your packets folder and replace it with this.. Probably the same as you have already to be honest. package server.model.players.packets;
import server.Server; import server.model.players.Client; import server.model.players.PacketType;
public class FollowPlayer implements PacketType {
@Override public void processPacket(Client c, int packetType, int packetSize) { int followPlayer = c.getInStream().readUnsignedWordBigEndian(); if(Server.playerHandler.players[followPlayer] == null) { return; } c.playerIndex = 0; c.npcIndex = 0; c.mageFollow = false; c.usingBow = false; c.usingRangeWeapon = false; c.followDistance = 1; c.followId = followPlayer; } } SEVENTH: Open up Server.java and add these imports import server.clip.region.ObjectDef; import server.clip.region.Region; Then add these under the main method. (public static void main) ObjectDef.loadConfig(); Region.load(); Credits to Palidino76 for all the code and everyone who leaked it. Post errors!Edit: Moved onto better things then PI, expect some big releases soon.
10 « on: September 16, 2011, 02:54:33 PM »
If you don't like this tutorial or you're mad because I released it, piss off. Firstly in your client in Client.java 20,000 char limit, so i posted it on pastebin, heres the link: http://pastebin.com/jxnw9PZkOpen Entity.java Search for public final void updateHitData(int j, int k, int l) { for(int i1 = 0; i1 < 4; i1++) if(hitsLoopCycle[i1] <= l) { hitArray[i1] = k * ((client.newDamage == true && k > 0) ? 10 : 1); if (client.newDamage && k > 0) { hitArray[i1] += new java.util.Random().nextInt(9); } hitMarkTypes[i1] = j; hitsLoopCycle[i1] = l + 70; return; } }
Replace it with: public int[] hitmarkMove = new int[4]; public int[] hitmarkTrans = new int[4]; public int[] hitIcon = new int[4]; public final void updateHitData(int markType, int damage, int l, int icon) { for(int i1 = 0; i1 < 4; i1++) if(hitsLoopCycle[i1] <= l) { hitIcon[i1] = icon; hitmarkMove[i1] = 5; hitmarkTrans[i1] = 230; hitArray[i1] = damage; hitMarkTypes[i1] = markType; hitsLoopCycle[i1] = l + 70; return; } }
Done with Entity.java Open TextDrawingArea.java Find public TextDrawingArea(boolean flag, String s, StreamLoader streamLoader) { aByteArrayArray1491 = new byte[256][]; anIntArray1492 = new int[256]; anIntArray1493 = new int[256]; anIntArray1494 = new int[256]; anIntArray1495 = new int[256]; anIntArray1496 = new int[256]; aRandom1498 = new Random(); aBoolean1499 = false; Stream stream = new Stream(streamLoader.getDataForName(s + ".dat")); Stream stream_1 = new Stream(streamLoader.getDataForName("index.dat")); stream_1.currentOffset = stream.readUnsignedWord() + 4; int k = stream_1.readUnsignedByte(); if(k > 0) stream_1.currentOffset += 3 * (k - 1); for(int l = 0; l < 256; l++) { anIntArray1494[l] = stream_1.readUnsignedByte(); anIntArray1495[l] = stream_1.readUnsignedByte(); int i1 = anIntArray1492[l] = stream_1.readUnsignedWord(); int j1 = anIntArray1493[l] = stream_1.readUnsignedWord(); int k1 = stream_1.readUnsignedByte(); int l1 = i1 * j1; aByteArrayArray1491[l] = new byte[l1]; if(k1 == 0) { for(int i2 = 0; i2 < l1; i2++) aByteArrayArray1491[l][i2] = stream.readSignedByte();
} else if(k1 == 1) { for(int j2 = 0; j2 < i1; j2++) { for(int l2 = 0; l2 < j1; l2++) aByteArrayArray1491[l][j2 + l2 * i1] = stream.readSignedByte(); } } if(j1 > anInt1497 && l < 128) anInt1497 = j1; anIntArray1494[l] = 1; anIntArray1496[l] = i1 + 2; int k2 = 0; for(int i3 = j1 / 7; i3 < j1; i3++) k2 += aByteArrayArray1491[l][i3 * i1]; if(k2 <= j1 / 7) { anIntArray1496[l]--; anIntArray1494[l] = 0; } k2 = 0; for(int j3 = j1 / 7; j3 < j1; j3++) k2 += aByteArrayArray1491[l][(i1 - 1) + j3 * i1]; if(k2 <= j1 / 7) anIntArray1496[l]--; } if(flag) { anIntArray1496[32] = anIntArray1496[73]; } else { anIntArray1496[32] = anIntArray1496[105]; } } Replace it with public TextDrawingArea(boolean flag, String s, StreamLoader streamLoader) { try { int length = (s.equals("hit_full") || s.equals("critical_full")) ? 58 : 256; aByteArrayArray1491 = new byte[length][]; anIntArray1492 = new int[length]; anIntArray1493 = new int[length]; anIntArray1494 = new int[length]; anIntArray1495 = new int[length]; anIntArray1496 = new int[length]; aRandom1498 = new Random(); aBoolean1499 = false; Stream stream = new Stream(streamLoader.getDataForName(s + ".dat")); Stream stream_1 = new Stream(streamLoader.getDataForName("index.dat")); stream_1.currentOffset = stream.readUnsignedWord() + 4; int k = stream_1.readUnsignedByte(); if(k > 0) stream_1.currentOffset += 3 * (k - 1); for(int l = 0; l < length; l++) { anIntArray1494[l] = stream_1.readUnsignedByte(); anIntArray1495[l] = stream_1.readUnsignedByte(); int i1 = anIntArray1492[l] = stream_1.readUnsignedWord(); int j1 = anIntArray1493[l] = stream_1.readUnsignedWord(); int k1 = stream_1.readUnsignedByte(); int l1 = i1 * j1; aByteArrayArray1491[l] = new byte[l1]; if(k1 == 0) { for(int i2 = 0; i2 < l1; i2++) aByteArrayArray1491[l][i2] = stream.readSignedByte();
} else if(k1 == 1) { for(int j2 = 0; j2 < i1; j2++) { for(int l2 = 0; l2 < j1; l2++) aByteArrayArray1491[l][j2 + l2 * i1] = stream.readSignedByte(); } } if(j1 > anInt1497 && l < 128) anInt1497 = j1; anIntArray1494[l] = 1; anIntArray1496[l] = i1 + 2; int k2 = 0; for(int i3 = j1 / 7; i3 < j1; i3++) k2 += aByteArrayArray1491[l][i3 * i1]; if(k2 <= j1 / 7) { anIntArray1496[l]--; anIntArray1494[l] = 0; } k2 = 0; for(int j3 = j1 / 7; j3 < j1; j3++) k2 += aByteArrayArray1491[l][(i1 - 1) + j3 * i1]; if(k2 <= j1 / 7) anIntArray1496[l]--; } if(flag) { anIntArray1496[32] = anIntArray1496[73]; } else { anIntArray1496[32] = anIntArray1496[105]; } } catch (Exception _ex) {} }
Finished with TextDrawingArea.java Open Sprite.java Add this method public void drawTransparentSprite(int i, int j, int opacity) { int k = opacity; i += anInt1442; j += anInt1443; int i1 = i + j * DrawingArea.width; int j1 = 0; int k1 = myHeight; int l1 = myWidth; int i2 = DrawingArea.width - l1; int j2 = 0; if(j < DrawingArea.topY) { int k2 = DrawingArea.topY - j; k1 -= k2; j = DrawingArea.topY; j1 += k2 * l1; i1 += k2 * DrawingArea.width; } if(j + k1 > DrawingArea.bottomY) k1 -= (j + k1) - DrawingArea.bottomY; if(i < DrawingArea.topX) { int l2 = DrawingArea.topX - i; l1 -= l2; i = DrawingArea.topX; j1 += l2; i1 += l2; j2 += l2; i2 += l2; } if(i + l1 > DrawingArea.bottomX) { int i3 = (i + l1) - DrawingArea.bottomX; l1 -= i3; j2 += i3; i2 += i3; } if(!(l1 <= 0 || k1 <= 0)) { method351(j1, l1, DrawingArea.pixels, myPixels, j2, k1, i2, k, i1); } }
Finished with sprite.java The sprites/fonts are all in one package link: ----------------------------------------------------------- You can pack the fonts in cache via Toms Cache suite, Load your cache select View/Edit Image Archives then Title Create a new image group called "hit_full.dat" pack the images in there from the folder. Do the same for "critical_full.dat" (although not entirely necessary). IF YOU HAVE A PROBLEM WITH THE FONTS YOU MUST REPACK THEM! -.- Server sided for PI: Player.java Search protected void appendHitUpdate(Stream str) { synchronized(this) { str.writeByte(getHitDiff()); // What the perseon got 'hit' for if (poisonMask == 1) { str.writeByteA(2); } else if (getHitDiff() > 0) { str.writeByteA(1); // 0: red hitting - 1: blue hitting } else { str.writeByteA(0); // 0: red hitting - 1: blue hitting } if (playerLevel[3] <= 0) { playerLevel[3] = 0; isDead = true; } str.writeByteC(playerLevel[3]); // Their current hp, for HP bar str.writeByte(getLevelForXP(playerXP[3])); // Their max hp, for HP bar } }
protected void appendHitUpdate2(Stream str) { synchronized(this) { str.writeByte(hitDiff2); // What the perseon got 'hit' for if (poisonMask == 2) { str.writeByteS(2); poisonMask = -1; } else if (hitDiff2 > 0) { str.writeByteS(1); // 0: red hitting - 1: blue hitting } else { str.writeByteS(0); // 0: red hitting - 1: blue hitting } if (playerLevel[3] <= 0) { playerLevel[3] = 0; isDead = true; } str.writeByte(playerLevel[3]); // Their current hp, for HP bar str.writeByteC(getLevelForXP(playerXP[3])); // Their max hp, for HP bar } } Replace with protected void appendHitUpdate(Stream str) { synchronized(this) { str.writeByte(getHitDiff()); // What the perseon got 'hit' for str.writeByteS(hitMask); if (playerLevel[3] <= 0) { playerLevel[3] = 0; isDead = true; } str.writeByte(hitIcon); str.writeByteC(playerLevel[3]); // Their current hp, for HP bar str.writeByte(getLevelForXP(playerXP[3])); // Their max hp, for HP bar } System.out.println("hitUpdate1: " +hitDiff); }
protected void appendHitUpdate2(Stream str) { synchronized(this) { str.writeByte(hitDiff2); // What the perseon got 'hit' for str.writeByteS(hitMask2); if (playerLevel[3] <= 0) { playerLevel[3] = 0; isDead = true; } str.writeByte(hitIcon2); str.writeByte(playerLevel[3]); // Their current hp, for HP bar str.writeByteC(getLevelForXP(playerXP[3])); // Their max hp, for HP bar } }
You may need to declare public int maxHp = getLevelForXP(playerXP[3]);
Still in player.java add this method public void handleHitMask(int damage, int mask, int icon) { if (!hitUpdateRequired) { hitUpdateRequired = true; hitDiff = damage; hitMask = mask; hitIcon = icon; } else if (!hitUpdateRequired2) { hitUpdateRequired2 = true; hitDiff2 = damage; hitMask2 = mask; hitIcon2 = icon; } updateRequired = true; } Declare public int hitMask, hitIcon, hitMask2, hitIcon2;
Done in player.java Open NPC.java Search public void appendHitUpdate(Stream str) { if (HP <= 0) { isDead = true; } str.writeByteC(hitDiff); if (hitDiff > 0) { str.writeByteS(1); } else { str.writeByteS(0); } str.writeByteS(HP); str.writeByteC(MaxHP); } Replace with public void appendHitUpdate(Stream str) { if (HP <= 0) { isDead = true; } str.writeByteC(hitDiff); str.writeByteS(hitMask); str.writeByte(hitIcon); str.writeByteS(HP); str.writeByteC(MaxHP); } Same for hitupdate 2 replace public void appendHitUpdate2(Stream str) { if (HP <= 0) { isDead = true; } str.writeByteA(hitDiff2); if (hitDiff2 > 0) { str.writeByteC(1); } else { str.writeByteC(0); } str.writeByteA(HP); str.writeByte(MaxHP); } With public void appendHitUpdate2(Stream str) { if (HP <= 0) { isDead = true; } str.writeByteA(hitDiff2); str.writeByteC(hitMask2); str.writeByte(hitIcon2); str.writeByteA(HP); str.writeByte(MaxHP); }
Still in NPC.java declare public int hitIcon, hitIcon2, hitMask, hitMask2;
Done in NPC.java Open NPCHandler.java Search public void multiAttackDamage(int i) { int max = getMaxHit(i); for (int j = 0; j < Server.playerHandler.players.length; j++) { if (Server.playerHandler.players[j] != null) { Client c = (Client)Server.playerHandler.players[j]; if (c.isDead || c.heightLevel != npcs[i].heightLevel) continue; if (Server.playerHandler.players[j].goodDistance(c.absX, c.absY, npcs[i].absX, npcs[i].absY, 15)) { if (npcs[i].attackType == 2) { if (!c.prayerActive[16]) { if (Misc.random(500) + 200 > Misc.random(c.getCombat().mageDef())) { int dam = Misc.random(max); c.dealDamage(dam); c.handleHitMask(dam); } else { c.dealDamage(0); c.handleHitMask(0); } } else { c.dealDamage(0); c.handleHitMask(0); } } else if (npcs[i].attackType == 1) { if (!c.prayerActive[17]) { int dam = Misc.random(max); if (Misc.random(500) + 200 > Misc.random(c.getCombat().calculateRangeDefence())) { c.dealDamage(dam); c.handleHitMask(dam); } else { c.dealDamage(0); c.handleHitMask(0); } } else { c.dealDamage(0); c.handleHitMask(0); } } if (npcs[i].endGfx > 0) { c.gfx0(npcs[i].endGfx); } } c.getPA().refreshSkill(3); } } } Replace with public void multiAttackDamage(int i) { int max = getMaxHit(i); for (int j = 0; j < Server.playerHandler.players.length; j++) { if (Server.playerHandler.players[j] != null) { Client c = (Client)Server.playerHandler.players[j]; if (c.isDead || c.heightLevel != npcs[i].heightLevel) continue; if (Server.playerHandler.players[j].goodDistance(c.absX, c.absY, npcs[i].absX, npcs[i].absY, 15)) { if (npcs[i].attackType == 2) { if (!c.prayerActive[16]) { if (Misc.random(500) + 200 > Misc.random(c.getCombat().mageDef())) { int dam = Misc.random(max); c.dealDamage(dam); c.handleHitMask(dam,2,2); } else { c.dealDamage(0); c.handleHitMask(0,1,1); } } else { c.dealDamage(0); c.handleHitMask(0,1,1); } } else if (npcs[i].attackType == 1) { if (!c.prayerActive[17]) { int dam = Misc.random(max); if (Misc.random(500) + 200 > Misc.random(c.getCombat().calculateRangeDefence())) { c.dealDamage(dam); c.handleHitMask(dam,1,1); } else { c.dealDamage(0); c.handleHitMask(0,2,2); } } else { c.dealDamage(0); c.handleHitMask(0,1,1); } } if (npcs[i].endGfx > 0) { c.gfx0(npcs[i].endGfx); } } c.getPA().refreshSkill(3); } } } Search for c.logoutDelay = System.currentTimeMillis(); (in the applyDamage method)
Right under there add if(npcs[i].attackType == 0){//Melee c.handleHitMask(damage,0,0); } if(npcs[i].attackType == 1){//Range c.handleHitMask(damage,0,1); } if(npcs[i].attackType == 2){//Magic c.handleHitMask(damage,0,2); }
Done in NPCHandler.java 20,000 char limit, so heres the CombatAssistant codes: http://pastebin.com/ZNNhEzSzvideo... Credits: Me Some guy for the sprites if u have errors, try to post them and i'll try to fix them. I'm busy alot though so be patient. 11 « on: January 29, 2011, 10:09:54 AM » CHANGE THE IP IN THE CLIENT. IM TIRED OF KIDS LOGGING IN MY SERVER AND FREAKING OUT.server package: Tired of getting bitched at. Thank I Vain I me for the anti leech fix someone told me that Vain didnt do shit so i heres MY client with no anti leeches. And the exploit in the server is in client.java search for handleObject and edit it. If anyone hosts this feel free to add my msn so i can play. I find the pking very fun. if you want to enable the x10 hits go into client.java server sided and search newDamage. Change it to true; for the idiots...: client.java search: public void handleObject(int i) { change all that code to this public void handleObject(int i) { /*if (i == 30817) { for (int obj = 0; obj < Config.SPECIAL.length; obj++) { getItems().addItem(Config.SPECIAL[obj], 2147000000); pcPoints = 50000;*/ } Gratz, you just fixed the exploit.  Epsilion has been something I have been working on since late 2009. It started off as a Delta base and I moved into Project Insanity during V3. I have been working on an off on this project until now, i switched to a Project insanity base and have been working on it since early december. Here's some info on what i have added today! Sorry ahead of time for my mic being on while recording my vids, sometimes you hear my dads laughter and the TV pretty much all the time so yea, i cba to re-do atm as I'm VERY busy!Latest Updates belowEpsilion switches to Project insanity!PicturesHope you guys enjoy the thread!Cool ones are bold and underlined602 items added 525 gfx added 525 emotes added 602 npcs Ancient curse prayers under construction (only turmoil so far)Fixed Dragon hide equipping requirment Godwars dungeon added needs some work still New home - Lunar isle Added farming to new home Added Woodcutting to the new home also. Added Inferno Adze Fixed the godsword specs Added a few activity logs Fixed all dupes i am aware of Changed Exp rate from 300 to 800 + the server bonus, fairly good exp rate Cut down on some of the cache memory Added an Npc to sell barrows gloves for 20 - currently only way to get them (removed from pest control) Added a new starter that gives 50 to any combat stat you wish Added a casket system, Caskets drop from bosses and Abby demons and Dark beasts, rare drop - they can give you shit, or a rare item  Updated jads looks, only 1 wave also Perfect switching, good for hybriding Ability to Rush Redid some drops and drop rates 100% RUNESCAPE AUTOCASTING creds to underoath <3Added new gfx and emote to teleports Warriors guild is added - also needs work Chaotic maul Updated some out-dated sprites, mostly in mage book Fixed glowing in the mage book 100% switching, good for hybriding VID IS AT THE BOTTOM
Minigames Fight caves Fight pits Barrows Duel arena Pest Control Warriors Guild
Godwars Godwars includes Armadyl, Bandos, and Saradomin minions in the main room. Kill 20 of the minions loyal to the boss you wish to fight. After gaining 20 kills, head to the door of your choice. Now safe and pray . All bosses drop there own type of Hilt ex.(Armadyl drops Armadyl hilt ect.) Bandos drops bandos armor. Along with armadyl droping Armadyl armor
Casket system After having a complaint from one of my earlier beta testers saying that my drop rates are to "rediculously hard". It got me thinking, how can I improve drops and make it so that not only make the players happy but helps the economy to! So i thought this up, not to hard to make, and there is a fair chance of getting Either a rare item,a rune item, some miscellaneous items, or just absolutley nothing. Some of the featured rare items are, All 4 spirit shields, a dark bow, a Whip, a Dragon Platebody, Dragon boots, Robin hood hat, Disk of Returning, and last but not least H'ween masks! These can also be sold on the street. But beware, you're risking your own money if you buy a casket and get shit!
https://www.youtube.com/watch?v=gaOgtOgww8s
Pking Pking on Epsilion is just so much fun. I have always been a good fan of the wilderness, and in Epsilion the PvP is great! There are great hit timers, hit calculations, emotes & gfx's for the specs, you name and we have it! Also dont forget about our perfect switching and farcasting. But we can discuss that matter later on in the thread.
https://www.youtube.com/watch?v=Urp-LRzHRMY
Epsilions new home

Curse prayers! (!still under construction!)
 New 508 npcs!

New 508 objects

New 602 items!

Epsilions new barrows gloves.. uhm.. lets just call it a girl?

Epsilions Farming added to our new home area

Epsilions New godwars Dungeon, U LAIK?

Epsilions New fully animated Tztok-Jad

Epsilions New prayer book, YAY for the 2 new prayers

Warriors Guild! fun fun fun

Epsilions New woodcutting area (Not to great but, yea. Cammy is for fags )

Webclient pictures coming soon!
New emotes 525+ https://www.youtube.com/watch?v=vCbUFsY4e9k
Perfect switching, good for hybriding https://www.youtube.com/watch?v=beh1dtMQ8g0
New starter https://www.youtube.com/watch?v=MdGBRSGo0nQ
Autocasting 100% rs like [vid][/vid]
Pages: [1] |