Ты слушателем ловишь событие dota_player_used_ability или что ты делаешь? Откуда функция вызывается?
function main:InitGameMode()
GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_GOODGUYS, 3 )
GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_BADGUYS, 3 )
ListenToGameEvent("dota_player_killed", Dynamic_Wrap(main, "OnHeroKilled"), self)
ListenToGameEvent('dota_player_used_ability', OnUsedAbility, self)
end
function OnUsedAbility(keys)
Say(nil, "ON USED ABILITY", false)
local player = EntIndexToHScript(keys.PlayerID)
local abilityname = keys.abilityname
local player = PlayerResource:GetPlayer( keys.PlayerID ) --hscript
local hero = PlayerResource:GetSelectedHeroEntity(keys.PlayerID) --hscript
local ability_name = keys.abilityname --string
hero :RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
function OnUsedAbility(keys)
Say(nil, "ON USED ABILITY", false)
local player = EntIndexToHScript(keys.PlayerID)
player:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
[ VScript ]: EntIndexToHScript parameter 1: expected integer but got void.
[ Developer ]: ...me\dota_addons\zipn\scripts\vscripts\addon_game_mode.lua:88: Parameter type mismatch
[ Developer ]: stack traceback:
[ Developer ]: [C]: in function 'EntIndexToHScript'
[ Developer ]: ...me\dota_addons\zipn\scripts\vscripts\addon_game_mode.lua:88: in function <...me\dota_addons\zipn\scripts\vscripts\addon_game_mode.lua:86>
[ W VScript ]: Script Runtime Error: ...me\dota_addons\zipn\scripts\vscripts\addon_game_mode.lua:88: Parameter type mismatch
[ W VScript ]: stack traceback:
[ W VScript ]: [C]: in function 'EntIndexToHScript'
[ W VScript ]: ...me\dota_addons\zipn\scripts\vscripts\addon_game_mode.lua:88: in function <...me\dota_addons\zipn\scripts\vscripts\addon_game_mode.lua:86>
function OnUsedAbility(keys)
Say(nil, "ON USED ABILITY", false)
local player = EntIndexToHScript(keys.PlayerID)
player:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
По лбу хошь? Снимать с игрока модификатор оО
function OnUsedAbility(keys)
Say(nil, "ON USED ABILITY", false)
local hero = keys.caster
hero:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
Не понял, а в чем проблема? player - эт просто переменная, там внутри лежит его персонаж. Если нет то да, надо перса достать.
UZ, поставь номера строчек моему коду, чтобы я понял, куда именно жалуется.
local player = EntIndexToHScript(keys.PlayerID)
function OnUsedAbility(keys)
function OnUsedAbility(keys)
Say(nil, "ON USED ABILITY", false)
local player = EntIndexToHScript(keys.PlayerID)
local hero = player:GetAssignedHero()
hero:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
function OnUsedAbility(keys)
Say(nil, "ON USED ABILITY", false)
local player = EntIndexToHScript(keys.PlayerID)
local hero = player:GetAssignedHero()
hero:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
function OnUsedAbility(keys)
Say(nil, "ON USED ABILITY", false)
local player = PlayerResource:GetPlayer( keys.PlayerID ) -- получиим обьект игрока(ИГРОК != ГЕРОЙ)
local ability_name = keys.abilityname -- тип string
if not player or not IsValidEntity(player) or not ability_name then return end -- строка которая при ложном вызове этой функции без игрока/абилки выйдет и не крашнет мод к хренам.
local hero = player:GetAssignedHero() -- получаем героя выбраного для игрока
if not hero then return end -- та же фигня, если у игрока не выбран герой, а он юзнет абилку допустим крипом, то гейммод без нее крашнется.
hero:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
Никто не кастует. У меня в карте 2 крипа с пассивкой и равшан.UZzip, сейчас со свежей головой я могу задать следующий вопрос: у тебя никакой нпс, не являющися гером, случаем, не кастует с лету абилки?? Я про то, что эта функция у тебя железно на игроке только вызывается?
проинструктируй, а то вроде вариантов нету других.Боже, какие фильтры, ордеры, а не проще в каст фильтре абилки проверять модификаторы таргета??????