Ну это не модели, это же юнит. Эффекты можно полноценно вращать на мемхаке или рефордже, что то я вообще не проникся этим костылем с юнитом. И период наверное лучше 0.03125. Но это так я придирался просто )). Разумеется норм всё
Или вообще 9 глава
Так и что, всё что ли работает, и можно идти делать свою кампанию?
Добавлять её на ровни с кампаниями метелицы? Я же сказал, что у мен 2 новости, а вот и вторая
Увы карты способны подтягиваться, только из игрового архива, если же указать путь к несуществующей карте, то просто ничего не произойдёт и пропадёт звук, если же указать путь к существующей, не из папки документы, а из retail, увы варкрафт просто выдаёт ! ошибка
И пока что ничего не получается, скорее всего дохлый номер. Повторюсь:
У кампаний нет доступа в локальные файлы и чтение идёт только из игровых архивов=(, я подтвердил это вторым способом
ты видишь что то у меня тут подобное?
давай ещё раз
вот это строчкой мы создаём таймер, тут понятно?
local timer t = CreateTimer()
Таймер сидит в локальной переменной t больше тут ничего нет
Вот вторая строчка
call TimerStart( t, 2, false, function myTimer)
call - вызвать фунцию TimerStart
t, 2, false, function myTimer - это её параметры, или же аргументы
где t - таймер который мы создали 2 - время в секундах через которое он отработает false - таймер одноразовый, там может быть ещё true - это периодический, всего 2 значения, это булева function myTimer - непосредсвенно сама функция, оно же действие, которое произойдёт, когда пройдёт 2 секунды
и в неё нельзя ничего передать на чистом джасе, для этого и использовалась глобалка, чтобы работало и используются хештаблицы, чтобы посадить на хендл таймера например юнита, и каждый юнит будет привязан к своему таймеру. Опять же на lua не надо ничего этого делать вообще там просто из коробки работает, сразу как нужно. Собственно function myTimer takes nothing returns nothing это и есть гуишная функция "таймер истекает", до бишь это действие, которое произайдёт, когда время таймера tпришло.
Я уже одно и тоже говорю, просто если не понял, читай ещё несколько раз
rsfghd, ты должен был бороться со злом, а не примкнуть к нему
Рефордж я показывал просто для примера, на сколько там просто и не нужна никакие заморочки. Паузить и уничтожать одноразовый таймер, это обязательно иначе будет небольшая утечка в памяти (ибо это древний баг варкрафта), если таймер периодический, то разумеется его тоже надо будет остановить, дабы он не болтался без дела
Вот пример отсроченного действия и работы с таймером
Вот допустим у тебя вот так, юнит при появлении на карте, постоит 2 секунды и отправить в центр карты, допустим эта зачаток системы движения крипов, зачем тут вейт, ну например для создания эффекта какого-то, это уже не важно, просто вейт и всё.
Вот допустим переделываем это всё на таймер.
Опять таки в чистом гуи ты так не сделаешь, ну я просто не знаю как показать, поэтому покажу сразу как умею - на lua, джасс если вспомню то вспомню.
Сначала переведём всё это на код, на луа это будет выглядить примерно вот так
function Trig_Gui_Actions()
TriggerSleepAction(2)
IssuePointOrderLocBJ(GetTriggerUnit(), "move", GetRectCenter(GetPlayableMapRect()))
end
function InitTrig_Gui()
gg_trg_Gui = CreateTrigger()
TriggerRegisterEnterRectSimple(gg_trg_Gui, GetPlayableMapRect())
TriggerAddAction(gg_trg_Gui, Trig_Gui_Actions)
end
На джасе также + появятся всякий лишний мусор
В целом перепишем всё это в 1 блок
do
TimerStart(CreateTimer(), 0.12, false, function() -- это нужно чтоб сборщик не прибрал наше событие
InitEvent()
end)
function InitEvent()
local thisTrig = CreateTrigger()
TriggerRegisterEnterRectSimple(thisTrig, GetPlayableMapRect())
TriggerAddAction(thisTrig, function() -- в аот и первая анонимная функци
local unit=GetTriggerUnit() -- вот он наш юнит
TimerStart(CreateTimer(), 2, false, function() -- а вот и наша 2 анонимная функция
IssuePointOrderLocBJ(unit, "move", GetRectCenter(GetPlayableMapRect())) -- а наше действие из гуи триггера
end)
end)
end
end
всё, мы сделали тоже самое, на луа через таймер, без хештаблиц, сразу муи сразу без утечек, вру (тут таймер надо запаузить и уничтожить, чтобы прям идеально, но я этим принебрегаю)
Но ты скорее всего ничего не понял, и да я просто выделывался. Теперь же попробуем тоже самое сделать на JASS, будут писать прототип идо наизусьь джасс не помню, да что там, вообще его не помню
globals
global unit GUNIT = null
endglobals
function Trig_Gui_Actions takes nothing returns nothing
local timer t = CreateTimer() // создаём таймер
call TimerStart( t, 2, false, function myTimer) // запускаем таймер
set t = null // обнуляем локалку
endfunction
function myTimer takes nothing returns nothing //это функция которую запускает таймер, в неё ничего нельзя передать, это это не луа, а убогий джасс тут нужны хештаблицы, я же использовал глобалку GUNIT
call IssuePointOrderLocBJ(GUNIT , "move", GetRectCenter(GetPlayableMapRect())) // тот же самый приказ идти в центр карты
call PauseTimer(GetExpiderTimer()) // паузим
call DestroyTimer(GetExpiderTimer()) // и убираем до конца, в принципи действия не обязательные, как я сказал выше
endfunction
Я тут немного обрезал убрал код action, но он прекрасно конвертится с гуи в джасс и остаётся там, остаётся добавить глобалку GUNIT, так же я спецом использовал локацию и утекающую точку, ибо это уже другая тема
Если серьёзно, я почему это выложил, потому что не уверен, в том что я проверил всё, мб что-то делаю не так и подмена возможна, и всё таки, хочется найти файл, со списком кампаний на экране, чтобы сюда вставлять свои, хотя бы в ручном режиме, а там автоматизируем и что нить придумаем
Чтобы редактировать чужое, нужно раз в 10 больше знаний и опыта, чем редактировать или делать своё, ты взял непосильную ношу для себя, не надо тянуть чужие и старые проекты. Делай своё, новое, прогрессивное, молодежное
играл бы в нормальные карты не пришлось бы делать "как в петрах", когда можно например кулдаунить пассивку эксгумации вообще без всяких мемхаков и рефорджей. Если уже всё делает чисто ради визуального кд
на первом видео автокастовый приказ без цели типа:
кровожадность нейтралов
или пополнения здоровья или маны или всего сразу от статуи нежити
На 2 видео приказ требует цели и разумеется нужен другой код
» WarCraft 3 / Помощь с триггерами
» WarCraft 3 / Вращающиеся модели
Ред. Берги
» WarCraft 3 / Вращающиеся модели
Починил
Увы только через получить
» WarCraft 3 / Вращающиеся модели
» WarCraft 3 / Базовый урон от атак + Бонусный урон от атак
Ред. Берги
» WarCraft 3 / Возврат кампаний в Reforged (почти да)
Удалось найти файл кампаний, его зовут campaigninforeforged
там есть вот такое вот поле
А если сделать вот так
Так и что, всё что ли работает, и можно идти делать свою кампанию?
Добавлять её на ровни с кампаниями метелицы? Я же сказал, что у мен 2 новости, а вот и вторая
Увы карты способны подтягиваться, только из игрового архива, если же указать путь к несуществующей карте, то просто ничего не произойдёт и пропадёт звук, если же указать путь к существующей, не из папки документы, а из retail, увы варкрафт просто выдаёт ! ошибка
И пока что ничего не получается, скорее всего дохлый номер. Повторюсь:
У кампаний нет доступа в локальные файлы и чтение идёт только из игровых архивов=(, я подтвердил это вторым способом
» WarCraft 3 / Базовый урон от атак + Бонусный урон от атак
» WarCraft 3 / Таймер вместо вейт
давай ещё раз
вот это строчкой мы создаём таймер, тут понятно?
Вот вторая строчка
t, 2, false, function myTimer - это её параметры, или же аргументы
где
t - таймер который мы создали
2 - время в секундах через которое он отработает
false - таймер одноразовый, там может быть ещё true - это периодический, всего 2 значения, это булева
function myTimer - непосредсвенно сама функция, оно же действие, которое произойдёт, когда пройдёт 2 секунды
и в неё нельзя ничего передать на чистом джасе, для этого и использовалась глобалка, чтобы работало и используются хештаблицы, чтобы посадить на хендл таймера например юнита, и каждый юнит будет привязан к своему таймеру. Опять же на lua не надо ничего этого делать вообще там просто из коробки работает, сразу как нужно. Собственно function myTimer takes nothing returns nothing это и есть гуишная функция "таймер истекает", до бишь это действие, которое произайдёт, когда время таймера tпришло.
Я уже одно и тоже говорю, просто если не понял, читай ещё несколько раз
» WarCraft 3 / Возврат кампаний в Reforged (почти да)
» WarCraft 3 / Таймер вместо вейт
» WarCraft 3 / Таймер вместо вейт
Вот допустим переделываем это всё на таймер.
Опять таки в чистом гуи ты так не сделаешь, ну я просто не знаю как показать, поэтому покажу сразу как умею - на lua, джасс если вспомню то вспомню.
Сначала переведём всё это на код, на луа это будет выглядить примерно вот так
В целом перепишем всё это в 1 блок
Но ты скорее всего ничего не понял, и да я просто выделывался. Теперь же попробуем тоже самое сделать на JASS, будут писать прототип идо наизусьь джасс не помню, да что там, вообще его не помню
» WarCraft 3 / Варик не успевает считать
» WarCraft 3 / Возврат кампаний в Reforged (почти да)
» WarCraft 3 / Гарен из Лиги легенд
» WarCraft 3 / Гарен из Лиги легенд
» WarCraft 3 / Еще одна глупая идея про оптимизацию
Ред. Берги
» WarCraft 3 / Еще одна глупая идея про оптимизацию
» WarCraft 3 / Еще одна глупая идея про оптимизацию
ты ж в юнити уходил, с возвращением
» WarCraft 3 / Пак предметов из Mafia 2
» WarCraft 3 / Хорошие статьи и советы по оптимизации на обычных триггерах
» WarCraft 3 / Cистема инкома
» WarCraft 3 / Cистема инкома
кровожадность нейтралов
или пополнения здоровья или маны или всего сразу от статуи нежити
На 2 видео приказ требует цели и разумеется нужен другой код
» WarCraft 3 / Следы хочу а их нету, как решить ?
» WarCraft 3 / Играя за двух игроков варкрафт.
вроде вот тут такое видел
» WarCraft 3 / Не работает простой Триггер (рефоржет)