Онлайн игра Адамант Адан: Хроники Средиземья

Дискуссии => Билдерам => Тема начата: fleck от 27 Июн 2012 в 16:05

Название: Тригер для Зоны
Отправлено: fleck от 27 Июн 2012 в 16:05
С тригерами дружу так себе, так что спрашиваю у тех кто знает хорошо. Во общем, есть зона, 5х5 квадрат, клетки между собой ни как не связаны, только описание ну и монстры, так вот вопрос такой, как лучше написать тригер, который будет каждый -n секунд, открывать проходы, ну и следовательно закрывать другие проходы в этой же комнате, тоесть, например, зашли в конату,  прошло 10 секунд, открылся выход на север и восток, прошло еще 10 секунд, закрылся север и восток и тут же открылся запад и вверх, вот такой вот вопросик ))) и желательно что бы данный тригер работал всегда , не зависимо от того есть ли в зоне кто то или нет ни кого.
Название: Re: Тригер для Зоны
Отправлено: Faust от 27 Июн 2012 в 17:11
Я еще хуже разбираюсь) Но вроде тригерры нельзя привязывать к комнатам. Поетому лоад моба в годинвизе, открыть дверь, удалить моба. Тригерный дамаг в лесу же именно так наносится (ветки баши и т.п.). Мб и ошибаюсь.
Название: Re: Тригер для Зоны
Отправлено: fleck от 27 Июн 2012 в 17:18
Тригера можно привязывать к чему угодно, к комнате, мобу предмету, и тп )))) но вот как выглядит сам такой тригер я не знаю, если бы кто то хотя бы кусочек такого тригера бы тут написал я бы дальше уже разобрался бы ) 
Название: Re: Тригер для Зоны
Отправлено: Линдир от 27 Июн 2012 в 20:50
В сборке сервера под винду есть же зона с триггерами
Название: Re: Тригер для Зоны
Отправлено: Lenin от 27 Июн 2012 в 22:26
посматри пример с друидом в бароне, там показано как
пурджить и создавать ходы из румы, все вроде просто...
с секундами чет нечего на ум не приходит, но можно попытаться завязать что-нибудь на теме
удаления переменной через Х времени, тригер будет срабатывать через нужный промежуток.
Название: Re: Тригер для Зоны
Отправлено: fleck от 27 Июн 2012 в 23:59
Блин точно, забыл про тест зону в редакторе))) завтру разберусь попробую )) спасибо за ответы  )
Название: Re: Тригер для Зоны
Отправлено: fleck от 28 Июн 2012 в 10:04
Вообщем то я разобрался как открыть и закрыть дверь в рандом направлении, но теперь я столкнулся с другими проблемами:

1. В тестовой зоне которая была в редакторе, описаны метод открывания и закрывания дверей при помощи тригера, но мне надо сделать так что бы тригер циркулировал по кругу каждые n-секунд, вот что я не могу сделать))

2. Скачал сервер с сайта адан, создал Wld и Trg, все записал index-файле по порядку, но когда захожу в игру, и хочу go в эту зону (указываю номер клетки) то пишет что зона не найдена.. что делать.

3. Если долго держать сервер запущенным, то он просто напросто зависает, и приходиться его ребудить. Что делать? пишет такую фигню

Jun 28 10:33:56 2012 :: SYSERR: NULL object (0x231fdc0) or obj not in a room (3)
 passed to obj_from_room
Jun 28 10:33:56 2012 :: SYSERR: no valid target to act('$n ▒▒▒▒$y $3.')!
Jun 28 10:34:20 2012 :: SYSERR: NULL object (0x231fdc0) or obj not in a room (3)
 passed to obj_from_room
Jun 28 10:34:20 2012 :: SYSERR: no valid target to act('$n ▒▒▒▒$y $3.')!


Работаю на Windows 7 максимальная x32
Название: Re: Тригер для Зоны
Отправлено: Линдир от 28 Июн 2012 в 12:52
тебе нужен zon файл еще, чтобы зона появилась.
Название: Re: Тригер для Зоны
Отправлено: fleck от 28 Июн 2012 в 13:12
что бы появились клетки с описанием или без и работали тригеры присвоенные комнатам, файл zon не обязательно, zon нужен только для наполнения зоны разными вещами, мобами и тп, НО Zon-файл тоже записан! Ну я с этим разберусь, мб перепишу мб что то не так, но мне бы тригер написать. HELP!!!!
Название: Re: Тригер для Зоны
Отправлено: fleck от 28 Июн 2012 в 13:14
Да еще, выше где я указал ошибку, мб выдавала потому что тригер я присваивал мобу, а моба в мире небыло(файл mob отсутствовал), потом поменял на комнату, ошибка пропала.
Название: Re: Тригер для Зоны
Отправлено: Туор от 28 Июн 2012 в 23:01
что бы появились клетки с описанием или без и работали тригеры присвоенные комнатам, файл zon не обязательно, zon нужен только для наполнения зоны разными вещами, мобами и тп, НО Zon-файл тоже записан! Ну я с этим разберусь, мб перепишу мб что то не так, но мне бы тригер написать. HELP!!!!

Еще он нужен, чтоб указать серверу как часто зона ресетится и каким образом, так что без него никак. Если ты все прописал правильно, но зона так и не появляется, возможно в каком-то из файлов зоны критическая ошибка, и сервер не стал эту зону загружать. Лог при запуске сервера не читал? Возможно там ответ.
Название: Re: Тригер для Зоны
Отправлено: fleck от 29 Июн 2012 в 12:03
С проблемой уже все решилось, осталось проблема с тригером. Поможет кто нить или как ????
Название: Re: Тригер для Зоны
Отправлено: Линдир от 29 Июн 2012 в 12:16
Есть переменные.Можно создавать переменные с ресетом через n раундов. Делать триггер срабатывающий на ресет такой переменной.
Название: Re: Тригер для Зоны
Отправлено: fleck от 29 Июн 2012 в 12:22
Тоесть с помощью переменной можно создать повторяющийся раз в n-секунд тригер ??? А можно кусочек такого тригера в студию?? посмотреть, я просто не знаю как правильно это начало написать:(((
Название: Re: Тригер для Зоны
Отправлено: Туор от 29 Июн 2012 в 17:55
Заходим в соседнюю тему http://forum.adan.ru/index.php?topic=235.0 (http://forum.adan.ru/index.php?topic=235.0), скачиваем справку по скриптам, смотрим там разделы set_var_reset() и is_var_reseted(). Я бы мог попробовать написать такой триггер, но боюсь ошибиться, так как никогда этими функциями не пользовался.
Название: Re: Тригер для Зоны
Отправлено: fleck от 02 Июл 2012 в 15:09
Либо я полный нуб в знаниях тригеров, либо я хз, то руководство по тригерам которое было на сайте я посмотрел, но там я нашел только переменную которая так сказать измеряется в раундах. Мне нужно что бы тригер срабатывал и циркулировал независимо от того есть кто то в зоне или нету, идет бой с мобом или просто все стоят на месте, то есть тригер должен работать сам по себе не зависящий ни от чего и не от кого.. Я просто не очень силен в переменных, поэтому и пишу тут что бы меня подтолкнули в правильном направлении.
Название: Re: Тригер для Зоны
Отправлено: Туор от 02 Июл 2012 в 21:51
Раунд, это, если я не ошибаюсь, 0,1 секунды. Чтобы триггер работал независимо от того, есть кто-нибудь в зоне или нет, поставь ему тип действия GLOBAL, только зачем тебе это? Если в зоне никого нет, никто результат работы триггера и не оценит.
Название: Re: Тригер для Зоны
Отправлено: fleck от 03 Июл 2012 в 00:08
Надо значит надо ))) в этом вся фишка тригера и будет))) если доделаю ) увидишь сам ))))
Название: Re: Тригер для Зоны
Отправлено: fleck от 03 Июл 2012 в 14:52
Вот кусок того что должно работать. Ну я так думаю))

If (%self.is_var_exist("var_1000")%==0)
  %self.create_var("var_1000)%
  %self.set_var_reset("var_1000" "round" "5")%

вывод сообщения

end

что не так ?)))) не работает ?))))
Название: Re: Тригер для Зоны
Отправлено: Линдир от 03 Июл 2012 в 16:50
А кто тебе номер зоны дал? 1000 это по сути зона номер 10, служебная.
Название: Re: Тригер для Зоны
Отправлено: fleck от 03 Июл 2012 в 17:06
да это просто пример))))))
Название: Re: Тригер для Зоны
Отправлено: Линдир от 03 Июл 2012 в 22:19
На счет триггера. Делаешь 2 триггера

