Как при получении одного бафа развеять другой?
if caster:HasModifier("zerno") then
caster:RemoveModifierByName("zerno")
caster:AddNewModifier(ability, caster, "misha_mavashi", {})
function чё тут написать чтобы всё работало? типа герой применил способность такую то:
if caster:HasModifier("modifier_templar_assassin_refraction_damage") then
caster:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
что дальше?dota_player_used_ability
PlayerID ( short )
abilityname ( string )
['dota_player_used_ability'] = function( params, team )
local hero = PlayerResource:GetSelectedHeroEntity( params.PlayerID )
if InVision( hero, team ) then
return true
end
return false
end
ListenToGameEvent(' dota_player_used_ability', abilityname)
if caster:HasModifier("modifier_templar_assassin_refraction_damage") then
caster:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
ListenToGameEvent(' dota_player_used_ability', abilityname)
if caster:HasModifier("modifier_templar_assassin_refraction_damage") then
caster:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
ListenToGameEvent('dota_player_used_ability', OnUsedAbility, self)
function OnUsedAbility(keys)
local player = PlayerResource:GetPlayer( keys.PlayerID ) --hscript
local hero = PlayerResource:GetSelectedHeroEntity(keys.PlayerID) --hscript
local ability_name = keys.abilityname --string
--[[
тут будет все что тебе надо после того как абилка скастовалась. Узнать цель нельзя, этот слушатель возвращает момент КОГДА ИГРОК(PLAYER) скастовал скилл.
если хочешь узнать куда кастуется, кем, на что и т.д используй order(фильтр)
]]
end
local GameMode = GameRules:GetGameModeEntity()
GameMode:SetExecuteOrderFilter(OrderFilter, self)
function AngelArena:OrderFilter(keys)
local order_type = keys.order_type
if order_type == DOTA_UNIT_ORDER_CAST_TARGET then
--вызовется ПЕРЕД кастом на какую либо цель
for key, value in pairs(keys) do
print(key,value)
end
end
return true -- если разрешить выполнение ордера то вернуть true, иначе вернуть false
end
DOTA_UNIT_ORDER_NONE
DOTA_UNIT_ORDER_MOVE_TO_POSITION
DOTA_UNIT_ORDER_MOVE_TO_TARGET
DOTA_UNIT_ORDER_ATTACK_MOVE
DOTA_UNIT_ORDER_ATTACK_TARGET
DOTA_UNIT_ORDER_CAST_POSITION
DOTA_UNIT_ORDER_CAST_TARGET
DOTA_UNIT_ORDER_CAST_TARGET_TREE
DOTA_UNIT_ORDER_CAST_NO_TARGET
DOTA_UNIT_ORDER_CAST_TOGGLE
DOTA_UNIT_ORDER_HOLD_POSITION
DOTA_UNIT_ORDER_TRAIN_ABILITY
DOTA_UNIT_ORDER_DROP_ITEM
DOTA_UNIT_ORDER_GIVE_ITEM
DOTA_UNIT_ORDER_PICKUP_ITEM
DOTA_UNIT_ORDER_PICKUP_RUNE
DOTA_UNIT_ORDER_PURCHASE_ITEM
DOTA_UNIT_ORDER_SELL_ITEM
DOTA_UNIT_ORDER_DISASSEMBLE_ITEM
DOTA_UNIT_ORDER_MOVE_ITEM
DOTA_UNIT_ORDER_CAST_TOGGLE_AUTO
DOTA_UNIT_ORDER_STOP
DOTA_UNIT_ORDER_TAUNT
DOTA_UNIT_ORDER_BUYBACK
DOTA_UNIT_ORDER_GLYPH
DOTA_UNIT_ORDER_EJECT_ITEM_FROM_STASH
DOTA_UNIT_ORDER_CAST_RUNE
function OnUsedAbility(keys)
local player = PlayerResource:GetPlayer( keys.PlayerID ) --hscript
local hero = PlayerResource:GetSelectedHeroEntity(keys.PlayerID) --hscript
local ability_name = keys.abilityname --string
if caster:HasModifier("modifier_templar_assassin_refraction_damage") then
caster:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
end
function OnUsedAbility(keys)
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)
local player = PlayerResource:GetPlayer( keys.PlayerID ) --hscript
local hero = PlayerResource:GetSelectedHeroEntity(keys.PlayerID) --hscript
local ability_name = keys.abilityname --string
if caster:HasModifier("modifier_templar_assassin_refraction_damage") then
caster:RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
end
function OnUsedAbility(keys)
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)
local player = PlayerResource:GetPlayer( keys.PlayerID ) --hscript
local hero = PlayerResource:GetSelectedHeroEntity(keys.PlayerID) --hscript
local ability_name = keys.abilityname --string
print("ON USED ABILITY, HERONAME:", hero:GetUnitName, " playerid:", keys.PlayerID, " ability name = ", ability_name)
hero :RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
[ W Entity System ]: Entity I/O attempted to invoke unknown private script function "QuestKill" on entity "dota_base_game_mode"!
function OnUsedAbility(keys)
Say(nil, "ON USED ABILITY", false)
hero :RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
ибо RemoveModifierByName не жалуется на отсутствие модификатора, он его снимет если он есть, ежели его нет то он ничего не сделает.
attempt to index global 'hero' (a nil value)
function OnUsedAbility(keys)
Say(nil, "ON USED ABILITY", false)
hero :RemoveModifierByName("modifier_templar_assassin_refraction_damage")
end
function OnUsedAbility(keys)
Say(nil, "ON USED ABILITY", false)
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
[ VScript ]: GetPlayer parameter 1: expected integer but got void.