(1.26) Всем привет, есть герои у которых отрицательная мана, а это значит, что при попытке купить предмет класса "Усиливающий" (Пример стандартных предметов: Книги, Монетка, Вязанка дров) нам напишет, что недостаточно маны и предмет купится, но упадет рядом с нами.
В общем при покупке предмета допустим "Книга1_Оглушение" герой должен получать способность или повышает её уровень.
Я использую для этого условие: GetItemTypeId(GetManipulatedItem()) == 'I00F', но тут как раз таки и случается проблема, что при отрицательной мане мы не получаем предмет, а он падает рядом.
Я использую для этого условие: GetItemTypeId(GetManipulatedItem()) == 'I00F', но тут как раз таки и случается проблема, что при отрицательной мане мы не получаем предмет, а он падает рядом.
- Как реализовать в таком случае Получение способности или повышение её уровня, когда мы не можем подобрать такой предмет из-за отрицательной маны?
- Как то можно использовать через код предметы типа "Усиливающий" для героев с отрицательным значением маны, дабы сработало событие на получение предмета?
Принятый ответ
Реализуй через продажу юнита вместо покупки предмета
Вроде как работает, через отслеживание Героя, который покупает предмет.
Есть ли разница в таком случае использовать при покупке Юнита или Предмет?
Есть ли разница в таком случае использовать при покупке Юнита или Предмет?
function SpellInc takes integer Spell returns nothing
local unit Hero=GetBuyingUnit()
local player NumberPlayer=GetOwningPlayer(Hero)
local integer PlayerId=GetPlayerId(NumberPlayer)
if GetUnitAbilityLevel(Hero, Spell) > 0 then
if GetUnitAbilityLevel(Hero, Spell) < udg_aLvlskill then
call IncUnitAbilityLevel(Hero,Spell)
else
call SetPlayerStateBJ(NumberPlayer, PLAYER_STATE_RESOURCE_LUMBER, ( GetPlayerState(NumberPlayer, PLAYER_STATE_RESOURCE_LUMBER) + 1 ) )
endif
else
if udg_count_spells[PlayerId] > 0 then
set udg_count_spells[PlayerId] = udg_count_spells[PlayerId] - 1
call UnitAddAbility( Hero, Spell)
if udg_NumberSpell[PlayerId] <= 7 then
set udg_NumberSpell[PlayerId] = ( udg_NumberSpell[PlayerId] + 1 )
set udg_SpellDel[PlayerId * 7 + udg_NumberSpell[PlayerId]] = Spell
call BJDebugMsg ( GetPlayerName(NumberPlayer) + ( "|c0086AD00" + ( ( "выучил способность" + GetAbilityName(Spell) ) + "|r" ) ) )
else
set udg_SpellDel[udg_NumberSpellDelete[1]] = Spell
call BJDebugMsg ( GetPlayerName(NumberPlayer) + ( "|c0086AD00" + ( ( "выучил способность" + GetAbilityName(Spell) ) + "|r" ) ) )
endif
else
call SetPlayerStateBJ(NumberPlayer, PLAYER_STATE_RESOURCE_LUMBER, ( GetPlayerState(NumberPlayer, PLAYER_STATE_RESOURCE_LUMBER) + 1 ) )
call BJDebugMsg("Вы приобрели Максимум способностей")
endif
endif
set Hero=null
set NumberPlayer=null
endfunction
function SpellUpgrade takes nothing returns nothing
local item Predmet=GetSoldItem()
local integer SoldItem=GetItemTypeId(Predmet)
local integer Spell
if SoldItem == 'I002' then
set Spell = 'AOcr'
call SpellInc(Spell)
call RemoveItem(Predmet)
endif
set Predmet = null
endfunction
//===========================================================================
function InitTrig_Test takes nothing returns nothing
set gg_trg_Test = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Test, EVENT_PLAYER_UNIT_SELL_ITEM )
call TriggerAddAction( gg_trg_Test, function SpellUpgrade )
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Smeto
Есть ли разница в таком случае использовать при покупке Юнита или Предмет?