Jump to content
McKay Development

Revadike

Member
  • Posts

    98
  • Joined

  • Last visited

Everything posted by Revadike

  1. I've gotten my hands on a large number of steam keys of games I don't own, and I did some precise testing for key redeeming limits. Here are my results: Per 60 minutes: Limit of 50 activation attempts (result = fail OR ok), but 10 activation fails limitCooldown of 60 minutes starts after the activation that hit the limitSo, for example, within an hour you will get rate limited after 45 OK and 5 Failed activations.
  2. getGemValue just calculates how many gems you will get for an item after using turnItemIntoGems. You can use them both independently.
  3. Actually I was, I just forgot to add it to the example code above.
  4. So, I am trying to do some curator stuff with node-steamcommunity. However, for some reason, my simulated requests failed. For example: const formdata = { sessionid: community.getSessionID(), clanid: offer.clanid, appid: offer.appid, action: `accept` }; user.once(`webSession`, () => community.httpRequestPost({ url: `https://store.steampowered.com/curator/${offer.clanid}/admin/ajaxrespondoffer`, form: formdata, // jar: jar, headers: { // ":authority": `store.steampowered.com`, // ":method": `POST`, // ":path": `/curator/${offer.clanid}/admin/ajaxrespondoffer`, // ":scheme": `https`, "Accept": `*/*`, "Accept-Encoding": `gzip, deflate, br`, //"accept-language": `nl-NL,nl;q=0.9,en-US;q=0.8,en;q=0.7`, "Content-Length": `77`, "Content-Type": `application/x-www-form-urlencoded; charset=UTF-8`, "Cookie": community._jar.getCookieString(`https://store.steampowered.com`), "DNT": `1`, "Origin": `https://store.steampowered.com`, "Referer": `https://store.steampowered.com/curator/${offer.clanid}/admin/pending`, //"user-agent": `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36`, "X-Requested-With": `XMLHttpRequest` } }, acceptedCuratorConnectOffer)); user.webLogOn(); I tried to experiment with headers, but that doesn't seem to do anything. Could it be because of https? Or protocol being h2?
  5. You can do it with steam-user: const steamid = 123456; client.getPersonas([steamid], personas => { console.log(personas[steamid].game_name); // Non-steam game name });
  6. Assuming you are logged in (user = steam-user instance, steamid = steamid64): function isSteamFriends(steamid) { return Object.entries(user.myFriends).filter(e => e[1] === SteamUser.Steam.EFriendRelationship.Friend).map(e => e[0]).includes(steamid); }
  7. callback for webLogOn? How about: client.once(`webSession`, () => { // Now you should be able to do all your steamcommunity related stuff safely }); client.webLogOn();
  8. If you are using node-steamcommunity functions not that often, you can do this: client.once(`webSession`, () => { // Now you should be able to do all your steamcommunity related stuff safely }); client.webLogOn();
  9. I'd simply just use `setTimeout` for removing a friend after a week. But that assumes your script/bot keeps running. You can also use the API endpoint https://api.steampowered.com/ISteamUser/GetFriendList/v1/ and remove friends based on `friend_since` property.
  10. Any idea what properties proxies should have to work well with steam? What's the difference between paid and free ones? Is steam actively blocking free/public proxies?
  11. I'm afraid you're out of luck. I couldn't find anything on github and this is the only thing related to posting discussion comments I could find: https://pastebin.com/CmGwF93d
  12. https://github.com/DoctorMcKay/node-steamcommunity/wiki/CSteamUser#getinventoryappid-contextid-tradableonly-callback https://github.com/DoctorMcKay/node-steamcommunity/wiki/SteamCommunity#turnitemintogemsappid-assetid-expectedgemsvalue-callback
  13. https://github.com/DoctorMcKay/node-steamcommunity/pull/188
  14. Dr. McKay, I've noticed if you use HTTPS for store.steampowered.com, you will get a ACCESS DENIED html response (403). Can you look into this?
  15. Yes, I know about the friends requirement that has been implemented recently. Inviting using node-steam-user works, but not using node-steamcommunity. There must be some issue there.
  16. I have the same problem. Every time! I'm inviting as soon as we are friends. Maybe that's the problem? Maybe we need to be friends for an x period of time? What do you think?
  17. Revadike

    Suggestions

    Please check: - https://github.com/DoctorMcKay/node-steam-user/issues/112 - https://github.com/DoctorMcKay/node-steam-user/issues/128 Thanks
  18. Just simulate the network request using https://github.com/DoctorMcKay/node-steamcommunity/wiki/HTTP-Hooks
  19. We are not here to code for you buddy
  20. I want to get back to Steam Family Sharing behavior. Let me explain how it works. Let there be a steam user, called the host, on a device (PC) with shared libraries, called the host device. As long as the host is logged in to that host device, Steam will make all the shared games available to any device on any network where the host is logged in. Don't ask me why Steam is doing this, but some speculate it has something to do with Steam streaming. Anyway, this can cause GetOwnedApps to also include shared games. Now, I came up with a method that can exclude shared games. You could query store.steampowered.com/dynamicstore/userdata/?v=VERSION to get the owned games (and packages) that guaranteed aren't shared and use the 'v' parameter to get the most up-to-date list. However, this may belong more to node-steamcommunity, as it uses web API, but I leave that choice to you. If you decide to include into steam-user, you could add an options-object or a boolean for getOwnedGames, to exclude Family Shared Games, through this method. Do you rather want me to open an issue about this on GitHub?
  21. I'll tell you a valid use-case. If this gets implemented, it opens opportunities for games to download, install, update, and validate entire apps, like SteamCMD does with "app_update -validate". It will be very useful for dedicated server operators, but there are many other applications.
  22. So, I am trying to download all .manifest files of all my owned games. Here is the snippet that should do this: client.once("appOwnershipCached", function() { console.log("appOwnershipCached"); client.getProductInfo(client.getOwnedApps(), [], function(apps) { console.log("gotProductInfo"); apploop: for (appid in apps) { depotloop: for (depotid in apps[appid].appinfo.depots) { if (!isNaN(parseInt(depotid))) { //is key the depot id? manifestloop: for (type in apps[appid].appinfo.depots[depotid].manifests) { var manifestid = apps[appid].appinfo.depots[depotid].manifests[type]; client.getRawManifest(parseInt(appid), parseInt(depotid), manifestid, function(error, manifest) { if (!error) { //console.log(manifest); fs.writeFile(path.join(__dirname + "/" + depotid + "_" + manifestid + ".manifest"), manifest, "utf8", function(error) { console.log(error); }); } }); break apploop; //limit to 1 manifest for now } } } } }); }); But the .manifest file I get isn't quite the same as the original downloaded directly from Steam. I suspect because the filenames are encrypted with my .manifest file. The problem is though, there is no feature that decrypts the filenames without parsing the raw manifest into an JSON object. Is this the problem? Or is it something else? Should I do something differently? Thanks 11_3149618157612033597.manifest.zip
  23. So, is there any way to refresh the web session with callback?
  24. Sorry to hijack this thread, but speaking of web session. I'm using pretty much the same code as above. But my purpose is to post to my friend activity, which I am doing like this: var profileurl = "http://steamcommunity.com/"; if (vanityname) { profileurl += "id/" + vanityname; } else { profileurl += "profiles/" + client.steamID.getSteamID64(); } var formdata = new Object(); formdata.sessionid = community.getSessionID(); formdata.appid = SOMEAPPID; formdata.status_text = SOMEMESSAGE; setTimeout(function() { community.httpRequestPost(profileurl + "/ajaxpostuserstatus/", { formData: formdata, followAllRedirects: true }, function(error, response, data) { var success, json; try { json = JSON.parse(data); success = json.success; } catch (e) { success = false; } console.log(response.statusCode, success); if (error) { console.log(error); } }); }, 1000); This all works fine when I recently login. All friend activity posts will return "200 True", but after a while it only returns "200 False". I suspect the web session has expired or something, but how can that be when I use the same code as above? Any other solutions maybe? Maybe somehow refresh web session each time I want to post something, but how?
  25. Well, I am not using any sentry file to my knowledge, but I am sharing the node.js program with SteamCMD. Anyway, I've seen this behavior before, it happens to devices sharing the same network and steam account as the PC with all the shared games. Actually, it even happens across networks. All the shared games are available.
×
×
  • Create New...