"Слушатель это как смотритель маяка , который следит за всем , что происходит в бушующем море ..."
© Маяковский
Слушатели это обработчики событий.
Эти самые обработчики прислушиваются к какому-то определенному событию , и когда событие происходит , то выполняется функция , которую вы задали в слушателе.
Функция отвечающая за инициализацию слушателя - ListenToGameEvent(string1, handle1, handle2)
string1 - название события
handle1 - вызываемая функция
handle2 - класс в котором вызывается функция
Большинство нужных слушателей вы можете найти в barebones.lua , если он у вас подключен.
Весь список названий для событий слушателей находится тут
Приведу пример слушателей для двух событий.
1)Когда игра начнется ( 0:00 на таймере ) , то выведется сообщение в чат "Внимание игра началась !!! ".
2)Когда юнит умирает , то на его месте появляется треант ( аналог способности ульта Фуриона с Аганимом ).
Поздравляю ,теперь ты прокачан 8)
© Маяковский
Слушатели это обработчики событий.
Эти самые обработчики прислушиваются к какому-то определенному событию , и когда событие происходит , то выполняется функция , которую вы задали в слушателе.
Функция отвечающая за инициализацию слушателя - ListenToGameEvent(string1, handle1, handle2)
string1 - название события
handle1 - вызываемая функция
handle2 - класс в котором вызывается функция
Большинство нужных слушателей вы можете найти в barebones.lua , если он у вас подключен.
Весь список названий для событий слушателей находится тут
Код:
ListenToGameEvent('dota_player_gained_level', Dynamic_Wrap(GameMode, 'OnPlayerLevelUp'), GameMode) // Получение уровня
ListenToGameEvent('dota_ability_channel_finished', Dynamic_Wrap(GameMode, 'OnAbilityChannelFinished'), GameMode) // Конец каста способности
ListenToGameEvent('dota_player_learned_ability', Dynamic_Wrap(GameMode, 'OnPlayerLearnedAbility'), GameMode) // Изучение способности
ListenToGameEvent('entity_killed', Dynamic_Wrap(GameMode, 'OnEntityKilled'), GameMode) // Убийства любого юнита
ListenToGameEvent('player_connect_full', Dynamic_Wrap(GameMode, 'OnConnectFull'), GameMode) // Подключение игрока
ListenToGameEvent('player_disconnect', Dynamic_Wrap(GameMode, 'OnDisconnect'), GameMode) // Отключении игрока
ListenToGameEvent('dota_item_purchased', Dynamic_Wrap(GameMode, 'OnItemPurchased'), GameMode) // Покупка предмета
ListenToGameEvent('dota_item_picked_up', Dynamic_Wrap(GameMode, 'OnItemPickedUp'), GameMode) // Взять предмет
ListenToGameEvent('last_hit', Dynamic_Wrap(GameMode, 'OnLastHit'), GameMode) // Добивание юнита
ListenToGameEvent('dota_non_player_used_ability', Dynamic_Wrap(GameMode, 'OnNonPlayerUsedAbility'), GameMode) // Не игрок использовал способность
ListenToGameEvent('player_changename', Dynamic_Wrap(GameMode, 'OnPlayerChangedName'), GameMode) // Игрок сменил имя
ListenToGameEvent('dota_rune_activated_server', Dynamic_Wrap(GameMode, 'OnRuneActivated'), GameMode) // Взять руну
ListenToGameEvent('dota_player_take_tower_damage', Dynamic_Wrap(GameMode, 'OnPlayerTakeTowerDamage'), GameMode) // Получение урона от башни
ListenToGameEvent('tree_cut', Dynamic_Wrap(GameMode, 'OnTreeCut'), GameMode) // Дерево срублено
ListenToGameEvent('entity_hurt', Dynamic_Wrap(GameMode, 'OnEntityHurt'), GameMode) // Получение урона
ListenToGameEvent('player_connect', Dynamic_Wrap(GameMode, 'PlayerConnect'), GameMode) // Подключение
ListenToGameEvent('dota_player_used_ability', Dynamic_Wrap(GameMode, 'OnAbilityUsed'), GameMode) // Использлвание способности
ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(GameMode, 'OnGameRulesStateChange'), GameMode) // Стадия игры
ListenToGameEvent('npc_spawned', Dynamic_Wrap(GameMode, 'OnNPCSpawned'), GameMode) // Спаун любого юнита
ListenToGameEvent('dota_player_pick_hero', Dynamic_Wrap(GameMode, 'OnPlayerPickHero'), GameMode) // Герой был пикнут
ListenToGameEvent('dota_team_kill_credit', Dynamic_Wrap(GameMode, 'OnTeamKillCredit'), GameMode) // Изменение счетчика убийств ?
ListenToGameEvent("player_reconnected", Dynamic_Wrap(GameMode, 'OnPlayerReconnect'), GameMode) // Переподключение
1)Когда игра начнется ( 0:00 на таймере ) , то выведется сообщение в чат "Внимание игра началась !!! ".
2)Когда юнит умирает , то на его месте появляется треант ( аналог способности ульта Фуриона с Аганимом ).
Код:
ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(GameMode, 'OnGameRulesStateChange'), GameMode)
ListenToGameEvent('entity_killed', Dynamic_Wrap(GameMode, 'OnEntityKilled'), GameMode)
Код:
function GameMode:OnGameRulesStateChange(keys)
local newState = GameRules:State_Get()
if newState == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
Say(nil,"Внимание игра началась !!!", false)
end
end
Код:
function GameMode:OnEntityKilled( keys )
local killedUnit = EntIndexToHScript( keys.entindex_killed )
local team= killedUnit:GetTeam()
local unit_position = killedUnit:GetAbsOrigin()
if killedUnit:IsRealHero() then local unit = CreateUnitByName("npc_dota_furion_treant_large", unit_position + RandomVector( RandomFloat( 0, 50)), true, nil, nil, team) end
else local unit = CreateUnitByName("npc_dota_furion_treant", unit_position + RandomVector( RandomFloat( 0, 50)), true, nil, nil, team) end
end
Последнее редактирование: