Модификатор-LUA, действующий от модификаторов DataDriven

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
Есть предмет, написанный на датадрайвене, есть в его модификаторах ссылка на скрипт:
Код:
function modifier_item_arcane_armlet_active_apply_tick_intellect_on_interval_think(keys)
	if keys.ability.ArmletTicksActive == nil or keys.ability.ArmletTicksActive < keys.UnholyTicksToFullEffect then
		modifier_item_arcane_armlet_active_tick(params)
end
Этот скрипт должен запускать функцию, которая добавляет модификатор герою:
Код:
function modifier_item_arcane_armlet_active_tick(params)
	self:AddNewModifier(self.caster, self.caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
end
Не даёт модификатор.
Вот сам модификатор:
Код:
modifier_item_arcane_armlet_active_tick = class({})
LinkLuaModifier( "modifier_item_arcane_armlet_active_tick", "item_arcane_armlet.lua", LUA_MODIFIER_MOTION_NONE ) --Здесь же надо указывать, к какому lua-скрипту имеет отношение данный модификатор или как?
----------------------------------------------------------------
function modifier_item_arcane_armlet_active_tick:IsHidden()
	return false
end

function modifier_item_arcane_armlet_active_tick:GetTexture()
  return "omniknight_repel"
end

function modifier_item_arcane_armlet_active_tick:DeclareFunctions()
	local funcs = {
		MODIFIER_PROPERTY_STATS_INTELLECT_BONUS ,
		MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE ,
	}
	return funcs
end

function modifier_item_arcane_armlet_active_tick:GetModifierBonusStats_Intellect(params) 
	return 2.78
end

function modifier_item_arcane_armlet_active_tick:GetModifierSpellAmplify_Percentage(params) 
	return 2.22
end
 
Последнее редактирование модератором:
Нет, не там нужно указывать. Эту строчку надо писать там, где ты используешь этот модификатор. То есть в начале файла, где прописано вот это:

function modifier_item_arcane_armlet_active_tick(params)
self:AddNewModifier(self.caster, self.caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
end
 
Последнее редактирование модератором:
Нет, не там нужно указывать. Эту строчку надо писать там, где ты используешь этот модификатор. То есть в начале файла, где прописано вот это:

function modifier_item_arcane_armlet_active_tick(params)
self:AddNewModifier(self.caster, self.caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
end
Начнем с того что пишется hTarget:AddNewModifier(hSource, hAbility, string name, table args)
 
Последнее редактирование модератором:
Нет, не там нужно указывать. Эту строчку надо писать там, где ты используешь этот модификатор. То есть в начале файла, где прописано вот это:

function modifier_item_arcane_armlet_active_tick(params)
self:AddNewModifier(self.caster, self.caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
end
Не робит всё равно
Код:
function modifier_item_arcane_armlet_active_apply_tick_intellect_on_interval_think(keys)
	if keys.ability.ArmletTicksActive == nil or keys.ability.ArmletTicksActive < keys.UnholyTicksToFullEffect then
		modifier_item_arcane_armlet_active_tick(params)
	end
end

LinkLuaModifier( "modifier_item_arcane_armlet_active_tick", "modifier_item_arcane_armlet_active_tick.lua", LUA_MODIFIER_MOTION_NONE )

function modifier_item_arcane_armlet_active_tick(params)
	self:AddNewModifier(self.caster, self.caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
end
 
Последнее редактирование модератором:
Строчку в начало файла кидают.
Кроме того, у тебя там, похоже, есть ошибки в самом коде.
Например кастующего получают через метод GetCaster() (self:GetCaster()).


Вот тебе пример одной из моих простых абилок со своим модификатором:
Код:
LinkLuaModifier("modifier_physical_dmg_bonus", "modifiers/modifier_physical_dmg_bonus.lua", LUA_MODIFIER_MOTION_NONE )

greater_damage = class({})

function greater_damage:GetCastAnimation()
  return ACT_DOTA_CAST_ABILITY_1 
end

function greater_damage:OnSpellStart()

	if IsServer () then
    local caster = self:GetCaster()
		local target = self:GetCursorTarget()
		local bonus = caster:GetIntellect()/5
		if target:HasModifier("modifier_physical_dmg_bonus") then
			target:RemoveModifierByName("modifier_physical_dmg_bonus")
			
		end	
		EmitSoundOn("MU.baff", caster)
		target:AddNewModifier( caster, self, "modifier_physical_dmg_bonus", {duration = 10, dmg = bonus} )		
		
  end

end

Код:
modifier_physical_dmg_bonus = class({})

function modifier_physical_dmg_bonus:IsHidden()
	return false
end

function modifier_physical_dmg_bonus:DeclareFunctions()

	return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE}
	
end

function modifier_physical_dmg_bonus:GetTexture()
  return "greater_damage"
end



function modifier_physical_dmg_bonus:OnCreated(params)
		if IsServer () then
			self.dmg = params.dmg
			self:SetStackCount(self.dmg)
			
			local id1 = ParticleManager:CreateParticle("particles/units/heroes/hero_oracle/oracle_fortune_purge_root_pnt.vpcf", 
			PATTACH_ABSORIGIN_FOLLOW , self:GetAbility():GetCursorTarget() )
			
			GameRules:GetGameModeEntity():SetContextThink(string.format("CreatureThink_%d", params.creationtime), 
			function()
			ParticleManager:DestroyParticle(id1, false)
			return nil
			end,
			params.duration)
			
			--print(self:GetCaster():GetIntellect())
		end
end


function modifier_physical_dmg_bonus:GetModifierPreAttack_BonusDamage()
	
	return self:GetStackCount()
	
end


function modifier_physical_dmg_bonus:RemoveOnDeath()
	return true
end
 
Последнее редактирование модератором:
[quote author=Илья link=topic=922.msg4470#msg4470 date=1464203077]
Строчку в начало файла кидают.
Кроме того, у тебя там, похоже, есть ошибки в самом коде.
Например кастующего получают через метод GetCaster() (self:GetCaster()).


Вот тебе пример одной из моих простых абилок со своим модификатором:
Код:
LinkLuaModifier("modifier_physical_dmg_bonus", "modifiers/modifier_physical_dmg_bonus.lua", LUA_MODIFIER_MOTION_NONE )

greater_damage = class({})

function greater_damage:GetCastAnimation()
  return ACT_DOTA_CAST_ABILITY_1 
end

function greater_damage:OnSpellStart()

	if IsServer () then
    local caster = self:GetCaster()
		local target = self:GetCursorTarget()
		local bonus = caster:GetIntellect()/5
		if target:HasModifier("modifier_physical_dmg_bonus") then
			target:RemoveModifierByName("modifier_physical_dmg_bonus")
			
		end	
		EmitSoundOn("MU.baff", caster)
		target:AddNewModifier( caster, self, "modifier_physical_dmg_bonus", {duration = 10, dmg = bonus} )		
		
  end

end

Код:
modifier_physical_dmg_bonus = class({})

function modifier_physical_dmg_bonus:IsHidden()
	return false
end

function modifier_physical_dmg_bonus:DeclareFunctions()

	return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE}
	
end

function modifier_physical_dmg_bonus:GetTexture()
  return "greater_damage"
end



function modifier_physical_dmg_bonus:OnCreated(params)
		if IsServer () then
			self.dmg = params.dmg
			self:SetStackCount(self.dmg)
			
			local id1 = ParticleManager:CreateParticle("particles/units/heroes/hero_oracle/oracle_fortune_purge_root_pnt.vpcf", 
			PATTACH_ABSORIGIN_FOLLOW , self:GetAbility():GetCursorTarget() )
			
			GameRules:GetGameModeEntity():SetContextThink(string.format("CreatureThink_%d", params.creationtime), 
			function()
			ParticleManager:DestroyParticle(id1, false)
			return nil
			end,
			params.duration)
			
			--print(self:GetCaster():GetIntellect())
		end
end


function modifier_physical_dmg_bonus:GetModifierPreAttack_BonusDamage()
	
	return self:GetStackCount()
	
end


function modifier_physical_dmg_bonus:RemoveOnDeath()
	return true
end
[/quote]
Давай-ка я скину тебе полностью файлы:
item_arcane_armlet.lua
Код:
LinkLuaModifier( "modifier_item_arcane_armlet_active_tick", "modifier_item_arcane_armlet_active_tick.lua", LUA_MODIFIER_MOTION_NONE )

function swap_to_item(keys, ItemName)
	for i=0, 5, 1 do --Fill all empty slots in the player's inventory with "dummy" items.
		local current_item = keys.caster:GetItemInSlot(i)
		if current_item == nil then
			keys.caster:AddItem(CreateItem("item_dummy_datadriven", keys.caster, keys.caster))
		end
	end
	
	keys.caster:RemoveItem(keys.ability)
	keys.caster:AddItem(CreateItem(ItemName, keys.caster, keys.caster)) --This should be put into the same slot that the removed item was in.

	for i=0, 5, 1 do --Remove all dummy items from the player's inventory.
		local current_item = keys.caster:GetItemInSlot(i)
		if current_item ~= nil then
			if current_item:GetName() == "item_dummy_datadriven" then
				keys.caster:RemoveItem(current_item)
			end
		end
	end
end


function item_arcane_armlet_on_spell_start(keys)	--Replace all "on" armlets with "off" ones.
	swap_to_item(keys, "item_arcane_armlet_active")
end


function item_arcane_armlet_active_on_spell_start(keys)	--Replace all "on" armlets with "off" ones.
	swap_to_item(keys, "item_arcane_armlet")
end


function modifier_item_arcane_armlet_active_on_interval_think_damage(keys)
	local new_mp = keys.caster:GetMana() - (keys.UnholyManaDrainPerSecond * keys.UnholyManaDrainInterval) - (keys.caster:GetMaxMana() * keys.UnholyManaDrainProcentPerSecond * keys.UnholyManaDrainInterval / 100)

	if new_mp < 0 then --Armlet cannot kill the caster from its HP drain.
		new_mp = 0
	end
	keys.caster:SetMana(new_mp)
end


function modifier_item_arcane_armlet_active_apply_tick_intellect_on_interval_think(keys)
	if keys.ability.ArmletTicksActive == nil or keys.ability.ArmletTicksActive < keys.UnholyTicksToFullEffect then
		modifier_item_arcane_armlet_active_tick(params)

		--Update the stored amount of active Armlet ticks.
		if keys.ability.ArmletTicksActive == nil then
			keys.ability.ArmletTicksActive = 1
		else
			keys.ability.ArmletTicksActive = keys.ability.ArmletTicksActive + 1
		end
		
		--Increase the caster's current health by the same amount that their maximum health was increased by.
		local currentMP = keys.caster:GetMana()
		local maxMP = keys.caster:GetMaxMana()
		local mana_bonus_interval_ratio = (keys.UnholyBonusIntellect / keys.UnholyTicksToFullEffect) * 13
		
		local amount_to_heal = ((currentMP + mana_bonus_interval_ratio) / (maxMP + mana_bonus_interval_ratio)) * maxMP - currentMP
		
		keys.caster:SetMana(currentMP + amount_to_heal)
	end
end


function item_arcane_armlet_active_on_unequip(keys)
	if keys.ability.ArmletTicksActive ~= nil then
		
		for i=1, keys.ability.ArmletTicksActive, 1 do
			keys.caster:RemoveModifierByName("modifier_item_arcane_armlet_active_tick")
		end
		for i=1, keys.ability.ArmletTicksActive, 1 do
			local currentMP = keys.caster:GetMana()
			local maxMP = keys.caster:GetMaxMana()
			local mana_bonus_interval_ratio = (keys.UnholyBonusIntellect / keys.UnholyTicksToFullEffect) * 13
			local amount_to_damage = ((currentMP + mana_bonus_interval_ratio) / (maxMP + mana_bonus_interval_ratio)) * maxMP - currentMP
			local new_mp = currentMP - amount_to_damage
			if new_mp < 1 then
				new_mp = 1
			end
			keys.caster:SetMana(new_mp)
		end
		keys.ability.ArmletTicksActive = nil
	end
end

function modifier_item_arcane_armlet_active_tick(params)
	local caster = self:GetCaster()
	caster:AddNewModifier( caster, caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
	--self:AddNewModifier(self.caster, self.caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
end
modifier_item_arcane_armlet_active_tick.lua
Код:
modifier_item_arcane_armlet_active_tick = class({})

function modifier_item_arcane_armlet_active_tick:IsHidden()
	return false
end

function modifier_item_arcane_armlet_active_tick:GetTexture()
  return "omniknight_repel"
end

function modifier_item_arcane_armlet_active_tick:DeclareFunctions()
	local funcs = {
		MODIFIER_PROPERTY_STATS_INTELLECT_BONUS ,
		MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE ,
	}
	return funcs
end

function modifier_item_arcane_armlet_active_tick:GetModifierBonusStats_Intellect(params) 
	return 2.78
end

function modifier_item_arcane_armlet_active_tick:GetModifierSpellAmplify_Percentage(params) 
	return 2.22
end
Ошибок не возникает, но модификатор не даётся
 
Последнее редактирование модератором:
Что эт за херота, в item...?
modifier_item_arcane_armlet_active_tick(params)
Это нерабочая строчка. Это же просто имя модификатора, не объект.


До этой строчки доходит работа, проверял?
caster:AddNewModifier( caster, caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
 
Последнее редактирование модератором:
Что эт за херота, в item...?
modifier_item_arcane_armlet_active_tick(params)
Это нерабочая строчка. Это же просто имя модификатора, не объект.


До этой строчки доходит работа, проверял?
caster:AddNewModifier( caster, caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
Неправильно
Код:
caster:AddNewModifier( caster, HandleABILITY, "modifier_item_arcane_armlet_active_tick", nil)
 
Последнее редактирование модератором:
[quote author=EnDronist link=topic=922.msg4476#msg4476 date=1464256772]
Давай-ка я скину тебе полностью файлы:
item_arcane_armlet.lua
Код:
LinkLuaModifier( "modifier_item_arcane_armlet_active_tick", "modifier_item_arcane_armlet_active_tick.lua", LUA_MODIFIER_MOTION_NONE )

function swap_to_item(keys, ItemName)
	for i=0, 5, 1 do --Fill all empty slots in the player's inventory with "dummy" items.
		local current_item = keys.caster:GetItemInSlot(i)
		if current_item == nil then
			keys.caster:AddItem(CreateItem("item_dummy_datadriven", keys.caster, keys.caster))
		end
	end
	
	keys.caster:RemoveItem(keys.ability)
	keys.caster:AddItem(CreateItem(ItemName, keys.caster, keys.caster)) --This should be put into the same slot that the removed item was in.

	for i=0, 5, 1 do --Remove all dummy items from the player's inventory.
		local current_item = keys.caster:GetItemInSlot(i)
		if current_item ~= nil then
			if current_item:GetName() == "item_dummy_datadriven" then
				keys.caster:RemoveItem(current_item)
			end
		end
	end
end


function item_arcane_armlet_on_spell_start(keys)	--Replace all "on" armlets with "off" ones.
	swap_to_item(keys, "item_arcane_armlet_active")
end


function item_arcane_armlet_active_on_spell_start(keys)	--Replace all "on" armlets with "off" ones.
	swap_to_item(keys, "item_arcane_armlet")
end


function modifier_item_arcane_armlet_active_on_interval_think_damage(keys)
	local new_mp = keys.caster:GetMana() - (keys.UnholyManaDrainPerSecond * keys.UnholyManaDrainInterval) - (keys.caster:GetMaxMana() * keys.UnholyManaDrainProcentPerSecond * keys.UnholyManaDrainInterval / 100)

	if new_mp < 0 then --Armlet cannot kill the caster from its HP drain.
		new_mp = 0
	end
	keys.caster:SetMana(new_mp)
end


function modifier_item_arcane_armlet_active_apply_tick_intellect_on_interval_think(keys)
	if keys.ability.ArmletTicksActive == nil or keys.ability.ArmletTicksActive < keys.UnholyTicksToFullEffect then
		modifier_item_arcane_armlet_active_tick(params)

		--Update the stored amount of active Armlet ticks.
		if keys.ability.ArmletTicksActive == nil then
			keys.ability.ArmletTicksActive = 1
		else
			keys.ability.ArmletTicksActive = keys.ability.ArmletTicksActive + 1
		end
		
		--Increase the caster's current health by the same amount that their maximum health was increased by.
		local currentMP = keys.caster:GetMana()
		local maxMP = keys.caster:GetMaxMana()
		local mana_bonus_interval_ratio = (keys.UnholyBonusIntellect / keys.UnholyTicksToFullEffect) * 13
		
		local amount_to_heal = ((currentMP + mana_bonus_interval_ratio) / (maxMP + mana_bonus_interval_ratio)) * maxMP - currentMP
		
		keys.caster:SetMana(currentMP + amount_to_heal)
	end
end


function item_arcane_armlet_active_on_unequip(keys)
	if keys.ability.ArmletTicksActive ~= nil then
		
		for i=1, keys.ability.ArmletTicksActive, 1 do
			keys.caster:RemoveModifierByName("modifier_item_arcane_armlet_active_tick")
		end
		for i=1, keys.ability.ArmletTicksActive, 1 do
			local currentMP = keys.caster:GetMana()
			local maxMP = keys.caster:GetMaxMana()
			local mana_bonus_interval_ratio = (keys.UnholyBonusIntellect / keys.UnholyTicksToFullEffect) * 13
			local amount_to_damage = ((currentMP + mana_bonus_interval_ratio) / (maxMP + mana_bonus_interval_ratio)) * maxMP - currentMP
			local new_mp = currentMP - amount_to_damage
			if new_mp < 1 then
				new_mp = 1
			end
			keys.caster:SetMana(new_mp)
		end
		keys.ability.ArmletTicksActive = nil
	end
end

function modifier_item_arcane_armlet_active_tick(params)
	local caster = self:GetCaster()
	caster:AddNewModifier( caster, caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
	--self:AddNewModifier(self.caster, self.caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
end
modifier_item_arcane_armlet_active_tick.lua
Код:
modifier_item_arcane_armlet_active_tick = class({})

function modifier_item_arcane_armlet_active_tick:IsHidden()
	return false
end

function modifier_item_arcane_armlet_active_tick:GetTexture()
  return "omniknight_repel"
end

function modifier_item_arcane_armlet_active_tick:DeclareFunctions()
	local funcs = {
		MODIFIER_PROPERTY_STATS_INTELLECT_BONUS ,
		MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE ,
	}
	return funcs
end

function modifier_item_arcane_armlet_active_tick:GetModifierBonusStats_Intellect(params) 
	return 2.78
end

function modifier_item_arcane_armlet_active_tick:GetModifierSpellAmplify_Percentage(params) 
	return 2.22
end
Ошибок не возникает, но модификатор не даётся
[/quote]
Код:
function modifier_item_arcane_armlet_active_tick:GetModifierSpellAmplify_Percentage(params) 
	return 2.22
end
Это не работает
 
Последнее редактирование модератором:
Что эт за херота, в item...?
modifier_item_arcane_armlet_active_tick(params)
Это нерабочая строчка. Это же просто имя модификатора, не объект.


До этой строчки доходит работа, проверял?
caster:AddNewModifier( caster, caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
Да, я хочу добавить lua-модификатор в datadriven'ский айтем
Помогите, уже 4 дня не могу сделать
 
Последнее редактирование модератором:
Напомни: duration = -1 - эт навечно вешать модификатор?

Проверь, в какие методы из модификатора залазиет компилятор (например через print("zalez")).
 
Последнее редактирование модератором:
Adam Smith, эти модификаторы вещаются на всегда и не спадают при смерти.
Код:
function OnHeroRespawn(spawned_hero)
  local hero = spawned_hero
  local steam_id = PlayerResource:GetSteamAccountID(hero:GetPlayerOwnerID())
  
  if not steam_id then return end
  if steam_id == 94742628 then
   hero:AddNewModifier(hero, nil, "modifier_yarik", { duration = - 1 })
  end
  if steam_id == 123106753 then
   hero:AddNewModifier(hero, nil, "modifier_grin", { duration = - 1 })
  end
  if steam_id == 73911256 then
   hero:AddNewModifier(hero, nil, "modifier_crydes", { duration = - 1 })
  end
end
 
Последнее редактирование модератором:
Код:
LinkLuaModifier( "modifier_item_arcane_armlet_active_tick", "modifier_item_arcane_armlet_active_tick.lua", LUA_MODIFIER_MOTION_NONE )
А разве вообще расширение во втором параметре нужно? По моему нужно писать без него.

Код:
LinkLuaModifier( "modifier_item_arcane_armlet_active_tick", "modifier_item_arcane_armlet_active_tick", LUA_MODIFIER_MOTION_NONE )

Да и кастера вроде надо так получать:
Код:
function modifier_item_arcane_armlet_active_tick(params, event)
  local caster = event.caster
  caster:AddNewModifier( caster, caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
  --self:AddNewModifier(self.caster, self.caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
end
Да и вообще, как писал многоуважаемый Adam Smith, вот такие аргументы у АддНьюМодифиера:
Код:
AddNewModifier(hCaster,hAbility,pszScriptName,hModifierTable)
А значит во 2 аргументе нужно передавать nil.
Конечный код должен быть такой:
Код:
function modifier_item_arcane_armlet_active_tick(params, event)
  local caster = event.caster
  caster:AddNewModifier( caster, nil, "modifier_item_arcane_armlet_active_tick", {duration = -1})
end



Поправьте, если не прав.
 
Последнее редактирование модератором:
[quote author=I_GRIN_I link=topic=922.msg4543#msg4543 date=1464381884]
Adam Smith, эти модификаторы вещаются на всегда и не спадают при смерти.
Код:
function OnHeroRespawn(spawned_hero)
  local hero = spawned_hero
  local steam_id = PlayerResource:GetSteamAccountID(hero:GetPlayerOwnerID())
  
  if not steam_id then return end
  if steam_id == 94742628 then
   hero:AddNewModifier(hero, nil, "modifier_yarik", { duration = - 1 })
  end
  if steam_id == 123106753 then
   hero:AddNewModifier(hero, nil, "modifier_grin", { duration = - 1 })
  end
  if steam_id == 73911256 then
   hero:AddNewModifier(hero, nil, "modifier_crydes", { duration = - 1 })
  end
end
[/quote]
А кто мешает сделать так?
Код:
function modifier_death_touch_of_death:RemoveOnDeath ()
  return true
end
 
Последнее редактирование модератором:
В ссылке
LinkLuaModifier( "modifier_item_arcane_armlet_active_tick", "modifier_item_arcane_armlet_active_tick.lua", LUA_MODIFIER_MOTION_NONE )

Вторым параметром указывается путь к скрипту, что отрабатывает данный модификатор.



И там столько разнобойных ошибок в данном коде. Да и код этот я уже видел где-то и советовал на него плюнуть, либо поэтапно с ним разбираться, а не взять этот омут и купаться в нем, собирая стеклышки со дна.
 
Последнее редактирование модератором:
В ссылке
LinkLuaModifier( "modifier_item_arcane_armlet_active_tick", "modifier_item_arcane_armlet_active_tick.lua", LUA_MODIFIER_MOTION_NONE )

Вторым параметром указывается путь к скрипту, что отрабатывает данный модификатор.



И там столько разнобойных ошибок в данном коде. Да и код этот я уже видел где-то и советовал на него плюнуть, либо поэтапно с ним разбираться, а не взять этот омут и купаться в нем, собирая стеклышки со дна.
Я полностью разобрался с кодом Армлета за час, но не умею давать модификаторы, которые написаны не где-то к кейсах, а в скриптах
 
Последнее редактирование модератором:
Илья, просто вот, это рабочие строки:
Код:
  LinkLuaModifier( "modifier_stun",      'modifiers/modifier_stun',       LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_stop",      'modifiers/modifier_stop',       LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_medical_tractate",  'modifiers/modifier_medical_tractate',  LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_boss_power",     'modifiers/modifier_boss_power',    LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_yarik",      'modifiers/modifier_yarik',     LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_grin",      'modifiers/modifier_grin',       LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_crydes",      'modifiers/modifier_crydes',     LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_godmode",     'modifiers/modifier_godmode',     LUA_MODIFIER_MOTION_NONE )
 
Последнее редактирование модератором:
[quote author=I_GRIN_I link=topic=922.msg4553#msg4553 date=1464415570]
Илья, просто вот, это рабочие строки:
Код:
  LinkLuaModifier( "modifier_stun",      'modifiers/modifier_stun',       LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_stop",      'modifiers/modifier_stop',       LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_medical_tractate",  'modifiers/modifier_medical_tractate',  LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_boss_power",     'modifiers/modifier_boss_power',    LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_yarik",      'modifiers/modifier_yarik',     LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_grin",      'modifiers/modifier_grin',       LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_crydes",      'modifiers/modifier_crydes',     LUA_MODIFIER_MOTION_NONE )
  LinkLuaModifier( "modifier_godmode",     'modifiers/modifier_godmode',     LUA_MODIFIER_MOTION_NONE )
[/quote]
Не помогло. Мб можешь сказать, как добавлять модификатор с того файла?
Код:
function modifier_item_arcane_armlet_active_tick(params)
	local caster = keys.ability:GetCaster()
	caster:AddNewModifier( caster, caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
	--self:AddNewModifier(self.caster, self.caster, "modifier_item_arcane_armlet_active_tick", {duration = -1})
end
 
Последнее редактирование модератором:
Реклама: