Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > 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
Апельсинов
QUOTE (Lex @ Dec 8 2005, 09:49)
на волте глять TC Interior. Там есть пустые комнаты.
никуда от этого не денешься. (могу объяснить, откуда этот эффект вставания после того, как уже отошел)

расскажи чуток.
Lex
QUOTE (Апельсинов @ Dec 8 2005, 13:46)
На счет снимать Usebale - спасибо, за совет, вот только как выставлять обратно, когда персонажу кликаешь встать?

не, юзабл это не то. В том скрипте, что ты привел уже все учтено и нормально сделано.

моя статья по анимации.
там пункт
2.3.2 АНИМАЦИОННЫЕ КОНСТАНТЫ ТИПА _LOOPING_.

Сиденье и хотьба по сути те же анимации.. сиденье можно отнести к _LOOPING_. А хотьбу к FIREFORGET. Когда встаешь со стула, тыкая на точку, анимация хотьбы вклинивается до финального ролика сиденья (это когда проигрывается анимация вставания). И выполняется полностью, а только потом проигрывается финальный ролик. Поэтому он сначала идет, потом встает. (для этого быстренько сев на создух). Все предельно просто.

Это особености анимации в НВН, от этого не уйдешь. Наоборот, надо пользоваться smile.gif Плохо, что это имеет такую побочную сторону.. но что поделать smile.gif
Апельсинов
QUOTE (NedWarN @ Dec 8 2005, 02:47)
Свойства Звуков/Позиционное/Воспроизведение в Оп. точке.
Я просто запихивал сырой WAV в Overred/

Прошу прощения, ставится то ставится, да не играет WAV при выставлении его как 3D, как и пишется в предупреждалке
Апельсинов
QUOTE (Lex @ Dec 8 2005, 14:07)
не, юзабл это не то. В том скрипте, что ты привел уже все учтено и нормально сделано.

УУУУб спасибо за ссылочку. А юзебл, не юзебл - просто хочу хранить переменную сидит человек или нет (в человеке), когда садится выставляем 1 , а как выставить в 0 когда встает?
dumbo
QUOTE (Апельсинов @ Dec 8 2005, 15:15)
А юзебл, не юзебл - просто хочу хранить переменную сидит человек или нет (в человеке), когда садится выставляем 1 , а как выставить в 0 когда встает?

зачем тебе переменная? при "вставании" не происходит событий, отлавливаемых скриптами(хотя извратиться можно). если ты по этой переменной хочешь проверять, сидит ли чел, то проще сделать такую проверку:
Neverwinter Script Source
if (GetCurrentAction(oPC)==ACTION_SIT)
{
  // сидит wink.gif
}
Lex
QUOTE (Апельсинов @ Dec 8 2005, 14:15)
УУУУб спасибо за ссылочку. А юзебл, не юзебл - просто хочу хранить переменную сидит человек или нет (в человеке), когда садится выставляем 1 , а как выставить в 0 когда встает?

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

И все-таки можно WAV ставить как 3D звук? У меня его просто становится не слышно, какой формат использован для 3D звуков?
NedWarN
QUOTE
И все-таки можно WAV ставить как 3D звук? У меня его просто становится не слышно, какой формат использован для 3D звуков?

Можно, я видел там есть 3д звуки в Формате WAV/
Попробуй перевести в Формат BMU, хотя дейсво маловероятно. Что поможет.
Апельсинов
Очень странный эффект! Сделал так, чтобы можно было разговаривать сидя.
Человек сидит, а полурослик встает-садится.
Есть ли какие-то хитрости по отношению к анимации разных рас?

Сажу ПС первый раз по тому скрипту. (Только запоминаю в sitplace tag стула.
Снова сажу, когда с ним начинает говорить НПС
Neverwinter Script Source
void main()
{
   object oPC=GetPCSpeaker();
   object oChair = GetObjectByTag(GetLocalString(oPC,"sitplace"));

    if(GetIsObjectValid(oChair) && GetIsObjectValid(oPC))
    {
        object oSurf = GetLocalObject(oChair, "surf");


        AssignCommand(oPC, ActionSit(oSurf));
       // SetLocalString(oPC,"sitplace",GetTag(oChair));
    }
}

По этому садим ПС снова, чтобы не крутился за НПС
Neverwinter Script Source
void main()
{
object oPC=GetPCSpeaker();
SetLocalInt(OBJECT_SELF,"BUSY",0);
AssignCommand(oPC,ClearAllActions());

  object oChair = GetObjectByTag(GetLocalString(oPC,"sitplace"));

    if(GetIsObjectValid(oChair) && GetIsObjectValid(oPC))
    {
        object oSurf = GetLocalObject(oChair, "surf");

        DestroyObject(oSurf);
        vector vSurf = GetPosition(oChair);
        vSurf.z = 0.0;

        location lSurf = Location(GetArea(oChair), vSurf, GetFacing(oChair));

        object oNewSurf = CreateObject(OBJECT_TYPE_PLACEABLE, "sittingsurface", lSurf, FALSE);

        SetLocalObject(oChair, "surf", oNewSurf);

        AssignCommand(oPC, ActionSit(oNewSurf));
        SetLocalString(oPC,"sitplace",GetTag(oChair));
    }
}

2. На счет WAV - какие-то играют, какие-то нет, это зависит от размера? мой 38мб.




LEX: Устное предупреждение: все скрипты писать ТОЛЬКО в нсс тэгах.
Добавлено в [mergetime]1134148890[/mergetime]
Прошу прощения за теги, запарил вставить второй раз, а исправить уже не мог.
Пояснение к предидущему:
Хотя эффект интересный - если посадить ПС в разговоре - он следит взглядом за НПС даже по окончанию - крутится на стуле. Кто-нибудь сталкивался с таким?
Я ему СlearAllAxtions, сажу снова - иногда встает, иногда нет, похоже локалки парят.
Aiwan
QUOTE (Апельсинов @ Dec 9 2005, 22:19)
Хотя эффект интересный - если посадить ПС в разговоре - он следит взглядом за НПС даже по окончанию - крутится на стуле. Кто-нибудь сталкивался с таким?

Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Name: am_ccn_spider
//:: Copyright © 2005 WRG!
//::///////////////////////////////////////////////
/*
  Скрипт am_ccn_spider, позволяет разговаривать с
  мертвым пауком.
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 18.09.2005
//:://////////////////////////////////////////////
void main()
{
        /* Теперь НПС не встанет при диалоге */
        if (GetCommandable(OBJECT_SELF)==TRUE) // Если стек команд НПС работает
        {
            SetCommandable(FALSE,OBJECT_SELF);
            DelayCommand(1.0, SetCommandable(TRUE,OBJECT_SELF));
        }
        /* Если НПС уже не понимает команды, то сразу начнем диалог */
        BeginConversation();
}

Попробуй воткнуть на OnConversation НПС.
Nashman
Возможно очень лажный вопрос, но попробую задать...
- В какой "слот" прописывать скрипты анимации, например мне нужно ActionRandomMovie(), куда его лепить?(Обычные НПС). И можно как-то зацикоить что-то?
Aiwan
Nashman конкретней вопрос поставь. Если просто Рандомно бродящие, то Биовар это сделало за тебя. Все остальное вешают обычно на ЮзерДеф.
Апельсинов
QUOTE (Nashman @ Dec 10 2005, 00:47)
Возможно очень лажный вопрос, но попробую задать...
- В какой "слот" прописывать скрипты анимации, например мне нужно ActionRandomMovie(), куда его лепить?(Обычные НПС). И можно как-то зацикоить что-то?

Если ты просто хочешь проиграть анимацию - вешай туда, где тебе нужно ее проигрывать.
Хочешь зациклить? Можно на хартбит повесить и дать длину 6 секунд - можно добиться эффекта зацикливания. Или удобно на юзердеф. А вообще по анимации почитай ссылку, которую мне Лекс давал тут же чуть раньше - очень хорошая статья по анимации персонажей!
Aiwan
QUOTE (Апельсинов @ Dec 10 2005, 05:12)
Хочешь зациклить? Можно на хартбит повесить и дать длину 6 секунд - можно добиться эффекта зацикливания.

Ни в коем случае так делать нельзя. Может произойти накапливание команд и когда их будет больше 75 начнется дикий ужас. scratch_one-s_head.gif
Lex
QUOTE (Aiwan @ Dec 10 2005, 09:14)
Ни в коем случае так делать нельзя. Может произойти накапливание команд и когда их будет больше 75 начнется дикий ужас. scratch_one-s_head.gif

при времени проигрывания 6 сек не начнется. Но вот момент.. RandomWalk это не анимация, время у нее не задается.
Если НПС вечно должен так ходить, напиши это в спаун скрипт или раскомментируй флаг мобильной анимации.

Но чтобы не было наложений, надо проверять текущее действие (например посадить НПС на стул правильно так: (навсегда)
Neverwinter Script Source
if (GetCurrentAction(OBJECT_SELF)!=ACTION_SIT)
    {
    object oChair = GetNearestObjectBtTag("chair");
    ClearAllActions();
    ActionSit(oChair);
    }

идея думаю ясна)
Добавлено в [mergetime]1134206259[/mergetime]
QUOTE (Aiwan @ Dec 10 2005, 09:14)
Ни в коем случае так делать нельзя. Может произойти накапливание команд и когда их будет больше 75 начнется дикий ужас. scratch_one-s_head.gif

при времени проигрывания 6 сек не начнется. Но вот момент.. RandomWalk это не анимация, время у нее не задается.
Если НПС вечно должен так ходить, напиши это в спаун скрипт или раскомментируй флаг мобильной анимации.

Но чтобы не было наложений, надо проверять текущее действие (например посадить НПС на стул правильно так: (навсегда)
Neverwinter Script Source
if (GetCurrentAction(OBJECT_SELF)!=ACTION_SIT)
    {
    object oChair = GetNearestObjectBtTag("chair");
    ClearAllActions();
    ActionSit(oChair);
    }

Кусок кода в ХБ НПС. идея думаю ясна)
Nashman
Привет,
Ответьте на вопрос:
- Как сделать скриптик, что бы его можно было весить на других персонажей, а сам скриптик должен уметь: есть у нас объект «стул» и есть НПС «lol», как его посадить(Выше читал, но у меня не работает, и я навел пример названий объекта что бы все понять) и как сделать что бы на все стулья, лавки мой персонаж седал, как в «Проклятии Левора»?

ПС: Не пробовал, но ПС или НПС может на сделанные мной лавки, если так само скажите, если не так само то тоже скажите….
Dik Morris
QUOTE
как сделать что бы на все стулья, лавки мой персонаж седал, как в «Проклятии Левора»?

Первое что пришло в голову pardon.gif
На onUsed (в св-вах плейса)
Neverwinter Script Source
void main()
{
object oPC = GetLastUsedBy();
//Игрок. А вообще тот кто юзает (использует) обьект.
object oSt = OBJECT_SELF;
//Сам обьект, т.е стул, лавка и т.п.
if (GetIsObjectValid(GetSittingCreature(oSt)) == FALSE)
//Проверка если стул не занят то садимся.
{
AssignCommand(oPC, ActionSit(oSt));
}
else if (GetIsObjectValid(GetSittingCreature(oSt)) == TRUE)
//А если на стуле кто то сидит то чистим игроку акиции.
{
AssignCommand(oPC, ClearAllActions());
}
}

