Всем привет у меня прекрасно получается создавать триггеры с использованием локальных переменных, где используется только один "вейт". Но когда у меня цикл из вейтов (скажем способность "кровопускание" (физический урон каждую секунду)). То урон срабатывает только один раз. Как только не пробовал менять местами определение локальных и глобальных переменных ничего не получается, а еще карта огромная грузит по 15 минут каждый тест. Подскажите как это должно примерно выглядеть. Свою версию прикрепляю картинкой.
P.s. да я понимаю, что, возможно, это тема уже поднималась, но я не смог найти и прошу вас помочь, спасибо.

TeX13, ненадо писать на гуи и плодить триггеры, у вас забита инит функция и происходит обрыв потока.
`
ОЖИДАНИЕ РЕКЛАМЫ...
17
Вот пикча, не понимаю почему она не прикрепилась в теме...
Загруженные файлы
32
Циклы и вейты использовать нельзя, никак, только таймеры!
17
quq_CCCP:
Циклы и вейты использовать нельзя, никак, только таймеры!
Я не могу использовать таймеры, (ограничения на триггеры). Карта большая, 80+ героев. Если перехожу рубеж по триггерам, они вообще не срабатывают.
Вернее на количество триггеров, я уже это 100 раз проходил.
32
TeX13, ненадо писать на гуи и плодить триггеры, у вас забита инит функция и происходит обрыв потока.
Принятый ответ
17
quq_CCCP:
TeX13, ненадо писать на гуи и плодить триггеры, у вас забита инит функция и происходит обрыв потока.
На перевод карты в Jass уйдет целая вечность... Какие преимущества будут, можешь поделиться? Может быть ты и прав, пора все переписать...
quq_CCCP:
TeX13, ненадо писать на гуи и плодить триггеры, у вас забита инит функция и происходит обрыв потока.
Я не знаток, jass, но у меня есть высшие сертификаты по C# и php
29
Я не знаток, jass, но у меня есть высшие сертификаты по C# и php
Для меня остаётся загадкой, в чём сложность писать на Jass, зная вышеуказанные.
Какие преимущества будут, можешь поделиться? Может быть ты и прав, пора все переписать...
Расширенный функционал, большая свобода, оптимизация кода.
29
Цикл можно заменить на таймер (Jass) с соответствующим периодом и действием.
17
PrincePhoenix:
Для меня остаётся загадкой, в чём сложность писать на Jass, зная вышеуказанные.
я объясню, в триггерах я привык использовать объекты на карте скажем, для меня какой-то юнит был не gg_unit_023456, а например |ccc80000Гром|r. И я пока не совсем понимаю, какой указатель используется для объектов на карте. Но я подозреваю, что и на карте в таком случае ничего не ставится, а записывается в глобальные переменные. Сейчас в поисках статьи по переходу на jass.
20
А преимущества это даёт огромные. На GUI ты ничего сложного не создашь. А если и попытаешься, то постоянно будешь сталкиваться с проблемами, которые ты будешь затыкать костылями пока твоя карта не рухнет окончательно.
17
PrincePhoenix, в теории я могу весь код карты записать в одном скрипте?
20
Занеси этого юнита в переменную и назви Grom, в чем проблема?
TeX13, да, но это неудобно, как по мне.
17
KaneThaumaturge, хорошо, скажем они в разных скриптах, но все равно друг друга видят, как функции в одном неймспейсе c#?
20
Почитай статьи по оптимизации кода, к примеру лучше не плодить кучу триггеров с событием Юнит - приводит способность в действие, а сделать 1 триггер с уловом этого события, а потом уже вызывать соответствующую функцию.
17
KaneThaumaturge, я про то, что функция записанная в отдельном скрипте, видна в другом скрипте? Мне вот пока сама иерархия видимости не понятна.
20
TeX13, они все в одном скрипте, просто разбиты на "триггеры" (я не знаю почему это называют триггерами даже). Можешь посмотреть, что происходит после компиляции кода.
TeX13, Ну если ты не укажешь ее приватной в библиотеке или она будет ниже самого вызова, то все будет видно.
К примеру, на ГУИ обычно создают для каждой способности 1 триггер, что сильно будет нагружать карту. Даже на ГУИ это можно обойти.
17
Все, спасибо, ребят! Мне нужен был пинок под зад, чтобы начать в этом разбираться ;)
20
TeX13, на ХГМ полно статей, я сам только 2 недели назад перешёл с ГУИ на джасс, я понимаю тебя, мучался с этим тоже очень долго, постоянно опускались руки.
17
KaneThaumaturge, у меня карта есть, сам концепт ее уже как более 15 лет пишу, то есть менялись герои, тематика, но идеология была одна, я даже программу с рейтингом написал на c# (отдельно от игры). Много фанатов локальных собрала, у меня есть свой комп. зал. Но одна беда она грузится больше 20 минут на некоторых устройствах, и фатальная ошибка (Handler Reg) через одну игру. Весь кайф обламывала, это и мотивирует в данный момент меня перейти на Jass
KaneThaumaturge, Здравствуйте, меня зовут Ярослав и я пишу на ГУИ ;DDD
18
TeX13, могу немного сказать насчет jass
в jass по сути нету прямого ООП, но работа с юнитами, триггерами и т.д - это абстракция того же ООП (варкрафт на C++ писали)
например
unit u = GetTriggerUnit()
SetUnitUserData(u, 123)

SetUnitUserData можно представить как u->data = 123

+ в jass переменные грубо говоря разделяются на указатели и на базовые типы
указатели это всё что работает с объектами (юниты, предметы, триггеры и т.д) переменные unit, item, trigger, timer и т.д
базовые типы это integer, real (float), boolean и т.д
локальные указатели при выходе из функции обязательно нужно обнулять
а работы с char как таковой - просто нету, в jass только один тип для работы с целочисленными - это integer со знаком 4 байта
вся работа с текстом осуществляется с помощью string, это указатель на таблицу строк (его обнулять не обязательно)
всё остальное по сути достаточно похоже на "не ООП" языки
советую сразу использовать cjass который в jngp (cjass парсер добавляет поддержку С-синтаксиса)
сразу cjass это чтобы не путаться в синтаксисе
самое главное - это не относиться к этому скрипту серьёзно, надо думать очень легко чтобы понять его, т.к упрощающая абстракция просто зашкаливает

Вообще, сама сложность будет в том - чтобы запомнить все нужные функции, в первое время надо будет пользоваться подсказками из JNGP и конвертировать гуи
26
UrsaBoss, а что мешает записать кастера и цель в отдельные глобалки (а так же можно записить урон/уровень абилки, как и число ударов) и отдельно запустить таймер на 10 срабатываний? + размазать по массиву всё это дело
18
Extremator, а где я говорил о кастере и цели?)
в своем комментарии я описал особенности jass'a
часть особенностей*
28
в jass по сути нету прямого ООП, но работа с юнитами, триггерами и т.д - это абстракция того же ООП (варкрафт на C++ писали)
это не абстракция ооп а старые добрые структуры которые существовали задолго до всяких там ооп
18
nvc123, ты сейчас о сахаре из vjass?

как я помню - структуры, классы и т.д это всё ООП
а как близзарды это реализовывали я кажется не уточнял)))
28
UrsaBoss, плохо помнишь
структуры не ооп
я не про vjass
структура данных
структуры в си
структуры хранят только данные
т.е. грубо говоря структура это класс содержащий только публичные поля (без методов, наследования и прочих ооп)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.