Функция SquareRoot даёт такие значения. Убери её вызов и корень считай на калькуляторе Windows.
Смещение у тебя такое себе. Делишь на 100, умножаешь на 22. Такое число вполне себе может не иметь точного представления в типе float, зависит от значений максимальных координат.
И хватит использовать BJDebugMsg. Используйте это, рассинхрона не будет.
function DebugMsg takes string s returns nothing
call DisplayTimedTextToPlayer(GetLocalPlayer(), 0., 0., 5., s)
endfunction
А что мешает отслеживать изменение содержимого инвентаря? Т.е. получение предмета, который подходит для манипуляций, после чего поочерёдно проверять только те списки, в которых этот предмет участвует... ну и делать что надо
Так ведь я так и делаю. Юнит получает предмет, содержимое его инвентаря записывается в таблицу. И вот, я не могу придумать по какой схеме мне сравнить эту таблицу со списками рецептов. Вот есть TransfigurationData.List[ID] в нём списки TransfigurationData.List[ID][ID1,2,3,4,5....]
Нужно как-то сделать проверку есть ли в списке TransfigurationData.List[0][1](как пример) то что в инвентаре героя, если да то убрать их и выдать TransfigurationData.Result[Тот же ID что и у List] :)
О ес, оно заработало я сам всё решил. Спасибо за внимание :)
Создаёшь книгу заклинаний, создаёшь фейк заклинания(тип заклинания указание точки применения) служащие лишь для того чтобы отследить их ID.
Добавляешь рабочему необходимые постройки, отлавливаешь сработавшее заклинание и приказываешь ему строить здание в месте указания цели способности.
Создаёшь массив из предметов типа "Хрустальный шар" убираешь ему способность разведки местности, добавляешь кастомные 2 способности:
Повышение урона
Фейк повышение любой характеристики на 0 ед.
Далее логика на гуи: Юнит использовал предмет, проверка типа предмета и золота, действие - убрать предмет старый, дать новый, установить значение золота как текущее значение минус ( сколько стоит апгрейд )
Рабочий код:
local ItemUpgrade = CreateTrigger()
TriggerRegisterUnitEvent(ItemUpgrade,GetTriggerUnit(), EVENT_UNIT_USE_ITEM)
TriggerAddAction(ItemUpgrade,function()
if GetItemTypeId(GetManipulatedItem()) == FourCC('I000') and GetPlayerState(GetOwningPlayer(GetTriggerUnit()),PLAYER_STATE_RESOURCE_GOLD) > 100 then
RemoveItem(GetManipulatedItem())
UnitAddItemByIdSwapped(FourCC('I001'),GetTriggerUnit())
SetPlayerState(GetOwningPlayer(GetTriggerUnit()),PLAYER_STATE_RESOURCE_GOLD,PLAYER_STATE_RESOURCE_GOLD-100)
elseif GetItemTypeId(GetManipulatedItem()) == FourCC('I000') then BJDebugMsg('Нехватает золота для улучшения')
end
end)
Вас не смущает уровень способности - 20? Можно доигратся чтобы карта 40 минут загружалась...
Настоятельно не рекомендую делать абилки на 4+ уровней, в слк таблице место только для 4 уровней, все остальное в тхт файлах, а их вар распаковывает жутко долго. Так же не мешает делать подгрузку, чтобы все необходимое было либо изначально на карте, либо использовать preload.
Да, это в корни неверная система вместо уровней я лучше напишу кодом таблицу изменений характеристик способностей. Если это будет реально...
Вы так говорите, как будто близард вас слушает. Когда товар куплен, уже пофиг, нравится или нет, бабло на балансе
Из недавнего письма с переносом даты совсем не просто так упоминается о возврате средств, это способ Blizzard спекулировать законами США о возврате средств, так как сроки поджимают :) Так что как раз сейчас бабло они назад отдадут при первом же запросе. Да и как бы там ни было, Reforged > Nil.
» WarCraft 3 / Откуда могла взяться погрешность?
Bergi_Bear: Потому что на карте ничего нет ) А так, это лучшее разрешение для работы и игр и фильмов )
» WarCraft 3 / Критическая ошибка в триггерах
» WarCraft 3 / Критическая ошибка в триггерах
» WarCraft 3 / Критическая ошибка в триггерах
» WarCraft 3 / Критическая ошибка в триггерах
И добавляешь war3map.j обратно.
пример:
» WarCraft 3 / Критическая ошибка в триггерах
» WarCraft 3 / Fatal eror
» WarCraft 3 / FourCC как собрать integer обратно?
» WarCraft 3 / [Lua] Преобразование предметов
» WarCraft 3 / [Lua] Сравнение списков(массивов)
Ред. DarkLigthing
» WarCraft 3 / [Lua] Сравнение списков(массивов)
Нужно как-то сделать проверку есть ли в списке TransfigurationData.List[0][1](как пример) то что в инвентаре героя, если да то убрать их и выдать TransfigurationData.Result[Тот же ID что и у List] :)
» WarCraft 3 / как дать рабочему второй список построек?
Добавляешь рабочему необходимые постройки, отлавливаешь сработавшее заклинание и приказываешь ему строить здание в месте указания цели способности.
» WarCraft 3 / Кто знает как сделать систему улучшения предмета?
» WarCraft 3 / Кто знает как сделать систему улучшения предмета?
Ред. DarkLigthing
» WarCraft 3 / Кто знает как сделать систему улучшения предмета?
Повышение урона
Фейк повышение любой характеристики на 0 ед.
» WarCraft 3 / [Lua] Микрофриз при получении способности
Ред. DarkLigthing
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
Ред. DarkLigthing
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
Возможно ещё стоит здесь отметиться как бета-тестер
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32