Zh/Dota 2 Workshop Tools/Scripting/Built-In Engine Events

查阅 https://github.com/SteamDatabase/GameTracking-Dota2/blob/master/game/dota/pak01_dir/resource/game.gameevents 和 https://github.com/SteamDatabase/GameTracking-Dota2/blob/master/game/core/pak01_dir/resource/core.gameevents 来获取最新内容。
== 游戏事件格式 ==
*事件名称中不能有空格,最大长度32
*所有字符都是大小写敏感的
*总游戏事件字节长度必须 < 1024
*有效的数据键值类型包括:
:*none : 未联网的值
:*string : 以0结尾的字符串
:*bool : 无符号整数, 1 bit
:*byte : 无符号整数, 8 bit
:*short : 符号整数, 16 bit
:*long : 符号整数, 32 bit
:*float : 浮点数, 32 bit
:*uint64 : 无符号整数 64 bit
:*local : 任意数据, 不联网到客户端
*下述的键值名是保留字
:*local : 如果设置为1, 事件不与客户端联网
:*unreliable : 联网, 但不可靠
:*suppress : 永不触发
:*time : 发送服务器时间
:*eventid : 保持事件ID
== 核心队伍事件 == 
*team_info: 队伍信息
:*teamid ( byte ): 队伍id
:*teamname ( string ): 队伍名称 (例如 Team Blue)
*team_score: 队伍得分改变
:*teamid ( byte ): 队伍id
:*score ( short ): 总计队伍得分
*teamplay_broadcast_audio: 对队伍成员发出声音信号
:*team ( byte ): 队伍id
:*sound ( string ): 要发射的声音名称
== 玩家事件 ==
*player_team: 玩家改变队伍
:*userid ( short ): 服务器上的用户id
:*team ( byte ): 队伍id
:*oldteam( byte ): 旧队伍id
:*disconnect( bool ): 由于玩家失去连接改变队伍
:*autoteam( bool ): 玩家被自动分配队伍则为true
:*silent( bool ): 不输出加入队伍信息则为true
*player_class: 玩家改变职业(英雄)
:*userid ( short ): 服务器上的用户id
:*class ( string ): 新的玩家职业 / 模型
*player_death [broken]: 玩家死亡[损坏]
:*userid ( short ): 死亡的用户ID			
:*attacker ( short	 ): 凶手ID
*player_hurt [broken]:玩家受伤害[损坏]
:*userid ( short ): 受伤的玩家索引号			
:*attacker ( short	 ): 攻击者索引号
:*health ( byte ): 剩余生命值
*player_chat [broken]: 公频玩家聊天[损坏]
:*teamonly ( bool ): 队伍聊天则为true
:*userid( short ): 聊天玩家 
:*text( string ): 聊天文本
*player_score: 玩家得分改变
:*userid ( short ): 服务器上的用户id
:*kills ( short ): 击杀数
:*deaths ( short ): 死亡数
:*score ( short ): 总游戏得分
*player_spawn: 玩家在游戏中出生
:*userid ( short ): 服务器上的用户id
*player_shoot: 玩家射出武器
:*userid ( short ): 服务器上的用户id
:*weapon ( byte ): 武器ID
:*mode ( byte ): 武器模式
*player_use: 玩家使用实体情况
:*userid ( short ): 服务器上的用户id
:*entity ( short ): 玩家使用的实体
*player_changename: 玩家改变名称
:*userid ( short ): 服务器上的用户id
:*oldname ( string ): 玩家旧(当前)名称
:*newname ( string ): 玩家新名称
*player_hintmessage: 玩家提示信息
:*hintmessage ( string ): 提示本地化字符串
*player_reconnected : 玩家重连进游戏
:*event(local): 包含相关信息的数据
== 游戏事件 ==
*game_init: 游戏开始时发送
	
*game_newmap: 地图完全载入时发送
:*mapname ( string ): 地图名称
*game_start: 新游戏开始
:*roundslimit ( long ): 最大回合数
:*timelimit ( long ): 回合时间限制
:*fraglimit ( long ): frag时间限制
:*objective ( string ): 回合物件
*game_end: 游戏结束
:*winner ( byte ): 获胜队伍/用户id
*round_start
:*timelimit ( long ): 回合时间限制，按秒
:*fraglimit ( long ): frag时间限制，按秒
:*objective ( string ): 回合物件
*round_end
:*winner ( byte ): 获胜队伍/用户id
:*reason ( byte ): 获胜理由
:*message ( string ): 结束文字信息 
*round_start_pre_entity: 回合开始预实体
*teamplay_round_start: 回合重新开始
:*full_reset ( bool ): 是否地图完全重置
*hostname_changed: 主机名称改变
:*hostname ( string ): 主机名称
*difficulty_changed: 难度改变
:*newDifficulty ( short ): 新难度
:*oldDifficulty ( short ): 旧难度
:*strDifficulty( string ): 新难度，字符串
*finale_start: 终局开始
:*rushes ( short )
*game_message: 游戏逻辑发送给每人的信息
:*target ( byte ): 0 = console, 1 = HUD
:*text ( string ): 信息文本
*break_breakable: 破坏可破坏物(breakable)
:*entindex ( long ): 实体id
:*userid ( short ): 用户id
:*material ( byte ): BREAK_GLASS, BREAK_WOOD, etc
*break_prop: 破坏支柱(prop)
:*entindex ( long ): 实体id
:*userid ( short ): 用户id
*npc_spawned: NPC产生
:*entindex ( long ): 实体id
*npc_replaced: NPC替换
:*old_entindex ( long )：旧实体id
:*new_entindex ( long ): 新实体id
*entity_killed: 实体被杀死
:*entindex_killed( long ): 被杀实体id
:*entindex_attacker ( long ): 攻击者实体id
:*entindex_inflictor ( long ): 凶手实体id
:*damagebits ( long ): 伤害值
*entity_hurt: 实体受伤
:*entindex_killed( long ): 实体id
:*entindex_attacker ( long ): 攻击者id
:*entindex_inflictor ( long ): 凶手id
:*damagebits ( long ): 伤害值
*bonus_updated: 奖励更新
:*numadvanced ( short ): 高级数量
:*numbronze ( short ): 青铜级数量
:*numsilver ( short ): 白银级数量
:*numgold ( short ): 黄金级数量
*player_stats_updated: 玩家状态更新
:*forceupload ( bool ): 强制上传
*achievement_event: 成就事件
:*achievement_name ( string ): 非本地化的成就名称
:*cur_val ( short ): 朝向完成成就的步数
:*max_val ( short ): 成就的总步数
*achievement_earned: 成就完成
:*player ( byte ): 玩家实体id
:*achievement ( short ): 成就ID
): 用于写入成就失败时的提示信息
*achievement_write_failed: 成就写入失败
*physgun_pickup: V蠢你根本是把HL里东西忘了删吧！！！！！
:*entindex ( long ): entity picked up
*flare_ignite_npc: 同上
:*entindex ( long ): entity ignited
*helicopter_grenade_punt_miss: V社你快够！
*user_data_downloaded: 当成就/状态从Steam或者XBox Live下载时发送
*ragdoll_dissolved: 骨骼贴图(Ragdoll)消散
:*entindex ( long ): 实体id
*gameinstructor_draw
*gameinstructor_nodraw
*map_transition:地图过渡
*instructor_server_hint_create : 创建一个提示，完全使用服务器/地图提供的数据
:*hint_name (	string ): 提示名称，用于随后引用(例如用指令清除提示，而不是等待其过期消失)
:*hint_replace_key ( string ): 输入名称，同类信息将取代彼此
:*hint_target ( long ): 显示提示的实体id
:*hint_activator_userid ( short ): 激活者用户id
:*hint_timeout ( short	 ): 消失前所需秒数, 0 = 永不
:*hint_icon_onscreen ( string ): 提示在画面内时的提示图标(例如 icon_alert_red)
:*hint_icon_offscreen ( string ): 提示在画面外时的提示图标(例如 icon_alert)
:*hint_caption ( string ): 提示文本(例如 #ThisIsDangerous)
:*hint_activator_caption ( string ): 只有激活者能看见的提示文本 (例如 #YouPushedItGood)
:*hint_color ( string ): 提示颜色，使用(r,g,b(数值范围 0-255))格式
:*hint_icon_offset ( float ): 相对实体原点的Z轴位移
:*hint_range ( float ): 提示剔除范围
:*hint_flags ( long ): 提示标签(flags)
:*hint_binding ( string ): 当use_binding为屏幕内图标时，绑定使用
:*hint_allow_nodraw_target ( bool ): 设置为false时, 当目标实体不可见时提示将消失
:*hint_nooffscreen ( bool ): 设置为true时, 提示超出玩家视野时不会显示
:*hint_forcecaption ( bool ): 设置为true时, 提示即使被阻挡也会显示文本
:*hint_local_player_only ( bool ): 设置为true时, 只有本地玩家会看到提示
*instructor_server_hint_stop :摧毁一个服务器/地图产生的提示
:*hint_name (	string ): 提示停止，将会停止全部此名称的提示
*chat_new_message: 包含新消息的指定频道
:*channel ( byte ): 频道
*chat_members_changed: 玩家离开或加入的指定频道
:*channel ( byte ): 频道
*game_rules_state_change: 游戏规则改变状态
:*
== 经济事件 == 
*inventory_updated
:*itemdef ( short )
*cart_updated
*store_pricesheet_updated
*gc_connected
*item_schema_initialized
*drop_rate_modified
*event_ticket_modified
== Mod事件 ==
*modifier_event
:*eventname ( string )
:*caster ( short )
:*ability ( short )
*dota_player_kill
:*victim_userid ( short )
:*killer1_userid ( short )
:*killer2_userid ( short )
:*killer3_userid ( short )
:*killer4_userid ( short )
:*killer5_userid ( short )
:*bounty ( short )
:*neutral ( short )
:*greevil ( short )
*dota_player_deny
:*killer_userid ( short )
:*victim_userid ( short )
*dota_barracks_kill
:*barracks_id ( short )
*dota_tower_kill
:*killer_userid ( short )
:*teamnumber ( short )
:*gold ( short )
*dota_roshan_kill
:*teamnumber ( short )
:*gold ( short )
*dota_courier_lost
:*teamnumber ( short )
*dota_courier_respawned
:*teamnumber ( short )
*dota_glyph_used
:*teamnumber ( short )
*dota_super_creeps
:*teamnumber ( short )
*dota_item_purchased( edit: not dota_item_purchase )
:*userid ( short )
:*itemid ( short )
*dota_item_gifted
:*userid ( short )
:*itemid ( short )
:*sourceid ( short )
*dota_rune_pickup
:*userid ( short )
:*type ( short )
:*rune ( short )
*dota_rune_spotted
:*userid ( short )
:*rune ( short )
*dota_item_spotted
:*userid ( short )
:*itemid ( short )
*dota_no_battle_points
:*userid ( short )
:*reason ( short )
*dota_chat_informational
:*userid ( short )
:*type ( short )
*dota_action_item
:*reason ( short )
:*itemdef ( short )
:*message ( short )
*dota_chat_ban_notification
:*userid( short )
*dota_chat_event
:*userid ( short )
:*gold ( short )
:*message ( short )
*dota_chat_timed_reward
:*userid ( short )
:*itmedef ( short )
:*message ( short )
*dota_pause_event
:*userid ( short )
:*value ( short )
:*message ( short )
*dota_chat_kill_streak
:*gold ( short )
:*killer_id ( short )
:*killer_streak ( short )
:*killer_multikill ( short )
:*victim_id ( short )
:*victim_streak ( short )
*dota_chat_first_blood
:*gold ( short )
:*killer_id ( short )
:*victim_id ( short )
*dota_player_update_hero_selection
:*tabcycle ( bool )
*dota_player_update_selected_unit
*dota_player_update_query_unit
*dota_player_update_killcam_unit
*dota_player_take_tower_damage
:*PlayerID ( short )
:*damage ( short )
*dota_hud_error_message
:*reason ( byte )
:*message ( string )
*dota_action_success
*dota_starting_position_changed
*dota_money_changed
*dota_enemy_money_changed
*dota_portrait_unit_stats_changed
*dota_portrait_unit_modifiers_changed
*dota_force_portrait_update
*dota_inventory_changed
*dota_item_picked_up
:*itemname ( string )
:*PlayerID ( short )
:*ItemEntityIndex( short )
:*HeroEntityIndex( short )
*dota_inventory_item_changed
:*entityIndex ( short )
*dota_ability_changed
*dota_portrait_ability_layout_changed
*dota_inventory_item_added
:*itemname ( string )
*dota_inventory_changed_query_unit
*dota_link_clicked
:*link ( string )
:*nav ( bool ): internal to item panel - preserve the nav stack
:*nav_back ( bool ): internal to item panel - preserve the nav stack
:*recipe ( short )
:*shop ( short ): show the item in a particular shop
*dota_set_quick_buy
:*item ( string )
:*recipe ( byte )
:*toggle ( bool )
*dota_quick_buy_changed
:*item ( string )
:*recipe ( byte )
*dota_player_shop_changed
:*prevshopmask ( byte )
:*shopmask ( byte )
*dota_player_show_killcam
:*nodes ( byte )
:*player ( short )
*dota_player_show_minikillcam
:*nodes ( byte )
:*player ( short )
*gc_user_session_created
*team_data_updated
*guild_data_updated
*guild_open_parties_updated
*fantasy_updated
*fantasy_league_changed
*fantasy_score_info_changed
*player_info_updated
*game_rules_state_change
*match_history_updated
:*SteamID ( uint64 )
*match_details_updated
:*matchID ( uint64 )
:*result ( byte )
*live_games_updated
*recent_matches_updated
:*Page ( short )
*news_updated
*persona_updated
:*SteamID ( uint64 )
*tournament_state_updated
*party_updated
*lobby_updated
*dashboard_caches_cleared
*last_hit
:*PlayerID ( short )'''
:*EntKilled ( short )
:*FirstBlood ( bool )
:*HeroKill ( bool )
:*TowerKill ( bool )
*player_completed_game
:*PlayerID ( short )
:*Winner ( byte )
*player_reconnected
:*PlayerID ( short )
*nommed_tree
:*PlayerID ( short )
*dota_rune_activated_server
:*PlayerID ( short )
:*rune ( short )
*dota_player_gained_level
:*player ( short )
:*level ( short )
*dota_player_pick_hero
:*player ( short )
:*heroindex ( short )
:*hero ( string )
*dota_player_learned_ability
:*player ( short )
:*abilityname ( string )
*dota_player_used_ability
:*PlayerID ( short )
:*abilityname ( string )
*dota_non_player_used_ability
:*abilityname ( string )
*dota_ability_channel_finished
:*abilityname ( string )
:*interrupted ( bool )
*dota_holdout_revive_complete
:*caster( short )
:*target( short )
*dota_player_killed
:*PlayerID ( short )
:*HeroKill ( bool )
:*TowerKill ( bool )
*bindpanel_open
*bindpanel_close
*keybind_changed
*dota_item_drag_begin
*dota_item_drag_end
*dota_shop_item_drag_begin
*dota_shop_item_drag_end
*dota_item_purchased
:*PlayerID ( short )
:*itemname ( string )
:*itemcost ( short )
*dota_item_used
:*PlayerID ( short )
:*itemname ( string )
*dota_item_auto_purchase
:*item_id ( short )
*dota_unit_event
:*victim ( short )
:*attacker ( short )
:*basepriority ( short )
:*priority ( short )
:*eventtype ( short ): EDOTAHeroChaseEventType
*dota_quest_started
:*questIndex ( long ): entity index
*dota_quest_completed
:*questIndex ( long ): entity index
*gameui_activated
*gameui_hidden
*player_fullyjoined
:*userid ( short ): user ID on server
:*name ( string ): player name
*dota_spectate_hero
:*entindex ( byte )
*dota_match_done
:*winningteam ( byte ): The ID of the winning team
*dota_match_done_client
*set_instructor_group_enabled
:*group ( string )
:*enabled ( short )
*joined_chat_channel
:*channelName ( string )
*left_chat_channel
:*channelName ( string )
*gc_chat_channel_list_updated
*today_messages_updated
:*num_messages ( short )
*file_downloaded
:*success ( bool )
:*local_filename ( string )
:*remote_url ( string )
*player_report_counts_updated
:*positive_remaining ( byte )
:*negative_remaining ( byte )
:*positive_total ( short )
:*negative_total ( short )
*scaleform_file_download_complete
:*success ( bool )
:*local_filename ( string )
:*remote_url ( string )
*item_purchased
:*itemid ( short )
*gc_mismatched_version
*demo_skip
:*local (1)
:*playback_tick ( long ): current playback tick
:*skipto_tick ( long ): tick we're going to
:*user_message_list ( local ): CSVCMsgList_UserMessages
:*dota_hero_chase_list ( local ): CSVCMsgList_GameEvents
*demo_start
:*local (1)
:*dota_combatlog_list ( local ): CSVCMsgList_GameEvents that are combat log events
:*dota_hero_chase_list ( local ): CSVCMsgList_GameEvents
:*dota_pick_hero_list ( local ): CSVCMsgList_GameEvents
*demo_stop
*map_shutdown
*dota_workshop_fileselected
:*filename ( string )
*dota_workshop_filecanceled
*rich_presence_updated
*dota_hero_random
:*userid ( short )
:*heroid ( short )
*dota_rd_chat_turn
:*userid ( short )
*dota_favorite_heroes_updated
*profile_closed
*item_preview_closed
*dashboard_switched_section
:*section ( short )
*dota_tournament_item_event
:*winner_count ( short )
:*event_type ( short )
*dota_hero_swap
:*playerid1 ( byte )
:*playerid2 ( byte )
*dota_reset_suggested_items : reset the purchased / checked off state of suggested items in the store
*halloween_high_score_received
:*round ( short )
*halloween_phase_end
:*phase ( byte )
:*team ( byte )
*halloween_high_score_request_failed
:*round ( short )
*dota_hud_skin_changed
:*skin ( string )
:*style ( byte )
*dota_inventory_player_got_item
:*itemname ( string )
*player_is_experienced
*player_is_notexperienced
*dota_tutorial_lesson_start
*map_location_updated
*richpresence_custom_updated
*game_end_visible
*antiaddiction_update
*highlight_hud_element
:*elementname ( string )
:*duration ( float )
*hide_highlight_hud_element
*intro_video_finished
*matchmaking_status_visibility_changed
*practice_lobby_visibility_changed
*dota_courier_transfer_item
*full_ui_unlocked
*client_connectionless_packet
:*local (1
:*buffer( (local
:*buffersize( long )
:*address( string )
*hero_selector_preview_set
:*setindex( short )
*antiaddiction_toast
:*message ( string )
:*duration ( float )
*hero_picker_shown
*hero_picker_hidden
*dota_local_quickbuy_changed
*show_center_message
:*message ( string )
:*duration ( float )
:*clear_message_queue ( bool )
*hud_flip_changed
:*flipped ( bool )
*frosty_points_updated
*defeated
:*entindex ( short )
*reset_defeated
*booster_state_updated
*event_points_updated
:*event_id ( short )
:*points ( short )
:*premium_points ( short )
*local_player_event_points
:*points ( short )
:*conversion_rate ( short )
*custom_game_difficulty
:*difficulty ( byte )
*tree_cut
:*tree_x ( float )
:*tree_y ( float )
*ugc_details_arrived
:*published_file_id ( uint64 )
*ugc_subscribed
:*published_file_id ( uint64 )
*ugc_unsubscribed
:*published_file_id ( uint64 )
*prizepool_received
:*success ( bool )
:*prizepool ( uint64 )
:*leagueid ( uint64 )
*microtransaction_success
:*txnid ( uint64 )
*dota_rubick_ability_steal
:*abilityIndex ( short )
:*abilityLevel ( byte )
*compendium_event_actions_loaded
:*account_id ( uint64 )
:*league_id ( uint64 )
:*local_test( bool )
:*original_points ( uint64 )
*compendium_selections_loaded
:*account_id ( uint64 )
:*league_id ( uint64 )
:*local_test( bool )
*compendium_set_selection_failed
:*account_id ( uint64 )
:*league_id ( uint64 )
:*local_test( bool )
*community_cached_names_updated
Category:Dota 2 Workshop Tools