Если вкратце: новый 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, который пробегает по всем созданным объектам данного "класса"?
JackFastGame, какой эффект? Там нет никаких эффектов, только наносимый урон в 2 раза меньше указываемого.
А, спецэффект? Нужно импортировать пустой файл по пути Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdx
Другой нормальной способности не нашёл, чтобы без баффов и без приколов. Потому либо баффы, либо приколы.
Спасибо, мне нравится это решение. Промазал по лучшему ответу, исправьте плиз :( Всё, разобрался, извините :)
Никто не в курсе, есть ли где-нибудь документация или туториал как работать с нативками интерфейса в 1.31?
Я думаю вы уже видели этот скриншот www.reddit.com/r/warcraft3/comments/bjev7c/new_ui_made_by_trigge...
Я искал на Хайве, но не нашёл ничего относящегося к этому. Может, кто-нибудь знает?
Можно ввести систему импакта (полезных действий).
Засчитывать очки импакта каждому игроку за каждое полезное действие. Нанёс 10 урона — получи 1 очко. Отхилил 8 хп — получи 1 очко. Затанчил 15 урона — получи 1 очко. Для саппортов, которые не умеют хилить, это тоже работает: дал союзнику какое-нибудь усиление например на дополнительный дамаг, и когда он наносит урон, часть урона засчитывается тебе, следовательно ты тоже получаешь очки импакта. В общем, за каждое полезное действие, за каждый вклад в игру человек получает очки. В конце волны весь накопленный голд и опыт распределяется между всеми участниками в зависимости от количества импакта.
Не работает, потому что в триггере событие есть, а действие или условие не зарегистрировано
Напиши в конце, где инициализируешь триггер
call TriggerAddAction(gg_trg_togetherwestand, function FindTarget)
SetUnitPathing не помогает. Делал юнитов летающими - всё хорошо, за исключением двух вещей: визуально выглядит убого, могут проходить через препятствие. Суть спелла в том, чтобы запутать противника. Это иллюзии, и они должны с точностью повторять движения главного юнита. Но этот лагучий алгоритм нахождения пути всё портит :( PT153:
Не надо делать период таймера очень маленьким, все тупить начинают. 0.25 должно хватить.
Даже сделал так, что каждому следующему юниту приказ отдаётся с большей задержкой (первому юниту через 0.1с, второму - через 0.2с, и т.д.), но все манипуляции с таймером сводятся к тому, что либо главный юнит начинает тупить вместе с остальными, либо они тупят по очереди.
Скинь триггер и способность потестировать.
И как ты сделал отображение скорости вместо атаки и защиты?
Скинул карту.
Скорость - это способность на прибавку защиты с 300 уровнями (отображается как зеленая или красная скорость), а белая скорость - это изначальная защита юнита.
Тогда либо из-за невидимости точки назначения тормозит, либо из-за преград на пути, либо из-за всего вместе.
Надо поискать причину с помощью тестов
Но на вскидку предполагаю, что поиск пути из-за препятствий притормаживает.
Возможно лаги происходят из-за цикла в триггере, где отдаёшь приказ всем иллюзиям. Типа все действия в триггере выполняются последовательно, Каждый поиск пути требует чуть-чуть времени, что замедляет все остальные действия. Но это не точно, надо проверять.
При полном вижене карты так же тупят :/ 8gabriel8:
Возможно лаги происходят из-за цикла в триггере, где отдаёшь приказ всем иллюзиям. Типа все действия в триггере выполняются последовательно, Каждый поиск пути требует чуть-чуть времени, что замедляет все остальные действия. Но это не точно, надо проверять.
Слушай, да. При двух юнитах гораздо быстрее реагируют.
Так как реализовал движение каждого юнита, по какой формуле триггер высчитывает, что юнит должен пойти не в ту точку, куда отправлен основной юнит, а в ту, что ему предназначена?
Создаётся центр окружности в месте, где был главный юнит. Он телепортируется в указанную точку и таким образом задаёт радиус окружности, и создаётся 8 юнитов на этой окружности. С этого момента каждый юнит двигается симметрично оси своего радиуса, т.е. если основной юнит сместился на 30 градусов и его расстояние увеличилось на 200 от центра, то каждый юнит также смещает своё положение относительно центра окружности на 30 градусов и 200 расстояния.
range - расстояние от центра окружности до точки приказа главного юнита
angle - угол от центра окружности до точки приказа + 40*i, где i - номер дополнительного юнита. (т.е. у каждого следующего угол сдвинут на 40 градусов)
targetx = x+range*Cos(bj_DEGTORAD*angle)
targety = y+range*Sin(bj_DEGTORAD*angle)
Отдаётся приказ smart на targetx и targety.
А что конкретно интересует? Событие ловит приказ главного юнита и этот же приказ отдаётся остальным через IssuePointOrder(). Т.е. нажал за главного юнита двигаться куда-то, и остальные тоже пошли в какую-то сторону (каждый в разную).
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Как запретить возможность сохраняться?
JackFastGame
JackFastGame
» За огненной стеной / JNGP: Rebuild от PT153
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Движение без поворота
Ну там как я понял он инструментами мемхака это сделал вроде SetUnitFacingInstant. Попробую что-нибудь придумать.
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Как узнать версию графики в Warcraft 3 Reforged?
JackFastGame
JackFastGame
» IrInA Host Bot / Главная страница
JackFastGame
JackFastGame
» WarCraft 3 Reforged / SetUnitName мемхак
Я правильно понимаю, что она должна выгружать все заинжекченные dll после выхода из карты?
JackFastGame
JackFastGame
» WarCraft 3 Reforged / [Reforged] Главное меню в стиле LK
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Релиз Warcraft 3: Reforged
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Lua и ООП
Этого будет достаточно?
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Lua и ООП
Это полностью очищает экземпляр из памяти?
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Lua и ООП
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Lua и ООП
Реализовывал и через pairs, и через for i = 1, #list.
Для добавления в список я использую table.insert(list, object).
Что я делаю не так?
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Lua и ООП
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Lua и ООП
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Кулдаун спелов
JackFastGame
JackFastGame
» WarCraft 3 Reforged / как узнать координаты в редакторе?
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Бета версия Warcraft III Reforged 1.32
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Ищу разработчика для карты Лорды Европы за оплату!
JackFastGame
JackFastGame
» WarCraft 3 Reforged / [lua] Математические функции
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Бета версия Warcraft III Reforged 1.32
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Оптимальная способность с самонаводящимся снарядом
Промазал по лучшему ответу, исправьте плиз :(
Всё, разобрался, извините :)
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Оптимальная способность с самонаводящимся снарядом
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Как поднять полоску здоровья?
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Как создать процентный отхил? (триггерно)
текущее здоровье + текущее здоровье*0.1
Выносим общее слагаемое за скобку и получаем
текущее здоровье*(1+0.1) = текущее здоровье*1.1
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Как создать процентный отхил? (триггерно)
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Самый производительный Bullet Hell
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Официально стал доступен PTR 1.31
Я думаю вы уже видели этот скриншот www.reddit.com/r/warcraft3/comments/bjev7c/new_ui_made_by_trigge...
Я искал на Хайве, но не нашёл ничего относящегося к этому. Может, кто-нибудь знает?
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Официально стал доступен PTR 1.31
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Официально стал доступен PTR 1.31
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Идеальная система опыта и добычи золота в мультиплеере
Засчитывать очки импакта каждому игроку за каждое полезное действие. Нанёс 10 урона — получи 1 очко. Отхилил 8 хп — получи 1 очко. Затанчил 15 урона — получи 1 очко. Для саппортов, которые не умеют хилить, это тоже работает: дал союзнику какое-нибудь усиление например на дополнительный дамаг, и когда он наносит урон, часть урона засчитывается тебе, следовательно ты тоже получаешь очки импакта. В общем, за каждое полезное действие, за каждый вклад в игру человек получает очки. В конце волны весь накопленный голд и опыт распределяется между всеми участниками в зависимости от количества импакта.
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Лаги при создание юнитов через loop
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Корабли 16 века
Собираюсь делать карту с морскими боями на кораблях, работы зачётные!
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Доспехи веры, зависящие от кол-ва юнитов вокруг ауроносца
Напиши в конце, где инициализируешь триггер
call TriggerAddAction(gg_trg_togetherwestand, function FindTarget)
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Тюрьма Демонов
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Siege Strategy
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Достижения "Автор"
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
PT153: Даже сделал так, что каждому следующему юниту приказ отдаётся с большей задержкой (первому юниту через 0.1с, второму - через 0.2с, и т.д.), но все манипуляции с таймером сводятся к тому, что либо главный юнит начинает тупить вместе с остальными, либо они тупят по очереди.
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
Скорость - это способность на прибавку защиты с 300 уровнями (отображается как зеленая или красная скорость), а белая скорость - это изначальная защита юнита.
JackFastGame
JackFastGame
» WarCraft 3 Reforged / когда выйдет warcraft 3 reforget?
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
8gabriel8:
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
x и y - координаты центра окружности
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
angle - угол от центра окружности до точки приказа + 40*i, где i - номер дополнительного юнита. (т.е. у каждого следующего угол сдвинут на 40 градусов)
targetx = x+range*Cos(bj_DEGTORAD*angle)
targety = y+range*Sin(bj_DEGTORAD*angle)
Отдаётся приказ smart на targetx и targety.
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении
JackFastGame
JackFastGame
» WarCraft 3 Reforged / Юниты тупят при передвижении