Удаление предмета после использования

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

UZzip

Продвинутый
2 Янв 2016
282
1
Вобщем добавил форстафу
"ItemStackable" "1"
"ItemPermanent" "0"
"ItemInitialCharges" "1"

DOTA_ABILITY_BEHAVIOR_IMMEDIATE

а он всё равно не исчезает после применения. Я так понимаю он и не исчезнет потому что стандартный переделываю.
Переписывать не по силам а готового в SpellLibrary нету блин.

В общем нужен скрипт удаления предмета после его применения.
 
Последнее редактирование модератором:
Добавь блок OnSpellStart с RunScript в котором удаляй нужный предмет. Вроде должно сработать.
 
[quote author=UZzip link=topic=938.msg4616#msg4616 date=1464549195]
Вобщем добавил форстафу
"ItemStackable" "1"
"ItemPermanent" "0"
"ItemInitialCharges" "1"

DOTA_ABILITY_BEHAVIOR_IMMEDIATE

а он всё равно не исчезает после применения. Я так понимаю он и не исчезнет потому что стандартный переделываю.
Переписывать не по силам а готового в SpellLibrary нету блин.

В общем нужен скрипт удаления предмета после его применения.
[/quote]

Разбирайся, вроде очевидно
Код:
		"item_tome_lvlup"
		{    
			// General
			//-------------------------------------------------------------------------------------------------------------
		  "BaseClass"						"item_datadriven"
			"ID"							"1192"
		  "AbilityBehavior"        "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE"
			
			"AbilityUnitTargetTeam"			"DOTA_UNIT_TARGET_TEAM_FRIENDLY"
			"AbilityUnitTargetType"			"DOTA_UNIT_TARGET_HERO"
			
			"AbilityTextureName"	    "item_tome_lvlup"
		
		
			// Stats
			//-------------------------------------------------------------------------------------------------------------
			"AbilityCastPoint"				"0.0"
			
			// Item Info
			//-------------------------------------------------------------------------------------------------------------
			"ItemCost"						"1000"
			"ItemQuality"					"component"
			"ItemStackable"					"1"
			"ItemPermanent"					"0"
			"ItemInitialCharges"			"1"
			"ItemKillable"         "1"
			"ItemSellable"         "1"
			"ItemDroppable"         "1"
			"ItemPurchasable"				"1"

			"OnSpellStart"
			{
				"RunScript"
				{
					"Target"			"CASTER"
					"ScriptFile"		"tome.lua"
					"Function"			"tome_levelup"
				}
		    "SpendCharge"
				{
				}    
			}
		}
 
Последнее редактирование модератором:
Если тебе конкретный предмет удалять, то все будет просто)

Как тебе и говорят и в скрипте используешь RemoveItemFromHero(data)
 
"OnSpellStart"
{
"RunScript"
{
"Target" "CASTER"
"ScriptFile" "tome.lua"
"Function" "tome_levelup"
}
"SpendCharge"
{
}
}
это добавлю предмету, он повторюсь у меня стандартный "BaseClass" "item_force_staff", сработает?

а вот "tome.lua" что в нём написать? нашол один пример на гитхабе, помогите переписать на удаление.

Код:
function RemoveItemFromHero(data)
local caster = data.caster
local item = nil
local charges = 0
local first = 0
	for i = 0, 5 do
		item = caster:GetItemInSlot(i)
		if item ~= nil then
			if item:GetAbilityName() == data.item_name and first == 0 then
				if item:IsStackable() == true then
					if item:GetCurrentCharges() > 1 then
						charges = item:GetCurrentCharges()
						item:SetCurrentCharges(charges-1)
					else
						caster:RemoveItem(item)
					end
				else
					caster:RemoveItem(item)			
				end
				first = 1
			end
		end
	end	
end
взял тут
 
Последнее редактирование модератором:
Мне кстати нужно удалять 1 заряд. а не предмет полностью...
 
[quote author=UZzip link=topic=938.msg4640#msg4640 date=1464620237]
это добавлю предмету, он повторюсь у меня стандартный "BaseClass" "item_force_staff", сработает?

а вот "tome.lua" что в нём написать? нашол один пример на гитхабе, помогите переписать на удаление.

Код:
function RemoveItemFromHero(data)
local caster = data.caster
local item = nil
local charges = 0
local first = 0
	for i = 0, 5 do
		item = caster:GetItemInSlot(i)
		if item ~= nil then
			if item:GetAbilityName() == data.item_name and first == 0 then
				if item:IsStackable() == true then
					if item:GetCurrentCharges() > 1 then
						charges = item:GetCurrentCharges()
						item:SetCurrentCharges(charges-1)
					else
						caster:RemoveItem(item)
					end
				else
					caster:RemoveItem(item)			
				end
				first = 1
			end
		end
	end	
end
взял тут
[/quote]
Тебе важно SpendCharge - это тратит заряд.
И нет не сработает, любые такие изменения доступны только для baseclass item_datadriven, и для стандартных предметов НЕ СРАБОТАЮТ.
 
Последнее редактирование модератором:
В Рефлексе, помнится мне, были форс стафы с чарджами. Вообще, как вариант, можно использовать те сапожки, которые в холдауте толкали с зарядами и их оверрайдить. Или сделать луа-айтем по такому принципу, по которому делал свой рывок с ножом Илья.
 
Я с радостью поделюсь с тобой

v0aTHcC.gif
 
Ребята спасибо как всегда помогаете!
Кстати а почему стандартным предметам можно устанавливать параметр суммирования заряда, но нельзя его удалить?
 
Ребята спасибо как всегда помогаете!
Кстати а почему стандартным предметам можно устанавливать параметр суммирования заряда, но нельзя его удалить?
На
Код:
if item_enchanted_raspberries == nil then
	item_enchanted_raspberries = class({})
end
function item_enchanted_raspberries:OnSpellStart()
	local caster = self:GetCaster()
 local mana_restore = self:GetSpecialValueFor("mana_restore")
 local hp_restore = self:GetSpecialValueFor("hp_restore")
 local particle_lifesteal = "particles/items3_fx/octarine_core_lifesteal.vpcf"

 local lifesteal_fx = ParticleManager:CreateParticle(particle_lifesteal, PATTACH_ABSORIGIN_FOLLOW, caster)
	ParticleManager:SetParticleControl(lifesteal_fx, 0, caster:GetAbsOrigin())

 local particle = "particles/items3_fx/mango_active.vpcf"
 local fx = ParticleManager:CreateParticle(particle, PATTACH_ABSORIGIN_FOLLOW, caster)
	ParticleManager:SetParticleControl(fx, 0, caster:GetAbsOrigin())

 EmitSoundOn("DOTA_Item.Mango.Activate", caster)
 EmitSoundOn("DOTA_Item.Maim", caster)
 caster:Heal(hp_restore, self)
 caster:SetMana(caster:GetMana() + mana_restore)
 local charge = self:GetCurrentCharges()
 if charge > 1 then
  self:SetCurrentCharges(charge - 1)
  self:StartCooldown(2.5)
 else
  self:RemoveSelf()
 end
end
 
Последнее редактирование модератором:
UZzip, он тебе просто скинул луа своего айтема, который снимает чарджи и удаляет его, если чарджей меньше 1. Если ты понимаешь сам код.
 
Реклама: