Leaderboard
Popular Content
Showing content with the highest reputation on 08/05/15 in Posts
-
5 points
-
3 points
-
2 points
-
I mean.... You were a level 3 mining clay in free to play...... what were you expecting lol.2 points
-
Its just your luck. Ive ran 9 accounts now for about 1 week, 0 bans, diff IP's. Making 400k~ an hour. 12 hours a day. When weath was on holiday, i ran 20 accounts for all 14 days. Suicide. Made some unreal profit2 points
-
Java -jar osbot.jar is the command. Be sure the jar file is renamed osbot.jar and 8n the root directory.2 points
-
2 points
-
OG's Green Dragon Killer By OG Scripts Promo Video Have a question regarding this script? or a suggested feature? Visit the Topic Post -> http://osbot.org/forum/topic/78091-ogs-green-dragon-killer/1 point
-
12 MONTHS/52 WEEKS/365 DAYS/8765 HOURS/525948 MINUTES/31556926 SECONDS its the final year FOR ME This will be my final year on runescape! I've decided that i will be quitting rs next year,so my goal is simple make 30,000 cash by the end of the year.ill be doing weekly/monthly updates[whenever i sell/make a lot of gold really]. goal:0/30,000 adding more later-ty for support first update will be 8/20/20151 point
-
i was running 4 clay mining bots they got banned after 2 and a half hours running.... does anyone have a good idea to bot in f2p?1 point
-
Disputed Member:[member=inicki] Why it should be removed: mistaken me for ricky, who is the actual person who did the service. Details: no trade happen, gave me feedback instead of ricky Link to topic: none, no trade happened.1 point
-
1 point
-
Gotta love OSBot's interaction method.. it misclicks a lot causing that to happen. I could add a check in there to fix that though. I think I'll do that. Record your starting position and if your player is x amount of tiles away from it to run back to it. EDIT: Anyways, nice proggy! Don't forget to post a pic of your 99!1 point
-
I wasn't joking at all man, neither was i being sarcastic. I really meant it's a pity i still have to verify people, even if i deal with them for over a year. I learned my lesson for sure.1 point
-
Just started using my trial now, I will post a proggy later today. So far its working great!1 point
-
1 point
-
1 point
-
1 point
-
Well i was botting the attack of one of my accounts when suddenly the npc i was kililing dropped a medium clue scroll. Later i was bored and decided to to that clue scroll , it was pretty fast but i didnt expected that big reward lol. The image here : http://prntscr.com/80tfux1 point
-
wew nice aha nice proggy i dont think ive lasted that long before (aye up). everyone getting 99's and i aint D: not fair lmao GLGL1 point
-
1 point
-
yeah i just realized it before. I just purchased a pest control script to get started . thanks for answering my dumb question ~1 point
-
What does this have to do with this thread?I suggest creating your own thread for this, or better yet, read the tutorials (I have a tutorial on creating a GUI for settings)1 point
-
@Czar I'm not quite sure why it keeps saying I have no food left when the food is clearly visible in the bank. This happens when I'm trying to use potato with cheese as food. This does not happen if I use tuna. Also, when going to the crabs from the bank why not use the west route rather than the east route you currently have set? The east route is buggy with crossing the bridge and also takes longer than the west route. You currently have it taking the red route, I believe the blue route would be much better!1 point
-
Looking to buy some gold roughly 30-50 mil, Post prices. Pm for a quicker response1 point
-
done, enjoy trial ;) @jack55, make sure to load your inventory setup correctly and it will start, also enable auto-retaliate1 point
-
I tired unplugging my moden/router for 20 mins and didn't get a new IP. Called ISP and they can't change it. Looks like I'll have to constantly use a proxy1 point
-
1 point
-
1 point
-
you need accounts that are a week or two old before u bot on them also the reason u probably got permed if because of more than one account an the age of it.1 point
-
Get ready for a long post, buddy. It depends. The easiest way to handle this would be to hardcode the settings into the DefaultAPI and pass that around as you've mentioned, more preferably creating a Settings type to decompose the DefaultAPI: class MySettings { private int logId; public int getLogId() { return logId; } public void setLogId(int id) { logId = id; } } class DefaultAPI extends API { private MySettings settings; public void setSettings(MySettings settings) { this.settings = settings; } public MySettings settings() { return settings; } } You could then create an instance of MySettings whenever the user clicks the "start" button on your GUI, passing it to the API. The code above does not account for (im)mutability; it does what you mention, but it's decomposed for easy maintenence. It allows you to adjust the settings at just about anytime, and you can modify the settings in different ways. So now comes the encapsulation, which strongly depends on how you want this to function. If the settings are handled at the start of your script, and should not be modified afterwards First, remove the ability to modify the settings property in DefaultAPI. You can do this by creating the API when you create the user clicks the "start" button to start the script. The idea is that the GUI handles the "arguments" of the script (similar to how the VM has VM arguments and command-line programs have command-line arguments): class GUI { private Object lock = new Object(); //used for waiting public DefaultAPI create() { GUI gui = new GUI(); gui.setVisible(true); //halt thread until user clicks "start" button try { synchronized(lock) { lock.wait(); } } catch(InterruptedException e) { //... } MySettings settings = ...; DefaultAPI api = new DefaultAPI(settings); return api; } private ActionListener listener = event -> { synchronized(lock) { lock.notify(); } }; } class DefaultAPI { private MySettings settings; public DefaultAPI(MySettings settings) { this.settings = settings; } public MySettings settings() { return settings; } //can no longer switch instance of Settings } class MyScript extends Script { void onStart() { DefaultAPI api = GUI.create(); //pass api to nodes } } So once you've passed the API the settings, it can not be modified by passing the API a new MySettings instance. Although, nodes can still adjust the settings through the setter methods of MySettings. For situations like this, where we want to be able to optionally set values on creation, but prevent them from being modified after creation, we would use the builder pattern: class MySettings { private int logId; private MySettings(Builder builder) { logId = builder.logId; } public int getLogId() { return logId; } //no mutators; cannot adjust settings after creating public static final class Builder { private int logId; public Builder setLogId(int id) { logId = id; return this; } //other builder methods go here... public MySettings build() { return new MySettings(this); } } } When you create the API in GUI.create(), simply use the builder: MySettings settings = new MySettings.Builder() .setLogId(/* grab from component */) .build(); DefaultAPI api = new DefaultAPI(settings); In this situation, a builder is an overkill; you could simply pass the logId to the constructor. But as the amount of settings options increase, so will the amount of constructor arguments. If you have 10 settings, all which are of type int, it could easily confuse the developer, which is why a builder is preferred. Not sure why theres no support for this in the API already. If I were you guys, I'd request more support for things like this (GUI, script settings). Just to clear the air, it is prefered to use static getter/setters rather than accessing a static field directly. You can read more on my "Use Getter Methods, Not Public Fields" thread - the idea is to hide implementation details, allowing you to change how you store a property without breaking code that relies on it. As for using static getters/setters for this, it would make it a LOT easier. Although, when it comes to unit testing, difficulties arise (hard to isolate code that relies on global state). It could also make graphing your code a mess, with edges that fly all over the place. It's best to keep things as encapsulated as possible. Rather than accessing something globally (accessing a dependency globally), pass in the dependency through a method/constructor. This is called dependency injection, and makes code crazy easy to unit test. Don't do class MyClass { public void doSomething() { int answer = OtherClass.number + 5; } } Do class MyClass { public void doSomething(int number) { int answer = number + 5; } } Passing in the number when you call the method. Sorry for the long post, I like to be fluent.1 point
-
1 point
-
1 point
-
Hello Czar. May I please have a free trial for the rock crab script. My member ID is 182700 thank you sir1 point
-
1 point
-
I've noticed recently that localWalker#walk won't actually always take you to the position that you want to walk to, but rather will go to one in the nearby area. This can cause bugs, for example if you define an area that is the inside of a certain building, and then you call localWalker#walk and pass it this area, then you might end up walking to one of the squares outside of the building because of this inaccuracy. It occurs because the default walking event has a distance threshold of 2, so any square within 2 squares of the one you pass to the function is considered a valid walk target. If you need walking that is accurate to the square, then you can change this threshold to 0. Position targetPosition = new Position(3400,3200,0); WalkingEvent w = new WalkingEvent(targetPosition); w.setMiniMapDistanceThreshold(0); w.setMinDistanceThreshold(0); script.execute(w); This will always walk to the exact square you give. By using custom events like this, you can also control whether the event blocks. So if you need asynchronous walking (which can be useful) then you can do this before you execute it: w.setAsync();1 point