Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > 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
Артём
В OnHeartbet/

NSS
//=============== СНЯТЬ ЭФФЕКТ =================================================
void DelOneEffectOnPC(object oObject, int iOne)
{
effect eEffect = GetFirstEffect(oObject);
while (GetIsEffectValid(eEffect))
{
  if (GetEffectType(eEffect) == iOne)
  RemoveEffect(oObject, eEffect);
  eEffect = GetNextEffect(oObject);
}
//  int iOne -  EFFECT_TYPE_...
}


А у меня глупый вопрос как сделать, чтобы после окончания диалога у непися при повторном разговоре поменялась строка с текстом?
gennady
QUOTE(Noah @ Jul 29 2006, 13:31) [snapback]88606[/snapback]
Привет! Вопрос такой куда или в какой слот npc ставить скрипт чтобы он все время спал?И как убрать эффект когда надо!

Noah, у меня есть такой скрипт для персов спящих ночью. Задай свои условия для сна, или просто сделай спящию красавицу.
NSS
//:://////////////////////////////////////////////////
//:: Created By: Gennady
//:: Created On: 12.02.2006
//:://////////////////////////////////////////////////
#include "nw_i0_generic"
//=============== СКРИПТ ДЛЯ СПЯЩИХ ==================
void main()
{
if(GetArea(GetFirstPC()) != GetArea(OBJECT_SELF)) return; // если ПС нет в локе
object oPC = OBJECT_SELF;
int T = GetTimeHour();
if(T>=7 && T<21) // день
SetLocalInt(oPC,"SLEEP",FALSE);
else            // ночь
SetLocalInt(oPC,"SLEEP",1);
if (GetLocalInt(oPC, "SLEEP") == 1 && !IsInConversation(oPC))
{
  AssignCommand(oPC, ClearAllActions(TRUE));
  AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 10.0));
  ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SLEEP), oPC);
}
else
  WalkWayPoints();
}
// Для корректной работы, у ходячих удалить скрипты  nw_c2_default9 и nw_c2_default2

Можешь использовать и другой подобный скрипт, но в обоих случаях персы откликаются на разговор. Оба скрипта ставятся на ХБ персов.
NSS
void main()
{
if(GetArea(GetFirstPC()) != GetArea(OBJECT_SELF)) return; // если ПС нет в локе
  if (!IsInConversation(OBJECT_SELF))
  {
    int T = GetTimeHour();
    if(T>=21 || T<6)
    {
    ActionPlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 10.0);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SLEEP), OBJECT_SELF);
    }
    else
    {
    if(Random(100) >= 50)
    ActionPlayAnimation(ANIMATION_FIREFORGET_DRINK);
    else
    {
      switch (Random(3)+1)
      {
      case 1:
      ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD);
      break;
      case 2:
      ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_BORED);
      break;
      case 3:
      if (GetGender(OBJECT_SELF)==GENDER_MALE)
      PlaySound("as_pl_laughingm2");
      else
      PlaySound("as_pl_laughingf2");
      ActionPlayAnimation(ANIMATION_LOOPING_TALK_LAUGHING, 1.0, 4.0);
      break;
      }
    }
    }
  }
}
Артём
Кто сможет выложить скрипт атаки непися при наступлении на триггер?
Я пребывал этот скрипт

[/nss]#include "NW_I0_GENERIC"
void main()
{

object oNPC = GetObjectByTag("NPC_01");

DelayCommand(1.0, AssignCommand(oNPC, SetIsTemporaryEnemy(GetPCSpeaker())));
DelayCommand(1.0, AssignCommand(oNPC, DetermineCombatRound()));
}
Ошибку навыдает но и непашет. Может, кто исправит или другой выложит?

И ещё один вопрос.
Как сделать чтобы после окончания диалога у непися при повторном разговоре поменялась строка с текстом?
Milfes
QUOTE
Кто сможет выложить скрипт атаки непися при наступлении на триггер?



Вот, ставится на onEnter тригера.
NSS
void main()
{

object oNPC = GetObjectByTag("NPC_01");
object oPC = GetEnteringObject();

DelayCommand(1.0, AssignCommand(oNPC, ActionAttack(oPC)));
}


QUOTE
Как сделать чтобы после окончания диалога у непися при повторном разговоре поменялась строка с текстом?


В условие появления первой ветки разговора пишеш скрипт

NSS
int StartingConditional()
{
  object oPC = GetPCSpeaker();
  object oNPC = OBJECT_SELF;
  int iResult = GetLocalInt(oNPC, "PER");

  if (iResult == 0)
      return TRUE;

  return FALSE;
}


А в совершаемых действиях

NSS
void main()
{
  object oNPC = OBJECT_SELF;
  SetLocalInt(oNPC, "PER", 1);
}


И после первого разговора появиться второй.


gennady
QUOTE(Артём @ Jul 29 2006, 23:11) [snapback]88636[/snapback]
А у меня глупый вопрос как сделать, чтобы после окончания диалога у непися при повторном разговоре поменялась строка с текстом?

На действие:
NSS
void main()
{
SetLocalInt(GetPCSpeaker(),"D1_"+GetTag(OBJECT_SELF),1);
// присвоить переменную
}

На проверку:
NSS
int StartingConditional()
{
    if(!(GetLocalInt(GetPCSpeaker(), "D1_"+GetTag(OBJECT_SELF)) == 1))
    return FALSE;
    return TRUE;
}
// Проверить местные переменные

Скрипт универсальный, привязан к тэгу перса. Если тэги тоже уникальные, то не нужно писать новые скрипты, и выдумывать переменные. Напишите несколько пар подобных скриптов, меняя номер диалога D2, D3, D4 ... и используйте в построении диалогов.
Mandrake
NSS
void main()
{

object oPC = GetEnteringObject();

if (!GetIsPC(oPC)) return;
//...........День............
if((GetIsDay())== TRUE)
{

SetEncounterActive(FALSE, OBJECT_SELF);

}

//...............Ночь.............
/*
if((GetIsDay())== FALSE)
{
if((GetEncounterActive(OBJECT_SELF))== FALSE)
{
SetEncounterActive(TRUE, OBJECT_SELF);
}
}
*/

}


Объект триггер стандартного тулсетовского респавна. Задачей ставил себе сделать так, чтобы ночью он был активен, а днем нет(хотел восоздать бандитов появляющихся ночью на дорогах и в городе). Вроде по логике(моей biggrin.gif ) вещей все делал правильно, но как всегда не работает vava.gif

Помогите пожалуйста найти правильное решение scratch_one-s_head.gif
Waromon
Astoret

Чтобы добавить новый предмет (именной новый) нужно как я понимаю править 2DA файл baseitems.2DA, а чтобы включить новую картинку для предмета, то ищем через NWN Explorer: data/textures_01.bif, там находим нужный тип предмета, (скажем iit_neck_*)
смотрим последний предмет из данного списка (у меня это iit_neck_026) далее, сохраняем рисунок в TGA и называем например iit_neck_027, (Но ИМХО, лучше указать число побольше, 050 к примеру) включаем в хак/кидаем в оввериде .

Вроде так это делается. smile.gif

Noah

Существует эвент – onSpawn, значит туда и нужно прописывать скрипт.
QUOTE
The script attached to this event fires when the creature is first spawned and allows you to specify the default behaviors for the creature (i.e. does the creature flee when attacked, walk a set of waypoints, etc).

QUOTE
Rus.
Событие OnSpawn происходит, когда чудовище первый раз появляется на местности.


Артем

Вообще, лучше сделать так:

NSS
#include "NW_I0_GENERIC"
void main()
{
string sNAME = GetName(OBJECT_SELF); /* В поле NAME триггера укажи таг НПС */
object oPlayer = GetEnteringObject();
object oNPC = GetNearestObjectByTag(sNAME);

if (!GetIsPC(oPlayer))return;
if (GetLocalInt(OBJECT_SELF, "Enter_player")==1)return;

SetLocalInt(OBJECT_SELF, "Enter_player",1);

if (GetIsEnemy(oPlayer, oNPC) == FALSE)
SetIsTemporaryEnemy(oPlayer, oNPC);

AssignCommand(oNPC, ClearAllActions(TRUE));
AssignCommand(oNPC, ActionAttack(oPlayer));
}


Почему именно так ? Да потому что, такой скрипт универсален и не нужно будет если у тебя скажем 10 таких NPC, для каждого из них писать свой скрипт. smile.gif

По поводу работы локальных переменных, думаю подойдет ЭТА статья, по крайней мере после ее прочтения я разобрался. smile.gif

gennady

Гм... А зачем ети заморочки с тагами ?
Можно ведь делать просто:

NSS
void main()
{
  SetLocalInt(OBJECT_SELF, "Remember", 1);
}


Потом проверять переменную... По идее эффект то тот-же, но скрипт проще. smile.gif)))

QUOTE(gennady @ Jul 30 2006, 07:43) [snapback]88659[/snapback]

Можешь использовать и другой подобный скрипт, но в обоих случаях персы откликаются на разговор. О


Ведь эвент onConversation - отвечает за разговор ? Значит просто нужно чистить акции NPC.

Mandrake

Использовал поиск и нашел много интересной инфы,

http://www.city-of-masters.ru/forums/index...EncounterActive


З.Ы: забыл сказать... Я еще новичок и очень многово не знаю... Но все что ответил - уже проверено и работает, у меня по крайней мере. smile.gif
gennady
QUOTE(Mandrake @ Jul 31 2006, 11:54) [snapback]88728[/snapback]
Объект триггер стандартного тулсетовского респавна. Задачей ставил себе сделать так, чтобы ночью он был активен, а днем нет(хотел восоздать бандитов появляющихся ночью на дорогах и в городе). Вроде по логике(моей ) вещей все делал правильно, но как всегда не работает

Скрипты на энкаучере не работают. Когда триггер заряжается, то к нему вообще не достучатся. Ставь скрипт управления на ХБ локи.
NSS
void main()
{
if(GetIsDay())
SetEncounterActive(FALSE, GetObjectByTag("BANDIT"));
else
SetEncounterActive(TRUE, GetObjectByTag("BANDIT"));
}
Aiwan
Енкаучер должен быть НЕАКТИВНЫМ и СИНГ-ШОТ. Если непонятно что это, читай мой мануал. Скрипт на OnEnter. Сработает ТОЛЬКО ночью.
NSS
//:://////////////////////////////////////////////
//:: OnEnter  am_een_day_night
//:: Copyright © 2006 WRG!
//:://////////////////////////////////////////////
/*
  Включает енкаучер, если ночь.
  float "TIME" - время срабатывания енкаучера
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 31.07.2006
//:://////////////////////////////////////////////
void main()
{
  object oPC = GetEnteringObject();
  object oEnc = OBJECT_SELF;
  object oArea = GetArea(OBJECT_SELF);
  float f = GetLocalFloat(oEnc, "TIME"); // Время задержки енкаучера

  if(!GetIsPC(oPC)) return;
  if(GetLocalInt(oEnc, "FIGHT!")) return; // Енкаучер сработал

  if((GetIsDay() || GetIsDawn() || GetIsDusk()) && GetEncounterActive(oEnc)==TRUE)
  {
    SetEncounterActive(FALSE);
    return;
  }
    else if(GetIsNight() && GetEncounterActive(oEnc) == FALSE)
    {
        if (f == 0.0) f = 600.0; // 10 минут, стандартный респавн
        SetEncounterActive(TRUE);
        DelayCommand(1.0, SetEncounterActive(FALSE, oEnc));
        SetLocalInt(oEnc, "FIGHT!", TRUE); // Энкаучер сработал один раз
        // Тут самое интересное. Неактивный енкаучер DelayCommand не исполняет
        // поэтому я попросил это сделать локацию, в котором он стоит. Она вроде
        // как не против...
        AssignCommand(oArea, DelayCommand(f, SetLocalInt(oEnc, "FIGHT!", FALSE)));
    }
}
Mandrake
Aiwan, большое спасибо. Разобрался наконец.

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

1. у меня есть скрипт, что в статую бьёт молния, можно ли добавить, что бы она разрушалась или хотя бы проподала после этого;

2. можно ли сделать затемнение на части локации(но не заклинанием).
Waromon
Mandrake

Не подскажу, не дорос пока. smile.gif)

Milfes

1. Тут вариантов тьма, можно DestroyObject, можно применить эффект смерти, еще чего нить...
2. Хм... То есть затемнение...? Точно знаю, что эффектом это реально сделать... (Спелл темнота smile.gif) а так, можно попробовать сменить освещение у тайла. Сойдет ? smile.gif

CODE
void SetTileSourceLightColor(
    location lTileLocation,
    int nSourceLight1Color,
    int nSourceLight2Color
);

Parameters
lTileLocation

The location of the tile to change the light color.

nSourceLight1Color

TILE_SOURCE_LIGHT_COLOR_*

nSourceLight2Color

TILE_SOURCE_LIGHT_COLOR_*

Description
Set the source light color on the tile located at lTileLocation.
Noah
QUOTE(Milfes @ Jul 31 2006, 16:51) [snapback]88747[/snapback]

У меня есть два вопроса:

1. у меня есть скрипт, что в статую бьёт молния, можно ли добавить, что бы она разрушалась или хотя бы проподала после этого;

2. можно ли сделать затемнение на части локации(но не заклинанием).

1.Не проблема.Добавляешь desтrоy оbjест.2.Тоже не беда,добавляешь Visual(vfx_dur_blokout) своему петру и всё
Milfes
Извините пожалуйсто, что неверно обьяснил.
Я имел ввиду, что эффект должен быть такой же как отз аклинания шар тьмы(если не ошибаюсь), но без наложения самого заклинания.

Noah и Waromon, ваши функции затемняют вся локацию, а мне надо что бы небольшой участок.
Waromon
Спелл, не обязательно накладывать, можно наложить визуальный эффект. (константа - VFX_DUR_BLACKOUT )


Млин!!! Попробовал наложить эффект темноты (EffectDarkness() ну и VFX_DUR_BLACKOUT еще) на плейс... Нифига! Походу они тока к игроку применимы. pleasantry.gif
Milfes
А как заставить человека наложить заклинание на другое существо?

И какая анимация подойдёт, что бы человек молился.
kreon
1.
NSS
// This action casts a spell at oTarget.
// - nSpell: SPELL_*
// - oTarget: Target for the spell
// - nMetamagic: METAMAGIC_*
// - bCheat: If this is TRUE, then the executor of the action doesn't have to be
//  able to cast the spell.
// - nDomainLevel: TBD - SS
// - nProjectilePathType: PROJECTILE_PATH_TYPE_*
// - bInstantSpell: If this is TRUE, the spell is cast immediately. This allows
//  the end-user to simulate a high-level magic-user having lots of advance
//  warning of impending trouble
void ActionCastSpellAtObject(int nSpell, object oTarget, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nDomainLevel=0, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE)

2.
NSS
ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP)
Milfes
kreon, мне надо что бы, когда игрок вставал на тригер, какой-то человек применял заклинание к другому человеку.
kreon
Человек - PC? Если не PC, то так и говори - непись (NPC, Non Player Character)
на onEnter триггера:
NSS
void main()
{
    object oCaster = GetObjectByTag("npc_caster"); // тег нпц-кастера
    object oTarget = GetObjectByTag("npc_target"); // тег нпц-обьекта каста
    if(!GetCommandable(oCaster))  SetCommandable(TRUE, oCaster); // если триггер уже активировался - открываем стек
    AssignCommand(oCaster, ActionCastSpellAtObject(SPELL_FINGER_OF_DEATH, oTarget, METAMAGIC_ANY, TRUE)); // кастуем Палец Смерти (для примера)
    SetCommandable(FALSE, oCaster); // закрываем стек (чтоб скастовал)
}
Milfes
Огромное спасибо! И извините, что не сразу всй понятно объяснил, что ине надо.
Milfes
Объясните пожалуйсто почему не работает:

NSS
TakeGoldFromCreature(100,GetFirstPC(),TRUE);


Не выкидывает золото игрок никак. Я может не ту функцию использую?
Waromon
Эта функция, берет нужное количество золота у обжекта. Кстати, нужно включить проверку - есть ли у игрока нужная сумма,

NSS
void main()
{
if (GetGold(GetFirstPC()) >= 100)
    {
    TakeGoldFromCreature(100, GetFirstPC(), TRUE);
    }
}


З.Ы:
QUOTE
Не выкидывает золото игрок никак. Я может не ту функцию использую?


ИМХО золото выложить вроде никак (?) не получится, вот айтемы можно.
dumbo
не игнорируем лексикон:
QUOTE

Description
Take nAmount of gold from oCreatureToTakeFrom.

The taker needs to be a non-area and non-module for it to work correctly. It can be the creature passed into oCreatureToTakeFrom, of course.

Remarks
Although the default value for bDestroy is FALSE the most common usage is TRUE. In fact, Bioware has created a function TakeGold (in NW_I0_TOOL) that takes the same parameters except defaults bDestroy to TRUE (and subsequently calls this function).

This function will fail if called from an area or module event (like an area's OnEnter). However, it works on triggers, so you can just paint a trigger around the arrival area to get the same effect.


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

более универсальный метод изъятия, работающий везде:
NSS
object oPC = GetFirstPC();
AssignCommand(oPC, TakeGoldFromCreature(100, oPC, TRUE));


ps. wizard.gif
Milfes
Спасибо, лексикон не игнорирую, но с английским туго, а переводчик плохо переводит(не всё понятно).

[=!DoHeJI!=]
biggrin.gif ! Привет всем thank_you.gif ! Я хотел бы научитьсЯ строить модули! в скриптах Я ваще не понимаю мнеб учебник какойнить! Я проходил Ночи(раз 5) и Андердарк(1.5 раз)! знаю почти ни чего в тулсете! только копировать скрипты умею scratch_one-s_head.gif ! знаю что такое тэг, нпс, перс, точка маршрута, триггер и мож ещё чё! могу легкие вещи делать типа: инвентарь тама чёнить пихнуть, хар-ки настроить закл-иЯ, ну вообщем довольно простые вещи! Научите ! !!!<b>Заполните пустое crazy.gif полным и тогда оно станет полезным rolleyes.gif длЯ всех!!!!</b>

Сам на bb.gif хожу, а в нвн Я swoon.gif !
В заранее сеньк!
Milfes
Вот посмотри эту тему.
[=!DoHeJI!=]
Неправильная версия файла была найдена на вашей системе.
Обновление было неспособно закончить, так как содержание файла было неправильно.
Ночи C:\Games\NeverWinter и Орды Underdark\dialog.tlk
Размер Файла: 20793590
Контрольная сумма Файла: 8230e93a9aff1f47e6507ee2fa6643a9
Доберитесь критические восстанавливают.
http://nwn.bioware.com/support/patch_english_hotu.html#crit
Участок был прерван

В чём дело? я обновлял через упдейт!
Хелп!
Olare
QUOTE
' date='Aug 12 2006, 02:13' post='89475']
Неправильная версия файла была найдена на вашей системе.
Обновление было неспособно закончить, так как содержание файла было неправильно.
Ночи C:\Games\NeverWinter и Орды Underdark\dialog.tlk
Размер Файла: 20793590
Контрольная сумма Файла: 8230e93a9aff1f47e6507ee2fa6643a9
Доберитесь критические восстанавливают.
http://nwn.bioware.com/support/patch_english_hotu.html#crit
Участок был прерван

В чём дело? я обновлял через упдейт!
Хелп!

МенRй контрольную сумму файла с помощью критического патча.
Просто из любопытства: NeverWinter и Орды Underdark - это ты папку сам так назвал или она заинсталлилась такаЯ?
[=!DoHeJI!=]
QUOTE(Olare @ Aug 12 2006, 04:36) [snapback]89477[/snapback]

МенRй контрольную сумму файла с помощью критического патча.
Просто из любопытства: NeverWinter и Орды Underdark - это ты папку сам так назвал или она заинсталлилась такаЯ?


Неа это X-Translator Revolutionтак говорит, переводчик короче!
Я новичёк так что Я не знаю что за контрольнаЯ сумма!
Блин ипанный update 76 метров патча после неудачи взЯл и стёр!
Вот отстой а! Я парилсЯ его качать блин, не бесплатно ведь! swoon.gif shout.gif
У тебя аська есть? а то на форуме не поговоришь особо!
Olare
QUOTE
' date='Aug 12 2006, 03:13' post='89479']
Неа это X-Translator Revolutionтак говорит, переводчик короче!
Я новичёк так что Я не знаю что за контрольнаЯ сумма!
Блин ипанный update 76 метров патча после неудачи взЯл и стёр!
Вот отстой а! Я парилсЯ его качать блин, не бесплатно ведь! :swoon: :shout:
У тебя аська есть? а то на форуме не поговоришь особо!

У менЯ есть миранда, аськи нету :(.
А патч лучше качать не апдейтером а руками, диалог.тлк тебе нужен оригинальный видимо. Поищи в интернете.
Milfes
Как через скрипты у обьектов менять свойство первичное состояние(активирован,деактевирован)?
Zirrex
Milfes, ставишь на OnUsed объекта, к примеру, такой скрипт:

NSS
void main()
{
    int nActive = GetLocalInt(OBJECT_SELF, "ACTIVATEDSTATE");

    if (!nActive)
    {
        ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
    }
    else
    {
        ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
    }
    SetLocalInt(OBJECT_SELF, "ACTIVATEDSTATE", !nActive);
}

Вариаций много, можно менять, когда выходишь с триггера, обрабатывая в скрипте соответствующий объект, можно менять, когда входишь на локацию, и т.п. (на OnEnter локации). Но сам принцип переключателя такой.

Да, чуть не забыл, подобный скрипт есть у факела, который висит на шесте. Если в его свойствах его сделать используемым, то при нажатии на него, как раз он активируется и деактивируется. Правда, там скрипт несколько иного типа, так как еще и эффект накладывается, но принцип тот же.
Milfes
Спасибо, как раз то что мне нужно. thank_you.gif
Angelelf
Вопрос.Можно ли в тулсете заставить NPc спать по ночам?
helvene
Можно.
Учите скрипты.
Или - идите в соответствующую тему, кажется, там пример подобного скрипта даже был.
Angelelf
подскажите как сделать скрипт чтоб NPc по ночам заходил домой и делал вид что он спит?
helvene
Молодой человек, учитесь внимательно читать чужие сообщения и пользоваться поиском по форуму. Вам сказали про тему с примерами скриптов, где вполне может быть описание нужного вам, и вовсе не рекомендовали открывать еще одну тему и задавать вопрос в ней.

А еще крайне рекомендуется прочитать правила форума.
Waromon
2 Angelelf

Если таких НПЦ много то лучше писать скрипт на OnUserDefined локи, но а так:

NSS
// OnUserDefined, Непися

void main()
{
  int nUser = GetUserDefinedEventNumber();

  if(nUser == 1001) //HEARTBEAT
  {
  if (GetIsDay() || GetIsDawn() && !GetLocalInt(OBJECT_SELF, "day"))
  {
  SetLocalInt(OBJECT_SELF, "day", 1);
  SetLocalInt(OBJECT_SELF, "night", 0);

  ClearAllActions();
  ActionForceMoveToLocation(GetLocation(GetObjectByTag("ТАГ_ДНЕВНОЙ_ТОЧКИ")), FALSE);
  ActionDoCommand(SetCommandable(TRUE));
  DelayCommand(0.3, SetCommandable(FALSE));
  }
  else if (GetIsNight() && !GetLocalInt(OBJECT_SELF, "night"))
  {
  SetLocalInt(OBJECT_SELF, "day", 0);
  SetLocalInt(OBJECT_SELF, "night", 1);

  ClearAllActions();
  ActionForceMoveToLocation(GetLocation(GetObjectByTag("ТАГ_НОЧНОЙ_ТОЧКИ")), FALSE);
  ActionDoCommand(SetCommandable(TRUE));
  DelayCommand(0.3, SetCommandable(FALSE));
  }
  }
}


З.Ы: в эвенте onSpawn, расскомментируй 239 строку. (SetSpawn...(NW_FLAG_HEARTBEAT…)

Артём
У меня вопрос, почему при создании мода в версии Kingmaker камера работает так.

Он должен работать так.
DelayCommand(2.0, AssignCommand(oPC, SetCameraFacing(180.0, 13.0, 50.0, CAMERA_TRANSITION_TYPE_SNAP)));
А работает так.
DelayCommand(2.0, AssignCommand(oPC, SetCameraFacing(180.0, ??.?, ??.?, CAMERA_TRANSITION_TYPE_SNAP)));
Lex
А какой там режим камеры? В некоторых режимах недопустимы определенные значения Дистанции и Наклона.
Артём
Я пребывал все, но камера не наклоняема.
Но на орде андердака этого глюка нет.

Кто подскажет, куда надо ставит скрипт, чтобы он сработал после смерти непися?
Milfes
На OnDeath NPC.
Артём
Я уже пребывал, но у меня скрипт напашет.
Наверное, у меня глюченоя версия игры.
Waromon
QUOTE(Артём @ Aug 18 2006, 13:24) [snapback]89868[/snapback]

Я уже пребывал, но у меня скрипт напашет.
Наверное, у меня глюченоя версия игры.


Мдя, а запостить скрипт то не судьба ??? swoon.gif


2 helvene, во-во я о том же. biggrin.gif
helvene
QUOTE(Артём @ Aug 18 2006, 14:24) [snapback]89868[/snapback]
Наверное, у меня глюченоя версия игры.

Куда вероятнее то, что у вас глючные скрипты.
Артём
NSS
void main()
{
object oPC = GetEnteringObject();
object oNPC = GetObjectByTag("NPC_03");
object oWP1 = GetWaypointByTag("WP_SC02_03");
object oWP2 = GetWaypointByTag("WP_SC02_04");
object oWP3 = GetWaypointByTag("WP_SC02_05");
                      ///////////
if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "TRIGGER") == 1)
    return;
    SetCutsceneMode(oPC);
    SetLocalInt(OBJECT_SELF, "TRIGGER", 1);
                    ///////////

  DelayCommand(0.5, AssignCommand(oPC, SetCameraFacing(180.0, 13.0, 50.0, CAMERA_TRANSITION_TYPE_SNAP)));
  DelayCommand(6.5, AssignCommand(oPC, SetCameraFacing(130.0, 20.0, 20.0, CAMERA_TRANSITION_TYPE_SLOW)));
  DelayCommand(8.5, AssignCommand(oPC, SetCameraFacing(120.0, 10.0, 40.0, CAMERA_TRANSITION_TYPE_MEDIUM)));
  DelayCommand(13.5, AssignCommand(oPC, SetCameraFacing(130.0, 60.0, 50.0, CAMERA_TRANSITION_TYPE_SLOW)));
  FadeToBlack(oPC, FADE_SPEED_FASTEST);
  DelayCommand(9.0,AssignCommand(oNPC,PlaySound("vs_nlusgrm2_say")));
  DelayCommand(2.0, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));
  DelayCommand(4.5, AssignCommand(oNPC, ActionForceMoveToObject(oWP1, TRUE, 1.0, 35.0)));
  DelayCommand(2.0, AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_BORED , 0.6, 7.0)));
  DelayCommand(9.0, AssignCommand(oPC, SetFacingPoint(GetPosition(oNPC))));
  DelayCommand(12.0, AssignCommand(oPC, SpeakString("Уже иду…!")));
  DelayCommand(9.0, AssignCommand(oNPC, SpeakString("Зайди ко мне… Мне надо тебе что-то сказать!")));
  DelayCommand(13.5, AssignCommand(oNPC, ActionMoveToObject(oWP2)));
  DelayCommand(14.0, AssignCommand(oNPC, ActionJumpToObject(oWP3)));
  DelayCommand(15.0, AssignCommand(oNPC, ActionDoCommand(SetCutsceneMode(oPC, FALSE))));

}

Найди ошибку если она есть?
Milfes
Артём, а в чём проблема? У меня всё работает. И вообще к чему ты спрашивал о скрипте, который должен сработать после смерти непися.
Артём
Этот скрипт идёт в начале игры.
На моей версии камеры поворачиваются только по одной оси.

А насчёт смерти это там другой скрипт стоит.
Aiwan
QUOTE(Артём @ Aug 18 2006, 21:43) [snapback]89912[/snapback]
Найди ошибку если она есть?

Ошибка была при зачатии.


Открой поисковик или мой мануал. На вход в игру нельзя ставить ролик. Ставь его на триггер или на задержку. Игре надо пару секунд что бы все процессы запустить и камера пока не управляема.
Артём
Увы, скрипт стоит на триггере.

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