Сейчас 20:10:34 Четверг, 25 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Вопросы по триггерам
Вопросы по триггерам
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 золота (к примеру) ,я сам плохо разбираюсь,но помому не в этом проблема
Quote (Nayf)
900 единиц

это понятно,но если делать к примеру по 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
Блокировки:
Quote (Nayf)
kills = 50

должно быть 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)
---------------------------------------------

Quote (MTT)
Typr

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,
АААА
Событие
Боевая еденица завершает улучшение
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Вопросы по триггерам
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz