Слушатель для маны и скила

  • Автор темы Автор темы den4iccc
  • Дата начала Дата начала

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Кто нибудь сталкивался с таким вопросом как сделать автоматический запуск скила если заканчивается мана или хп без разницы
 
Ну ставишь таймер, что проверяет количество хп или маны и по ее отсутствию делаешь действие.
 
Код:
Timers:CreateTimer(10,function()
	function Pos(keys)
		local caster = keys.caster
if keys.caster:GetHealth ()< 100 then
 keys.ability:Po(keys)
 else
return nil
end
end
return nil
end)
 Timers:CreateTimer(30, -- Start this timer 30 game-time seconds later
  function()
   DebugPrint("This function is called 30 seconds after the game begins, and every 30 seconds thereafter")
   return 30.0 -- Rerun this timer every 30 game-time seconds 
  end)
end
чё не так ? у меня не работает в keys.ability: (прописывать скил или скил скрипта?)

1. таймер
2. проверка на кол-во хп
3. если хп меньше 100 то происходит запуск скила
 
Последнее редактирование модератором:
Вот тебе мой пример
Код:
function Spawn( entityKeyValues )
	ability = thisEntity:FindAbilityByName("dragon_knight_elder_dragon_form")
	thisEntity:SetContextThink( "dkthink", dkthink , 1)
end
function dkthink()
local health = thisEntity:GetHealth() / thisEntity:GetMaxHealth() 
if health <= 0.50 then
	if ability:IsFullyCastable() then
		thisEntity:CastAbilityNoTarget(ability, -1)
	end
end
return 1
end
 
Последнее редактирование модератором:
в чём касяк ?: >:( абилка -
Код:
	"ability_run"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"BaseClass"           "ability_datadriven"
		"AbilityBehavior"        "DOTA_ABILITY_BEHAVIOR_TOGGLE"
		"AbilityTextureName"      "bounty_hunter_wind_walk"

    // Casting
    //-------------------------------------------------------------------------------------------------------------
    "AbilityCastPoint"       "0.01"

    // Time  
    //-------------------------------------------------------------------------------------------------------------
    "AbilityCooldown"        "0.0"

    // Cost
    //-------------------------------------------------------------------------------------------------------------
    "AbilityManaCost"        "0"
		
    "OnToggleOn"
    {   
      "ApplyModifier"
      {
				"ModifierName" "running"
        "Target"    "CASTER"
      } 			
    }  
		"OnToggleOff"
    {   
      "RemoveModifier"
      {
				"ModifierName" "running"
        "Target"    "CASTER"
      } 			
    } 		
		
    "Modifiers"
    {
			"running"
			{ 				
				"Properties"
				{
					"MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE"	"%mod_run"
					"MODIFIER_PROPERTY_MANA_REGEN_CONSTANT"	"%energy_regen"
				}
				"OnCreated"
				{
					"AttachEffect"
					{
						"Target" "CASTER"
						"EffectName"      ""
						"EffectAttachType" "follow_origin"
					}
				}
      } 				
    }
		
		
		"AbilitySpecial"
		{
			"01"
			{
				"var_type"					"FIELD_INTEGER"
				"mod_run"					"60"
			}
			"02"
			{
				"var_type"					"FIELD_INTEGER"
				"energy_regen"					"-3.5"
			}
		}
	}
и скрипт
Код:
function Spawn( entityKeyValues )
	ability = thisEntity:FindAbilityByName("ability_run")
	thisEntity:SetContextThink( "dkthink", dkthink , 1)
end
function dkthink()
local health = thisEntity:GetHealth() / thisEntity:GetMaxHealth() 
if health <= 100 then
	if ability:IsFullyCastable() then
		thisEntity:CastAbilityToggle(ability, -1)
	end
end
return 1
end
 
Последнее редактирование модератором:
У юнита, которому ты хочешь это пришить напиши
Код:
"vscripts"       "твое_название.lua"
И это должен быть отдельный файл в папке scripts
 
Последнее редактирование модератором:
[quote author=tasman208 link=topic=871.msg4089#msg4089 date=1462370746]
У юнита, которому ты хочешь это пришить напиши
Код:
"vscripts"       "твое_название.lua"
И это должен быть отдельный файл в папке scripts
[/quote] спасибо :-* ++++rep
 
Последнее редактирование модератором:
а на ману это так да ?
Код:
function Spawn( entityKeyValues )
	ability = thisEntity:FindAbilityByName("ability_run")
	thisEntity:SetContextThink( "dkthink", dkthink , 1)
end
function dkthink()
local mana = thisEntity:GetMana() / thisEntity:GetMaxMana() 
if mana <= 90 then
	if ability:IsFullyCastable() then
		thisEntity:CastAbilityToggle(ability, -1)
	end
end
return 1
end
 
Последнее редактирование модератором:
Да, только в
Код:
if mana <= 90 then
Нужно число от >0 до 1, если 0.5 это половина если 0.1 то это почти 0
 
Последнее редактирование модератором:
Реклама: