The client is offline due to RuneScape update. You may see instance errors but this is due to the update and not actual instance errors. This should be resolved soon. Join our Discord for more information.

Trading Players Snippet

  • Script Writer

    I see a lot of questions on how to handle trades so I thought I'd add a quick snippet. Always open to suggestions/improvements:

    import org.rspeer.runetek.api.component.Trade;
    import org.rspeer.runetek.api.scene.Player;
    import org.rspeer.runetek.api.scene.Players;
    import org.rspeer.runetek.event.listeners.ChatMessageListener;
    import org.rspeer.runetek.event.types.ChatMessageEvent;
    import org.rspeer.runetek.event.types.ChatMessageType;
    import org.rspeer.script.Script;
    import org.rspeer.script.ScriptCategory;
    import org.rspeer.script.ScriptMeta;
    import org.rspeer.ui.Log;
    @ScriptMeta(name = "Trading Example",  desc = "Trades a player", developer = "ADivorcedFork", category = ScriptCategory.OTHER)
    public class TradingExample extends Script implements ChatMessageListener {
        private String traderName = "";
        private boolean tradePending = false;
        public void onStart() {
  "Starting Trading Example...");
            traderName = "";
            tradePending = false;
        public int loop() {
            if (Trade.isOpen(false)) {
                // handle first trade window...
            else if (Trade.isOpen(true)){
                // handle second trade window...
            // If someone is requesting to trade you & you're not in trade, accept trade...
            else {
                Player trader = Players.getNearest(traderName);
                if (tradePending && trader != null) {
                    Players.getNearest(traderName).interact("Trade with");
                    tradePending = false;
            return 500;
        public void notify(ChatMessageEvent msg) {
            // If not in a trade and a player trades you...
            if (!Trade.isOpen() && msg.getType().equals(ChatMessageType.TRADE)) {
                traderName = msg.getSource();
                tradePending = true;

  • Cheers! Was needing this

  • Any examples of Trade.Offer? Cant quit understand that one. No examples or explained documentation.

  • I'm just learning as well but I figured it's very similar to the bank interface