Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Наработка
Версия Warcraft:
1.26 и ниже
Собственно тот знаменитый хак на память который нам радостно предоставил DracoL1ch, который позволяет нам больше не морочится с системами отлова урона, или вовсе узнать координаты курсора без стороннего по.
Для сохранения требуется: экспериментальная версия pjass.exe
Причём не все подходят, меньше всего проблем было с этой версией
В хаке присутствует только 1 пример на изменение белой атаки у героя, остальные готовые функции можно найти на:
Хайве
Гитхабе
Просто копируем саму функцию, все остальное для её работы есть в наработке и сохраняем.
Так же на хайве есть инструкция по созданию собственных функций для чтения\изменения данных в памяти игры.
2
32
7 лет назад
Отредактирован quq_CCCP
2
ClotPh, Есть функция которая возвращяет ид приказа абилки - ид == 0 значить кулдаун не запустить, возвращяем false.
Ну а так надо быть упоротым чтобы умышленно запускать кд у способности которая при этом фаталит, будто ты не знаешь что ты за способность импользуешь...
0
21
7 лет назад
0
^ Ну вот и решение, перестроить в обновлении хака, если такое будет, функцию с учетом этого, а пока так, норм, идеальное определение.
А обстоятельства разные могут быть, не обязательно конкретная способность, вдруг там после выучивания, например, надо любому герою любую активную способность в кулдаун отправлять... Короче, спс, разберусь
0
32
7 лет назад
0
Вот кулдаун абилок
    function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
        local integer pAbility = 0
    
        if whichUnit == null or GetUnitAbilityLevel( whichUnit, abilityId  ) < 1 or cd == 0.00  then
            return false
        endif
    
        set pAbility = GetUnitAbilityForAddresss( ConvertHandle( whichUnit ), abilityId )
    
        if pAbility == 0 then
            return false
        else
            set Memory[pReserverdIntArg1 / 4] = cleanInt( realToIndex( cd ) )
            call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
            return IsAbilityOnCooldown( pAbility )
        endif
        
        return false
    endfunction
