Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103
dumbo
HGLL - скрипт-система, которая позволяет "искуственно" поднять кап до 60(без всяких плюсов). но ее установка - не самое простое занятие.
Armor Darks
Цитата
Вопрос - возможно ли в нвн лвл кап поднять до 60+ ?

Цитата
Нет.

на самом деле можно, и не только до 60, а аж до 120
Lex
только это будет самописное, немного стремное и не очень нужное smile.gif
Armor Darks
согласен.
virusman
Цитата(Armor Darks @ Dec 30 2007, 13:01) *
на самом деле можно, и не только до 60, а аж до 120
На уровне движка - невозможно. Все решения с левелами выше 40 - обходные, используя редактирование персонажей, навешивание шкур и т.п.
Deirdre
Какой скрипт используется для того, чтобы при попытке ПС поговорить с НПС, у того над головой высвечивалась фраза (типа: "Оставь в покое бедного старичка!")?
В Шпаргалке на одном сайте указан такой скрипт:
Neverwinter Script Source

ActionSpeakString( "Охо-хо, что же будет???" );
DelayCommand( 31.5, AssignCommand( oPC, SpeakString( "Слова" )) );
AssignCommand( oPC, ActionStartConversation( oNPC, "dialog" ));
// “dialog” - диалог персонажа
AssignCommand( oPC, ActionStartConversation( oNPC )); // диалог персонажа

Вопрос такой: как я понимаю, вместо "Охо-хо, что же будет???" я вставляю свои слова, которые должны появляться над головой непися. А что вставлять в "dialog" и "Слова"?
Lex
странная какая-то фигулина, если честно. Чтобы у НПС над головой высвечивалась только 1 фраза при попытке разговора, создай диалог с одной фразой и поставь этот диалог нужному НПС.
Deirdre
Lex, диалог с одной фразой - это-то понятно, это просто, а вот как сделать чтобы в сам диалог не заходило, а надо голвоой высвечивалось... в самой игре такое есть, я видела smile.gif И просто так люди орут что-то, когда мимо проходишь, наверное, скрипт в 6-ти секундный интервал вставлен... но все равно спасибо и с Наступающими! smile.gif
Lex
тады в ХБ/Персепшн скрипт поставить
Neverwinter Script Source
SpeakString( "текст" );

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

Но тут надо на самом деле еще кой-чего проверять - что НПС не мертв, что он не под эффектом сна.
Deirdre
Lex, ХБ\Персепшн? Это где?
И такой еще вопрос - в свойствах модуля, в событиях есть скрипт "КогдаИгрокПолучаетПредмет" там можно написать скрипт, который обновляет журнал, когда ПС находит определенную вещь, а что делать если таких предметов несколько для разных квестов?
Белатрис
Дай каждой вещи уникальный тэг, а в скрипте напиши несколько проверок для каждого предмета.
gennady
Цитата
ХБ\Персепшн? Это где?

OnHeartBeat — повторяющийся скрипт, цикл каждые 6 секунд (ХБ)
OnPerception — при вхождение в зону реакции НПС любого другого существа (Персепшн)
Вот вам скрипт для такого случая… Запускается диалог для 4 неписей, причем в слоте диалога активного непися может стоять собственный диалог. Этот же скрипт годится и для другой группы неписей, нужно только пробить в диалоге тег для нужного непися.
Neverwinter Script Source
void main( )
{
  object oSelf = OBJECT_SELF;
  if ( !IsInConversation( oSelf ))
  {
    object oPC = GetNearestCreature( CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC );
    if ( !GetIsPC( oPC )) return;
    if ( GetDistanceBetween( oPC, oSelf ) < 5.0 )
    {
      vector vFace = GetPosition( GetWaypointByTag( "TR_" + GetTag( oSelf )) );
      object oPC1 = GetObjectByTag( "1_" + GetTag( oSelf ));
      object oPC2 = GetObjectByTag( "2_" + GetTag( oSelf ));
      object oPC3 = GetObjectByTag( "3_" + GetTag( oSelf ));
      AssignCommand( oSelf, ClearAllActions( ) );
      AssignCommand( oPC1, ClearAllActions( ) );
      AssignCommand( oPC2, ClearAllActions( ) );
      AssignCommand( oPC3, ClearAllActions( ) );
      AssignCommand( oSelf, SetFacingPoint( vFace ));
      AssignCommand( oPC1, SetFacingPoint( vFace ));
      AssignCommand( oPC2, SetFacingPoint( vFace ));
      AssignCommand( oPC3, SetFacingPoint( vFace ));
      AssignCommand( oSelf, ActionStartConversation( oSelf, "ras_pc" )); // диалог персонажа из базы
    }
  }
}
// Слот OnHeartbeat, тег любой, второй персонаж автономен
// Hужна точка с тегом "TR_" + тег 1 персонажa
// Диалог ras_pc с указанием тега 2 персонажа
// тег 2 персонажа ( "1_" + тег 1 персонажa )

P.S. Лекс, и не ругайся, это новогодний подарок для редкого посетителя нашего сайта biggrin.gif
Lex
тока скрипт опять не про то smile.gif)) Надо чтобы текст над головой, а не начало диалога с игроком. Для такой задачи в принципе подойдет скрипт, который я в базе выкладывал для диалога 2-3 НПС между собой.
Deirdre, глянь тему База Скриптов, там в первом посте есть оглавление
gennady
Цитата(Lex @ Jan 1 2008, 12:52) *
тока скрипт опять не про то )) Надо чтобы текст над головой, а не начало диалога с игроком.

Как раз про то! См. внимательно, declare.gif тут совсем не о диалоге с ГГ. Это для неписей, от 2 до 4 чел, мне просто больше не было нужно. Это взамен ваших диалогов с WP в Леворе... biggrin.gif
Цитата(Deirdre @ Dec 31 2007, 16:20) *
И просто так люди орут что-то, когда мимо проходишь, наверное, скрипт в 6-ти секундный интервал вставлен...

Вот для этого!
Teranozavr_REX
declare.gif День добрый
Давненько я у вас тут не был)

Вооопрос, есть стандартные (те что уже есть впалитре) пузери с ядом
Возможно ли сделать свой яд, Скажем "Яд Тарантула" - при попадании вместо наносить урон статам, что бы он минусовал сколько то дисциплины.

если говрить в более общем случае , то надо итем провертис наложить, на оружие, который при ударе запускал бы какой-то наперед оговореный скрипт.
Lex
Цитата(Teranozavr_REX @ Jan 4 2008, 10:35) *
Вооопрос, есть стандартные (те что уже есть впалитре) пузери с ядом
Возможно ли сделать свой яд, Скажем "Яд Тарантула" - при попадании вместо наносить урон статам, что бы он минусовал сколько то дисциплины.

да, скриптовать надо. Эти onHit можно отскриптовывать самому.
Teranozavr_REX
QUOTE(Lex @ Jan 4 2008, 12:55) *
да, скриптовать надо. Эти onHit можно отскриптовывать самому.



ну ну чюточку попопдробнеее как найти те евенты сценарии или что там должно быть куда можно вписать код который будет исполняться при попадении "отравленым оружием" ???!!!
Lex
ну самый очевидный вариант:
1. сделать новый закл в spells.2da. cкрипт закла и будет эффект от удала отравленным оружием.
2. прописать новое свойство onHitCastSpell (не помню в какой табличке, гдето в itpr_ или как-то так. в свойствах предмета в общем)
3. вешать это свойство при использовании яда (или скриптом или опять через закл. Через закл смотрится более "движково" smile.gif )


Добавлено через 56 секунд

возмножно (!?) можно сделать напрямую свойство onHit. Но я честно говоря ниразу не пробовал. Вот и домашнее задание тебе smile.gif посмотри табличку с onHit и пойми как оно работает. Если тоже через спеллы - то так даже лучше smile.gif
Teranozavr_REX
угу пасибо, принципе я уже в эту сторону и начал копать rolleyes.gif бум надеяться смогу увидеть свет в конце тунеля prankster2.gif
Armor Darks
Цитата
На уровне движка - невозможно. Все решения с левелами выше 40 - обходные, используя редактирование персонажей, навешивание шкур и т.п.

кстати, у НПС в нвн1 может быть задан 120 уровень без пребегания к извращеньям. Но с игровыми персонажами это, увы, не проходит.
Lex
Цитата(Armor Darks @ Jan 4 2008, 17:22) *
120 уровень без пребегания к извращеньям.

ему все что выше 40 дает только бонусы на ХП и мб скилы. Остальное вроде бы не расписано нигде (тот же БАБ). Так что толку с такого левела - пшик.
azathoth
всё, что выше 17го -- от лукавого smile.gif

насчет яда: насколько я рылся в .2da OnHit всё захардкодено => нужно писать и в "spells.2da" и в "iprp_spells.2da" или "iprp_onhitspell.2da". (судя по задаче второе).
и затем по-видимому вонтэнто:
Neverwinter Script Source
// Creates an item property that ( when applied to a weapon item ) causes a spell to be cast
// when a successful strike is made, or ( when applied to armor ) is struck by an opponent.
// - nSpell uses the IP_CONST_ONHIT_CASTSPELL_* constants
itemproperty ItemPropertyOnHitCastSpell( int nSpell, int nLevel )
zmey
В 1.68 появились модельки каких-то рыбоящеров. Как эти существа называются в D&D?
Armor Darks
эм, не помню, по-моему они и раньше были - lizardfolks. Хотя может быть я ошибаюсь
Deirdre
А вот подскажите, как сделать так, чтобы определенные создания (НПС) появлялись в заданное время. Для примера: герой вышел из трактира, пошел в пещеру, убил волка, возвращается - а у трактира три молодчика его ждут.
И можно ли "повесить" переменную на событие игровое, скажем, смерть монстра - чтобы после его убийства происходили другие события, а если не убил - то нет?
smile.gif
virus_found
Цитата("zmey")
В 1.68 появились модельки каких-то рыбоящеров. Как эти существа называются в D&D?

Sahuagin
Deirdre
Цитата(virus_found @ Jan 11 2008, 20:20) *

Хм... была история, детям до 16 не читать smile.gif Мы играли АДД, брат мой приехал - его тоже затащили, он в первый раз играет, все незнакомое... и были там у нас сахуагины. Брат все время косился на меня, потом передает тихонько записку с озадаченным видом. Там написано: "Суховагины????????"
Сорри, если оффтоп, а вот вопрос у меня назрел smile.gif
Как сделать так, чтобы ПС мог стрелять по мишеням? Враждебными я их уже делала, не помогает.
Lex
Цитата(Deirdre @ Jan 11 2008, 22:05) *
Как сделать так, чтобы ПС мог стрелять по мишеням? Враждебными я их уже делала, не помогает.

в ХБ прописать AttackObject() или DeterminateCombatRound
Paladin262
Вот мой вопрос: захотел вставить свою музыку в модуль... чтал "BioWare Aurora Neverwinter Nights Toolset".... сделал всё как там написанно... музыка появилась, но не играет..... в чём может быть проблемма???
И ещё я чёт у NPC немогу внешность изменить....захожу в свойства а там всё недоступно... что нетак?
Lex
Цитата(Paladin262 @ Jan 17 2008, 09:11) *
И ещё я чёт у NPC немогу внешность изменить....захожу в свойства а там всё недоступно... что нетак?

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

Цитата(Paladin262 @ Jan 17 2008, 09:11) *
делал всё как там написанно... музыка появилась, но не играет..... в чём может быть проблемма???

появилась где? в списке музыки в свойствах локации в тулсете? кстати музыка должна быть в bmu фомате (конвекторы mp3-bmu в нете поищи)
Paladin262
Цитата(Lex @ Jan 17 2008, 11:36) *
появилась где? в списке музыки в свойствах локации в тулсете? кстати музыка должна быть в bmu фомате (конвекторы mp3-bmu в нете поищи)

Да, появилась там. Я в bmu переделал. 2da фаил поменял, hak сделал, всё 10 раз проверил и вроде всё правельно... но не играет она ни тулсете, ни в самой игре.

Добавлено через 1 час 5031 секунду

Цитата(Lex @ Jan 17 2008, 11:36) *
менять внешность по частям (руки, ноги, головы) можно только у базовых типов: челове, гном, полуорк и тд. У моделей типа Нэшер, Арибет и тд ничего менять уже нельзя, они цельные.

Ну.... Я создал нового чела. И всёравно менять нельзя.
Lex
Цитата(Paladin262 @ Jan 17 2008, 13:54) *
но не играет она ни тулсете, ни в самой игре.

боюсь спросить, а звук вообще есть? в игре музыка случайно не отключена?
Paladin262
Цитата(Lex @ Jan 17 2008, 19:51) *
боюсь спросить, а звук вообще есть? в игре музыка случайно не отключена?

С музыкой я уже разобрался, надо было просто качество уменьшить....... а вот внешность, у мной же созданых NPC, поменять немогу немогу....
Deirdre
Цитата(Paladin262 @ Jan 17 2008, 18:37) *
а вот внешность, у мной же созданых NPC, поменять немогу немогу....

То же самое, кстати.
И очень хочется узнать все же, как заставить врагов появиться после определенного события? ph34r.gif
Paladin262
Цитата(Deirdre @ Jan 18 2008, 18:05) *
И очень хочется узнать все же, как заставить врагов появиться после определенного события? ph34r.gif

Сам не знаю ещё, я тока начиная осваиватся.... скорее всего спомощю скриптов.
Lex
Цитата(Paladin262 @ Jan 17 2008, 18:37) *
а вот внешность, у мной же созданых NPC, поменять немогу немогу....

а что ты для этого делаешь? распиши по шагам.

Цитата(Deirdre @ Jan 18 2008, 16:05) *
как заставить врагов появиться после определенного события?

именно появиться? В известном месте, или оно определяться должно динамически? Если место заранее известно, можно на те места поставить waypoints с особыми тэгами и написать скрипт, который бы создавал туда врагов.
Neverwinter Script Source

void main( )
{
CreateObject( OBJECT_TYPE_CREATURE, "рез реф врага", GetLocation( GetObjectByTag( "SP_ENEMY_1" ) ) );
}

этот скрипт создаст 1 врага из палитры с указанным рез-рефом в точке с тэгом SP_ENEMY_1. Попробуй разобраться для начала с созданием 1 НПС.
Deirdre
Цитата(Lex @ Jan 18 2008, 20:56) *
этот скрипт создаст 1 врага из палитры с указанным рез-рефом в точке с тэгом SP_ENEMY_1. Попробуй разобраться для начала с созданием 1 НПС.

О, спасибо! Я обязательно попробую.
Но у меня горе - полетел модуль, после моего химичения с хакпаком "bed" и триггерами вообще перестал загружаться в игру, так что у меня мировая скорбь... sad.gif Пошла заливать...

Добавлено через 3 часа 13 минуты 26 секунд

Путем сложных и мрачных манипуляций с импортом\экспортом положение поправлено. Но возник вопрос:
Диалог с хенчменом типа: Держись от меня на среднем расстоянии, не открывай двери, когда я пытаюсь их открыть и пр. - где его выцарапать? Неужели писать самой?
ПыСы: Ребята, я надеюсь, я вас не замучила вопросами)
Paladin262
Как мне зделать так, чтобы при нажатии на открытый люк перс переходил в определённую облость, и в место в той же области?
Melisse
Paladin262, поставь точку с тагом, например, WP001 где тебе нужно, а на люк в OnUsed повесь скрипт:

Neverwinter Script Source

void main( )
{
obect oPC = GetEnteringObject( );
object oWaypoint = GetNearestObjectByTag( "WP001" );

if( !GetIsObjectValid( oWaypoint ) )
  {oWaypoint  = GetObjectByTag( "WP001" );}


DelayCommand( 1.0, AssignCommand( oPC , JumpToObject( oWaypoint ) );
}
Paladin262
Цитата(Melisse @ Jan 21 2008, 01:05) *

Понятно... почти. точку, это теггер штли? если да, то какой??? И ещё что касается лестниц, для них такойже скрипт?
Melisse
В русской версии называется "точки маршрута", в англ. не знаю ^_^, наверное Point или Waypoint.

>И ещё что касается лестниц, для них такойже скрипт?
Для лестниц,которые плэйсами да. Только тебе придется создать отдельный скрипт, с новым тагом. Хотя можешь использовать вот такую хитрость:

Ставь точку с тагом WP_Таг Плэйса. Если сделать так, то не надо будет каждый раз создавать новый скрипт для каждого "плэса с переходом".


Neverwinter Script Source
void main( )
{
obect oPC = GetEnteringObject( );
object oWaypoint = GetNearestObjectByTag( "WP_"+GetTag( OBJECT_SELF ) );

if( !GetIsObjectValid( oWaypoint ) )
  {oWaypoint  = GetObjectByTag(  "WP_"+GetTag( OBJECT_SELF ) );}


DelayCommand( 1.0, AssignCommand( oPC , JumpToObject( oWaypoint ) );
}


Deirdre
Цитата(Lex @ Jan 18 2008, 20:56) *
именно появиться? В известном месте, или оно определяться должно динамически? Если место заранее известно, можно на те места поставить waypoints с особыми тэгами и написать скрипт, который бы создавал туда врагов.

Враги должны появляться после определенного события. Т.е. РС нашел записку, прочитал ее - и они появились. Не нашел - их нет.
gennady
Цитата
Враги должны появляться после определенного события. Т.е. РС нашел записку, прочитал ее - и они появились. Не нашел - их нет.

Я когда-то написал универсальный скрипт респауна монстров с проверкой локалки на герое. Рекомендую, если конечно разберете, что там к чему… biggrin.gif
На этой странице, самый последний скрипт: http://remmgen.narod.ru/tvstrechi.html
Цитата(Paladin262 @ Jan 21 2008, 19:05) *
Понятно... почти. точку, это теггер штли? если да, то какой??? И ещё что касается лестниц, для них такойже скрипт?

P.S. Эти скрипты уже давно написаны и 100 раз выложены:
P.S. Эти скрипты уже давно написаны и 100 раз выложены:
Скрипт Айва: http://www.city-of-masters.ru/forums/index...ost&p=53411
Мой: http://remmgen.narod.ru/tplace.html
azathoth
Цитата(Deirdre @ Jan 26 2008, 02:02) *
РС нашел записку

это событие модуля OnAcquireItem, в нём нужно проверить тег предмета, и наспаунить CreateObject-ом монстров как это Lex показал, если игра с дополнениями (скорее всего), то можно просто использовать скрипт с названием совпадающим с тегом предмета. Естественно, если монстры появляться должны только один раз, то нужно установить локальную переменную и проверять её чтобы не создавать монстров ещё раз, ведь ушлый игрок-маньяк может выкинуть предмет, а потом его снова подобрать.

События позволяющее узнать читал игрок записку или нет -- нету. Есть функция позволяющая узнать смотрит ли игрок на определённый объект (но тут нужно ещё протестировать работает ли с итемами в инвентории), но тогда её надо проверять каждые полсекунды -- в общем, игра не стоит свеч. Лучше при поднятии записки обновить журнал, а там наваять: "Прочитав тайные планы конспиративной ячейки ниндзя-сатанистов вы узнали, что..." в общем, чтобы игрок обратил на это событие внимание.
Lordeath
Несколько глупых вопросов:
1.Ковыряюсь в одном модуле, за убийство монстров в нем дают очень много опыта и денег- не могу найти где уменьшить количество опыта и денег за убийство.
2.подскажите пожалуйста кк будет выглядеть стандартный скрипт на отдых с той разницей лишь что отдыхать можно раз в 10 минут (реальных).
gennady
1. Опыт удаляем на вкладке Модульные свойства в
панели “Улучшенный”, тут можно задать опыт за уничтожение монстров, и выбрать длительность игрового часа, обычно час равен двум минутам реального времени. Учтите, что чем больше монстр имеет ХР, тем больше получит герой опыта…
2. Нужно повесить на героя локалку о отдыхе. а через определенное время ее снять. Вот для примера простой скриптик отдыха. Отдыхаем 1 час игрового времени и 10 минут реального не сможем воспользоваться отдыхом:

Neverwinter Script
//::///////////////////////////////////////////////
//:: Слот: OnPlayerRest - Модульные свойства
//::///////////////////////////////////////////////

////////  СНЯТЬ ЭФФЕКТЫ И ВЫЛЕЧИТЬ ГЕРОЯ  /////////
void FakeRestore(object oTarget)
{
int nHeal = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget);
effect eHeal = EffectHeal(nHeal);
effect eBad = GetFirstEffect(oTarget);
  while(GetIsEffectValid(eBad))
    {
    RemoveEffect(oTarget, eBad);
    eBad = GetNextEffect(oTarget);
    }
  ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
}
/////////////////////////////////////////////////////////////////////////////////////
void main()
{
object oPC = GetFirstPC();
int iTH = GetTimeHour();
int iRest = GetLocalInt(oPC, "REST");

///////////////////////////    START      /////////////////////////////////////
if (GetLastRestEventType() == REST_EVENTTYPE_REST_STARTED)
{
  if(iRest==1) // Блокировка отдыха
{
  SendMessageToPC(oPC, "Вы не можете так часто отдыхать!");
  AssignCommand(oPC,ClearAllActions(TRUE));
  return;
}
  SetCommandable(FALSE, oPC); // заблокировать очередь
  DelayCommand(4.0, FadeToBlack(oPC, FADE_SPEED_SLOW)); // Занавес из черного экрана
  DelayCommand(18.0, FadeFromBlack(oPC, FADE_SPEED_SLOW)); // Уберем занавес
}
//////////////////////////////    FINISH    ///////////////////////////////////
if (GetLastRestEventType() == REST_EVENTTYPE_REST_FINISHED)
  {
  iTH = iTH+1;
  SetTime(iTH,0,0,0);
  SendMessageToPC(oPC, "Вы отдыхали 1 час.");
  SetCommandable(TRUE, oPC); // разблокировать очередь
  FakeRestore(oPC); // Если нужно удалить вредные эффекты
  // ВРЕМЯ БЛОКИРОВКИ
  SetLocalInt(GetFirstPC(),"REST",1);
  DelayCommand(600.0, SetLocalInt(GetFirstPC(),"REST",0));
  }
}

Lordeath
Спасибо большое.

С отдыхом разобрался, а вот на опыт видать стоит какой то скрипт (поставил шкалу ХР на "3" и теперь очки опыта выдаются 2 раза). Где он может быть? -)
На картинке лог боя.
Melisse
Посмотри скрипт nw_c2_default7, может там?....а если тебе нужно убрать опыт "по умолчанию" то тебе писали уже -> см. пункт 1 у gennady
v1t3q
Вопросец тут назрел =)
Вообщем,есть нпс и у него несколько веток разговора.Как сделать что бы при начале диалога ветка выбиралась случайно?
Lordeath
Цитата(Melisse)
Посмотри скрипт nw_c2_default7, может там?....а если тебе нужно убрать опыт "по умолчанию" то тебе писали уже -> см. пункт 1 у gennady

К сожалению какие либо изменение скрипта nw_c2_default7 (изменял все что можно и полностью тер) ни к чему не привели. Мне нужно убрать как раз таки опыт, который сделал авторп модуля, а по умолчанию как ставить я понял.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.