Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипты
Город Мастеров > РЕДАКТОРЫ > 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
2GoDoom
Если так - то это супер! Облегается много фишек (и тоже самое создание стац. квестов) smile.gif
DBColl
Neverwinter Script Source
string sCheck = "1234567890";
int iCheck1 = GetStringLength(sCheck);

Попробуй так wink3.gif. Найди ошибку в своем коде wink3.gif.
2GoDoom
хы... прокатило smile.gif
а в слудеющей строчке? (та жа ошибка)

int iCheck2 = GetStringLenght(GetTag(GetItemActivatedTarget()));
Вестель
Цитата
Кусок вырван из всего скрипта... Но ругается именно на вторую строку в приведенном примере. Говорит: PARSING VARIABLE LIST.
Переводить не надо - лучше скажите что это означает и как лечится

Просто исправляется GetStringLength и все... yes3.gif
2GoDoom
хыхы
дык правильно написано (если рядом поставить - один в один) smile.gif
Добавлено в [mergetime]1089729395[/mergetime]
string sCheck2 = GetStringRight(GetTag(GetItemActivatedTarget(), iCheck2-iCheck1-1);

Терь тута
UNKNOWN STATE IN COMPILER sad.gif
DBColl
Цитата
дык правильно написано (если рядом поставить - один в один)

Не правильно.
GetStringLenght - ты писал
GetStringLength - правильно

Цитата
string sCheck2 = GetStringRight(GetTag(GetItemActivatedTarget(), iCheck2-iCheck1-1);

Следи за скобками.
Вот правильно.
Neverwinter Script Source
string sCheck2 = GetStringRight(GetTag(GetItemActivatedTarget()), iCheck2-iCheck1-1);

Элементарные ошибки, а ты и про них спрашиваешь...
2GoDoom
smile.gif
Ну привык я к вашему темному фону - на белом ничег оне вижу smile.gif

ЗЫ
Зато повод получить +ННое кол-во постов smile.gif
Lex
Цитата(DBColl @ Jul 12 2004, 09:37)
Лекс, ты "Начало Пути" видел ваще?! biggrin.gif Скажи чем тя не устроило, как это дело выпадает у меня? С глобальной карты...

кидай в меня скрипты.
Видел, но скриптов то не было. smile.gif
DBColl
Лекс, ты мне скажи, тебе нужна глобальная карта в модуле? Можно подключить... Тогда проще и случайные боевки прилепить будет...
Lex
Нет, мне карта не нужна...если только Айс не сделает большую карту Тсурла и окрестностей, чтобы можно было по ней ходить...
Скрипты стычек мне нужны (точнее просто локи пришли, я гляну). Надеюсь там ты не руками писал спавн-скрипт! Потому как так я тоже могу. Я хочу через энкаунтер.
Dark Lord
А мой скромный постинг на предыдущей странице так и остался незамеченным... shout.gif shout.gif shout.gif ДБ будь человеком объясни мне неразумному где ж лежат чертовы фиты вернее их скрипты а лучше - ознакомся с моим постингом выше. Надеюсь на понимание.
DBColl
Цитата(Lex @ Jul 15 2004, 18:39)
Нет, мне карта не нужна...если только Айс не сделает большую карту Тсурла и окрестностей, чтобы можно было по ней ходить...

Думаю вряд ли... Ибо рисовать ее все равно придется мне... biggrin.gif
Цитата(Lex @ Jul 15 2004, 18:39)
Скрипты стычек мне нужны (точнее просто локи пришли, я гляну). Надеюсь там ты не руками писал спавн-скрипт! Потому как так я тоже могу. Я хочу через энкаунтер.

Пояснил в асе.
Цитата(Dark Lord @ Jul 15 2004, 18:59)
ДБ будь человеком объясни мне неразумному где ж лежат чертовы фиты вернее их скрипты а лучше - ознакомся с моим постингом выше. Надеюсь на понимание.

Признаюсь, не знаю... Иначе бы ответил сразу. Мне кажется это все-таки ближе Айсу... Хотя я посмотрю, мож и откопаю чего...
Dark Lord
Цитата(DBColl @ Jul 15 2004, 19:45)
Признаюсь, не знаю...
crazy.gif crazy.gif crazy.gif crazy.gif crazy.gif

Офигеть. Я в загоне. Убит наповал столь же верно как очередью из калаша :mamba:

Ну хоть где скрипты фитов лежат ты знаешь ? Или айс ? А--а-айс ? :this:
DBColl
Скорее всего это все же движковое... Скриптов на фиты нету... Обрати внимание сам и сделай вывод:
Анимация при некоторых фитах есть такая, которой нет даже среди анимационных констант. Среди скриптов я тоже не нашел ничего, что было бы похоже на "обрисовку" фитов... sad.gif

Так что надо ждать Айса или орать в Гильдии...
Dark Lord
ФЕрштайн. Я пришел к таким же виводам после ОСНОВАТЕЛЬНОГО потрошения в Биф-анпакере. Тогда хоть расскажи как свой фит сделать такой как я просил...
DBColl
unknw.gif
АЙС! shout.gif
VOLAND
bad.gif Что нужно делать,чтобы наёмник присоединялся к герою?
Auren
См. www.nwnlexicon.com

Lyceum->Tutorial->Advanced Scripting-> Celowin part X Henchmen
Dark Lord
Гы... biggrin.gif

// Add oHenchman as a henchman to oMaster
// If oHenchman is either a DM or a player character, this will have no effect.
void AddHenchman(object oMaster, object oHenchman=OBJECT_SELF)

Так понятно ? Только это из стандартной помощи Тулсета (там где подсказки в редакторе скрипта), мог бы и поиском по слову henchman или открыв любой модуль кампаний НвН.
DBColl
Цитата(VOLAND @ Jul 16 2004, 14:27)
bad.gif Что нужно делать,чтобы наёмник присоединялся к герою?

Хех, только зашел и уже наблевал. :nono: lol.gif
Dark Lord
Цитата(DBColl @ Jul 16 2004, 14:50)
Хех, только зашел и уже наблевал
lol.gif lol.gif lol.gif crazy.gif
Tarre Talliorne
Итак, очередные мои вопросы:
1. Есть скрипт:
Neverwinter Script Source
void main()
{
object oObject = GetFirstObjectInArea(OBJECT_SELF);
while (GetIsObjectValid(oObject)&&
       GetObjectType(oObject)==1)
       {
           if (GetTag(oObject)=="bw_prayer")
           {
           AssignCommand(oObject, ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 9999.9));
           DelayCommand(1.0, SetCommandable(FALSE, oObject));
           }
       oObject = GetNextObjectInArea(OBJECT_SELF);
       }
}
Он должен заствлять всех созданий в локе (он_энтр которй и стоит этот скрипт) с тэгом "bw_prayer" проигрывать анимацию медитации и при этом не реагировать на действия ПС. Ну, молитвенный транс. Так вот. Анимацию они проигрывают, но все же остаются комэндэйбл, собаки! В чем проблема?

2. Каково расстояние, на котором НПС воспринимает других НПС? Т.е. видит? а слышит?
Добавлено в [mergetime]1089999466[/mergetime]
И не пихайте мне под нос он_перцепшн - я имею ввиду риал. Просто эти футы мне поперек жабр встают уже. Задолбался реакции для АИ писать. Хотя вродь ничего выходит.
Добавлено в [mergetime]1089999564[/mergetime]
VOLAND - ты поклонник Булгакова или действительно ТОТ САМЫЙ?!
Ragnor
Есть скрипт:

void main()
{
object OS = OBJECT_SELF;
object oPC = GetLastPerceived();
if (!GetIsPC(oPC)) return;
string s1 = "69687";
string s2 = "68787";
string s3 = "234234324324";
string s4 = "24323324";
string sResult;
while (GetDistanceBetween(OS, oPC)<50.0)
{
switch (Random(4))
{
case 0: sResult = s1; break;
case 1: sResult = s2; break;
case 2: sResult = s3; break;
case 3: sResult = s4; break;
}
float fDelay = IntToFloat(Random(5));
DelayCommand(fDelay, SpeakString(sResult));
DelayCommand(fDelay, PlayAnimation(ANIMATION_FIREFORGET_TAUNT));
}
}

но как сделать чтоб строки появлялись с интервалом 15 секунд
Аваддон
пффф... У меня с этим скриптом вообще НВН виситsmile.gif))Попробуй вывод строчек поставить в очередь действий с помощью ActionDoCommand а потом ставь ActionWait(15.0).
Или вообще я не бонял зачем fDelay=IntToFloat ? поставь ее 15 сек.
Tarre Talliorne
Т.е. хочешь, чтоб строчки выводились с промежутком в 15 сек, а не по ходу обработки цикла? Тогда делай зарубки на времени: надыбай в базе скриптов на рельсах функцию времени в секундах. Затем заводишь локалку, при начале скрипта присваиваешь ей значение текущего времени в секундах. А к цикул добавляешь условие: если текущее время минус та локалка больше 15. Вот и все.
Добавлено в [mergetime]1090304527[/mergetime]
И вообще зачем тебе это? Разные анимации НПС можно сделать с помощью спавн-флагов, а твоя насмешка ИМХО вообще не нужна...
DBColl
Тарре, попробуй:
Neverwinter Script Source
void main()
{
    object oObject = GetFirstObjectInArea(OBJECT_SELF);
    while (GetIsObjectValid(oObject) && GetObjectType(oObject)==1)      
    {
        if (GetTag(oObject)=="bw_prayer")          
         {
             AssignCommand(oObject, ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 9999.9));                    AssignCommand(DelayCommand(1.0, SetCommandable(FALSE, oObject)));
        }      
         oObject = GetNextObjectInArea(OBJECT_SELF);      
    }
}
Ice Blade
Dark Lord & Co Ну вы даёте млин. biggrin.gif подобный фит "нормально" сделать в принцепе нельзя:
- Сама система ДнД реализованная в НВН, не позволяет так вести огонь очередями, разве что если стрельба является своего рода mass effect-ом.
- сколько раз можно объяснять, что есть два типа фитов: активные - т.е те что действуют как заклинания (песня барда там, или дыхание дракона) и пасивные - т.е те которые работают сами по себе например та же специализация в оружии или приведённый тобой быстрый выстрел, разница в том что первые имеют скрипт (он же спелл), вторые используют всякие genеric и вызовы движка,- т.е редактированию не подлежат sad.gif, единственное что позволенно это использовать самопальные константы фитов в модульных скриптах.

Что можно сделать? в теории:
В ХотУ у оружия появилось свойство onHitCastSpell(конечно по умолчанию, никаких арбалетов или луков там не предусмотренно, - но это поправимо smile.gif ) Суть, идеи - данное свойство выполнит скрипт помимо всего дав нашим скриптерам location цели, с помощью которого они без труда смогут расчитать массовые повреждения в округе. Но возникает проблемма с визуальным оформлением, в частности как заставить заставить все эти пули попасть в цель?.
Выхода я "пока" 2-а:
1. Делать это дело невидимым smile.gif, помнишь как в старых игрушках огонь из ствола и искры из цели, но ничего между ними.
2. Извращения с системами частиц - что в принцепе может дать тот самый "ожидаемый" результат, но потребует мнооооого гемороя.
Dark Lord
В общем ясно сделать полноценно очередь даже в форме быстрого выстрела с увеличенным числом пуль нельзя. Ладно, если понадобится сделаю пулей из нескольких частей (роем пуль) и анимацией самого випона. Кстати, Айс, растолкуй как сделать вот такое :

есть в инвентарике объект, штык, вернее багинет. Есть винтарик. Задача : с помощью УникПауэра на штыке нацепить его на винтарик. Ну все ясно да : проверитьт есть ли в инвентаре винтарик с нужным тегом, удалить штык удаолить винтарик и дать копье сделанное в форме винтарика. У копья УникПауэр который возвращает винтарик и штык. НО ! На одну и ту же винтовку можно надеть разные штыки ! Более того штык и винтарик могут быть КВЕСТОВЫМИ ! Т.е. надо как-то "запоминать" образы винтарика и штыка а затем их восстанавливать в инвентаре причем уже из ДРУГОВО скрипа. ВОТ как ? Заодно расскажи как повесить ЮникПауэр ибо стыдно но до сих пор не допер sad.gif скрип написать на уник пауэр так-то смог а вот проверить повесив немогу...
Ragnor
У меня такой вопрос: Как сделать так, чтобы стояло 5 камней и от них друг к другу отходил луч, или чтобы он был направлен на NPC.
Tarre Talliorne
Подробней, пожалуйста. Вообще, эффект луча - это VFX_BEAM_*** , напр. VFX_BEAM_COLD.
DBColl
EffectBeam(...);
Ragnor
А как сделать чтобы он от камней был направлен на НПС.
Tarre Talliorne
Neverwinter Script Source
effect EffectBeam(
    int nBeamVisualEffect,
    object oEffector,
    int nBodyPart,
    int bMissEffect = FALSE
);


nBeamVisualEffect
VFX_BEAM_* константа, озбозначающая эффект, напр. VFX_BEAM_COLD.

oEffector
эффектор (ПС, НПС, камни)

nBodyPart
часть тела, в которую эффект направлен

bMissEffect
оставь как есть
Ragnor
Большое спасибо yes3.gif
Tarre Talliorne
Всегда пожалуйста. Приятно иметь дело с вежливым человеком. Все ведь за "спасибо" работаем...
Ragnor
Наверное я прогоняю, но мне пишет "неправильная переменная", если не сложно напишите пример.
Tarre Talliorne
Могу ошибаться (пишу в отрыве от тулсета), но вроде так, где oPC - твой ПС, oStone - твой камень.
Neverwinter Script Source
ApplyEffectToObject(1, EffectBeam(VFX_BEAM_COLD, oStone, 1), oPC);
Ragnor
bad.gif Неполучается у меня, или пишет нет точки с запятой, или нет левой скобки,(хотя это всё на месте),или пишет потеря анализатора переменной, или просто ничего в игре не происходит, напишите скрипт уже с переменными, и куда его ставить.
DBColl
Попробуй на OnHeartbeat камня...
Neverwinter Script Source
object oPC = GetFirstPC();
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectBeam(VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_CHEST), oPC);
_kaa_
Цитата(DBColl @ Jul 21 2004, 09:42)
Попробуй на OnHeartbeat камня...
Neverwinter Script Source
object oPC = GetFirstPC();
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectBeam(VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_CHEST), oPC);

Если я правильно помню - камень обязан быть НЕ static, иначе ничего не выйдет. Хотя это было давно, до 1.3х и может что-то изменилось smile.gif
Ragnor
Спасибо, скрипт работает отлично, но мне нужно чтобы он на НПС был направлен, а не на ПК
Аваддон
Тогда
Neverwinter Script Source
object oNPC = GetNearestObjectByTag("TAG_NPC",OBJECT_SELF);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectBeam(VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_CHEST), oNPC);


TAG_NPC это тэг твоего НеПиСя. Придумай ему что нить оригинальное
M@ster_o_B
Помогите! Срочно! Плиииззз!
Написал совсем детский скрипт на OnUsed стула
Neverwinter Script Source
void main()
{
object oPC = GetPCSpeaker();
object oChair = OBJECT_SELF;
AssignCommand(oPC, ActionSit(oChair));
}


Вроде простой, но он не работает! Скрипт должен сажать перса на стул при его использовании. Перс к стулу подходит но на него не садится!
Auren
object oPC = GetLastUsedBy();

А фапще лучше фот:
Neverwinter Script Source
void main()
{
   object oPC = GetLastUsedBy();
   object oChair = OBJECT_SELF;
   if (GetIsPC(oPC))
   {
   if (GetIsObjectValid(oChair) && !GetIsObjectValid (GetSittingCreature(oChair)))
       {
       AssignCommand(oPC, ActionSit(oChair));
       }
   }
}
M@ster_o_B
Auren, большое сенькс! Заменил GetPCSpeaker на GetLastUsedBy и все заработало! Но я так и не понял в чем разница!
Tarre Talliorne
GetPCSpeaker(); - это ПС, участвующий в диалоге.
А GetLastUsedBy(); - это последний использовавший стул.
M@ster_o_B
Цитата
GetPCSpeaker(); - это ПС, участвующий в диалоге.

То, что только в диалоге я не знал. Спасибо, Тарр, разъяснил!
Tarre Talliorne
Для всех:
Обращайте внимание в первую очередь на ее(функции) название и описание (чтобы увидеть его, клините 2 раз по функции, описание появится в субокне редактора). Назначение можно понять уже на этой стадии.
пример: GetPCSpeaker(. . . );
get - вернуть
PC - ПСплейер
Speaker - говорящий.
Итого: вернуть ПС, участвующего в диалоге. Все просто.

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

Цитата
То, что только в диалоге я не знал. Спасибо, Тарр, разъяснил!

Всегда рад помочь.
Dark Lord
ВОПРОС ! Какое событие происходит (если происходит) при ЗАКАНЧИВАНИИ стрел в обойме заряженной в слот и как его отследить ? Очень надою. shout.gif
Добавлено в [mergetime]1090602099[/mergetime]
Ну или хотя бы при заряжании в СЛОТ очередной обоймы при заканчивании старой.
Tarre Talliorne
Хех. Авто перезарядку делаешб? :-)
Как я разумею, каждый раз когда ты берешь стрелу из пучка, срабатывает событие на избятие этой вещи из инвентаря. Тебе надо отследить последнюю стрелу... Хм... Тогда делай так: на это событие ставь фильтр "Если в слоте стрел больше ничего нет", то ДЕЙСТВИЕ. В твоем случае - взять в этот слот еще одну пачку стрел.
Не проверял, но имхо должно работать.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.