Git Product home page Git Product logo

dota2-api's People

Contributors

akrz avatar aldidoanta avatar boombatower avatar brian-mcg avatar cbighea avatar derain avatar kronusme avatar lucidlemon avatar mburst avatar melkor217 avatar radonthetyrant avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dota2-api's Issues

Data Ability.json Update Chen and Drow icon FIX

{
"abilities": [
{
"name": "centaur_khan_war_stomp",
"id": "5295"
},
{
"name": "necronomicon_warrior_last_will",
"id": "5200"
},
{
"name": "enigma_demonic_conversion",
"id": "5147"
},
{
"name": "beastmaster_boar_poison",
"id": "5171"
},
{
"name": "juggernaut_blade_fury",
"id": "5028"
},
{
"name": "witch_doctor_voodoo_restoration",
"id": "5139"
},
{
"name": "bloodseeker_blood_bath",
"id": "5016"
},
{
"name": "backdoor_protection_in_base",
"id": "5351"
},
{
"name": "broodmother_spawn_spiderite",
"id": "5283"
},
{
"name": "spirit_breaker_charge_of_darkness",
"id": "5353"
},
{
"name": "chaos_knight_reality_rift",
"id": "5427"
},
{
"name": "lina_laguna_blade",
"id": "5043"
},
{
"name": "riki_backstab",
"id": "5144"
},
{
"name": "forest_troll_high_priest_heal",
"id": "5318"
},
{
"name": "warlock_upheaval",
"id": "5164"
},
{
"name": "ogre_magi_frost_armor",
"id": "5304"
},
{
"name": "stats",
"id": "5002"
},
{
"name": "dazzle_poison_touch",
"id": "5233"
},
{
"name": "templar_assassin_self_trap",
"id": "5199"
},
{
"name": "silencer_glaives_of_wisdom",
"id": "5378"
},
{
"name": "warlock_rain_of_chaos",
"id": "5165"
},
{
"name": "sven_warcry",
"id": "5096"
},
{
"name": "templar_assassin_meld",
"id": "5195"
},
{
"name": "enchantress_impetus",
"id": "5270"
},
{
"name": "earthshaker_enchant_totem",
"id": "5024"
},
{
"name": "lone_druid_synergy",
"id": "5414"
},
{
"name": "invoker_forge_spirit",
"id": "5387"
},
{
"name": "chaos_knight_phantasm",
"id": "5429"
},
{
"name": "satyr_hellcaller_unholy_aura",
"id": "5317"
},
{
"name": "shadow_shaman_shackles",
"id": "5080"
},
{
"name": "ogre_magi_bloodlust",
"id": "5440"
},
{
"name": "shadow_demon_shadow_poison_release",
"id": "5424"
},
{
"name": "blue_dragonspawn_sorcerer_evasion",
"id": "5325"
},
{
"name": "antimage_mana_break",
"id": "5003"
},
{
"name": "spirit_breaker_empowering_haste",
"id": "5354"
},
{
"name": "satyr_hellcaller_shockwave",
"id": "5316"
},
{
"name": "morphling_morph_agi",
"id": "5055"
},
{
"name": "chen_test_of_faith_teleport",
"id": "5522"
},
{
"name": "bounty_hunter_track",
"id": "5288"
},
{
"name": "bloodseeker_bloodrage",
"id": "5015"
},
{
"name": "obsidian_destroyer_astral_imprisonment",
"id": "5392"
},
{
"name": "lich_dark_ritual",
"id": "5136"
},
{
"name": "antimage_spell_shield",
"id": "5005"
},
{
"name": "enchantress_natures_attendants",
"id": "5269"
},
{
"name": "broodmother_incapacitating_bite",
"id": "5281"
},
{
"name": "undying_flesh_golem",
"id": "5447"
},
{
"name": "lone_druid_rabid",
"id": "5413"
},
{
"name": "slardar_sprint",
"id": "5114"
},
{
"name": "sandking_caustic_finale",
"id": "5104"
},
{
"name": "nevermore_dark_lord",
"id": "5063"
},
{
"name": "lycan_summon_wolves_invisibility",
"id": "5500"
},
{
"name": "life_stealer_infest",
"id": "5252"
},
{
"name": "lycan_feral_impulse",
"id": "5397"
},
{
"name": "ursa_overpower",
"id": "5358"
},
{
"name": "enraged_wildkin_toughness_aura",
"id": "5313"
},
{
"name": "pudge_flesh_heap",
"id": "5074"
},
{
"name": "witch_doctor_maledict",
"id": "5140"
},
{
"name": "vengefulspirit_nether_swap",
"id": "5125"
},
{
"name": "weaver_shukuchi",
"id": "5290"
},
{
"name": "weaver_the_swarm",
"id": "5289"
},
{
"name": "alchemist_acid_spray",
"id": "5365"
},
{
"name": "phantom_assassin_stifling_dagger",
"id": "5190"
},
{
"name": "sandking_epicenter",
"id": "5105"
},
{
"name": "tornado_tempest",
"id": "5310"
},
{
"name": "jakiro_liquid_fire",
"id": "5299"
},
{
"name": "chen_hand_of_god",
"id": "5331"
},
{
"name": "batrider_flaming_lasso",
"id": "5323"
},
{
"name": "lone_druid_true_form",
"id": "5416"
},
{
"name": "spirit_breaker_nether_strike",
"id": "5356"
},
{
"name": "spectre_haunt",
"id": "5337"
},
{
"name": "alchemist_chemical_rage",
"id": "5369"
},
{
"name": "silencer_last_word",
"id": "5379"
},
{
"name": "tinker_rearm",
"id": "5153"
},
{
"name": "rattletrap_rocket_flare",
"id": "5239"
},
{
"name": "omniknight_guardian_angel",
"id": "5266"
},
{
"name": "leshrac_diabolic_edict",
"id": "5242"
},
{
"name": "tiny_toss",
"id": "5107"
},
{
"name": "razor_static_link",
"id": "5083"
},
{
"name": "invoker_ice_wall",
"id": "5389"
},
{
"name": "brewmaster_drunken_haze",
"id": "5401"
},
{
"name": "batrider_flamebreak",
"id": "5321"
},
{
"name": "dark_seer_ion_shell",
"id": "5256"
},
{
"name": "queenofpain_scream_of_pain",
"id": "5175"
},
{
"name": "phantom_assassin_blur",
"id": "5192"
},
{
"name": "phantom_lancer_juxtapose",
"id": "5067"
},
{
"name": "tidehunter_anchor_smash",
"id": "5120"
},
{
"name": "axe_battle_hunger",
"id": "5008"
},
{
"name": "pugna_life_drain",
"id": "5189"
},
{
"name": "batrider_firefly",
"id": "5322"
},
{
"name": "beastmaster_primal_roar",
"id": "5177"
},
{
"name": "shadow_shaman_mass_serpent_ward",
"id": "5081"
},
{
"name": "treant_leech_seed",
"id": "5435"
},
{
"name": "chen_holy_persuasion",
"id": "5330"
},
{
"name": "courier_burst",
"id": "5210"
},
{
"name": "luna_lucent_beam",
"id": "5222"
},
{
"name": "morphling_morph_replicate",
"id": "5058"
},
{
"name": "venomancer_poison_sting",
"id": "5179"
},
{
"name": "roshan_bash",
"id": "5214"
},
{
"name": "tinker_march_of_the_machines",
"id": "5152"
},
{
"name": "lone_druid_spirit_bear_demolish",
"id": "5420"
},
{
"name": "mirana_leap",
"id": "5050"
},
{
"name": "brewmaster_storm_wind_walk",
"id": "5410"
},
{
"name": "skeleton_king_reincarnation",
"id": "5089"
},
{
"name": "beastmaster_call_of_the_wild",
"id": "5169"
},
{
"name": "riki_permanent_invisibility",
"id": "5145"
},
{
"name": "courier_shield",
"id": "5209"
},
{
"name": "clinkz_searing_arrows",
"id": "5260"
},
{
"name": "puck_illusory_orb",
"id": "5069"
},
{
"name": "forged_spirit_melting_strike",
"id": "5388"
},
{
"name": "viper_viper_strike",
"id": "5221"
},
{
"name": "furion_wrath_of_nature",
"id": "5248"
},
{
"name": "silencer_curse_of_the_silent",
"id": "5377"
},
{
"name": "lich_frost_nova",
"id": "5134"
},
{
"name": "doom_bringer_doom",
"id": "5342"
},
{
"name": "warlock_golem_flaming_fists",
"id": "5166"
},
{
"name": "invoker_quas",
"id": "5370"
},
{
"name": "invoker_invoke",
"id": "5375"
},
{
"name": "dazzle_weave",
"id": "5236"
},
{
"name": "courier_go_to_secretshop",
"id": "5492"
},
{
"name": "meepo_geostrike",
"id": "5432"
},
{
"name": "ogre_magi_multicast",
"id": "5441"
},
{
"name": "crystal_maiden_frostbite",
"id": "5127"
},
{
"name": "invoker_deafening_blast",
"id": "5390"
},
{
"name": "crystal_maiden_freezing_field",
"id": "5129"
},
{
"name": "lina_light_strike_array",
"id": "5041"
},
{
"name": "dragon_knight_breathe_fire",
"id": "5226"
},
{
"name": "earthshaker_fissure",
"id": "5023"
},
{
"name": "witch_doctor_paralyzing_cask",
"id": "5138"
},
{
"name": "centaur_khan_endurance_aura",
"id": "5294"
},
{
"name": "gyrocopter_homing_missile",
"id": "5362"
},
{
"name": "death_prophet_silence",
"id": "5091"
},
{
"name": "beastmaster_wild_axes",
"id": "5168"
},
{
"name": "doom_bringer_lvl_death",
"id": "5341"
},
{
"name": "queenofpain_shadow_strike",
"id": "5173"
},
{
"name": "tiny_avalanche",
"id": "5106"
},
{
"name": "invoker_exort",
"id": "5372"
},
{
"name": "lone_druid_true_form_battle_cry",
"id": "5417"
},
{
"name": "tiny_craggy_exterior",
"id": "5108"
},
{
"name": "antimage_mana_void",
"id": "5006"
},
{
"name": "riki_smoke_screen",
"id": "5142"
},
{
"name": "roshan_spell_block",
"id": "5213"
},
{
"name": "juggernaut_healing_ward",
"id": "5029"
},
{
"name": "ancient_apparition_ice_blast_release",
"id": "5349"
},
{
"name": "obsidian_destroyer_arcane_orb",
"id": "5391"
},
{
"name": "earthshaker_aftershock",
"id": "5025"
},
{
"name": "satyr_trickster_purge",
"id": "5314"
},
{
"name": "slardar_amplify_damage",
"id": "5117"
},
{
"name": "dazzle_shallow_grave",
"id": "5234"
},
{
"name": "tiny_grow",
"id": "5109"
},
{
"name": "shadow_demon_demonic_purge",
"id": "5425"
},
{
"name": "enigma_midnight_pulse",
"id": "5148"
},
{
"name": "treant_living_armor",
"id": "5436"
},
{
"name": "spectre_desolate",
"id": "5335"
},
{
"name": "weaver_time_lapse",
"id": "5292"
},
{
"name": "ancient_apparition_chilling_touch",
"id": "5347"
},
{
"name": "brewmaster_storm_cyclone",
"id": "5409"
},
{
"name": "vengefulspirit_command_aura",
"id": "5123"
},
{
"name": "broodmother_spawn_spiderlings",
"id": "5279"
},
{
"name": "bane_fiends_grip",
"id": "5013"
},
{
"name": "gyrocopter_flak_cannon",
"id": "5363"
},
{
"name": "sniper_take_aim",
"id": "5156"
},
{
"name": "sven_great_cleave",
"id": "5095"
},
{
"name": "death_prophet_exorcism",
"id": "5093"
},
{
"name": "mirana_arrow",
"id": "5048"
},
{
"name": "bounty_hunter_jinada",
"id": "5286"
},
{
"name": "pudge_rot",
"id": "5076"
},
{
"name": "chen_test_of_faith",
"id": "5329"
},
{
"name": "jakiro_ice_path",
"id": "5298"
},
{
"name": "enraged_wildkin_tornado",
"id": "5312"
},
{
"name": "pugna_decrepify",
"id": "5187"
},
{
"name": "dark_troll_warlord_raise_dead",
"id": "5306"
},
{
"name": "drow_ranger_trueshot",
"id": "5021"
},
{
"name": "vengefulspirit_wave_of_terror",
"id": "5124"
},
{
"name": "bounty_hunter_wind_walk",
"id": "5287"
},
{
"name": "nevermore_requiem",
"id": "5064"
},
{
"name": "courier_transfer_items",
"id": "5206"
},
{
"name": "viper_poison_attack",
"id": "5218"
},
{
"name": "brewmaster_fire_permanent_immolation",
"id": "5411"
},
{
"name": "alchemist_unstable_concoction",
"id": "5366"
},
{
"name": "undying_soul_rip",
"id": "5443"
},
{
"name": "roshan_devotion",
"id": "5217"
},
{
"name": "zuus_thundergods_wrath",
"id": "5113"
},
{
"name": "broodmother_spin_web",
"id": "5280"
},
{
"name": "jakiro_dual_breath",
"id": "5297"
},
{
"name": "luna_moon_glaive",
"id": "5223"
},
{
"name": "roshan_slam",
"id": "5215"
},
{
"name": "queenofpain_sonic_wave",
"id": "5176"
},
{
"name": "sniper_assassinate",
"id": "5157"
},
{
"name": "invoker_tornado",
"id": "5382"
},
{
"name": "dark_troll_warlord_ensnare",
"id": "5305"
},
{
"name": "courier_return_stash_items",
"id": "5207"
},
{
"name": "batrider_sticky_napalm",
"id": "5320"
},
{
"name": "ancient_apparition_ice_vortex",
"id": "5346"
},
{
"name": "windrunner_shackleshot",
"id": "5130"
},
{
"name": "lion_voodoo",
"id": "5045"
},
{
"name": "undying_decay",
"id": "5442"
},
{
"name": "tinker_heat_seeking_missile",
"id": "5151"
},
{
"name": "lion_mana_drain",
"id": "5046"
},
{
"name": "lone_druid_spirit_bear",
"id": "5412"
},
{
"name": "shadow_shaman_voodoo",
"id": "5079"
},
{
"name": "brewmaster_thunder_clap",
"id": "5400"
},
{
"name": "meepo_divided_we_stand",
"id": "5433"
},
{
"name": "big_thunder_lizard_frenzy",
"id": "5333"
},
{
"name": "luna_eclipse",
"id": "5225"
},
{
"name": "sandking_sand_storm",
"id": "5103"
},
{
"name": "giant_wolf_critical_strike",
"id": "5307"
},
{
"name": "brewmaster_storm_dispel_magic",
"id": "5408"
},
{
"name": "big_thunder_lizard_slam",
"id": "5332"
},
{
"name": "forest_troll_high_priest_mana_aura",
"id": "5491"
},
{
"name": "invoker_wex",
"id": "5371"
},
{
"name": "clinkz_wind_walk",
"id": "5261"
},
{
"name": "lone_druid_true_form",
"id": "5415"
},
{
"name": "undying_tombstone_zombie_deathstrike",
"id": "5446"
},
{
"name": "queenofpain_blink",
"id": "5174"
},
{
"name": "roshan_illusion_protection",
"id": "5216"
},
{
"name": "necronomicon_archer_aoe",
"id": "5204"
},
{
"name": "witch_doctor_death_ward",
"id": "5141"
},
{
"name": "enchantress_untouchable",
"id": "5267"
},
{
"name": "night_stalker_void",
"id": "5275"
},
{
"name": "faceless_void_time_lock",
"id": "5184"
},
{
"name": "faceless_void_backtrack",
"id": "5183"
},
{
"name": "polar_furbolg_ursa_warrior_thunder_clap",
"id": "5302"
},
{
"name": "slardar_bash",
"id": "5116"
},
{
"name": "omniknight_repel",
"id": "5264"
},
{
"name": "huskar_life_break",
"id": "5274"
},
{
"name": "spirit_breaker_greater_bash",
"id": "5355"
},
{
"name": "invoker_ghost_walk",
"id": "5381"
},
{
"name": "tidehunter_gush",
"id": "5118"
},
{
"name": "tidehunter_ravage",
"id": "5121"
},
{
"name": "lycan_summon_wolves",
"id": "5395"
},
{
"name": "drow_ranger_frost_arrows",
"id": "5019"
},
{
"name": "rattletrap_power_cogs",
"id": "5238"
},
{
"name": "chen_penitence",
"id": "5328"
},
{
"name": "skeleton_king_critical_strike",
"id": "5088"
},
{
"name": "dazzle_shadow_wave",
"id": "5235"
},
{
"name": "sniper_headshot",
"id": "5155"
},
{
"name": "life_stealer_consume",
"id": "5253"
},
{
"name": "kunkka_x_marks_the_spot",
"id": "5033"
},
{
"name": "furion_teleportation",
"id": "5246"
},
{
"name": "brewmaster_drunken_brawler",
"id": "5402"
},
{
"name": "morphling_waveform",
"id": "5052"
},
{
"name": "morphling_replicate",
"id": "5057"
},
{
"name": "storm_spirit_static_remnant",
"id": "5098"
},
{
"name": "drow_ranger_marksmanship",
"id": "5022"
},
{
"name": "night_stalker_darkness",
"id": "5278"
},
{
"name": "windrunner_powershot",
"id": "5131"
},
{
"name": "venomancer_plague_ward",
"id": "5180"
},
{
"name": "invoker_sun_strike",
"id": "5386"
},
{
"name": "riki_blink_strike",
"id": "5143"
},
{
"name": "zuus_static_field",
"id": "5112"
},
{
"name": "pudge_meat_hook",
"id": "5075"
},
{
"name": "pugna_nether_ward",
"id": "5188"
},
{
"name": "treant_overgrowth",
"id": "5437"
},
{
"name": "zuus_lightning_bolt",
"id": "5111"
},
{
"name": "luna_lunar_blessing",
"id": "5224"
},
{
"name": "brewmaster_primal_split",
"id": "5403"
},
{
"name": "invoker_chaos_meteor",
"id": "5385"
},
{
"name": "ogre_magi_fireblast",
"id": "5438"
},
{
"name": "tidehunter_kraken_shell",
"id": "5119"
},
{
"name": "ursa_enrage",
"id": "5360"
},
{
"name": "lich_chain_frost",
"id": "5137"
},
{
"name": "razor_eye_of_the_storm",
"id": "5085"
},
{
"name": "ursa_fury_swipes",
"id": "5359"
},
{
"name": "juggernaut_omni_slash",
"id": "5030"
},
{
"name": "obsidian_destroyer_essence_aura",
"id": "5393"
},
{
"name": "warlock_shadow_word",
"id": "5163"
},
{
"name": "axe_berserkers_call",
"id": "5007"
},
{
"name": "dark_seer_wall_of_replica",
"id": "5258"
},
{
"name": "razor_unstable_current",
"id": "5084"
},
{
"name": "necrolyte_death_pulse",
"id": "5158"
},
{
"name": "necrolyte_reapers_scythe",
"id": "5161"
},
{
"name": "broodmother_insatiable_hunger",
"id": "5282"
},
{
"name": "templar_assassin_psi_blades",
"id": "5196"
},
{
"name": "pugna_nether_blast",
"id": "5186"
},
{
"name": "leshrac_pulse_nova",
"id": "5244"
},
{
"name": "doom_bringer_scorched_earth",
"id": "5340"
},
{
"name": "warlock_golem_permanent_immolation",
"id": "5167"
},
{
"name": "bloodseeker_thirst",
"id": "5017"
},
{
"name": "mirana_starfall",
"id": "5051"
},
{
"name": "viper_corrosive_skin",
"id": "5220"
},
{
"name": "kunkka_ghostship",
"id": "5035"
},
{
"name": "dark_seer_surge",
"id": "5257"
},
{
"name": "lone_druid_spirit_bear_return",
"id": "5418"
},
{
"name": "meepo_poof",
"id": "5431"
},
{
"name": "black_dragon_splash_attack",
"id": "5324"
},
{
"name": "rattletrap_battery_assault",
"id": "5237"
},
{
"name": "drow_ranger_wave_of_silence",
"id": "5632"
},
{
"name": "nevermore_necromastery",
"id": "5062"
},
{
"name": "jakiro_macropyre",
"id": "5300"
},
{
"name": "lone_druid_spirit_bear_entangle",
"id": "5419"
},
{
"name": "treant_natures_guise",
"id": "5434"
},
{
"name": "beastmaster_greater_boar_poison",
"id": "5352"
},
{
"name": "tinker_laser",
"id": "5150"
},
{
"name": "clinkz_death_pact",
"id": "5262"
},
{
"name": "morphling_morph",
"id": "5054"
},
{
"name": "morphling_adaptive_strike",
"id": "5053"
},
{
"name": "mirana_invis",
"id": "5049"
},
{
"name": "enigma_malefice",
"id": "5146"
},
{
"name": "skeleton_king_hellfire_blast",
"id": "5086"
},
{
"name": "silencer_global_silence",
"id": "5380"
},
{
"name": "phantom_assassin_phantom_strike",
"id": "5191"
},
{
"name": "lycan_shapeshift",
"id": "5398"
},
{
"name": "templar_assassin_refraction",
"id": "5194"
},
{
"name": "warlock_fatal_bonds",
"id": "5162"
},
{
"name": "death_prophet_carrion_swarm",
"id": "5090"
},
{
"name": "lion_finger_of_death",
"id": "5047"
},
{
"name": "ursa_earthshock",
"id": "5357"
},
{
"name": "life_stealer_open_wounds",
"id": "5251"
},
{
"name": "blue_dragonspawn_overseer_evasion",
"id": "5326"
},
{
"name": "slardar_slithereen_crush",
"id": "5115"
},
{
"name": "razor_plasma_field",
"id": "5082"
},
{
"name": "storm_spirit_electric_vortex",
"id": "5099"
},
{
"name": "spectre_dispersion",
"id": "5336"
},
{
"name": "courier_return_to_base",
"id": "5205"
},
{
"name": "sven_gods_strength",
"id": "5097"
},
{
"name": "leshrac_lightning_storm",
"id": "5243"
},
{
"name": "life_stealer_rage",
"id": "5249"
},
{
"name": "spectre_reality",
"id": "5338"
},
{
"name": "antimage_blink",
"id": "5004"
},
{
"name": "sniper_shrapnel",
"id": "5154"
},
{
"name": "rattletrap_hookshot",
"id": "5240"
},
{
"name": "invoker_cold_snap",
"id": "5376"
},
{
"name": "crystal_maiden_crystal_nova",
"id": "5126"
},
{
"name": "bloodseeker_rupture",
"id": "5018"
},
{
"name": "kunkka_tidebringer",
"id": "5032"
},
{
"name": "invoker_alacrity",
"id": "5384"
},
{
"name": "huskar_inner_vitality",
"id": "5271"
},
{
"name": "axe_counter_helix",
"id": "5009"
},
{
"name": "spectre_spectral_dagger",
"id": "5334"
},
{
"name": "furion_force_of_nature",
"id": "5247"
},
{
"name": "brewmaster_earth_hurl_boulder",
"id": "5404"
},
{
"name": "alchemist_goblins_greed",
"id": "5368"
},
{
"name": "windrunner_windrun",
"id": "5132"
},
{
"name": "kunkka_return",
"id": "5034"
},
{
"name": "backdoor_protection",
"id": "5350"
},
{
"name": "dragon_knight_dragon_blood",
"id": "5228"
},
{
"name": "vengefulspirit_magic_missile",
"id": "5122"
},
{
"name": "phantom_lancer_spirit_lance",
"id": "5065"
},
{
"name": "nevermore_shadowraze1",
"id": "5059"
},
{
"name": "courier_take_stash_items",
"id": "5208"
},
{
"name": "nevermore_shadowraze2",
"id": "5060"
},
{
"name": "nevermore_shadowraze3",
"id": "5061"
},
{
"name": "weaver_geminate_attack",
"id": "5291"
},
{
"name": "alpha_wolf_command_aura",
"id": "5309"
},
{
"name": "ancient_apparition_ice_blast",
"id": "5348"
},
{
"name": "ogre_magi_ignite",
"id": "5439"
},
{
"name": "harpy_storm_chain_lightning",
"id": "5319"
},
{
"name": "omniknight_degen_aura",
"id": "5265"
},
{
"name": "enchantress_enchant",
"id": "5268"
},
{
"name": "leshrac_split_earth",
"id": "5241"
},
{
"name": "death_prophet_witchcraft",
"id": "5092"
},
{
"name": "viper_nethertoxin",
"id": "5219"
},
{
"name": "necrolyte_sadist",
"id": "5160"
},
{
"name": "phantom_assassin_coup_de_grace",
"id": "5193"
},
{
"name": "ancient_apparition_cold_feet",
"id": "5345"
},
{
"name": "puck_dream_coil",
"id": "5073"
},
{
"name": "venomancer_poison_nova",
"id": "5181"
},
{
"name": "chaos_knight_chaos_bolt",
"id": "5426"
},
{
"name": "doom_bringer_devour",
"id": "5339"
},
{
"name": "bounty_hunter_shuriken_toss",
"id": "5285"
},
{
"name": "blue_dragonspawn_overseer_devotion_aura",
"id": "5327"
},
{
"name": "earthshaker_echo_slam",
"id": "5026"
},
{
"name": "necronomicon_warrior_sight",
"id": "5201"
},
{
"name": "huskar_berserkers_blood",
"id": "5273"
},
{
"name": "templar_assassin_psionic_trap",
"id": "5197"
},
{
"name": "night_stalker_crippling_fear",
"id": "5276"
},
{
"name": "storm_spirit_overload",
"id": "5100"
},
{
"name": "alchemist_unstable_concoction_throw",
"id": "5367"
},
{
"name": "morphling_morph_str",
"id": "5056"
},
{
"name": "doom_bringer_empty",
"id": "5343"
},
{
"name": "doom_bringer_empty",
"id": "5344"
},
{
"name": "lycan_howl",
"id": "5396"
},
{
"name": "beastmaster_hawk_invisibility",
"id": "5170"
},
{
"name": "storm_spirit_ball_lightning",
"id": "5101"
},
{
"name": "omniknight_purification",
"id": "5263"
},
{
"name": "shadow_demon_shadow_poison",
"id": "5423"
},
{
"name": "dragon_knight_elder_dragon_form",
"id": "5229"
},
{
"name": "juggernaut_blade_dance",
"id": "5027"
},
{
"name": "shadow_demon_disruption",
"id": "5421"
},
{
"name": "venomancer_venomous_gale",
"id": "5178"
},
{
"name": "gnoll_assassin_envenomed_weapon",
"id": "5296"
},
{
"name": "alpha_wolf_critical_strike",
"id": "5308"
},
{
"name": "shadow_shaman_ether_shock",
"id": "5078"
},
{
"name": "night_stalker_hunter_in_the_night",
"id": "5277"
},
{
"name": "dragon_knight_dragon_tail",
"id": "5227"
},
{
"name": "gyrocopter_call_down",
"id": "5364"
},
{
"name": "beastmaster_inner_beast",
"id": "5172"
},
{
"name": "pudge_dismember",
"id": "5077"
},
{
"name": "windrunner_focusfire",
"id": "5133"
},
{
"name": "ghost_frost_attack",
"id": "5301"
},
{
"name": "bane_brain_sap",
"id": "5011"
},
{
"name": "necrolyte_heartstopper_aura",
"id": "5159"
},
{
"name": "chaos_knight_chaos_strike",
"id": "5428"
},
{
"name": "skeleton_king_vampiric_aura",
"id": "5087"
},
{
"name": "clinkz_strafe",
"id": "5259"
},
{
"name": "life_stealer_feast",
"id": "5250"
},
{
"name": "faceless_void_chronosphere",
"id": "5185"
},
{
"name": "lion_impale",
"id": "5044"
},
{
"name": "necronomicon_archer_mana_burn",
"id": "5203"
},
{
"name": "axe_culling_blade",
"id": "5010"
},
{
"name": "huskar_burning_spear",
"id": "5272"
},
{
"name": "brewmaster_earth_pulverize",
"id": "5406"
},
{
"name": "kobold_taskmaster_speed_aura",
"id": "5293"
},
{
"name": "brewmaster_earth_spell_immunity",
"id": "5405"
},
{
"name": "necronomicon_warrior_mana_burn",
"id": "5202"
},
{
"name": "furion_sprout",
"id": "5245"
},
{
"name": "invoker_empty2",
"id": "5374"
},
{
"name": "puck_ethereal_jaunt",
"id": "5070"
},
{
"name": "invoker_empty1",
"id": "5373"
},
{
"name": "kunkka_torrent",
"id": "5031"
},
{
"name": "phantom_lancer_doppelwalk",
"id": "5066"
},
{
"name": "undying_tombstone",
"id": "5444"
},
{
"name": "bane_nightmare",
"id": "5014"
},
{
"name": "zuus_arc_lightning",
"id": "5110"
},
{
"name": "undying_tombstone_zombie_aura",
"id": "5445"
},
{
"name": "crystal_maiden_brilliance_aura",
"id": "5128"
},
{
"name": "bane_enfeeble",
"id": "5012"
},
{
"name": "satyr_soulstealer_mana_burn",
"id": "5315"
},
{
"name": "gyrocopter_rocket_barrage",
"id": "5361"
},
{
"name": "dragon_knight_frost_breath",
"id": "5232"
},
{
"name": "invoker_emp",
"id": "5383"
},
{
"name": "shadow_demon_soul_catcher",
"id": "5422"
},
{
"name": "lina_fiery_soul",
"id": "5042"
},
{
"name": "lina_dragon_slave",
"id": "5040"
},
{
"name": "sven_storm_bolt",
"id": "5094"
},
{
"name": "broodmother_poison_sting",
"id": "5284"
},
{
"name": "meepo_earthbind",
"id": "5430"
},
{
"name": "phantom_lancer_phantom_edge",
"id": "5068"
},
{
"name": "puck_phase_shift",
"id": "5072"
},
{
"name": "faceless_void_time_walk",
"id": "5182"
},
{
"name": "puck_waning_rift",
"id": "5071"
},
{
"name": "lich_frost_armor",
"id": "5135"
},
{
"name": "sandking_burrowstrike",
"id": "5102"
},
{
"name": "dark_seer_vacuum",
"id": "5255"
},
{
"name": "obsidian_destroyer_sanity_eclipse",
"id": "5394"
},
{
"name": "enigma_black_hole",
"id": "5149"
},
{
"name": "lycan_summon_wolves_critical_strike",
"id": "5399"
},
{
"name": "default_attack",
"id": "5001"
},
{
"name": "templar_assassin_trap",
"id": "5198"
},
{
"name": "neutral_spell_immunity",
"id": "5303"
},
{
"name": "nyx_assassin_impale",
"id": "5462"
},
{
"name": "nyx_assassin_mana_burn",
"id": "5463"
},
{
"name": "nyx_assassin_spiked_carapace",
"id": "5464"
},
{
"name": "nyx_assassin_vendetta",
"id": "5465"
},
{
"name": "slark_dark_pact",
"id": "5494"
},
{
"name": "slark_pounce",
"id": "5495"
},
{
"name": "slark_essence_shift",
"id": "5496"
},
{
"name": "slark_shadow_dance",
"id": "5497"
},
{
"name": "medusa_split_shot",
"id": "5504"
},
{
"name": "medusa_mystic_snake",
"id": "5505"
},
{
"name": "medusa_mana_shield",
"id": "5506"
},
{
"name": "medusa_stone_gaze",
"id": "5507"
},
{
"name": "troll_warlord_berserkers_rage",
"id": "5508"
},
{
"name": "troll_warlord_whirling_axes_ranged",
"id": "5509"
},
{
"name": "troll_warlord_whirling_axes_melee",
"id": "5510"
},
{
"name": "troll_warlord_fervor",
"id": "5511"
},
{
"name": "troll_warlord_battle_trance",
"id": "5512"
},
{
"name": "centaur_hoof_stomp",
"id": "5514"
},
{
"name": "centaur_double_edge",
"id": "5515"
},
{
"name": "centaur_return",
"id": "5516"
},
{
"name": "centaur_stampede",
"id": "5517"
},
{
"name": "magnataur_shockwave",
"id": "5518"
},
{
"name": "magnataur_empower",
"id": "5519"
},
{
"name": "magnataur_skewer",
"id": "5520"
},
{
"name": "magnataur_reverse_polarity",
"id": "5521"
},
{
"name": "shredder_whirling_death",
"id": "5524"
},
{
"name": "shredder_timber_chain",
"id": "5525"
},
{
"name": "shredder_reactive_armor",
"id": "5526"
},
{
"name": "shredder_chakram",
"id": "5527"
},
{
"name": "shredder_return_chakram",
"id": "5528"
},
{
"name": "keeper_of_the_light_illuminate",
"id": "5471"
},
{
"name": "keeper_of_the_light_mana_leak",
"id": "5472"
},
{
"name": "keeper_of_the_light_chakra_magic",
"id": "5473"
},
{
"name": "keeper_of_the_light_spirit_form",
"id": "5474"
},
{
"name": "keeper_of_the_light_recall",
"id": "5475"
},
{
"name": "keeper_of_the_light_blinding_light",
"id": "5476"
},
{
"name": "keeper_of_the_light_illuminate_end",
"id": "5477"
},
{
"name": "keeper_of_the_light_spirit_form_illuminate",
"id": "5479"
},
{
"name": "rubick_telekinesis",
"id": "5448"
},
{
"name": "rubick_fade_bolt",
"id": "5450"
},
{
"name": "rubick_null_field",
"id": "5451"
},
{
"name": "rubick_spell_steal",
"id": "5452"
},
{
"name": "disruptor_thunder_strike",
"id": "5458"
},
{
"name": "disruptor_glimpse",
"id": "5459"
},
{
"name": "disruptor_kinetic_field",
"id": "5460"
},
{
"name": "disruptor_static_storm",
"id": "5461"
},
{
"name": "naga_siren_mirror_image",
"id": "5467"
},
{
"name": "naga_siren_ensnare",
"id": "5468"
},
{
"name": "naga_siren_rip_tide",
"id": "5469"
},
{
"name": "naga_siren_song_of_the_siren",
"id": "5470"
},
{
"name": "visage_grave_chill",
"id": "5480"
},
{
"name": "visage_soul_assumption",
"id": "5481"
},
{
"name": "visage_gravekeepers_cloak",
"id": "5482"
},
{
"name": "visage_summon_familiars",
"id": "5483"
},
{
"name": "wisp_tether",
"id": "5485"
},
{
"name": "wisp_spirits",
"id": "5486"
},
{
"name": "wisp_overcharge",
"id": "5487"
},
{
"name": "wisp_relocate",
"id": "5488"
},
{
"name": "wisp_tether_break",
"id": "5489"
},
{
"name": "wisp_spirits_in",
"id": "wisp_spirits_out"
},
{
"name": "bristleback_viscous_nasal_goo",
"id": "5548"
},
{
"name": "bristleback_quill_spray",
"id": "5549"
},
{
"name": "bristleback_bristleback",
"id": "5550"
},
{
"name": "bristleback_warpath",
"id": "5551"
},
{
"name": "tusk_ice_shards",
"id": "5565"
},
{
"name": "tusk_snowball",
"id": "5566"
},
{
"name": "tusk_frozen_sigil",
"id": "5567"
},
{
"name": "tusk_walrus_punch",
"id": "5568"
},
{
"name": "skywrath_mage_arcane_bolt",
"id": "5581"
},
{
"name": "skywrath_mage_concussive_shot",
"id": "5582"
},
{
"name": "skywrath_mage_ancient_seal",
"id": "5583"
},
{
"name": "skywrath_mage_mystic_flare",
"id": "5584"
},
{
"name": "abaddon_death_coil",
"id": "5585"
},
{
"name": "abaddon_aphotic_shield",
"id": "5586"
},
{
"name": "abaddon_frostmourne",
"id": "5587"
},
{
"name": "abaddon_borrowed_time",
"id": "5588"
},
{
"name": "elder_titan_echo_stomp",
"id": "5589"
},
{
"name": "elder_titan_ancestral_spirit",
"id": "5591"
},
{
"name": "elder_titan_natural_order",
"id": "5593"
},
{
"name": "elder_titan_earth_splitter",
"id": "5594"
},
{
"name": "legion_commander_overwhelming_odds",
"id": "5595"
},
{
"name": "legion_commander_press_the_attack",
"id": "5596"
},
{
"name": "legion_commander_moment_of_courage",
"id": "5597"
},
{
"name": "legion_commander_duel",
"id": "5598"
},
{
"name": "ember_spirit_searing_chains",
"id": "5603"
},
{
"name": "ember_spirit_sleight_of_fist",
"id": "5604"
},
{
"name": "ember_spirit_flame_guard",
"id": "5605"
},
{
"name": "ember_spirit_fire_remnant",
"id": "5606"
},
{
"name": "ember_spirit_activate_fire_remnant",
"id": "5607"
},
{
"name": "earth_spirit_boulder_smash",
"id": "5608"
},
{
"name": "earth_spirit_rolling_boulder",
"id": "5609"
},
{
"name": "earth_spirit_geomagnetic_grip",
"id": "5610"
},
{
"name": "earth_spirit_stone_caller",
"id": "5611"
},
{
"name": "earth_spirit_magnetize",
"id": "5612"
},
{
"name": "abyssal_underlord_firestorm",
"id": "5613"
},
{
"name": "abyssal_underlord_pit_of_malice",
"id": "5614"
},
{
"name": "abyssal_underlord_atrophy_aura",
"id": "5615"
},
{
"name": "abyssal_underlord_dark_rift",
"id": "5616"
},
{
"name": "terrorblade_reflection",
"id": "5619"
},
{
"name": "terrorblade_conjure_image",
"id": "5620"
},
{
"name": "terrorblade_metamorphosis",
"id": "5621"
},
{
"name": "terrorblade_sunder",
"id": "5622"
},
{
"name": "phoenix_icarus_dive",
"id": "5623"
},
{
"name": "phoenix_fire_spirits",
"id": "5625"
},
{
"name": "phoenix_sun_ray",
"id": "5626"
},
{
"name": "phoenix_supernova",
"id": "5630"
}
]
}

