Вопросы по триггерам
|
|
Nayf | Дата: Среда, 16 Декабря 2009, 10:40:36 | Сообщение # 1 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| Доброго времени суток! Так как я морочусь с этой гринкой уже в течении года, вопросы возникают постоянно. Работаю только с триггерами и редактором объектов. С Jass не работал. На данный момент работаю с идеей Достижений, аналог ВоВоских ачивок. В чем суть? Суть проста, но за счет нее хочу развить некий интерес у других игроков в соперничестве. Все элементарно и просто. Начал с простых вещей, которые первыми приходят в голову, это награда за количество убитых монстров. убил 100 крипов - получи 1000 голда. плюс об этом узнают все игроки. так вот проблема в триггерах... есть переменная kill в которую заносится количество убитых крипов на карте это сделано элементарно, есть событие умирания крипа у 11 и 12 игрока (то есть компьютера) идет проверка принадлежности крипа к игроку и после этого плюсуется к переменной kill + 1 вот эту переменную я и взял за основу для условия проверки количества убитых взял это же событие умирания крипа поставил условие на сравнение количества крипов в переменной и поставил прибавку к голду плюс оповещение в чат вроде все просто, все работает но есть проблемка... почему-то, это срабатывает не один раз, а от одного до 5-7 раз О.о то есть выводится по 5-7 сообщение и прибавка к голду идет столько же, хотя условие стоит прибавлять и выводить только при точном совпадении вот этот триггер: События - Боевая единица - A unit owned by Игрок 12 Умирает Условия Действие - Группа игроков - Pick every player in ConnectedPlayers and do (Actions) -Цикл - Действия - If (All Conditions are True) then do (Then Actions) else do (Else Actions) - Если - Условия -Kills[(Player number of (Picked player)) равно 50 - То - Действия - Игрок - Add 100 to (Picked player) Золото (текущ.) - Игра - Display to (All plaeyrs controlled by a ((Picked player) controller) player) the text: ... - Иначе - Действия - Do nothing Вот такая вот проблемма. В качестве наглядного примера выкладываю саму карту (там можно этот тригер найти в закладке Достижения - Kills Mobs) http://files.mail.ru/HM1NC2 Заранее благодарю за помощь.
Green Circle TD v 4.4 + RUS
|
|
|
|
Arius | Дата: Среда, 16 Декабря 2009, 10:50:33 | Сообщение # 2 |
10 уровень
Группа: Проверенные
Сообщений: 2163
Награды: 2
Репутация: 267
Блокировки:
| Ты не через цикл делай
|
|
|
|
Nayf | Дата: Среда, 16 Декабря 2009, 11:07:28 | Сообщение # 3 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| ну там цикл идет на проверку для каждого подключенного к игре игрока а не через цикл это мне каждый раз нужно будет проверять подключен ли игрок или нет... в общем все очень громоздким будет да и не уверен что корень зла в цикле
Green Circle TD v 4.4 + RUS
|
|
|
|
4K^Sumrack | Дата: Среда, 16 Декабря 2009, 11:08:36 | Сообщение # 4 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 1
Блокировки:
| Да, зачем цикл? Добавлено (16-12-2009, 11:08) --------------------------------------------- Слушай, а ты попробуй спросить "Помощь по Триггерам". Там людей больше мб сообразят че?
The MatriX v1.01b: Триггеры: 72% - Дел многовато еще... Стараемся побыстрее! Герои: 66% - Почти готовы, еще парочку для первой версии. Предметы: 82% - Остался 1 магазин, убрать баги в предметах. Общая готовность: IIIIIIIIIIIIIIIIIIII - 75%
|
|
|
|
ROBOTNIK | Дата: Среда, 16 Декабря 2009, 11:37:23 | Сообщение # 5 |
8 уровень
Группа: Проверенные
Сообщений: 520
Награды: 0
Репутация: 94
Блокировки:
| Nayf, ну славо богу норм вопросы,поверь мне если делаешь РПГ то лучше через джасс,движок вара не самый мощный для обработки,а джасс всё дело сокращает раза 2-3,это знаешь как сделать 50 путей для движения крипов,и догодайся что будет...Quote (Nayf) убил 100 крипов лучше убил 1 крипа,при 100 зависает обычно игра Quote (4K^Sumrack) Да, зачем цикл? тоже умник "нашёлся" Nayf, Радуйся Гуи и джасу
|
|
|
|
Nayf | Дата: Среда, 16 Декабря 2009, 11:56:39 | Сообщение # 6 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| это не рпг, это старая добрая Гринка круговая, с которой я уже давно работаю. при 100 крипах игра не зависает, даже более того, ограничение на карте стоит по количеству крипов в 900 единиц (это в общем то условие поражения, если кол-во крипов на карте превысит отметку 900) на счет цикла... не понимаю чем он вас смущает. ну сделаю тоже самое только в кучу строчек под каждого игрока в отдельности... смысл то прежним останется если не лень скачайте карту и посмотрите как это на практике выглядит Добавлено (16-12-2009, 11:56) --------------------------------------------- я вот думаю а может проблема в том что засчитывание в переменную kills происходит при том же событии что и срабатывание на проверку условия kills = 50 ? ну вот если подробнее... умер крип это сразу активирует два тригера так как события у них одинаковые тригер на запись в переменую kills = kills + 1 и тригер на проверку kills = 50 не может ли так получатсья что если в прошлій раз переменная біла равна 50 то при повторной проверке оно еще не успеет стать 50+1 а останется еще по прежнему 50, а потом только станет 51? какой приоритет ставит редактор? если приоритет в запись переменной, то тогда такого не будет... а если одновременно то возможно тогда так и происходит дублирование? но с другой стороны это бы объясняло если бы оно постоянно дублировало результат, а на деле происходит совершенно по другому. бывает и 1 раз, бывает и 2 и 3 и 4 и 5 и 6 и 7 :))) так что наверное все таки по приоритету все норм... раз бывает и 1 раз
Green Circle TD v 4.4 + RUS
|
|
|
|
ROBOTNIK | Дата: Среда, 16 Декабря 2009, 11:59:09 | Сообщение # 7 |
8 уровень
Группа: Проверенные
Сообщений: 520
Награды: 0
Репутация: 94
Блокировки:
| Quote (Nayf) при 100 крипах игра не зависает я говорю делать в триггерах что за 1 крип давали 50 золота (к примеру) ,я сам плохо разбираюсь,но помому не в этом проблема это понятно,но если делать к примеру по 10 каналов с которых каждые минутыы выходят по 100 крипов,то ровно на 30 минуте игра будет зависать,это такой движок вара Nayf, грин тд реально твоя карта?
|
|
|
|
Nayf | Дата: Среда, 16 Декабря 2009, 12:00:11 | Сообщение # 8 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| суть в том что при событии "умер крип" в переменной kills почему-то не всегда меняется значение, поэтому и получаются эти многочисленные повторы прохождения этого условия... вот в чем вопрос, почему оно так происходит?)
Green Circle TD v 4.4 + RUS
|
|
|
|
ROBOTNIK | Дата: Среда, 16 Декабря 2009, 12:01:03 | Сообщение # 9 |
8 уровень
Группа: Проверенные
Сообщений: 520
Награды: 0
Репутация: 94
Блокировки:
| должно быть 1 килс,попробуй,и за него дают эное количество золотаДобавлено (16-12-2009, 12:01) ---------------------------------------------
Quote (Nayf) суть в том что при событии "умер крип" в переменной kills почему-то не всегда меняется значение, поэтому и получаются эти многочисленные повторы прохождения этого условия... вот в чем вопрос, почему оно так происходит?) ского всего триггеров в карте,может количество превысело?
|
|
|
|
Nayf | Дата: Среда, 16 Декабря 2009, 12:01:24 | Сообщение # 10 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| нет грин тд не моя карта, я всего лишь в ней ковыряюсь но уже давно... и от старой гринки там осталось разве что движение крипов))
Green Circle TD v 4.4 + RUS
|
|
|
|
ROBOTNIK | Дата: Среда, 16 Декабря 2009, 12:03:18 | Сообщение # 11 |
8 уровень
Группа: Проверенные
Сообщений: 520
Награды: 0
Репутация: 94
Блокировки:
| Quote (Nayf) от старой гринки там осталось разве что движение крипов)) ну вот всё просто,создай триггер на движение крипов(куда должны дойти,что будет если дойдут и.т.д) и РО там помому есть и в игровых константах тоже
|
|
|
|
Nayf | Дата: Среда, 16 Декабря 2009, 12:04:52 | Сообщение # 12 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| не пойму вашего предложения... вы хотите что бы я давал деньги за 1 крипа? так оно и так дается при убийстве в стандартном варианте а это как бы достижение... убил 50 крипов? молодец! получи награду) убил 1000 крипов? молодец! получи нагрду) ну и плюс всем объявляется) Добавлено (16-12-2009, 12:04) --------------------------------------------- не понял зачем создавать тригер на движение крипов? он там есть и прекрасно работает))
Green Circle TD v 4.4 + RUS
|
|
|
|
ROBOTNIK | Дата: Среда, 16 Декабря 2009, 12:06:01 | Сообщение # 13 |
8 уровень
Группа: Проверенные
Сообщений: 520
Награды: 0
Репутация: 94
Блокировки:
| Nayf, Quote (Nayf) а это как бы достижение... хочешь сказать убил 50 крипов тебе дают награду особую,да?Добавлено (16-12-2009, 12:06) ---------------------------------------------
Quote (Nayf) не понял зачем создавать тригер на движение крипов? он там есть и прекрасно работает)) я говорил если всё начать заново
|
|
|
|
Nayf | Дата: Среда, 16 Декабря 2009, 12:08:06 | Сообщение # 14 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| просто про достижения... это лишь только начало... будет еще достижения на постройки, то есть построил макс лвл здания, молодец, получи награду набил твой герой 50й лвл? молодец, получи награду) насобирал например 50 000 голда? молодец)) ну и тд это просто только начало... и вот сталкнулся с такой проблеммой, поэтому и обратился к вам) о других проблемах позже напишу сейчас эту бы решить было бы не плохо... Добавлено (16-12-2009, 12:08) --------------------------------------------- да особую награду) не обязательно золотом) может быть и умение какое то)) и тд... это еще в разработке) сейчас задача стоит разобраться с достижением на количество убитых крипов и получением голда) плюс оповещение в чат надеюсь теперь толково объяснил) а то видимо в первом посте не очень понятно изложил суть проблеммы
Green Circle TD v 4.4 + RUS
|
|
|
|
ROBOTNIK | Дата: Среда, 16 Декабря 2009, 12:09:27 | Сообщение # 15 |
8 уровень
Группа: Проверенные
Сообщений: 520
Награды: 0
Репутация: 94
Блокировки:
| Nayf, к сожалению я разбираюсь только в самых простых триггерах,поэтому просто подожди,если создал тему то полюбому ответят,кстати может такое быть в паках,поищи в библиотеке и в "НОВИЧКАМ" Добавлено (16-12-2009, 12:09) ---------------------------------------------
Quote (ROBOTNIK) может быть и умение какое то О_о вот это только джасом,в триггерах полюбому не получится
|
|
|
|
BeLous | Дата: Среда, 16 Декабря 2009, 12:11:42 | Сообщение # 16 |
8 уровень
Группа: Проверенные
Сообщений: 649
Награды: 0
Репутация: 120
Блокировки:
| 4K^Sumrack, Я тебя предупреждал ведь?
^Y
|
|
|
|
FkoFF | Дата: Среда, 16 Декабря 2009, 12:14:22 | Сообщение # 17 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| cовмести триггеры килл и проверку. тоесть при мерно так. unit owned by игрок 11 die unit owned by игрок 12 die добавить убившему игроку = килл+1 if\then\else при условии что килл(номер игрока) = 50 действия: давать голд киллинг игроку. Никаких циклов не надо ) иначе: ничего не делать.
|
|
|
|
Nayf | Дата: Среда, 16 Декабря 2009, 23:11:39 | Сообщение # 18 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| о спасибо за дельное предложение сегодня же попробую Добавлено (16-12-2009, 23:11) --------------------------------------------- такс все заработало проверил... видимо и правда глючит его когда условием выступает одинаковоые событие для разных функций сейчас попробую сделать так что бы выводилось в чат еще ник того, кто получил достижение... жаль не могу плюсик поставить, спасибо FkoFF
Green Circle TD v 4.4 + RUS
|
|
|
|
ctpaxm | Дата: Четверг, 17 Декабря 2009, 00:04:40 | Сообщение # 19 |
7 уровень
Группа: Проверенные
Сообщений: 418
Награды: 0
Репутация: 60
Блокировки:
| Игра - показать всем игрокам ((Name of (убивший игрок)) + получил 50 золота Добавлено (17-12-2009, 00:04) --------------------------------------------- Nayf, это надо добавить в действие в if\then\else описанным FkoFF'ом Quote (FkoFF) добавить убившему игроку = килл+1 if\then\else при условии что килл(номер игрока) = 50 действия: давать голд киллинг игроку. Никаких циклов не надо ) иначе: ничего не делать.
Dead Girls can't say NOT! Делаю свой ORPG проект, нужны триггерщики(JASS-еры) и идейщики... Все подробности в ЛС
|
|
|
|
Nayf | Дата: Четверг, 17 Декабря 2009, 09:52:46 | Сообщение # 20 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| Спасибо, ctpaxm Сделал, заработало ну немного видоизменив команду правда: Игра - Display to (All Players) the text: (|c008000FFДостижение:|r убить 50 крипов. |cffffcc00Награда:|r +100 голда. (|c0000FF00 + ((Name of (Owner of (Killing Unit))) + |r)) Добавлено (17-12-2009, 09:52) --------------------------------------------- С подсчетом количества убитіх крипов покончено Теперь хочу сделать подобную систему на постройку зданий. Суть: при постройке 10 уровня Башни Яда игрок ее построивший получает награду +1000 голда. Сделал тригер: Событие - Боевая единица - A unit owned by Игрок 1 (красный) Завершает строительство Условия Действия - If then do else do - Если - Условия - (Башня яда 10 is Здание) равно Да - То - действия -Игрок - Add 1000 to Игрок 1 (красный) Заолото (текущ.) -Игра - Display to All - Игрок 1 (красный) the text: Построил Башню яда 10 уровня - Иначе - Действия -Do Nothing Вот, вроде все просто ясно и понятно. Но что мы имеем на деле? А на деле этот тригер срабатывает при первом строительстве любого здания и не реагирует на строительство того здания, которое указано в нем. Помогите советом что тут можно сделать? что я не так сделал? спасибо всем
Green Circle TD v 4.4 + RUS
|
|
|
|
MTT | Дата: Четверг, 17 Декабря 2009, 10:18:42 | Сообщение # 21 |
9 уровень
Группа: Пользователи
Сообщений: 941
Награды: 0
Репутация: 81
Блокировки:
| Условие: Unit Typr of triggering unit = башня твояДобавлено (17-12-2009, 10:18) ---------------------------------------------
Type
|
|
|
|
Nayf | Дата: Четверг, 17 Декабря 2009, 10:22:23 | Сообщение # 22 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| Ввел переменную и присвоил ей постройку. Событие - Боевая единица - A unit owned by Игрок 1 (красный) Завершает строительство Условия Действия - Set TmpBuilding = Башня яда 10 - If then do else do - Если - Условия - TmpBuilding равно (Unit-type of (Triggering unit)) - То - действия -Игрок - Add 1000 to Игрок 1 (красный) Заолото (текущ.) -Игра - Display to All - Игрок 1 (красный) the text: Построил Башню яда 10 уровня - Иначе - Действия -Do Nothing Теперь почему-то вообще событие не срабатывает... в игре
Green Circle TD v 4.4 + RUS
|
|
|
|
MTT | Дата: Четверг, 17 Декабря 2009, 10:23:53 | Сообщение # 23 |
9 уровень
Группа: Пользователи
Сообщений: 941
Награды: 0
Репутация: 81
Блокировки:
| Ты собираешся делать для каждого игрока новыый триггер? Зачем? - Боевая единица - A unit Завершает строительство Условия Действия - If then do else do - Если - Условия -Unit Typе of triggering unit = башня твоя - То - действия -Игрок - Add 1000 to Owner of triggering unit Заолото (текущ.) -Игра - Display to Owner of triggering unit the text: Имя игрока (Owner of triggering unit) + (пробел)построил Башню яда 10 уровня - Иначе - Действия -Do Nothing Добавлено (17-12-2009, 10:23) --------------------------------------------- Nayf, Ненада переменных
|
|
|
|
Nayf | Дата: Четверг, 17 Декабря 2009, 10:25:31 | Сообщение # 24 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 2
Блокировки:
| я вот думаю может я собтие не верно сделал? я не знаю считается ли строительством то действие которые мы совершаем... когда строит раб то тут конечно ясное дело что это строительство а вот когда мы улучшаем башню... может тут другое должно быть событие? например улучшение что ли... Добавлено (17-12-2009, 10:25) --------------------------------------------- да на счет игроков ты прав надо сделать универсальный ну просто сейчас не суть важно... главное что бы заработало как надо
Green Circle TD v 4.4 + RUS
|
|
|
|
MTT | Дата: Четверг, 17 Декабря 2009, 10:25:54 | Сообщение # 25 |
9 уровень
Группа: Пользователи
Сообщений: 941
Награды: 0
Репутация: 81
Блокировки:
| Nayf, АААА Событие Боевая еденица завершает улучшение
|
|
|
|