2
21
7 лет назад
2
***
Вот, кстати, и готовая идея для абилы. Ульта - заклинания вражеских героев после изучения сразу уходят в перезарядку.
Этому же чару - АоЕ нюк через всю карту со смешным уроном, но по попавшим временно увеличивает перезарядки их заклинаний на 4 секунды.
То есть какая-нибудь квопа ульт учит, он у нее на перезарядку уходит, закидываем квопу нюками этими и ульт она никогда не прокастит, а если уж там еще войда с Time Dilation подключить, вообще порнуха начинается.
Шлите Гейбу с жабой, новая мета будет в стиле колоды "Stasis" в Magic the Gathering - заклинания у героев есть, они не под салом, а прокастить их не могут и дико бесятся.
Там сейчас вообще эти модификации перезарядок - поле непаханое даже во второй доте, можно столько зависимостей и комбинаций ввести, что ппц.
0
32
7 лет назад
0
Мне бы кто дал идеи для оригинальных дизейблов, то щяс почти все можно а придумать немогу... Сделал пока аналог ульта сларка для предмета (получилось неплохо).
0
21
7 лет назад
0
Можно попробовать этим поупарываться
Обычно идей появляется больше, чем надо, некоторые трудности как раз в реализации
0
20
7 лет назад
0
Все годное уже давно придумали близы. Ну и модмейкеры. Правда близы никогда не делали сложных механик...бтв, тут вроде писалось что можно отдельный скилл в сало закинуть. Чисто способность инвентаря 2 лвла в него закинуть удастся?
Нвм, сразу на ум пришел нужный. Костыль)
0
32
7 лет назад
0
ClotPh:
Можно попробовать этим поупарываться
Обычно идей появляется больше, чем надо, некоторые трудности как раз в реализации
Вот у меня пока нету что то...
Diaboliko:
Все годное уже давно придумали близы. Ну и модмейкеры. Правда близы никогда не делали сложных механик...бтв, тут вроде писалось что можно отдельный скилл в сало закинуть. Чисто способность инвентаря 2 лвла в него закинуть удастся?
Нвм, сразу на ум пришел нужный. Костыль)
Можно даже атаку или перемещение.
2 или 3 вида сала есть.
Сало сферы к примеру не отключает автоатаку а тупо нёдает нажать кнопку.
0
21
7 лет назад
0
Так. Ну и втф? Ничерта не понятно.
Файл pjass.exe скопирован с заменой, куда надо (именно куда надо, т. к. там был другой pjass.exe и он заменён).
Что-то еще надо распаковать? После запуска он выдает DOS-окно и молча "висит".
Ладно, закрываю, идем дальше.
*******
Карта скачана.
В игре запускается следующим образом: появляется Чародей Крови, инфа про то, что хак классный и бла-бла-бла. Потом появляется блейдмастер, дальше ничего не происходит.
Если открыть карту в редакторе и просто пересохранить - она перестаёт запускаться (со включенным cJass выдаёт 11 ошибок, без него не выдаёт ошибок, но всё равно перестаёт запускаться).
Если удалить все триггеры вообще и кастом код и пересохранить - карта запускается, естественно, пустой.
Ради эксперимента оставляю только этот кастом код:
Эти 3 нативные функКции необходимы дя работы хака, остальное можно не копировать!
native MergeUnits takes integer qty, integer a, integer b, integer make returns boolean
native ConvertUnits takes integer qty, integer id returns boolean
native IgnoredUnits takes integer unitid returns integer
Нажимаю Syntax Check, выдаёт Parse successful.
После пересохранения карта все равно не запускается.
Если удалить и этот кастом код - запускается.
Если заново скачать карту и заменить - запускается, что происходит с ней в игре - см. выше.
Если снова открыть и просто пересохранить - опять не запускается.
В чем и на каком этапе проблема?
0
32
7 лет назад
0
JNGP последней версии, полностью отрубленный сжасс и все заработает.
Pjass нужно было заменить, как ты и сделал - запускать ненужно, редакторе перезапустить.
0
20
7 лет назад
0
ClotPh, проблема на начальном этапе определения своего уровня знаний :>
Сколько у появляющегося блейдмастера единиц атаки?
0
24
7 лет назад
0
quq_CCCP, можно заключить в теги ноусиджазз поидее
0
32
7 лет назад
0
darkowlom:
quq_CCCP, можно заключить в теги ноусиджазз поидее
Прошу доказать это на примере, у меня были проблемы пока полностью не отключил адик хелпера.
0
24
7 лет назад
Отредактирован darkowlom
0
quq_CCCP, конкретно этого хака я не касался, но предыдущая версия содержащая только чтение прекрасно работала заключенная в теги
Я испытывал проблемы от адик оптимизера - отключив его все работало в тегах. Проверю с твоей картой
Работает, только AdicOptimizer надо отключить
Загруженные файлы
0
21
7 лет назад
0
У блейда атаки 102-124. И было, кстати, столько до нижеописанных действий.
Ага, а в РО он дефолтный. Т. е. шаманство всё-таки работало и работает. Но всё-таки ещё не прогрызлось до конца.
Так, JNGP закачан отсюда xgm.guru/p/wc3/jassnewgenpack-exp
Версия, похоже, была чуть раньше той, что по ссылке.
Прогресс уже есть. Теперь, если оставить в кастом коде только это и пересохранить:
native MergeUnits takes integer qty, integer a, integer b, integer make returns boolean
native ConvertUnits takes integer qty, integer id returns boolean
native IgnoredUnits takes integer unitid returns integer
Карта успешно запускается, но, конечно, пустая (если там своих юнитов не поставить, но это для сути дела сейчас не важно).
Если просто пересохранить - все равно фейл. Во вкладке cJass все галочки сняты. Выдает не раз упомянутые 11 ошибок.
Подозреваю, что проблема в первую очередь в следующих ошибках из тех одиннадцати:
  • Index missing for array variable l__Array
  • Index missing for array variable l__bytecode
  • Function ReadMemory must not take any arguments when used as code
