CustomGames.ru - Dota 2 пользовательские игры

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

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Вобщем добавил форстафу
"ItemStackable"            "1"
"ItemPermanent"          "0"
"ItemInitialCharges"      "1"

DOTA_ABILITY_BEHAVIOR_IMMEDIATE

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

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

Оффлайн RecoveryIt

  • 70
  • Мощь: 1
Добавь блок OnSpellStart с RunScript в котором удаляй нужный предмет. Вроде должно сработать.

Оффлайн CryDeS

  • Друзья CG
  • 1194
  • Мощь: 11
Вобщем добавил форстафу
"ItemStackable"            "1"
"ItemPermanent"          "0"
"ItemInitialCharges"      "1"

DOTA_ABILITY_BEHAVIOR_IMMEDIATE

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

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

Разбирайся, вроде очевидно
Код
		"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"
{
}       
}
}

Оффлайн Илья

  • Супермодератор
  • 1892
  • Мощь: 16
Если тебе конкретный предмет удалять, то все будет просто)

Как тебе и говорят и в скрипте используешь RemoveItemFromHero(data)

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Цитировать
"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
взял тут

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Мне кстати нужно удалять 1 заряд. а не предмет полностью...

Оффлайн CryDeS

  • Друзья CG
  • 1194
  • Мощь: 11
это добавлю предмету, он повторюсь у меня стандартный "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
взял тут
Тебе важно SpendCharge - это тратит заряд.
И нет не сработает, любые такие изменения доступны только для baseclass item_datadriven, и для стандартных предметов НЕ СРАБОТАЮТ.

Оффлайн I_GRIN_I

  • Продвинутый
  • 376
  • Мощь: 6
  • Научиться бы скриптить...
В Рефлексе, помнится мне, были форс стафы с чарджами. Вообще, как вариант, можно использовать те сапожки, которые в холдауте толкали с зарядами и их оверрайдить. Или сделать луа-айтем по такому принципу, по которому делал свой рывок с ножом Илья.

Оффлайн Илья

  • Супермодератор
  • 1892
  • Мощь: 16
Я с радостью поделюсь с тобой


Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Ребята спасибо как всегда помогаете!
Кстати а почему стандартным предметам можно устанавливать параметр суммирования заряда, но нельзя его удалить?
« Последнее редактирование: 31-05-2016, 14:34:53 от UZzip »

Оффлайн Adam Smith

  • Друзья CG
  • 466
  • Мощь: 6
  • жрять жри его
Ребята спасибо как всегда помогаете!
Кстати а почему стандартным предметам можно устанавливать параметр суммирования заряда, но нельзя его удалить?
На
Код
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
By PG.Freeman

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Adam Smith, это куда и как? =)

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Adam Smith, ПОДНИМУ, не заметили наверно.

Оффлайн I_GRIN_I

  • Продвинутый
  • 376
  • Мощь: 6
  • Научиться бы скриптить...
UZzip, он тебе просто скинул луа своего айтема, который снимает чарджи и удаляет его, если чарджей меньше 1. Если ты понимаешь сам код.