*************************
QUOTE
Как сделать скриптик, что бы его можно было весить на других персонажей, а сам скриптик должен уметь: есть у нас объект «стул» и есть НПС «lol», как его посадить(Выше читал, но у меня не работает, и я навел пример названий объекта что бы все понять

Замени строчку: GetLastUsedBy(); как OBJECT_SELF, скрипт ставь на onSpawn, NPC
*************************
QUOTE
ПС: Не пробовал, но ПС или НПС может на сделанные мной лавки, если так само скажите, если не так само то тоже скажите….

Все он может садится.
Бегом читать мануалы! rtfm.gif
PS: мог бы и поискать скриптов подобных полно на форуме. wink.gif
-fenix-
Nashman, три раза перечитал твой вопрос, так ни чего и не понял!

Если у тебя не работает рабочий скрипт из базы, то убедись, что у тебя все правильно. Например, что скрипт стоит на OnUsed стула!

Если нужен скрипт из леворовских таверн, то надо было зайти и посмотреть в соответствующем слоте, там вот что стоит

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));
        }
        else if (GetIsObjectValid(GetSittingCreature(oChair)))
        {
            AssignCommand(oPC, ClearAllActions());
            AssignCommand(oPC, SpeakString("А куда садитьсЯ? На руки, что ли?"));
        }
    }

}


З.Ы. Дик опередил, может он правильно тебя понял? dntknw.gif
maximal_up
QUOTE (-fenix- @ Dec 11 2005, 00:06)
Nashman, три раза перечитал твой вопрос, так ни чего и не понял!

Он просит скрипт для того, что-бы можно было садиться на стулья! На все стулья!
http://www.wrg.ru/forums/index.php?showtopic=310&st=40 - смотри здесь. Там Аваддон тот-же вопрос обсуждает.
-fenix-
QUOTE (maximal_up @ Dec 11 2005, 00:51)
Он просит скрипт для того, что-бы можно было садиться на стулья! На все стулья!

Аваддон там про тайловые скамейки спрашивает, что у него ПС садится в одну сторону.
А стулья у Нашмана, как я понял, плейсовые.
Nashman
QUOTE
А стулья у Нашмана, как я понял, плейсовые.
Еге...
swoon.gif А есть разница между тайловыми и плейсовыми?
Dik Morris
QUOTE
Nashman, три раза перечитал твой вопрос, так ни чего и не понял!

Феникс читай внимательнее, я с одного раза осилил. biggrin.gif
QUOTE
А есть разница между тайловыми и плейсовыми?

Nashman, ну блин ты хоть опробовал, что мы тебе подсказали, или так сразу вопрос не долго думая?
Разница есть, и очень большая.
(Устал повторять: rtfm.gif angry2.gif)
maximal_up
QUOTE (Nashman @ Dec 11 2005, 02:30)
А есть разница между тайловыми и плейсовыми?

good.gif ККруче вопроса не видел с момента появления на форуме!
QUOTE (-fenix- @ Dec 11 2005, 01:38)
Аваддон там про тайловые скамейки спрашивает, что у него ПС садится в одну сторону.

Там вообще обсуждается скрипт посадки. На тайловые садиться можно через специальный плейсовый объект. На него кидается тот-же скрипт, что и на стулья. Он там, вроде, написан.
alMuk
QUOTE (maximal_up @ Dec 11 2005, 13:35)
На тайловые садиться можно через специальный плейсовый объект. На него кидается тот-же скрипт, что и на стулья. Он там, вроде, написан.

В версии 1.66 вроде это пофиксили, хотя сам не проверял. unsure.gif

QUOTE
Fixed an issue that was causing creatures to always face east when sitting on a stool placeable
zmey
После долгого молчания я опять появляюсЬ diablo.gif !!! И снова начинаю задавать свои страшно тупые, но интересующие меня вопросы:
1) Хочу написать скрипт поведения неписям, ну, например, если ночь - иди домой, если день - по городу шляйся, или в таверне бухай. Так вот идеи - то есть, типа определить день\ночь и ActionDumpToObject. Но тогда неписи после джампа стоят как бараны на одном месте. А я хочу, чтобы они ПО ЛОКАЦИИ ХОДИЛИ!!!
2) Какие 2ДА править и как, чтобы при повышении уровня нельзя было выбирать некоторые фиты(к примеру, двуправорукость; и заклинания) diablo.gif
3) как лучше - расставить готовых неписей или создавать их ч\з енкаутер? crazy.gif crazy.gif (сошел с ума!!!) crazy.gif
yudgi
Люди помогите пожалуйста. Ктасцена: ПС наступает на тригер, к нему подбегает НПС они разговаривают, после чего НПС уходит в дверь. Подсказали вот этот скрипт поставить на тригер:
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
object oFriam = GetNearestObjectByTag("FRIAM", oPC);

SetCutsceneMode(oPC,TRUE);
DelayCommand(0.1, AssignCommand(oPC, ClearAllActions()));
DelayCommand(0.1, AssignCommand(oFriam, ClearAllActions()));
DelayCommand(0.2, ActionDoCommand(AssignCommand(oPC, SetCameraFacing(210.0,30.0,45.0,CAMERA_TRANSITION_TYPE_SLOW))));
DelayCommand(0.3, AssignCommand(oFriam, ActionStartConversation(oPC, "friam")));
}

А на последнюю ветку в диалоге вот этот:
Neverwinter Script Source
void main()
{
object oFriam = GetNearestObjectByTag("FRIAM", oPC);
object oDoor = GetNearestObjectByTag("friam_home", oPC);

AssignCommand(oFriam, ActionForceMoveToObject(oDoor));
AssignCommand(oFriam, ActionPlayAnimation(13, 1.0, 3.0)); //анимашка открывания замков
AssignCommand(oFriam, ActionOpenDoor(oDoor));
AssignCommand(oFriam, ActionDoCommand(SetCutsceneMode(oPC,FALSE)));
AssignCommand(oFriam, ActionDoCommand(DestroyObject(oFriam)));
}

Вся проблема в том, что в первом скрипте НПС не разговаривает с игроком, а просто стоит, следовательно катсцена дальше не идёт, подскажите как это исправить.
Dik Morris
QUOTE
) Хочу написать скрипт поведения неписям, ну, например, если ночь - иди домой, если день - по городу шляйся, или в таверне бухай. Так вот идеи - то есть, типа определить день\ночь и ActionDumpToObject. Но тогда неписи после джампа стоят как бараны на одном месте. А я хочу, чтобы они ПО ЛОКАЦИИ ХОДИЛИ!!!

Так если они нормально джампяться, значит тебе поможет:
Neverwinter Script Source
// The action subject will generate a random location near its current location
// and pathfind to it.  ActionRandomwalk never ends, which means it is neccessary
// to call ClearAllActions in order to allow a creature to perform any other action
// once ActionRandomWalk has been called.
// * No return value, but if an error occurs the log file will contain
//   "ActionRandomWalk failed."
void ActionRandomWalk()
(Фун-ция рандомного хождения) ну или:
Neverwinter Script Source
// Cause the action subject to move to a certain distance from oMoveTo.
// If there is no path to oMoveTo, this command will do nothing.
// - oMoveTo: This is the object we wish the action subject to move to
// - bRun: If this is TRUE, the action subject will run rather than walk
// - fRange: This is the desired distance between the action subject and oMoveTo
// * No return value, but if an error occurs the log file will contain
//   "ActionMoveToObject failed."
void ActionMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f)

QUOTE
3) как лучше - расставить готовых неписей или создавать их ч\з енкаутер?   (сошел с ума!!!) 

В зависимости от ситуации.
************************
yudgi
В первом коде одна лишняя скобка: wink.gif
DelayCommand(0.3, AssignCommand(oFriam, ActionStartConversation(oPC, "friam"))));
yudgi
QUOTE

yudgi
В первом коде одна лишняя скобка:
DelayCommand(0.3, AssignCommand(oFriam, ActionStartConversation(oPC, "friam"))));

Всё равно не разговаривает
AliceDiren
yudgi, повторюсь - ты точно уверена, что есть такой разговор "friam" и что он именно так называется? Проверь все теги и назание разговора на всякий случай.
И второй вопрос - а скрипты нормально компилируются? Если нет, то они просто запускаться не будут dntknw.gif и конечно ничего происходить не будет.
yudgi
Разговор есть, и скрипт нормально компилируется, вот это и странно.
Dik Morris
Вероятно нет диалога: "friam"
*************************
AliceDiren пардон, не заметил. pardon.gif
PS: только что проверил в тулсе - всё работает 100%
Vhall
QUOTE (alMuk @ Dec 11 2005, 13:57)
В версии 1.66 вроде это пофиксили, хотя сам не проверял. unsure.gif

Не исправили и не могли. Так как для этого нужно переписывать граф. движок
QUOTE (maximal_up @ Dec 11 2005, 13:35)
Там вообще обсуждается скрипт посадки. На тайловые садиться можно через специальный плейсовый объект. На него кидается тот-же скрипт, что и на стулья. Он там, вроде, написан.

На самом деле, посадка происходит не на сам тайл, а на его внутренний вокмеш.

Помещаем invisible object на стену (вокмеш)
http://droaam.nm.ru/images/sit1.jpg

(вот он)
http://droaam.nm.ru/images/sit2.jpg

Садимся
http://droaam.nm.ru/images/sit3.jpg
http://droaam.nm.ru/images/sit4.jpg
Добавлено в [mergetime]1134397912[/mergetime]
QUOTE (zmey @ Dec 12 2005, 09:14)
2) Какие 2ДА править и как, чтобы при повышении уровня нельзя было выбирать некоторые фиты(к примеру, двуправорукость; и заклинания) diablo.gif

feats.2da и/или cls_feat_*.2da и/или race_feat_*.2da
maximal_up
QUOTE (Vhall @ Dec 12 2005, 18:18)
На самом деле, посадка происходит не на сам тайл, а на его внутренний вокмеш.

Это интересно. Хотя верно. Никогда не задумывался над этим.
zmey
Вопрос не в тему: какого (ВЫРЕЗАНО ЦЕНЗУРОЙ) у меня городские локации тормозят?
Добавлено в [mergetime]1134727339[/mergetime]
Главное, модуль нормально пашет, а как в город войдешь - тормоз на тормозе! Есть идеи, почему такое?
Dik Morris
QUOTE
у меня городские локации тормозят?
Главное, модуль нормально пашет, а как в город войдешь - тормоз на тормозе! Есть идеи, почему такое?

Вероятно ты юзаешь очень большие локации (20*20) + много плейсов/звуков/и т.п...
Посему и тормозят. smile.gif
zmey
Не фига подобного! Лок 14х14 максимум, звуки пока не расставлял, а вот НПС - да. Все - уникальные.
Добавлено в [mergetime]1134742439[/mergetime]
ишо одна вопроса, однако! Мне надо разобраться со временем. Как его проверить, как его изменить, как скриптом вызвать событие, которое произойдет, скажем, через 6 дней игрового времени? Если кому не лень, объясните,а? Феникс, может ты помогешь? В свое время циклы мне и рандом здорово объяснил! crazy.gif crazy.gif
Dik Morris
QUOTE
ишо одна вопроса, однако! Мне надо разобраться со временем. Как его проверить, как его изменить, как скриптом вызвать событие, которое произойдет, скажем, через 6 дней игрового времени? Если кому не лень, объясните,а? Феникс, может ты помогешь? В свое время циклы мне и рандом здорово объяснил

Neverwinter Script Source
//Список нужных функций:
int GetCalendarDay()
//Календарный день;
int GetCalendarMonth()
//Календарный месяц;
int GetCalendarYear()
//Календарный год;
int GetIsDawn()
//Проверка на ночь;
int GetIsDay()
//Проверка на день;
int GetIsDusk()
//Возращение если сумерки;
int GetIsNight()
//Возращение если ночь;
int GetTimeHour()
//Проверка на час;
int GetTimeMillisecond()
//Проверка на милисекунды;
int GetTimeMinute()
//Проверка на минуты;
int GetTimeSecond()
// Проверка на секунды;
void SetTime(int nHour,int nMinute,int nSecond,int nMillisecond)
// Установить время. (Начиная от часа, и заканчивая милисекундой)

Пример пользования:
Neverwinter Script Source
//Ставится на строчку в диалоге.
void main()
{
if (GetTimeHour()==10)//Если сейчас 10 часов то строчка в диалоге будет доступной:
{
}
}
zmey
СПА-СИ_БА! yes.gif
Добавлено в [mergetime]1134746406[/mergetime]
Мне надо ОДНОМУ предмету присвоит ДВЕ уникальные силы (только собственное питание) как это сделать?
Dik Morris
Насчет двух уник. сил не знаю. Проще поставить одну единственную и юзать вот этот скриптик:
(Модульные свойства – ActivateItem)
Neverwinter Script Source
void main()
{
object oPC    = GetItemActivator();//Тот кто активирует предмет;
object oItem_1 = GetItemActivated();//Сам активируемый предмет;
if ((GetTag(oItem_1)== "TAG_PREDMETA") && GetLocalInt(oPC,"LOCA")==!TRUE)
//Проверка. Если таг предмета равен: TAG_PREDMETA и локалка: LOCA не включена, то происходит условие;
{
AssignCommand(oPC, SpeakString("Я использовал первую уник. силу!"));
//Например игрок произносит фразу;
SetLocalInt(oPC,"LOCA",TRUE);
//Включаем локалку, нужно для второго использования;
}
else if ((GetTag(oItem_1)== "TAG_PREDMETA") && GetLocalInt(oPC,"LOCA")==TRUE)
//Аналогично первой проверке, но здесь локалка включена;
{
AssignCommand(oPC, SpeakString("Я использовал вторую уник. силу!"));
//Траляля...
SetLocalInt(oPC,"LOCA",FALSE);
//Выключаем локалку, чтоб второй раз произошло первое событие...
}
}

Смысл скрипта такой: игрок активирует предмет происходит 1 событие, когда игрок повторно активирует этот же предмет то происходит 2 событие, потом опять 1 и т.д...
-fenix-
zmey, ну чтобы сделать события на время, нужно запомнить текущее время и добавить нужный промежуток. Это запомнить и потом проверять в сравнении с тукущим временем. Вобщем так.

Вот запоминаем время.
Neverwinter Script Source
void main()
{
object oPC = GetFirstPC();
/*мы установили переменную, где:
oPC - на ком запомнить  +
"Hour" - ее название
GetTimeHour() + 1 - Тут мы получили текущее время функцией  GetTimeHour() и прибавили
один час. Вместо одного можно сделать сколько надо.
*/

SetLocalInt(oPC, "Hour", GetTimeHour() + 1);

//так можно запомнить и минуты и секунды
SetLocalInt(oPC, "Minute", GetTimeMinute() + 1);//минуты
SetLocalInt(oPC, "Second", GetTimeSecond() + 1);//секунды
}


//в другом скрипте мы проверим время
void main()
{
//если текущий час равен запомненному
if(GetTimeHour() == GetLocalInt(oPC, "Hour"))
{
}

//если текущие час, минуты и секунды совпадают с запомненными
if(GetTimeHour() == GetLocalInt(oPC, "Hour") &&
  GetTimeMinute() == GetLocalInt(oPC, "Minute") &&
  GetTimeSecond() ==  GetLocalInt(oPC, "Second"))
  {
  }
}

Пойдет?
QUOTE (zmey @ Dec 16 2005, 19:15)
Мне надо ОДНОМУ предмету присвоит ДВЕ уникальные силы (только собственное питание) как это сделать?

ДЛя чего они бдут использоваться, поподробнее.
AliceDiren
QUOTE (zmey @ Dec 16 2005, 18:15)
Мне надо ОДНОМУ предмету присвоит ДВЕ уникальные силы (только собственное питание) как это сделать?

zmey, я бы сделала одну. Но при активации вызывала диалог, а уж в нем, хоть 10 вариантов smile.gif
Master Wu
QUOTE (Master Wu @ Dec 4 2005, 23:30)
Такой вопрос. Можно ли как-то заставить появившихся гвардов бежать к ПС и атаковать только его (в пределах одной локи),где бы и как бы далеко от них он нибыл, а не стоять и ждать, пока он подойдет ближе.

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

Нашел решение!
Neverwinter Script Source
void main()
{
object oNPC = GetObjectByTag("");//Таг появившихся гвардов
object oPC = GetLastHostileActor(OBJECT_SELF);
AssignCommand(oNPC, ActionMoveToObject(oPC));
}

Ставить на OnDamaged, OnDisturbed или OnPhysicalAttacked разгуливающих по улицам патрулей и НПС
-fenix-
Master Wu, тебе вроде говорили, что лучше использовать функцию
Neverwinter Script Source
// Force the action subject to move to oMoveTo.
void ActionForceMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f, float fTimeout=30.0f)

И зачем это ставить в слоты, если эти грарды появляются скриптами?
Пихай движение в тот же скрипт, а стражник должен быть изначальног враждебным.
Master Wu
Те самые гварды, которые должны тебя нейтрализовать действительно появляются у мня скриптом, и действительно изначально враждебны. Но мне никак не удавалось заставить их бежать к убившему гварда или НПС.
-fenix-
QUOTE (Master Wu @ Dec 18 2005, 19:14)
Но мне никак не удавалось заставить их бежать к убившему гварда.

QUOTE
Такой вопрос. Можно ли как-то заставить появившихся гвардов бежать к ПС и атаковать только его (в пределах одной локи),где бы и как бы далеко от них он нибыл, а не стоять и ждать, пока он подойдет ближе.

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

Несколько полезных функций
Neverwinter Script Source
// Get the object that killed the caller.
object GetLastKiller()

// Attack oAttackee.
// - bPassive: If this is TRUE, attack is in passive mode.
void ActionAttack(object oAttackee, int bPassive=FALSE)
Master Wu
Хм. Работает. Черт, опять перемудрил. Все оказалось гораздо проще.

-fenix- респект
RiPPeR
2Nika

Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();

if (!GetIsPC(oPC)) return;

if (GetSubRace(oPC)=="Drow")
  return;

object oTarget = oPC;

int nLevel = GetHitDice(oPC);
int nDamage;
int nRealDamage;
int nDC = 20;

effect eEffect;

nDamage =  2 * d10();
nRealDamage = GetReflexAdjustedDamage(nDamage, oPC, nDC, SAVING_THROW_TYPE_TRAP, OBJECT_SELF);
eEffect = EffectDamage(nRealDamage, DAMAGE_TYPE_NEGATIVE, DAMAGE_POWER_ENERGY);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC);

nDamage =  2 * d10();
nRealDamage = GetReflexAdjustedDamage(nDamage, oPC, nDC, SAVING_THROW_TYPE_TRAP, OBJECT_SELF);
eEffect = EffectDamage(nRealDamage, DAMAGE_TYPE_NEGATIVE, DAMAGE_TYPE_POSITIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC);

ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DESTRUCTION), GetLocation(oTarget));
}
Nika
Спасибо большое! kiss.gif
RoHaN
Здравствуйте. Меня вежливо попросили перейти на эту страницу со своим вопросом, а вопрос у меня такой - как сделать чтобы трупы падших не исчезали ?
-fenix-
В св-ве НПС ставишь галку на "нет остаточной смерти" или как там
А в скрипте OnDeath юзаешь функцию
Neverwinter Script Source
// Set the destroyable status of the caller.
// - bDestroyable: If this is FALSE, the caller does not fade out on death, but
//  sticks around as a corpse.
// - bRaiseable: If this is TRUE, the caller can be raised via resurrection.
// - bSelectableWhenDead: If this is TRUE, the caller is selectable after death.
void SetIsDestroyable(int bDestroyable, int bRaiseable=TRUE, int bSelectableWhenDead=FALSE)

А конкретно SetIsDestroyable(FALSE, FALSE, FALSE)
Вот так и настраивай.

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