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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 132 133 134 135 136 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
wirTUS
сообщение Jun 23 2010, 13:33
Сообщение #3326


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Большое спасибо благодаря вам всё заработало (IMG:style_emoticons/kolobok_light/yahoo.gif) (IMG:style_emoticons/kolobok_light/yahoo.gif) (IMG:style_emoticons/kolobok_light/yahoo.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
bern
сообщение Aug 17 2010, 15:33
Сообщение #3327


Level 2
*

Класс: Ученик Дракона
Характер: Chaotic Neutral
Раса: Человек



Всем доброго дня!
Не нашел нигде одного очень важного для меня скрипта. Тыкните меня пожалуйста носом если где-то на форуме уже обсуждался данный вопрос.

Я хочу сделать небольшой но продуманный мирок по подобию первой Готики. И я хочу сделать чтобы каждый непись имел свой распорядок дня. Для этого мне нужен универсальный шаблон-заготовка.

Например:
9.00 - непись встает(не обязательно с анимацией, достаточно чтобы просто появился возле кровати), потом с вероятностью 50\50 или умывается или ест за столом
9.30 - одевается(меняет одёжку в слоте брони) и идет работать в поле\ идет к лавочке поговорить с соседом и т.д.

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

Думаю и другим модостроителям это пригодится, прошу профи тулсета помочь мне.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Aug 18 2010, 11:21
Сообщение #3328


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

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Анимация НПС, часть 1
Анимация НПС, часть 2
+ файл с демонстрационным модулем
Более подробно эту задачу никто не освещал.

но там описана идеальная ситуация (игрок находится на той же локации, что и НПС, НПС не перемещается между локациями). Когда дело доходит до реализации в модуле, то все более сложно и грустно. В итоге система немного более сложная чем описана в статье, но эти изменения можно и самому проделать, в принципе (проверки наличия игрока, телепорты кое-где и тд)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
bern
сообщение Aug 18 2010, 23:25
Сообщение #3329


Level 2
*

Класс: Ученик Дракона
Характер: Chaotic Neutral
Раса: Человек



Lex, спасибо! В той статье есть все что мне может понадобится. Пока буду изучать и пробовать. Но еще у меня такой вопрос: можно так сделать чтобы нпс выполняли свой распорядок вне зависимости есть ли игрок в локации? А то заходит главный герой посреди ночи в дом (например чтобы ограбить его) а хозяин вдруг спохватывается из-за стола и бежит в постель быстренько спать, не замечая грабителя, так как должен был лечь 4 часа назад (IMG:style_emoticons/kolobok_light/declare.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Aug 18 2010, 23:46
Сообщение #3330


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

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



я именно об этих усложнениях говорил, когда сказал что условия, рассматриваемые в статье идеальные.
Конечно скрипты выполняются пока игрок не на локации. Но гораздо медленнее. И вообще говоря этим баловаться не следует - будут заметные тормоза. Чтобы реализовать описанную тобой ситуацию, надо имхо скриптовать отдельно вход игрока в дом (те на вход игрока НПСу в локе задаются нужные параметры, которые определяются временем и чем там тебе еще надо + производятся нужные действия с НПС - он куда надо телепортируется, запускается анимация и тд).
Если таких мест будет много.. ну сам понимаешь. Другого приличного варианта, чтобы не тормозило, я не нашел. Да и этот не сказать что простой - требует усидчивости и внимания.

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

Каждый сам решает какой уровень детализации ему нужен и что он готов за это заплатить. Но готовых решений круче тех, что я в той статье описал, тебе врядли кто даст. Просто потому что их скорее всего никто и не делал. Я видел пару систем на волте.. но в них реально многовато дыр, требуется серьезная доработка, а по функционалу и удобству они ничем не лучше моего варианта.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
bern
сообщение Aug 19 2010, 00:20
Сообщение #3331


Level 2
*

Класс: Ученик Дракона
Характер: Chaotic Neutral
Раса: Человек



Спасибо за столь доходчивый ответ (IMG:style_emoticons/kolobok_light/good.gif) Теперь все стало понятно. Буду мудровать теперь как все закрутить наиболее реалистично и чтобы не сидеть часами за доработкой деталей которые игрок может даже не заметить. Наверно нужно делать только самые основные анимации, как вы советовали, необходимые по сюжету и которые игрок просто обязан заметить(IMG:style_emoticons/kolobok_light/smile.gif) . Спасибо за ваши советы!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Aug 19 2010, 06:56
Сообщение #3332


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

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



Почитай еще вот здесь про скрипты ХБ НПС: http://remmgen.narod.ru/tscript3.html#SC_HB

Сообщение отредактировал gennady - Sep 4 2010, 16:22
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
bern
сообщение Aug 19 2010, 22:24
Сообщение #3333


Level 2
*

Класс: Ученик Дракона
Характер: Chaotic Neutral
Раса: Человек



Очень полезное инфо, благодарю. Я сейчас кстати играю в вашу Рыцарскую Сагу. Интересно и продумано, а наиболее понравилось что в близком русской душе стиле сделано (IMG:style_emoticons/kolobok_light/good.gif) Извиняюсь за спойлер (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Iceman157
сообщение Aug 22 2010, 13:03
Сообщение #3334


Level 1


Класс: Теневой Танцор
Характер: Lawful Good
Раса: Человек



Подскажите плиз как сделать точку респа нпц и героя. В скрипте я не очень разбираюсь, пробовал копировать респ из другого модуля - не получилось. Буду очень благодарен. (Имеется ввиду чтобы ресался после смерти и бежал по вейпоинтам точка1,точка2 и т.д., а не просто одноразовое появление появление)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Iceman157
сообщение Aug 24 2010, 15:27
Сообщение #3335


Level 1


Класс: Теневой Танцор
Характер: Lawful Good
Раса: Человек



С игроком разобрался как делать точку респа, но вот НПЦ не хочет ресаться (IMG:style_emoticons/kolobok_light/nea.gif) . народ помогите плиз, чтобы НПЦ ресался, вот что у НПЦ на OnDeath.
Neverwinter Script
void main()
{
    object oNPC = GetLastRespawnButtonPresser();
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectRe
surrection(),oNPC);
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHe
al(GetMaxHitPoints(oNPC)), oNPC);
    RemoveEffects(oNPC);

    string sDestTag = "WP_Death_Hero";

    int iEnteredCastle = GetLocalInt(GetModule(), "EnteredCastle");

    if (iEnteredCastle == TRUE)
    {
        sDestTag = "WP_Death_Hero2";
    }
    if (GetIsObjectValid(GetObjectByTag(sDestTag)))
    {
        object oSpawnPoint = GetObjectByTag(sDestTag);
        AssignCommand(oNPC,JumpToLocation(GetLocation(oSpa
wnPoint)));
    }
    else
    {
    }
}

Подскажите что не так, или лучше напишите пожалуйста скрипт.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Aug 24 2010, 15:55
Сообщение #3336


Level 7
**

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



Цитата(Iceman157 @ Aug 24 2010, 16:27) *
object oNPC = GetLastRespawnButtonPresser();

Просто OBJECT_SELF, ибо не нажимают боты на кнопки...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Iceman157
сообщение Aug 25 2010, 19:27
Сообщение #3337


Level 1


Класс: Теневой Танцор
Характер: Lawful Good
Раса: Человек



Цитата(greye @ Aug 24 2010, 18:55) *
Просто OBJECT_SELF, ибо не нажимают боты на кнопки...

Хорошо, понятно, но вот что изменять на OBJECT_SELF не понятно..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Talarasha
сообщение Aug 25 2010, 20:20
Сообщение #3338


Level 6
**

Класс: Маг
Характер: Lawful Evil
Раса: Нежить



Там написано, что. В цитате. Скрипт оперирует переменной oNPC, которая ссылается на мертвый объект. Мертвый объект в скрипте отслеживается функцией GetLastRespawnButtonPresser(), которая возвращает последнего персонажа, который щелкнул кнопку воскрешения. Но воскреснуть с помощью кнопки могут только игроки, а не NPC. Поэтому тебе сказали заменить на OBJECT_SELF, объект, который вызвал событие onDeath - он сам.
Вот это:
Neverwinter Script
object oNPC = GetLastRespawnButtonPresser();

Заменить на:
Neverwinter Script
object oNPC = OBJECT_SELF;


Сообщение отредактировал Talarasha - Aug 25 2010, 20:22
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Iceman157
сообщение Aug 26 2010, 10:35
Сообщение #3339


Level 1


Класс: Теневой Танцор
Характер: Lawful Good
Раса: Человек



Изменил, но теперь нпц не просто не ресается, теперь его нет вообще =\

Цитата(Iceman157 @ Aug 26 2010, 13:30) *
Изменил, но теперь нпц не просто не ресается после смерти, теперь его нет вообще =\

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Talarasha
сообщение Aug 26 2010, 14:36
Сообщение #3340


Level 6
**

Класс: Маг
Характер: Lawful Evil
Раса: Нежить



Я вообще удивляюсь, как это у тебя компилируется. В базовой библиотеке нет функции RemoveEffects, а никаких инклюдов не указано. Не говоря уже про условия, вероятно вырванные из оригинального скрипта?
Neverwinter Script
void main()
{
    object oSpawn = GetObjectByTag("WP_SPAWN"); // Тэг точки спавна

    SetIsDestroyable(FALSE,TRUE,FALSE);
    DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectR
esurrection(),OBJECT_SELF));
    DelayCommand(3.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectH
eal(GetMaxHitPoints(OBJECT_SELF)), OBJECT_SELF);
    //DelayCommand(3.2,RemoveEffects(OBJECT_SELF));
    DelayCommand(3.2,JumpToObject(oSpawn));
}

Все сохранить и повесить на onDeath объекта.
Закомментированный DelayCommand раскомментируешь, когда найдешь, откуда берется функция.

Для общего развития:
1)NPC не может быть воскрешен, если ему об этом не сказано с помощью SetIsDestroyable(*,TRUE,*);
2)Когда скрипт висит на onDeath, не нужно использовать AssignCommand, он итак выполняется объектом, вызвавшим событие.
3)Мертвые тела - не переносятся через JumpToObject.
4)В этом скрипте предполагается, что нужно воскрешение именно этого конкретного экземпляра NPC. Если бы мне понадобился респ, я бы сделал его через CopyObject.

Сообщение отредактировал Talarasha - Aug 26 2010, 14:45
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Iceman157
сообщение Aug 26 2010, 15:13
Сообщение #3341


Level 1


Класс: Теневой Танцор
Характер: Lawful Good
Раса: Человек



Ну RemoveEffects берется из #include "nw_i0_plot" , забыл написать.
А вот твоя строка
Neverwinter Script
DelayCommand(3.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectH
eal(GetMaxHitPoints(OBJECT_SELF)), OBJECT_SELF);

Выдаёт ошибку. ИМХО не компелируется.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Talarasha
сообщение Aug 26 2010, 15:17
Сообщение #3342


Level 6
**

Класс: Маг
Характер: Lawful Evil
Раса: Нежить



Neverwinter Script
DelayCommand(3.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectH
eal(GetMaxHitPoints(OBJECT_SELF)), OBJECT_SELF));

Скобка пропущена.
Полностью тогда будет так:
Neverwinter Script
#include "nw_i0_plot"

void main()
{
    object oSpawn = GetObjectByTag("WP_SPAWN"); // Тэг точки спавна

    SetIsDestroyable(FALSE,TRUE,FALSE);
    DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectR
esurrection(),OBJECT_SELF));
    DelayCommand(3.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectH
eal(GetMaxHitPoints(OBJECT_SELF)), OBJECT_SELF));
    DelayCommand(3.2,RemoveEffects(OBJECT_SELF));
    DelayCommand(3.2,JumpToObject(oSpawn));
}


Сообщение отредактировал Talarasha - Aug 26 2010, 15:22
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Iceman157
сообщение Aug 26 2010, 15:22
Сообщение #3343


Level 1


Класс: Теневой Танцор
Характер: Lawful Good
Раса: Человек



Ооооо... хых. Спасибо тебе большое =) Работает.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
bern
сообщение Oct 23 2010, 17:35
Сообщение #3344


Level 2
*

Класс: Ученик Дракона
Характер: Chaotic Neutral
Раса: Человек



Добрый вечер, уважаемые модмейкеры и те кто этому учится (IMG:style_emoticons/kolobok_light/rolleyes.gif) .

Мне пришла одна интересная (на мой взгляд) идея. Может такое уже есть и кем-то используется, а возможно некоторым людям будет интересной находкой и толчком к размышлениям и фантазии.

Магия переменных.

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

1. Встреча каравана на большой дороге.

На большую часть локации ставится триггер с скриптом появления всех частей каравана при входе игрока (глава каравана, повозки с мулами, охранники, путники и т.д.). Размер триггера побольше, чтобы караван не возник прям под носом игрока. На появление ставиться вероятность - можно вообще никого не встретить, а можно караваны разных видов и состава. А дальше поле для фантазии - действия с участниками каравана (ограбить, подсказать, поторговать, наняться на работу и т.д...). А в конце процедуры установка различных значений переменным, которые имеют отображение в дневнике персонажа - убито столько-то людей, помог столько-то караванам... На этом можно строить отношение к игроку населением модуля.

2. Крафтинг, ремесла и навыки.

Изучив за неимоверные испытания навык алхимии у алхимика, игрок получает +1 к переменной навыка "алхимия" (IMG:style_emoticons/kolobok_light/yahoo.gif) - сразу отображение в соответствующем разделе дневника, созданном зараннее модмейкером. Это открывает возможности к созданию зелий через диалог со столом алхимика (IMG:style_emoticons/kolobok_light/rolleyes.gif) Очевидно, что все возможные виды зелий нужно прописать в диалоге алхим. стола и поставить ограничения по навыку через переменные. Так и с другими ремеслами и вообще с чем душа пожелает.

3. Лут с монстров.

Получив например от охотника навык снимания шкуры с зверей, игрок получает шкуру в останках убитого волка. Тоже делается через переменную и проводится проверка скриптом какую вещь ложить в лут определенного монстра.

Также за каждое действие в игре игроку можно давать репутацию, звания (убил столько-то монстров, создал столько-то мечей, помог столько-то бабушкам, отнял завтрак у столько-то школьников (IMG:style_emoticons/kolobok_light/rolleyes.gif) ) Короче, поле для фантазии (IMG:style_emoticons/kolobok_light/crazy.gif) . От этого будут зависеть различные аспекты игры - отношение различных персонажей, возможность взять в компанию определенных спутников, дающиеся игроку квесты и т.д. Да, это не быстро воплотить в жизнь и местами не так уж и просто, но возможности игры можно расширить значительно. Главная фича - отображение всей инфы в дневнике, используя возможность замены текста в его разделах. Не нужно программировать новые навыки, ремесла и т.д.

Да, возможно это не совсем хорошая услуга для тех людей, кто хочет научиться программировать Невер по настоящему, но это выход для тех кто хочет сделать интересный полифункциональный мод, не располагая большими знаниями программирования. Здесь на форуме есть все необходимые готовые скрипты и ответы по различным манипуляциям с переменными и ветками дневника. Так что можно дерзать и дорогу осилит идущий (IMG:style_emoticons/kolobok_light/biggrin.gif)

Если модераторы захотят, это можно сделать отдельной темой и туда уже кидать необходимые по ходу скрипты и отвечать на вопросы. Для удобства (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
bern
сообщение Oct 26 2010, 10:52
Сообщение #3345


Level 2
*

Класс: Ученик Дракона
Характер: Chaotic Neutral
Раса: Человек



Скажите, как можно добавить +1 или другое число к переменной, учитывая ее текущее значение, а не устанавливая конкретное значение? И можно ли через скрипт добавить запись в дневник?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Laajin
сообщение Oct 26 2010, 11:10
Сообщение #3346


Level 5
**

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



Neverwinter Script
int nNum = GetLocalInt(.... , ".....");

SetLocalInt(.... , ".....", nNum++);



если нужно определенное число тогда
Neverwinter Script
int nNum = GetLocalInt(.... , ".....");
nNum += 4;
SetLocalInt(.... , ".....", nNum);


На ваулте есть модули переведенные Аваддоном (прошу прощения если не правильно написал имя)по крафтингу, системы банкинга и Гильдинга
Имхо, проще изменить что-то чем писать с 0.
например 1, 2, 3

Сообщение отредактировал Laajin - Oct 26 2010, 17:44
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Talarasha
сообщение Oct 26 2010, 13:07
Сообщение #3347


Level 6
**

Класс: Маг
Характер: Lawful Evil
Раса: Нежить



Цитата
И можно ли через скрипт добавить запись в дневник?

Чем спрашивать на форуме, быстрее и проще вскрыть ту же prelude.mod и посмотреть скрипт на заход.

Neverwinter Script
AddJournalQuestEntry("TAG", #, oPC, TRUE, TRUE);

TAG - тэг журнальной ветки, # - номер записи, oPC - игрок, на которого вешать, можно например GetPCSpeaker() - если в диалоге. Проверка номера ветки делается через локальную переменную:
Neverwinter Script
GetLocalInt(oPC, "NW_JOURNAL_ENTRYTAG")

Нужно только помнить, что имя переменной формируется методом NW_JOURNAL_ENTRY+TAG, т.е. первая часть так и остается, а вместо TAG пишем тэг журнальной ветки.

Сообщение отредактировал Talarasha - Oct 26 2010, 13:09
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Oct 26 2010, 15:02
Сообщение #3348


Level 7
**

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



Цитата(Laajin @ Oct 26 2010, 12:10) *
int nNum = GetLocalInt(.... , ".....");
SetLocalInt(.... , ".....", nNum++);

Постфиксное инкрементирование (var_name++) увеличит содержимое переменной, но вернёт _предыдущее_ значение. Т.е. в данном случае значение локальной переменной не изменится.
Правильно либо
Neverwinter Script
SetLocalInt(<object>, <var_name>, ++nNum);

, либо
Neverwinter Script
SetLocalInt(<object>, <var_name>, nNum + 1);
.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Laajin
сообщение Oct 26 2010, 15:19
Сообщение #3349


Level 5
**

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



сколько занимался нвн то

Neverwinter Script
int nNum;

while(nNum < 10)
{



nNum++;
}


всегда работало

Сообщение отредактировал Laajin - Oct 26 2010, 15:19
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
PaiNt
сообщение Oct 26 2010, 15:30
Сообщение #3350


Level 8
***

Класс: Псионик
Характер: Chaotic Neutral
Раса: Хафлинг



Цитата(Laajin @ Oct 26 2010, 23:19) *
сколько занимался нвн то

Neverwinter Script
int nNum;

while(nNum < 10)
{



nNum++;
}


всегда работало

Я вот поидее сам также пользуюсь но поидее должно работать и так?
Neverwinter Script
int nNum;
while( nNum++ < 10)
{
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 132 133 134 135 136 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 18th April 2024 - 04:20