-
Posts
5883 -
Joined
-
Last visited
-
Days Won
18 -
Feedback
100%
Everything posted by Botre
-
Consider this a little follow up to: http://osbot.org/forum/topic/94595-chart-picking-the-appropriate-collection-interface/ Source: http://infotechgems.blogspot.be/2011/11/java-collections-performance-time.html
- 1 reply
-
- 2
-
-
spaghetti confetti never forgetti
-
Original idea, kudos ^^
-
I was talking about tracking data for dynamic sigs and stuff like that. isVIP... meh. isMirror... sucks it's gone
-
You can still just cache a text file with a unique key generated by you to track anonymously-ish. getUsername() didn't map to the forum username anyways I think :p
-
Build a proper testing loop/script that isolates and prints every involved variable, there are multiple reasons why Mirror could be failing or appear to be failing (because of it's slowness).
-
I'm pretty sure widget string checking isn't broken in mirror. Maybe you're checking the wrong widget? To be sure, test both clients and compare the results... but I'd be surprised.
-
For caching across the multiple methods I've found: 1. The following string values are tested for "Click here to continue", "to continue", "please wait..." "Click to continue" 2. They following sprite is also checked Sprites.SELECT_OPTION_SWORD2
-
The client caches them conditionally they don't use a static list. You should probably do the same. ... or just use the Dialogue API :p
-
isPendingOption() at no point checks for widget 219's visibility. It checks if the chatbox is not visible, whether a specific (or set of specific) widget(s) is/are active and it checks for sprite matches.
-
Check if item is visible (not blocked by walls etc)
Botre replied to Jewlz's topic in Scripting Help
tricky I would suggest you post the problem you are trying to solve with this specific visibility check instead -
Chain, negate, combine, ... Filter Example: public static void main(String[] args) { Filter<String> IS_EMPTY = s -> s.isEmpty(); Filter<String> CONTAINS_O = s -> s.contains("o"); String a = ""; String b = "osbot"; // Check if empty System.out.println(IS_EMPTY.match(a)); //true System.out.println(IS_EMPTY.match(b)); //false //Check if NOT empty System.out.println(FilterOperation.negate(IS_EMPTY).match(a)); //false System.out.println(FilterOperation.negate(IS_EMPTY).match(b)); //true // Check if empty OR contains o System.out.println(FilterOperation.or(IS_EMPTY, CONTAINS_O).match(a)); //true System.out.println(FilterOperation.or(IS_EMPTY, CONTAINS_O).match(b)); //true // Check if empty AND contains o System.out.println(FilterOperation.and(IS_EMPTY, CONTAINS_O).match(a)); //false System.out.println(FilterOperation.and(IS_EMPTY, CONTAINS_O).match(b)); //false } Filter Operations: package org.botre.functional; import org.osbot.rs07.api.filter.Filter; public final class FilterOperation { private FilterOperation() { } /** * Returns a filter that represents the logical negation of the supplied filter. * * @return a filter that represents the logical negation of the supplied filter */ public static final <T> Filter<T> negate(Filter<? super T> filter) { return e -> !filter.match(e); } /** * Returns a filter that represents a short-circuiting logical AND of the supplied filters. * * @return a filter that represents a short-circuiting logical AND of the supplied filters */ @SafeVarargs public static final <T> Filter<T> and(Filter<? super T>... filters) { if(filters.length < 1) throw new IllegalArgumentException(); return new Filter<T>() { @Override public boolean match(T e) { for (Filter<? super T> filter : filters) if(!filter.match(e)) return false; return true; } }; } /** * Returns a composed filter that represents a short-circuiting logical OR of the supplied filters. * * @return a composed filter that represents a short-circuiting logical OR of the supplied filters */ @SafeVarargs public static final <T> Filter<T> or(Filter<? super T>... filters) { if(filters.length < 1) throw new IllegalArgumentException(); return new Filter<T>() { @Override public boolean match(T e) { for (Filter<? super T> filter : filters) if(filter.match(e)) return true; return false; } }; } } Functional Operations: package org.botre.functional; import java.util.function.BooleanSupplier; import java.util.function.Predicate; public final class FunctionalOperation { private FunctionalOperation() { } /** * Returns a composed boolean supplier that represents a short-circuiting logical AND of the supplied boolean suppliers. * * @return a composed boolean supplier that represents a short-circuiting logical AND of the supplied boolean suppliers */ public static final BooleanSupplier and(BooleanSupplier... suppliers) { if(suppliers.length < 1) throw new IllegalArgumentException(); return () -> { for (BooleanSupplier s : suppliers) if(!s.getAsBoolean()) return false; return true; }; } /** * Returns a composed boolean supplier that represents a short-circuiting logical OR of the supplied boolean suppliers. * * @return a composed boolean supplier that represents a short-circuiting logical OR of the supplied boolean suppliers */ public static final BooleanSupplier or(BooleanSupplier... suppliers) { if(suppliers.length < 1) throw new IllegalArgumentException(); return () -> { for (BooleanSupplier s : suppliers) if(s.getAsBoolean()) return true; return false; }; } /** * Returns a composed predicate that represents a short-circuiting logical AND of the supplied predicates. * * @return a composed predicate that represents a short-circuiting logical AND of the supplied predicates */ @SafeVarargs public static final <T> Predicate<T> and(Predicate<T>... predicates) { if(predicates.length < 1) throw new IllegalArgumentException(); Predicate<T> result = predicates[0]; for (int i = 1; i < predicates.length; i++) { result = result.and(predicates[i]); } return result; } /** * Returns a composed predicate that represents a short-circuiting logical OR of the supplied predicates. * * @return a composed predicate that represents a short-circuiting logical OR of the supplied predicates */ @SafeVarargs public static final <T> Predicate<T> or(Predicate<T>... predicates) { if(predicates.length < 1) throw new IllegalArgumentException(); Predicate<T> result = predicates[0]; for (int i = 1; i < predicates.length; i++) { result = result.or(predicates[i]); } return result; } }