Besoin d'aide? N'ouvrez pas un problème - demandez dans la salle de Gitter.
Un plugin de nœuds pour contre-Strike: Global Offensive.
Basé sur le nœud-dota2 par rjacksonm1
Cette liste devient trop longue. Tu veux être dessus? Envoyez-moi un message sur Gitter et nous parlerons. - Joshuaferrara
Paramètres:
steamUser
- passez une instance SteamUser pour modifier votre état actuel (en jeu / non).steamGC
- Passez une instance SteamGameCoOrDinator à utiliser pour envoyer et recevoir des messages GC.debug
- Un booléen notant s'il faut imprimer des informations sur les opérations à consoler. var Steam = require ( 'steam' ) ,
steamClient = new Steam . SteamClient ( ) ,
steamUser = new Steam . SteamUser ( steamClient ) ,
steamGC = new Steam . SteamGameCoordinator ( steamClient , 730 ) ,
csgo = require ( 'csgo' ) ,
CSGO = new csgo . CSGOClient ( steamUser , steamGC , false ) ;
Toutes les méthodes nécessitent que l'instance SteamClient soit connectée.
launch()
Rapports à Steam que vous jouez à Counter-Strike: Global Offensive, puis initie la communication avec le coordinateur du jeu.
exit()
Dit à Steam que vous ne jouez pas à CS: allez.
ToAccountID(steamId)
Convertit un ID de vapeur 64 bits en un ID de compte.
ToSteamID(accountId)
Convertit un ID de compte en un ID de vapeur 64 bits.
Rank.getString(int rank_id)
Convertit un entier RANK_ID en une chaîne. Ex: CSGO.Rank.getString(1) = "Silver I"
Level.getString(int player_level)
Convertit un entier Player_level en une chaîne. Ex: CSGO.Level.getString(1) = "Recruit"
matchmakingStatsRequest()
Envoie un message au coordinateur de jeu pour demander des statistiques de matchmaking. Écoutez l'événement matchmakingStatsData
pour la réponse du coordinateur du jeu. Exige que le GC soit prêt (écoutez l'événement ready
avant d'appeler).
requestRecentGames()
Demande une liste des jeux récents pour le compte actuellement connecté. Écoutez l'événement matchList
pour la réponse du coordinateur du jeu.
requestLiveGameForUser(accountId)
Demande les informations actuelles du jeu en direct pour l'utilisateur donné. Écoutez l'événement matchList
pour la réponse du coordinateur du jeu.
requestGame(string matchid, string outcomeid, int token)
Demande des informations sur le jeu donné un matchId, un résultat et un jeton pour un jeu (Conseil: ceux-ci peuvent être trouvés avec le décodeur Sharecode). Écoutez l'événement matchList
pour la réponse du coordinateur du jeu.
requestWatchInfoFriends(arguments)
Demande des informations observables pour le jeu. Arguments:
int request_id ; //Not enough tests yet
account_ids [ array_of_csgo_accounts ] ; //Not enough tests yet
long serverid ; //ServerID of match.
long matchid ; //MatchID of match.
Exemple:
CSGO . requestWatchInfoFriends ( {
serverid : new Long ( - 569600767 , - 2130640678 , true ) . toString ( ) ,
matchid : new Long ( 39 , 719230023 , true ) . toString ( )
} ) ;
Exigences: le jeu doit être en direct.
Écoutez l'événement watchList
pour la réponse du coordinateur du jeu.
requestCurrentLiveGames()
Demande une liste des jeux en direct actuels. Écoutez l'événement matchList
pour la réponse du coordinateur du jeu.
playerProfileRequest(accountId)
accountId
est l'ID de compte du joueur (SteamID64 d'un joueur peut être converti en ID de compte avec CSGO.ToAccountID(steamid)
).
Demande le profil d'un joueur du coordinateur du jeu. Le joueur doit être en ligne et jouer CS: GO. Écoutez l'événement playerProfile
pour la réponse du coordinateur du jeu.
Remarque: vous ne pouvez plus définir votre riche présence sur des chaînes arbitraires. Au contraire, les jeux définissent désormais une liste de 20 valeurs de présence riche en richesse qui peuvent être affichées. Voir la méthode
SetRichPresence
dans cette documentation pour plus d'informations.
richPresenceUpload(richPresenceObject)
Définit l'objet de présence riche pour l'utilisateur actuellement connecté. Rich Présence est la solution de Valve pour donner aux amis des informations sur ce que vous faites dans un jeu. Par exemple, lorsque vous voyez des informations sur un autre jeu de matchmaking d'amis (comme dans la carte et le score), cela est défini en utilisant une riche présence. Un exemple d'utilisation de cette méthode peut être trouvé dans Exemple.js
itemDataRequest(string s, string a, string d, string m)
Demande les données de l'élément pour l'élément CSGO spécifié Inspecter les paramètres de liaison. Le paramètre s
a une valeur lorsque le lien d'inspection provient d'un inventaire; De même, le paramètre m
a une valeur lorsque le lien d'inspection provient du marché. S'il n'y a pas de valeur pour un paramètre donné à partir du lien Inspect, définissez-le sur "0"
.
Écoutez l'événement itemData
pour la réponse du coordinateur du jeu.
Exemple pour un lien d'inventaire Inspecter pour un élément CSGO
// steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198084749846A6768147729D12557175561287951743
CSGO . itemDataRequest ( "76561198084749846" , "6768147729" , "12557175561287951743" , "0" ) ;
Exemple pour un lien d'inspection de marché pour un article CSGO
// steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20M563330426657599553A6710760926D9406593057029549017
CSGO . itemDataRequest ( "0" , "6710760926" , "9406593057029549017" , "563330426657599553" ) ;
new CSGO.SharecodeDecoder(string code);
Instancie une classe SharecodeDecoder pour décoder Sharecodes.
L'appel de la méthode decode()
du SharecodeDecoder
renverra un objet avec les informations décodées.
console . log ( new CSGO . SharecodeDecoder ( "CSGO-U6MWi-hYFWJ-opPwD-JciHm-qOijD" ) . decode ( ) )
{ matchId : '3106049990460440633' ,
outcomeId : '3106056003414655216' ,
tokenId : '11842' }
ready
Émis lorsque le GC est prêt à recevoir des messages. Faites attention à ne pas déclarer les fonctions anonymes en tant que gestionnaires d'événements ici, car vous devrez pouvoir invalider les gestionnaires d'événements sur un événement unready
.
unready
Émis lorsque l'état de connexion au GC change et rend la bibliothèque indisponible pour interagir. Vous devez effacer tous les gestionnaires d'événements définis dans l'événement ready
ici, sinon vous aurez plusieurs gestionnaires pour chaque message chaque fois qu'un nouvel événement ready
est envoyé.
exited
Émis lorsque .exit()
est appelé comme commodité pour effacer les gestionnaires lors des sorties intentionnelles.
itemData
( itemDataResponse
) {
"iteminfo" :
{
"accountid" : null ,
"itemid" : Long { "low" : - 1821786863 , "high" : 1 , "unsigned" : true } ,
"defindex" : 7 ,
"paintindex" : 474 ,
"rarity" : 6 ,
"quality" : 4 ,
"paintwear" : 1054492909 ,
"paintseed" : 183 ,
"killeaterscoretype" : null ,
"killeatervalue" : null ,
"customname" : null ,
"stickers" : [ ] ,
"inventory" : 3221225475 ,
"origin" : 8 ,
"questid" : null ,
"dropreason" : null ,
"floatvalue" : 0.4263376295566559
}
}
Émis lorsque le coordinateur du jeu répond à la méthode itemDataRequest
.
matchmakingStatsData
( matchmakingStatsResponse
)matchmakingStatsResponse
- Objet de réponse brut. Exemple de réponse ci-dessous. {
"account_id" : 137013074 ,
"ongoingmatch" : { // Only populated when logged in user is in a match
"serverid" : 90112014586923017 ,
"direct_udp_ip" : 2734604850 ,
"direct_udp_port" : 27035 ,
"reservationid" : 18374688715512210549 ,
"reservation" : {
"game_type" : 520 ,
"match_id" : 3245263802660290728 ,
"tournament_event" : null ,
"pre_match_data" : null
} ,
"map" : "de_dust2" ,
"server_address" : "=[A:1:153428969:9318]:0"
} ,
"global_stats" : {
"players_online" : 423480 ,
"servers_online" : 132472 ,
"players_searching" : 4212 ,
"servers_available" : 65497 ,
"ongoing_matches" : 17016 ,
"search_time_avg" : 46530 ,
"search_statistics" : [
{
"game_type" : 264 ,
"search_time_avg" : 128555 ,
"players_searching" : 148
} ,
{
"game_type" : 520 ,
"search_time_avg" : 31962 ,
"players_searching" : 1768
} ,
{
"game_type" : 1032 ,
"search_time_avg" : 122353 ,
"players_searching" : 426
} ,
{
"game_type" : 2056 ,
"search_time_avg" : 136133 ,
"players_searching" : 160
} ,
{
"game_type" : 4104 ,
"search_time_avg" : 62643 ,
"players_searching" : 1069
} ,
{
"game_type" : 8200 ,
"search_time_avg" : 70380 ,
"players_searching" : 563
} ,
{
"game_type" : 16392 ,
"search_time_avg" : 115923 ,
"players_searching" : 132
} ,
{
"game_type" : 32776 ,
"search_time_avg" : 54906 ,
"players_searching" : 1248
} ,
{
"game_type" : 65544 ,
"search_time_avg" : 116871 ,
"players_searching" : 183
} ,
{
"game_type" : 131080 ,
"search_time_avg" : 82308 ,
"players_searching" : 145
} ,
{
"game_type" : 262152 ,
"search_time_avg" : 209331 ,
"players_searching" : 105
} ,
{
"game_type" : 524296 ,
"search_time_avg" : 270376 ,
"players_searching" : 110
} ,
{
"game_type" : 1048584 ,
"search_time_avg" : 64499 ,
"players_searching" : 1020
} ,
{
"game_type" : 268435464 ,
"search_time_avg" : 84615 ,
"players_searching" : 642
} ,
{
"game_type" : 536870920 ,
"search_time_avg" : 104965 ,
"players_searching" : 478
} ,
{
"game_type" : 2097160 ,
"search_time_avg" : 198734 ,
"players_searching" : 228
} ,
{
"game_type" : 134217736 ,
"search_time_avg" : 147703 ,
"players_searching" : 203
} ,
{
"game_type" : 8388616 ,
"search_time_avg" : 538828 ,
"players_searching" : 138
} ,
{
"game_type" : 16777224 ,
"search_time_avg" : 232350 ,
"players_searching" : 192
} ,
{
"game_type" : 4194312 ,
"search_time_avg" : 237269 ,
"players_searching" : 151
} ,
{
"game_type" : 33554440 ,
"search_time_avg" : 203183 ,
"players_searching" : 181
}
] ,
"main_post_url" : "" ,
"required_appid_version" : 13494 ,
"pricesheet_version" : 1438240620 ,
"twitch_streams_version" : 2 ,
"active_tournament_eventid" : 6 ,
"active_survey_id" : 0
} ,
"penalty_seconds" : null , // Contains amount of time logged in account has an MM cooldown
"penalty_reason" : null , // Integer representing reason for MM cooldown
"vac_banned" : 0 ,
"ranking" : {
"account_id" : 137013074 ,
"rank_id" : 11 ,
"wins" : 192 ,
"rank_change" : null
} ,
"commendation" : {
"cmd_friendly" : 3 ,
"cmd_teaching" : 3 ,
"cmd_leader" : 3
} ,
"medals" : {
"medal_team" : 0 ,
"medal_combat" : 0 ,
"medal_weapon" : 0 ,
"medal_global" : 0 ,
"medal_arms" : 0 ,
"display_items_defidx" : [ ] ,
"featured_display_item_defidx" : null
} ,
"my_current_event" : null ,
"my_current_event_teams" : [ ] ,
"my_current_team" : null ,
"my_current_event_stages" : [ ] ,
"survey_vote" : null ,
"activity" : null ,
"player_level" : 3 ,
"player_cur_xp" : 327684342 ,
"player_xp_bonus_flags" : null
}
Émis lorsque le coordinateur du jeu répond à la méthode matchmakingStatsRequest
.
playerProfile
(réponse à playerProfileRequest
) {
"request_id" : null ,
"account_profiles" : [
{
"account_id" : 137013074 ,
"ongoingmatch" : null ,
"global_stats" : null ,
"penalty_seconds" : null ,
"penalty_reason" : null ,
"vac_banned" : null ,
"ranking" : {
"account_id" : 137013074 ,
"rank_id" : 11 ,
"wins" : 192 ,
"rank_change" : null
},
"commendation" : {
"cmd_friendly" : 3 ,
"cmd_teaching" : 3 ,
"cmd_leader" : 3
},
"medals" : {
"medal_team" : 0 ,
"medal_combat" : 0 ,
"medal_weapon" : 0 ,
"medal_global" : 0 ,
"medal_arms" : 0 ,
"display_items_defidx" : [],
"featured_display_item_defidx" : null
},
"my_current_event" : null ,
"my_current_event_teams" : [],
"my_current_team" : null ,
"my_current_event_stages" : [],
"survey_vote" : null ,
"activity" : null ,
"player_level" : 3 ,
"player_cur_xp" : 327684342 ,
"player_xp_bonus_flags" : null
}
]
}
Émis lorsque le coordinateur du jeu répond à la méthode playerProfileRequest
.
matchList
(Response to requestRecentGames
)Toute la réponse a fini par être trop importante pour le Readme et a provoqué le plan des navigateurs. Pour cette raison, je n'ai inclus qu'un extrait quant à ce qui est retourné.
{
"reservationid" : {
"low" : 65 ,
"high" : 715485165 ,
"unsigned" : true
},
"reservation" : {
"account_ids" : [
2879081 ,
182261908 ,
225695551 ,
30039512 ,
90132590 ,
94815387 ,
37671978 ,
31906737 ,
137013074 ,
61347894
],
"game_type" : 1032 ,
"match_id" : null ,
"server_version" : null ,
"rankings" : [],
"encryption_key" : null ,
"encryption_key_pub" : null ,
"party_ids" : [],
"whitelist" : [],
"tv_master_steamid" : null ,
"tournament_event" : null ,
"tournament_teams" : [],
"tournament_casters_account_ids" : [],
"tv_relay_steamid" : null ,
"pre_match_data" : null
},
"map" : " http://replay124.valve.net/730/003072985384448163905_0699089210.dem.bz2 " ,
"round" : null ,
"kills" : [
21 ,
22 ,
15 ,
15 ,
12 ,
37 ,
20 ,
23 ,
17 ,
15
],
"assists" : [
5 ,
5 ,
1 ,
3 ,
4 ,
2 ,
3 ,
2 ,
6 ,
7
],
"deaths" : [
22 ,
22 ,
24 ,
23 ,
21 ,
13 ,
13 ,
19 ,
20 ,
20
],
"scores" : [
55 ,
54 ,
40 ,
39 ,
37 ,
79 ,
65 ,
59 ,
41 ,
37
],
"pings" : [],
"round_result" : null ,
"match_result" : 2 ,
"team_scores" : [
11 ,
16
],
"confirm" : null ,
"reservation_stage" : null ,
"match_duration" : 2332 ,
"enemy_kills" : [
21 ,
22 ,
15 ,
15 ,
12 ,
37 ,
20 ,
23 ,
17 ,
15
],
"enemy_headshots" : [
12 ,
11 ,
4 ,
2 ,
3 ,
9 ,
6 ,
9 ,
3 ,
12
],
"enemy_3ks" : [],
"enemy_4ks" : [],
"enemy_5ks" : [],
"mvps" : [
4 ,
3 ,
1 ,
1 ,
2 ,
4 ,
5 ,
2 ,
3 ,
2
],
"spectators_count" : null ,
"spectators_count_tv" : null ,
"spectators_count_lnk" : null ,
"enemy_kills_agg" : []
}
Émis lorsque requestRecentGames
, requestGame
, requestLiveGameForUser
, requestCurrentLiveGames
est répondu à.
watchList
(réponse à requestWatchInfoFriends
)Exemple:
{
"request_id" : 0 ,
"account_ids" : [],
"watchable_match_infos" : [
{
"server_ip" : 2453839835 ,
"tv_port" : 28056 ,
"tv_spectators" : 1 ,
"tv_time" : 417 ,
"tv_watch_password" : {
"buffer" : {
"type" : " Buffer " ,
"data" : [ ]
},
"offset" : 21 ,
"markedOffset" : -1 ,
"limit" : 53 ,
"littleEndian" : true ,
"noAssert" : false
},
"cl_decryptdata_key" : null ,
"cl_decryptdata_key_pub" : {
"low" : -249571153 ,
"high" : 1941167002 ,
"unsigned" : true
},
"game_type" : 32776 ,
"game_mapgroup" : " mg_de_mirage " ,
"game_map" : " de_mirage " ,
"server_id" : {
"low" : 2054631424 ,
"high" : 20977258 ,
"unsigned" : true
},
"match_id" : {
"low" : 32 ,
"high" : 719254593 ,
"unsigned" : true
},
"reservation_id" : null
}
],
"extended_timeout" : null
}