[protected] data for Leagues/Matches

When doing match data calls for a league id or just checking live League matches, there are many protected fields, like first blood time, league id, bans, picks etc.

Is there a way to grab the details for those fields ?
Even the team names and player names shows protected

Example call:
$matches_mapper_db = new matches_mapper_web();
$matches_mapper_db->set_league_id(232);
$matches_info = $matches_mapper_db->load();

Demo of Team Details

Hi there, your code is awesome. I'm just having a little problem displaying our clan matches. I'm looking for something like http://dotabuff.com/teams/869370. I've tried every single way to get this to work. Would it be possible for your to upload a demo of this? I was able to figure our how to pull match details according to your first demo, so I'm hoping that by being able to see a demo of team details I might be able to figure it out.

Slow dota servers?

Hello,

First of all i want to thank you for this great API! There's a lot of work in it i guess.

I played around with everything a bit, but my biggest problem is, that it really takes a huge time to load for example the last 25 matches of a user. Is the dota api working properly on your webservers, or is this a known problem? (I also tried the plain dota web api, at it is really really slow...)

Best regards

How to load info about one player with one hero?!?

I would like to load all the details from the database (for example) on all the matches that the player X has played with the hero Y... so I tried this:

$accountid=XXX; // Here we must use the SteamID?
$heroid=21; // (for example windrunner)

