- 28 Апр 2016
- 231
- 0
- Проект
- Защитники Изобилия | Defenders of Abundance
Хочу передать параметры в модификатор, но не знаю, как передать их через AddNewModifier, либо не знаю, как вывести их в самом модификаторе:
npc_items_custom.txt
Код:
"ThinkInterval" "0.03"
"OnIntervalThink"
{
"RunScript"
{
"ScriptFile" "items/item_thasdorah.lua"
"Function" "modifier_item_thasdorah_on_interval_think"
"per_time" "%bonus_attack_range_per_time"
"need_time" "%bonus_attack_range_time"
}
}
item_thasdorah.lua
Код:
LinkLuaModifier( "modifier_item_thasdorah_attack_range", "modifiers/modifier_item_thasdorah_attack_range", LUA_MODIFIER_MOTION_NONE )
function modifier_item_thasdorah_on_destroy(keys)
keys.caster:RemoveModifierByName("modifier_item_thasdorah_attack_range")
end
function modifier_item_thasdorah_on_interval_think(keys)
if not keys.caster:IsRangedAttacker() then
if keys.caster:HasModifier("modifier_item_thasdorah_attack_range") then
keys.caster:RemoveModifierByName("modifier_item_thasdorah_attack_range")
end
else
if not keys.caster:HasModifier("modifier_item_thasdorah_attack_range") then
keys.caster:AddNewModifier(keys.caster, self, "modifier_item_thasdorah_attack_range", {duration = -1, need_time = keys.need_time, per_time = keys.per_time})
end
end
end
modifier_item_thasdorah_attack_range.lua
Код:
LinkLuaModifier( "modifier_item_thasdorah_on_interval_think", "items/modifier_item_thasdorah_on_interval_think", LUA_MODIFIER_MOTION_NONE )
if modifier_item_thasdorah_attack_range == nil then
modifier_item_thasdorah_attack_range = class({})
end
function modifier_item_thasdorah_attack_range:IsPassive()
return false
end
function modifier_item_thasdorah_attack_range:IsHidden()
return false
end
function modifier_item_thasdorah_attack_range:DeclareFunctions()
local funcs = {
MODIFIER_PROPERTY_ATTACK_RANGE_BONUS
}
return funcs
end
function modifier_item_thasdorah_attack_range:GetAttributes()
return MODIFIER_ATTRIBUTE_MULTIPLE
end
function modifier_item_thasdorah_attack_range:OnCreated(params)
if IsServer() then
self:OnIntervalThink()
self:StartIntervalThink(1.0)
--[[self.per_time = per_time]]
print(self.per_time)
end
end
function modifier_item_thasdorah_attack_range:OnIntervalThink(params)
if IsServer() then
self.bonus_attack_range = self.per_time*math.ceil(GameRules:GetGameTime()/self.need_time)
print(self.bonus_attack_range)
end
end
function modifier_item_thasdorah_attack_range:GetModifierAttackRangeBonus()
return self.bonus_attack_range
end
Код:
[ W VScript ]: Script Runtime Error: ...ripts\modifiers\modifier_item_thasdorah_attack_range.lua:32: attempt to perform arithmetic on field 'need_time' (a nil value)
[ W VScript ]: stack traceback:
[ W VScript ]: ...ripts\modifiers\modifier_item_thasdorah_attack_range.lua:32: in function 'OnIntervalThink'
[ W VScript ]: ...ripts\modifiers\modifier_item_thasdorah_attack_range.lua:24: in function <...ripts\modifiers\modifier_item_thasdorah_attack_range.lua:22>
[ W VScript ]: [C]: in function 'AddNewModifier'
[ W VScript ]: ...a_addons\test1\scripts\vscripts\items\item_thasdorah.lua:12: in function <...a_addons\test1\scripts\vscripts\items\item_thasdorah.lua:5>
Последнее редактирование модератором: