Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 193 194 195 196 197 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Melisse
сообщение May 21 2015, 16:39
Сообщение #4851


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Да, без сомнения очень удобно, только кэш вылетает на 110+ точек в тми, потому что ты сначала кэшируешь, потом еще 2 раза гоняешь по точкам запросы, но идея очень клевая. При некоторых изменениях позволяет запустить фишки аля обливион/скайрим - нпц ходят и делают свои дела, а не стоят истуканами.

По поводу поиска пути я могу добавить то что проблемы бывают даже тайлах без объектов plc. Поиск пути просто очень криво работает и кушает много ресурсов, На стандартных тайлах работает лучше, чем на кастомных. Но сильные проблемы начинаются когда на тайлах размещают плэйсы, просто у проходимости там 3 вида видимо, те что на объектах и дверях наслаиваются на тайлы и каким-то образом часто глючат. Думаю система сродни таковой с 2да файлами - сначала загружаются все стандартные, потом то что в хаках переписыват стандартные, и сверху переписывается все это тем что в овверррайде. (IMG:style_emoticons/kolobok_light/smile.gif)
В любом случае, по проверкам, поиск пути всегда затрачивает в 10 раз больше времени чем самый сложный скрипт и очень часто выдает что путь не найден, особенно плохо работает для нпц.

Сообщение отредактировал Melisse - May 21 2015, 16:44
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение May 21 2015, 22:35
Сообщение #4852


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



Цитата(denis0k @ May 21 2015, 06:55) *
Ну грибочки через GetNearestCreature ты всё равно не найдёшь (IMG:style_emoticons/kolobok_light/smile.gif)

Но если это просто грубый пример, то возможности нвскрипта всё равно не позволят сделать такой поиск пути адекватным. Даже в сингле можно было заставить ИИ тупить, если для прохода в соседнюю комнату персонажу приходилось делать крюк через пол-локации. Поиск пути автоматически проваливался, и персонаж утыкался носом в стену.

Единственный работающий вариант, который я нашёл, - натыкать везде вейпоинтов, связать их локалками (а-ля podbot для cs) и ходить по ним, привязывая к ним все прочие объекты. Нужен гриб? Ищем ближайшие к грибу и неписю вейпоинты и прокладываем кратчайший путь по какому-нить A* или Дейкстре. Правда на вложенных циклах нвскрипт стопудово вылетит в тми, поэтому часть логики придётся вынести наружу, я считал это в mysql, очень удобно - сразу и кэшировать можно. Со временем при неизменных вейпоинтах база данных наполняется маршрутами, и даже считать не надо.
Ну так он и на объекты есть. А вообще смотря какие грибочки же. (IMG:style_emoticons/kolobok_light/biggrin.gif)

Я потому и приписал, что теоретически. Однако в других играх же есть это! Про "носом в стену" отпишу ниже.

С вейпоинтами у меня есть реализация в тренлагере своего модуля - там стражи по задумке патрулируют периметр интерьера и полностью автономный маршрутизатор не подошел, т.к. тогда они делали это хаотично (не используя прогулочные дорожки и часто застревая по текстурным закоулкам), а не так, как положено патрульным по идее. Однако даже и с вейпоинтами система не выглядит просто и тупо "из пункта-А в пункт-Б" и потребовалось писать отдельно АИ-деблокатор для ситуаций, когда неписи к примеру заходили случайно за забор, застревая в нем и прочих других текстурах. Там это было сделать легко - НПС теперь просто в случае длительной блокировки "перепрыгивает" через него.
Так же на 2 этаже есть пару неписей, которых по задумке нужно было жестко привязать к своим позициям, причем оставляя им при этом возможность реагировать на внешние условия и покидать свои "рабочие места". Проблема состояла в том, что одно из таких мест было в сложном "Г"-образном закутке обставленном большими и малыми плейсеблами. То есть для нормального НВН-ского АИ ситуация практически неразрешимая без мини-телепорта, как со стражниками. Но такие методы я всегда оставляю на крайний случай и мне таки удалось написать очень удачный АИ-деблокиратор и научить НПС "обходить" любые сложные препятствия, не "перепрыгивая" их и без сильных ресурсозатрат. (IMG:style_emoticons/kolobok_light/smile.gif) Успешно использую модификации этого деблокатора для всех прочих АИ модуля.

Цитата(Melisse @ May 21 2015, 15:39) *
Да, без сомнения очень удобно, только кэш вылетает на 110+ точек в тми, потому что ты сначала кэшируешь, потом еще 2 раза гоняешь по точкам запросы, но идея очень клевая. При некоторых изменениях позволяет запустить фишки аля обливион/скайрим - нпц ходят и делают свои дела, а не стоят истуканами.

По поводу поиска пути я могу добавить то что проблемы бывают даже тайлах без объектов plc. Поиск пути просто очень криво работает и кушает много ресурсов, На стандартных тайлах работает лучше, чем на кастомных. Но сильные проблемы начинаются когда на тайлах размещают плэйсы, просто у проходимости там 3 вида видимо, те что на объектах и дверях наслаиваются на тайлы и каким-то образом часто глючат. Думаю система сродни таковой с 2да файлами - сначала загружаются все стандартные, потом то что в хаках переписыват стандартные, и сверху переписывается все это тем что в овверррайде. (IMG:style_emoticons/kolobok_light/smile.gif)
В любом случае, по проверкам, поиск пути всегда затрачивает в 10 раз больше времени чем самый сложный скрипт и очень часто выдает что путь не найден, особенно плохо работает для нпц.
Именно такой у меня подход к АИ не только и сколько НПС, а всех мобов в модуле, и такие системы мне очень нужны для качественной реализации.
Конечно большинство АИ (особенно самых примитивных существ) сводится к рендумной ходьбе, но и в большинстве случаев же оно дополняется комплексом ситуативных функций - к примеру:
- АИ крыс включает в себя помимо стандартной ходьбы и агрессии "санитарный комплекс" (уничтожение трупов съедобных существ), "собирательский" (различают и подбирают еду с земли в виде итемов), "поведенческий" (боятся дневного света или света факела), "стайный" (если есть возможности - крыса может вызвать подмогу в неравном бою из крысиной норы поблизости), "поисковый" (система отрабатывает дополнительные органы чувств у моба - обоняние), ну и конечно "АИ-деблокираторы" (у крыс стоит на данный момент самый реакционный деблокиратор среди мобов, позволяющий им почти моментально находить путь даже из "П"-образных тупиков по вектору движения, обходя их по кривой);
- АИ термитов для сравнения включает в себя помимо стандартной ходьбы и модифицированной агрессии (не агрятся перманентно - только временно "отгоняют" приблизившихся к ним посторонних) тот же "санитарный комплекс", "собирательский" без ограничения (собирают любой лут с пола в виде итемов, а так же обчищают лутбэги мобов), "поведенческий" (носят все собранное в свой "муравейник" который выступает чем-то вроде склада, который может при желании обнести РС, как не запертый сундучок), имеют самый простой и топорный "АИ-деблокиратор" среди имеющихся мобов в угоду отыгрыша своего биологического вида. (IMG:style_emoticons/kolobok_light/smile.gif)
У других типов мобов АИ попроще, но тоже обязательно имеет свои поведенческие особенности олицетворяющие собсно вид криттера наряду со скином его модельки в игре.

Я давно понял, что писать стационарный АИ бесполезно. Программирование жесткого алгоритм поведения, основанного на константах вроде конкретных объектов - рано или поздно ведет к "носу в стенке". Поэтому АИ я пишу всегда по принципу "десантника" - ориентирующееся в любой обстановке, в каком бы ни оказался моб-хозяин. Собственно крысы в модуле и есть у меня эдакие "десантники" - только они высаживаются не с воздуха, а из-под земли.
АИ чаще всего имеет "свободный поиск", позволяющий монстру бродить в случайных направлениях, исследуя локацию, блок "агрессии" (различающийся главным образом от рода вида/фракции - травоядный/хищник/всеядный и от вида конкретного монстра) и батарею "поведенческих" блоков (чем сложнее "отыгрываемый" вид - тем их больше), которые прерывают свободный поиск, как только АИ видит поддающуюся его обработке ситуацию. Таким образом возможно включать в поведенческие блоки встроенные "задания", которые позволят отрабатывать НПС/мобу весьма сложные поведенческие акты (типа "грибочков"). Например термиты завладев какими-либо вещами включают свой АИ-блок транспортировки их к ближайшей своей норе; будучи заблокированными по дороге к ней - переходят автоматически к блоку АИ-деблокиратора; сложив все имеющиеся у себя вещи в нору, снова переходят в режим свободного поиска и исследуют локацию, и т.д...

