Эвдер Опубликовано 1 декабря, 2006 Жалоба Поделиться Опубликовано 1 декабря, 2006 Смысл идеи.Нужна огненая ловушка.То есть чтобы через определёный промежуток времени включался огонь, который ранит.Вижу я это приблизительно так. Сам огонь двигать на манер лифта. Я не скриптолог и понимаю в этом с пятого на десятое. Кто сможет соорудить такую вещь? нужен шаблон, по которому можно будет изменять этот скрипт. ставить разное время и урон. Только пожалуста укажите что за что отвечает. Плиз. Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 2 декабря, 2006 Жалоба Поделиться Опубликовано 2 декабря, 2006 Begin TTRscrpt float timer set timer to ( timer + GetSecondsPassed ) If ( timer >= 10 ); Если прошло определенное кол-во времени... move x 30, y 30, z 30; Огонь начинает двигаться move x -30, y -30, z -30 player->addspell "trap_fire00";Урон огнем set timer to 0;Все начинается заново endif End Ссылка на комментарий Поделиться на другие сайты Поделиться
Эвдер Опубликовано 2 декабря, 2006 Автор Жалоба Поделиться Опубликовано 2 декабря, 2006 Спасибо за помощь, но возникло несколько вопросов. Begin TTRscrpt float timer set timer to ( timer + GetSecondsPassed ); что определяет эта строка? и какие значения тут устанавливать?. If ( timer >= 10 ); Если прошло определенное кол-во времени... move x 30, y 30, z 30; Огонь начинает двигаться; это я так понял стартовое расположение модели огня? то есть точка с которой он начинает подниматся?и их можно изменять ориентируясь на расположение модели в ячейке. move x -30, y -30, z -30; точка на которую он поднимется? player->addspell "trap_fire00";Урон огнем устанавливается значение повреждения? set timer to 0;Все начинается заново endif End Просто у меня эта штука не двигалась. и возможно я не точно выразился. Огонь должен подниматся и опускатся сам. при вхождении перса в его зону огонь наносит повреждения. (Огонь поднят). если перс оказывается в нём. и ничего ему не делать если огонь опушен Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 2 декабря, 2006 Жалоба Поделиться Опубликовано 2 декабря, 2006 (изменено) В общем вешаешь этот скрипт на огонь.Begin TTRscrpt float timer set timer to ( timer + GetSecondsPassed ); эту строчку не трогать!! Она устанавливает отсчет времени. If ( timer >= 10 ); Если прошло определенное кол-во времени... move x 30, y 30, z 30; Огонь начинает двигаться move x -30, y -30, z -30; А это он возвращается на стартовую позицию. HurtStandingActor, 5.0;Урон типа как огнем, 5 пунктов в секунду. set timer to 0;Все начинается заново endif End Изменено 2 декабря, 2006 пользователем Тореро Ссылка на комментарий Поделиться на другие сайты Поделиться
Эвдер Опубликовано 2 декабря, 2006 Автор Жалоба Поделиться Опубликовано 2 декабря, 2006 Не работает. хоть стреляйся. айдишник обьекта точно не нужен?я привинчивал скрипт уже всюду. и к активатору и к свету. стоит на месте или движется куда угодно но только не вверх-вниз. :1anim_ac: или я чего недогоняю.хyz- имеются в виду конечные координаты? То есть точка в которую должен прийти объект из любой точки ячейки.координаты с минусом это и есть стартовые координаты? А что если у меня он стоит ниже 0?Ещё If ( timer >= 10 ); - это время в секндах?Ну тупой я! Тупой! :1anim_ah: Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 2 декабря, 2006 Жалоба Поделиться Опубликовано 2 декабря, 2006 (изменено) Да не, может я где ошибся, я ж в КС не лазил... :1anim_ah: Попробую у себя сделать...Перед move ID стоит...Еще желательно добавить :if ( MenuMode == 1 ) returnendif :1anim_ah: Изменено 2 декабря, 2006 пользователем Тореро Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 2 декабря, 2006 Жалоба Поделиться Опубликовано 2 декабря, 2006 Попробуй этот скрипт: Begin TTRscrpt short start if ( MenuMode == 1 ) return endif If ( GetStandingPC == 1 ) if (start == 0) ID огня->move x 30 ID огня->move x -30 endif endif set start to 1 Endповесить на какой-нибудь участок пола, а вот этот: Begin TTy short state if ( menumode == 1 ) return endif HurtStandingActor, 5.0 Endна огонь... Ссылка на комментарий Поделиться на другие сайты Поделиться
Эвдер Опубликовано 4 декабря, 2006 Автор Жалоба Поделиться Опубликовано 4 декабря, 2006 Не работает. Чёрт его знает почему. Да в принципе обойдусь как нибудь и без этого дела. Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 4 декабря, 2006 Жалоба Поделиться Опубликовано 4 декабря, 2006 move x 30, y 30, z 30; Огонь начинает двигатьсяmove x -30, y -30, z -30; А это он возвращается на стартовую позицию.а задержку на стояние огня хоть секунду? :1anim_ad: он-то может и передвинулся на один кадр, и тут же обратно, и двигать совсем не обязательно, можно включать/выключать объект огня вобщем на огонь. Begin fire_trap Short do_once Short do_to float timer if ( do_once == 0 ) Disable; огонь в начале задизеблить set do_once = 1; endif set timer to ( timer + GetSecondsPassed ); таймер пошел If ( timer >= 10 ); после 10-й секунды полыхнет if ( do_to == 0 ) штоб каждый кадр тебе не фигачило по заклу if GetDistance Player <= 200; любое вменяемое число, радиус огня, иначе тебя грохнет в любом месте ячейки Set do_to to 1; Enable; Cast, "ID_закла", Player; касту сделать свойство алвейз саксес, чтоб игнорировать защиту, в самом закле выставляется время действия и эффект, этим методом устраняется недостаток addspell и необходимость его убирания endif; endif; elseif (timer >=12); то бишь 2 секунды после 10-и погорит огонь и исчезнет Disable; Set do_to to 0; set timer to 0;Все начинается заново endif; End fire_trap Ссылка на комментарий Поделиться на другие сайты Поделиться
Эвдер Опубликовано 6 декабря, 2006 Автор Жалоба Поделиться Опубликовано 6 декабря, 2006 Спасибо МайкОднако при заводе скрипта выдало не совсем понятное мне сообщение syntax error in line 8 missing "to"Я так понял оно чегото на синтакс ругается. Ссылка на комментарий Поделиться на другие сайты Поделиться
Анархист Опубликовано 6 декабря, 2006 Жалоба Поделиться Опубликовано 6 декабря, 2006 (изменено) Ищи ошибки в восьмой строке... Или дописать чего-то или поправить... :1anim_ab: :1anim_ab: Изменено 6 декабря, 2006 пользователем Тореро Ссылка на комментарий Поделиться на другие сайты Поделиться
TJ Опубликовано 6 декабря, 2006 Жалоба Поделиться Опубликовано 6 декабря, 2006 syntax error in line 8 missing "to"Я так понял оно чегото на синтакс ругается. Это значит, что в восьмой строке скрипта пропущено "to" работа с переменными строится по принципу set... to... if ( doOnce == 0 ) disable set doOnce to 1 endif чтоб испепелять игрока огнем сперва создай новое заклинание, наносящее урон огнем, потом будешь ссылаться на ID этого заклинания, чтобы его вызвать на Игрока (или на Actor'a) а что означает "лифт" объясни физически как это выглядит? Ссылка на комментарий Поделиться на другие сайты Поделиться
Эвдер Опубликовано 6 декабря, 2006 Автор Жалоба Поделиться Опубликовано 6 декабря, 2006 (изменено) Ага. Сейчас попробую.А лифт. ну я думал что будет легче двигать огонь вверх/вниз. А оказалось что его можно включать/выключать как лампочку. так даже лучше+ попробывал. скрипт завёлся нормально. однако в игре ругнулось проscrpt error: expression&Right eval Результат = 0 Изменено 6 декабря, 2006 пользователем Эвдер Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 7 декабря, 2006 Жалоба Поделиться Опубликовано 7 декабря, 2006 (изменено) блин, косяк с последовательностью условий, забыл про эту фигню, поменять надо время, а то он все время на первое условие идетif (timer >=12); Disable; Set do_to to 0; set timer to 0; elseif ( timer >= 10 ); if ( do_to == 0 ) if ( GetDistance Player <= 200 ); Set do_to to 1; Enable; Cast, "ID_закла", Player; endif; endif; endif; результат = 0 в каком смысле? не работает эффект? и добавить в самое начало после объявления переменных, чтоб в режиме меню не считалосьIf ( MenuMode == 1) ReturnEndif Изменено 7 декабря, 2006 пользователем Майк Ссылка на комментарий Поделиться на другие сайты Поделиться
Эвдер Опубликовано 7 декабря, 2006 Автор Жалоба Поделиться Опубликовано 7 декабря, 2006 Верно. не работает.Чегото я малость запутался куда это всё ставить... Ага. с таймера заменять. А это значит перед ним If ( MenuMode == 1) ?Ну не догоняю я это дело! :1anim_be: Ссылка на комментарий Поделиться на другие сайты Поделиться
Siegrun Опубликовано 8 декабря, 2006 Жалоба Поделиться Опубликовано 8 декабря, 2006 (изменено) вах маладца...А кто у нас DoOnсe сетанул на единицу а вернуть забыл? итак у нас огонь дисаблен и с ним странные штуки выходят)) не буит работать) у вас доонс должен сетануться на ноль в конце. а во втором условии If Doonce == 1 указано быть. а если хотите чтобы скрипт исполнился только один раз в конце сетаните DoOnce на 2. и он не повторится. Begin fire_trapscript Short do_onceShort do_tofloat timer If ( menumode == 1 )return endif if ( DoOnce == 0 ) Disable Set DoOnce to 1 endif set timer to ( timer + GetSecondsPassed ) if (timer >=12); Disable; Set do_to to 0; set timer to 0; Set DoOnce to 0; а это вы и пропустили здесь можно поставить не ноль, а 2, тогда скрипт выполнится один раз. elseif ( timer >= 10 ); if ( DoOnce == 1 ) if ( do_to == 0 ) if ( GetDistance Player <= 200 ); Set do_to to 1; Enable; Cast, "ID_закла", Player; endif endif; endif; endif; end fire_trapscript ну если у вас все остальное правилльно то должно сработать.. Изменено 8 декабря, 2006 пользователем Siegrun Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 8 декабря, 2006 Жалоба Поделиться Опубликовано 8 декабря, 2006 не верно, do_once используется один раз в начале скрипта при его старте (при входе в ячейку) чтоб однократно задисейблить огонь перед стртом таймера с которого начнется отсчет циклического огня для которого используется переменная do_to Siegrunсинтаксис-то что не соблюдаешь? переменная Short do_once а в скрипте if ( DoOnce == 0 )... Begin fire_trapscript Short do_once Short do_to float timer If ( menumode == 1 ); отключение в режиме меню return endif if ( DoOnce == 0 ); отключение огня при входе в ячейку, по умолчанию объект включен ведь Disable Set do_once to 1 endif set timer to ( timer + GetSecondsPassed ) if (timer >=12); Disable; Set do_to to 0; set timer to 0; return; elseif ( timer >= 10 ); if ( do_to == 0 ); однократное выполнение скрипта в период с 10 по 12 секунду if ( GetDistance Player <= 200 ); Set do_to to 1; Enable; Cast, "ID_закла", Player; return; endif endif; endif; end fire_trapscript Ссылка на комментарий Поделиться на другие сайты Поделиться
Siegrun Опубликовано 8 декабря, 2006 Жалоба Поделиться Опубликовано 8 декабря, 2006 (изменено) да, синтаксис сами поправите. я о принципе - возвращать надо значения. Прогляди хоть элементарно скрипт кольца для какого нито водного дыхания.. если ты не вернешь значение после какого то времени у тебя игрок так и будет вечно с ним ходить. Само оно не сбросится. Так и тут. Изменено 8 декабря, 2006 пользователем Siegrun Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти