Онлайн игра Адамант Адан: Хроники Средиземья
Дискуссии => Билдерам => Тема начата: fleck от 27 Июн 2012 в 16:05
-
С тригерами дружу так себе, так что спрашиваю у тех кто знает хорошо. Во общем, есть зона, 5х5 квадрат, клетки между собой ни как не связаны, только описание ну и монстры, так вот вопрос такой, как лучше написать тригер, который будет каждый -n секунд, открывать проходы, ну и следовательно закрывать другие проходы в этой же комнате, тоесть, например, зашли в конату, прошло 10 секунд, открылся выход на север и восток, прошло еще 10 секунд, закрылся север и восток и тут же открылся запад и вверх, вот такой вот вопросик ))) и желательно что бы данный тригер работал всегда , не зависимо от того есть ли в зоне кто то или нет ни кого.
-
Я еще хуже разбираюсь) Но вроде тригерры нельзя привязывать к комнатам. Поетому лоад моба в годинвизе, открыть дверь, удалить моба. Тригерный дамаг в лесу же именно так наносится (ветки баши и т.п.). Мб и ошибаюсь.
-
Тригера можно привязывать к чему угодно, к комнате, мобу предмету, и тп )))) но вот как выглядит сам такой тригер я не знаю, если бы кто то хотя бы кусочек такого тригера бы тут написал я бы дальше уже разобрался бы )
-
В сборке сервера под винду есть же зона с триггерами
-
посматри пример с друидом в бароне, там показано как
пурджить и создавать ходы из румы, все вроде просто...
с секундами чет нечего на ум не приходит, но можно попытаться завязать что-нибудь на теме
удаления переменной через Х времени, тригер будет срабатывать через нужный промежуток.
-
Блин точно, забыл про тест зону в редакторе))) завтру разберусь попробую )) спасибо за ответы )
-
Вообщем то я разобрался как открыть и закрыть дверь в рандом направлении, но теперь я столкнулся с другими проблемами:
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
-
тебе нужен zon файл еще, чтобы зона появилась.
-
что бы появились клетки с описанием или без и работали тригеры присвоенные комнатам, файл zon не обязательно, zon нужен только для наполнения зоны разными вещами, мобами и тп, НО Zon-файл тоже записан! Ну я с этим разберусь, мб перепишу мб что то не так, но мне бы тригер написать. HELP!!!!
-
Да еще, выше где я указал ошибку, мб выдавала потому что тригер я присваивал мобу, а моба в мире небыло(файл mob отсутствовал), потом поменял на комнату, ошибка пропала.
-
что бы появились клетки с описанием или без и работали тригеры присвоенные комнатам, файл zon не обязательно, zon нужен только для наполнения зоны разными вещами, мобами и тп, НО Zon-файл тоже записан! Ну я с этим разберусь, мб перепишу мб что то не так, но мне бы тригер написать. HELP!!!!
Еще он нужен, чтоб указать серверу как часто зона ресетится и каким образом, так что без него никак. Если ты все прописал правильно, но зона так и не появляется, возможно в каком-то из файлов зоны критическая ошибка, и сервер не стал эту зону загружать. Лог при запуске сервера не читал? Возможно там ответ.
-
С проблемой уже все решилось, осталось проблема с тригером. Поможет кто нить или как ????
-
Есть переменные.Можно создавать переменные с ресетом через n раундов. Делать триггер срабатывающий на ресет такой переменной.
-
Тоесть с помощью переменной можно создать повторяющийся раз в n-секунд тригер ??? А можно кусочек такого тригера в студию?? посмотреть, я просто не знаю как правильно это начало написать:(((
-
Заходим в соседнюю тему http://forum.adan.ru/index.php?topic=235.0 (http://forum.adan.ru/index.php?topic=235.0), скачиваем справку по скриптам, смотрим там разделы set_var_reset() и is_var_reseted(). Я бы мог попробовать написать такой триггер, но боюсь ошибиться, так как никогда этими функциями не пользовался.
-
Либо я полный нуб в знаниях тригеров, либо я хз, то руководство по тригерам которое было на сайте я посмотрел, но там я нашел только переменную которая так сказать измеряется в раундах. Мне нужно что бы тригер срабатывал и циркулировал независимо от того есть кто то в зоне или нету, идет бой с мобом или просто все стоят на месте, то есть тригер должен работать сам по себе не зависящий ни от чего и не от кого.. Я просто не очень силен в переменных, поэтому и пишу тут что бы меня подтолкнули в правильном направлении.
-
Раунд, это, если я не ошибаюсь, 0,1 секунды. Чтобы триггер работал независимо от того, есть кто-нибудь в зоне или нет, поставь ему тип действия GLOBAL, только зачем тебе это? Если в зоне никого нет, никто результат работы триггера и не оценит.
-
Надо значит надо ))) в этом вся фишка тригера и будет))) если доделаю ) увидишь сам ))))
-
Вот кусок того что должно работать. Ну я так думаю))
If (%self.is_var_exist("var_1000")%==0)
%self.create_var("var_1000)%
%self.set_var_reset("var_1000" "round" "5")%
вывод сообщения
end
что не так ?)))) не работает ?))))
-
А кто тебе номер зоны дал? 1000 это по сути зона номер 10, служебная.
-
да это просто пример))))))
-
На счет триггера. Делаешь 2 триггера
1. триггер рандом или типа того на клетку в зоне, в нем код который проверяет есть ли переменная и есть нет создает ее
2. триггер на ресет переменной тоже на комнату, проверяет что сресетилась именно та переменная которая нужна. Если та, то запускается уже вывод сообщения типа wecho Trigger has been started
-
вроде мона все почитать в "умном" редакторе, где не руками прописывается.
напиши плиз, справился с задачей уже или нет ?
-
Подскажите пожалуйста, как правильно написать проверку на день, ночь, утро или вечер ?
Пример приветствия в зависимости от того какой щас час, (доброе утро, добрый день, доброй ночи, добрый вечер)
-
написать: "Доброго времени суток" ))))
и голову не ...
аще в базе таких тригеров не видел, хотя думаю написать и такой можно, я лично не знаю как(
-
хехе)) нее ну конечно можно написать ДРАСТИ)) но как то туповато, хочу уж если делать нормально так делать нормально))))
И тут же сразу еще один вопрос, можно ли объединить общим репопом 3 разные зоны с разными номерами?
-
хехе)) нее ну конечно можно написать ДРАСТИ)) но как то туповато, хочу уж если делать нормально так делать нормально))))
И тут же сразу еще один вопрос, можно ли объединить общим репопом 3 разные зоны с разными номерами?
Почитай хелп к триггерам, где-то в прикрепленном топике был.
Что значит с разными номерами, зона это в общем-то последовательность номеров. Там может быть и 300 клеток.
-
например есть 3 разные зоны с разными номера 1(100, 101), 2(200, 201), 3(300,301), вот надо их связать в единый репоп, которые ресетятся одновременно когда нет ни кого из персонажей в одной из трех зон
-
Да и еще, Линдир, посмотрите почту пожалуйста или свяжитесь с Ирмо на счет стафа который пропал из за креша((((
-
например есть 3 разные зоны с разными номера 1(100, 101), 2(200, 201), 3(300,301), вот надо их связать в единый репоп, которые ресетятся одновременно когда нет ни кого из персонажей в одной из трех зон
если у них будет одинаковое условие репопа, они и так будут репопиться одновременно.
другое дело, если тебе надо сделать так, что: если в одной из трех кто-то есть, то другие две не репопятся!
-
если в одной из трех кто-то есть, то другие две не репопятся!
Да именно так и надо, не полностью описал то что надо(
-
например есть 3 разные зоны с разными номера 1(100, 101), 2(200, 201), 3(300,301), вот надо их связать в единый репоп, которые ресетятся одновременно когда нет ни кого из персонажей в одной из трех зон
Так нельзя.
Можно только сделать единую зону с 100 до 399 ячеек, которая будет ресетится как одна зона.
-
охх блин печалькО(( ладно что то подумаем, Вы пожалуйста Линдир, посмотрите почту свою ))я вам там написал ))) Аструм))
-
Интересует такой тригер, есть зона, в ней несколько под зон, хочу сделать что бы при каждом репопе зона менялась, а именно, подзоны менялись местами между собой, тоесть, есть 1 вход в зону, клетка называеться к примеру Таверна, я вырезу зону, случился репоп, и место этой клетки "Таверна" появилась клетка "Кухня" к примеру, а клетка "Таверна" переместилась в другую локацию:) как можно это написать? что надо использовать ?
-
аструм решил заставить нас зонить ренту)))
-
:))) просто есть идея зоны, и вот хочется узнать как написать тригер или там надо писать сразу несколько вариантов различных подзон или как :)))
-
используй портал как в логове и 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
ну или меняешь на телепорт игрока на нужную клетку а эхом пишешь что он ушел просто в нужном направлении
-
триггер, который затребован в первом сообщении, делается элементарно.
в дальнейшем за помощью по триггерам можно напрямую ко мне.
мой емейл всегда есть в команде БОГИ в маде. вне зависимости, когда я был последний раз в маде, на емейл я отвечу с большой вероятностью.
вкратце что нужно сделать:
- создаем новый триггер, указываем ему тип "для комнат"
- помечаем его флагом GLOBAL - это позволит нашему триггеру выполняться, даже если игроков в зоне нет
- помечаем его флагом RANDOM - это позволит триггеру выполняться каждые N секунд, где N согласно документации как раз где-то рядом с 10
- вероятность срабатывания указываем 100
- дальше нам нужна команда wdoor, пробивающая двери в комнаты, по которой там в редакторах есть подробная справка
- еще, нужно генерить случайные числа - это можно делать с помощью конструции %random.<число>%, по этой конструкции тоже есть справка прям в редакторах
-
Подскажите, как правильно прописать проверку на то, висит ли аффект "молчание" на мобе или не висит?
-
Вопрос к гуру триггеров)
Как переместить всю группу, когда стриггерил только один игрок на клетке? Допустим, если бы в логове по команде телепортироваться перемещался не только тот, кто триггерит, а и все игроки, которые были с ним на клетке?
-
Вопрос к гуру триггеров)
Как переместить всю группу, когда стриггерил только один игрок на клетке? Допустим, если бы в логове по команде телепортироваться перемещался не только тот, кто триггерит, а и все игроки, которые были с ним на клетке?
к сожалению нет мапера под рукой, но вроде так и есть типа teleport all ну ессно с буквой m/o/r в начале команды.
к примеру еси ТПшит моб имх будет так: mteleport all rnum(номер клетки).
правда думаю он сам тудаже ТПшнеца, такчто его надо будет вернуть обратно)
p.s. я правдо не гуру триггеров) и наверное есть способ проще, но так тоже должно работать.
-
Вопрос к гуру триггеров)
Как переместить всю группу, когда стриггерил только один игрок на клетке? Допустим, если бы в логове по команде телепортироваться перемещался не только тот, кто триггерит, а и все игроки, которые были с ним на клетке?
к сожалению нет мапера под рукой, но вроде так и есть типа teleport all ну ессно с буквой m/o/r в начале команды.
к примеру еси ТПшит моб имх будет так: mteleport all rnum(номер клетки).
правда думаю он сам тудаже ТПшнеца, такчто его надо будет вернуть обратно)
p.s. я правдо не гуру триггеров) и наверное есть способ проще, но так тоже должно работать.
Дело в том, что этот триггер не для клетки, а для моба...который ходит и которого телепортировать не надо вместе с игроками
-
Апну.
ЗЫ: в зоне озеро так шаман в яму группу бросает, в фанге тоже по квесту...
-
Вопрос к гуру триггеров)
Как переместить всю группу, когда стриггерил только один игрок на клетке? Допустим, если бы в логове по команде телепортироваться перемещался не только тот, кто триггерит, а и все игроки, которые были с ним на клетке?
к сожалению нет мапера под рукой, но вроде так и есть типа 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
если ты имееш в виду то место, где с энтомолвища выкидывает.
а в остальных местах древобрад так и ТПшица со всеми через мтелепорт алл
-
постучи плз ко мне в скайп - olegggg50
или дай свой
-
Вопрос к гуру триггеров)
Как переместить всю группу, когда стриггерил только один игрок на клетке? Допустим, если бы в логове по команде телепортироваться перемещался не только тот, кто триггерит, а и все игроки, которые были с ним на клетке?
к сожалению нет мапера под рукой, но вроде так и есть типа 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
Триггер работает, но телепортирует только того, кто стриггерил, остальные игроки стят на месте...может ошибка где?(
-
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)
-
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
-
всем спасибо - работает)
-
линдир на раз вопрос решил)