Results 1 to 10 of 10

Hybrid View

  1. #1
    dudeguy1337's Avatar
    Join Date
    Apr 2020
    Gender
    male
    Posts
    2
    Reputation
    10
    Thanks
    1

    Cool Updated nrelay v8

    Yo my dudes,

    Here's an updated TS script which works with the lastest version of nrelay.
    Also, merged some changes from thread 1392628 which makes retrieving rewards less error prone.

    Code:
    import {
      Client,
      Library,
      Runtime,
      Events,
      Logger,
      LogLevel,
      HttpClient,
      GoToQuestRoomPacket,
      ClaimDailyRewardMessage
    } from 'nrelay';
    
      @Library({
      name: 'Auto claim daily rewards',
      author: 'tcrane, kiwi5, headlesspiranha, d00dguy1337',
      enabled: true
    })
    
    class CollectorPlugin {
      constructor(runtime: Runtime) {
        runtime.on(Events.ClientReady, (client: Client) => {
          switch(client.mapInfo.name) {
            case 'Nexus':
              this.GoToQuestRoom(client);
              break;
            case 'Daily Quest Room':
              this.ClaimDailyRewards(client);
              break;
            default:
              Logger.log('Collector', `Unknown map ${client.mapInfo.name}!`, LogLevel.Error);
              this.logOut(client);
          };
        });
      }
    
      private GoToQuestRoom(client: Client) {
        Logger.log('Collector', `Sending ${client.alias} to quest room...`);
        const gotoQuestRoom = new GoToQuestRoomPacket();
        client.io.send(gotoQuestRoom);
      }
    
      private ClaimDailyRewards(client: Client) {
        Logger.log('Collector', `Fetching calendar for ${client.alias}...`);
        HttpClient
          .get('https://realmofthemadgodhrd.appspo*****m/dailyLogin/fetchCalendar', {
            query: {
              guid: client.guid,
              password: client.password
            }
          })
          .then((response) => {
            const items = this.getKeys(response);
            if (items.length === 0) {
              Logger.log('Collector', `Nothing to collect for ${client.alias}!`);
              this.logOut(client);
            } else {
              Logger.log('Collector', `Collecting ${items.length} item${items.length === 1 ? '' : 's'} for ${client.alias}`);
              this
                .collect(items, client)
                .then(() => {
                  Logger.log('Collector', `Finished collecting items for ${client.alias}!`)
                  setTimeout(() => this.logOut(client), 2000);
                });
    
            }
          })
          .catch((error) => {
            Logger.log('Collector', `Error fetching calendar for ${client.alias}!`);
            Logger.log('Collector', error.message, LogLevel.Error);
            this.logOut(client);
          });
      }
    
      private logOut(client: Client) {
        Logger.log('Collector', `Loging out ${client.alias}`);
        client.destroy();
      }
    
      private getKeys(xml: string): string[] {
        const items: string[] = [];
    
        const parseString = require("xml2js").parseString;
        parseString(xml,
          {
            mergeAttrs: true,
            trim: true,
            explicitArray: false
          },
          function (err: any, result: any) {
            const json = JSON.stringify(result);
            const parsedJson = JSON.parse(json);
            for (const loginReward of parsedJson.LoginRewards.NonConsecutive.Login) {
              if (loginReward.key) {
                items.push(loginReward.key);
              }
            }
          }
        );
    
        return items;
      }
    
      private collect(collectables: string[], client: Client): Promise<void> {
        return new Promise((resolve, reject) => {
          const collect = (item: string) => {
            const claim = new ClaimDailyRewardMessage();
            claim.claimKey = item;
            claim.claimType = 'nonconsecutive';
            client.io.send(claim);
            if (collectables.length > 0) {
              setTimeout(() => {
                collect(collectables.shift());
              }, 1500);
            } else {
              resolve();
            }
          };
          collect(collectables.shift());
        });
      }
    }
    Also, change your versions.json with the following (as the updater fails to update it correctly to this day)
    Code:
    {
      "assetVersion": "1587115536",
      "clientVersion": "1587115536",
      "buildVersion": "X33.0.1",
      "clientToken": "XTeP7hERdchV5jrBZEYNebAqDPU6tKU6"
    }
    Now, to build and all
    - npm i xml2js
    - nrelay build
    - nrelay run --update-from=AssembleeGameClient1587115536.swf --force-update

    Here AssembleeGameClient1587115536 is the latest SWF (to this day) which you can get from the realmofthemadgod website.

    Now you can for the subsequent runs just do
    - nrelay run
    Last edited by dudeguy1337; 05-02-2020 at 04:22 AM. Reason: added timeout after "Finished collecting items" because when disconnect so fast some claims dont register.

  2. The Following User Says Thank You to dudeguy1337 For This Useful Post:

    glanhead (06-23-2020)

Similar Threads

  1. AHK Daily Login Collector
    By 09morbab in forum Realm of the Mad God Hacks & Cheats
    Replies: 19
    Last Post: 07-13-2018, 09:55 AM
  2. [Release] Simple Daily Login Reward Collector
    By Natiiix in forum Realm of the Mad God Hacks & Cheats
    Replies: 28
    Last Post: 07-03-2018, 03:31 AM
  3. [Outdated] AHK Daily Login Collector
    By 09morbab in forum Realm of the Mad God Hacks & Cheats
    Replies: 4
    Last Post: 04-26-2018, 01:56 PM
  4. [Release] K Relay Plugin: Daily Quest
    By Plann in forum Realm of the Mad God Hacks & Cheats
    Replies: 24
    Last Post: 08-19-2015, 10:42 AM
  5. The Daily Show
    By Chronologix in forum Entertainment
    Replies: 2
    Last Post: 01-19-2006, 03:20 PM