Зачем, почему не взять просто GetHandleId от истекшего таймера, и судя по названию муи - то таймеров может быть много, хендл ты вернешь первого сработавшего. Какая то несусветная хрень, напиши сразу че делать собрался, то не понимаю подобных решений.
Chongoyuto, блин тебе мб из доты дать код, он примитивный, весь эффект дает soulburn файрлорда, а урон отдельный триггер, просто себе скопировал и можно не вникать.
Ну просадки фпс будут на любом патче если ты вдруг увидишь кучу обьектов которых до этого не видел, т.к движок начнет подгружать их в память, т.к игра однопоток - побоку скока там у вас ядер и прочего дерьма, для игры всегда есть 1 ядро и 512мб озу, и точка. Реальный рост фпс будет зависить лишь от частоты ядра, больше - быстрее. Разумеется карты сделанные кривыми руками подлагивают, иногда так конкретно, если вспомнить всякие гринт тд или тот же легион тд. Ну и в целом игра заточена под виндовс и директ их, на котором она вышла. Близарды так и не переписали рендер движка по нормальному, и поэтому в рефаунде даже усугубилось всё.
Все стандартные стомп способности вызывают просадку фпс, причем чем больше карта - тем сильнее, это баг - т.к один из кодеров решил что шибко долго искать все декрации в радиусе, лучше целиком в цикле перебрать весь их класс чтобы пересчитать им высоту над рельефом, когда деформируется земля - пересчитываются высоты всех стоящих на ней обьектов - чтобы они не висели в воздухе. Подобное было и в сравнительно современных играх.
// Evasion
// Blur
// Drunken Brawler
// Butterfly
// Halberd
// Talisman
// Smoke screen -
// Whirling Axes - 60%
// Crippling Fear - 50%
// Drunken Haze - 45, 55, 65, 75
function GT1 takes unit SFI returns nothing // evasion up
local real GR1 = 1
local integer GP1 = UnitInventorySize( SFI )
local integer x = 0
local item i
local integer SUI = GetUnitAbilityLevel( SFI, 'A03P' ) // blur
if SUI > 0 then
if SUI == 1 then
set GR1 = GR1 * 0.8
elseif SUI == 2 then
set GR1 = GR1 * 0.7
elseif SUI == 3 then
set GR1 = GR1 * 0.6
elseif SUI == 4 then
set GR1 = GR1 * 0.5
endif
endif
set SUI = GetUnitAbilityLevel( SFI, 'A0MX' )
if SUI > 0 then
set GR1 = GR1 * ( 1 - ( 0.05 + 0.05 * SUI ) )
endif
loop
exitwhen x > GP1
set i = UnitItemInSlot( SFI, x )
if F01( i ) == ButterflyActiveId then
set GR1 = GR1 * 0.65
elseif F01( i ) == HN0 or F01( i ) == HeavensHalbertId then
set GR1 = GR1 * 0.75
endif
set x = x + 1
endloop
set SUI = R2I( ( 1 - GR1 ) / 0.05 )* 1
if SUI > 0 then
call AddPermanentAbility( SFI, 'A2V3' )
call SetUnitAbilityLevel( SFI, 'A2V3', SUI )
set x = GetUnitAbility( SFI, 'A2V3' )
if x < 1 then
call BJDebugMsg("ability not added!")
else
call SaveInteger( HashData, ExEvasionData, GetHandleId( SFI ), x )
if IsUnitIllusion( SFI ) then
if RMem( x + 0x3C ) > 0 then
call WMem( x + 0x3C, 0 )
endif
endif
endif
else
call UnitRemoveAbility( SFI, 'A2V3' )
call RemoveSavedInteger( HashData, ExEvasionData, GetHandleId( SFI ))
endif
set i = null
endfunction
Вот функция сложения шансов промахов из доты, автор IceFrog.
GR -это вероятность попасть по юниту, перечисляются всё источники, после идёт округление до 5, т.у у пассивки шаг промахов 5%, добивать до 1% смысла нет.
Tredor46, как нето перечислены источники уклонения и ведется сложение, после 1 абилке 20 лвл выдается уровень, таким образом в доте 6.83 фрога слкадываются пассивные уклонения,
Svintus, AI нативки работают по большей части в потоке AI скрипта, скрипт пишется на языке JASS, советую изучить для начала, после посмотреть список AI нативок и стандартные melee ai скрипты.
Скрипт AI можно запустить только для игрока бота, если слотом управляет человек - всё AI не стартанет, убираешь все стандартные триггеры сражения и создаешь запуск твоего ии для конкретного игрока если им управляет компьютер.
Потому что ты не понимаешь как работает сфера, ты пытаешься скрыть блин иконку самой сферы, у которой иконки нету в природе... Ты видишь иконку способности которую ты запихал в сферу, и она вручается именно движком игры юниту и подвергается сайленсу чтобы не работала сама по себе, абилка сферы же делает принудительный каст (его и руны используют).
В целом очень хреновый кастыль, что мешает дамми каст или каст руной сделать?
WilliamBz, ну так это писание своего мили ии, так или иначе. К слову всё микро, применение спеллов раелизованно в движке игры, поэтому с кастом героями поосторожнее.
К слову можно ИИ написать и в обычном редакторе триггеров, но это муторно да и самому микро реализовать не так уж и просто.
В скрипте четко прописано какого героя брать и как его качать, поэтому подмена в процессе игры всё ломает. Стандартный ии разыгрывает только заранее заготовленные шаблоны, которые определяются рандомом при старте и в процессе игры не меняются.
Придется писать ИИ ручками с нуля.
» WarCraft 3 / Небольшой вопрос касательно хэш-таблиц
» WarCraft 3 / Ищу карту
» WarCraft 3 / Убрать "награду" за убийство иллюзий
» WarCraft 3 / Насколько быстро выполняется if ? - [Jass]
» WarCraft 3 / Про перенос warhammer 40000: Horus heresy в warcraft III
» WarCraft 3 / Способности и алгоритмы на заказ
» WarCraft 3 / Как сделать чтобы крипы бежали по указанной линии ?
» WarCraft 3 / Проседает фпс. Как лечить?
Все стандартные стомп способности вызывают просадку фпс, причем чем больше карта - тем сильнее, это баг - т.к один из кодеров решил что шибко долго искать все декрации в радиусе, лучше целиком в цикле перебрать весь их класс чтобы пересчитать им высоту над рельефом, когда деформируется земля - пересчитываются высоты всех стоящих на ней обьектов - чтобы они не висели в воздухе. Подобное было и в сравнительно современных играх.
» WarCraft 3 / Функция сложения или вычитания шансов по Формуле убывающей полезности из Dota 2
» WarCraft 3 / Функция сложения или вычитания шансов по Формуле убывающей полезности из Dota 2
» WarCraft 3 / Функция сложения или вычитания шансов по Формуле убывающей полезности из Dota 2
» WarCraft 3 / Как начать писать свой код ИИ?
Скрипт AI можно запустить только для игрока бота, если слотом управляет человек - всё AI не стартанет, убираешь все стандартные триггеры сражения и создаешь запуск твоего ии для конкретного игрока если им управляет компьютер.
» WarCraft 3 / Как сделать полоску хп у юнита/здания невидимой?
Либо мемхаком, флаг юниту особый ставим -
» WarCraft 3 / В какие моменты имя функции конвертируется в число?
» WarCraft 3 / Пассивные способности через сферы
В целом очень хреновый кастыль, что мешает дамми каст или каст руной сделать?
» WarCraft 3 / Возможно ли получить область триггера? - [Jass]
» WarCraft 3 / Возможно ли получить область триггера? - [Jass]
» WarCraft 3 / Способность "сторожевая сова"
» WarCraft 3 / Почему не работает локальный триггер?
Ред. quq_CCCP
» WarCraft 3 / Как грамотно отредактировать ИИ скрипт, чтобы он выбирал кастомного героя, который не всегда может быть доступен
К слову можно ИИ написать и в обычном редакторе триггеров, но это муторно да и самому микро реализовать не так уж и просто.
» WarCraft 3 / Как грамотно отредактировать ИИ скрипт, чтобы он выбирал кастомного героя, который не всегда может быть доступен
Придется писать ИИ ручками с нуля.
» WarCraft 3 / Респавн мобов
» WarCraft 3 / Помогите снять защиту с карты!
» WarCraft 3 / помогите с war3map.shd
» WarCraft 3 / Независимый художник показывает свой вариант HD-ремастера классических моделей