Leaderboard
Popular Content
Showing content with the highest reputation on 04/24/14 in all areas
-
3 points
-
3 points
-
You compared a different type of script. An Orge Killer vs Giant Killer. So by rule breaking, you are disqualified. gh0st needs to come and write an orge killer to smash you guys.3 points
-
Like my thread. I like them likes. Post a pic/gif that makes me laugh. Every one that makes me laugh, I'll like the post. After I give 5 likes, I'll send each a $2 voucher (one person can win multiple times). Once I give 5 likes, contest will be over. May the odds be ever in your favour. Let the games begin! Edit: I can give gp also instead.2 points
-
I think the whole feedback buisiness is semi - bs. People can get 200 feedback by selling bonds which is like 1m ea, when some other guy will get 1 feedback point when he did a 300m deal - I would trust guy who did 300m deal more.2 points
-
2 points
-
2 points
-
Updated for OSBot 2's API! Hello again everyone! I hope you enjoyed my first tutorial, and I hope you'll enjoy this on as well. All feedback is appreciated, so feel free to post your thoughts! This tutorial will use some of my methods for simple banking and path walking! We’ll expand upon our script we were working on last time, so you'll need the source. Step I: Converting to a Banking Script Now as we all know, this script isn’t only boring, it will keep trying to click the rocks after we mine them, even if that vein isn’t ready! To remedy this, we’ll be searching for the rocks using object IDs instead of names. Since we’ll be using specific IDs, we have to choose what and where we’ll be mining! For this second tutorial, we’ll make a script that mines tin in the mines south-east of Varrock: Finding Object IDs Finding object IDs in OSBot is very simple, stand near the object you want the ID of, press Settings: Then press Advanced Settings: Then finally press Object Info: This will lag your client a lot, but don’t worry, you can shut it off as soon as you get the IDs. To get the ID, just look for the number near/on the object you’re looking for: Note: Some objects and NPCs in Runescape have deviations of themselves (like tin), so the same object/NPC may have different IDs (make sure to get all the IDs of whatever you’re using). Now that we have tin’s ID, we’ll make a constant in our script: private static final int[] TIN_ID = { 7140, 7141, 7142 }; We’ll put this line right after this: public class BasicMiner extends Script { Now that we have the object ID found and defined, let’s change our original code to use the ID instead of a name, simply by changing this line: RS2Object vein = objects.closest("Rocks”); to this: RS2Object vein = objects.closest(TIN_ID); Step II: Area Based State For this script, we’ll see which state we should be in with the help of OSBot’s Area class, which is defined as Area(int x1, int y1, int x2, int y2). Simply stand on two opposite corners and fill in the x and y. For the areas, put this after our path variable: private static final Area MINE_AREA = new Area(3277, 3358, 3293, 3371); private static final Area BANK_AREA = new Area(3250, 3419, 3257, 3423); Step II: Path Making The first step to path walking, would be path making! We’ll be making a path by enabling the “Player Position” setting (same place we enabled Object Info): Now, I like to open notepad, or some other text editor while finding my path, so do that now. Alright, finding a path to the bank is pretty simple, but can be slightly confusing at first. Start at the tin veins, and add the position you’re current at (this will be used when we reverse the path to walk from the bank back): Then act like you’re walking to the bank, but only press ONCE on the minimap. Let your player walk to that position and stop, then write down your first position to that path. Then keep doing that until you’re in the bank, here’s what I got: 3283, 3363 3290, 3374 3292, 3386 3290, 3374 3291, 3401 3287, 3413 3282, 3427 3270, 3429 3256, 3429 3254, 3421 To turn this path into something we can use in our script, we’ll be using an array (collection of a type of variable). We’ll put this line of code right after where we defined TIN_ID: private Position[] path = { new Position(3283, 3363, 0), new Position(3290, 3374, 0), new Position(3292, 3386, 0), new Position(3290, 3374, 0), new Position(3291, 3401, 0), new Position(3287, 3413, 0), new Position(3282, 3427, 0), new Position(3270, 3429, 0), new Position(3256, 3429, 0), new Position(3254, 3421, 0) }; Yay! We now have a full path from the mines to the bank, which we’ll reverse to go from the bank to the mines (saving us a step)! Step IV: Path Walking Now that we have a path, let’s put it to use! First of all, let’s change our enum by removing the DROP constant, and adding WALK_TO_BANK, BANK, WALK_TO_MINES: private enum State { MINE, WALK_TO_BANK, BANK, WALK_TO_MINE }; Now it’s time to change our getState() function to return what exact state we should be in: private State getState() { if (inventory.isFull() && MINE_AREA.contains(myPlayer())) return State.WALK_TO_BANK; if (!inventory.isFull() && BANK_AREA.contains(myPlayer())) return State.WALK_TO_MINE; if (inventory.isFull() && BANK_AREA.contains(myPlayer())) return State.BANK; return State.MINE; } Now that the script knows what state we should be in, let’s handle the actual path walking, with a pretty simple method to traverse the whole path: private void traversePath(Position[] path, boolean reversed) throws InterruptedException { if (!reversed) { for (int i = 1; i < path.length; i++) if (!walkTile(path[i])) i--; } else { for (int i = path.length-2; i > 0; i--) if (!walkTile(path[i])) i++; } } You can put this method after getState() if you’d like, and the walkTile(path) will be underlined red, because we’re about to make that method too! I’ll explain this method, as it may look confusing: If the path isn’t reversed, we’ll iterate through the path starting at position 1 (note that arrays start at 0, but remember, our 0 is in the mine) until we end in the bank. If the path is reversed, we’ll simply do the opposite! We’ll start at the 2nd to last position (path.length - 2) and continue to decrease through the path until we end up back in the mine! The reason we aren’t using OSBot’s walk() method is because, well, it doesn’t work nicely at all. It tends to continue clicking the position til you’re there, and many other problems can happen. So here’s the walkTile(Position p) method, put this after the traversePath() method: private boolean walkTile(Position p) throws InterruptedException { client.moveMouse(new MinimapTileDestination(bot, p), false); sleep(random(150, 250)); client.pressMouse(); int failsafe = 0; while (failsafe < 10 && myPlayer().getPosition().distance(p) > 2) { sleep(200); failsafe++; if (myPlayer().isMoving()) failsafe = 0; } if (failsafe == 10) return false; return true; } Simply put, we move the mouse to where the tile is on the minimap, then press the mouse button. After that, we’ll sit around and wait until we’re pretty close to the tile we’re walking to. I also implemented a simple failsafe here, just incase we misclicked or something, that will reclick the same position until we're actually near that position. Step V: Preparing for Banking Now let’s actually make the walking states actually walk, by changing our onLoop() to this: @Override public int onLoop() throws InterruptedException { switch (getState()) { case MINE: if (!myPlayer().isAnimating()) { RS2Object vein = objects.closest(TIN_ID); if (vein != null) { if (vein.interact("Mine")) sleep(random(1000, 1500)); } } break; case WALK_TO_BANK: traversePath(path, false); sleep(random(1500, 2500)); break; case WALK_TO_MINE: traversePath(path, true); sleep(random(1500, 2500)); break; } return random(200, 300); } Step VI: Banking Now that we’ve managed to walk to and from the bank, let’s actually do some banking! If we’re in the bank state, that means we’re already in the bank! Now, let’s add this case to our onLoop() function (as seen above), by simply adding this after the last “break;” and before the ‘}’: case BANK: RS2Object bankBooth = objects.closest("Bank booth"); if (bankBooth != null) { if (bankBooth.interact("Bank")) { while (!bank.isOpen()) sleep(250); bank.depositAll(); } } break; This looks for the bank booth, if it isn’t null and if we actually managed to click on it, we’ll wait til it’s open, then deposit everything except our pickaxe, which is hardcoded so you’ll have to change this to whatever pickaxe you’re using. We’ll automatically detect which pickaxe we’re using in the next tutorial. Conclusion If you managed to get through this whole tutorial without error, congratulations! If not, you can find the full source here. I hope you've learned something from this, and if you didn’t, don’t worry! Programming takes time to learn, look this over a few times, I promise you’ll get it! Thanks for viewing my second tutorial, stay tuned for future tutorials!1 point
-
Welcome in this tutorial you will learn how to make 3d looking text using photoshop. This can be used in signatures like this one: Start by opening a new photoshop document, I used 200px x 250px. Then pick 2 colors that match eachother, like dark and light blue, or dark and light green. Take out your gradient tool and make a nice gradient on the background like this: Now take out your text tool and pick the font you want to use, I prefer to use normal fonts like verdana and arial, in this case I picked arial with a size of 160px and a light green color. For the letter, my advice would be to first start with a simple letter that doesnt have any circular shapes like a V, N or A: Now right click on your text layer and convert it to a vector shape, remmeber you cant change the text after this anymore! Now go to edit > Transform path > Perspective, and drag one of the corners to create something like this. Now duplicate this layer once and change the color of this layer to the dark color you choose during the first step. Move this layer underneath the original layer. Now with the dark layer selected, move it a bit to the left/right and up/down (pickup whatever you prefer) using the arrows on your keyboard. Now you should have something like this: Now take out the pen tool (shortcut: P), and make sure it is set with the following settings, for the color select one between the dark and the light color from step one: And then make 2 vector shapes that fill the empty spaces in your text like this (or how many you need, depends on the letter): Now your letter should look like this and is finished! Extra Of course you can continue and make your shape even better, a thing I like to do is to select all vector layers, then right click and select merge layers. Now you can add blending options to the shape by going to Layer > Layer style. I added a drop shadow, bevel and emboss and a gradient overlay:1 point
-
I asked for this awhile ago and I'm just bringing it back up. Basically what it is is this (and yes IPB supports it):1 point
-
Hello community, because OSBot 2 has not reached our standard as of yet. I've decided to change it's development strategy. Here are the list of changes that I am planning: Revamped event system for increased performance and stability Open-sourced API available to everyone for faster bug-fixes and feature implementation Open-sourced random event solvers for better random event support Other various API changes/enhancements/implementations Improved camera functions Improved walking functions Proxy support Although we'd love to release the open-source API now, it's going to take some time to restructure the bot into two separate modules (one open-source, and another closed-source). This isn't going to take too long though, I expect all these changes to be implemented within at least two weeks. Beware, the API changes might cause any current OSBot 2 scripts (if they even exist) to break. We're taking advantage of the fact that barely any scripts have been written to implement these enhancements. Hopefully with our new, future open-source model, OSBot will excel in development and features. Thanks, Sincerely, Laz and the OSBot Team.1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
I knew it was that or sharpening. I gave you the BOTD and figured you used a high quality render.1 point
-
1 point
-
1 point
-
The smoke doesn't really look good and the animation of it is not smooth enough. The one without the smoke looks pretty good to me.1 point
-
Yeah I know.. Wild idea popped in my head and made the smoke animation in literally 2mins. I don´t like it either, that´s why I posted the original one without the smoke.1 point
-
Welcome back ^_^ The smoke 'staggers' a bit too much and it cuts on the left border of the image. Love the one with no smoke though1 point
-
1 point
-
You'd be surprised what can happen when the community is hyped enoguh about something. Don't forget that our hard-working Mods have the power to organize and host these events! If we want these kinds of things we need to show support for them. TBH, A bunch of the developers could get together and run the scriptign competitio's ourself. Of course i nthe scriptign competitions community feedback would be huge. We'd release all scripts in the competition free for 2 weeks on the SDN before everyone can judge .1 point
-
can you explain to me why? on my first two pages of feedbacks alone, i sold 850m. and a total of well over 1.5B. i dont ask for feedbacks for every trade, even for large amounts of gold or proxies.(sold over 2.5B on this forum) dont you think i deserve it? the service i provide is the best and you can ask each one of my customers or whoever worked with me before.1 point
-
Cars, Sports, War, Seasons, Comics, Fantasy, Smudge, Gods, Sky, Photo manipulation. There are endless themes1 point
-
1 point
-
1 point
-
1 point
-
HAHAHAHAHAHA! This is hilarious! I remember the awkward moments when my mom used to buy me tissues. I would just be like "Yeah thanks mom, myy nose has been really runny lately :P"1 point
-
I have none with AT&T but once with comcast the customer service was some black guy who sounded very homosexual and when I asked for his name he said "La Wonderful" It was a weird day for me.1 point
-
http://gyazo.com/f61314551f31c4d63e113a5ecef71f73 ^proof1 point
-
LOL WTF IS WRONG WITH THAT GUY1 point
-
ur gifs sweet lol but yah deff gl on goal keep us updated with pics pl0x1 point
-
Hey I wrote a class to help you with the problem The pool introduces a random element without having to randomly iterate through the list each time (prioritising worlds we haven't visited for longer). import java.util.LinkedList; import java.util.Random; /** * * @author Ziy */ public class WorldManager { private int[] worlds = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // Example worlds private final int POOLSIZE = 5; // Size of pool (must be <= number of worlds) private final int ACCEPTABLE_TIME = 10; // in seconds private final LinkedList<Integer> queue = new LinkedList<>(); private final int[] pool = new int[POOLSIZE]; private final Random random = new Random(); private final long startTime; public WorldManager() { // Start by shuffling the worlds shuffleArray(worlds); // Add all the worlds to the queue for (int world : worlds) { queue.add(world); } // Move the first n (where n is the pool size) into the pool for (int i = 0; i < pool.length; i++) { pool[i] = queue.remove(); } // Repurpose the world array so we can now use it to house the times // We will index it using the world number worlds = new int[100]; // Set the start time startTime = System.currentTimeMillis(); } public int getNext() // returns world or -1 if no world satisfies { int startingRandom = random.nextInt(pool.length); // Pick a random world from the pool and iterate through the rest // to look for a valid world for (int i = 0; i < pool.length; i++) { int startingIndex = (startingRandom + i) % pool.length; int nextWorld = pool[startingIndex]; if (getTime() - worlds[nextWorld] >= ACCEPTABLE_TIME - 1 || worlds[nextWorld] == 0) { // Update world time worlds[nextWorld] = getTime() + 1; // Add world back to the queue queue.add(nextWorld); // Add the head of the queue to the pool pool[startingIndex] = queue.remove(); return 300 + nextWorld; // 300 added for OS } } // No world satisfies the time required return -1; } private int getTime() { return (int) ((System.currentTimeMillis() - startTime) / 1000); } private void shuffleArray(int[] array) { for (int i = array.length - 1; i > 0; i--) { int index = random.nextInt(i + 1); // Simple swap int a = array[index]; array[index] = array[i]; array[i] = a; } } // Test main - remove if unwanted public static void main(String[] args) { long startTime = System.currentTimeMillis(); WorldManager wm = new WorldManager(); while (System.currentTimeMillis() < startTime + 30000) // crudely run for 30 secs { int world = wm.getNext(); long time = (System.currentTimeMillis() - startTime) / 1000; if (world != -1) { System.out.println("World: " + world + " Time: " + time + "s"); } } } } Here is what it looks like when we run the main run: World: 307 Time: 0s World: 301 Time: 0s World: 305 Time: 0s World: 310 Time: 0s World: 308 Time: 0s World: 304 Time: 0s World: 309 Time: 0s World: 302 Time: 0s World: 306 Time: 0s World: 303 Time: 0s World: 308 Time: 10s World: 301 Time: 10s World: 304 Time: 10s World: 305 Time: 10s World: 306 Time: 10s World: 303 Time: 10s World: 307 Time: 10s World: 310 Time: 10s World: 302 Time: 10s World: 309 Time: 10s World: 304 Time: 20s World: 305 Time: 20s World: 307 Time: 20s World: 308 Time: 20s World: 306 Time: 20s World: 303 Time: 20s World: 310 Time: 20s World: 309 Time: 20s World: 302 Time: 20s World: 301 Time: 20s BUILD SUCCESSFUL (total time: 30 seconds) Quickly drawn diagram to explain the process1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
Someone once told me something that actually is very truthful. Everyone can turn into a Scammer, It just depends on that persons breaking point before they'll do it. Some may scam for something as simple as a few mil, Others are 'legit' until suddenly, You've got a 1b 07 Trade. Some would crack with that, etcetc.1 point
-
Jij bent echt een kanker irritante kanker mogol als ik jou zou tegenkomen zou ik jouw de grond in stampen1 point
-
1 point
-
1 point