Сообщение отредактировал Flaristan - May 21 2015, 23:14
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение May 21 2015, 22:56
Сообщение #4853


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Цитата
Однако в других играх же есть это!
Другие игры пишут не биовари (IMG:style_emoticons/kolobok_light/smile.gif) Что ещё ожидать от программистов, у которых игры даже 2010+ года не используют юникод и глючат при установке в папку с кириллицей в имени? (IMG:style_emoticons/kolobok_light/biggrin.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Flaristan
сообщение May 21 2015, 23:16
Сообщение #4854


Тролль
****

Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Тварь



Цитата(denis0k @ May 21 2015, 21:56) *
Другие игры пишут не биовари (IMG:style_emoticons/kolobok_light/smile.gif) Что ещё ожидать от программистов, у которых игры даже 2010+ года не используют юникод и глючат при установке в папку с кириллицей в имени? (IMG:style_emoticons/kolobok_light/biggrin.gif)
Но сама игра то вышла годной! (IMG:style_emoticons/kolobok_light/prankster2.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aztec2012
сообщение May 29 2015, 16:12
Сообщение #4855


Level 2
*

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Гигант



Доброго времени суток!

Как сделать доступными для навешивания на предметы заклинания монстров? В spells.2da похожего не нашёл.

Заранее спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение May 29 2015, 19:20
Сообщение #4856


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Потому что в спелл.2да ничего нет (IMG:style_emoticons/kolobok_light/angel.gif)

Тебе нужен следующий 2да файл: iprp_spells.2da
Заносишь туда нужный спелл.
Описание столбцов:
Порядковый номер|Метка (для тебя)|Название из тлк |уровень каста| врожденый уровень(круг видимо)| стоимость на итеме|номер спелла из spell.2da| используется ли снадобьями| используется ли вандами | используется ли всеми остальными итемами|последняя графа отвечает за иконку.


а в itemprops.2da можно вообще редактировать какие куда можно наносить свойства.

Сообщение отредактировал Melisse - May 29 2015, 19:26
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aztec2012
сообщение May 31 2015, 23:30
Сообщение #4857


Level 2
*

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Гигант



Спасибо.

Навесил через Spells.2da заклинания монстров на чародея, но появились у него далеко не все заклинания.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RusIvan
сообщение Jun 27 2015, 17:49
Сообщение #4858


Level 2
*

Класс: Некромант
Характер: Lawful Evil
Раса: Нежить



Прошу помочь реализовать идею призыва монстров через диалог на объекте. Создал нужный объект, путевую точку, призываемое существо, использовал простейший скрипт из призыва существа (из 2-й главы кампании, алтарь в лесу призывает медведя). Но монстр упорно не желает появляться. Что я делаю не так?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
NumberOne
сообщение Jun 27 2015, 18:26
Сообщение #4859


Level 4
**

Класс: Воин
Характер: Chaotic Good
Раса: Человек



RusIvan, не знаю точно, какой скрипт ты использовал, но зайдя в свои наработки, я нашел вот это:

Код
#include "nw_i0_2q4luskan"

void main()
{
object oWP = GetWaypointByTag("ТОЧКА ПРИЗЫВА");

location lTarget = GetLocation(oWP);

DelayCommand(0.5, CreateObjectVoid(OBJECT_TYPE_CREATURE, "МОНСТР", lTarget));
}


И ради интереса, скинь скрипт, который у тебя упорно не призывает.

Сообщение отредактировал NumberOne - Jun 27 2015, 18:28
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StasMokos
сообщение Jan 14 2016, 01:03
Сообщение #4860


Level 3
*

Класс: Воин
Характер: True Neutral
Раса: Эльф



Пожалуйста, скажите, сюда кто-то заходит еще и сможет помочь? (IMG:style_emoticons/kolobok_light/shout.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Jan 14 2016, 09:18
Сообщение #4861


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Я захожу, чем тебе помочь?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Heather
сообщение Jan 14 2016, 12:26
Сообщение #4862


Level 4
Иконки Групп

Класс: Маг
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
История дома Салливан



Можно ли скриптом зажечь факелы, которые висят на стене? Факелы часть тайлсета.
Я помню, что был тут скрипт, позволяющий изменить освещение тайла, но нужно именно, чтобы факелы загорались... Если это возможно, конечно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Jan 14 2016, 13:27
Сообщение #4863


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Возможно, даже цвет можно задать. Освещение тайлов тоже можно менять, но, конечно же, есть очень неприятный баг с факелами тайлов, их нельзя погасить (IMG:style_emoticons/kolobok_light/smile.gif)
за работу с тайлами отвечают следующие функции:

Neverwinter Script
void SetTileMainLightColor(location lTileLocation, int nMainLight1Color, int nMainLight2Color);
void SetTileSourceLightColor(location lTileLocation, int nSourceLight1Color, int nSourceLight2Color);

int GetTileMainLight1Color(location lTile);
int GetTileMainLight2Color(location lTile);
int GetTileSourceLight1Color(location lTile);
int GetTileSourceLight2Color(location lTile);

void RecomputeStaticLighting(object oArea);


переменные TILE_MAIN_LIGHT_COLOR_* и TILE_SOURCE_LIGHT_COLOR_ *

Несколько нюансов использования из личного опыта:
1. Почему-то мне удавалось сменить освещение только через цикл.
2. void RecomputeStaticLighting(object oArea); делать в области обязательно, иначе ничего не выйдет.
3. Почему-то у меня не считывалась локация через GetArea(), пришлось возвращать локацию через GetObjectByTag().

Пример "из жизни":
Neverwinter Script
object oArea = GetObjectByTag("BRN_01A", 0); // твоя Area, берем ее через GetObjectByTag()
    vector vTile = Vector(0.0, 0.0, 0.0);
    location lTile = Location(oArea, vTile, 0.0); // тут расчет тайлов в локации начинается
    float fx = 0.0;
    float fy = 0.0;

    float fTileH = IntToFloat(GetAreaSize(AREA_HEIGHT, oArea)); // считываем размеры
    float fTileW = IntToFloat(GetAreaSize(AREA_WIDTH, oArea));

    while ((fx < fTileH) && (fy < fTileW)) // цикл - бежим по тайлам
    {
        vTile = Vector(fx, fy, 0.0);
        lTile = Location(oArea, vTile, 0.0);
        SetTileMainLightColor (lTile, TILE_MAIN_LIGHT_COLOR_BLACK, TILE_MAIN_LIGHT_COLOR_BLACK); // Это вроде освещение тайлов
        SetTileSourceLightColor (lTile, TILE_MAIN_LIGHT_COLOR_WHITE, TILE_MAIN_LIGHT_COLOR_WHITE); // Вот это вроде - факелы
        fx = fx + 1.0;

        if(fx >= fTileH)
        {
            fy = fy + 1.0;
            fx = 0.0;
        }
    }

    RecomputeStaticLighting(oArea); // Меняем освещение


Сообщение отредактировал Melisse - Jan 14 2016, 13:30
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Heather
сообщение Jan 14 2016, 13:31
Сообщение #4864


Level 4
Иконки Групп

Класс: Маг
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
История дома Салливан



Цитата
очень неприятный баг с факелами тайлов, их нельзя погасить

А если они изначально погашены? Они включатся?
Меня очень пугают все эти векторы.. прям бррр...
Попробую сделать по-твоему скрипту. Спасибо!

Сообщение отредактировал Heather - Jan 14 2016, 13:32
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Jan 14 2016, 13:38
Сообщение #4865


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Цитата
А если они изначально погашены? Они включатся?

Должны

Цитата
Попробую сделать по-твоему скрипту. Спасибо!

Попробуй, но я точно не помню правильно ли написала все, т.к. щас под рукой нет тулсета
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Heather
сообщение Jan 19 2016, 23:42
Сообщение #4866


Level 4
Иконки Групп

Класс: Маг
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
История дома Салливан



Melisse, твой скрипт очень хорошо сработал! Благодарю безмерно!
Факелы зажглись, но на все локации. А можно сделать лишь в кусочке? Я хотела, чтобы РС заходил в комнату и зажигались огни, потом заходил в следующую и там зажигались....
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Jan 20 2016, 09:42
Сообщение #4867


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Вообще это скрипт не мой, он из нвн-лексикона. Другое дело что я писала его по памяти, поэтому я и сказала что он может не сработать (IMG:style_emoticons/kolobok_light/smile.gif) В кл тоже был использован.
Касательно вопроса:
Честно - я не знаю. Не пробовала.
Наверное - возможно.
Думается 2 варианта:
1. Это посчитать какие это именно тайлы по номеру в локации и соответственно зажигать только их
2. Можно попробовать разместить в центре нужных тайлов невидимый объект и проверять, есть ли он.
Примерно так:
Neverwinter Script
***** кусок скрипта ****
  while ((fx < fTileH) && (fy < fTileW)) // цикл - бежим по тайлам
    {
        vTile = Vector(fx, fy, 0.0);
        lTile = Location(oArea, vTile, 0.0);
        object oTilePlace = GetNearestObjectToLocation (OBJECT_TYPE_PLACEABLE, lTile, 1);   
        float fDist = GetDistanceBetweenLocations (lTile, GetLocation(oTilePlace)); //  Надо аккуратно поставить, методом тыка, чтобы считывались.
       
         if(fDist != -1.0f && fDist < 9.0f)
        {
            SetTileMainLightColor (lTile, TILE_MAIN_LIGHT_COLOR_BLACK, TILE_MAIN_LIGHT_COLOR_BLACK);
            SetTileSourceLightColor (lTile, TILE_MAIN_LIGHT_COLOR_WHITE, TILE_MAIN_LIGHT_COLOR_WHITE);
        }

        fx = fx + 1.0;

        if(fx >= fTileH)
        {
            fy = fy + 1.0;
            fx = 0.0;
        }
    }

*****


Сообщение отредактировал Melisse - Jan 20 2016, 09:46
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Jan 20 2016, 10:43
Сообщение #4868


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Цитата(Melisse @ Jan 20 2016, 10:42) *
2. Можно попробовать разместить в центре нужных тайлов невидимый объект и проверять, есть ли он.

Если на нужных тайлах разместить, например, вейпоинты с одинаковым тегом (новый тег в каждой комнате), можно использовать следующую функцию:
Neverwinter Script
void lightMarkedTiles(string tag, object area) {
    int n = 0;
    object marker = GetObjectByTag(tag, n);
    while (GetIsObjectValid(marker)) {
        location lTile = GetLocation(marker);

        SetTileMainLightColor (lTile, TILE_MAIN_LIGHT_COLOR_BLACK, TILE_MAIN_LIGHT_COLOR_BLACK);
        SetTileSourceLightColor (lTile, TILE_MAIN_LIGHT_COLOR_WHITE, TILE_MAIN_LIGHT_COLOR_WHITE); 

        marker = GetObjectByTag(tag, ++n);
    }
    RecomputeStaticLighting(area);
}


Сообщение отредактировал greye - Jan 20 2016, 10:43
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Heather
сообщение Jan 20 2016, 13:40
Сообщение #4869


Level 4
Иконки Групп

Класс: Маг
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
История дома Салливан



Интересно... Сегодня вечером попробуй пошаманить, тем более, что вейпойнт и объект у меня в данном тайле уже стоят.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Jan 20 2016, 13:59
Сообщение #4870


Level 11
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Вот, кстати, вариант который предложил greye более оптимизирован и проще (IMG:style_emoticons/kolobok_light/smile.gif)

Сообщение отредактировал Melisse - Jan 20 2016, 14:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Heather
сообщение Jan 22 2016, 23:18
Сообщение #4871


Level 4
Иконки Групп

Класс: Маг
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
История дома Салливан



Цитата
вариант который предложил greye

Это кусок скрипта или целый? Вы простите, я ж совсем дерево, я даже не поняла, тэг-то куда вписывать? -__-
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Jan 23 2016, 12:14
Сообщение #4872


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Цитата(Heather @ Jan 23 2016, 00:18) *
Это кусок скрипта или целый? Вы простите, я ж совсем дерево, я даже не поняла, тэг-то куда вписывать? -__-

Это функция, которую можно использовать. В предположении, что факелы в комнате зажигаются по триггеру, полный скрипт мог бы выглядеть следующим образом:
Neverwinter Script
void lightMarkedTiles(string tag, object area) {
    int n = 0;
    object marker = GetObjectByTag(tag, n);
    while (GetIsObjectValid(marker)) {
        location lTile = GetLocation(marker);

        SetTileMainLightColor (lTile, TILE_MAIN_LIGHT_COLOR_BLACK, TILE_MAIN_LIGHT_COLOR_BLACK);
        SetTileSourceLightColor (lTile, TILE_MAIN_LIGHT_COLOR_WHITE, TILE_MAIN_LIGHT_COLOR_WHITE);

        marker = GetObjectByTag(tag, ++n);
    }
    RecomputeStaticLighting(area);
}

void main() {
    string tag = ...; // задать тег можно разными способами: вписать прямо в скрипт, считать из локальной переменной или вовсе поставить триггеру тот же тег и использовать его
    lightMarkedTiles(tag, GetArea(OBJECT_SELF));
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Heather
сообщение Mar 7 2016, 21:21
Сообщение #4873


Level 4
Иконки Групп

Класс: Маг
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
История дома Салливан



В общем, пробовала я пробовала, ничего не выходило с этими факелами.
Либо зажигаются все, либо вообще ничего.
Муж помог, в итоге вышло вот так:
Neverwinter Script
location GetTileLocation(location loc)
{

    vector vec = GetPositionFromLocation( loc );
    float fNewX = IntToFloat( FloatToInt( vec.x/10.0 ) );
    float fNewY = IntToFloat( FloatToInt( vec.y/10.0 ) );
    float fNewZ = IntToFloat( FloatToInt( vec.z/10.0 ) );
    vector vNew = Vector( fNewX, fNewY, fNewZ );
    location lNew = Location( GetAreaFromLocation( loc ),
        vNew, GetFacingFromLocation( loc ) );
    return lNew;
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Feron
сообщение Mar 10 2016, 11:27
Сообщение #4874


Level 3
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Модмейкер
Сиала



QUOTE (Heather @ Mar 7 2016, 22:21) *
В общем, пробовала я пробовала, ничего не выходило с этими факелами.
Либо зажигаются все, либо вообще ничего.
Муж помог, в итоге вышло вот так:
Neverwinter Script
location GetTileLocation(location loc)
{

    vector vec = GetPositionFromLocation( loc );
    float fNewX = IntToFloat( FloatToInt( vec.x/10.0 ) );
    float fNewY = IntToFloat( FloatToInt( vec.y/10.0 ) );
    float fNewZ = IntToFloat( FloatToInt( vec.z/10.0 ) );
    vector vNew = Vector( fNewX, fNewY, fNewZ );
    location lNew = Location( GetAreaFromLocation( loc ),
        vNew, GetFacingFromLocation( loc ) );
    return lNew;
}


Хизер, у нас как-то была задача сделать атмосферное и эффективное освещение для логова наемников. Я не знаю точно для какого сценического элемента тебе надо, но если тебе нужен переход от тьмы к светы за счет зажигания факелов, то думаю это может подойти. Это пример, где наемник может зажечь в темном логове факела и осветить всю локацию.

Вот так выглядит это (Видео на YouTube).

Делается это через работу с туманом. Если у тебя подвал какой-то и его нужно осветить - думаю, что может подойти.

CODE
void FadeIn(int nIteration, object oArea)
{
    int nAmount = GetFogAmount(FOG_TYPE_MOON, oArea);
    if(nAmount <= 0 || nIteration > 15)
    {
        SetFogAmount(FOG_TYPE_MOON, 0, oArea);
        SetFogAmount(FOG_TYPE_SUN, 0, oArea);
        SetFogColor(FOG_TYPE_MOON, FOG_COLOR_BLACK, oArea);
        return;
    }
    else
    {
        int nNew = GetFogAmount(FOG_TYPE_MOON, oArea) - 10;
        if(nNew < 0)
            nNew = 0;
        SetFogAmount(FOG_TYPE_MOON, nNew, oArea);
        SetFogAmount(FOG_TYPE_SUN, nNew, oArea);
        DelayCommand(0.2, FadeIn(++nIteration, oArea));
    }
}

void FadeOut(int nIteration, object oArea)
{
    int nAmount = GetFogAmount(FOG_TYPE_MOON, oArea);
    if(nAmount >= 100 || nIteration > 15)
    {
        SetFogAmount(FOG_TYPE_MOON, 100, oArea);
        return;
    }
    else
    {
        SetFogAmount(FOG_TYPE_MOON, GetFogAmount(FOG_TYPE_MOON, oArea) + 10, oArea);
        SetFogAmount(FOG_TYPE_SUN, GetFogAmount(FOG_TYPE_SUN, oArea) + 10, oArea);
        DelayCommand(0.2, FadeOut(++nIteration, oArea));
    }
}


Если есть куда пристроить, я могу тебе маленькую локацию подвала с одним факелом прислать в котором рычажком сможшь включать выключать свет.

Сообщение отредактировал Feron - Mar 10 2016, 15:06
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Heather
сообщение Mar 10 2016, 20:59
Сообщение #4875


Level 4
Иконки Групп

Класс: Маг
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
История дома Салливан



Цитата
Я не знаю точно для какого сценического элемента тебе надо

Мне надо, чтобы заходя в комнату, зажигались факелы на стенах. Не светильники-объекты, а часть тайла. Без рычагов, без кнопок и действий. По триггеру.
Собственно, тот скрипт, что я выложила, работает ровно так, как надо. Но спасибо за предложение. =)

Сообщение отредактировал Heather - Mar 10 2016, 21:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 193 194 195 196 197 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 26th January 2020 - 08:05