1. триггер рандом или типа того на клетку в зоне, в нем код который проверяет есть ли переменная и есть нет создает ее
2. триггер на ресет переменной тоже на комнату, проверяет что сресетилась именно та переменная которая нужна. Если та, то запускается уже вывод сообщения типа wecho Trigger has been started
Название: Re: Тригер для Зоны
Отправлено: Lenin от 09 Июл 2012 в 15:49
вроде мона все почитать в "умном" редакторе, где не руками прописывается.
напиши плиз, справился с задачей уже или нет ?
Название: Re: Тригер для Зоны
Отправлено: fleck от 17 Июл 2012 в 11:46
Подскажите пожалуйста, как правильно написать проверку на день, ночь, утро или вечер ?
Пример приветствия в зависимости от того какой щас час, (доброе утро, добрый день, доброй ночи, добрый вечер)
Название: Re: Тригер для Зоны
Отправлено: Lenin от 17 Июл 2012 в 14:26
написать: "Доброго времени суток" ))))
и голову не ...
аще в базе таких тригеров не видел, хотя думаю написать и такой можно, я лично не знаю как(
Название: Re: Тригер для Зоны
Отправлено: fleck от 17 Июл 2012 в 14:29
хехе)) нее ну конечно можно написать ДРАСТИ)) но как то туповато, хочу уж если делать нормально так делать нормально))))

И тут же сразу еще один вопрос, можно ли объединить общим репопом 3 разные зоны с разными номерами?
Название: Re: Тригер для Зоны
Отправлено: Линдир от 17 Июл 2012 в 16:01
хехе)) нее ну конечно можно написать ДРАСТИ)) но как то туповато, хочу уж если делать нормально так делать нормально))))

И тут же сразу еще один вопрос, можно ли объединить общим репопом 3 разные зоны с разными номерами?

Почитай хелп к триггерам, где-то в прикрепленном топике был.

Что значит с разными номерами, зона это в общем-то последовательность номеров. Там может быть и 300 клеток.
Название: Re: Тригер для Зоны
Отправлено: fleck от 17 Июл 2012 в 16:06
например есть  3 разные зоны с  разными номера 1(100, 101), 2(200, 201), 3(300,301), вот надо их связать в единый репоп, которые ресетятся одновременно когда нет ни кого из персонажей в одной из трех зон
Название: Re: Тригер для Зоны
Отправлено: fleck от 17 Июл 2012 в 16:13
Да и еще, Линдир, посмотрите почту пожалуйста или свяжитесь с Ирмо на счет стафа который пропал из за креша((((
Название: Re: Тригер для Зоны
Отправлено: Lenin от 17 Июл 2012 в 16:21
например есть  3 разные зоны с  разными номера 1(100, 101), 2(200, 201), 3(300,301), вот надо их связать в единый репоп, которые ресетятся одновременно когда нет ни кого из персонажей в одной из трех зон

если у них будет одинаковое условие репопа, они и так будут репопиться одновременно.
другое дело, если тебе надо сделать так, что: если в одной из трех кто-то есть, то другие две не репопятся!
Название: Re: Тригер для Зоны
Отправлено: fleck от 17 Июл 2012 в 16:29
если в одной из трех кто-то есть, то другие две не репопятся!

Да именно так и надо, не полностью описал то что надо(
Название: Re: Тригер для Зоны
Отправлено: Линдир от 17 Июл 2012 в 17:38
например есть  3 разные зоны с  разными номера 1(100, 101), 2(200, 201), 3(300,301), вот надо их связать в единый репоп, которые ресетятся одновременно когда нет ни кого из персонажей в одной из трех зон

Так нельзя.

Можно только сделать единую зону с 100 до 399 ячеек, которая будет ресетится как одна зона.
Название: Re: Тригер для Зоны
Отправлено: fleck от 17 Июл 2012 в 17:47
охх блин печалькО(( ладно что то подумаем, Вы пожалуйста Линдир, посмотрите почту свою ))я вам там написал ))) Аструм))
Название: Re: Тригер для Зоны
Отправлено: fleck от 20 Авг 2012 в 22:14
Интересует такой тригер, есть зона, в ней несколько под зон, хочу сделать что бы при каждом репопе зона менялась, а именно, подзоны менялись местами между собой, тоесть, есть 1 вход в зону, клетка называеться к примеру Таверна, я вырезу зону, случился репоп, и место этой клетки "Таверна" появилась клетка "Кухня" к примеру, а клетка "Таверна" переместилась в другую локацию:) как можно это написать? что надо использовать ?
Название: Re: Тригер для Зоны
Отправлено: касик от 20 Авг 2012 в 22:17
аструм решил заставить нас зонить ренту)))
Название: Re: Тригер для Зоны
Отправлено: fleck от 20 Авг 2012 в 22:19
:))) просто есть идея зоны, и вот хочется узнать как написать тригер или там надо писать сразу несколько вариантов различных подзон или как :)))
Название: Re: Тригер для Зоны
Отправлено: Nebraska от 20 Авг 2012 в 22:29
используй портал как в логове и 4 разных входных клетки с идентичными названиями это проще имх
или юзай скрытые выходы  и заставляй перемещатся рандомом
if (%cmd.mudcommand% == север || %cmd.mudcommand% == north || %cmd.mudcommand% == юг || %cmd.mudcommand% == south || %cmd.mudcommand% == запад || %cmd.mudcommand% == west)
  *!disable output
  switch (%random.2%)
  сase 1
    wforce %actor.unique_id% north
  break
  case 2
    wforce %actor.unique_id% west
  break
  default
    wforce %actor.unique_id% south
  done
