Цитата(Aiwan @ Jun 14 2007, 17:34) [snapback]109385[/snapback]
Найди в инвентаре бутыль и скажи НПС что бы он выполнил действо заюзал предмет. Мож получится.
Цитата(NeoJSmith @ Jun 14 2007, 12:44) [snapback]109364[/snapback]
ммм... а тег бутылки узнать заранее слабо?
позорище, товарищи скриптеры.

Вирь, а ведь хенчи и НПС жрут поушены согласно своему АИ. Те как-то оно делается скриптами.
virusman
Jun 14 2007, 21:22
QUOTE(Lex @ Jun 14 2007, 19:12) [snapback]109390[/snapback]
Вирь, а ведь хенчи и НПС жрут поушены согласно своему АИ. Те как-то оно делается скриптами.
В AI очень много чего зашито в движок в виде talent'ов (в данном случае - TALENT_CATEGORY_BENEFICIAL_HEALING_POTION, при этом задать, какую конкретно бутылку он выпьет, невозможно).
Хеньчи жрут зелья и кастуют спеллы из свитков тока отбегай от них. Если через скрипты низя тоды не трахайте мозг, узнайте что за скрипт запускается при бутылке и запускайте его на НПС и все. Анимашка + скрипт. Вообще мы задачи не видим. Я надеюсь это не в бар что бы НПС в натуре стоял и пил вино ужравшись в ж**у падал замертво...
Цитата(Lex @ Jun 14 2007, 21:12) [snapback]109390[/snapback]
позорище, товарищи скриптеры.
НВН движок имеет в совем описании больше он НЕ МОЖЕТ или НЕПРАВИЛЬНО ДЕЛАЕТ, чем что он МОЖЕТ или ПРАВИЛЬНО делает. Тебе ли не знать
virusman
Jun 14 2007, 21:45
QUOTE(Teranozavr_REX @ Jun 14 2007, 16:17) [snapback]109382[/snapback]
про наложитьанимациюуже думал но это через одно место ибо на каждую банку прийдеться прописывать ее эфект руками
Хотя если ничего не придуматьбольше (( прийдеться так и делать
Можно пробежаться по Item Properties и выцепить ID спелла, потом наложить анимацию, скастовать спелл с параметром InstantSpell и удалить банку или уменьшить их количество.
З.Ы. А для чего это нужно?
Цитата(virusman @ Jun 14 2007, 22:45) [snapback]109403[/snapback]
Можно пробежаться по Item Properties и выцепить ID спелла, потом наложить анимацию, скастовать спелл с параметром InstantSpell и удалить банку или уменьшить их количество.
да, пожалуй самый нормальный вариант. Хотя думается овчинка не стоит выделки
Worldowner
Jun 14 2007, 22:30
"
Henchman HotU, Шаблон диалога + скрипты и примеры"
Там только повышение уровня при левелапе. А мне нужно знать как это сделать при приёме хенча на работу. Возможно, для тебя это само собой разумеется, но я никак не вьезжаю, как это сделать.
Цитата(Aiwan @ Jun 13 2007, 20:26) [snapback]109340[/snapback]
Зайди в раздел скриптов для новичков и раздел Хеньчманов здесь. Я СПЕЦИАЛЬНО РАЗБИРАЛ ЭТОТ ВОПРОС.
функция LevelUpHenchman()
глянь ее описание, там просто все.
Цитата(Worldowner @ Jun 15 2007, 01:30) [snapback]109409[/snapback]
А мне нужно знать как это сделать при приёме хенча на работу.
Да мне очень интересно знать. Я совсем не врублюсь на какю нахрен работу хеньчмана берут?
Цитата(Aiwan @ Jun 15 2007, 10:45) [snapback]109426[/snapback]
Да мне очень интересно знать. Я совсем не врублюсь на какю нахрен работу хеньчмана берут?
Айв, хорошь стебаться. Речь об автолевелапе Хенча до уровня игрока при добавление в партию.
Axel><))))@>
Jun 15 2007, 11:32
С поищью какой проги 2дашники и остальные вещи видираются из биф архива (Total COmander Не подходит)?
virusman
Jun 15 2007, 11:39
NWN Explorer
Пакет 2da для своей версии лучше скачать с сайта Bioware.
Teranozavr_REX
Jun 15 2007, 11:41
Питие банок и юзанье свитков нужно для АИ
просто занимаюсь таким не благодарным делом как полное переделывание АИ
добился в этом направлении уже больших результатов
Свитки и банки были бы оследним штрихом
делать анимация + наложение эфекта не удобно с точки зрения дальнейшегоиспользования
так как ресуя мапу закинул мобу бутелей и не паришся АИ сам все заюзает
а так (((
ну что же прийдеться попробовать таклант сей вызнать илли вообще забитьна это дело((
virusman
Jun 15 2007, 11:47
QUOTE(Teranozavr_REX @ Jun 15 2007, 12:41) [snapback]109431[/snapback]
делать анимация + наложение эфекта не удобно с точки зрения дальнейшегоиспользования
так как ресуя мапу закинул мобу бутелей и не паришся АИ сам все заюзает
а так (((
А так - будет то же самое. При описанном алгоритме вручную ничего задавать не надо.
Цитата(Lex @ Jun 15 2007, 13:10) [snapback]109428[/snapback]
Айв, хорошь стебаться. Речь об автолевелапе Хенча до уровня игрока при добавление в партию.
Та а я о чем, о анальном сексе с хеньчманом что ли? Если тут есть намеки на анал то растолкуйте мне:
Цитата(Aiwan @ Oct 3 2005, 19:44) [snapback]52842[/snapback]
В слоте OnPlayerLevelUp модуля, в скрипте добавьте такую инклюду и строку:
Neverwinter Script Source
#include "x0_i0_henchman"
//-------------------------------------------------------
LevelUpXP1Henchman(oPC); // Поднимаем уровень помощнику
//-------------------------------------------------------
Теперь при поднятии уровня РС и помощник будет поднимать себе уровень.
Специально писалось для таких людей, кто не знает что и как. Там в диалоге специально ВСЕ НАСТРОЕНО И ПОДГОН УРОВНЯ ХЕНЬЧМАНА ТОЖЕ, надо только открыть и почитать. Все левелапиться при поступлении гастробайтера на работу в плантации.
Epsilon
Jun 15 2007, 18:42
Полагаю никого не удивит то, что я всё ещё не смог заставить работать стандартный скрипт онспавна.
Ну не знаю, он просто не работает, видать я чего-то недопонял.
Пожалста, разьясните что нужно делать с НПСом после закрепления онспавна с нужными настройками
Что именно вы хотите от НПС и какой скрипт вставляете?
Epsilon
Jun 15 2007, 20:19
1. я не думаю, что адменистратору сайта стоит обращаться к кондидиту на Вы
2. я ни как не могу разобраться со скриптом на онспавне, с помощью которого можно поставить эмбиент анимацию
Разъясняю подробнее, чтоб потом было меньше вопросов:
Я делаю модуль с локациями для заявки и не могу сдвинуться с мёртвой точки из-за скрипта, заставляющего НПСа рандомно бродить по городу.
Я раскомментирую нужные мне строки в скрипте, ставлю этот скрипт на онспавн НПСа, размещаю его на локе, сохраняю, гружу модуль в игре, а он стоит на месте(НПС)
Epsilon, я очень много общаюсь в интернете не только по поводу НВН. И уже проскальзывает официальный сленг

Так вот. В теме скриптов для новичков, я выкладывал скрипт который надо ставить на НПС в слот спавна.
Вот
ТУТ.
Настраивается так. Например тебе надо что бы НПС бродил по округе. Ищешь строку с этим видим код:
Neverwinter Script Source
//--------------------------------------------------------------------------
// Почти то же что и выше, за исключением того, что НПС бродит по округе.
//--------------------------------------------------------------------------
if (GetLocalInt(OBJECT_SELF, "FLAG_AMBIENT_ANIMATIONS") == TRUE)
{SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);}
Дальше в свойствах НПС ищешь закладку присвоения локалки ставишь на него локалку "
FLAG_AMBIENT_ANIMATIONS" в значение
TRUE. Все.
Айв, ему простое раскомментирование
Neverwinter Script Source
SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);
в спавн-скрипте не помогло

(или он не то раскоментил). Думаешь это лучше пойдет?
virusman
Jun 16 2007, 02:27
К слову, я сегодня сделал в NWNX функции:
Neverwinter Script Source
void ActionUseItemOnObject(object oItem, object oTarget, int nPropertyNum = 0);
void ActionUseItemAtLocation(object oItem, location lLocation, int nPropertyNum = 0);
Teranozavr_REX
Jun 16 2007, 16:24
ActionUseItemOnObject
я тоже хочю такую функцию))) как бы ее получить а ?? )
если у тебя шард то без проблем. НВНХ + тряси виря на исходники. В остальных случаях забудь и делай этим методом:
Цитата(virusman @ Jun 14 2007, 22:45) [snapback]109403[/snapback]
робежаться по Item Properties и выцепить ID спелла, потом наложить анимацию, скастовать спелл с параметром InstantSpell и удалить банку или уменьшить их количество.
благо по сравнению с написанием АИ это ваще детский сад.
Epsilon
Jun 16 2007, 20:02
Даже простой раскомментированный скрипт не работает, НПС стоит как вкопанный
Может в версии 1.23 нет поддержки эмбиента, хотя это наверное звучит глупо
Dik Morris
Jun 16 2007, 21:31
2 Epsilon, отлично. Вот тебе
модуль (версия максимальная), в нем - все прекрасно работает, как видишь (видимо ты не удосужился подождать, NPC не мгновенно начинает).
Дожили

.
Epsilon
Jun 18 2007, 01:52
ааа...что же вы мне раньше не сказали, а я то думал.
Всё работает.
Worldowner
Jun 18 2007, 17:39
Следующий вопрос по списку СТВ (Самых Тупых Вопросов):
Каким образом задаётся точка респавна в модуле? Я как-то до сих пор не обращал внимания, а теперь вот умер и воскрес на том же месте. Таким образом до меня дошло, что точку респавна надо специально задавать.
Dik Morris
Jun 18 2007, 18:22
Ну, эти параметры, должны указываться в скрипте, эвента OnPlayerRespawn (модульный). Используя функцию ActionJumpToObject, а так же ряд других, это довольно легко сделать. Посмотри форумные скрипты, выдери нужные кусочки, их и добавь в скрипт стоящий по умолчанию.
AndrewKubatov
Jun 19 2007, 14:04
Я абсолютный новичок в создании модулей. Пожалуйста ! Обьясните мне : как пользоваться скриптами ?
пользоваться очень просто: поставить нужный скрипт в нужный слот и радоваться жизни.
AndrewKubatov
Jun 19 2007, 14:41
В том то и проблема. Я хочу сделать так , чтобы когда начинать кампанию у тебя был 15-й level , а как незнаю...
Это уже не пользование, а написание скриптов. Тема более сложная.
Глянь "Базу Скриптов", там есть несколько скриптов на вход.
Dik Morris
Jun 19 2007, 17:00
Точнее "Скрипты для новичков". Еще точнее:
вот она, нужная тема. Смотри самый первый пост (скрипт).
Cтрока: SetXP - и отвечает за количество полученного опыта, при первом входе в модуль. Установи нужное значение, если не знаешь сколько нужно опыта на 15тый, - смотри в мануале, в папке docs, там это указано.
PS: в том скрипте, так же есть ряд некоторых других функций, скажем удаления одежды с персонажа и т.д. Просто сотри или закомментируй (два слеша, перед строкой - //), не нужные строчки, там все понятно должно быть, ибо есть комментарии.
AndrewKubatov
Jun 19 2007, 17:32
Попробую. Потом сообщу , если что-то не получится.
shadowdweller
Jun 19 2007, 22:55
А можно немного усложнить задачу? Допустим, игрок входит в мод персом не 1 уровня, а, скажем, 3-го или 17-го. Как сделать так, чтобы в первом случае уровень поднимался бы до 15-го, а во втором случае - ничего бы не происходило?
Daniel
Jun 19 2007, 23:26
Вроде SetXP устанавливает нужное кол-во опыта, будь его меньше или больше, могу ошибаться
Цитата(Daniel @ Jun 20 2007, 00:26) [snapback]109638[/snapback]
Вроде SetXP устанавливает нужное кол-во опыта, будь его меньше или больше
да. Будет опыта у игрока больше, чем SetXP ставит - опыт срежется, будет меньше - добавится. А если надо чтобы игнорилось, если экспы больше, то там добавится маленький простенький условный оператор.
shadowdweller
Jun 19 2007, 23:38
Lex, простенький - для тебя. Но не для меня, я дальше анимации обычной и спавна никуда не ушла пока...
С SetXp все понятно. Непонятно, как делать проверку на уровень перса. По идее, скрипт должен начинаться с проверки на уровень - меньше или больше 15-го, потом уже либо даем экспу, либо оставляем все как есть. Чисто теоретически я это знаю, но вот написать сама не могу...
Neverwinter Script Source
if (GetXP(oPC)<XXXXXXX) SetXP(oPC,XXXXXXX)
где XXXXXX - опыт, соотв. 15 левелу.
shadowdweller
Jun 19 2007, 23:48
Все, врубилась, пасиб.

Дальше сама сделаю, там, вроде, несложно. А ставится в свойства мода?
Daniel
Jun 20 2007, 01:10
Вообщем пытаюсь научиться писать скрипты, пока что ничего не выходит...
Нужен скрипт чтобы НПС говорил рандомные фразы
Вот тот бред который у меня получился:
Neverwinter Script Source
void main()
{
object oL=GetObjectByTag("L");
int sTalk;
switch (d4())
{
case 1: sTalks=ActionSpeakString("1"); break;
case 2: sTalks=ActionSpeakString("2"); break;
case 3: sTalks=ActionSpeakString("3"); break;
case 4: sTalks=ActionSpeakString("4"); break;
}
AssignCommand(oL, ActionSpeakString(sTalk));
}
эээ.. почти правильно у тебя. А вот совсем правильный вариант. Найди 10 отличий.
Neverwinter Script Source
void main()
{
object oL=GetObjectByTag("L");
string sTalks;
switch (d4())
{
case 1: sTalks="1"; break;
case 2: sTalks="2"; break;
case 3: sTalks="3"; break;
case 4: sTalks="4"; break;
}
AssignCommand(oL, ActionSpeakString(sTalks));
}
если скрипт будет стоять на самом НПС (на ХБ или ЮД), то там проще будет:
Neverwinter Script Source
void main()
{
string sTalks;
switch (d4())
{
case 1: sTalks="1"; break;
case 2: sTalks="2"; break;
case 3: sTalks="3"; break;
case 4: sTalks="4"; break;
}
ActionSpeakString(sTalks);
}
а твой вариант похож на скрипт, который стоит на каком-нить нивидимом объекте и управляет неписями. Но тады лучше такой объект грузить по полной - те не 1 НПС, а группой. Скрипт по реализации рандомного разговора между НПС с анимацией и прочими делами есть в Базе Скриптов.
Dik Morris
Jun 20 2007, 11:49
2 Lex, только не sTalk, a sTalks (4 и 12тая строки).
Кстати, а не лучше ли будет просто SpeakString? Мало-ли что еще, вдруг NPC занят

. Если ситуация с ХБ, я бы именно так сделал.
Цитата(Dik Morris @ Jun 20 2007, 12:49) [snapback]109665[/snapback]
2 Lex, только не sTalk, a sTalks (4 и 12тая строки).
спс, поправил.
Цитата(Dik Morris @ Jun 20 2007, 12:49) [snapback]109665[/snapback]
Кстати, а не лучше ли будет просто SpeakString?
лучше. Но это уже второй этап
Epsilon
Jun 20 2007, 20:04
Как говаривал терминатор

: "
Я вернулся"
Вот починил модем, вновь попал в интернет. А вопросов то!
Но пока задам только один: хочу своеобразную лотерейку сделать, с рандомным выбором я обращаться умею, но вот не умеб его менять скриптом. Типа сделал то что нужно и вот тебе удача
Dik Morris
Jun 20 2007, 20:38
2 Epsilon, честно говоря, не совсем понял вопрос. Точнее его суть.
Но пример все-таки приведу:
Neverwinter Script Source
void main()
{
object oPC; // Обязательно инициализируй. Под данный случай;
int nRandom = Random(5); // Собственно сама "лотерея";
if (nRandom == 1)// проверка, если "Бинго":
{
// Нужные действия;
// <...>.
}
else
AssignCommand(oPC, SpeakString("Не повезло!.."));
}
Скрипт конечно не под конкретную ситуацию, но общий смысл такой; доработать его не составит проблем, главное что бы сам процесс был понятен. Посмотри описание функций из кода, добавь дополнительные "выигрыши" используя проверку: || (или) и т.д...
Daniel
Jun 20 2007, 20:40
Lex, благадарю за помощь
Epsilon
Jun 21 2007, 17:58
Перефразирую вопрос: как изменить существующую случайность
Dik Morris
Jun 21 2007, 18:10
Специально еще посоветовал, посмотреть описание функций которые я привел. Вот например Random(х) - как раз и отвечает за "случайность".
Таким образом, если поставить в выше приведенном скрипте, вместо 5, скажем 40 - шанс значительно уменьшится, я бы сказал опустится до минимума

.
Teranozavr_REX
Jun 22 2007, 17:16
Доброе время суток
кто тознает как сделатьтак что бы сон пробегал за 2 сек ??
Dik Morris
Jun 22 2007, 17:55
2 Teranozavr_REX, ну можно это реализовать, используя солянку функций:
Цитата
FadeToBlack;
FadeFromBlack;
ForceRest.
Первым делом, налаживать черный экран, затем ждать две секунды, и использовать ForceRest (мгновенный отдых), потом собственно снимать экран (не беру в учет анимацию и т.д, именно ядро).
Думаю такой вариант подойдет.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.