steamutils 1.3.32 → 1.3.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/steamutils.iml +1 -1
- package/.idea/vcs.xml +1 -1
- package/SteamClient.js +81 -20
- package/bufferHelpers.js +115 -115
- package/free_packages.json +10048 -10048
- package/index.js +13 -4
- package/package.json +2 -1
- package/protos/csgo/base_gcmessages_csgo.proto +547 -547
- package/protos/csgo/c_peer2peer_netmessages.proto +55 -55
- package/protos/csgo/clientmessages.proto +48 -48
- package/protos/csgo/connectionless_netmessages.proto +19 -19
- package/protos/csgo/cs_gameevents.proto +34 -34
- package/protos/csgo/cs_usercmd.proto +34 -34
- package/protos/csgo/cstrike15_gcmessages.proto +1402 -1402
- package/protos/csgo/cstrike15_usermessages.proto +596 -596
- package/protos/csgo/demo.proto +160 -160
- package/protos/csgo/econ_gcmessages.proto +228 -228
- package/protos/csgo/engine_gcmessages.proto +14 -14
- package/protos/csgo/enums_clientserver.proto +1529 -1529
- package/protos/csgo/fatdemo.proto +125 -125
- package/protos/csgo/gameevents.proto +120 -120
- package/protos/csgo/gcsdk_gcmessages.proto +323 -323
- package/protos/csgo/gcsystemmsgs.proto +242 -242
- package/protos/csgo/netmessages.proto +604 -604
- package/protos/csgo/network_connection.proto +126 -126
- package/protos/csgo/networkbasetypes.proto +244 -244
- package/protos/csgo/networksystem_protomessages.proto +17 -17
- package/protos/csgo/steamdatagram_messages_auth.proto +65 -65
- package/protos/csgo/steamdatagram_messages_sdr.proto +534 -534
- package/protos/csgo/steammessages.proto +597 -597
- package/protos/csgo/steammessages_base.proto +301 -301
- package/protos/csgo/steammessages_cloud.steamworkssdk.proto +68 -68
- package/protos/csgo/steammessages_gamenetworkingui.proto +61 -61
- package/protos/csgo/steammessages_helprequest.steamworkssdk.proto +22 -22
- package/protos/csgo/steammessages_oauth.steamworkssdk.proto +18 -18
- package/protos/csgo/steammessages_player.steamworkssdk.proto +254 -254
- package/protos/csgo/steammessages_publishedfile.steamworkssdk.proto +233 -233
- package/protos/csgo/steammessages_steamlearn.steamworkssdk.proto +357 -357
- package/protos/csgo/steammessages_unified_base.steamworkssdk.proto +30 -30
- package/protos/csgo/steamnetworkingsockets_messages.proto +205 -205
- package/protos/csgo/steamnetworkingsockets_messages_certs.proto +39 -39
- package/protos/csgo/steamnetworkingsockets_messages_udp.proto +75 -75
- package/protos/csgo/te.proto +259 -259
- package/protos/csgo/uifontfile_format.proto +13 -13
- package/protos/csgo/usercmd.proto +38 -38
- package/protos/csgo/usermessages.proto +721 -721
- package/protos/csgo/valveextensions.proto +17 -17
- package/protos/google/protobuf/descriptor.proto +281 -281
- package/protos/steam/clientmetrics.proto +45 -45
- package/protos/steam/content_manifest.proto +62 -62
- package/protos/steam/contenthubs.proto +41 -41
- package/protos/steam/encrypted_app_ticket.proto +10 -10
- package/protos/steam/enums.proto +444 -444
- package/protos/steam/enums_clientserver.proto +1539 -1539
- package/protos/steam/enums_productinfo.proto +13 -13
- package/protos/steam/htmlmessages.proto +1027 -1027
- package/protos/steam/offline_ticket.proto +8 -8
- package/protos/steam/renderer/rendermessages.proto +893 -893
- package/protos/steam/steamdatagram_messages_auth.proto +65 -65
- package/protos/steam/steamdatagram_messages_sdr.proto +533 -533
- package/protos/steam/steammessages_accounthardware.steamclient.proto +201 -201
- package/protos/steam/steammessages_appoverview.proto +187 -187
- package/protos/steam/steammessages_auth.steamclient.proto +435 -435
- package/protos/steam/steammessages_base.proto +332 -332
- package/protos/steam/steammessages_broadcast.steamclient.proto +759 -759
- package/protos/steam/steammessages_chat.steamclient.proto +1281 -1281
- package/protos/steam/steammessages_client_objects.proto +645 -645
- package/protos/steam/steammessages_clientlanp2p.proto +42 -42
- package/protos/steam/steammessages_clientmetrics.steamclient.proto +194 -194
- package/protos/steam/steammessages_clientnotificationtypes.proto +231 -231
- package/protos/steam/steammessages_clientserver.proto +392 -392
- package/protos/steam/steammessages_clientserver_2.proto +760 -760
- package/protos/steam/steammessages_clientserver_appinfo.proto +131 -131
- package/protos/steam/steammessages_clientserver_friends.proto +260 -260
- package/protos/steam/steammessages_clientserver_gameservers.proto +159 -159
- package/protos/steam/steammessages_clientserver_lbs.proto +70 -70
- package/protos/steam/steammessages_clientserver_login.proto +167 -167
- package/protos/steam/steammessages_clientserver_ucm.proto +205 -205
- package/protos/steam/steammessages_clientserver_uds.proto +124 -124
- package/protos/steam/steammessages_clientserver_ufs.proto +172 -172
- package/protos/steam/steammessages_clientserver_userstats.proto +80 -80
- package/protos/steam/steammessages_clientsettings.proto +168 -168
- package/protos/steam/steammessages_cloud.steamclient.proto +513 -513
- package/protos/steam/steammessages_contentsystem.steamclient.proto +115 -115
- package/protos/steam/steammessages_credentials.steamclient.proto +115 -115
- package/protos/steam/steammessages_datapublisher.steamclient.proto +116 -116
- package/protos/steam/steammessages_depotbuilder.steamclient.proto +118 -118
- package/protos/steam/steammessages_deviceauth.steamclient.proto +203 -203
- package/protos/steam/steammessages_econ.steamclient.proto +150 -150
- package/protos/steam/steammessages_friendmessages.steamclient.proto +168 -168
- package/protos/steam/steammessages_gamenetworking.steamclient.proto +32 -32
- package/protos/steam/steammessages_gamenetworkingui.proto +61 -61
- package/protos/steam/steammessages_gamenotifications.steamclient.proto +156 -156
- package/protos/steam/steammessages_gameservers.steamclient.proto +152 -152
- package/protos/steam/steammessages_hiddevices.proto +157 -157
- package/protos/steam/steammessages_inventory.steamclient.proto +224 -224
- package/protos/steam/steammessages_linkfilter.steamclient.proto +49 -49
- package/protos/steam/steammessages_lobbymatchmaking.steamclient.proto +33 -33
- package/protos/steam/steammessages_market.steamclient.proto +26 -26
- package/protos/steam/steammessages_marketingmessages.steamclient.proto +274 -274
- package/protos/steam/steammessages_offline.steamclient.proto +40 -40
- package/protos/steam/steammessages_parental.steamclient.proto +228 -228
- package/protos/steam/steammessages_parties.steamclient.proto +94 -94
- package/protos/steam/steammessages_partnerapps.steamclient.proto +138 -138
- package/protos/steam/steammessages_player.steamclient.proto +1060 -1060
- package/protos/steam/steammessages_publishedfile.steamclient.proto +813 -813
- package/protos/steam/steammessages_qms.steamclient.proto +125 -125
- package/protos/steam/steammessages_remoteclient.proto +99 -99
- package/protos/steam/steammessages_remoteclient_discovery.proto +235 -235
- package/protos/steam/steammessages_remoteclient_service.steamclient.proto +86 -86
- package/protos/steam/steammessages_remoteclient_service_messages.proto +217 -217
- package/protos/steam/steammessages_remoteplay.proto +976 -976
- package/protos/steam/steammessages_secrets.steamclient.proto +39 -39
- package/protos/steam/steammessages_shader.steamclient.proto +108 -108
- package/protos/steam/steammessages_site_license.steamclient.proto +128 -128
- package/protos/steam/steammessages_sitelicenseclient.proto +38 -38
- package/protos/steam/steammessages_siteserverui.proto +130 -130
- package/protos/steam/steammessages_star.steamclient.proto +64 -64
- package/protos/steam/steammessages_steamtv.steamclient.proto +630 -630
- package/protos/steam/steammessages_store.steamclient.proto +371 -371
- package/protos/steam/steammessages_storebrowse.steamclient.proto +402 -402
- package/protos/steam/steammessages_timedtrial.steamclient.proto +50 -50
- package/protos/steam/steammessages_twofactor.steamclient.proto +186 -186
- package/protos/steam/steammessages_unified_base.steamclient.proto +33 -33
- package/protos/steam/steammessages_unified_test.steamclient.proto +61 -61
- package/protos/steam/steammessages_useraccount.steamclient.proto +249 -249
- package/protos/steam/steammessages_vac.steamclient.proto +44 -44
- package/protos/steam/steammessages_video.steamclient.proto +171 -171
- package/protos/steam/steammessages_virtualcontroller.proto +138 -138
- package/protos/steam/steammessages_workshop.steamclient.proto +23 -23
- package/protos/steam/steamnetworkingsockets_messages.proto +205 -205
- package/protos/steam/steamnetworkingsockets_messages_certs.proto +39 -39
- package/protos/steam/steamnetworkingsockets_messages_udp.proto +75 -75
- package/protos/steam/webuimessages_base.proto +24 -24
- package/protos/steam/webuimessages_gamenotes.proto +21 -21
- package/protos/steam/webuimessages_steamengine.proto +32 -32
- package/protos/steam/webuimessages_storagedevicemanager.proto +110 -110
- package/protos/steam/webuimessages_systemmanager.proto +17 -17
- package/protos/steam/webuimessages_transport.proto +18 -18
- package/protos/steam/webuimessages_transportvalidation.proto +97 -97
- package/protos/webui/common.proto +5508 -5508
- package/protos/webui/common_base.proto +27 -27
- package/protos/webui/service_accountlinking.proto +27 -27
- package/protos/webui/service_accountprivacy.proto +42 -42
- package/protos/webui/service_auction.proto +97 -97
- package/protos/webui/service_authentication.proto +222 -222
- package/protos/webui/service_authenticationsupport.proto +74 -74
- package/protos/webui/service_broadcast.proto +562 -562
- package/protos/webui/service_chat.proto +11 -11
- package/protos/webui/service_chatroom.proto +810 -810
- package/protos/webui/service_chatusability.proto +107 -107
- package/protos/webui/service_clan.proto +41 -41
- package/protos/webui/service_clanchatrooms.proto +25 -25
- package/protos/webui/service_clanfaqs.proto +202 -202
- package/protos/webui/service_clientcomm.proto +150 -150
- package/protos/webui/service_clientmetrics.proto +63 -63
- package/protos/webui/service_cloud.proto +222 -222
- package/protos/webui/service_cloudconfigstore.proto +51 -51
- package/protos/webui/service_cloudgaming.proto +30 -30
- package/protos/webui/service_community.proto +365 -365
- package/protos/webui/service_econ.proto +134 -134
- package/protos/webui/service_embedded.proto +24 -24
- package/protos/webui/service_experimentservice.proto +6 -6
- package/protos/webui/service_fovasvideo.proto +15 -15
- package/protos/webui/service_friendmessages.proto +133 -133
- package/protos/webui/service_friendslist.proto +70 -70
- package/protos/webui/service_gamenotes.proto +15 -15
- package/protos/webui/service_helprequestlogs.proto +26 -26
- package/protos/webui/service_loyaltyrewards.proto +252 -252
- package/protos/webui/service_marketingmessages.proto +184 -184
- package/protos/webui/service_mobileapp.proto +18 -18
- package/protos/webui/service_mobileauth.proto +24 -24
- package/protos/webui/service_mobiledevice.proto +26 -26
- package/protos/webui/service_mobileperaccount.proto +31 -31
- package/protos/webui/service_news.proto +101 -101
- package/protos/webui/service_parental.proto +178 -178
- package/protos/webui/service_partnermembershipinvite.proto +29 -29
- package/protos/webui/service_partnerstorebrowse.proto +6 -6
- package/protos/webui/service_phone.proto +51 -51
- package/protos/webui/service_physicalgoods.proto +15 -15
- package/protos/webui/service_player.proto +885 -885
- package/protos/webui/service_promotioneventinvites.proto +50 -50
- package/protos/webui/service_promotionplanning.proto +72 -72
- package/protos/webui/service_publishedfile.proto +687 -687
- package/protos/webui/service_publishing.proto +119 -119
- package/protos/webui/service_quest.proto +127 -127
- package/protos/webui/service_salefeature.proto +315 -315
- package/protos/webui/service_saleitemrewards.proto +54 -54
- package/protos/webui/service_shoppingcart.proto +108 -108
- package/protos/webui/service_steamawards.proto +19 -19
- package/protos/webui/service_steamcharts.proto +75 -75
- package/protos/webui/service_steamengine.proto +36 -36
- package/protos/webui/service_steamlearn.proto +727 -727
- package/protos/webui/service_steamnotification.proto +84 -84
- package/protos/webui/service_steamtv.proto +495 -495
- package/protos/webui/service_steamvrvoicechat.proto +67 -67
- package/protos/webui/service_steamvrwebrtc.proto +48 -48
- package/protos/webui/service_storagedevicemanager.proto +104 -104
- package/protos/webui/service_store.proto +289 -289
- package/protos/webui/service_storeappsimilarity.proto +76 -76
- package/protos/webui/service_storebrowse.proto +73 -73
- package/protos/webui/service_storequery.proto +97 -97
- package/protos/webui/service_storesales.proto +15 -15
- package/protos/webui/service_storetopsellers.proto +44 -44
- package/protos/webui/service_systemmanager.proto +11 -11
- package/protos/webui/service_test_transporterror.proto +6 -6
- package/protos/webui/service_transportauth.proto +12 -12
- package/protos/webui/service_transportvalidation.proto +69 -69
- package/protos/webui/service_twofactor.proto +181 -181
- package/protos/webui/service_useraccount.proto +138 -138
- package/protos/webui/service_usergameactivity.proto +34 -34
- package/protos/webui/service_usergamenotes.proto +53 -53
- package/protos/webui/service_usernews.proto +68 -68
- package/protos/webui/service_userreviews.proto +96 -96
- package/protos/webui/service_video.proto +128 -128
- package/protos/webui/service_voicechat.proto +139 -139
- package/protos/webui/service_webrtc.proto +52 -52
- package/.idea/deployment.xml +0 -21
package/.idea/steamutils.iml
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<module type="WEB_MODULE" version="4">
|
|
3
3
|
<component name="NewModuleRootManager">
|
|
4
4
|
<content url="file://$MODULE_DIR$">
|
|
5
|
-
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
|
6
5
|
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
|
6
|
+
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
|
7
7
|
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
|
8
8
|
</content>
|
|
9
9
|
<orderEntry type="inheritedJdk" />
|
package/.idea/vcs.xml
CHANGED
package/SteamClient.js
CHANGED
|
@@ -12,7 +12,6 @@ import SteamUtils from "./index.js";
|
|
|
12
12
|
import {v4 as uuidv4} from 'uuid';
|
|
13
13
|
import EFriendRelationship from "steam-user/enums/EFriendRelationship.js";
|
|
14
14
|
import SteamCommunity from "steamcommunity";
|
|
15
|
-
import ELobbyType from "steam-user/enums/ELobbyType.js";
|
|
16
15
|
import moment from "moment-timezone";
|
|
17
16
|
import {encode, encodeUids} from "./bufferHelpers.js";
|
|
18
17
|
|
|
@@ -109,7 +108,6 @@ function SteamClient({
|
|
|
109
108
|
let sendMessageTimestamp = 0
|
|
110
109
|
let lastTimePartyRegister = 0
|
|
111
110
|
let lastTimePartySearch = 0
|
|
112
|
-
const appsPlayed = []
|
|
113
111
|
const ownedApps = []
|
|
114
112
|
let logOffEvent = null
|
|
115
113
|
|
|
@@ -134,6 +132,7 @@ function SteamClient({
|
|
|
134
132
|
gifts: [],
|
|
135
133
|
playingState: [],
|
|
136
134
|
emailInfo: [],
|
|
135
|
+
accountLimitations: [],
|
|
137
136
|
}
|
|
138
137
|
|
|
139
138
|
const gcCallback = {}
|
|
@@ -296,6 +295,10 @@ function SteamClient({
|
|
|
296
295
|
return [steamClient?.accountInfo?.name, steamClient?._logOnDetails?.account_name].filter(Boolean).join(" - ")
|
|
297
296
|
}
|
|
298
297
|
|
|
298
|
+
function getPersonaName() {
|
|
299
|
+
return steamClient?.accountInfo?.name
|
|
300
|
+
}
|
|
301
|
+
|
|
299
302
|
function log(...msg) {
|
|
300
303
|
const now = moment().tz('Asia/Ho_Chi_Minh').format("DD/MM/YYYY HH:mm:ss")
|
|
301
304
|
console.log(`[${now}] [${getAccountInfoName()}]`, ...msg)
|
|
@@ -573,6 +576,39 @@ function SteamClient({
|
|
|
573
576
|
}
|
|
574
577
|
|
|
575
578
|
|
|
579
|
+
async function getLobbyData(lobbyID) {
|
|
580
|
+
if (!steamClient.steamID) {
|
|
581
|
+
return
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
return new Promise(resolve => {
|
|
585
|
+
const timeout = setTimeout(function () {
|
|
586
|
+
resolve()
|
|
587
|
+
}, 30000)
|
|
588
|
+
|
|
589
|
+
steamClient._send(
|
|
590
|
+
{
|
|
591
|
+
msg: Protos.csgo.EMsg.k_EMsgClientMMSGetLobbyData,
|
|
592
|
+
proto: {
|
|
593
|
+
steamid: steamClient.steamID.getSteamID64(),
|
|
594
|
+
routing_appid: 730
|
|
595
|
+
}
|
|
596
|
+
},
|
|
597
|
+
protoEncode(Protos.csgo.CMsgClientMMSGetLobbyData, {
|
|
598
|
+
app_id: 730,
|
|
599
|
+
steam_id_lobby: lobbyID.toString(),
|
|
600
|
+
}),
|
|
601
|
+
function (payload) {
|
|
602
|
+
clearTimeout(timeout)
|
|
603
|
+
const result = protoDecode(Protos.csgo.CMsgClientMMSLobbyData, payload.toBuffer())
|
|
604
|
+
result.steam_id_lobby = result.steam_id_lobby.toString()
|
|
605
|
+
resolve(result)
|
|
606
|
+
}
|
|
607
|
+
);
|
|
608
|
+
})
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
|
|
576
612
|
async function joinLobby(lobbyID) {
|
|
577
613
|
log("joinLobby", lobbyID);//SteamID.fromIndividualAccountID(lobbyId).accountid
|
|
578
614
|
steamClient.sendToGC(730, Protos.csgo.EMsg.k_EMsgClientMMSJoinLobby, {}, protoEncode(Protos.csgo.CMsgClientMMSJoinLobby, {
|
|
@@ -739,6 +775,7 @@ function SteamClient({
|
|
|
739
775
|
switch (cache_object.type_id) {
|
|
740
776
|
case 1: {
|
|
741
777
|
const result = protoDecode(Protos.csgo.CSOEconItem, object_data);
|
|
778
|
+
result.id = result.id.toNumber()
|
|
742
779
|
break
|
|
743
780
|
}
|
|
744
781
|
case 2: {
|
|
@@ -776,9 +813,7 @@ function SteamClient({
|
|
|
776
813
|
prime = true
|
|
777
814
|
CSOEconGameAccountClient.prime = true
|
|
778
815
|
}
|
|
779
|
-
|
|
780
|
-
obj.GameAccountClient = CSOEconGameAccountClient
|
|
781
|
-
}
|
|
816
|
+
obj.GameAccountClient = CSOEconGameAccountClient
|
|
782
817
|
break
|
|
783
818
|
}
|
|
784
819
|
|
|
@@ -829,6 +864,15 @@ function SteamClient({
|
|
|
829
864
|
const result = protoDecode(Protos.csgo.CSOQuestProgress, object_data);
|
|
830
865
|
break
|
|
831
866
|
}
|
|
867
|
+
case 4: {
|
|
868
|
+
const result = protoDecode(Protos.csgo.CSOAccountItemPersonalStore, object_data);
|
|
869
|
+
result.generation_time = result.generation_time * 1000
|
|
870
|
+
if (Array.isArray(result.items)) {
|
|
871
|
+
result.items = result.items.map(item => item.toNumber())
|
|
872
|
+
}
|
|
873
|
+
obj.personalStore = result
|
|
874
|
+
break
|
|
875
|
+
}
|
|
832
876
|
|
|
833
877
|
default: {
|
|
834
878
|
log("cache_object.type_id", cache_object.type_id);
|
|
@@ -925,7 +969,7 @@ function SteamClient({
|
|
|
925
969
|
player_cur_xp: 327684501,
|
|
926
970
|
player_xp_bonus_flags: 0
|
|
927
971
|
}
|
|
928
|
-
if (result?.global_stats?.required_appid_version && result.global_stats.required_appid_version > CSGO_VER) {
|
|
972
|
+
if (result?.global_stats?.required_appid_version && (!CSGO_VER || result.global_stats.required_appid_version > CSGO_VER)) {
|
|
929
973
|
CSGO_VER = result.global_stats.required_appid_version
|
|
930
974
|
}
|
|
931
975
|
callEvent(events.csgoClientHello, result)
|
|
@@ -1314,6 +1358,24 @@ function SteamClient({
|
|
|
1314
1358
|
async emailInfo(address, validated) {
|
|
1315
1359
|
callEvent(events.emailInfo, {address, validated})
|
|
1316
1360
|
},
|
|
1361
|
+
async appLaunched() {
|
|
1362
|
+
setTimeout(function () {
|
|
1363
|
+
state = getPlayingAppIds().length ? 'InGame' : (isInvisible ? "Invisible" : 'Online')
|
|
1364
|
+
}, 1000)
|
|
1365
|
+
},
|
|
1366
|
+
async appQuit() {
|
|
1367
|
+
setTimeout(function () {
|
|
1368
|
+
state = getPlayingAppIds().length ? 'InGame' : (isInvisible ? "Invisible" : 'Online')
|
|
1369
|
+
}, 1000)
|
|
1370
|
+
},
|
|
1371
|
+
async accountLimitations(bis_limited_account, bis_community_banned, bis_locked_account, bis_limited_account_allowed_to_invite_friends) {
|
|
1372
|
+
callEvent(events.accountLimitations, {
|
|
1373
|
+
limited: bis_limited_account,
|
|
1374
|
+
communityBanned: bis_community_banned,
|
|
1375
|
+
locked: bis_locked_account,
|
|
1376
|
+
canInviteFriends: bis_limited_account_allowed_to_invite_friends
|
|
1377
|
+
})
|
|
1378
|
+
},
|
|
1317
1379
|
}
|
|
1318
1380
|
|
|
1319
1381
|
const _chatEvents = {
|
|
@@ -1604,13 +1666,13 @@ function SteamClient({
|
|
|
1604
1666
|
bindEvent()
|
|
1605
1667
|
login()
|
|
1606
1668
|
|
|
1607
|
-
steamClient._handlerManager.add(
|
|
1669
|
+
steamClient._handlerManager.add(Protos.csgo.EMsg.k_EMsgClientRequestedClientStats, function (payload) {
|
|
1608
1670
|
const result = protoDecode(Protos.csgo.CMsgClientRequestedClientStats, payload.toBuffer())
|
|
1609
1671
|
// console.log("CMsgClientRequestedClientStats", result);
|
|
1610
1672
|
})
|
|
1611
|
-
steamClient._handlerManager.add(
|
|
1673
|
+
steamClient._handlerManager.add(Protos.csgo.EMsg.k_EMsgClientMMSLobbyData, function (payload) {
|
|
1612
1674
|
const result = protoDecode(Protos.csgo.CMsgClientMMSLobbyData, payload.toBuffer())
|
|
1613
|
-
// console.log("CMsgClientMMSLobbyData", result);
|
|
1675
|
+
// console.log("CMsgClientMMSLobbyData", result, result.metadata);
|
|
1614
1676
|
})
|
|
1615
1677
|
}
|
|
1616
1678
|
|
|
@@ -1794,7 +1856,7 @@ function SteamClient({
|
|
|
1794
1856
|
}
|
|
1795
1857
|
|
|
1796
1858
|
function updateFakeGameScore() {
|
|
1797
|
-
if (isFakeGameScore &&
|
|
1859
|
+
if (isFakeGameScore && getPlayingAppIds().some(a => a == 730)) {
|
|
1798
1860
|
doSetInterval(doFakeGameScore, [60000, 180000], 'uploadRichPresenceCSGO')
|
|
1799
1861
|
} else {
|
|
1800
1862
|
doClearInterval('uploadRichPresenceCSGO')
|
|
@@ -1826,15 +1888,7 @@ function SteamClient({
|
|
|
1826
1888
|
apps = [apps]
|
|
1827
1889
|
}
|
|
1828
1890
|
|
|
1829
|
-
|
|
1830
|
-
appsPlayed.push(...apps)
|
|
1831
|
-
|
|
1832
|
-
if (apps.length) {
|
|
1833
|
-
state = 'InGame'
|
|
1834
|
-
} else {
|
|
1835
|
-
state = 'Online'
|
|
1836
|
-
}
|
|
1837
|
-
steamClient.gamesPlayed(appsPlayed);
|
|
1891
|
+
steamClient.gamesPlayed(apps);
|
|
1838
1892
|
await sleep(2000)
|
|
1839
1893
|
// steamClient.setPersona(SteamUser.EPersonaState.Online)
|
|
1840
1894
|
await sendHello()
|
|
@@ -1942,6 +1996,10 @@ function SteamClient({
|
|
|
1942
1996
|
}
|
|
1943
1997
|
}
|
|
1944
1998
|
|
|
1999
|
+
function getPlayingAppIds() {
|
|
2000
|
+
return steamClient._playingAppIds || []
|
|
2001
|
+
}
|
|
2002
|
+
|
|
1945
2003
|
return {
|
|
1946
2004
|
init,
|
|
1947
2005
|
partySearch,
|
|
@@ -1949,6 +2007,7 @@ function SteamClient({
|
|
|
1949
2007
|
createLobby,
|
|
1950
2008
|
updateLobby,
|
|
1951
2009
|
joinLobby,
|
|
2010
|
+
getLobbyData,
|
|
1952
2011
|
partyRegister,
|
|
1953
2012
|
requestCoPlays,
|
|
1954
2013
|
getPersonas,
|
|
@@ -1972,6 +2031,7 @@ function SteamClient({
|
|
|
1972
2031
|
return steamClient
|
|
1973
2032
|
},
|
|
1974
2033
|
getAccountInfoName,
|
|
2034
|
+
getPersonaName,
|
|
1975
2035
|
async getPlayersProfile(steamId, retry = 3) {
|
|
1976
2036
|
for (let i = 0; i < retry; i++) {
|
|
1977
2037
|
const profile = await getPlayersProfile(steamId)
|
|
@@ -2128,7 +2188,8 @@ function SteamClient({
|
|
|
2128
2188
|
}
|
|
2129
2189
|
steamClient.uploadRichPresence(appid, richPresence)
|
|
2130
2190
|
},
|
|
2131
|
-
getUserOwnedApps
|
|
2191
|
+
getUserOwnedApps,
|
|
2192
|
+
getPlayingAppIds
|
|
2132
2193
|
}
|
|
2133
2194
|
}
|
|
2134
2195
|
|
package/bufferHelpers.js
CHANGED
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
import ByteBuffer from 'bytebuffer';
|
|
2
|
-
import SteamID from 'steamid';
|
|
3
|
-
|
|
4
|
-
const Type = {
|
|
5
|
-
None : 0,
|
|
6
|
-
String : 1,
|
|
7
|
-
Int32 : 2,
|
|
8
|
-
Float32 : 3,
|
|
9
|
-
Pointer : 4,
|
|
10
|
-
WideString : 5,
|
|
11
|
-
Color : 6,
|
|
12
|
-
UInt64 : 7,
|
|
13
|
-
End : 8
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// Encodes an object into a ByteBuffer
|
|
17
|
-
export const encode = (
|
|
18
|
-
_object,
|
|
19
|
-
prefix = [0x00, 0x00],
|
|
20
|
-
suffix = [],
|
|
21
|
-
customEncodeFields = {}
|
|
22
|
-
) => {
|
|
23
|
-
// Create a copy of the input object to avoid modifying it
|
|
24
|
-
const object = { ..._object };
|
|
25
|
-
const buffer = new ByteBuffer();
|
|
26
|
-
|
|
27
|
-
// Write the prefix bytes to the buffer
|
|
28
|
-
for (let pre of prefix) {
|
|
29
|
-
buffer.writeByte(pre);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Iterate through the object's properties and encode them
|
|
33
|
-
for (let item in object) {
|
|
34
|
-
if (object.hasOwnProperty(item) === false) {
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// If a custom encoder function exists for the property, use it
|
|
39
|
-
if (typeof customEncodeFields[item] === 'function') {
|
|
40
|
-
object[item] = customEncodeFields[item](object[item]);
|
|
41
|
-
}
|
|
42
|
-
_encode(object[item], buffer, item);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Write the suffix bytes to the buffer
|
|
46
|
-
for (let suf of suffix) {
|
|
47
|
-
buffer.writeByte(suf);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Write an End marker to the buffer
|
|
51
|
-
buffer.writeByte(Type.End);
|
|
52
|
-
buffer.flip(); // Prepare the buffer for reading
|
|
53
|
-
return buffer;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// Encodes individual properties into the ByteBuffer
|
|
57
|
-
const _encode = (object, buffer, name) => {
|
|
58
|
-
if (object instanceof Buffer) {
|
|
59
|
-
// If the object is a Buffer
|
|
60
|
-
buffer.writeByte(Type.String);
|
|
61
|
-
buffer.writeCString(name);
|
|
62
|
-
|
|
63
|
-
// Convert the Buffer to a hexadecimal string, split into 2-character parts, and write each part as a byte
|
|
64
|
-
let parts = object
|
|
65
|
-
.toString('hex')
|
|
66
|
-
.toUpperCase()
|
|
67
|
-
.match(/.{1,2}/g);
|
|
68
|
-
|
|
69
|
-
for (let part of parts) {
|
|
70
|
-
buffer.writeByte(parseInt('0x' + part));
|
|
71
|
-
}
|
|
72
|
-
} else {
|
|
73
|
-
// If the object is not a Buffer, check its type
|
|
74
|
-
switch (typeof object) {
|
|
75
|
-
case 'object': {
|
|
76
|
-
buffer.writeByte(Type.None);
|
|
77
|
-
buffer.writeCString(name);
|
|
78
|
-
|
|
79
|
-
for (let index in object) {
|
|
80
|
-
_encode(object[index], buffer, index); // Recursively encode each property
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
buffer.writeByte(Type.End);
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
case 'string': {
|
|
87
|
-
buffer.writeByte(Type.String);
|
|
88
|
-
buffer.writeCString(name);
|
|
89
|
-
buffer.writeCString(object ? object : '');
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
case 'number': {
|
|
93
|
-
buffer.writeByte(Type.String);
|
|
94
|
-
buffer.writeCString(name);
|
|
95
|
-
buffer.writeCString(object.toString());
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
// Encodes SteamIDs into a Buffer
|
|
103
|
-
export const encodeUids = (steamids) => {
|
|
104
|
-
const outputBuffer = [];
|
|
105
|
-
|
|
106
|
-
for (let id of steamids.map((s) => s.accountid)) {
|
|
107
|
-
while (id > 0x7f) {
|
|
108
|
-
outputBuffer.push((id | 0x80) & 0xff);
|
|
109
|
-
id >>= 7;
|
|
110
|
-
}
|
|
111
|
-
outputBuffer.push(id);
|
|
112
|
-
}
|
|
113
|
-
outputBuffer.push(0x00); // Null terminator
|
|
114
|
-
return Buffer.from(outputBuffer);
|
|
115
|
-
};
|
|
1
|
+
import ByteBuffer from 'bytebuffer';
|
|
2
|
+
import SteamID from 'steamid';
|
|
3
|
+
|
|
4
|
+
const Type = {
|
|
5
|
+
None : 0,
|
|
6
|
+
String : 1,
|
|
7
|
+
Int32 : 2,
|
|
8
|
+
Float32 : 3,
|
|
9
|
+
Pointer : 4,
|
|
10
|
+
WideString : 5,
|
|
11
|
+
Color : 6,
|
|
12
|
+
UInt64 : 7,
|
|
13
|
+
End : 8
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Encodes an object into a ByteBuffer
|
|
17
|
+
export const encode = (
|
|
18
|
+
_object,
|
|
19
|
+
prefix = [0x00, 0x00],
|
|
20
|
+
suffix = [],
|
|
21
|
+
customEncodeFields = {}
|
|
22
|
+
) => {
|
|
23
|
+
// Create a copy of the input object to avoid modifying it
|
|
24
|
+
const object = { ..._object };
|
|
25
|
+
const buffer = new ByteBuffer();
|
|
26
|
+
|
|
27
|
+
// Write the prefix bytes to the buffer
|
|
28
|
+
for (let pre of prefix) {
|
|
29
|
+
buffer.writeByte(pre);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Iterate through the object's properties and encode them
|
|
33
|
+
for (let item in object) {
|
|
34
|
+
if (object.hasOwnProperty(item) === false) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// If a custom encoder function exists for the property, use it
|
|
39
|
+
if (typeof customEncodeFields[item] === 'function') {
|
|
40
|
+
object[item] = customEncodeFields[item](object[item]);
|
|
41
|
+
}
|
|
42
|
+
_encode(object[item], buffer, item);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Write the suffix bytes to the buffer
|
|
46
|
+
for (let suf of suffix) {
|
|
47
|
+
buffer.writeByte(suf);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Write an End marker to the buffer
|
|
51
|
+
buffer.writeByte(Type.End);
|
|
52
|
+
buffer.flip(); // Prepare the buffer for reading
|
|
53
|
+
return buffer;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// Encodes individual properties into the ByteBuffer
|
|
57
|
+
const _encode = (object, buffer, name) => {
|
|
58
|
+
if (object instanceof Buffer) {
|
|
59
|
+
// If the object is a Buffer
|
|
60
|
+
buffer.writeByte(Type.String);
|
|
61
|
+
buffer.writeCString(name);
|
|
62
|
+
|
|
63
|
+
// Convert the Buffer to a hexadecimal string, split into 2-character parts, and write each part as a byte
|
|
64
|
+
let parts = object
|
|
65
|
+
.toString('hex')
|
|
66
|
+
.toUpperCase()
|
|
67
|
+
.match(/.{1,2}/g);
|
|
68
|
+
|
|
69
|
+
for (let part of parts) {
|
|
70
|
+
buffer.writeByte(parseInt('0x' + part));
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
// If the object is not a Buffer, check its type
|
|
74
|
+
switch (typeof object) {
|
|
75
|
+
case 'object': {
|
|
76
|
+
buffer.writeByte(Type.None);
|
|
77
|
+
buffer.writeCString(name);
|
|
78
|
+
|
|
79
|
+
for (let index in object) {
|
|
80
|
+
_encode(object[index], buffer, index); // Recursively encode each property
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
buffer.writeByte(Type.End);
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case 'string': {
|
|
87
|
+
buffer.writeByte(Type.String);
|
|
88
|
+
buffer.writeCString(name);
|
|
89
|
+
buffer.writeCString(object ? object : '');
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case 'number': {
|
|
93
|
+
buffer.writeByte(Type.String);
|
|
94
|
+
buffer.writeCString(name);
|
|
95
|
+
buffer.writeCString(object.toString());
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// Encodes SteamIDs into a Buffer
|
|
103
|
+
export const encodeUids = (steamids) => {
|
|
104
|
+
const outputBuffer = [];
|
|
105
|
+
|
|
106
|
+
for (let id of steamids.map((s) => s.accountid)) {
|
|
107
|
+
while (id > 0x7f) {
|
|
108
|
+
outputBuffer.push((id | 0x80) & 0xff);
|
|
109
|
+
id >>= 7;
|
|
110
|
+
}
|
|
111
|
+
outputBuffer.push(id);
|
|
112
|
+
}
|
|
113
|
+
outputBuffer.push(0x00); // Null terminator
|
|
114
|
+
return Buffer.from(outputBuffer);
|
|
115
|
+
};
|