steamutils 1.3.28 → 1.3.31
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/deployment.xml +21 -0
- package/.idea/steamutils.iml +1 -1
- package/.idea/vcs.xml +1 -1
- package/SteamClient.js +126 -77
- package/bufferHelpers.js +115 -115
- package/free_packages.json +10048 -10048
- package/package.json +1 -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/codeStyles/codeStyleConfig.xml +0 -5
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
|
|
4
|
+
<serverData>
|
|
5
|
+
<paths name="steamsupport">
|
|
6
|
+
<serverdata>
|
|
7
|
+
<mappings>
|
|
8
|
+
<mapping local="$PROJECT_DIR$" web="/" />
|
|
9
|
+
</mappings>
|
|
10
|
+
</serverdata>
|
|
11
|
+
</paths>
|
|
12
|
+
<paths name="steamsupportui">
|
|
13
|
+
<serverdata>
|
|
14
|
+
<mappings>
|
|
15
|
+
<mapping local="$PROJECT_DIR$" web="/" />
|
|
16
|
+
</mappings>
|
|
17
|
+
</serverdata>
|
|
18
|
+
</paths>
|
|
19
|
+
</serverData>
|
|
20
|
+
</component>
|
|
21
|
+
</project>
|
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$/.tmp" />
|
|
6
5
|
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
|
6
|
+
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
|
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
|
@@ -193,6 +193,19 @@ function SteamClient({
|
|
|
193
193
|
})
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
+
|
|
197
|
+
function offEvent(name) {
|
|
198
|
+
if (Array.isArray(events[name])) {
|
|
199
|
+
for (const eventElement of events[name]) {
|
|
200
|
+
if (eventElement.timeout) {
|
|
201
|
+
clearTimeout(eventElement.timeout)
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
delete events[name]
|
|
207
|
+
}
|
|
208
|
+
|
|
196
209
|
function onAnyEvent(callback) {
|
|
197
210
|
onAnyCallbacks.push(callback)
|
|
198
211
|
}
|
|
@@ -429,36 +442,37 @@ function SteamClient({
|
|
|
429
442
|
return
|
|
430
443
|
}
|
|
431
444
|
|
|
432
|
-
steamClient._send(
|
|
433
|
-
{
|
|
434
|
-
msg: Protos.csgo.EMsg.k_EMsgClientMMSCreateLobby,
|
|
435
|
-
proto: {
|
|
436
|
-
steamid: steamClient.steamID.getSteamID64(),
|
|
437
|
-
routing_appid: 730
|
|
438
|
-
}
|
|
439
|
-
},
|
|
440
|
-
protoEncode(Protos.csgo.CMsgClientMMSCreateLobby, {
|
|
441
|
-
app_id: 730,
|
|
442
|
-
max_members: 1,
|
|
443
|
-
lobby_type: 1,
|
|
444
|
-
lobby_flags: 1
|
|
445
|
-
})
|
|
446
|
-
);
|
|
447
|
-
|
|
448
445
|
return new Promise(resolve => {
|
|
449
446
|
const timeout = setTimeout(function () {
|
|
450
|
-
delete steamClient._handlerManager._handlers[Protos.csgo.EMsg.k_EMsgClientMMSCreateLobbyResponse];
|
|
451
447
|
resolve()
|
|
452
|
-
},
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
448
|
+
}, 30000)
|
|
449
|
+
|
|
450
|
+
steamClient._send(
|
|
451
|
+
{
|
|
452
|
+
msg: Protos.csgo.EMsg.k_EMsgClientMMSCreateLobby,
|
|
453
|
+
proto: {
|
|
454
|
+
steamid: steamClient.steamID.getSteamID64(),
|
|
455
|
+
routing_appid: 730
|
|
456
|
+
}
|
|
457
|
+
},
|
|
458
|
+
protoEncode(Protos.csgo.CMsgClientMMSCreateLobby, {
|
|
459
|
+
app_id: 730,
|
|
460
|
+
max_members: 1,
|
|
461
|
+
lobby_type: 1,
|
|
462
|
+
lobby_flags: 1
|
|
463
|
+
}), function (payload) {
|
|
464
|
+
clearTimeout(timeout)
|
|
465
|
+
const result = protoDecode(Protos.csgo.CMsgClientMMSCreateLobbyResponse, payload.toBuffer())
|
|
466
|
+
resolve(result.steam_id_lobby.toString())
|
|
467
|
+
}
|
|
468
|
+
);
|
|
460
469
|
})
|
|
461
470
|
|
|
471
|
+
// return await getHandlerResult(Protos.csgo.EMsg.k_EMsgClientMMSCreateLobbyResponse, function (payload) {
|
|
472
|
+
// const result = protoDecode(Protos.csgo.CMsgClientMMSCreateLobbyResponse, payload.toBuffer())
|
|
473
|
+
// return result.steam_id_lobby.toString()
|
|
474
|
+
// })
|
|
475
|
+
|
|
462
476
|
// steamClient.sendToGC(730, Protos.csgo.EMsg.k_EMsgClientMMSCreateLobby, {
|
|
463
477
|
// steamid: steamClient.steamID,
|
|
464
478
|
// routing_appid: 730,
|
|
@@ -475,53 +489,54 @@ function SteamClient({
|
|
|
475
489
|
return
|
|
476
490
|
}
|
|
477
491
|
|
|
478
|
-
steamClient._send(
|
|
479
|
-
{
|
|
480
|
-
msg: Protos.csgo.EMsg.k_EMsgClientMMSSetLobbyData,
|
|
481
|
-
proto: {
|
|
482
|
-
steamid: steamClient.steamID.getSteamID64(),
|
|
483
|
-
routing_appid: 730
|
|
484
|
-
}
|
|
485
|
-
},
|
|
486
|
-
protoEncode(Protos.csgo.CMsgClientMMSSetLobbyData, {
|
|
487
|
-
app_id: 730,
|
|
488
|
-
steam_id_lobby: lobbyID,
|
|
489
|
-
steam_id_member: '0',
|
|
490
|
-
max_members: 10,
|
|
491
|
-
lobby_type: 1,
|
|
492
|
-
lobby_flags: 1,
|
|
493
|
-
metadata: encode({
|
|
494
|
-
'game:ark': '0',
|
|
495
|
-
// Country/Message
|
|
496
|
-
'game:loc': '',
|
|
497
|
-
'game:mapgroupname': 'mg_de_mirage',
|
|
498
|
-
'game:mode': 'competitive',
|
|
499
|
-
'game:prime': '1',
|
|
500
|
-
'game:type': 'classic',
|
|
501
|
-
'members:numPlayers': '1',
|
|
502
|
-
'options:action': 'custommatch',
|
|
503
|
-
'options:anytypemode': '0',
|
|
504
|
-
'system:access': 'private',
|
|
505
|
-
'system:network': 'LIVE',
|
|
506
|
-
uids: [steamClient.steamID]
|
|
507
|
-
}, [0x00, 0x00], [0x08], {uids: encodeUids}).toBuffer()
|
|
508
|
-
})
|
|
509
|
-
);
|
|
510
|
-
|
|
511
492
|
return new Promise(resolve => {
|
|
512
493
|
const timeout = setTimeout(function () {
|
|
513
|
-
delete steamClient._handlerManager._handlers[Protos.csgo.EMsg.k_EMsgClientMMSSetLobbyDataResponse];
|
|
514
494
|
resolve()
|
|
515
|
-
},
|
|
516
|
-
|
|
517
|
-
steamClient.
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
495
|
+
}, 30000)
|
|
496
|
+
|
|
497
|
+
steamClient._send(
|
|
498
|
+
{
|
|
499
|
+
msg: Protos.csgo.EMsg.k_EMsgClientMMSSetLobbyData,
|
|
500
|
+
proto: {
|
|
501
|
+
steamid: steamClient.steamID.getSteamID64(),
|
|
502
|
+
routing_appid: 730
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
protoEncode(Protos.csgo.CMsgClientMMSSetLobbyData, {
|
|
506
|
+
app_id: 730,
|
|
507
|
+
steam_id_lobby: lobbyID,
|
|
508
|
+
steam_id_member: '0',
|
|
509
|
+
max_members: 10,
|
|
510
|
+
lobby_type: 1,
|
|
511
|
+
lobby_flags: 1,
|
|
512
|
+
metadata: encode({
|
|
513
|
+
'game:ark': '0',
|
|
514
|
+
// Country/Message
|
|
515
|
+
'game:loc': '',
|
|
516
|
+
'game:mapgroupname': 'mg_de_mirage',
|
|
517
|
+
'game:mode': 'competitive',
|
|
518
|
+
'game:prime': '1',
|
|
519
|
+
'game:type': 'classic',
|
|
520
|
+
'members:numPlayers': '1',
|
|
521
|
+
'options:action': 'custommatch',
|
|
522
|
+
'options:anytypemode': '0',
|
|
523
|
+
'system:access': 'private',
|
|
524
|
+
'system:network': 'LIVE',
|
|
525
|
+
uids: [steamClient.steamID]
|
|
526
|
+
}, [0x00, 0x00], [0x08], {uids: encodeUids}).toBuffer()
|
|
527
|
+
}),
|
|
528
|
+
function (payload) {
|
|
529
|
+
clearTimeout(timeout)
|
|
530
|
+
const result = protoDecode(Protos.csgo.CMsgClientMMSSetLobbyDataResponse, payload.toBuffer())
|
|
531
|
+
resolve(result.steam_id_lobby.toString())
|
|
532
|
+
}
|
|
533
|
+
);
|
|
524
534
|
})
|
|
535
|
+
|
|
536
|
+
// return await getHandlerResult(Protos.csgo.EMsg.k_EMsgClientMMSSetLobbyDataResponse, function (payload) {
|
|
537
|
+
// const result = protoDecode(Protos.csgo.CMsgClientMMSSetLobbyDataResponse, payload.toBuffer())
|
|
538
|
+
// return result.steam_id_lobby.toString()
|
|
539
|
+
// })
|
|
525
540
|
}
|
|
526
541
|
|
|
527
542
|
async function invite2Lobby(lobbyID, steamId) {
|
|
@@ -541,11 +556,8 @@ function SteamClient({
|
|
|
541
556
|
app_id: 730,
|
|
542
557
|
steam_id_lobby: lobbyID,
|
|
543
558
|
steam_id_user_invited: steamId,
|
|
544
|
-
})
|
|
545
|
-
);
|
|
546
|
-
|
|
559
|
+
}));
|
|
547
560
|
|
|
548
|
-
const accountid = new SteamID(steamId).accountid;
|
|
549
561
|
// lobbyID = new SteamID(lobbyID).accountid;
|
|
550
562
|
|
|
551
563
|
// Protos.csgo.EMsg.k_EMsgGCHInviteUserToLobby
|
|
@@ -691,7 +703,7 @@ function SteamClient({
|
|
|
691
703
|
break
|
|
692
704
|
}
|
|
693
705
|
case Protos.csgo.ECsgoGCMsg.k_EMsgClientMMSJoinLobbyResponse: {
|
|
694
|
-
|
|
706
|
+
const msg = protoDecode(Protos.csgo.CMsgClientMMSJoinLobbyResponse, payload);
|
|
695
707
|
log(msg)
|
|
696
708
|
break
|
|
697
709
|
}
|
|
@@ -912,6 +924,9 @@ function SteamClient({
|
|
|
912
924
|
player_cur_xp: 327684501,
|
|
913
925
|
player_xp_bonus_flags: 0
|
|
914
926
|
}
|
|
927
|
+
if (result?.global_stats?.required_appid_version && result.global_stats.required_appid_version > CSGO_VER) {
|
|
928
|
+
CSGO_VER = result.global_stats.required_appid_version
|
|
929
|
+
}
|
|
915
930
|
callEvent(events.csgoClientHello, result)
|
|
916
931
|
break
|
|
917
932
|
}
|
|
@@ -1328,18 +1343,15 @@ function SteamClient({
|
|
|
1328
1343
|
}
|
|
1329
1344
|
const timestamp = new Date(data.server_timestamp).getTime()
|
|
1330
1345
|
const steamId = data.steamid_friend.getSteamID64()
|
|
1331
|
-
const personas = await getPersonas([steamId])
|
|
1332
|
-
const player_name = personas.find(p => p.id == steamId)?.player_name || ''
|
|
1333
1346
|
const invite = [`Invited you to play a game!`, `Đã mời bạn chơi một trò chơi!`].includes(data.message_no_bbcode || data.message)
|
|
1334
1347
|
const emotion = (data.message_no_bbcode || '').split(' ').find(m => m.startsWith(':') && m.endsWith(':'))
|
|
1335
1348
|
|
|
1336
1349
|
callEvent(events.friendMessage, {
|
|
1337
|
-
|
|
1350
|
+
...data,
|
|
1338
1351
|
message: data.message_no_bbcode,
|
|
1339
1352
|
invite,
|
|
1340
1353
|
steamId,
|
|
1341
1354
|
timestamp,
|
|
1342
|
-
from_limited_account: data.from_limited_account,
|
|
1343
1355
|
emotion,
|
|
1344
1356
|
})
|
|
1345
1357
|
},
|
|
@@ -1398,6 +1410,33 @@ function SteamClient({
|
|
|
1398
1410
|
}
|
|
1399
1411
|
}
|
|
1400
1412
|
|
|
1413
|
+
function getHandlerResult(msg, handler) {
|
|
1414
|
+
const timeout = {current: null}
|
|
1415
|
+
return new Promise(resolve => {
|
|
1416
|
+
|
|
1417
|
+
function myhandler(...args) {
|
|
1418
|
+
timeout.current && clearTimeout(timeout.current)
|
|
1419
|
+
removeHandler()
|
|
1420
|
+
resolve(handler?.(...args))
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
function removeHandler() {
|
|
1424
|
+
if (Array.isArray(steamClient._handlerManager._handlers[msg])) {
|
|
1425
|
+
const index = steamClient._handlerManager._handlers[msg].findIndex(_handler => _handler === myhandler)
|
|
1426
|
+
if (index > -1) {
|
|
1427
|
+
steamClient._handlerManager._handlers[msg].splice(index, 1)
|
|
1428
|
+
}
|
|
1429
|
+
}
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
timeout.current = setTimeout(function () {
|
|
1433
|
+
removeHandler()
|
|
1434
|
+
resolve()
|
|
1435
|
+
}, 60000)
|
|
1436
|
+
steamClient._handlerManager.add(msg, myhandler);
|
|
1437
|
+
})
|
|
1438
|
+
}
|
|
1439
|
+
|
|
1401
1440
|
function getFriendList() {
|
|
1402
1441
|
return Object.keys(steamClient.myFriends).filter(steamId => steamClient.myFriends[steamId] === SteamUser.EFriendRelationship.Friend)
|
|
1403
1442
|
}
|
|
@@ -1565,6 +1604,15 @@ function SteamClient({
|
|
|
1565
1604
|
function init() {
|
|
1566
1605
|
bindEvent()
|
|
1567
1606
|
login()
|
|
1607
|
+
|
|
1608
|
+
steamClient._handlerManager.add(5480, function (payload) {
|
|
1609
|
+
const result = protoDecode(Protos.csgo.CMsgClientRequestedClientStats, payload.toBuffer())
|
|
1610
|
+
console.log("CMsgClientRequestedClientStats", result);
|
|
1611
|
+
})
|
|
1612
|
+
steamClient._handlerManager.add(6612, function (payload) {
|
|
1613
|
+
const result = protoDecode(Protos.csgo.CMsgClientMMSLobbyData, payload.toBuffer())
|
|
1614
|
+
console.log("CMsgClientMMSLobbyData", result);
|
|
1615
|
+
})
|
|
1568
1616
|
}
|
|
1569
1617
|
|
|
1570
1618
|
|
|
@@ -1904,6 +1952,7 @@ function SteamClient({
|
|
|
1904
1952
|
return steamClient?._logOnDetails
|
|
1905
1953
|
},
|
|
1906
1954
|
onEvent,
|
|
1955
|
+
offEvent,
|
|
1907
1956
|
offAllEvent,
|
|
1908
1957
|
setPersona(state, name) {
|
|
1909
1958
|
steamClient.setPersona(state, name)
|
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
|
+
};
|