Jump to content
McKay Development

What Comes Around

Member
  • Posts

    76
  • Joined

  • Last visited

Recent Profile Visitors

1988 profile views

What Comes Around's Achievements

  1. Hmmm, I also get an UnhandledPromiseRejectionWarning for that error. Here is an example: (node:1755579) UnhandledPromiseRejectionWarning: Error: connect ETIMEDOUT XXXXXXXXXXX(IP address) at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1159:16) (node:1755579) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3) I've looked through both, steam-user and steam-community. Steam user uses netjs to make a socket with CM through a proxy, and Steam community uses the request library to make requests through the proxy. Steam user listens for errors and timeouts from netjs, and Steam community has a callback for http errors that should be thrown if request throws errors. So I really do not understand how the promise rejection isn't handled. My current solution is simple. Firstly, I will reinstall the modules. Maybe I was reading through your code and happened to alter it some way long ago. My bot already checks if it is connected and if for some reason it is not, it will restart itself, requesting a proxy again. In this case, the Proxy Management System can check if a proxy gets dropped too often in a short time frame and blacklist it. This should be a decent workaround but it sucks that I cannot find the root of the problem for now. If you have any idea where the issue could be let me know, and thank you for your help. I'm self taught so... I lack knowledge that might seem basic sometimes and also complex knowledge. Guess you could say, I only know what I wanted to learn Thanks again!
  2. Good day! For a long time, I had few issues with proxy providers, but as of recent, my proxy provider has been providing unreliable proxies. Because of this I have created my own proxy management system and want to flag proxies that they don't catch acting erroneously. So I want to handle proxy connection errors. One error I am having a lot of issue handling is one that looks like this: Error: connect ETIMEDOUT [ip address and port] at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1159:16) { errno: -110, code: 'ETIMEDOUT', syscall: 'connect', address: '[ip address]', port: [port] } What I want to do is add some code into "net.js:1159" to handle the error by sending a message to the proxy management system to flag the proxy, after which the proxy is blacklisted. However, I cannot find 'net.js'. Do you have any ideas or suggestions on how I can handle this error?
  3. Sorry for the late reply. I was away from the PC I use for coding. Anyways, it unfortunately didn't work. I will learn more about how you replicate GC messages in your module and see what I can do to get the sticker scraping message to work. If you can think of anything else, any advice, it would be much appreciated! And thank you for your help thus far!
  4. Unfortunately that didn't work as Language.RemoveSticker is undefined. Also looking at the messages sent when using ApplySticker: It shows that the msg code 1086 is used. Which is correct, like with the actual NetHook2Analyzer message. What I will try next is deleting items to see how it looks in NetHook to try to maybe find a pattern and maybe that way find my mistake. Let me know if you can think of anything else!
  5. I have tried a lot of combinations but still can't seem to get it to work. I hope you can maybe spot a mistake that I might have made. I tried two ways to send the message. Here is the first: GlobalOffensive.prototype.scrapeSticker = function(item_item_id, sticker_slot) { let buffer = new ByteBuffer(8 + 8 + 4 + 4 + 2, ByteBuffer.LITTLE_ENDIAN); buffer.writeUint64(0); buffer.writeUint64(item_item_id); buffer.writeUint32(sticker_slot); buffer.writeUint32(0) buffer.writeFloat(1) this._send(Language.ApplySticker, null, buffer) } And here is the second way I tried sending the message: GlobalOffensive.prototype.scrapeSticker = function(item_id, stickerslot) { this._send(Language.ApplySticker, Protos.CMsgApplySticker, { sticker_item_id: 0, item_item_id: item_id, sticker_slot: stickerslot, baseitem_defidx:0, sticker_wear: 1 }) } Neither worked to remove the sticker. Here is what the message I am trying to replicate looks like, from NetHook2Analyzer; I must be making a mistake somewhere. The only other thing I can think of is that stickers can only be removed bit by bit and not straight to wear 1. But I would be very surprised if that's the case.
  6. Update; After downloading 20 different .NET versions and getting everything working with regards to SteamKit. I have NetHook2 working, and I analyzed the messages. Here is what it looks like when you fully remove a sticker: So these are the params needed.
  7. Unfortunately it didn't work. I am trying to get NetHook working right now but having trouble with that as well. Here is what I have so far. This is index.js: const SteamUser = require('steam-user'); const SteamTotp = require('steam-totp'); const SteamCommunity = require('steamcommunity'); const GlobalOffensive = require('globaloffensive') const Request = require('request'); var proxy = 'x' var Steam_User = new SteamUser({ httpProxy: proxy }); var Steam_Community = new SteamCommunity({ request: Request.defaults({proxy: proxy, timeout: 100000}) //old request: Request.defaults({proxy: proxy}) }) Steam_User.logOn({ accountName: 'x', password: 'x', rememberPassword: true, twoFactorCode: SteamTotp.generateAuthCode('x'), }); Steam_User.on('loggedOn', ()=> { console.log('Client logged on') const csgo = new GlobalOffensive(Steam_User); Steam_User.gamesPlayed([730],true); csgo.on('connectedToGC', () =>{ console.log('Connected to CSGO') console.log(csgo.inventory[0]) console.log(csgo.inventory[0].stickers) csgo.scrapeSticker(30509013742, 2) console.log(csgo.inventory[0].stickers) }) }) Steam_User.on('webSession', (sid, cookies) => { console.log('Client web logged on') }) Steam_User.on('steamGuard', function(domain, callback) { var code = SteamTotp.generateAuthCode('x') callback(code); }); As basic as it gets. Here is an addition I made to the index of globaloffensive npm: /** * Scrape sticker * @param {int} itemId * @param {int} sticker_slot */ GlobalOffensive.prototype.scrapeSticker = function(itemId, sticker_slot) { let buffer = new ByteBuffer(8 + 4, ByteBuffer.LITTLE_ENDIAN); buffer.writeUint64(itemId); buffer.writeUint32(sticker_slot) this._send(Language.ApplySticker, null, buffer) } Here is the output it gives: Client logged on debug Sending GC message ClientHello Client web logged on Connected to CSGO { attribute: [ { def_index: 6, value: null, value_bytes: <Buffer 00 00 90 42> }, { def_index: 7, value: null, value_bytes: <Buffer 45 d4 25 44> }, { def_index: 8, value: null, value_bytes: <Buffer 1f 77 49 3e> }, { def_index: 75, value: null, value_bytes: <Buffer f0 41 78 64> }, { def_index: 113, value: null, value_bytes: <Buffer ba 13 00 00> }, { def_index: 121, value: null, value_bytes: <Buffer 61 12 00 00> }, { def_index: 122, value: null, value_bytes: <Buffer ac 26 5b 3f> }, { def_index: 125, value: null, value_bytes: <Buffer ba 13 00 00> } ], equipped_state: [], id: 'x', account_id: x, inventory: x, def_index: 9, quantity: 1, level: 1, quality: 4, flags: 0, origin: 24, custom_name: null, custom_desc: null, interior_item: null, in_use: false, style: null, original_id: null, rarity: 2, position: 0, paint_index: 72, paint_seed: 663, paint_wear: 0.19674347341060638, tradable_after: 2023-06-01T07:00:00.000Z, stickers: [ { slot: 0, sticker_id: 5050, wear: null, scale: null, rotation: null }, { slot: 2, sticker_id: 4705, wear: 0.8560588359832764, scale: null, rotation: null }, { slot: 3, sticker_id: 5050, wear: null, scale: null, rotation: null } ] } [ { slot: 0, sticker_id: 5050, wear: null, scale: null, rotation: null }, { slot: 2, sticker_id: 4705, wear: 0.8560588359832764, scale: null, rotation: null }, { slot: 3, sticker_id: 5050, wear: null, scale: null, rotation: null } ] debug Sending GC message ApplySticker [ { slot: 0, sticker_id: 5050, wear: null, scale: null, rotation: null }, { slot: 2, sticker_id: 4705, wear: 0.8560588359832764, scale: null, rotation: null }, { slot: 3, sticker_id: 5050, wear: null, scale: null, rotation: null } ] I am now trying to get NetHook installed but I am having issues with that. I can't seem to build the dll, I either get a build tool error and can't choose to Retarget solution like it tells me to. Any ideas on changes to the request that might get it to work?
  8. Thank you very much! Being self taught and not very experienced it's a little tough trying to navigating things like this on my own. So I really appreciate the help/advice!
  9. Update, I found the csgo docs. So it looks like it's outlined there. I believe I need to use the enum 1053 (RemoveSticker). And I can use this to find out what gc wants to see:
  10. Good day, I know it might sound stupid. But I want to automate scraping stickers. I would like to know how I can intercept game coordinator messages so I can recreate scraping stickers or if anyone knows what the messages need to look like that would cut that be a helpful shortcut for me!
  11. After digging around these past two days I think you are right. I don't think it's a configuration issue because if you look at tunneling agent the ECONRESET code is thrown out in any case, whether the proxy authentication fails, or a timeout, or whatever. I checked all of my proxies and they have the right credentials, and they are in the right format. Should also be noted that accounts do connect, just occasional requests get that error. So I believe like you said, the issue is the proxies are taking too long to tunnel a socket, so it throws out that error. A solution for me I think would be to either ignore the errors (the requests do go through sometimes), or pay for higher priority on the proxy network. For now, I'm using the simplest solution, ignoring the errors Thank you for your advice and thoughts!! Edit: I should also mention. I said I increased the timeout for request to 5 seconds, firstly, the default timeout setting is higher, I think it's like 50 seconds, after finding that out I doubled it. However, this did not help. Which further confirms that the proxy is at fault and it's not a request issue. Again, the proxy doesn't tunnel a socket in time.
  12. Good day, I get this error periodically. Sometimes it's smooth sailing, sometimes I'm getting this error for a lot of proxies. Error: tunneling socket could not be established, cause=connect ETIMEDOUT xx.xxx.xxx.xxx:xxxx at ClientRequest.onError (G:\SteamProject\Current Version\node_modules\tunnel-agent\index.js:177:17) at Object.onceWrapper (events.js:520:26) at ClientRequest.emit (events.js:400:28) at Socket.socketErrorListener (_http_client.js:475:9) at Socket.emit (events.js:400:28) at emitErrorNT (internal/streams/destroy.js:106:8) at emitErrorCloseNT (internal/streams/destroy.js:74:3) at processTicksAndRejections (internal/process/task_queues.js:82:21) { code: 'ECONNRESET', body: undefined } For my request settings in the community constructor I have increased the timeout to 5 seconds but it still hasn't helped. this.client = new SteamUser({ httpProxy: proxy }); this.community = new SteamCommunity({ request: Request.defaults({proxy: proxy, timeout: 5000}) //old request: Request.defaults({proxy: proxy}) }) this.manager = new TradeOfferManager({ steam: this.client, community: this.community, language: 'en' }); Do you think this is a proxy issue or steam issue? My proxy provider shows no issues with the proxies, and since it comes and goes I would be more inclined to think it's a steam issue. Any advice?
  13. Good day! Just a suggestion. I have already added this locally but would be good to add to the available npm. Basically, say the proxy connection doesn't work. For me, it would be very useful to be able to set a function as a callback that handles the error. For example; The proxy timedout. It runs a function: X. Function X flags the assigned proxy as not working and returns an unused proxy URL. I would make a pull request but I'm self taught and my code is kinda janky half the time, so I think you could do much better than me
  14. But I mentioned in the reply that you quoted about that. Medals and pins are excluded from items that are private when you set your settings to private. That's because you can have everything on private, but if you enter a game players can still see your medals and pins. Yes, they can use your weapons, but they cannot see the item id or float or pattern I believe. But when you enter a game, the game coordinator gives you players medals and pins. And you can communicate with the game coordinator, so that data is public.
  15. CSGO items always have a 7 day cooldown, maybe you and your friend had the same item in both of your inventories so you saw one as tradeable once, then selected the tradeable one in your friend's inventory so assumed it was the same item. I've been trading many items for a long time now, there is always a 7 day cooldown. But you can sell the items on the market immediately. Has been like this for a long time and will continue to be like this.
×
×
  • Create New...