ну или меняешь на телепорт игрока на нужную клетку а эхом пишешь что он ушел просто в нужном направлении
Название: Re: Тригер для Зоны
Отправлено: Кархарот от 26 Авг 2012 в 19:55
триггер, который затребован в первом сообщении, делается элементарно.
в дальнейшем за помощью по триггерам можно напрямую ко мне.
мой емейл всегда есть в команде БОГИ в маде. вне зависимости, когда я был последний раз в маде, на емейл я отвечу с большой вероятностью.

вкратце что нужно сделать:
Название: Re: Тригер для Зоны
Отправлено: fleck от 06 Дек 2012 в 09:24
Подскажите, как правильно прописать проверку на то, висит ли аффект "молчание" на мобе или не висит?
Название: Re: Тригер для Зоны
Отправлено: касик от 20 Мар 2013 в 12:40
Вопрос к гуру триггеров)

Как переместить всю группу, когда стриггерил только один игрок на клетке? Допустим, если бы в логове по команде телепортироваться перемещался не только тот, кто триггерит, а и все игроки, которые были с ним на клетке?
Название: Re: Тригер для Зоны
Отправлено: Lenin от 20 Мар 2013 в 16:24
Вопрос к гуру триггеров)

Как переместить всю группу, когда стриггерил только один игрок на клетке? Допустим, если бы в логове по команде телепортироваться перемещался не только тот, кто триггерит, а и все игроки, которые были с ним на клетке?

к сожалению нет мапера под рукой, но вроде так и есть типа teleport all ну ессно с буквой m/o/r в начале команды.

к примеру еси ТПшит моб имх будет так: mteleport all rnum(номер клетки).
правда думаю он сам тудаже ТПшнеца, такчто его надо будет вернуть обратно)

p.s. я правдо не гуру триггеров) и наверное есть способ проще, но так тоже должно работать.
Название: Re: Тригер для Зоны
Отправлено: касик от 20 Мар 2013 в 16:50
Вопрос к гуру триггеров)

Как переместить всю группу, когда стриггерил только один игрок на клетке? Допустим, если бы в логове по команде телепортироваться перемещался не только тот, кто триггерит, а и все игроки, которые были с ним на клетке?

к сожалению нет мапера под рукой, но вроде так и есть типа teleport all ну ессно с буквой m/o/r в начале команды.

к примеру еси ТПшит моб имх будет так: mteleport all rnum(номер клетки).
правда думаю он сам тудаже ТПшнеца, такчто его надо будет вернуть обратно)

p.s. я правдо не гуру триггеров) и наверное есть способ проще, но так тоже должно работать.


Дело в том, что этот триггер не для клетки, а для моба...который ходит и которого телепортировать не надо вместе с игроками
Название: Re: Тригер для Зоны
Отправлено: касик от 21 Мар 2013 в 13:27
Апну.

ЗЫ: в зоне озеро так шаман в яму группу бросает, в фанге тоже по квесту...
Название: Re: Тригер для Зоны
Отправлено: Lenin от 21 Мар 2013 в 14:05
Вопрос к гуру триггеров)

Как переместить всю группу, когда стриггерил только один игрок на клетке? Допустим, если бы в логове по команде телепортироваться перемещался не только тот, кто триггерит, а и все игроки, которые были с ним на клетке?

к сожалению нет мапера под рукой, но вроде так и есть типа teleport all ну ессно с буквой m/o/r в начале команды.

к примеру еси ТПшит моб имх будет так: mteleport all rnum(номер клетки).
правда думаю он сам тудаже ТПшнеца, такчто его надо будет вернуть обратно)

