Возврат урона (рефлект)

mrlikelot

Продвинутый
24 Июл 2015
168
1
Привет, ребят, пытался сделать возврат урона, наработал:
Код:
"OnTakeDamage"
    {
     "RunScript"
     {
      "ScriptFile" "heroes/block.lua"
      "Function"  "reverse"
     }
    }
Код:
function reverse( keys )
	local damage = keys.damage
	local damagedeal = damage * 0.1
	ApplyDamage{
    victim = keys.attacker,
    attacker = keys.caster,
    ability = keys.ability,
    damage = damagedeal,
    damage_type = DAMAGE_TYPE_PURE,
  }
end
Пишет, что damage не существует (оно так и есть, ведь в keys нет damage :D)
Но я ещё пытался %attack_damage получить, как keys.ability:GetSpecialValueFor("attack_damage"), но выдаёт 0, как правильно сделать?
 
Последнее редактирование модератором:
[quote author=mrlikelot link=topic=1394.msg8906#msg8906 date=1490273199]
Привет, ребят, пытался сделать возврат урона, наработал:
Код:
"OnTakeDamage"
    {
     "RunScript"
     {
      "ScriptFile" "heroes/block.lua"
      "Function"  "reverse"
     }
    }
Пишет, что damage не существует (оно так и есть, ведь в keys нет damage :D)
Но я ещё пытался %attack_damage получить, как keys.ability:GetSpecialValueFor("attack_damage"), но выдаёт 0, как правильно сделать?
[/quote]

Код:
function reverse( keys )
	local damage = keys.damage
	local damagedeal = damage * 0.1
	ApplyDamage({
    victim = keys.attacker,
    attacker = keys.caster,
    ability = keys.ability,
    damage = damagedeal,
    damage_type = DAMAGE_TYPE_PURE,
  })
end
 
Последнее редактирование модератором:
[quote author=CryDeS link=topic=1394.msg8907#msg8907 date=1490274430]
Код:
function reverse( keys )
	local damage = keys.damage
	local damagedeal = damage * 0.1
	ApplyDamage({
    victim = keys.attacker,
    attacker = keys.caster,
    ability = keys.ability,
    damage = damagedeal,
    damage_type = DAMAGE_TYPE_PURE,
  })
end
[/quote]
Не в этом проблема, он просто не видит key damage
85a163ea70f3.png
 
Код:
local damage = params.Damage
Lua - регистрозависимый язык.
Upd:
Отправляй из kv урон так:
Код:
"Damage"		"%attack_damage"
 
Последнее редактирование модератором:
[quote author=CryDeS link=topic=1394.msg8909#msg8909 date=1490275090]
Код:
local damage = params.Damage
Lua - регистрозависимый язык.
Upd:
Отправляй из kv урон так:
Код:
"Damage"		"%attack_damage"
[/quote]
Вчера уже пробовал, тоже самое выдает, а так точно можно делать?
Код:
function ActiveReflect( keys )
	local caster = keys.caster
	local attacker = keys.attacker
	local ability = keys.ability
	local damage = keys.damage
Часть функции из dota imba, там с маленькой буквы.
Не заметил, что ты изменил, сейчас попробую
 
Последнее редактирование модератором:
Вчера уже пробовал, тоже самое выдает, а так точно можно делать?
Часть функции из dota imba, там с маленькой буквы
Код:
"OnTakeDamage"
	{
		"RunScript"
		{
			"ScriptFile"	"scripts/vscripts/heroes/spike/shell.lua"
			"Function"		"Shell"
			"Damage"		"%attack_damage"
			"Attacker"		"ATTACKER"
		}		
	}

Код:
local damage = keys.Damage
 
Последнее редактирование модератором:
[quote author=CryDeS link=topic=1394.msg8911#msg8911 date=1490275572]
Код:
"OnTakeDamage"
	{
		"RunScript"
		{
			"ScriptFile"	"scripts/vscripts/heroes/spike/shell.lua"
			"Function"		"Shell"
			"Damage"		"%attack_damage"
			"Attacker"		"ATTACKER"
		}		
	}

Код:
local damage = keys.Damage
[/quote]
Код:
function reverse(event)
	local returndamage = event.Damage * 0.22
	ApplyDamage({
    victim = event.attacker,
    damage = returndamage,
    damage_type = DAMAGE_TYPE_PURE,
    attacker = event.caster,
    ability = event.ability,
  })
end
Проблема была только в том, что нельзя использовать переменную с именем "damage" :-\, ну и в скобочках, которые ты поправил, спасибо
 
Последнее редактирование модератором:
Последнее редактирование модератором:
[quote author=CryDeS link=topic=1394.msg8915#msg8915 date=1490285283]
Ее использовать можно.
[/quote]
Значит я невнимательный, вот окончательный код, может кто искать будет:
Код:
"RunScript"
     {
      "ScriptFile" "heroes/block.lua"
      "Function"  "reverse"
      "Attacker"  "ATTACKER"
      "Damage"   "%attack_damage"
     }
Код:
function reverse(event)
	local ability = event.ability
	local returndamage = event.Damage * ability:GetSpecialValueFor("reversedam")
	print(ability:GetSpecialValueFor("reversedam"))
	ApplyDamage({
    victim = event.attacker,
    damage = returndamage,
    damage_type = DAMAGE_TYPE_PURE,
    attacker = event.caster,
    ability = event.ability,
  })
end
 
Последнее редактирование модератором:
Реклама: