thomas-crane / nrelay Goto Github PK
View Code? Open in Web Editor NEWA console based modular client for Realm of the Mad God built with Node.js and TypeScript.
Home Page: https://nrelay.net/
License: MIT License
A console based modular client for Realm of the Mad God built with Node.js and TypeScript.
Home Page: https://nrelay.net/
License: MIT License
I used verison 6 nrelay since last year, and it run good.
I noticed there are new verison,
so I git clone latest verison(verison 7.8.1) to another computer folder,
after I npm install instead to the new nrelay verison folder, and gulp,
the cmd shows these error messages:
https://i.imgur.com/72b4xVS.png
Then, I updated my nodejs from verison 8 to 10 , error messages still occur when npm install, gulp
8.4.1
X31.7.0
UpdatePacket
ReconnectPacket
Resources are being used after the connection has been closed causing things to be undefined
Example:
C:\Users\Administrator\tracker\node_modules\nrelay\lib\core\client.js:453
const tile = this.mapTiles[y * this.mapInfo.width + x];
^
TypeError: Cannot read property '33693' of undefined
6.4.6
X21.0.0
ReconnectPacket
UpdatePacket
UsePortalPacket
EscapePacket
The bot crashes with the error:
RangeError: Invalid typed array length: -11008
at typedArrayConstructByLength (<anonymous>)
at new Int8Array (native)
at ReconnectPacket.read (/home/rotmg/nrelay/dist/networking/packets/incoming/reconnect-packet.js:19:20)
at PacketIO.emitPacket (/home/rotmg/nrelay/dist/networking/packetio.js:123:20)
at PacketIO.processData (/home/rotmg/nrelay/dist/networking/packetio.js:102:22)
Server is now sending stats in the reconnect packet. Declare a stats string and change src/networking/packets/incoming/reconnect-packet.ts to:
this.host = this.readString();
this.stats = this.readString();
this.port = this.readInt32();
8.8.7
X33.1.0
client.findPath
Point
from realmlib/net
TextPacket
client.findPath({ x: 151, y: 138 });
in onText
hooking to TextPacket
Pathfinding fails with the error:
[13:44:09 | Main Client] Error finding path: Cannot set property 'heapIndex' of undefined
[13:44:09 | Main Client] TypeError: Cannot set property 'heapIndex' of undefined
at Heap.add (C:\Users\User\test-project\node_modules\nrelay\lib\services\pathfinding\heap.js:23:24)
at C:\Users\User\test-project\node_modules\nrelay\lib\services\pathfinding\pathfinder.js:32:21
at new Promise (<anonymous>)
at Pathfinder.findPath (C:\Users\User\test-project\node_modules\nrelay\lib\services\pathfinding\pathfinder.js:27:16)
at Client.findPath (C:\Users\User\test-project\node_modules\nrelay\lib\core\client.js:297:25)
at GuildChatPlugins.onText (C:\Users\User\test-project\lib\guild-chat-plugin.js:23:16)
at LibraryManager.callHooks (C:\Users\User\test-project\node_modules\nrelay\lib\core\library-manager.js:190:54)
at PacketIO.<anonymous> (C:\Users\User\test-project\node_modules\nrelay\lib\core\client.js:94:45)
at PacketIO.emit (events.js:310:20)
at PacketIO.emitPacket (C:\Users\User\test-project\node_modules\@realmlib\net\lib\packetio.js:144:18)
Very well may be using pathfinding incorrectly, but can't seem to find much documentation on it.
Error:
**
Your environment has been set up for using Node.js 10.13.0 (x64) and npm.
C:\Users\x>nrelay
internal/modules/cjs/loader.js:582
throw err;
^Error: Cannot find module './dist'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:580:15)
at Function.Module._load (internal/modules/cjs/loader.js:506:25)
at Module.require (internal/modules/cjs/loader.js:636:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object. (C:\Users\carmen\nrelay\index.js:3:17)
at Module._compile (internal/modules/cjs/loader.js:688:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
**
Not sure what I have done wrong, I have done all setup steps, and done the accounts file.
When I attempt to run it in the console (typing nrelay), it pops up with the above error.
I have not setup proxies or local server, not sure if that is required to. But I'll look into doing it sooner or later anyways.
Thanks
4.3.0
X20.1.0
The bot errors with the error:
[18:59:29 | Main Client] Connected to USWest!
[18:59:30 | Main Client] Received socket error: read ECONNRESET
[18:59:30 | Main Client] The connection to USWest was closed.
[18:59:30 | Main Client] Connecting in 0.8 seconds.
And doesn't stop repeating. I have a brand new, vanilla copy of this, followed the directions on the README.md exactly, but receive this error. Thank you.
Hello! I'm trying to start a project that uses NRelay but I'm having trouble getting it to connect. First the client tries to update to version X31.4.1. First I tried to fix this by running "nrelay run --update-from=/path/to/my/client.swf [--force-update]" and then later tried setting the version manually. Neither worked and the bot can not connect to the realm. I also ran nrelay update with no success.
I've tried installing and reinstalling nrelay-cli, etc but nothing seems to do the job.
Thanks for this awesome project and I hope you can help me :)
8.8.4
X33.0.1
$> nrelay -v
CLI version: v1.6.0
nrelay version: v8.8.4
$> nrelay run --v
CLI version: v1.6.0
nrelay version: v8.8.4
$>nrelay run
[00:23:57 | Runtime] Checking for updates...
[00:23:57 | Updater] Checking for new versions...
[00:23:57 | ResourceManager] Loaded 1637 tiles.
[00:23:57 | ResourceManager] Loaded 14132 objects.
[00:23:57 | Runtime] Mapped 99 packet ids.
[00:23:57 | Runtime] Using build version "X33.0.1"
[00:23:57 | Runtime] Cannot load clientToken. Clients may not be able to connect.
[00:23:57 | LibraryManager] Loading plugins...
[00:23:57 | LibraryManager] Loading HelloPlugin...
[00:23:57 | LibraryManager] Loaded Hello Plugin by tcrane!
[00:23:57 | Runtime] Loading <username>...
[00:23:57 | AccountService] Loading server list...
[00:23:57 | AccountService] Cached server list loaded!
[00:23:57 | AccountService] Loading character info...
[00:23:57 | AccountService] Cached character info loaded!
[00:23:57 | Runtime] Loaded <username>!
[00:23:57 | <username>] Starting connection to EUNorth2
[00:23:57 | <username>] Connected to EUNorth2!
[00:23:57 | <username>] Received failure 13: "Client Token Error"
[00:23:57 | <username>] Received socket error: read ECONNRESET
[00:23:57 | <username>] The connection to EUNorth2 was closed.
[00:23:57 | <username>] Connecting in 1.8 seconds.
When upgrading to v7, I get empty response from server when connecting...
[10:44:12 | NRelay] Loading ASE
[10:44:12 | AccountService] Resolving proxy hostname.
[10:44:13 | AccountService] Proxy hostname resolved!
[10:44:13 | Https] Establishing proxy for GET request.
[10:44:14 | Https] Established proxy!
[10:44:14 | ASE] Empty response from server.
{
"alias": "USE3",
"guid": "***@gmail.com",
"password": "r***",
"serverPref": "USEast3",
"proxy": {
"host": "proxy-nl.p***.com",
"port": 1080,
"type": 5,
"userId": "***",
"password": "***"
}
}
Proxy works perfectly in v6. Unsure what internals changed
7.7.2
X31.4.1
UpdatePacket
NewTickPacket
MapInfoPacket
UsePortalPacket
The bot nexus with the error:
Invalid key used.
nrelay version: 7.5.2
RotMG version: X28.0.3
The issue is caused by the packet.type call in the log at L192, can be solved by placing it right below the actual packet read (as the packet is checked for null there, meanwhile it is not in the current place)
8.8.4
X33.0.1
OR
[13:49:58 | Runtime] Checking for updates...
[13:49:58 | Updater] Checking for new versions...
[13:49:58 | ResourceManager] Loaded 1637 tiles.
[13:49:59 | ResourceManager] Loaded 14132 objects.
[13:49:59 | Runtime] Mapped 99 packet ids.
[13:49:59 | Runtime] Using build version "X33.0.1"
[13:49:59 | Runtime] Using client token ""
[13:49:59 | Runtime] Plugin loading disabled.
[13:49:59 | Runtime] Loading o***@***.com...
[13:49:59 | AccountService] Loading server list...
[13:49:59 | AccountService] Cached server list loaded!
[13:49:59 | AccountService] Loading character info...
[13:49:59 | AccountService] Cached character info loaded!
[13:49:59 | Runtime] Loaded o***@***.com!
[13:49:59 | o***@***.com] Starting connection to EUNorth
[13:49:59 | o***@***.com] Establishing proxy
[13:50:00 | o***@***.com] Connected to EUNorth!
[13:50:00 | o***@***.com] Connecting to Nexus
[13:50:01 | o***@***.com] No active characters. Creating new character.
[13:50:01 | o***@***.com] The connection to EUNorth was closed.
[13:50:01 | o***@***.com] Connecting in 0.6 seconds.
[13:50:01 | o***@***.com] Establishing proxy
[13:50:02 | o***@***.com] Connected to EUNorth!
[13:50:02 | o***@***.com] Creating new character
[13:50:03 | o***@***.com] Received failure 0: "Account already has 1 active characters"
[13:50:03 | o***@***.com] The connection to EUNorth was closed.
[13:50:03 | o***@***.com] Connecting in 0.8 seconds.
[13:50:03 | o***@***.com] Establishing proxy
[13:50:04 | o***@***.com] Connected to EUNorth!
[13:50:04 | o***@***.com] Connecting to Nexus
[13:50:05 | o***@***.com] No active characters. Creating new character.
[13:50:05 | o***@***.com] The connection to EUNorth was closed.
[13:50:05 | o***@***.com] Connecting in 0.4 seconds.
[13:50:05 | o***@***.com] Establishing proxy
[13:50:06 | o***@***.com] Connected to EUNorth!
[13:50:07 | o***@***.com] Creating new character
[13:50:07 | o***@***.com] Received failure 0: "Account already has 1 active characters"
[13:50:07 | o***@***.com] The connection to EUNorth was closed.
newest
31.1.0
src\plugins\notifier.ts(1,10): error TS2305: Module '"C:/Users/Someone/Desktop/nrelay-master/src/core/index"' has no exported member 'Log'.
src\plugins\notifier.ts(1,25): error TS2305: Module '"C:/Users/Someone/Desktop/nrelay-master/src/core/index"' has no exported member 'NrPlugin'.
src\plugins\notifier.ts(1,35): error TS2305: Module '"C:/Users/Someone/Desktop/nrelay-master/src/core/index"' has no exported member 'HookPacket'.
src\plugins\notifier.ts(1,47): error TS2305: Module '"C:/Users/Someone/Desktop/nrelay-master/src/core/index"' has no exported member 'Packet'.
src\plugins\notifier.ts(1,55): error TS2305: Module '"C:/Users/Someone/Desktop/nrelay-master/src/core/index"' has no exported member 'PacketType'.
src\plugins\notifier.ts(1,75): error TS2305: Module '"C:/Users/Someone/Desktop/nrelay-master/src/core/index"' has no exported member 'PluginManager'.
src\plugins\notifier.ts(3,10): error TS2305: Module '"C:/Users/Someone/Desktop/nrelay-master/src/models/server"' has no exported member 'IServer'.
1.6.0
8.8.8
X34.0.0 1590058708
My own, which connects to nexus and goes to quest area.
[12:16:24 | Updater] Updating client and assets...
[12:16:24 | Updater] Downloading assets...
[12:16:24 | Updater] Fetching client version...
[12:16:25 | Updater] Downloading client...
[12:16:25 | Updater] Updated assets!
[12:16:30 | Updater] Extracting packets...
[12:16:30 | Updater] Extracting parameters...
[12:16:30 | Updater] Updated packets and version!
[12:16:30 | Runtime] Finished updating!
[12:16:30 | ResourceManager] Loaded 1973 tiles.
[12:16:30 | ResourceManager] Loaded 15184 objects.
[12:16:30 | Runtime] Mapped 99 packet ids.
[12:16:30 | Runtime] Using build version "X34.0.0"
[12:16:30 | Runtime] Using client token "XTeP7hERdchV5jrBZEYNebAqDPU6tKU6"
[12:16:30 | LibraryManager] Loading plugins...
[12:16:30 | LibraryManager] Loading CollectorPlugin...
[12:16:30 | LibraryManager] Loaded REDACTED_PLUGIN_NAME
[12:16:30 | Runtime] Loading REDACTED...
[12:16:30 | AccountService] Loading server list...
[12:16:30 | AccountService] Cached server list loaded!
[12:16:30 | AccountService] Loading character info...
[12:16:31 | AccountService] Character info loaded!
[12:16:31 | Runtime] Loaded REDACTED!
[12:16:31 | REDACTED] Starting connection to EUWest
[12:16:31 | Runtime] Loading REDACTED...
[12:16:31 | AccountService] Loading server list...
[12:16:31 | AccountService] Cached server list loaded!
[12:16:31 | AccountService] Loading character info...
[12:16:31 | REDACTED] Connected to EUWest!
[12:16:31 | REDACTED] Received PacketIO error: The value of "offset" is out of range. It must be >= 0 and <= 101. Received 1039990887
i have no clue where and how i add names to the tracker so help please
8.8.4
X33.0.1
RandomRealm
client.changeGameId(GameId.RandomRealm)
C:\Users\C\Desktop\nrelay\nrelay_v8\realm\node_modules\nrelay\lib\core\client.js:809
const distance = projectile.lifetimeMS * (projectile.speed / 10000);
^
TypeError: Cannot read property 'lifetimeMS' of null
at Client.onNewTick (C:\Users\C\Desktop\nrelay\nrelay_v8\realm\node_modules\nrelay\lib\core\client.js:809:41)
at LibraryManager.callHooks (C:\Users\C\Desktop\nrelay\nrelay_v8\realm\node_modules\nrelay\lib\core\library-manager.js:215:33)
at PacketIO.Client.io.on (C:\Users\C\Desktop\nrelay\nrelay_v8\realm\node_modules\nrelay\lib\core\client.js:94:45)
at PacketIO.emit (events.js:198:13)
at PacketIO.emitPacket (C:\Users\C\Desktop\nrelay\nrelay_v8\realm\node_modules\@realmlib\net\lib\packetio.js:144:18)
at PacketIO.onData (C:\Users\C\Desktop\nrelay\nrelay_v8\realm\node_modules\@realmlib\net\lib\packetio.js:177:30)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:287:12)
at readableAddChunk (_stream_readable.js:268:11)
at Socket.Readable.push (_stream_readable.js:223:10)
I'm working on creating a plugin for nrelay that involves putting items from the inventory into the vault. I didn't see any packets that allows you to move an item from inventory to chest, or getting an item out of a chest to inventory. Is there any help forum for nrelay, or does anyone know how to do this?
Thanks
7.7.1
X32.2.1
The bot crashes with the error:
> gulp && node index
[14:43:30] Using gulpfile ~\Desktop\nrelay 7\nrelay\gulpfile.js
[14:43:30] Starting 'default'...
[14:43:30] Starting 'clean'...
[14:43:30] Finished 'clean' after 147 ms
[14:43:30] Starting 'ts'...
[14:43:46] Finished 'ts' after 15 s
[14:43:46] Starting 'copy-files'...
[14:43:46] Finished 'copy-files' after 181 ms
[14:43:46] Finished 'default' after 16 s
[14:43:48 | NRelay] Starting...
[14:43:48 | NRelay] Checking for updates...
[14:43:49 | Mapper] Mapped 98 packet ids.
[14:43:49 | ResourceManager] Loaded 1373 tiles.
[14:43:50 | ResourceManager] Loaded 9248 objects.
[14:43:50 | PluginManager] Loaded Realm Joiner Plugin by Ark
[14:43:50 | NRelay] Loading Medusa
[14:43:52 | NRelay] Loaded Medusa!
[14:43:52 | Medusa] Starting connection to USSouth3
[14:43:52 | Medusa] Connected to USSouth3!
[14:43:52 | Medusa] Connecting to Nexus
[14:43:53 | Medusa] Connected!
[14:44:42 | Medusa] Changing gameId to -3
[14:44:42 | Medusa] Connected to USSouth3!
[14:44:43 | Medusa] Connected to NexusPortal.Beholder!
[14:44:43 | Medusa] Connecting to Realm of the Mad God
[14:44:45 | Medusa] Connected!
[14:44:45 | PacketIO] Invalid packet type: REALMHERO_LEFT_MSG
[14:45:32 | Medusa] Took 1.05 damage. At 627 health.
[14:45:33 | Medusa] Changing gameId to -3
[14:45:33 | Medusa] Connected to NexusPortal.Beholder!
[14:45:33 | Medusa] Connecting to Realm of the Mad God
[14:45:37 | Medusa] Connected!
[14:45:37 | PacketIO] Invalid packet type: REALMHERO_LEFT_MSG
[14:45:46 | PacketIO] Invalid packet type: REALMHERO_LEFT_MSG
It would be beneficial to add the following stats to PlayaData interface. This information can be used in the calculation of maxed character stats.
ATTACK_BOOST_STAT = 48,
DEFENSE_BOOST_STAT = 49,
SPEED_BOOST_STAT = 50,
VITALITY_BOOST_STAT = 51,
WISDOM_BOOST_STAT = 52,
DEXTERITY_BOOST_STAT = 53,
docs.nrelay.net seems to be offline..
and "The code in the src/ folder has extensive inline documentation..." with only 1 example... where can i check what the tool is able to... (enter portals/ move/ pick up stuff/etc...)
Latest Dev branch
X31.7.0
nrelay run will cause issues on jdk 11 sample just under
[18:00:17 | Runtime] Error while updating: Command failed: sudo java -jar --illegal-access=permit "/media/me/D2/rotmg-projects/nrelay/multi/node_modules/@realmlib/resx/lib/jpexs/ffdec.jar" -selectclass kabam.rotmg.messaging.impl.GameServerConnection -export script "/media/me/D2/rotmg-projects/nrelay/multi/temp/decompiled" "/media/me/D2/rotmg-projects/nrelay/multi/temp/client.swf"
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.jpexs.decompiler.flash.configuration.Configuration (file:/media/me/D2/rotmg-projects/nrelay/multi/node_modules/@realmlib/resx/lib/jpexs/lib/ffdec_lib.jar) to field java.lang.reflect.Field.modifiers
WARNING: Please consider reporting this to the maintainers of com.jpexs.decompiler.flash.configuration.Configuration
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
May 11, 2019 6:00:17 PM com.jpexs.decompiler.flash.gui.Main main
SEVERE: Failed to load plugins
java.lang.Error: Can not set static final com.jpexs.decompiler.flash.configuration.ConfigurationItem field com.jpexs.decompiler.flash.configuration.Configuration.registerNameFormat to com.jpexs.decompiler.flash.configuration.ConfigurationItem
at com.jpexs.decompiler.flash.configuration.Configuration.setConfigurationFields(Configuration.java:889)
at com.jpexs.decompiler.flash.configuration.Configuration.<clinit>(Configuration.java:839)
at com.jpexs.decompiler.flash.helpers.SWFDecompilerPlugin.getPluginsDir(SWFDecompilerPlugin.java:61)
at com.jpexs.decompiler.flash.helpers.SWFDecompilerPlugin.loadPlugins(SWFDecompilerPlugin.java:78)
at com.jpexs.decompiler.flash.gui.Main.main(Main.java:1915)
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class com.jpexs.decompiler.flash.configuration.Configuration
at com.jpexs.decompiler.flash.gui.Main.main(Main.java:1921)
I tried adding sudo
as well as --illegal-access=permit
to solve the issue but it did not solve it.
The fix I found at the moment was to change to JDK 8 which will run everything smoothly.
8.8.4
X33.0.1
nrelay ERR! code Error
nrelay ERR! message Command failed: npm run compile
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! realm@ compile: `tsc -p .`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the realm@ compile script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\C\AppData\Roaming\npm-cache\_logs\2020-04-30T19_02_02_511Z-debug.log
> realm@ compile C:\Users\C\Desktop\nrelay\realm
> tsc -p .
node_modules/discord.js/typings/index.d.ts(18,30): error TS7016: Could not find a declaration file for module 'ws'. 'C:/Users/C/Desktop/nrelay/realm/node_modules/ws/index.js' implicitly has an 'any' type.
Try `npm install @types/ws` if it exists or add a new declaration (.d.ts) file containing `declare module 'ws';`
nrelay ERR! Error: Command failed: npm run compile
nrelay ERR! npm ERR! code ELIFECYCLE
nrelay ERR! npm ERR! errno 2
nrelay ERR! npm ERR! realm@ compile: `tsc -p .`
nrelay ERR! npm ERR! Exit status 2
nrelay ERR! npm ERR!
nrelay ERR! npm ERR! Failed at the realm@ compile script.
nrelay ERR! npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
nrelay ERR!
nrelay ERR! npm ERR! A complete log of this run can be found in:
nrelay ERR! npm ERR! C:\Users\C\AppData\Roaming\npm-cache\_logs\2020-04-30T19_02_02_511Z-debug.log
nrelay ERR!
nrelay ERR!
nrelay ERR! > realm@ compile C:\Users\C\Desktop\nrelay\realm
nrelay ERR! > tsc -p .
nrelay ERR!
nrelay ERR! node_modules/discord.js/typings/index.d.ts(18,30): error TS7016: Could not find a declaration file for module 'ws'. 'C:/Users/C/Desktop/nrelay/realm/node_modules/ws/index.js' implicitly has an 'any' type.
nrelay ERR! Try `npm install @types/ws` if it exists or add a new declaration (.d.ts) file containing `declare module 'ws';`
nrelay ERR!
nrelay ERR! at makeError (C:\Users\C\AppData\Roaming\npm\node_modules\nrelay-cli\node_modules\execa\index.js:174:9)
nrelay ERR! at Promise.all.then.arr (C:\Users\C\AppData\Roaming\npm\node_modules\nrelay-cli\node_modules\execa\index.js:278:16)
nrelay ERR! at process._tickCallback (internal/process/next_tick.js:68:7)
The current process for using proxies in nrelay is to add a proxy
property to the account which should be connected through a proxy in the accounts.json
file. This can be tedious, particularly if there are a lot of accounts, or if the details of the accounts or proxies change frequently. It also requires the user to decide how many accounts they should allow per proxy so as to not defeat the purpose of using proxies in the first place.
Instead of this, nrelay should allow the user to simply specify a large list of proxies (for example in a proxies.json
file) and have the runtime evenly distribute accounts across those proxies to ensure none of the proxies are ever overloaded.
However, this system should not prevent users from assigning specific proxies to certain accounts, or excluding certain accounts from being connected through a proxy.
It should also allow the user to include the option of not using a proxy when the runtime is distributing accounts across proxies. For those users who use a VM to run nrelay (and not their personal computer which is associated with their own IP), the IP of the VM is essentially acting as another proxy.
proxies.json
fileA new JSON file would be the best way to store the proxies that should be initially added to the pool by the runtime. Since there are some configuration options as aforementioned, the contents of the file will need to be slightly more complex than a simple list of proxies.
{
"settings": {
"useOwnIP": false, // set this to `true` to consider no proxy as an option when distributing accounts.
"stickyProxies": false, // set this to `true` to make proxies "stick" to accounts.
},
"proxies": [
{
"host": "127.0.0.1",
"port": 8080,
"type": 5,
"userId": "username",
"password": "secret"
},
{
"id": "USA Proxy", // a unique ID for this proxy.
"host": "127.0.0.1",
"port": 8080,
"type": 5,
"userId": "username",
"password": "secret"
},
]
}
The "settings"
object in the file would allow the configuration options for the proxy pool to be changed, and the "proxies"
array would contain the actual list of proxies.
accounts.json
The user should be able to select a particular proxy, based on it's id, for a client to use. To do this, the user can add a "proxyId"
property to their account. The runtime should then choose the proxy with the matching ID for that account when it is distributing proxies.
This new property should not take precedence over the "proxy"
property, and if that property is present, the runtime should immediately choose that proxy for the account instead of one of the pooled proxies.
In an account's lifetime, it may connect and disconnect several times. It may be more desirable such that each time the account connects, it uses the same proxy that was initially assigned to it by the runtime. This could be described as the proxy "sticking" to the account. This should be configurable, as sticky proxies may lead to the distribution of proxies being unbalanced if more proxies and accounts are added at runtime.
The proxy pool would be best suited as a new property of the Runtime
class. The pool itself should essentially appear to the consumer as a read only list of proxies.
The configuration options of the pool should be both visible to, and modifiable by the consumer.
// plugin example
this.runtime.proxyPool.useOwnIP = false; // corresponds to the property in `proxies.json` with the same name.
Rather than allowing consumers to directly add proxies to the pool, a method should act as the interface for doing so. The method can simply accept a proxy object as the parameter, and should throw if it encounters an error.
// plugin example
fetchProxiesSomehow().then((proxyList) => {
for (const proxy of proxyList) {
try {
this.runtime.proxyPool.add(proxy);
} catch (err) {
Logger.log('My Plugin', `Couldn't add proxy: ${proxy.host} because ${err.message}`, LogLevel.Error);
}
}
});
Similarly to adding proxies, the interface for removing them should also be a method. This method should never throw, but should return a boolean based on whether or not the proxy was actually removed.
The method should accept a proxy object as a parameter, and should remove the proxy that matches the argument from the pool. The matching logic should be based on property equality rather than referential equality.
The method should also have an overload which accepts a string as an argument, and should remove the proxy whose id
matches the provided string.
// plugin example
// this should work fine
this.runtime.proxyPool.delete({
id: 'USA Proxy',
host: '127.0.0.1',
port: 8080,
type: 5,
userId: 'username',
password: 'secret',
});
// this should also work
this.runtime.proxyPool.delete('USA Proxy');
android@kali:/opt/nrelay$ nrelay
[23:04:21 | NRelay] Starting...
[23:04:21 | NRelay] Checking for updates...
events.js:165
throw er; // Unhandled 'error' event
^
Error: EACCES: permission denied, open '/opt/nrelay/nrelay-log.log'
Emitted 'error' event at:
at fs.open (fs.js:2225:12)
at FSReqWrap.oncomplete (fs.js:153:20)
Help please
8.8.6
X31.0.1
PlayerTracker
MapInfoPacket
UpdatePacket
NewTickPacket
TextPacket
UsePortalPacket
TeleportPacket
The bot is disconnected with no error except:
[XX:XX:XX | Main Client] Received failure 0: "Lost connection to server"
[XX:XX:XX | Main Client] Received socket error: read ECONNRESET`
Seems like an object getting hit multiple times in a small period of time triggers it? Almost certainly related to hits in some way. I can walk around as much as I like but when enemies are near they tend to disconnect after a while. Happens in all dungeons. I'll keep you posted as I look into this.
Debug logs look like:
[XX:XX:23 | Main Client] Connecting to Snake Pit
[XX:XX:24 | Main Client] Connected!
[XX:XX:33 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:33 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:34 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:34 | Main Client] Sent OtherHit for object.
[XX:XX:34 | Main Client] Took 2 damage. At 747 health.
[XX:XX:34 | Main Client] Sent PlayerHit.
[XX:XX:34 | Main Client] Took 12 damage. At 735 health.
[XX:XX:34 | Main Client] Sent PlayerHit.
[XX:XX:34 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:34 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:34 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:34 | Main Client] Took 2 damage. At 734 health.
[XX:XX:34 | Main Client] Sent PlayerHit.
[XX:XX:34 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:34 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:34 | Main Client] Took 12 damage. At 723 health.
[XX:XX:34 | Main Client] Sent PlayerHit.
[XX:XX:35 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:35 | Main Client] Took 12 damage. At 712 health.
[XX:XX:35 | Main Client] Sent PlayerHit.
[XX:XX:35 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:35 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:35 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:35 | Main Client] Took 12 damage. At 701 health.
[XX:XX:35 | Main Client] Sent PlayerHit.
[XX:XX:35 | Main Client] Took 12 damage. At 689 health.
[XX:XX:35 | Main Client] Sent PlayerHit.
[XX:XX:35 | Main Client] Took 12 damage. At 678 health.
[XX:XX:35 | Main Client] Sent PlayerHit.
[XX:XX:35 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:35 | Main Client] Took 12 damage. At 666 health.
[XX:XX:35 | Main Client] Sent PlayerHit.
[XX:XX:35 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:35 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:35 | Main Client] Sent OtherHit for object.
[XX:XX:36 | Main Client] Sent OtherHit for object.
[XX:XX:36 | Main Client] Sent OtherHit for object.
[XX:XX:36 | Main Client] Sent OtherHit for object.
[XX:XX:36 | Main Client] Sent OtherHit for object.
[XX:XX:36 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:36 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:36 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:36 | Main Client] Took 12 damage. At 710 health.
[XX:XX:36 | Main Client] Sent PlayerHit.
[XX:XX:36 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:36 | Main Client] Took 12 damage. At 698 health.
[XX:XX:36 | Main Client] Sent PlayerHit.
[XX:XX:36 | Main Client] Sent OtherHit for object.
[XX:XX:36 | Main Client] Sent OtherHit for object.
[XX:XX:36 | Main Client] Sent OtherHit for object.
[XX:XX:36 | Main Client] Took 12 damage. At 688 health.
[XX:XX:36 | Main Client] Sent PlayerHit.
[XX:XX:36 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:36 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:36 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:36 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:37 | Main Client] Sent OtherHit for player: USERNAME_2
[XX:XX:37 | Main Client] Took 12 damage. At 677 health.
[XX:XX:37 | Main Client] Sent PlayerHit.
[XX:XX:37 | Main Client] Took 12 damage. At 665 health.
[XX:XX:37 | Main Client] Sent PlayerHit.
[XX:XX:37 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:37 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:37 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:37 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:37 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:37 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:37 | Main Client] Sent OtherHit for object.
[XX:XX:37 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:37 | Main Client] Sent OtherHit for player: USERNAME_1
[XX:XX:37 | Main Client] Sent OtherHit for object.
[XX:XX:37 | Main Client] Sent OtherHit for object.
[XX:XX:37 | Main Client] Sent OtherHit for object.
[XX:XX:37 | Main Client] Sent OtherHit for object.
[XX:XX:37 | Main Client] Received failure 0: "Lost connection to server"
[XX:XX:37 | Main Client] Sent OtherHit for object.
[XX:XX:37 | Main Client] Received socket error: read ECONNRESET
[XX:XX:37 | Main Client] Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:XX5:27)
[XX:XX:37 | Main Client] The connection to SERVER_NAME was closed.
Hello,
The file char-info.cache.json
is used everytime account-service.getCharacterInfo()
is executed.
This make the actual API call to /char/list
to not occur when the cache exists.
This can be an issue: to load properly the daily reward calendar (at /dailyLogin/fetchCalendar
, we need to first hit /char/list
or else the calendar XML is not refreshed.
Feature request:
Adding a command line switch to disable the use and creation of char-info.cache.json
.
Something like --disable-char-info-cache
In my use case, for each account, this would really hit the /char/list
endpoint and then I would get an updated daily reward XML on the /dailyLogin/fetchCalendar
endpoint.
Right now, what I'll do is rm the file before launching nrelay.
And that's not super cool :D
8.7.2
X32.0.6
(version it should have)The updater updates the client to a wrong version. Editing the the versions.json isn't enoght as expacted, it removes the "Client Token Error" message tho.
The update from path command dosn't seem to work either...
"nrelay --update-from= /home/pi/Desktop/client.swf" won't update the version. (it seems to do something and no error message from that command)
ECONNRESET is a cut off from the server side right? so my guess it that it is a problem with the client version.
pi@raspberrypiDaniel:~/Desktop/nrelay/my-new-project $ nrelay run
[11:05:43 | Runtime] Checking for updates...
[11:05:43 | Updater] Checking for new versions...
[11:05:44 | ResourceManager] Loaded 1620 tiles.
[11:05:47 | ResourceManager] Loaded 12831 objects.
[11:05:47 | Runtime] Mapped 99 packet ids.
[11:05:47 | Runtime] Using build version "X31.4.6"
[11:05:47 | LibraryManager] Loading plugins...
[11:05:47 | LibraryManager] Loading HelloPlugin...
[11:05:47 | LibraryManager] Loaded Hello Plugin by tcrane!
[11:05:47 | Runtime] Loading Main Client...
[11:05:47 | AccountService] Loading server list...
[11:05:47 | AccountService] Cached server list loaded!
[11:05:47 | AccountService] Loading character info...
[11:05:47 | AccountService] Cached character info loaded!
[11:05:47 | Runtime] Loaded Main Client!
[11:05:47 | Main Client] Starting connection to EUNorth
[11:05:47 | Main Client] Connected to EUNorth!
[11:05:47 | Main Client] Received failure 0: "Client Token Error"
[11:05:47 | Main Client] Received socket error: read ECONNRESET
[11:05:47 | Main Client] The connection to EUNorth was closed.
[11:05:47 | Main Client] Connecting in 1.9 seconds.
[11:05:49 | Main Client] Connected to EUNorth!
[11:05:49 | Main Client] Received failure 0: "Client Token Error"
[11:05:49 | Main Client] The connection to EUNorth was closed.
[11:05:49 | Main Client] Connecting in 1.9 seconds.
^C
pi@raspberrypiDaniel:~/Desktop/nrelay/my-new-project $ nrelay -v
CLI version: v1.6.0
nrelay version: v8.7.2
pi@raspberrypiDaniel:~/Desktop/nrelay/my-new-project $
First time it said something about not being able to update packages, now it just says Couldn't load acc-config.json
what do
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.