Добавлен , опубликован
Собственно тот знаменитый хак на память который нам радостно предоставил DracoL1ch, который позволяет нам больше не морочится с системами отлова урона, или вовсе узнать координаты курсора без стороннего по.
Для сохранения требуется: экспериментальная версия pjass.exe
Причём не все подходят, меньше всего проблем было с этой версией
В хаке присутствует только 1 пример на изменение белой атаки у героя, остальные готовые функции можно найти на:
Хайве
Гитхабе
Просто копируем саму функцию, все остальное для её работы есть в наработке и сохраняем.
Так же на хайве есть инструкция по созданию собственных функций для чтения\изменения данных в памяти игры.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
20
quq_CCCP:
Diaboliko, там же тупо ресстояние за тик таймера, лич его правил на прямую, но тогда юнит начинает бегать во круг точки т.к расстояние за тик таймера слишком большое, юниту кажется что он не может дойти до точки. Там и стоит проверка, до миллионных же никто не будет рассчитывать дистанцию.
Ты путаешь с
function SetUnitCurrentMSper32 takes integer convertedHandle, real r returns nothing
32
Diaboliko, ну а бонус это тоже дистанция. Там наверняка деление на тик таймера и проверка на мин. значение
20
quq_CCCP:
Diaboliko, ну а бонус это тоже дистанция. Там наверняка деление на тик таймера и проверка на мин. значение
Я не понимаю куда ты клонишь. Бонус - аддитивно стакающаяся величина, даваемая тем же Безумием или Аурой Выносливости.
Код, которым пытался вычислить число знаков после запятой самого бонуса
globals
    constant real arginc = 0.10001
    constant real argexit = 0.90009
endglobals

function xxx takes nothing returns boolean
    local real r
        set  r = arginc
        loop
            exitwhen r == argexit
            call AddUnitMSBonus(gg_unit_uaco_0002, r)
            set  r = r + arginc
        endloop
        set  r = -arginc
        loop
            exitwhen r == -argexit
            call AddUnitMSBonus(gg_unit_uaco_0002, r)
            set  r = r -arginc
        endloop
    return false
endfunction

function Trig_zxcxc_Actions takes nothing returns nothing
    local real r
    local integer i = 0
    local trigger t = CreateTrigger()
        call TriggerAddCondition( t, Condition(function xxx))
        call BJDebugMsg(R2S(GetUnitMoveSpeed(gg_unit_uaco_0002)))
        loop
            call TriggerEvaluate(t)
        exitwhen i == 1000
        set  i = i + 1
        endloop
        call BJDebugMsg(R2S(GetUnitMoveSpeed(gg_unit_uaco_0002)))
    set  t = null
    return
endfunction

//===========================================================================
function InitTrig_zxcxc takes nothing returns nothing
    set gg_trg_zxcxc = CreateTrigger()
    call TriggerRegisterTimerEvent( gg_trg_zxcxc, 3., false )
    call TriggerAddAction( gg_trg_zxcxc, function Trig_zxcxc_Actions )
endfunction
Для чисел с N числом знаков после запятой выдал следующие значения конечного MS(начальный = 220)
8 (0.10000001) - 219.475
7 (0.1000001) - 219.685
6 (0.100001) - 219.685
5 (0.10001) - 219.475
Как к этому относиться - не представляю.
А протестив на 0.111... и 0.999... получилось
8 - 219.685
7 - 219.685
6 - 219.580
5 - 219.475
4 - 219.475
3 - 219.685
2 - 219.475
1 - 219.475
Так что без округления, по-видимому, не обойтись.
Я ведь верно понимаю что
I2R(R2I(currentBonus * 10^x))*10^-x
корректно "округляет" число до знака x после запятой?
20
Предыдущий вопрос решился формулой
	I2R( R2I( current_speed_taken_from_memory_and_converted_into_real + speed_bonus + 0.5 ) ) * 0.0001
Новый трабл:
Что возвращает GetUnitAbility(whichUnit, abilityId)? Логично предположить что адрес, но в ближайшие 24 часа протестить руки не дойдут.
32
Diaboliko, адресс абилки у юнита, если она есть, так же может возвращать 0 и отрец. значения, поэтому нужно обязательно проверять что вернула эта функция. Баффы это тоже абилки, они подчинаются тем же правилам что и обычные абилки, т.е по ро-коду можно получить их адресс, удалить, отредактировать через мемхак. Для дамми баффов юзайте 'Aasl' или другую ауру, чтобы делать баффы-иконки, которые ничего не делают, а висят в статусе для информации, им можно задать длительность, мигание, уровень и прочее.
20
Может ли возвращаться значение <= 0 если юнит гарантированно жив и имеет способность, с которой ведется работа?
32
Diaboliko:
Может ли возвращаться значение <= 0 если юнит гарантированно жив и имеет способность, с которой ведется работа?
Известны только случаи такого поведения, конкретики нет. Драколич такое обнаруживал.
20
Работает ли ожидаемо-стандартно функция:
function DisableUnitControl
?
Конкретно: будет ли он юнит искать цели для атаки, если его текущий приказ - атаковать на точку/удерживает позицию/простаивает?
Думаю расшарить контроль неуправляемого союзного бота для визуальной индикации создаваемого при спецэффичных обстоятельствах героя под контролем для этого бота. При этом лишать всех юнитов контроля при помощи упомянутой функции, дабы оставить лишь иконку этого героя как результат шары контроля. (ИИ все-равно триггерный)
Можно ли отдавать юниту приказы через ПКМ?(будет полностью игнорироваться или будет эффект как при добавлении непрерываемого флага через руну морфа(можно отдавать приказы, но юнит будет их игнорировать)?)
32
Diaboliko, кароче приказ отдать низя, но автоатака и последний отданный приказ будет работать.
Лучше юзать мут на 'Amov' и триггер с 2 событиями, так можно полностью убрать контроль юнита игроком, контролируя юнита триггернно.
20
Открыта ли уже возможность запуска кд без блокировки способности? (создание модели кулдауна на интерфейсе на нужном оффсете)
21
По поводу фатала при запуске кулдауна блинка. Он сайленсится и там какое-то значение надо поменять, чтобы не фаталило. Мб просто прямо в функцию запуска кулдауна любой способности встроить проверку и, если у способности фаталящее значение - менять его, запускать кд, а потом менять обратно?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.