При попытке копипаста всего сразу в кастом код отсюда - github.com/DracoL1ch/WC3Memory/blob/master/war3map.j , кстати, по-моему, выдает именно эти три ошибки и только три.
************
Итак. По идее - уже есть рабочая и пересохраняемая карта с кастом кодом:
native MergeUnits takes integer qty, integer a, integer b, integer make returns boolean
native ConvertUnits takes integer qty, integer id returns boolean
native IgnoredUnits takes integer unitid returns integer
************
Это уже прогресс. Но этого мало. Я не могу, например, просто вставить функцию отсюда github.com/DracoL1ch/WC3Memory/blob/master/war3map.j
Если я забираю
function AddAbilityCooldown takes ability a, real seconds returns nothing
local integer pData = Memory[ConvertHandle(a)/4+55]/4
if pData != 0 then
set Memory[pData+1] = cleanInt(realToIndex(seconds+cleanReal(indexToReal(Memory[pData+1]))))
set Memory[ConvertHandle(a)/4+45] = cleanInt(realToIndex(seconds+cleanReal(indexToReal(Memory[ConvertHandle(a)/4+45])))) This should not be modified together
endif
endfunction
и просто вставляю в кастом код, то оно начинает ругаться и, ятп, искать ссылки на либы и функции в них. А с либами карта не пересохраняется, выдает не раз упомянутые 11 ошибок. Т. е. если снять галочку с Enable JassHelper - она, разумеется, пересохраняется, но в игре опять же не запускается.
Есть мысль просто удалить все проблемные строчки, но, ятп, оно работать нормально-то просто перестанет и все.
0
32
7 лет назад
0
Pjass новый поставил?
0
24
7 лет назад
0
ClotPh, попробуй сохранить карту из моего поста, предварительно отключив адик оптимизер, и не забыв заменить пжасс
0
32
7 лет назад
0
Вот попробуй, это то что я юзаю у себя в карте.
Загруженные файлы
2
6
7 лет назад
2
Попробуй мою версию xgm.guru/p/wc3/179403?postid=335484#comment21.
Она не требует jngp и pjass.
0
21
7 лет назад
0
!!!
Вообще детектив такой, что Шерлок Холмс отдыхает.
С pjass.exe вообще интересное кино. Вот мой файл в соотв. папке весил 21 кб, а тот, который в шапке - 41 кб. Вначале подумалось, что приглючило... Но... Короче, сейчас после открытия в папке опять файл оказался 21 кб. Он в какой-то момент сам обратно перезаписывается. Ппц и, главное, не понятно, из-за чего. Вообще порнуха какая-то.
Но это не после первой попытки пересохранения карты, это то ли после закрытия WE, то ли при открытии... вообще какая-то мистика...
Значит, все, что с самого начала пока улучшилось - обновлен JNGP. Поэтому и стали хотя бы нативки в кастом коде пересохраняться.
AdicOptimizer отключен. ВСЕ ВО ВКЛАДКЕ CJass ОТКЛЮЧЕНО.
quq_CCCP, разницу между твоей и в прикрепленной к посту картами вижу только в том, что у тебя текстовое сообщение про код драколича побилось и заменилось на "огненный столб", в остальном все так же - при немедленном пересохранении 11 ошибок, но с тремя нативками в кастом коде уже пересохраняется.
Added:
darkowlom, УРА!!! Твое вроде успешно пересохранилось!!! Спасибо, пойду химичить дальше. Но уж теперь-то, по идее, проблем быть не должно - эти nocjass, надеюсь, при необходимости самостоятельно сумею проставить...
BaHeK
Потом мб, если понадобится, спасибо
Этот комментарий удален
0
32
7 лет назад
0
ClotPh, Это функция которая берет описание из указанной способности.
Смотри код триггера инициализации.
0
21
7 лет назад
0
Играюсь с сабжем, благополучно потеряна... или не совсем, куча времени.
С атакой, манакостами уже проведены успешные и интересные эксперименты, куча идей.
А вот с перезарядками что-то всё не работает и/или фаталит.
Может кто-то сделать, чтобы при одном из событий запускалась или навсегда увеличивалась перезарядка способности на определенное число?
И еще реально ли эти либы в кастом код запихнуть, чтобы они продолжали действовать? Немного раздражает лишняя папка.
Личная тесткарта вот
Загруженные файлы
0
32
7 лет назад
0
Пихай куда хочешь, тока инициализацию не удали. Там же есть функция AddAbilityCooldown вот и меняй пререзарядку, тока там нужно не ид скилла указывать а конвертнутый хендл способности.
0
16
7 лет назад
0
здесь не писал, на хайве писал
я НЕ использую редактор и прочие, только батник с pjass для быстрой проверки скрипта перед его вживлением в карту
поэтому НИКАКОЙ разметки я не проставляю, игра жрет то, что я ей даю, мнение любых компиляторов меня не волнует
чтобы убрать ошибки, нужно внести минимальную разметку И заиметь правильный pjass, с хайва.
хак предназначен для ОПЫТНЫХ, реально понимающих людей. копать чужой говнокод - та еще затея. Хотя имена функций говорят за себя, документацией я не утруждался.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.