Comments (7)
- Creating a private room with bots
OUTPUT
{
"auth" :
{
"token" : "518quwZuBDWr"
},
"draft" : {},
"hero" :
{
"aghanims_scepter" : false,
"aghanims_shard" : false,
"alive" : true,
"break" : false,
"buyback_cooldown" : 0,
"buyback_cost" : 260,
"disarmed" : false,
"has_debuff" : false,
"health" : 520,
"health_percent" : 100,
"hexed" : false,
"id" : 109,
"level" : 1,
"magicimmune" : false,
"mana" : 303,
"mana_percent" : 100,
"max_health" : 520,
"max_mana" : 303,
"muted" : false,
"name" : "npc_dota_hero_terrorblade",
"respawn_seconds" : 0,
"silenced" : false,
"smoked" : false,
"stunned" : false,
"talent_1" : false,
"talent_2" : false,
"talent_3" : false,
"talent_4" : false,
"talent_5" : false,
"talent_6" : false,
"talent_7" : false,
"talent_8" : false,
"xp" : 0,
"xpos" : -5322,
"ypos" : -6322
},
"map" :
{
"clock_time" : -76,
"customgamename" : "",
"daytime" : false,
"game_state" : "DOTA_GAMERULES_STATE_PRE_GAME",
"game_time" : 88,
"matchid" : "6611000909",
"name" : "start",
"nightstalker_night" : false,
"paused" : false,
"ward_purchase_cooldown" : 122,
"win_team" : "none"
},
"player" :
{
"activity" : "playing",
"assists" : 0,
"commands_issued" : 37,
"deaths" : 0,
"denies" : 0,
"gold" : 160,
"gold_from_creep_kills" : 0,
"gold_from_hero_kills" : 0,
"gold_from_income" : 0,
"gold_from_shared" : 0,
"gold_reliable" : 0,
"gold_unreliable" : 160,
"gpm" : 0,
"kill_list" : {},
"kill_streak" : 0,
"kills" : 0,
"last_hits" : 0,
"name" : "name",
"steamid" : "id",
"team_name" : "radiant",
"xpm" : 0
},
"provider" :
{
"appid" : 570,
"name" : "Dota 2",
"timestamp" : 1654874448,
"version" : 47
},
"wearables" :
{
"wearable0" : 12917,
"wearable1" : 306,
"wearable2" : 476,
"wearable3" : 478,
"wearable4" : 8650,
"wearable5" : 8632,
"wearable6" : 540,
"wearable7" : 793,
"wearable8" : 14912
}
}
- Creating a private room with bots but local
OUTPUT
{
"auth" :
{
"token" : "518quwZuBDWr"
},
"draft" : {},
"hero" :
{
"aghanims_scepter" : false,
"aghanims_shard" : false,
"alive" : true,
"break" : false,
"buyback_cooldown" : 0,
"buyback_cost" : 264,
"disarmed" : false,
"has_debuff" : false,
"health" : 700,
"health_percent" : 100,
"hexed" : false,
"id" : 2,
"level" : 1,
"magicimmune" : false,
"mana" : 291,
"mana_percent" : 100,
"max_health" : 700,
"max_mana" : 291,
"muted" : false,
"name" : "npc_dota_hero_axe",
"respawn_seconds" : 0,
"silenced" : false,
"smoked" : false,
"stunned" : false,
"talent_1" : false,
"talent_2" : false,
"talent_3" : false,
"talent_4" : false,
"talent_5" : false,
"talent_6" : false,
"talent_7" : false,
"talent_8" : false,
"xp" : 0,
"xpos" : -5294,
"ypos" : -6242
},
"map" :
{
"clock_time" : -50,
"customgamename" : "",
"daytime" : false,
"game_state" : "DOTA_GAMERULES_STATE_PRE_GAME",
"game_time" : 109,
"matchid" : "6611018105",
"name" : "start",
"nightstalker_night" : false,
"paused" : false,
"ward_purchase_cooldown" : 96,
"win_team" : "none"
},
"player" :
{
"activity" : "playing",
"assists" : 0,
"commands_issued" : 20,
"deaths" : 0,
"denies" : 0,
"gold" : 600,
"gold_from_creep_kills" : 0,
"gold_from_hero_kills" : 0,
"gold_from_income" : 0,
"gold_from_shared" : 0,
"gold_reliable" : 0,
"gold_unreliable" : 600,
"gpm" : 0,
"kill_list" : {},
"kill_streak" : 0,
"kills" : 0,
"last_hits" : 0,
"name" : "name",
"steamid" : "id",
"team_name" : "radiant",
"xpm" : 0
},
"provider" :
{
"appid" : 570,
"name" : "Dota 2",
"timestamp" : 1654874989,
"version" : 47
},
"wearables" :
{
"wearable0" : 12964,
"wearable1" : 13930,
"wearable10" : 12964,
"wearable11" : 12964,
"wearable12" : 14912,
"wearable2" : 13928,
"wearable3" : 13929,
"wearable4" : 8632,
"wearable5" : 13872,
"wearable6" : 8366,
"wearable7" : 726,
"wearable8" : 12954,
"wearable9" : 791
}
}
- Typing 'map dota' in console
OUTPUT
{
"auth" :
{
"token" : "518quwZuBDWr"
},
"draft" : {},
"hero" :
{
"aghanims_scepter" : false,
"aghanims_shard" : false,
"alive" : true,
"break" : false,
"buyback_cooldown" : 0,
"buyback_cost" : 253,
"disarmed" : false,
"has_debuff" : false,
"health" : 580,
"health_percent" : 100,
"hexed" : false,
"id" : 105,
"level" : 1,
"magicimmune" : false,
"mana" : 375,
"mana_percent" : 100,
"max_health" : 580,
"max_mana" : 375,
"muted" : false,
"name" : "npc_dota_hero_techies",
"respawn_seconds" : 0,
"silenced" : false,
"smoked" : false,
"stunned" : false,
"talent_1" : false,
"talent_2" : false,
"talent_3" : false,
"talent_4" : false,
"talent_5" : false,
"talent_6" : false,
"talent_7" : false,
"talent_8" : false,
"xp" : 0,
"xpos" : -5250,
"ypos" : -6135
},
"map" :
{
"clock_time" : -79,
"customgamename" : "",
"daytime" : false,
"game_state" : "DOTA_GAMERULES_STATE_PRE_GAME",
"game_time" : 17,
"matchid" : "0",
"name" : "dota",
"nightstalker_night" : false,
"paused" : false,
"ward_purchase_cooldown" : 0,
"win_team" : "none"
},
"player" :
{
"activity" : "playing",
"assists" : 0,
"commands_issued" : 22,
"deaths" : 0,
"denies" : 0,
"gold" : 600,
"gold_from_creep_kills" : 0,
"gold_from_hero_kills" : 0,
"gold_from_income" : 0,
"gold_from_shared" : 0,
"gold_reliable" : 0,
"gold_unreliable" : 600,
"gpm" : 0,
"kill_list" : {},
"kill_streak" : 0,
"kills" : 0,
"last_hits" : 0,
"name" : "name",
"steamid" : "id",
"team_name" : "radiant",
"xpm" : 0
},
"provider" :
{
"appid" : 570,
"name" : "Dota 2",
"timestamp" : 1654875275,
"version" : 47
},
"wearables" :
{
"wearable0" : 489,
"wearable1" : 491,
"wearable10" : 793,
"wearable11" : 14912,
"wearable2" : 487,
"wearable3" : 492,
"wearable4" : 394,
"wearable5" : 490,
"wearable6" : 499,
"wearable7" : 9166,
"wearable8" : 791,
"wearable9" : 792
}
}
From what I understand, every local match that is not a private room displays "BOT: {HERO_NAME}" (match id: 0) and every match with an id, even if it's with bots, displays "Private Room".
I think it will be possible to create a bot detection with this information. I'll implement later and validate.
from dota2-rpc-client.
This one is a little more difficult. But I'll research if I can get the information directly from Steam RPC.
Currently I use Dota's Game Integration service, which is nothing more than a big JSON with lots of information. I still haven't found a way to detect a game with bots from this data. I believe that seeing this information directly from Steam RPC could be a solution.
from dota2-rpc-client.
Do you have any links about this? I never looked to see if it's possible to get this information.
from dota2-rpc-client.
This one is a little more difficult. But I'll research if I can get the information directly from Steam RPC.
I was working on a project similar to yours and researching the topic.
Advantage of using GSI: you don't need to log into Steam every time. With Steam RPC you either have to enter Steam Guard code every time or use another account to monitor status. Also, GSI has much more information.
But Steam RPC translates directly into Discord RPC (and it also has the "Main Menu", "Main Menu (Idle)", "In lobby" states).
I can't link any additional information on this though. ApexRPC was like a reference project to me, and the rest of stuff came from manually testing and logging results from different manipulations.
I still haven't found a way to detect a game with bots from this data
I suspected this might be a problem.
I believe that seeing this information directly from Steam RPC could be a solution.
This would require user to log into Steam, I think, and wouldn't get any advantages. Unless Steam SDK can provide this functionality, of course. If this is the case, I don't think it's worth it then.
Although IIRC you can get Steam RPC status from a player even if you are not on the player's friends list. So in theory it should be possible to make a bot/proxy which would check a person's status.
Another potential solution would be looking at the players list in the match (similar to what 9kmmr bot does). I didn't have prior experience with GSI, but I would assume that bots would have something suspicious in their data, e.g. Player->SteamID. I think this should be the best solution.
from dota2-rpc-client.
You're right, having to save steam login information might be a little out of scope.
This is the output I get when I'm playing with bots:
OUTPUT
{
"auth" :
{
"token" : "518quwZuBDWr"
},
"draft" : {},
"hero" :
{
"aghanims_scepter" : false,
"aghanims_shard" : false,
"alive" : true,
"break" : false,
"buyback_cooldown" : 0,
"buyback_cost" : 278,
"disarmed" : false,
"has_debuff" : false,
"health" : 640,
"health_percent" : 100,
"hexed" : false,
"id" : 7,
"level" : 1,
"magicimmune" : false,
"mana" : 291,
"mana_percent" : 100,
"max_health" : 640,
"max_mana" : 291,
"muted" : false,
"name" : "npc_dota_hero_earthshaker",
"respawn_seconds" : 0,
"silenced" : false,
"smoked" : false,
"stunned" : false,
"talent_1" : false,
"talent_2" : false,
"talent_3" : false,
"talent_4" : false,
"talent_5" : false,
"talent_6" : false,
"talent_7" : false,
"talent_8" : false,
"xp" : 0,
"xpos" : 4968,
"ypos" : 5616
},
"map" :
{
"clock_time" : 39,
"customgamename" : "",
"daytime" : true,
"game_state" : "DOTA_GAMERULES_STATE_GAME_IN_PROGRESS",
"game_time" : 125,
"matchid" : "0",
"name" : "start",
"nightstalker_night" : false,
"paused" : false,
"ward_purchase_cooldown" : 0,
"win_team" : "none"
},
"player" :
{
"activity" : "playing",
"assists" : 0,
"commands_issued" : 44,
"deaths" : 0,
"denies" : 0,
"gold" : 786,
"gold_from_creep_kills" : 0,
"gold_from_hero_kills" : 0,
"gold_from_income" : 66,
"gold_from_shared" : 0,
"gold_reliable" : 186,
"gold_unreliable" : 600,
"gpm" : 284,
"kill_list" : {},
"kill_streak" : 0,
"kills" : 0,
"last_hits" : 0,
"name" : "mysteamuser",
"steamid" : "mysteamid",
"team_name" : "dire",
"xpm" : 0
},
"provider" :
{
"appid" : 570,
"name" : "Dota 2",
"timestamp" : 1654870840,
"version" : 47
},
"wearables" :
{
"style0" : 1,
"style1" : 1,
"style6" : 1,
"wearable0" : 12969,
"wearable1" : 12692,
"wearable10" : 14912,
"wearable2" : 7293,
"wearable3" : 8579,
"wearable4" : 8366,
"wearable5" : 12935,
"wearable6" : 12969,
"wearable7" : 7293,
"wearable8" : 792,
"wearable9" : 793
}
}
from dota2-rpc-client.
Could "map.matchid": "0"
pop up in any other game aside from a botmatch or a local lobby? I think this could be a decent endicator, if it only shows up for botmatches.
from dota2-rpc-client.
I believe this is just an indication that I created a local room. Let me check if this value changes when I host a game with bots on the network
from dota2-rpc-client.
Related Issues (20)
- [Feature]: Choose default language in config.json
- [Feature]: Linux Support
- [Feature]: Add Team names for watching DPC matches HOT 3
- dota2 rpc service not appearing in task bar after installation HOT 3
- [Bug]: HOT 3
- [Bug]: Service fails to run HOT 7
- [Bug]: Service fails to install HOT 17
- [Feature]: Make DotA 2 RPC on Main Menu is also displayed or when the Search Game is in progress HOT 5
- [Feature]: Faceless Void Arcana
- [Bug]: Unable to update discord activity HOT 4
- [Bug]: Zeus Arcana does not appear
- [Bug]: libdiscord_game_sdk.so HOT 3
- [Bug]: Dont show overlay HOT 7
- [Feature]: Razor Arcana Support
- [Feature]: Muerta Support HOT 2
- [Bug]: Wont show HOT 7
- [Bug]: The service shuts down after the match/test lobby is started HOT 7
- [Feature]: Crownfall update HOT 1
- [Bug]: Still showing as playing Dota 2 on Discord - SOLVED HOT 4
- [Feature]: Aegis item effect HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dota2-rpc-client.