p.s. я правдо не гуру триггеров) и наверное есть способ проще, но так тоже должно работать.


Дело в том, что этот триггер не для клетки, а для моба...который ходит и которого телепортировать не надо вместе с игроками

ну после mteleport all rnum
ты можешь командой mgoto rnum вернуть его на положенное место, это не будет заметно игрокам.
или как вариант создать этого моба в нужной клетке и удалить того, который степешился с игроками.

если вариант как с фангом триг будет выглядеть примерно следующим образом:

set firstchar %self.people%
while %firstchar%
set pc %firstchar.next_in_room%
if (%firstchar.vnum% == -1)
mteleport %firstchar.alias% rnum
mforce %firstchar.alias% look
end
if %pc%
makeuid firstchar %pc.id%
else
set firstchar 0
end

если ты имееш в виду то место, где с энтомолвища выкидывает.
а в остальных местах древобрад так и ТПшица со всеми через мтелепорт алл
Название: Re: Тригер для Зоны
Отправлено: касик от 21 Мар 2013 в 14:39
постучи плз ко мне в скайп - olegggg50
или дай свой
Название: Re: Тригер для Зоны
Отправлено: касик от 21 Мар 2013 в 14:49
Вопрос к гуру триггеров)

Как переместить всю группу, когда стриггерил только один игрок на клетке? Допустим, если бы в логове по команде телепортироваться перемещался не только тот, кто триггерит, а и все игроки, которые были с ним на клетке?

к сожалению нет мапера под рукой, но вроде так и есть типа teleport all ну ессно с буквой m/o/r в начале команды.

к примеру еси ТПшит моб имх будет так: mteleport all rnum(номер клетки).
правда думаю он сам тудаже ТПшнеца, такчто его надо будет вернуть обратно)

p.s. я правдо не гуру триггеров) и наверное есть способ проще, но так тоже должно работать.


Дело в том, что этот триггер не для клетки, а для моба...который ходит и которого телепортировать не надо вместе с игроками

ну после mteleport all rnum
ты можешь командой mgoto rnum вернуть его на положенное место, это не будет заметно игрокам.
или как вариант создать этого моба в нужной клетке и удалить того, который степешился с игроками.

если вариант как с фангом триг будет выглядеть примерно следующим образом:

set firstchar %self.people%
while %firstchar%
set pc %firstchar.next_in_room%
if (%firstchar.vnum% == -1)
mteleport %firstchar.alias% rnum
mforce %firstchar.alias% look
end
if %pc%
makeuid firstchar %pc.id%
else
set firstchar 0
end



Триггер работает, но телепортирует только того, кто стриггерил, остальные игроки стят на месте...может ошибка где?(
Название: Re: Тригер для Зоны
Отправлено: dad Min от 21 Мар 2013 в 16:10
Цитата

set firstchar %self.people%
while %firstchar%
set pc %firstchar.next_in_room%
if (%firstchar.vnum% == -1)
mteleport %firstchar.alias% rnum
mforce %firstchar.alias% look
end
if %pc%
makeuid firstchar %pc.id%
else
set firstchar 0
end



Триггер работает, но телепортирует только того, кто стриггерил, остальные игроки стят на месте...может ошибка где?(

Я конечно не билдер и не знаю этот язык, но соответствующее образование подсказывает, что:
set firstchar %self.people%
while %firstchar%
set pc %firstchar.next_in_room%
if (%firstchar.vnum% == -1)
mteleport %firstchar.alias% rnum
mforce %firstchar.alias% look
end
if %pc%
makeuid firstchar %pc.id%
else
set firstchar 0
end
end  <---- возможно нужен здесь как завершающая "логическая скобка" оператора while ?
как вариант, в общем нужно закрыть тело цикла (возможно для этого есть какой то другой оператор, например: done)
Название: Re: Тригер для Зоны
Отправлено: Линдир от 21 Мар 2013 в 16:16
set char %self.people%
while (%char%)
  set pc %char.next_in_room%
    if (%char.vnum%==-1 || %char.is_pet%)
     mteleport %char.unique_id% 80207
     mat 80207 mforce %char.unique_id% look
    end
  set char %pc%
done
Название: Re: Тригер для Зоны
Отправлено: касик от 21 Мар 2013 в 18:05
всем спасибо - работает)
Название: Re: Тригер для Зоны
Отправлено: Lenin от 22 Мар 2013 в 08:45
линдир на раз вопрос решил)