Хотел сделать мешочек с золотом, на подобии руны, чтобы при поднятии он активировался и давал золото, но работает странно, только 1 раз и все, если просто использовать то все нормально.
Код:
"item_gold_bag"
{
"ID" "2204"
"BaseClass" "item_lua"
"ItemPurchasable" "0"
"ScriptFile" "items/item_gold_bag.lua"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_MOVEMENT"
"Model" "models/props_gameplay/red_box.vmdl"
"Effect" "particles/generic_gameplay/dropped_item.vpcf"
"ItemCastOnPickup" "1"
"ItemQuality" "consumable"
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER" //FIELD_FLOAT or FIELD_INTEGER
"gold_min" "10"
}
"02"
{
"var_type" "FIELD_INTEGER" //FIELD_FLOAT or FIELD_INTEGER
"gold_max" "30"
}
}
}
Код:
if item_gold_bag == nil then item_gold_bag = class({}) end
--require('libraries/StatsFinder')
function item_gold_bag:OnSpellStart()
local caster = self:GetCaster()
local greed = nil
local midas1 = nil
local midas2 = nil
local multiplier = 1
local gold_min = self:GetSpecialValueFor("gold_min")
local gold_max = self:GetSpecialValueFor("gold_max")
local gold_mul = 1
local gold_mul_greed = 0
local gold_mul_midas1 = 0
local gold_mul_midas2 = 0
local gold_rnd = RandomInt(gold_min,gold_max)
if caster:FindAbilityByName("alchemist_goblins_greed") then
greed = caster:FindAbilityByName("alchemist_goblins_greed")
gold_mul_greed = greed:GetSpecialValueFor("bounty_multiplier_tooltip")
else
gold_mul_greed = 0
end
if caster:FindItemByName("item_hand_of_midas_custom") then
midas1 = caster:FindItemByName("item_hand_of_midas_custom")
gold_mul_midas1 = midas1:GetSpecialValueFor("rune")*0.01
else
gold_mul_midas1 = 0
end
if caster:FindItemByName("item_hand_of_midas_custom_two") then
midas2 = caster:FindItemByName("item_hand_of_midas_custom_two")
gold_mul_midas2 = midas2:GetSpecialValueFor("rune")*0.01
else
gold_mul_midas2 = 0
end
local gold_mul = gold_mul + gold_mul_greed/2 + gold_mul_midas1/2 + gold_mul_midas2/2
local gold = (20 + (gold_rnd*0.5*TIME/60) )* gold_mul
print("Gold: "..gold.."\nGoldMul: "..gold_mul.."\nGreed: "..gold_mul_greed.."\nMidas1: "..gold_mul_midas1.."\nMidas2: "..gold_mul_midas2)
caster:ModifyGold(gold, false, 0)
SendOverheadEventMessage( caster, OVERHEAD_ALERT_GOLD , caster, gold, nil )
--if self then
-- caster:RemoveItem(self)
--end
end