Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > 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
Aiwan
Vitalist загляни в тему скриптов для новичков. Самый большой скрипт на OnSpawn объекта. ПОЧИТАЙ КОММЕНТАРИИ мои. И настрой как надо.
Dik Morris
Vitalist ставишь на onSpawn, НПС.
Neverwinter Script Source
void main()
{
ActionPlayAnimation(ANIMATION_LOOPING_CONJURE1,1.0,9999.0f);
}

обрати внимание на то что константу ANIMATION_LOOPING_CONJURE1, ты можешь заменить на свою + регулировать время и скорость проигрывания анимации.
PS: прочитай статейку Лекса, там все ПОДРОБНЕЙШИМ способом расписано. В свое время она мне очень помогла.
Вот ссылка: http://wrg.ru/old/stat_anim_npc1.htm
Айван сорри, я не заметил пост.
acdcee
Можно ли сделать так что бы после смерти моба, если игрок на него наводиться не показывало его имя(моба)?

У меня есть некое понятие переменной, если в смерти указать переменную которая при смерти если узать труп будет обозначать его имя, так можно сделать.Это все к событию смерти игрока, как Феникс писал выше о том что после смерти остаеться НПС типа как труп, и когда вот его юзаешь чтобы достать оттуда труп и шмотки, писалось бы имя умершего, вот вариант, если так мона сделать?:

Neverwinter Script Source
string sName = GetName(oPC);
string sID = GetPublikCDKey(oPC);

SetLocalString(oLootNPC(это наш НПС),"oDiedName",sName);

Это все на события умершего игрока, а что написать и куда вставить что при юзаниии трупа появлялось имя?
dumbo
QUOTE (acdcee @ Oct 14 2005, 20:29)
У меня есть некое понятие переменной, если в смерти указать переменную которая при смерти если узать труп будет обозначать его имя, так можно сделать.Это все к событию смерти игрока, как Феникс писал выше о том что после смерти остаеться НПС типа как труп, и когда вот его юзаешь чтобы достать оттуда труп и шмотки, писалось бы имя умершего, вот вариант, если так мона сделать?

swoon.gif этот абзац я, к сожалению, не понял. shok.gif

QUOTE (acdcee @ Oct 14 2005, 20:29)
Можно ли сделать так что бы после смерти моба, если игрок на него наводиться не показывало его имя(моба)?

нет. движковое.

QUOTE (acdcee @ Oct 14 2005, 20:29)

...
SetLocalString(oLootNPC(это наш НПС),"oDiedName",sName);
Это все на события умершего игрока, а что написать и куда вставить что при юзаниии трупа появлялось имя?

только причем тут НПС?!

на OnUsed плэйса трупа поставить что-то вроде того:
Neverwinter Script Source
void main()
{
  SendMessageToPC(GetLastUsedBy(), "это хладный трупик "+
                    GetLocalString(OBJECT_SELF, "oDiedName"));
}

acdcee
QUOTE
УРРРЯЯЯ, порылся в тулсе и лексеконе - оказывается и правда можно сделать, чтобы у НПС был лут после смерти, нашел еще кое-что, собственно теперь все решаемо. Только пока без клона, а с заготовленными НПС!

AliceDiren, ты ба сразу сказала, что есть такая-то функция, а то я ХОТУ два дня только как поставил!
Добавлено в 00:43
Вот это надо ставить на OnSpawn лут-НПС

Neverwinter Script Source
SetIsDestroyable(TRUE, FALSE, TRUE);
SetLootable(OBJECT_SELF, TRUE);


А вот это на OnPlayerDeath

Neverwinter Script Source
void main()
{
object oPC = GetLastPlayerDied();
location lLocPC = GetLocation(oPC);

object oLootNPC = CreateObject(OBJECT_TYPE_CREATURE, "РесРеф лут-НПС", lLocPC);

PopUpDeathGUIPanel(oPC,TRUE);
DelayCommand(0.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oLootNPC));

int iGold = GetGold(oPC);
int i = 0;

while(i<14)
{
    object oItemInSlot = GetItemInSlot(i, oPC);

    if(oItemInSlot != OBJECT_INVALID)
    {
        AssignCommand(oLootNPC, ActionTakeItem(oItemInSlot, oPC));
    }
    i ++;
}

object oItemInInventory = GetFirstItemInInventory(oPC);

while(GetIsObjectValid(oItemInInventory))
{
    CopyItem(oItemInInventory, oLootNPC);
    DestroyObject(oItemInInventory);
    oItemInInventory = GetNextItemInInventory(oPC);
}

AssignCommand(oLootNPC, TakeGoldFromCreature(iGold, oPC));
}



Это вот к этому
QUOTE
QUOTE (acdcee @ Oct 14 2005, 20:29)
У меня есть некое понятие переменной, если в смерти указать переменную которая при смерти если узать труп будет обозначать его имя, так можно сделать.Это все к событию смерти игрока, как Феникс писал выше о том что после смерти остаеться НПС типа как труп, и когда вот его юзаешь чтобы достать оттуда труп и шмотки, писалось бы имя умершего, вот вариант, если так мона сделать?

этот абзац я, к сожалению, не понял.


dumboесли ты не знал то мона еще и с копией игрока после смерти такое делать, только пока че то у меня много косяков.

Так вот если вот такое вот ставить
Neverwinter Script Source
SpeakString("Труп"+GetLocalString(OBJECT_SELF,"oDiedName"),TALKVOLUME_TALK;


То в костомный НПС куда это ставить, поставил на onSpawn не работает, все перепробовал, а толку не кого мож кто знает, куда ставить?
NedWarN
Немогу, никак сделать, абзац какойто. dntknw.gif
нужен скрипт когда уничтожаеш дверь, резко начинался разгавор. с рядом стоящим НПК.
немогу просто задать ПК, GetLastKiller, GetLastDamager, всё перепробовал неполучается.
Lex
не забывай, что сразу после боя (уничтожение плейса это тоже бой) начать разговор низя. Нужно ждать 4-5 сек.
Но непосредственно на дверь эту задержку вешать низя, ибо двери уже нету. smile.gif Так что Через Assign вешаем на НПС с Delay начать разговор с GetLastKiller через 5 секунд. Должно сработать.
-fenix-
Лекс, а у меня все пашет на смерти двери, хотя в Лексиконе и правда говорится, что работать не должно! Вот это работает dntknw.gif
Neverwinter Script Source
void main()
{
object oPC = GetLastKiller();
object oNPC = GetObjectByTag("ТАГ НПС");

if(GetIsPC(oPC))
{
    DelayCommand(8.0, AssignCommand(oNPC, ActionStartConversation(oPC)));
}
}


Пардон
NedWarN
-fenix- пасиба но я написал в точности такойже скрипт и нефига, тётька как стояла так и стоит.
но только я писал сразу Assign, а у тебя задержка на 8 секунд, и поэтому как сказал лекс работать будет.
Lex Пасиба пойду тестить.
yudgi
Приветики, давно я тут не появлялась, дел полно. Но вот вопросик один появился.У меня в тулсете, когда используешь несколько ХакПаков начинаютя глюки. Например выбираешь предмет стул,а тип внешности у него лестница. Тип внешности другой поставить не проблема, но так во всех предметах, это раздражает очень и работу тормозит. Это как-нибудь лечится или нет?
Aiwan
yudgi , ты меняешь 2Да файлы, в них прописаны твои модели. Изменил порядок, изменились модельки палитры. К примеру, в одном хаке модель лестницы на месте модели стула. Ясно? Конфликт в placeables.2da.
yudgi
Это возвращает к одному моему преддидущему вопросу чем открываются эти 2Да файлы, чем и как редактируются.
Добавлено в [mergetime]1129446634[/mergetime]
Сорри за вопрос не по этой теме.
Dik Morris
yudgi
2Да таблицы открываются программой NWNExplorer, скачай ее (на сайте должны ссылки быть)
А редактируются вполне нормально, обычным блокнотом.
Вот пожалуйста, все что тебе нужно:
http://lextom.narod.ru/files.htm
Кстати, если у тебя установлен критикалл, то 2Да файлы лежат в попке Source в проинсталированной игре.


yudgi
Спасибо. Извините за глупые вопросы. Я всё же хочу получше разобраться в мире тулсета, поэтому и спрашиваю.
Vhall
QUOTE (yudgi @ Oct 16 2005, 11:09)
Это возвращает к одному моему преддидущему вопросу чем открываются эти 2Да файлы, чем и как редактируются.

В зависимости от случая. Чаще всего я юзаю Baldur's Legacy Toolkit, но иногда пригождается и блокнот (Bred весьма удобен)
QUOTE (Dik Morris @ Oct 16 2005, 11:10)
Кстати, если у тебя установлен критикалл, то 2Да файлы лежат в попке Source в проинсталированной игре.
Isendel

Можно ли, и, если можно, то как сделать систему боя а-ля котор1, т.е. чтобы хенчи, помершие в бою, после окончания оного, воскресали?
zmey
Давненько я не заглядывал, здрасьте! Ися три вопросика - два по теме, и один - нет.
Вопросик первый: КАК делается проверка на наличие в инвентаре перса нескольких предметов с одним тегом? (тех, которые по одному в стеке)

Вопросик второй: Копался я в модуле орд, и нашел такую (ВЫРЕЗАНО ЦЕНЗУРОЙ): <CUSTOM89004>Что это такое и как его использовать?

Вопросик третий: В магазине встретил диск Newervinter nights: Kingmaker. Что это такое и стоит ли тратить на ЭТО деньги? diablo.gif
Lex
QUOTE (zmey @ Oct 21 2005, 16:09)
Вопросик первый: КАК делается проверка на наличие в инвентаре перса нескольких предметов с одним тегом? (тех, которые по одному в стеке)

считать эти предеметы. Если их >= нужного то...
QUOTE (zmey @ Oct 21 2005, 16:09)
Вопросик второй: Копался я в модуле орд, и нашел такую (ВЫРЕЗАНО ЦЕНЗУРОЙ): <CUSTOM89004>Что это такое и как его использовать?

кастом токен. В скрипте юзаем функцию:
Neverwinter Script Source
// Set the value for a custom token.
void SetCustomToken(int nCustomTokenNumber, string sTokenValue)

тогда в диалоге под номером nCustomTokenNumber (те в твоем случае nCustomTokenNumber = 89004, и под токеном <CUSTOM89004>) будет текст sTokenValue. (тот, что вобьем туда).

QUOTE (zmey @ Oct 21 2005, 16:09)
Вопросик третий: В магазине встретил диск Newervinter nights: Kingmaker. Что это такое и стоит ли тратить на ЭТО деньги? diablo.gif

Премиум модуль от Биовар. Мнения разные. Сам не играл.
Dik Morris
Boт элементарный скриптик, но НПС не идет за игроком!!! Подходит, в диалоге но не идет.
undefined
Neverwinter Script Source
void main()
{
object PC =GetPCSpeaker();
object V = GetObjectByTag("V");
AssignCommand(V, ActionForceMoveToObject(PC,FALSE,1.0f));
}

ОК. Все нашел, скрипт работает на 5. Честно сказать, это я ступил блин!
Neverwinter Script Source
ActionForceMoveToObject(PC

Нужно указывать не ПС, а того кто следует. В моем случае V lol.gif
Aiwan
Глянь базу скриптов. Там есть такой рабочий.
Dik Morris
Извините за глупые вопросы, но время для меня сейчас очень критично (12 часов, осталось до подачи работы на конкурс (!) В другой ситуациии я бы додумался сам, но для этого понадобилось бы время.
Такая ситуация:
Игрок убивает несколько НПС после смерти каждого из них, ему записывается определенная переменная, но вот проблема... С игроком, находится другой НПС, дружественный игроку. Ведь, если он грохнет враждебных неписей, то переменная
Добавлено в [mergetime]1130054231[/mergetime]
запишется ему!
ВОПРОС: как сделать чтобы при убийстве определенного НПС (или нескольких), у игрока появ. строчка в диалоге? (при условии, того что пару врагов, уложит дружественный НПС)

Добавлено в [mergetime]1130054349[/mergetime]
Нэт тормозит страшно. Не было еще такого... wacko.gif
_kaa_
QUOTE (Dik Morris @ Oct 23 2005, 11:47)
Извините за глупые вопросы, но время для меня сейчас очень критично (12 часов, осталось до подачи работы на конкурс (!) В другой ситуациии я бы додумался сам, но для этого понадобилось бы время.
Такая ситуация:
Игрок убивает несколько НПС после смерти каждого из них, ему записывается определенная переменная, но вот проблема... С игроком, находится другой НПС, дружественный игроку. Ведь, если он грохнет враждебных неписей, то переменная  запишется ему!
ВОПРОС: как сделать чтобы при убийстве определенного НПС (или нескольких), у игрока появ. строчка в диалоге? (при условии, того что пару врагов, уложит дружественный НПС)

Нэт тормозит страшно. Не было еще такого...  wacko.gif

Дружественный - это хенчмен, помошник?
Поможет функция GetMaster(), она возращает "хозяина" указанного объекта. В особо тяжелых случаях (когда к примеру убивает самон твоего хенча) рекомендуют использовать вот так:
Neverwinter Script Source
void main()
{
//The actual killer
object oKiller=GetLastKiller();

//Loop through until we find one that doesn't have a master

while (GetIsObjectValid(GetMaster(oKiller)))
  {
  oKiller=GetMaster(oKiller);
  }

//we're now at the top of the hierarchy. Let's check if it
//is a PC
if (!GetIsPC(oKiller)) return;

//Give XP
GiveXPToCreature(oKiller, 500);
}


Это пример на событие onDeath моба
Dik Morris
_kaa_ нет не хенч, простой НПС. Как я понял к нему данный ответ не применишь yes.gif
Lex
тогда юзай
Neverwinter Script Source
// * Returns TRUE if oSource considers oTarget as a friend.
int GetIsFriend(object oTarget, object oSource=OBJECT_SELF)

будет что-то типа:
Neverwinter Script Source
void main()
{
//The actual killer
object oKiller = GetLastKiller();
object oPC    = GetFirstPC();
if (((GetIsPC(oKiller)) || (GetIsFriend(oPC,oKiller)))
SetLocalInt(oPC,"Q_KILLS",GetLocalInt(oPC,"Q_KILLS")+1);
}

это если ЛЮБОЙ дружественный игроку НПС завалит монстра или нпс с этим скриптом в слоте onDeath

Если нужен какой-то определенный, то проверяй у киллера не GetIsFriend а его ТЭГ.
Добавлено в 15:39
вообще в такой ситуации наверное даже СОВСЕМ не важно, кто убил. Так что просто счетчик увеличивай и все. Скрипт стоять ведь будет не у всех, а тока у нужных НПС, так что все будет нормально.
Добавлено в [mergetime]1130072087[/mergetime]
тема "Скрипты на конкурс" временно убрана. Верну потом.
Archangel
Люди, помогите, как сделать так, чтобы в модуль можно было бы играть только одним определенным персонажем. Т.е. игрок запускает модуль, появляется менюшка "создать собственного персонажа" или "выбрать из списка", а потом, если игрок создает своего перса, то его (перса) убивают сразу же в начале модуля, а если он выбирает одного уже заготовленного перса из списка (не любого из списка, а только того на кого я укажу), то чувствует себя хорошо и начинает проходить модуль... this.gif
Пытался сам такое сделать, но какая-то муть получается unsure.gif
Isendel
Сделай ему условием определенное имя - как Айван, респект ему, показал.
Archangel
QUOTE
Сделай ему условием определенное имя - как Айван, респект ему, показал.

Хех, знал бы я еще как это сделать и цены б мне не было... biggrin.gif
Isendel
Так это ж все выше есть.
NedWarN
Neverwinter Script Source
Хех, знал бы я еще как это сделать и цены б мне не было...

Neverwinter Script Source
if(GetPCPlayerName(oPC) == "Archangel")

Так наверное!
Lex
проверяй имя, бога, класс, экспу, расу, пол, статы.
А то я сгенерю перса, назову Архом и буду гамать.
Добавлено в [mergetime]1130098557[/mergetime]
QUOTE (Archangel @ Oct 23 2005, 21:33)
Хех, знал бы я еще как это сделать и цены б мне не было... biggrin.gif

хреново, что не знаешь.
Archangel
QUOTE

Neverwinter Script Source
if(GetPCPlayerName(oPC) == "Archangel")

Так наверное!

QUOTE
проверяй имя, бога, класс, экспу, расу, пол, статы.
А то я сгенерю перса, назову Архом и буду гамать.

NedWarN, Lex спасибо за совет.
QUOTE
хреново, что не знаешь.

Учиться никогда непоздно! pardon.gif
Daemonix
В биотварском модуле shadow guard в певой локе есть такая фича
user posted image
то есть перс полупрозрачный.
никто не знает, каким путём можно этого достичь? (для одной определённой локи)
Lex
не вижу скрина.
Скорее всего визуальный эффект. Гост визаж или ефир
Daemonix
Я в скором времени выложу нормальный скриншот. А вот ещё что случилось - когда я запускаю свой мод, он не хочет пахать под предлогом "Слишком мало места на жёстком диске для воспроизведения операции". Все другие моды работают нормально. Что делать?
Vitalist
Что нужно, чтобы NPC не беспокоить? То есть, к примеру, стоят двое NPC, типа разговаривают (анимация), а игрок не может им помешать - они "заняты".
Dik Morris
Вот пара вариантов:
1) Игрок, может поговорить с НПС, а после диалога они снова повернутся друг к другу, и начнутся "разговаривать".
На строчку в диалоге 1 НПС (НЕ ИГРОКУ!) в совершены действия:
Neverwinter Script Source
void main()
{
object oNPC_2 = GetNearestObjectByTag("TAG_NPC_2");//Укажи ТАГ того НПС к которому повернется 1 НПС
DelayCommand(1.0f, AssignCommand(OBJECT_SELF, ClearAllActions()));
DelayCommand(2.0f, AssignCommand(OBJECT_SELF, SetFacingPoint(GetPosition(oNPC_2))));
DelayCommand(3.0f, AssignCommand(OBJECT_SELF, ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL)));//Можешь выбрать сам анимационную константу. (ANIMATION_*)
}

Аналогично, ставишь НПС 2, такой же скрипт. Но указываешь ТАГ 1 НПС.
2)Игрок подходик к неписям, но его "отбрасывает" немного назад, на нужный вайпоинт.
рисуешь вокруг неписей триггер, на onEnter ставишь:
Neverwinter Script Source
void main()
{
object oV = GetEnteringObject();
object oWP = GetObjectByTag("ТАГ ВАЙПОИНТА");
ActionDoCommand(AssignCommand(oV, ClearAllActions()));
ActionDoCommand(AssignCommand(oV, ActionJumpToObject(oWP)));
}

QUOTE
"Слишком мало места на жёстком диске для воспроизведения операции".

Hу если места, мало дык жесткий почисти! biggrin.gif
Daemonix
QUOTE
Hу если места, мало дык жесткий почисти!

Ну места там достаточно. Все другие-то модули запускаются! А мой нет.
NedWarN
QUOTE
Ну места там достаточно. Все другие-то модули запускаются! А мой нет.

Открой Модуль, и зайди в Папку "Модулес" Скопируй всё кданибудь, из папки temp0 и создай новый модуль, открой всё также и вставь всё скопированное туда.
2. удали ненужные модули!
3. Если модуль очень большой, снизь графику, просто это может быть из-за RAM!
Daemonix
Хм, знаете, я тут поэкспериментировал - такое ощущение, что глюк с нехваткой места вылетает, когда задано слишком длинное название модуля... dntknw.gif
Dik Morris
Хм... Люди подскажите, почему эффект не налаживается.
Вот некоторые строчки из скрипта:
Neverwinter Script Source
effect oApper = EffectDisappearAppear(Target);
location Target = GetLocation(GetObjectByTag("WJ_JEREMI_KATAKOMBA"));
object oDJ = GetObjectByTag("DJEREMI");
ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_INSTANT,oApper,oDJ));

Вроде, все так но вот, НПС не приземляется в нужную точку.
AliceDiren - самое то! good.gif
Aiwan - у меня, кстати и без AssignCommand налаживается wink.gif
QUOTE
зачем тебе нужно ActionDoCommand?

Просто, я привел пару строк, а в скрипте их намного больше и выполнятся они должны в строгой последовательности yes.gif
Aiwan
Dik Morris в ХоТУ эффекты накладываются так:
Neverwinter Script Source
AssignCommand(oSelf, ApplyEffectToObject(DURATION_TYPE_INSTANT,oApper,oDJ));
AliceDiren
Aiwan , так у него эффект срабатывает, но не правильно smile.gif
Dik Morris , вот так точно работает
Neverwinter Script Source
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,oApper,oDJ,5.0)

5.0 - время через которое твой oDJ должен появиться в нужной точке.
Добавлено в [mergetime]1131001667[/mergetime]
Dik Morris, и, кстати, действительно, зачем тебе нужно ActionDoCommand?
Белатрис
Как объединить HotU и SoU?
AliceDiren
QUOTE (Белатрис @ Nov 3 2005, 12:14)
Как объединить HotU и SoU?

Смотри здесь
Lex
QUOTE (Aiwan @ Nov 3 2005, 10:37)
Dik Morris в ХоТУ эффекты накладываются так:

Neverwinter Script Source
AssignCommand(oSelf, ApplyEffectToObject(DURATION_TYPE_INSTANT,oApper,oDJ));

Ванька, ты че-т путаешь. Можно без привязки. (в лексиконе так надо делать, когда в скрипте не рекомендуется юзать OBJECT_SELF, но я с этим редко сталкивался..)
Aiwan
QUOTE (Dik Morris @ Nov 3 2005, 12:11)
Вот некоторые строчки из скрипта:

Соответсвенно скрипт большой и юзаются разные объекты. Если я его правильно понял, то эффект у него как бы в мини сценке. Соответсвенно и дал расклад. Объяснять не стал, так как толку честно говоря от таких разъяснений мало. А вы уж запинали меня biggrin.gif

Добавлено в [mergetime]1131025515[/mergetime]
Вообще с OBJECT_SELF я напарился в СОУ еще в ПЛ. Так что wacko.gif лучше юзать так:
Neverwinter Script Source
object oSelf = OBJECT_SELF;
Daemonix
Хм, а почему портреты, которые я вставляю в папку Portraits в каталоге НВН нельзя поставить какому-нибудь неписю, а только игроку?
Dik Morris
Daemonix
Тут нужно делать, хак.
Прописывать нужные портреты в 2ДА таблице, и собирать все в хак.
PS: более, подробно это написана в мануале Aiwana, почитай.
------------------------------------------
Ах, да. Никто не подскажет константу, эффекта землетрясения?
------------------------------------------
Aiwan, сенкс. crazy.gif
Aiwan
VFX_FNF_SCREEN_BUMP - делает большой БУМ!
VFX_FNF_SCREEN_SHAKE - эффект моей стиральной машинки.
Dik Morris
В чем дело? Скрипт, стоит на оnEnter локации, но эффекта 0.
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
if (GetIsPC(oPC))
{
ActionDoCommand(AddJournalQuestEntry("PROLOG",1,oPC));
}
else
{
ClearAllActions();
}
}

PS: хотя если поставить на триггер, все работает.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.