steamutils 1.3.30 → 1.3.32
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 +132 -81
- 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
|
@@ -95,13 +95,14 @@ function SteamClient({
|
|
|
95
95
|
isFakeGameScore = true,
|
|
96
96
|
isPartyRegister = true,
|
|
97
97
|
isAutoPlay = false,
|
|
98
|
+
isInvisible = false,
|
|
98
99
|
autoAcceptTradeRequest = false,
|
|
99
100
|
autoReconnect = true,
|
|
100
101
|
MAX_GAME_PLAY = 10
|
|
101
102
|
}) {
|
|
102
103
|
const steamClient = new SteamUser()
|
|
103
104
|
let prime = null
|
|
104
|
-
let state = 'Offline'//InGame, Online
|
|
105
|
+
let state = 'Offline'//InGame, Online, Invisible
|
|
105
106
|
let isLogOff = false
|
|
106
107
|
let playingBlocked = null
|
|
107
108
|
const richPresence = {}
|
|
@@ -442,36 +443,37 @@ function SteamClient({
|
|
|
442
443
|
return
|
|
443
444
|
}
|
|
444
445
|
|
|
445
|
-
steamClient._send(
|
|
446
|
-
{
|
|
447
|
-
msg: Protos.csgo.EMsg.k_EMsgClientMMSCreateLobby,
|
|
448
|
-
proto: {
|
|
449
|
-
steamid: steamClient.steamID.getSteamID64(),
|
|
450
|
-
routing_appid: 730
|
|
451
|
-
}
|
|
452
|
-
},
|
|
453
|
-
protoEncode(Protos.csgo.CMsgClientMMSCreateLobby, {
|
|
454
|
-
app_id: 730,
|
|
455
|
-
max_members: 1,
|
|
456
|
-
lobby_type: 1,
|
|
457
|
-
lobby_flags: 1
|
|
458
|
-
})
|
|
459
|
-
);
|
|
460
|
-
|
|
461
446
|
return new Promise(resolve => {
|
|
462
447
|
const timeout = setTimeout(function () {
|
|
463
|
-
delete steamClient._handlerManager._handlers[Protos.csgo.EMsg.k_EMsgClientMMSCreateLobbyResponse];
|
|
464
448
|
resolve()
|
|
465
|
-
},
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
449
|
+
}, 30000)
|
|
450
|
+
|
|
451
|
+
steamClient._send(
|
|
452
|
+
{
|
|
453
|
+
msg: Protos.csgo.EMsg.k_EMsgClientMMSCreateLobby,
|
|
454
|
+
proto: {
|
|
455
|
+
steamid: steamClient.steamID.getSteamID64(),
|
|
456
|
+
routing_appid: 730
|
|
457
|
+
}
|
|
458
|
+
},
|
|
459
|
+
protoEncode(Protos.csgo.CMsgClientMMSCreateLobby, {
|
|
460
|
+
app_id: 730,
|
|
461
|
+
max_members: 1,
|
|
462
|
+
lobby_type: 1,
|
|
463
|
+
lobby_flags: 1
|
|
464
|
+
}), function (payload) {
|
|
465
|
+
clearTimeout(timeout)
|
|
466
|
+
const result = protoDecode(Protos.csgo.CMsgClientMMSCreateLobbyResponse, payload.toBuffer())
|
|
467
|
+
resolve(result.steam_id_lobby.toString())
|
|
468
|
+
}
|
|
469
|
+
);
|
|
473
470
|
})
|
|
474
471
|
|
|
472
|
+
// return await getHandlerResult(Protos.csgo.EMsg.k_EMsgClientMMSCreateLobbyResponse, function (payload) {
|
|
473
|
+
// const result = protoDecode(Protos.csgo.CMsgClientMMSCreateLobbyResponse, payload.toBuffer())
|
|
474
|
+
// return result.steam_id_lobby.toString()
|
|
475
|
+
// })
|
|
476
|
+
|
|
475
477
|
// steamClient.sendToGC(730, Protos.csgo.EMsg.k_EMsgClientMMSCreateLobby, {
|
|
476
478
|
// steamid: steamClient.steamID,
|
|
477
479
|
// routing_appid: 730,
|
|
@@ -488,53 +490,54 @@ function SteamClient({
|
|
|
488
490
|
return
|
|
489
491
|
}
|
|
490
492
|
|
|
491
|
-
steamClient._send(
|
|
492
|
-
{
|
|
493
|
-
msg: Protos.csgo.EMsg.k_EMsgClientMMSSetLobbyData,
|
|
494
|
-
proto: {
|
|
495
|
-
steamid: steamClient.steamID.getSteamID64(),
|
|
496
|
-
routing_appid: 730
|
|
497
|
-
}
|
|
498
|
-
},
|
|
499
|
-
protoEncode(Protos.csgo.CMsgClientMMSSetLobbyData, {
|
|
500
|
-
app_id: 730,
|
|
501
|
-
steam_id_lobby: lobbyID,
|
|
502
|
-
steam_id_member: '0',
|
|
503
|
-
max_members: 10,
|
|
504
|
-
lobby_type: 1,
|
|
505
|
-
lobby_flags: 1,
|
|
506
|
-
metadata: encode({
|
|
507
|
-
'game:ark': '0',
|
|
508
|
-
// Country/Message
|
|
509
|
-
'game:loc': '',
|
|
510
|
-
'game:mapgroupname': 'mg_de_mirage',
|
|
511
|
-
'game:mode': 'competitive',
|
|
512
|
-
'game:prime': '1',
|
|
513
|
-
'game:type': 'classic',
|
|
514
|
-
'members:numPlayers': '1',
|
|
515
|
-
'options:action': 'custommatch',
|
|
516
|
-
'options:anytypemode': '0',
|
|
517
|
-
'system:access': 'private',
|
|
518
|
-
'system:network': 'LIVE',
|
|
519
|
-
uids: [steamClient.steamID]
|
|
520
|
-
}, [0x00, 0x00], [0x08], {uids: encodeUids}).toBuffer()
|
|
521
|
-
})
|
|
522
|
-
);
|
|
523
|
-
|
|
524
493
|
return new Promise(resolve => {
|
|
525
494
|
const timeout = setTimeout(function () {
|
|
526
|
-
delete steamClient._handlerManager._handlers[Protos.csgo.EMsg.k_EMsgClientMMSSetLobbyDataResponse];
|
|
527
495
|
resolve()
|
|
528
|
-
},
|
|
529
|
-
|
|
530
|
-
steamClient.
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
496
|
+
}, 30000)
|
|
497
|
+
|
|
498
|
+
steamClient._send(
|
|
499
|
+
{
|
|
500
|
+
msg: Protos.csgo.EMsg.k_EMsgClientMMSSetLobbyData,
|
|
501
|
+
proto: {
|
|
502
|
+
steamid: steamClient.steamID.getSteamID64(),
|
|
503
|
+
routing_appid: 730
|
|
504
|
+
}
|
|
505
|
+
},
|
|
506
|
+
protoEncode(Protos.csgo.CMsgClientMMSSetLobbyData, {
|
|
507
|
+
app_id: 730,
|
|
508
|
+
steam_id_lobby: lobbyID,
|
|
509
|
+
steam_id_member: '0',
|
|
510
|
+
max_members: 10,
|
|
511
|
+
lobby_type: 1,
|
|
512
|
+
lobby_flags: 1,
|
|
513
|
+
metadata: encode({
|
|
514
|
+
'game:ark': '0',
|
|
515
|
+
// Country/Message
|
|
516
|
+
'game:loc': '',
|
|
517
|
+
'game:mapgroupname': 'mg_de_mirage',
|
|
518
|
+
'game:mode': 'competitive',
|
|
519
|
+
'game:prime': '1',
|
|
520
|
+
'game:type': 'classic',
|
|
521
|
+
'members:numPlayers': '1',
|
|
522
|
+
'options:action': 'custommatch',
|
|
523
|
+
'options:anytypemode': '0',
|
|
524
|
+
'system:access': 'private',
|
|
525
|
+
'system:network': 'LIVE',
|
|
526
|
+
uids: [steamClient.steamID]
|
|
527
|
+
}, [0x00, 0x00], [0x08], {uids: encodeUids}).toBuffer()
|
|
528
|
+
}),
|
|
529
|
+
function (payload) {
|
|
530
|
+
clearTimeout(timeout)
|
|
531
|
+
const result = protoDecode(Protos.csgo.CMsgClientMMSSetLobbyDataResponse, payload.toBuffer())
|
|
532
|
+
resolve(result.steam_id_lobby.toString())
|
|
533
|
+
}
|
|
534
|
+
);
|
|
537
535
|
})
|
|
536
|
+
|
|
537
|
+
// return await getHandlerResult(Protos.csgo.EMsg.k_EMsgClientMMSSetLobbyDataResponse, function (payload) {
|
|
538
|
+
// const result = protoDecode(Protos.csgo.CMsgClientMMSSetLobbyDataResponse, payload.toBuffer())
|
|
539
|
+
// return result.steam_id_lobby.toString()
|
|
540
|
+
// })
|
|
538
541
|
}
|
|
539
542
|
|
|
540
543
|
async function invite2Lobby(lobbyID, steamId) {
|
|
@@ -554,11 +557,8 @@ function SteamClient({
|
|
|
554
557
|
app_id: 730,
|
|
555
558
|
steam_id_lobby: lobbyID,
|
|
556
559
|
steam_id_user_invited: steamId,
|
|
557
|
-
})
|
|
558
|
-
);
|
|
560
|
+
}));
|
|
559
561
|
|
|
560
|
-
|
|
561
|
-
const accountid = new SteamID(steamId).accountid;
|
|
562
562
|
// lobbyID = new SteamID(lobbyID).accountid;
|
|
563
563
|
|
|
564
564
|
// Protos.csgo.EMsg.k_EMsgGCHInviteUserToLobby
|
|
@@ -704,7 +704,7 @@ function SteamClient({
|
|
|
704
704
|
break
|
|
705
705
|
}
|
|
706
706
|
case Protos.csgo.ECsgoGCMsg.k_EMsgClientMMSJoinLobbyResponse: {
|
|
707
|
-
|
|
707
|
+
const msg = protoDecode(Protos.csgo.CMsgClientMMSJoinLobbyResponse, payload);
|
|
708
708
|
log(msg)
|
|
709
709
|
break
|
|
710
710
|
}
|
|
@@ -925,6 +925,9 @@ function SteamClient({
|
|
|
925
925
|
player_cur_xp: 327684501,
|
|
926
926
|
player_xp_bonus_flags: 0
|
|
927
927
|
}
|
|
928
|
+
if (result?.global_stats?.required_appid_version && result.global_stats.required_appid_version > CSGO_VER) {
|
|
929
|
+
CSGO_VER = result.global_stats.required_appid_version
|
|
930
|
+
}
|
|
928
931
|
callEvent(events.csgoClientHello, result)
|
|
929
932
|
break
|
|
930
933
|
}
|
|
@@ -1132,10 +1135,8 @@ function SteamClient({
|
|
|
1132
1135
|
}
|
|
1133
1136
|
},
|
|
1134
1137
|
async loggedOn(loggedOnResponse) {
|
|
1135
|
-
steamClient.setPersona(SteamUser.EPersonaState.Online)
|
|
1136
|
-
state = 'Online'
|
|
1137
|
-
await sendHello()
|
|
1138
1138
|
callEvent(events.loggedOn, loggedOnResponse)
|
|
1139
|
+
updateInvisible()
|
|
1139
1140
|
updateAutoRequestFreeLicense()
|
|
1140
1141
|
updateAutoGamePlay()
|
|
1141
1142
|
},
|
|
@@ -1341,18 +1342,15 @@ function SteamClient({
|
|
|
1341
1342
|
}
|
|
1342
1343
|
const timestamp = new Date(data.server_timestamp).getTime()
|
|
1343
1344
|
const steamId = data.steamid_friend.getSteamID64()
|
|
1344
|
-
const personas = await getPersonas([steamId])
|
|
1345
|
-
const player_name = personas.find(p => p.id == steamId)?.player_name || ''
|
|
1346
1345
|
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)
|
|
1347
1346
|
const emotion = (data.message_no_bbcode || '').split(' ').find(m => m.startsWith(':') && m.endsWith(':'))
|
|
1348
1347
|
|
|
1349
1348
|
callEvent(events.friendMessage, {
|
|
1350
|
-
|
|
1349
|
+
...data,
|
|
1351
1350
|
message: data.message_no_bbcode,
|
|
1352
1351
|
invite,
|
|
1353
1352
|
steamId,
|
|
1354
1353
|
timestamp,
|
|
1355
|
-
from_limited_account: data.from_limited_account,
|
|
1356
1354
|
emotion,
|
|
1357
1355
|
})
|
|
1358
1356
|
},
|
|
@@ -1411,6 +1409,33 @@ function SteamClient({
|
|
|
1411
1409
|
}
|
|
1412
1410
|
}
|
|
1413
1411
|
|
|
1412
|
+
function getHandlerResult(msg, handler) {
|
|
1413
|
+
const timeout = {current: null}
|
|
1414
|
+
return new Promise(resolve => {
|
|
1415
|
+
|
|
1416
|
+
function myhandler(...args) {
|
|
1417
|
+
timeout.current && clearTimeout(timeout.current)
|
|
1418
|
+
removeHandler()
|
|
1419
|
+
resolve(handler?.(...args))
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1422
|
+
function removeHandler() {
|
|
1423
|
+
if (Array.isArray(steamClient._handlerManager._handlers[msg])) {
|
|
1424
|
+
const index = steamClient._handlerManager._handlers[msg].findIndex(_handler => _handler === myhandler)
|
|
1425
|
+
if (index > -1) {
|
|
1426
|
+
steamClient._handlerManager._handlers[msg].splice(index, 1)
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
timeout.current = setTimeout(function () {
|
|
1432
|
+
removeHandler()
|
|
1433
|
+
resolve()
|
|
1434
|
+
}, 60000)
|
|
1435
|
+
steamClient._handlerManager.add(msg, myhandler);
|
|
1436
|
+
})
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1414
1439
|
function getFriendList() {
|
|
1415
1440
|
return Object.keys(steamClient.myFriends).filter(steamId => steamClient.myFriends[steamId] === SteamUser.EFriendRelationship.Friend)
|
|
1416
1441
|
}
|
|
@@ -1578,6 +1603,15 @@ function SteamClient({
|
|
|
1578
1603
|
function init() {
|
|
1579
1604
|
bindEvent()
|
|
1580
1605
|
login()
|
|
1606
|
+
|
|
1607
|
+
steamClient._handlerManager.add(5480, function (payload) {
|
|
1608
|
+
const result = protoDecode(Protos.csgo.CMsgClientRequestedClientStats, payload.toBuffer())
|
|
1609
|
+
// console.log("CMsgClientRequestedClientStats", result);
|
|
1610
|
+
})
|
|
1611
|
+
steamClient._handlerManager.add(6612, function (payload) {
|
|
1612
|
+
const result = protoDecode(Protos.csgo.CMsgClientMMSLobbyData, payload.toBuffer())
|
|
1613
|
+
// console.log("CMsgClientMMSLobbyData", result);
|
|
1614
|
+
})
|
|
1581
1615
|
}
|
|
1582
1616
|
|
|
1583
1617
|
|
|
@@ -1777,6 +1811,16 @@ function SteamClient({
|
|
|
1777
1811
|
}
|
|
1778
1812
|
}
|
|
1779
1813
|
|
|
1814
|
+
function updateInvisible() {
|
|
1815
|
+
if (isInvisible) {
|
|
1816
|
+
steamClient.setPersona(SteamUser.EPersonaState.Invisible)
|
|
1817
|
+
state = 'Invisible'
|
|
1818
|
+
} else {
|
|
1819
|
+
steamClient.setPersona(SteamUser.EPersonaState.Online)
|
|
1820
|
+
state = 'Online'
|
|
1821
|
+
}
|
|
1822
|
+
}
|
|
1823
|
+
|
|
1780
1824
|
async function gamesPlayed(apps) {
|
|
1781
1825
|
if (!Array.isArray(apps)) {
|
|
1782
1826
|
apps = [apps]
|
|
@@ -1968,6 +2012,13 @@ function SteamClient({
|
|
|
1968
2012
|
updateAutoGamePlay()
|
|
1969
2013
|
}
|
|
1970
2014
|
},
|
|
2015
|
+
setIsInvisible(change) {
|
|
2016
|
+
change = !!change
|
|
2017
|
+
if (isInvisible !== change) {
|
|
2018
|
+
isInvisible = change
|
|
2019
|
+
updateInvisible()
|
|
2020
|
+
}
|
|
2021
|
+
},
|
|
1971
2022
|
setFakeGameScore(change) {
|
|
1972
2023
|
change = !!change
|
|
1973
2024
|
if (isFakeGameScore !== change) {
|
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
|
+
};
|