Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > 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
Misty Archer
Lex
По поводу первого вопроса: у тебя остался скрипт или подробная информация ( про угол обзора в 220 градусов) Если да то можно ли для разных существ сделать угол обзора разным.
Заранее благодарен.
Lex
NSS
int NER_GetObjectSeen(object oTarget, object oCreature, int fVisualAngle = 220)
{
vector vTarget  = GetPosition(oTarget);
vector vCreature = GetPosition(oCreature);
float fTargetXNew = vCreature.x - vTarget.x;
float fTargetYNew = vCreature.y - vTarget.y;
float fFacing = GetFacing(oCreature);
float fDistance = GetDistanceBetween(oTarget,oCreature);
float fTangle = asin(fTargetYNew/fDistance);
float RESULT;
if (fTargetXNew < 0.0)
    {
    if (fFacing < 180.0)  RESULT = fFacing + fTangle;
    else               RESULT = 360 - fFacing - fTangle;
    }
else
    {
    if (fFacing < 180.0)  RESULT = 180 - fFacing + fTangle;
    else               RESULT =  - 180  + fFacing - fTangle;
    }
if (GetObjectSeen(oTarget,oCreature))  
  {
    if ( abs(FloatToInt(RESULT)) <= (fVisualAngle/2) )
        return TRUE;
    }
return FALSE;
}
shadowdweller
Доброго времени суток всем!

Aiwan Спасибо. Тема, действительно, оказалась полезной. Кстати, подумав, c DelayCommand разобралась, ты подтвердил мои догадки.

А теперь возник ну совершенно дурацкий вопрос: почему могут не работать дневные и ночные вэйпойнты, находящиеся в разных локациях? Переменную на свойства модуля надо ставить? unsure.gif
Aiwan
QUOTE(shadowdweller @ Sep 9 2006, 02:31) [snapback]91376[/snapback]
ременную на свойства модуля надо ставить?

Вот эту... declare.gif
NSS
X2_SWITCH_CROSSAREA_WALKWAYPOINTS
Misty Archer
Лекс, на какую строку существа ставить энтот скрипт?
Lex
это всего лишь функция. У себя я ее использую, когда игрок трогает чужие вещи (ящики, двери). Проверяю этой функцией, видит ли игрока кто-нить или не видит, чтобы потом уже реакцию запускать.
Ellioth DarkMaider
Что нужно сделать чтоб можно было садиться на стул?
Если есть такая тема или кто то задавл такой вопрос дайте пожалуйста ссылку на ответ.
-fenix-
РАЗ, ДВА.

З.Ы. Поиск великая вещь. wink3.gif
shadowdweller
QUOTE
Ellioth DarkMaider
Что нужно сделать чтоб можно было садиться на стул?


У меня выглядит так. Делаешь стул юзабельным, и вот это OnUsed:
NSS
void main()
{

object oChair = OBJECT_SELF;
if(!GetIsObjectValid(GetSittingCreature(oChair)))
  {

    AssignCommand(GetLastUsedBy(), ActionSit(oChair));

  }

}


Только места перед стулом побольше оставь для маневра.
Ellioth DarkMaider
Пасибо... Теперь объясните куда это все писать crazy.gif
Lex
QUOTE(Ellioth DarkMaider @ Sep 13 2006, 07:30) [snapback]91579[/snapback]
Пасибо... Теперь объясните куда это все писать

Ты читай, что тебе пишут:
QUOTE(shadowdweller @ Sep 13 2006, 07:30) [snapback]91578[/snapback]
Делаешь стул юзабельным, и вот это OnUsed:

скрипт ставить на onUsed стула. Куда уж подробнее? smile.gif
Ellioth DarkMaider
Ну я как бы первый раз и пока что еще толком разобраться немогу... Но пытаюсь biggrin.gif
А вот если я делаю скамейку на... допустим на 5 мест как это зделать?
Vhall
QUOTE(Ellioth DarkMaider @ Sep 13 2006, 11:48) [snapback]91597[/snapback]
А вот если я делаю скамейку на... допустим на 5 мест как это зделать?

Один плейс - одно посадочное место. Как вариант - неюзабельная скамейка и 5 Invisible Object.
-fenix-
QUOTE(Ellioth DarkMaider @ Sep 13 2006, 11:48) [snapback]91597[/snapback]
А вот если я делаю скамейку на... допустим на 5 мест как это зделать?

Кажись в базе был такой скрипт и темка где-то кажись тоже была.
Ellioth DarkMaider
QUOTE(-fenix- @ Sep 13 2006, 11:08) [snapback]91607[/snapback]

Кажись в базе был такой скрипт и темка где-то кажись тоже была.



Хорошо. Поищу...
shadowdweller
А вообще-то, что нужно - чтобы игрок сидел или НПС?
Если НПС - делается скамейка. Потом на эту скамейку ставится 5 (или сколько их у тебя там) Invisible Objects. Им присваиваются теги (допустим, "SEAT_01", "SEAT_02" и далее по порядку). Скамейка - неюзабельная, а Invisible objects - как раз юзабельные. С скамейкой все.
Теперь у всех НПС, которые должн сидеть на ней, на OnSpawn ставится такой скрипт (Обрати внимание на последнюю строчку): shout.gif

/
NSS
::///////////////////////////////////////////////
//:: Name x2_def_spawn
//:: Copyright © 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Default On Spawn script


    2003-07-28: Georg Zoeller:

    If you set a ninteger on the creature named
    "X2_USERDEFINED_ONSPAWN_EVENTS"
    The creature will fire a pre and a post-spawn
    event on itself, depending on the value of that
    variable
    1 - Fire Userdefined Event 1510 (pre spawn)
    2 - Fire Userdefined Event 1511 (post spawn)
    3 - Fire both events

*/

//:://////////////////////////////////////////////
//:: Created By: Keith Warner, Georg Zoeller
//:: Created On: June 11/03
//:://////////////////////////////////////////////

const int EVENT_USER_DEFINED_PRESPAWN = 1510;
const int EVENT_USER_DEFINED_POSTSPAWN = 1511;


#include "x2_inc_switches"
void main()
{
    // User defined OnSpawn event requested?
    int nSpecEvent = GetLocalInt(OBJECT_SELF,"X2_USERDEFINED_ONSPAWN_EVENTS");

    // Pre Spawn Event requested
    if (nSpecEvent == 1  || nSpecEvent == 3  )
    {
    SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_PRESPAWN ));
    }

    /*  Fix for the new golems to reduce their number of attacks */

    int nNumber = GetLocalInt(OBJECT_SELF,CREATURE_VAR_NUMBER_OF_ATTACKS);
    if (nNumber >0 )
    {
        SetBaseAttackBonus(nNumber);
    }

    // Execute default OnSpawn script.
    ExecuteScript("nw_c2_default9", OBJECT_SELF);


    //Post Spawn event requeste
    if (nSpecEvent == 2 || nSpecEvent == 3)
    {
    SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN));
    }
ActionSit (GetNearestObjectByTag("ЗДЕСЬ_ТЭГ_ТВОЕГО_СТУЛА", OBJECT_SELF));

}


Это, кстати, родной скрипт из оригинальной кампании. Enjoy! rolleyes.gif
Артём
Для непися

NSS
void main()
{
     object oNPC = GetObjectByTag("тег непися")
     object oChair = GetObjectByTag("Тег стула")

     ActionMoveToObject(oChair);
     ActionSit(oChair);
}


А для игрока этот

NSS
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("А куда садитьсЯ? На руки, что ли?"));
        }
    }

}


Добавь на скамью пару невидимых объектов.
Артём
У меня вопрос?
Вот скрипт на заморозку непися
NSS
#include "x0_i0_anims"
//#include "x0_i0_walkway"
#include "x0_i0_treasure"

void main()
{


    SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT);
    SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT);
    SetSpawnInCondition(NW_FLAG_ATTACK_EVENT);
    SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT);
    SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT);
    SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT);
    SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT);

    SetListeningPatterns();

    effect eVis = EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION);
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, OBJECT_SELF);
    SetLocalInt(OBJECT_SELF, "X2_L_NUMBER_OF_ATTACKS", 2);


}

Кто даст скрипт на снятие этого эффекта? biggrin.gif
Dik Morris
Функция:

NSS
// Remove eEffect from oCreature.
// * No return value
void RemoveEffect(object oCreature, effect eEffect)


Удаляет эффекты.
Артём
А как это выглядит в скрипте мне надо чтобы при наступлении на триггер эффект снимался.
Dik Morris
Артем, вот тебе ссылка с уже готовой функцией, читать.

PS: думаю разберешся что к чему. wink3.gif
Артём
QUOTE(Dik Morris @ Sep 21 2006, 11:35) [snapback]92300[/snapback]

PS: думаю разберешся что к чему. wink3.gif

Уже целый час sad.gif пытаюсь может кто выложит сам скрипт? scratch_one-s_head.gif
Dik Morris
QUOTE
мне надо чтобы при наступлении на триггер эффект снимался.


При наступании кого ? NPC или игрока ? Т.к телепатией не владею, будем считать что игрока.

NSS
// onEnter;
void RemoveTypeEffect(object oCreature, int iType)
{
    effect eEffect = GetFirstEffect(oCreature);
    while(GetIsEffectValid(eEffect))
    {
    if (GetEffectType(eEffect) == iType)
      {
        RemoveEffect(oCreature, eEffect);
      }
        eEffect = GetNextEffect(oCreature);
    }
}

void main()
{
  object oNPC; // Наш NPC, иницилизируй;

  if (GetIsPC(GetEnteringObject()) == FALSE || GetIsObjectValid(oNPC) == FALSE)
    return;

  RemoveTypeEffect(oNPC, EFFECT_TYPE_VISUALEFFECT);
  DestroyObject(OBJECT_SELF, 1.0f);
  return;
}
Артём
Всё работает biggrin.gif
Спасибо.
-fenix-
Дик, ты так все визуальные эффекты снимешь с него, а не тока замедление. Если прочитать после поста Айвана пост Лекса, то можно увидеть несколько полезных функций, среди которых: E_DeleteSpecificEffect. С помощью нее можно удалить именно нужный эффект.

Вот пример:
QUOTE(Lex @ May 16 2006, 22:23) [snapback]81993[/snapback]
чтобы снять именно имун к слоу, юзай последнюю функцию.. примерно так:
NSS
E_DeleteSpecificEffect(GetFirstPC(),OBJECT_INVALID,EFFECT_TYPE_IMMUNITY,IMMUNITY_TYPE_SLOW,-1,TRUE);


Вот ПОСТ, все должно стать понятным.


Кстати, если эффект есть возможность снять в том же скрипте где он накладывается, то лучше вообще так:
NSS
RemoveEffect(OBJECT_SELF, eVis);
Артём
Это мне тоже пригодится. good.gif
Lex
-fenix-, небольшая поправка:
та функция (E_DeleteSpecificEffect) она конечно помогает разграничивать эффекты, отделяя нужные.. но вот в отношении визуалок не поможет, ибо у них нет подтипов.
Тут может помочь другое:
навешивание на визуалку скажем SupernaturalEffect + точное знание duration (instant, temporary, permanent). Тогда пользуясь все тем же набором функций, можно будет снять именно нужный визуальный эффект.
__
ЗЫ:
Только вот в том моем посте небольшая ошибка..
SubType это только магический, supernatural, extraordinary.
Так что
NSS
E_DeleteSpecificEffect(GetFirstPC(),OBJECT_INVALID,EFFECT_TYPE_IMMUNITY,IMMUNITY_TYPE_SLOW,-1,TRUE);

не сработает.


щас внесу туда поправки

Вариант такой:
наложение эффекта
NSS
...
effect eVis = ExtraordinaryEffect(EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION));
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, OBJECT_SELF);
...


снятие:
NSS
#include "inc_effects" // та моя библа из поста, на который ссылается феникс
void main()
{
object oNPC; // нужный НПС
E_DeleteSpecificEffect(oNPC,oNPC,EFFECT_TYPE_VISUALEFFECT,SUBTYPE_EXTRAORDINARY,
DURATION_TYPE_PERMANENT,TRUE);
// если не сработает, замени на
E_DeleteSpecificEffect(oNPC,OBJECT_INVALID,EFFECT_TYPE_VISUALEFFECT,SUBTYPE_EXTRAORDINARY, DURATION_TYPE_PERMANENT,TRUE);
// дело в том, что создатель эффекта не всегда нормально определяется
}


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

ЗЫ: На форуме полазил, ничего подобное не нашел.
Lex
стандартный спуск только 1: Ramp. Он находится в наборе единичных тайлов (не терраин и не групп которые smile.gif )
Адонтос
Спасибо! А про нестандартный не могли бы расказать? Тоесть можно ли в тулсет какие-нибудь функции графические добавить, с помощью чего-нибудь.
Lex
нестандартный это хак Hills с волта. Ищите последнюю версию, там есть как отдельные холмы так и спец. тайл, который накладывается на края возвышенностей, делая спуск широкий. Причем такой спуск стыкуется с другими спусками, которые могут быть рядом и под углом к нему.

это не новые функции, это новые тайлы, которые хак-пак добавляет.
Артём

Народ кто подскажет, есть ли русификатор для модулей НВН.
Lex
шо шо есть??? smile.gif)
Переводили и переводять модули ток 1 способом: открыванием через тулсет и правкой диалогов, описаний и названий.

можно конечно открыть модуль хекс редактором и запустить промт (так переводят пираты). Качество оставляет желать лучшего smile.gif да и накосячить может (переведешь случайно не текст, а команду какую-нить и будет краш)
Артём

Жако что все лучшие модули на английском языке ( ни считая Проклятия Левора ). sad.gif
А других способов нет?


Aiwan
QUOTE(Артём @ Sep 23 2006, 20:06) [snapback]92606[/snapback]
А других способов нет?

Заходим на Асталависту, отключаем фаервол. Скачиваем самый мощный кряк интернета и переводчик дат файлов с японского на китайский обратно и на русский. Запускаем в папке модулей, ждем пол часа и все. Готово. Жаль, что никто до этого не додумался раньше. Так бы весь валут перевели и засунули на сайт.

LEX: biggrin.gif biggrin.gif
Артём
А по подробней можно?
Если нетрудно. biggrin.gif
virusman
QUOTE(Aiwan @ Sep 23 2006, 22:56) [snapback]92624[/snapback]

Заходим на Асталависту, отключаем фаервол. Скачиваем самый мощный кряк интернета и переводчик дат файлов с японского на китайский обратно и на русский. Запускаем в папке модулей, ждем пол часа и все. Готово. Жаль, что никто до этого не додумался раньше. Так бы весь валут перевели и засунули на сайт.

lol.gif lol.gif
Адонтос
Столкнулся с такой проблемой: у меня 2 отдельных модуля, я хочу их совместить, всем локам дал разные теги. Но строку ResRef нельзя изменить и при импортировании локи заменяются. Что делать?
Lex
все локации скопируй (по одной, внутри модуля), при копировании поле рез-реф доступно, поэтому сделай их тоже уникальными (я обычно рефы делаю такие же, как тэги). После этого удали старые локации из модуля, а новые экспортируй.

____
на будущее совет: создавая локацию (как и любой другой предмет вообще говоря), указывай в ее названии тэг (латиницей. например A_VILLAGE_TOBO), тогда это пойдет в тэг сразу и в рез-реф. Указывая при создании русское имя, ты этого лишаешься: в тэг и реф идут значения по умолчанию. И потом вот такой геморой получается smile.gif
Адонтос
Понял. Спасибо.
Адонтос
Еще пара вопросов назрела:
1. Как сделать что бы НПС сел на стул ?
2. У меня в палитре есть например НПС, которого я в большом количестве расставил в модуле. Появилась необходимость поменять ему характеристики. Отредактировал его в палитре, сохранил и собственно вопрос- как теперь сделать что бы изменения в палитре применились к расставленым НПС?
Leon PRO
QUOTE
Еще пара вопросов назрела:
1. Как сделать что бы НПС сел на стул ?

Читаем эту тему. Ломает ? - Пользуемся поиском. Тема поднималась раз 50 !!!!!!!!!!!!!!!!!!!!!!!!!
-fenix-
QUOTE(Адонтос @ Sep 29 2006, 09:10) [snapback]93053[/snapback]
2. У меня в палитре есть например НПС, которого я в большом количестве расставил в модуле. Появилась необходимость поменять ему характеристики. Отредактировал его в палитре, сохранил и собственно вопрос- как теперь сделать что бы изменения в палитре применились к расставленым НПС?

Нажми в палитре на него правой кнопкой и там будет возможность обновить неписей во всем модуле или тока в этой локе.


И да:http://www.city-of-masters.ru/forums/index.php?showtopic=867, http://www.city-of-masters.ru/forums/index...?showtopic=1612
Адонтос
Спасибо
Aivs_velia_Ginsaver
Прошу простить за тупой вопрос. Знаю он задавался не раз, но мой поиск не увенчался успехом.
Прошу помочь.

Вопрос следующий - Как подключить CEP, да еще чтобы иметь возможность использовать его возможности?

Предполагаю, что есть отдельная тема. Если не сложно укажите путь.
Премного благодарен.
Aiwan
Странно, я все нашел сразу. Ссылка

QUOTE

********************************************************************************


ВОПРОС
Как пользоваться хаками?

ОТВЕТЫ

1) Кидай хак в папку haks.
2) В модуле в свойствах найди закладку, посвященную хакам (Custom Content).
3) Подключи нужный тебе хак и работай.
Aivs_velia_Ginsaver
Благодарю Aiwan. Но вопрос несколько другого рода. Проблема в том, что после подключения .hak-файлов,
1. отсутствуют дополнительные модели доспехов
2. добавленые существа не имеют шкурок (залиты единым белым цветом)
3. также как и некоторые размещаемые объекты
4. и т.д.
Может кто поскажет в чем проблема...

P.S. Имелись в виду оружие, доспехи, объекты добавляемые CEP'ом.
Lex
- проверь соответствие версии СЕР и версии НВН. Так как с каждым патчем 2дашки меняются, то СЕР тоже соотв. меняется.
- сер разбит на части, текстуры могут содержаться в каком-то стороннем хаке.. типа cep_textures

Dart_Vadder
Кстати, у меня та же проблема. На всякий случай скажу, что СЕР полный , а их версии с NWN совпадают.
helvene
QUOTE(Dart_Vadder @ Sep 29 2006, 14:56) [snapback]93081[/snapback]
Кстати, у меня та же проблема. На всякий случай скажу, что СЕР полный , а их версии с NWN совпадают.

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