Привет, друг! :)
При получении способности происходит микрофриз, однако при повышении уровня способности или достижения максимума этого нет.
Суть в том, что при покупке предмета герою даётся способность. Реализовано это через создание способности с именем в виде равкода, а ниже берётся предмет который был куплен, парсится строчка его имени и отправляется в FourCC() для преобразования в integer. Но почему-то это вызывает фриз именно при получении новой способности. В каком месте я перегрузил систему? :) Может есть вариант это сделать проще?
При получении способности происходит микрофриз, однако при повышении уровня способности или достижения максимума этого нет.
Суть в том, что при покупке предмета герою даётся способность. Реализовано это через создание способности с именем в виде равкода, а ниже берётся предмет который был куплен, парсится строчка его имени и отправляется в FourCC() для преобразования в integer. Но почему-то это вызывает фриз именно при получении новой способности. В каком месте я перегрузил систему? :) Может есть вариант это сделать проще?
Видео:
-- [TRIGGER] Item To Ability System
local BackSoldItem = CreateTrigger()
TriggerRegisterPlayerUnitEvent(BackSoldItem,Player(PLAYER_NEUTRAL_PASSIVE),EVENT_PLAYER_UNIT_SELL_ITEM)
TriggerAddAction(BackSoldItem,function()
local ABrawcode = FourCC(GetItemName(GetSoldItem()))
local Hero = GetBuyingUnit()
local ABlevel = GetUnitAbilityLevel(Hero,ABrawcode)
if ABlevel == 0 then UnitAddAbility(Hero,ABrawcode)
elseif ABlevel < 20 then SetUnitAbilityLevel(Hero,ABrawcode,GetUnitAbilityLevel(Hero,ABrawcode) + 1)
elseif ABlevel >= 20 then
local hOwner = GetOwningPlayer(Hero)
local aName = GetAbilityName(ABrawcode)
SetPlayerState(hOwner,PLAYER_STATE_RESOURCE_LUMBER,GetPlayerState(hOwner,PLAYER_STATE_RESOURCE_LUMBER)+100)
ErrorMessage(hOwner,'Достигнут максимальный уровень '..aName..'!')
end
AddItemToStock(GetTriggerUnit(),GetItemTypeId(GetSoldItem()),0,0)
end)
-- [END TRIGGER]
Принятый ответ
Видимо у спосбности много уровней. Чтобы избежать микрофриза при получении, создайте юнита в начале игры, дайте ему способность и удалите его.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Настоятельно не рекомендую делать абилки на 4+ уровней, в слк таблице место только для 4 уровней, все остальное в тхт файлах, а их вар распаковывает жутко долго. Так же не мешает делать подгрузку, чтобы все необходимое было либо изначально на карте, либо использовать preload.