Добавлен Феникс,
опубликован
Полезная функция для отображения урона с возможностью настройки:
Код функции
---@param showdamage boolean
---@param damage real
---@param damagetype damagetype
---@param attacktype attacktype
---@param weapontype weapontype
---@param showdamagetype boolean
---@param showattacktype boolean
---@param showweapontype boolean
function PrintDamage(showdamage, damage, damagetype, attacktype, weapontype, showdamagetype, showattacktype, showweapontype)
if showdamage == true then
print(damage)
end
if showdamagetype then
if damagetype == DAMAGE_TYPE_UNKNOWN then
print("DAMAGE_TYPE_UNKNOWN")
elseif damagetype == DAMAGE_TYPE_NORMAL then
print("DAMAGE_TYPE_NORMAL")
elseif damagetype == DAMAGE_TYPE_ENHANCED then
print("DAMAGE_TYPE_ENHANCED")
elseif damagetype == DAMAGE_TYPE_FIRE then
print("DAMAGE_TYPE_FIRE")
elseif damagetype == DAMAGE_TYPE_COLD then
print("DAMAGE_TYPE_COLD")
elseif damagetype == DAMAGE_TYPE_LIGHTNING then
print("DAMAGE_TYPE_LIGHTNING")
elseif damagetype == DAMAGE_TYPE_POISON then
print("DAMAGE_TYPE_POISON")
elseif damagetype == DAMAGE_TYPE_DISEASE then
print("DAMAGE_TYPE_")
elseif damagetype == DAMAGE_TYPE_DIVINE then
print("DAMAGE_TYPE_DIVINE")
elseif damagetype == DAMAGE_TYPE_MAGIC then
print("DAMAGE_TYPE_MAGIC")
elseif damagetype == DAMAGE_TYPE_SONIC then
print("DAMAGE_TYPE_SONIC")
elseif damagetype == DAMAGE_TYPE_ACID then
print("DAMAGE_TYPE_ACID")
elseif damagetype == DAMAGE_TYPE_FORCE then
print("DAMAGE_TYPE_FORCE")
elseif damagetype == DAMAGE_TYPE_DEATH then
print("DAMAGE_TYPE_DEATH")
elseif damagetype == DAMAGE_TYPE_MIND then
print("DAMAGE_TYPE_MIND")
elseif damagetype == DAMAGE_TYPE_PLANT then
print("DAMAGE_TYPE_PLANT")
elseif damagetype == DAMAGE_TYPE_DEFENSIVE then
print("DAMAGE_TYPE_DEFENSIVE")
elseif damagetype == DAMAGE_TYPE_DEMOLITION then
print("DAMAGE_TYPE_DEMOLITION")
elseif damagetype == DAMAGE_TYPE_SLOW_POISON then
print("DAMAGE_TYPE_SLOW_POISON")
elseif damagetype == DAMAGE_TYPE_SPIRIT_LINK then
print("DAMAGE_TYPE_SPIRIT_LINK")
elseif damagetype == DAMAGE_TYPE_SHADOW_STRIKE then
print("DAMAGE_TYPE_SHADOW_STRIKE")
elseif damagetype == DAMAGE_TYPE_UNIVERSAL then
print("DAMAGE_TYPE_UNIVERSAL")
end
end
if showattacktype then
if attacktype == ATTACK_TYPE_NORMAL then
print("ATTACK_TYPE_NORMAL")
elseif attacktype == ATTACK_TYPE_HERO then
print("ATTACK_TYPE_HERO")
elseif attacktype == ATTACK_TYPE_MELEE then
print("ATTACK_TYPE_MELEE")
elseif attacktype == ATTACK_TYPE_PIERCE then
print("ATTACK_TYPE_PIERCE")
elseif attacktype == ATTACK_TYPE_MAGIC then
print("ATTACK_TYPE_MAGIC")
elseif attacktype == ATTACK_TYPE_CHAOS then
print("ATTACK_TYPE_CHAOS")
elseif attacktype == ATTACK_TYPE_SIEGE then
print("ATTACK_TYPE_SIEGE")
end
end
if showweapontype then
if weapontype == WEAPON_TYPE_WHOKNOWS then
print("WEAPON_TYPE_WHOKNOWS")
elseif weapontype == WEAPON_TYPE_METAL_LIGHT_CHOP then
print("WEAPON_TYPE_METAL_LIGHT_CHOP")
elseif weapontype == WEAPON_TYPE_METAL_MEDIUM_CHOP then
print("WEAPON_TYPE_METAL_MEDIUM_CHOP")
elseif weapontype == WEAPON_TYPE_METAL_HEAVY_CHOP then
print("WEAPON_TYPE_METAL_HEAVY_CHOP")
elseif weapontype == WEAPON_TYPE_METAL_LIGHT_SLICE then
print("WEAPON_TYPE_METAL_LIGHT_SLICE")
elseif weapontype == WEAPON_TYPE_METAL_MEDIUM_SLICE then
print("WEAPON_TYPE_METAL_MEDIUM_SLICE")
elseif weapontype == WEAPON_TYPE_METAL_HEAVY_SLICE then
print("WEAPON_TYPE_METAL_HEAVY_SLICE")
elseif weapontype == WEAPON_TYPE_METAL_MEDIUM_BASH then
print("WEAPON_TYPE_METAL_MEDIUM_BASH")
elseif weapontype == WEAPON_TYPE_METAL_HEAVY_BASH then
print("WEAPON_TYPE_METAL_HEAVY_BASH")
elseif weapontype == WEAPON_TYPE_METAL_MEDIUM_STAB then
print("WEAPON_TYPE_METAL_MEDIUM_STAB")
elseif weapontype == WEAPON_TYPE_METAL_HEAVY_STAB then
print("WEAPON_TYPE_METAL_HEAVY_STAB")
elseif weapontype == WEAPON_TYPE_WOOD_LIGHT_SLICE then
print("WEAPON_TYPE_WOOD_LIGHT_SLICE")
elseif weapontype == WEAPON_TYPE_WOOD_MEDIUM_SLICE then
print("WEAPON_TYPE_WOOD_MEDIUM_SLICE")
elseif weapontype == WEAPON_TYPE_WOOD_HEAVY_SLICE then
print("WEAPON_TYPE_WOOD_HEAVY_SLICE")
elseif weapontype == WEAPON_TYPE_WOOD_LIGHT_BASH then
print("WEAPON_TYPE_WOOD_LIGHT_BASH")
elseif weapontype == WEAPON_TYPE_WOOD_MEDIUM_BASH then
print("WEAPON_TYPE_WOOD_MEDIUM_BASH")
elseif weapontype == WEAPON_TYPE_WOOD_HEAVY_BASH then
print("WEAPON_TYPE_WOOD_HEAVY_BASH")
elseif weapontype == WEAPON_TYPE_WOOD_LIGHT_STAB then
print("WEAPON_TYPE_WOOD_LIGHT_STAB")
elseif weapontype == WEAPON_TYPE_WOOD_MEDIUM_STAB then
print("WEAPON_TYPE_WOOD_MEDIUM_STAB")
elseif weapontype == WEAPON_TYPE_CLAW_LIGHT_SLICE then
print("WEAPON_TYPE_CLAW_LIGHT_SLICE")
elseif weapontype == WEAPON_TYPE_CLAW_MEDIUM_SLICE then
print("WEAPON_TYPE_CLAW_MEDIUM_SLICE")
elseif weapontype == WEAPON_TYPE_CLAW_HEAVY_SLICE then
print("WEAPON_TYPE_CLAW_HEAVY_SLICE")
elseif weapontype == WEAPON_TYPE_AXE_MEDIUM_CHOP then
print("WEAPON_TYPE_AXE_MEDIUM_CHOP")
elseif weapontype == WEAPON_TYPE_ROCK_HEAVY_BASH then
print("WEAPON_TYPE_ROCK_HEAVY_BASH")
end
end
end
Код вызова
-- Желательно расположить после всех манипуляций с уроном, чтобы избежать неправильного отображения количества
PrintDamage(true,GetEventDamage(), BlzGetEventDamageType(), BlzGetEventAttackType(), BlzGetEventWeaponType(), true, true, true)
Пример отлова и вывода урона
function Damage_Actions()
local unit = BlzGetEventDamageTarget() -- юнит получающий урон
local source = GetEventDamageSource() -- юнит наносящий урон
local player = GetOwningPlayer(unit) --владелец получившего урон
local sourceplayer = GetOwningPlayer(source) --владелец наносящего урон
local damage = GetEventDamage() -- кол-во урона
local damagetype = BlzGetEventDamageType() -- тип урона
local attacktype = BlzGetEventAttackType() -- тип атаки
local weapontype = BlzGetEventWeaponType() -- тип оружия
PrintDamage(true, damage, damagetype, attacktype, weapontype, true, true, true) --функция вывода
end
function Damage()
Trigger.Damage = CreateTrigger()
TriggerAddAction(Trigger.Damage, Damage_Actions)
end
function EntireMap_Actions()
TriggerRegisterUnitEvent(Trigger.Damage, GetTriggerUnit(), EVENT_UNIT_DAMAGED)
end
function EntireMap()
Trigger.EntireMap = CreateTrigger()
TriggerRegisterEnterRectSimple(Trigger.EntireMap, GetPlayableMapRect())
TriggerAddAction(Trigger.EntireMap, EntireMap_Actions)
end
showdamage - показывать количество урона true/false
showdamagetype - показывать тип урона true/false
showattacktype - показывать тип атаки true/false
showweapontype - показывать тип оружия true/false
showdamagetype - показывать тип урона true/false
showattacktype - показывать тип атаки true/false
showweapontype - показывать тип оружия true/false
Инструкция по установке
Располагаете код функции у себя в карте, выше, чем место, где расположен код вызова
Код вызова функции используется в событии получения урона желательно в самой нижней части
Код вызова функции используется в событии получения урона желательно в самой нижней части
Обновление 1.01 - Функции конверта типа в строку
---@param weapontype weapontype
---@return string string
function ConvertWeaponTypeToString(weapontype)
if weapontype == WEAPON_TYPE_WHOKNOWS then
return "WEAPON_TYPE_WHOKNOWS"
elseif weapontype == WEAPON_TYPE_METAL_LIGHT_CHOP then
return "WEAPON_TYPE_METAL_LIGHT_CHOP"
elseif weapontype == WEAPON_TYPE_METAL_MEDIUM_CHOP then
return "WEAPON_TYPE_METAL_MEDIUM_CHOP"
elseif weapontype == WEAPON_TYPE_METAL_HEAVY_CHOP then
return "WEAPON_TYPE_METAL_HEAVY_CHOP"
elseif weapontype == WEAPON_TYPE_METAL_LIGHT_SLICE then
return "WEAPON_TYPE_METAL_LIGHT_SLICE"
elseif weapontype == WEAPON_TYPE_METAL_MEDIUM_SLICE then
return "WEAPON_TYPE_METAL_MEDIUM_SLICE"
elseif weapontype == WEAPON_TYPE_METAL_HEAVY_SLICE then
return "WEAPON_TYPE_METAL_HEAVY_SLICE"
elseif weapontype == WEAPON_TYPE_METAL_MEDIUM_BASH then
return "WEAPON_TYPE_METAL_MEDIUM_BASH"
elseif weapontype == WEAPON_TYPE_METAL_HEAVY_BASH then
return "WEAPON_TYPE_METAL_HEAVY_BASH"
elseif weapontype == WEAPON_TYPE_METAL_MEDIUM_STAB then
return "WEAPON_TYPE_METAL_MEDIUM_STAB"
elseif weapontype == WEAPON_TYPE_METAL_HEAVY_STAB then
return "WEAPON_TYPE_METAL_HEAVY_STAB"
elseif weapontype == WEAPON_TYPE_WOOD_LIGHT_SLICE then
return "WEAPON_TYPE_WOOD_LIGHT_SLICE"
elseif weapontype == WEAPON_TYPE_WOOD_MEDIUM_SLICE then
return "WEAPON_TYPE_WOOD_MEDIUM_SLICE"
elseif weapontype == WEAPON_TYPE_WOOD_HEAVY_SLICE then
return "WEAPON_TYPE_WOOD_HEAVY_SLICE"
elseif weapontype == WEAPON_TYPE_WOOD_LIGHT_BASH then
return "WEAPON_TYPE_WOOD_LIGHT_BASH"
elseif weapontype == WEAPON_TYPE_WOOD_MEDIUM_BASH then
return "WEAPON_TYPE_WOOD_MEDIUM_BASH"
elseif weapontype == WEAPON_TYPE_WOOD_HEAVY_BASH then
return "WEAPON_TYPE_WOOD_HEAVY_BASH"
elseif weapontype == WEAPON_TYPE_WOOD_LIGHT_STAB then
return "WEAPON_TYPE_WOOD_LIGHT_STAB"
elseif weapontype == WEAPON_TYPE_WOOD_MEDIUM_STAB then
return "WEAPON_TYPE_WOOD_MEDIUM_STAB"
elseif weapontype == WEAPON_TYPE_CLAW_LIGHT_SLICE then
return "WEAPON_TYPE_CLAW_LIGHT_SLICE"
elseif weapontype == WEAPON_TYPE_CLAW_MEDIUM_SLICE then
return "WEAPON_TYPE_CLAW_MEDIUM_SLICE"
elseif weapontype == WEAPON_TYPE_CLAW_HEAVY_SLICE then
return "WEAPON_TYPE_CLAW_HEAVY_SLICE"
elseif weapontype == WEAPON_TYPE_AXE_MEDIUM_CHOP then
return "WEAPON_TYPE_AXE_MEDIUM_CHOP"
elseif weapontype == WEAPON_TYPE_ROCK_HEAVY_BASH then
return "WEAPON_TYPE_ROCK_HEAVY_BASH"
end
end
---@param attacktype attacktype
---@return string string
function ConvertAttackTypeToString(attacktype)
if attacktype == ATTACK_TYPE_NORMAL then
return "ATTACK_TYPE_NORMAL"
elseif attacktype == ATTACK_TYPE_HERO then
return "ATTACK_TYPE_HERO"
elseif attacktype == ATTACK_TYPE_MELEE then
return "ATTACK_TYPE_MELEE"
elseif attacktype == ATTACK_TYPE_PIERCE then
return "ATTACK_TYPE_PIERCE"
elseif attacktype == ATTACK_TYPE_MAGIC then
return "ATTACK_TYPE_MAGIC"
elseif attacktype == ATTACK_TYPE_CHAOS then
return "ATTACK_TYPE_CHAOS"
elseif attacktype == ATTACK_TYPE_SIEGE then
return "ATTACK_TYPE_SIEGE"
end
end
---@param damagetype damagetype
---@return string string
function ConvertDamageTypeToString(damagetype)
if damagetype == DAMAGE_TYPE_UNKNOWN then
return "DAMAGE_TYPE_UNKNOWN"
elseif damagetype == DAMAGE_TYPE_NORMAL then
return "DAMAGE_TYPE_NORMAL"
elseif damagetype == DAMAGE_TYPE_ENHANCED then
return "DAMAGE_TYPE_ENHANCED"
elseif damagetype == DAMAGE_TYPE_FIRE then
return "DAMAGE_TYPE_FIRE"
elseif damagetype == DAMAGE_TYPE_COLD then
return "DAMAGE_TYPE_COLD"
elseif damagetype == DAMAGE_TYPE_LIGHTNING then
return "DAMAGE_TYPE_LIGHTNING"
elseif damagetype == DAMAGE_TYPE_POISON then
return "DAMAGE_TYPE_POISON"
elseif damagetype == DAMAGE_TYPE_DISEASE then
return "DAMAGE_TYPE_"
elseif damagetype == DAMAGE_TYPE_DIVINE then
return "DAMAGE_TYPE_DIVINE"
elseif damagetype == DAMAGE_TYPE_MAGIC then
return "DAMAGE_TYPE_MAGIC"
elseif damagetype == DAMAGE_TYPE_SONIC then
return "DAMAGE_TYPE_SONIC"
elseif damagetype == DAMAGE_TYPE_ACID then
return "DAMAGE_TYPE_ACID"
elseif damagetype == DAMAGE_TYPE_FORCE then
return "DAMAGE_TYPE_FORCE"
elseif damagetype == DAMAGE_TYPE_DEATH then
return "DAMAGE_TYPE_DEATH"
elseif damagetype == DAMAGE_TYPE_MIND then
return "DAMAGE_TYPE_MIND"
elseif damagetype == DAMAGE_TYPE_PLANT then
return "DAMAGE_TYPE_PLANT"
elseif damagetype == DAMAGE_TYPE_DEFENSIVE then
return "DAMAGE_TYPE_DEFENSIVE"
elseif damagetype == DAMAGE_TYPE_DEMOLITION then
return "DAMAGE_TYPE_DEMOLITION"
elseif damagetype == DAMAGE_TYPE_SLOW_POISON then
return "DAMAGE_TYPE_SLOW_POISON"
elseif damagetype == DAMAGE_TYPE_SPIRIT_LINK then
return "DAMAGE_TYPE_SPIRIT_LINK"
elseif damagetype == DAMAGE_TYPE_SHADOW_STRIKE then
return "DAMAGE_TYPE_SHADOW_STRIKE"
elseif damagetype == DAMAGE_TYPE_UNIVERSAL then
return "DAMAGE_TYPE_UNIVERSAL"
end
end
Пример использования конвертации
function Damage_Actions() --функция при получении урона
local damagetype = BlzGetEventDamageType() -- тип урона
local attacktype = BlzGetEventAttackType() -- тип атаки
local weapontype = BlzGetEventWeaponType() -- тип оружия
print(ConvertDamageTypeToString(damagetype)) -- конвертация типа урона в строку
print(ConvertAttackTypeToString(attacktype)) -- конвертация типа атаки в строку
print(ConvertWeaponTypeToString(weapontype)) -- конвертация типа оружия в строку
end
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Берги
Нужно ещё добавить само событие урона, вдруг человек не знает как его добавлять.. и ну и карту.. Можно ссылкой на гитхаб, чтобы приучать к правильному
Отредактирован Феникс
Отредактирован GetLocalPlayer
Записываем совпадения в новую таблицу, используя значения этих переменных как ключ, а имена как значение.
При получении урона, достаем из созданной таблицы имя типа урона по типу урона.
Отредактирован GetLocalPlayer
Отредактирован PROSHELDOTU
XGM
Hive