$test = new matches_mapper_db();
$test->set_hero_id($heroid)->set_account_id($accountid);
$matches_info = $test->load();
print_r($matches_info);

the result is blank screen :(

Add UGC retriever

I would like to suggest adding a class which takes a UGC ID, such as a teams Logo ID, and retrieves the data for getting the URL.

Here is a sample request

$request = new request(
    'http://api.steampowered.com/ISteamRemoteStorage/GetUGCFileDetails/v1/',
    array('appid' => 570, 'ugcid' => $game->get('radiant_logo'))
);

$logo_data = $request->send();

if (!is_null($logo_data)) {
    $filename = $logo_data->filename; //Just the filename on the server, not used otherwise, not even in the url
    $image_url = $logo_data->url; //The url to call in your <img> tag to display it
    $image_size = $logo_data->size; //Size in bytes
}

fetching matches for account id

Edit: getting these errors when trying to save to db

[30-May-2013 22:35:33 America/Denver] PHP Warning:  It is not yet possible to assign complex types to attributes in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_web.php on line 62
[30-May-2013 22:35:33 America/Denver] PHP Warning:  array_keys() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 134
[30-May-2013 22:35:33 America/Denver] PHP Warning:  array_values() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 135
[30-May-2013 22:35:33 America/Denver] PHP Warning:  array_unshift() expects parameter 1 to be array, null given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 136
[30-May-2013 22:35:33 America/Denver] PHP Warning:  array_keys() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 134
[30-May-2013 22:35:33 America/Denver] PHP Warning:  array_values() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 135
[30-May-2013 22:35:33 America/Denver] PHP Warning:  array_unshift() expects parameter 1 to be array, null given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 136
[30-May-2013 22:35:33 America/Denver] PHP Warning:  array_keys() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 134
[30-May-2013 22:35:33 America/Denver] PHP Warning:  array_values() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 135
[30-May-2013 22:35:33 America/Denver] PHP Warning:  array_unshift() expects parameter 1 to be array, null given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 136
[30-May-2013 22:35:33 America/Denver] PHP Catchable fatal error:  Argument 2 passed to db::insert_many_pdo() must be of the type array, null given, called in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 141 and defined in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/utils/class.db.php on line 284
[30-May-2013 22:36:11 America/Denver] PHP Warning:  It is not yet possible to assign complex types to attributes in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_web.php on line 62

Issue with sql query in matches_mapper_db.php

as I was looking through the matches_mapper_db.php file I noticed why when I use set_account_id() and other functions that it wouldn't return anything. It is because it using trying to do a sql WHERE account_id on the matches table when that column doesn't exist in the matches table. instead it should query slots table to get all the match ids and then query the rest of the info from matches table.

hope this helps

GetLeagueListing: Wrong data type when field was empty

Check out current league list:

            {
                "name": "#DOTA_Item_AtoD_3",
                "leagueid": 37,
                "description": "#DOTA_Item_Desc_AtoD3",
                "tournament_url": ""
            },

Notice that tournament_url is an empty string.

My test code:

        $leagues_mapper_web = new leagues_mapper();
        $leagues = $leagues_mapper_web->load();

        var_dump($leagues);

Outputs:

  array(4) {
    ["name"]=>
    string(17) "#DOTA_Item_AtoD_3"
    ["leagueid"]=>
    string(2) "37"
    ["description"]=>
    string(21) "#DOTA_Item_Desc_AtoD3"
    ["tournament_url"]=>
    object(SimpleXMLElement)#8 (0) {
    }
  }

Notice how tournament_url is a SimpleXMLElement instead of a empty string. It is supposed to look like this:

  array(4) {
    ["name"]=>
    string(17) "#DOTA_Item_AtoD_3"
    ["leagueid"]=>
    string(2) "37"
    ["description"]=>
    string(21) "#DOTA_Item_Desc_AtoD3"
    ["tournament_url"]=>
    string(0) ""
  }

I'm new to github, not sure how to offer a branch with a fixed version.

Update GetMatchHistory limit from 25 to 100

Hey!
Not sure if this was a design choice, but I noticed that you limit the GetMatchHistory matches_requested to 25, when the limit now is 100.

Line 201 in class.matches_mapper.php:

if ($matches_requested > 0 && $matches_requested <= 25) {

Help with basics

I'm new to SQL and all this, I followed the 3 steps for install, but it didn't work. Should I put config.php into my server? What about the 3 folders "data", "images", and "include"? Thanks.

Hero guides and items

Is it possible to get suggested hero guides and items via the API ? or those submitted by other users and available aside default guide ?

Add ability to delete match from db

For match_mapper_db add method delete that takes match_id or match object and remove match data like picks/bans, slots, match info, additional units, abilities upgrade.

Fix map

Fix towers and barracks statuses parsing.
Was: TOP, MID, BOT.
Now: BOT, MID, TOP.

Lobby stats

Hi!
Very good work! Thanks a lot!
It seems that Valve still didn't add the option to parse results of Lobby games (team duels and so on). Am I right?

Add language to request

You should add the language parameter to the request class and config so that GetLeagueListing requests will return the localized league name and description instead of the localization key (eg. "The International" instead of "#DOTA_Leagues_TheInternational")

In includes/utils/class.request.php

99:        $this->_params['key'] = API_KEY;
+:        $this->_params['language'] = LANGUAGE;
100:        foreach ($this->_params as $key=>$value) {

In config.php

6:define ('ACCOUNT_ID', 1234);
+://The language to retrieve results in (see http://en.wikipedia.org/wiki/ISO_639-1 for the language codes (first two characters) and http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for the country codes (last two characters))
+:define ('LANGUAGE', 'en_us');
7:
8:error_reporting(0);

leagueid field type in db

Bug with saving and getting matches from leagues with id > 65000.
Change in table "matches" leagueid field type from tinyint to smallint.

Как получить account_id?

Как получить account_id зная только steamid?

Дело в том, чтобы отобразить с помощью функции GetMatchHistory 25 последних матчей игрока, нужен account_id. Откуда вообще взять этот account_id?

У Вас это делается через класс matches_mapper_web, сначала устанавливается account_id с помощью set_account_id, затем данные загружаются через функцию load.
Я повторюсь ещё раз - откуда взять этот account_id?

Есть вариант найти его через матч, но меня он не устраивает.

dire_team_id is wrong type in db table

The script creates the dire_team_id as a tinyint(11) but it should be int(11).

Any match data loaded with the tinyint will have a 255 value instead of the actual value.

How to? ^.^''

Tnx for your work man!

But realy i don't understand how to use... i follow all instruction, but my DB is always empty and I can get no result :(

$heroes_mapper = new heroes_mapper();
$heroes = $heroes_mapper->load();
print_r($heroes);
echo $heroes;

this works only once o.0 lol help

class.match_mapper_db.php array_keys error

I have noticed when looping through to get last 25 matches for a person that it sometimes will error out and die. I get the following error:

[09-Jun-2013 16:06:45 America/Denver] PHP Warning:  It is not yet possible to assign complex types to attributes in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_web.php on line 62
[09-Jun-2013 16:06:54 America/Denver] PHP Warning:  array_keys() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 135
[09-Jun-2013 16:06:54 America/Denver] PHP Warning:  array_values() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 136
[09-Jun-2013 16:06:54 America/Denver] PHP Warning:  array_unshift() expects parameter 1 to be array, null given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 137
[09-Jun-2013 16:06:54 America/Denver] PHP Warning:  array_keys() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 135
[09-Jun-2013 16:06:54 America/Denver] PHP Warning:  array_values() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 136
[09-Jun-2013 16:06:54 America/Denver] PHP Warning:  array_unshift() expects parameter 1 to be array, null given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 137
[09-Jun-2013 16:06:54 America/Denver] PHP Warning:  array_keys() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 135
[09-Jun-2013 16:06:54 America/Denver] PHP Warning:  array_values() expects parameter 1 to be array, object given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 136
[09-Jun-2013 16:06:54 America/Denver] PHP Warning:  array_unshift() expects parameter 1 to be array, null given in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 137
[09-Jun-2013 16:06:54 America/Denver] PHP Catchable fatal error:  Argument 2 passed to db::insert_many_pdo() must be of the type array, null given, called in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/mappers/class.match_mapper_db.php on line 142 and defined in /home3/compuuq1/public_html/dev.computerfr33k.com/dota2/includes/utils/class.db.php on line 284

right before the script dies i get this as the ability variable

SimpleXMLElement Object ( ) SimpleXMLElement Object ( ) SimpleXMLElement Object ( ) 

so for some reason it is getting an object instead of an array for the array_keys function therefore causing it to die since its not getting an array, since the $ability is not an array then the rest of the array functions also fail for the loop.

error starts at line 133 in class.match_mapper_db.php

Hope this helps

Get number of matches in match history

There should be a variable to retrieve the number of matches that exist in total from a match history query. Here is the changes that should be made

includes/mappers/class.matches_mapper.php

45: protected $_start_at_match_id;
+: /**
+: * The total number of matches available for retrieval
+: * @var int
+: */
+: protected $_total_results;
46:    /**

205:     }
+:    /**
+:    * @return int
+:    */
+:     public function get_total_matches() {
+:         return $this->_total_results;
+:     }
206:
207:     /**

includes/mappers/class.matches_mapper_web.php

49:         $matches = array();
+:       $this->_total_results = $xml->total_results;
50:         if (isset($xml->matches)) {

database

How to save game in a database and then use this data?

Towers and barracks

Create simple way for users to get a map with barracks and towers.
Class that takes match object and returns image data with map.

set_matches_requested for matches_mapper_db

using matches mapper db doesn't seem to be working for me, but when I use it for the matches_mapper_web it works. Not sure why.

$matches_mapper_db = new matches_mapper_db();
$matches_mapper_db->set_account_id($_GET['id'])->set_matches_requested(5);
$matches = $matches_mapper_db->load();

This just returns an empty array for me. but if I remove the set_matches option, it will return all the matches just fine.

Question: how to loop through entire players history?

I've got this, but once it hits the last page it for some reason doesn't reach one for matches remaining

<?php
require_once('config.php');

if(empty($_GET['id']) || !isset($_GET['id']))
    die('');

//get players full match history
// (loop through using date_min & date_max
$account_id = (int)$_GET['id'];
$last_match = 0;

$matches_mapper_web = new matches_mapper_web();
$matches_mapper_web->set_account_id($account_id);
$matches_short_info = $matches_mapper_web->load();
$i=0;
foreach($matches_short_info AS $key=>$match_short_info) {
    $match_mapper = new match_mapper_web($key);
    $match = $match_mapper->load();
    var_dump($match->get('start_time'));
    $saver = new match_mapper_db();
    $saver->save($match);
    echo '<br />' . $i . '<p>';
    $i++;
    $last_date = $match->get('start_time');
}

$matches_mapper_web = new matches_mapper_web();
$matches_mapper_web->set_account_id($account_id)->set_date_max(strtotime($last_date));
$matches_short_info = $matches_mapper_web->load();
$results_remaining = $matches_mapper_web->get_total_matches();

while($results_remaining > 1) {
    $matches_mapper_web = new matches_mapper_web();
    $matches_mapper_web->set_account_id($account_id)->set_date_max(strtotime($last_date));
    $matches_short_info = $matches_mapper_web->load();
    $results_remaining = $matches_mapper_web->get_total_matches();

    foreach($matches_short_info as $key=>$match_short_info) {
        $match_mapper = new match_mapper_web($key);
        $match = $match_mapper->load();
        var_dump($match->get('start_time'));
        $saver = new match_mapper_db();
        $saver->save($match);
        echo '<br />' . $i . '<p>';
        $i++;
        $last_date = $match->get('start_time');
    }
    file_put_contents('results.log', $last_date . '\n' . $results_remaining);
}
?>

Match mapper db not working

everytime I go and use the match_mapper_db class it doesnt work, unless im using it to save a match. So when I go to use it to load a match it gives me an error:

Notice:  Undefined offset: 11 in /usr/share/nginx/www/dota2/includes/mappers/class.match_mapper_db.php on line 75

Catchable fatal error:  Argument 1 passed to slot::set_additional_unit_items() must be of the type array, null given, called in /usr/share/nginx/www/dota2/includes/mappers/class.match_mapper_db.php on line 75 and defined in /usr/share/nginx/www/dota2/includes/models/class.slot.php on line 173

But if I use the match mapper web it works just fine.

match mapper db load function

I would suggest adding this piece of code to match_mapper_db.php at line 46 (just after the db query).

//return false if match not found in db
        if(!$match_info) {
            return false;
        }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.