Ну и для всего прочего были, там не сложно. Смешения где лежат ссылки на строки. В мх анрайза вроде тоже было, покрайней мере для юнитов UnitNormalAPI и UnitBaseAPI, ну можно посмотреть в каких смещених относительно адресса итема лежат строки, предмет и юнит - оба виджеты, возможно прокатит с оффсетами юнита, но это неточно =)
Так, получить и изменить описание предметов из их кешированной структуры мне удалось.
Это уже совсем роскошь, но описание конкретных предметов можно изменять?) Или айтемы при создании не копируют строку, а напрямую ссылаются на строку из своей кешированной структуры?
Новые функции для предметов завезли, лич вылечил проблемы с фаталами. Теперь можно менять описания у всего и вся.
Мемхак к себе в карту копируем, что надо - просим у лича или гуглим, что ненадо вырезаем.
Прошу прощения за некропостинг, а где можно найти функции для изменения описания предметов? Поиск по сайту самым релевантным выдаёт ресурс с детектом физического урона.
Если вкратце: новый pjass не сообщенает некоторые неошибки, которые сообщал старый. И наоборот сообщается те ошибки, которые всегда ведут к крашу, а старый pjass их не сообщал.
Новый pjass с мемхаком дружит?
Новый TESH имеет лучший функционал: можно добавлять свои функции и шаблоны.
А вот это уже интересно. Свои функции надо вручную добавлять или он сам ловит их сигнатуры в коде карты?
Да, только юнит должен не атаковать, а просто анимацию атаки проигрывать)
Ну там как я понял он инструментами мемхака это сделал вроде SetUnitFacingInstant. Попробую что-нибудь придумать.
Так, поворот я сделал, SetUnitFacingInstant действительно свою работу выполняет. Осталось понять, как сделать так, чтобы анимация атаки не сбивалась анимацией передвижения.
И самые главный вопрос зачем всё это?
Например для изменения размера некоторых эффектов, которые слишком большие в HD режиме
Или же можно сделать полное отключение некоторых графических элементов в SD или HD графике, для повышения производительности на слабых компьютерах
Я не мог перенести Скиллшот Арену на Рефорджед из-за этого бага. Масштаб у всех юнитов разный, даже у снарядов. Из-за этого перенос карты невозможен, т.к. если делать масштаб под одну графику, на другой будет дикое несоответствие хитбоксов и визуала, что очень важно для карты. Делал этот багрепорт ещё когда бета Рефорджеда была. До сих пор не пофиксили.
Подскажите с проблемой в картах орпг (любых), ввожу код сохранения персонажа и тут же разрывает соединение. В конекторе надпись: сервер удалил хоста, и такое только с игроками, до этого момента всё хорошо работало. Как можно исправить?
Походу на Ирине и локально ники разные у игроков. Из-за этого десинхрон возникает в картах при проверке на ник. У меня самого такая хрень: мой ник я вижу как JackFast..., у остальных он нормальный: JackFastGame. Странная фигня.
без восстановления памяти ты скатишься к рандомным крашам после игры, ставь актуальную версию хака
Я видел во второй версии хака функцию InitResoreMemoryOnExit, её надо юзать? У меня после попытки выйти из карты зависает Варкрафт с последующим бесконечным заполнением оперативки процессом War3.exe. Как правильно пользоваться восстановлением памяти?
Я правильно понимаю, что она должна выгружать все заинжекченные dll после выхода из карты?
Почему self = nil можно не делать, ведь удаляя объект из списка (таблицы) экземпляров, мы удаляем не сам объект, а ссылку на него из этого списка, разве нет?
Этого будет достаточно?
function Skillshot:Create (...)
local this = {}
table.insert(skillshotObjectList, this)
...
end
function Skillshot:Destroy ()
table.remove(skillshotObjectList, TableFindElement(skillshotObjectList, self))
end
JackFastGame, если не важен порядок, то практически в любом языке один из самых быстрых способов удаления чего-либо из списка это поменять его местами с последним элементом списка, занулить последний элемент и сократить длину списка на 1.
Тьфу, оказывается я неправильно вызывал функцию.
Это полностью очищает экземпляр из памяти?
function Skillshot:Destroy ()
skillshotObjectList[self.id] = skillshotObjectList[skillshotIndex]
skillshotObjectList[self.id].id = self.id
table.remove(skillshotObjectList)
self = nil
skillshotIndex = skillshotIndex - 1
end
Drulia_san, фигню понаписал, у тебя методы создаются для каждого экземпляра, а должны для индексной таблицы создаваться один раз, иначе зачем тебе метатаблица и индексная таблица тогда...
Да, сразу это заметил. Но это ведь для наглядности, ничего не мешает вынести эти методы.
В общем, всем спасибо, практически разобрался в принципе работы. Отдельная благодарность к Drulia_san.
Единственное, нужно уточнить один нюанс. Как реализовать деструктор? Имеется список skillshotObjectList, содержащий все создаваемые экземпляры. Необходимо реализовать удаление экземпляра из памяти и соотвественно очистку его из skillshotObjectList.
function Skillshot:Create (...)
local this = {}
skillshotIndex = skillshotIndex + 1
skillshotObjectList[skillshotIndex] = this
this.id = skillshotIndex
...
end
function Skillshot.Destroy (this)
???
skillshotIndex = skillshotIndex - 1
end
Хоть убейте, не нашёл. Как мне, к примеру, реализовать внутри метода "класса" цикл foreach, который пробегает по всем созданным объектам данного "класса"?
Хранить список созданных экземпляров где-нибудь, например в метатаблице, чтобы был простой доступ к этому списку. Создание экземпляров реализовать через метод-фабрику, который инициализирует экземпляр и назначает ему метатаблицу.
Для большего удобства - список экземпляров можно либо записывать в каждый экземпляр при его создании либо положить в индексную таблицу в метатаблице, чтобы до этого списка было еще проще добраться из экземпляров.
Почему-то в цикле он пробегает только по последнему созданному объекту, причём сколько всего объектов, столько раз по нему и проходит.
Реализовывал и через pairs, и через for i = 1, #list.
Для добавления в список я использую table.insert(list, object).
Что я делаю не так?
Вот фрагмент кода. В main loop выводит урон последнего созданного объекта.
Skillshot = {}
list = {}
function Skillshot:Create (damage)
local obj = {}
setmetatable(obj, self)
self.__index = self
table.insert(list, obj)
self.damage = damage
return obj
end
function Skillshot.Update ()
--Main loop
for i = 1, #list do
local obj = list[i]
Debug("i = " .. i .. " " .. list[i].damage)
end
end
do
local InitGlobalsOrigin = InitGlobals
function InitGlobals()
InitGlobalsOrigin()
function test()
local dmg = 5
TimerStart(CreateTimer(), 2.0, true, function ()
dmg = dmg + 5
local skillshot = Skillshot:Create(dmg)
end)
end
test()
end
end
Хоть убейте, не нашёл. Как мне, к примеру, реализовать внутри метода "класса" цикл foreach, который пробегает по всем созданным объектам данного "класса"?
» WarCraft 3 / Вопросы по мемхаку
Ред. JackFastGame
» WarCraft 3 / Вопросы по мемхаку
Это уже совсем роскошь, но описание конкретных предметов можно изменять?) Или айтемы при создании не копируют строку, а напрямую ссылаются на строку из своей кешированной структуры?
» WarCraft 3 / Вопросы по мемхаку
» WarCraft 3 / Вопросы по мемхаку
» WarCraft 3 / Вращающиеся модели
» WarCraft 3 / Как запретить возможность сохраняться?
» WarCraft 3 / JNGP: Rebuild от PT153
» WarCraft 3 / Движение без поворота
Ну там как я понял он инструментами мемхака это сделал вроде SetUnitFacingInstant. Попробую что-нибудь придумать.
» WarCraft 3 / Как узнать версию графики в Warcraft 3 Reforged?
Ред. JackFastGame
» IrInA Host Bot / IrInA Host Bot
Ред. JackFastGame
» WarCraft 3 / SetUnitName мемхак
Я правильно понимаю, что она должна выгружать все заинжекченные dll после выхода из карты?
» WarCraft 3 / [Reforged] Главное меню в стиле LK
» WarCraft 3 / Релиз Warcraft 3: Reforged
» WarCraft 3 / Lua и ООП
Этого будет достаточно?
Ред. JackFastGame
» WarCraft 3 / Lua и ООП
Это полностью очищает экземпляр из памяти?
» WarCraft 3 / Lua и ООП
Ред. JackFastGame
» WarCraft 3 / Lua и ООП
Реализовывал и через pairs, и через for i = 1, #list.
Для добавления в список я использую table.insert(list, object).
Что я делаю не так?
» WarCraft 3 / Lua и ООП
» WarCraft 3 / Lua и ООП
» WarCraft 3 / Кулдаун спелов
» WarCraft 3 / как узнать координаты в редакторе?
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
Ред. JackFastGame
» WarCraft 3 / Ищу разработчика для карты Лорды Европы за оплату!
» WarCraft 3 / [lua] Математические функции
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32