Precisar de ajuda? Não abra um problema - pergunte na sala de gitores.
Um plug-in de nó-Steam para Counter-Strike: Ofensivo Global.
Baseado no node-dota2 por rjacksonm1
Esta lista está ficando muito longa. Quer estar nisso? Envie -me uma mensagem sobre gitter e vamos conversar. - Joshuaferrara
Parâmetros:
steamUser
- passe uma instância do SteamUser para alterar seu status atual (no jogo/não).steamGC
- Passe uma instância do SteamGamecoordinator para usar para enviar e receber mensagens GC.debug
- Um booleano observando se deve imprimir informações sobre operações para consolar. 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 ) ;
Todos os métodos exigem que a instância do client steam seja conectada.
launch()
Relatórios para o Steam que você está jogando contra-ataque: Ofensivo global e depois inicia a comunicação com o coordenador do jogo.
exit()
Diz a Steam que você não está jogando CS: Vá.
ToAccountID(steamId)
Converte um ID de 64 bits em um ID da conta.
ToSteamID(accountId)
Converte um ID da conta em um ID do Steam de 64 bits.
Rank.getString(int rank_id)
Converte um número inteiro rank_id em uma string. Ex: CSGO.Rank.getString(1) = "Silver I"
Level.getString(int player_level)
Converte um player Integer_level em uma string. Ex: CSGO.Level.getString(1) = "Recruit"
matchmakingStatsRequest()
Envia uma mensagem para o coordenador de jogo solicitando algumas estatísticas de correspondência. Ouça o evento matchmakingStatsData
para a resposta do coordenador de jogo. Requer que o GC esteja pronto (ouça o evento ready
antes de ligar).
requestRecentGames()
Solicita uma lista de jogos recentes para a conta atualmente logada. Ouça o evento matchList
para a resposta do coordenador de jogo.
requestLiveGameForUser(accountId)
Solicita informações atuais para o jogo ao vivo para determinado usuário. Ouça o evento matchList
para a resposta do coordenador de jogo.
requestGame(string matchid, string outcomeid, int token)
Solicita informações sobre o jogo, dado um jogo matchid, OutcomeId e Token para um jogo (dica: elas podem ser encontradas com o decodificador do código de compartilhamento). Ouça o evento matchList
para a resposta do coordenador de jogo.
requestWatchInfoFriends(arguments)
Solicita informações assistíveis para o jogo. Argumentos:
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.
Exemplo:
CSGO . requestWatchInfoFriends ( {
serverid : new Long ( - 569600767 , - 2130640678 , true ) . toString ( ) ,
matchid : new Long ( 39 , 719230023 , true ) . toString ( )
} ) ;
Requisitos: o jogo deve estar ao vivo.
Ouça o evento watchList
da resposta do coordenador de jogo.
requestCurrentLiveGames()
Solicita uma lista dos jogos ao vivo atuais. Ouça o evento matchList
para a resposta do coordenador de jogo.
playerProfileRequest(accountId)
accountId
da conta do Player é o ID da conta (o SteamID64 do jogador pode ser convertido em um ID da conta com CSGO.ToAccountID(steamid)
).
Solicita o perfil de um jogador do coordenador do jogo. O jogador deve estar online e jogar CS: vá. Ouça o evento playerProfile
para a resposta do coordenador de jogo.
NOTA: Você não pode mais definir sua presença rica para seqüências arbitrárias. Em vez disso, os jogos agora definem uma lista de até 20 valores de presença ricos que podem ser exibidos. Consulte o método
SetRichPresence
nesta documentação para obter mais informações.
richPresenceUpload(richPresenceObject)
Define o objeto de presença rico para o usuário logado atualmente. Presença rica é a solução da Valve para fornecer informações aos amigos sobre o que você está fazendo em um jogo. Por exemplo, quando você vê informações sobre outro jogo de correspondência de amigos (como no mapa e na pontuação), isso é definido usando presença rica. Um exemplo de como usar esse método pode ser encontrado no exemplo.js
itemDataRequest(string s, string a, string d, string m)
Solicita dados do item para o item CSGO especificado, inspecione os parâmetros do link. O parâmetro s
tem um valor quando o link de inspeção é de um inventário; Da mesma forma, o parâmetro m
tem um valor quando o link Inspecion é do mercado. Se não houver valor para um determinado parâmetro do link Inspect, defina -o como "0"
.
Ouça o evento itemData
para a resposta do coordenador de jogo.
Exemplo para um link de inspeção de inventário para um item CSGO
// steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198084749846A6768147729D12557175561287951743
CSGO . itemDataRequest ( "76561198084749846" , "6768147729" , "12557175561287951743" , "0" ) ;
Exemplo para um link de inspeção de mercado para um item CSGO
// steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20M563330426657599553A6710760926D9406593057029549017
CSGO . itemDataRequest ( "0" , "6710760926" , "9406593057029549017" , "563330426657599553" ) ;
new CSGO.SharecodeDecoder(string code);
Instancia uma classe ShareCodedecoder para decodificar os ShareCodes.
Chamar o método decode()
do SharecodeDecoder
retornará um objeto com as informações decodificadas.
console . log ( new CSGO . SharecodeDecoder ( "CSGO-U6MWi-hYFWJ-opPwD-JciHm-qOijD" ) . decode ( ) )
{ matchId : '3106049990460440633' ,
outcomeId : '3106056003414655216' ,
tokenId : '11842' }
ready
Emitido quando o GC está pronto para receber mensagens. Cuidado para não declarar funções anônimas como manipuladores de eventos aqui, pois você precisará invalidar os manipuladores de eventos em um evento unready
.
unready
Emitido quando o status da conexão com o GC muda e torna a biblioteca indisponível para interagir. Você deve limpar todos os manipuladores de eventos definidos no evento ready
aqui, caso contrário, você terá vários manipuladores para cada mensagem sempre que um novo evento ready
for enviado.
exited
Emitido quando .exit()
é chamado de conveniência para a limpeza de manipuladores em saídas intencionais.
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
}
}
Emitido quando o coordenador do jogo responde ao método itemDataRequest
.
matchmakingStatsData
( matchmakingStatsResponse
)matchmakingStatsResponse
- objeto de resposta bruta. Exemplo de resposta abaixo. {
"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
}
Emitido quando o coordenador do jogo responde ao método matchmakingStatsRequest
.
playerProfile
(resposta ao 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
}
]
}
Emitido quando o coordenador do jogo responde ao método playerProfileRequest
.
matchList
(Resposta ao requestRecentGames
)Toda a resposta acabou sendo grande demais para o ReadMe e fez com que os navegadores caíssem. Devido a isso, incluí apenas um trecho sobre o que foi devolvido.
{
"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" : []
}
Emitido quando requestRecentGames
, requestGame
, requestLiveGameForUser
, requestCurrentLiveGames
é respondido.
watchList
(resposta ao requestWatchInfoFriends
)Exemplo:
{
"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
}