Jump to content

LoudPacks

Members
  • Posts

    926
  • Joined

  • Last visited

  • Feedback

    100%

Posts posted by LoudPacks

  1.     1. Pictures of the account stats

    075813cd9921f46825d37b711702e296.png
        2. Pictures of the total wealth (if there is any)

    bank.PNG?width=638&height=782
        3. Pictures of the quests completed

    quest1.PNG

    quest2.PNG

    quest3.PNG

    quest4.PNG

    quest5.PNG

    quest6.PNG

    quest7.PNG

    quest9.PNG

    quest10.PNG

    quest11.PNG

    quest12.PNG

     

    4. The price you will be starting bids at

    $200 USD


        5. The A/W (Auto-win) for your account

    $200 USD


        6. The methods of payment you are accepting

    BTC/ETH


        7. Your trading conditions

    You go first or we use a middleman


        8. Pictures of the account status

    noban.PNG


       9. Original/previous owners AND Original Email Address

    I am original owner and there is an email linked to the account. You will receive the email account with purchase.

    The account also has rigor augury, and a magma mutagen.

  2. 12 hours ago, LeBron said:

    So if I understand your topic correctly, I won't be donwloading runelite from their own website but yours? 

    yes

    On 5/18/2019 at 7:50 PM, UkBenH said:

    Curious how much you've sold Auto pray swappers for.. I want one, but I don't PK so would only be for PVM use(Hydra, Zulrah, Jad etc). 

    add me on discord

    On 5/14/2019 at 10:02 PM, DyQuest said:

    Plugin Name: Menu Entry Swapper?
    Brief Description: Basically an add-on to MES. Making pickpocket the first option on the HAM Guards. The ones in the cellar that give you keys for ham storerooms.
    Requirements: Death to the Dorgeshuun quest, 20 thieving? I think that's about it in terms of what you need to get to ham guards lol.

    Just wondering a price estimate for something like this. Been using AHK to quickly right click but would rather just spam click.

    $10 but its pretty simple and I think you could do it yourself for free if you look at the existing code.

  3. On 3/23/2019 at 1:32 PM, GeneralMayor said:

    I believe there used to be a runelite plugin for zulrah but that got banned. I'm looking for a zulrah helper or plugin. Does someone know one ?

    unknown.png

  4. 19 hours ago, Mashiro Shiina said:

    charging 400$+ ain't right bro for something soo simple

    You do realize that runelite removed some of the internal functionality required for the plugin to work? I don't charge $400 either, I originally did around $50 until the patch came out and now I do around $200 because most noobs can't figure out how to bypass the patches. It's also pretty busted so higher prices deter a majority of users but results in the same amount of income in the end. I'd rather charge more and sell less than charge less and sell more. Also on a side note, mine auto updates and people don't have to mess with intelij or compile anything.

  5. 19 minutes ago, dreameo said:

    That's not really the issue.

    The issue is, do I really want to create a separate thread for each client connection. Seems a bit excessive. Making calls via REST api and an HTTP server seems easy for everyone.

    Only for the listener, not for each connection. Although scaling wise it might be a good idea. I also don't see any HTTP anywhere in this post.

  6. 6 hours ago, dreameo said:

    Yeah I would suggest doing what I said in my edit for now.

    Need to rework the code to support 1-n connections from server to client. Over looked that.

    There could be some unneeded complexities due to using a socket client/server. When an HTTP server might be just as efficient and easier. Going to look up some answers.

    server.accept is blocking and returns a socket representing that connection so you can just do something like:

    final List<Socket> sessions = new ArrayList<>();
      
    while (listening)
    {
        ...
    	sessions.add(server.accept());
    }

    You would need to have the listener on a separate thread so that established connections can process data / do IO operations.

    For more advanced data you could also look into sending binary data or serialization with something like Gson (helps a lot if you want to serialize and send objects across the socket).

    I like to subclass Socket and customize it a bit so you have more control over each session.

    • Like 1
  7. package com.loudpacks.rs;
    
    import com.google.gson.Gson;
    import com.google.gson.JsonObject;
    import com.loudpacks.util.IOUtils;
    import java.io.IOException;
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    
    public class ItemLookup
    {
    	private static final String API_LOCATION = "http://services.runescape.com/m=itemdb_oldschool" +
    		"/api/catalogue/detail.json?item=%d";
    
    	private static final long TEN_MINUTES = 600000;
    	private static final Map<Integer, LookupResult> cache = new HashMap<>();
    	private static Map<String, Integer> itemMap;
    	private static long startTime;
    
    	static
    	{
    		startTime = System.currentTimeMillis();
    		itemMap = IOUtils.loadItemMap(); //I dumped the cache and generated a map <itemName, itemID> so I can lookup items by name instead of id
    	}
    
    	public static int getIdForName(String name)
    	{
    		if(!itemMap.containsKey(name))
    			return -1;
    		return itemMap.get(name);
    	}
    
    	private static LookupResult parse(int itemId, String json)
    	{
    
    		Gson gson = new Gson();
    		JsonObject body = gson.fromJson(json, JsonObject.class);
    		JsonObject item = body.getAsJsonObject("item");
    		JsonObject current = item.getAsJsonObject("current");
    
    		return new LookupResult(
    			item.get("icon").getAsString(),
    			item.get("icon_large").getAsString(),
    			item.get("type").getAsString(),
    			item.get("typeIcon").getAsString(),
    			item.get("name").getAsString(),
    			item.get("description").getAsString(),
    			itemId,
    			current.get("price").getAsString()
    		);
    	}
    
    	private static void flushCache()
    	{
    		if (cache != null)
    		{
    			cache.clear();
    		}
    	}
    
    	public static LookupResult find(int itemId)
    	{
    		if ((System.currentTimeMillis() - TEN_MINUTES) > startTime)
    		{
    			flushCache();
    			startTime = System.currentTimeMillis();
    		}
    
    		if (cache != null && !cache.isEmpty())
    		{
    			LookupResult result = cache.get(itemId);
    			if (result != null)
    			{
    				return result;
    			}
    		}
    
    		String json;
    		try
    		{
    			URL url = new URL(String.format(API_LOCATION, itemId));
    			Scanner scan = new Scanner(url.openStream()).useDelimiter("\\A");
    			json = scan.next();
    			scan.close();
    		}
    		catch (IOException e)
    		{
    			return null;
    		}
    
    		LookupResult result = parse(itemId, json);
    
    		if (cache != null)
    		{
    			cache.put(itemId, result);
    		}
    
    		return result;
    	}
    }
    package com.loudpacks.rs;
    
    import lombok.Getter;
    
    public class LookupResult
    {
    	@Getter
    	private final String smallIconUrl, largeIconUrl, type, typeIcon, name, itemDescription;
    	@Getter
    	private final int id;
    	@Getter
    	private final String price;
    
    	protected LookupResult(String smallIconUrl,
    						   String largeIconUrl,
    						   String type,
    						   String typeIcon,
    						   String name,
    						   String itemDescription,
    						   int id,
    						   String price)
    	{
    
    		this.smallIconUrl = smallIconUrl;
    		this.largeIconUrl = largeIconUrl;
    		this.type = type;
    		this.typeIcon = typeIcon;
    		this.name = name;
    		this.itemDescription = itemDescription;
    		this.id = id;
    		this.price = price;
    	}
    }

    Some code from a project I was working on. Should be enough to get you started.

    • Like 1
  8. getOfferPrice() only returns the value of a pending / complete GE offer. It doesn't work if you just preview an item, ie. select an item but don't confirm the offer. You can use widgets to read the price that is loaded on the interface when you lookup an item.

    • Like 1
×
×
  • Create New...