Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )


Ilharess
Отправлено: Nov 24 2004, 12:40


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


Спаунер/анспаунер для гвардов (Утром открывается дверь и появляется гвард идет на свой пост или свои вэйпы, несет службу весь день или ночь, когда приходит время идет обратно к двери если у него есть ключ то открывает ее, если нет то стучит и ему открывают, можно использовать и для спауна и обычных нпсов, если не много изменить :D ).
В вараблах двери создаем переменные
DAYTIMEGUARD string “resref npc”, если гвард не нужен то ""
NIGHTTIMEGUARD string “resref npc”, если гвард не нужен то ""
GATESGUARD string “resref npc”, если гвард не нужен то ""
На onhb двери вешаем :
Neverwinter Script Source
/*
  door_guardspaw_5
  Spawner for guards.
*/

//#include "kv_tools"
void main()
{
//--
string sDaytimeGuard = "MOB_DAYTIMEGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF)));
object oDaytimeGuard = GetObjectByTag(sDaytimeGuard);
//--
string sNighttimeGuard = "MOB_NIGHTTIME" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF)));
object oNighttimeGuard = GetObjectByTag(sNighttimeGuard);
//--
string sGatesGuard = "MOB_GATESGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF)));
object oGatesGuard = GetObjectByTag(sGatesGuard);
//--Spawn day guard--//
if ( GetIsDay() && !GetIsObjectValid(oDaytimeGuard) && GetLocalString(OBJECT_SELF, "DAYTIMEGUARD") != "")

   {
     ActionOpenDoor(OBJECT_SELF);
     object oNewGuard = CreateObject(OBJECT_TYPE_CREATURE, GetLocalString(OBJECT_SELF, "DAYTIMEGUARD"), GetLocation(OBJECT_SELF), 0, sDaytimeGuard);

      /* if (GetIsObjectValid(oNewGuard))
         {
          DebugMessage(GetTag(OBJECT_SELF) + ": Guard " + sDaytimeGuard + " spawned sucsesfull");
         }*/

//--Spawn Night Guard--//
   }  else if ( GetIsNight() && !GetIsObjectValid(oNighttimeGuard) && GetLocalString(OBJECT_SELF, "NIGHTTIMEGUARD") != "")
             {
               ActionOpenDoor(OBJECT_SELF);
               object oNewGuard = CreateObject(OBJECT_TYPE_CREATURE, GetLocalString(OBJECT_SELF, "NIGHTTIMEGUARD"), GetLocation(OBJECT_SELF), 0, sNighttimeGuard);

              /*   if (GetIsObjectValid(oNewGuard))
                   {
                    DebugMessage(GetTag(OBJECT_SELF) + ": Guard " + sNighttimeGuard + " spawned sucsesfull");
                   }*/

//--Spawn Gate Guard--//
             } else if ( GetIsDusk() && !GetIsObjectValid(oGatesGuard) && GetLocalString(OBJECT_SELF, "GATESGUARD") != "")
                     {
                      ActionOpenDoor(OBJECT_SELF);
                      object oNewGuard = CreateObject(OBJECT_TYPE_CREATURE, GetLocalString(OBJECT_SELF, "GATESGUARD"), GetLocation(OBJECT_SELF), 0, sGatesGuard);
                   /*if (GetIsObjectValid(oNewGuard))
                       {
                        DebugMessage(GetTag(OBJECT_SELF) + ": Guard " + sGatesGuard + " spawned sucsesfull");
                       }*/

                     }
//--
if (GetIsNight() && GetIsObjectValid(oDaytimeGuard))
{
   SignalEvent(oDaytimeGuard,  EventUserDefined(111));//TIME TO GO HOME:)
   SetLocalObject(GetArea(OBJECT_SELF), "THE_DOOR", OBJECT_SELF);
}
else if (GetIsDay() && GetIsObjectValid(oNighttimeGuard))
       {
        SignalEvent(oNighttimeGuard,  EventUserDefined(111));//TIME TO GO HOME:)
        SetLocalObject(GetArea(OBJECT_SELF), "THE_DOOR", OBJECT_SELF);
       }
       else if (GetIsDawn() && GetIsObjectValid(oGatesGuard))
             {
              SignalEvent(oGatesGuard,  EventUserDefined(111));//TIME TO GO HOME:)
              SetLocalObject(GetArea(OBJECT_SELF), "THE_DOOR", OBJECT_SELF);
             }
}


На onopen
Neverwinter Script Source
/*
door_guardspaw_8
Spawner for guards.
*/


void main()
{

DelayCommand(5.0, ActionCloseDoor(OBJECT_SELF));
SetLocked(OBJECT_SELF, TRUE);
//--
object oClicker = GetLastOpenedBy();
if ( GetIsPC(oClicker)) return;
//--
string sDaytimeGuard = "MOB_DAYTIMEGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF)));
//--
string sNighttimeGuard = "MOB_NIGHTTIME" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF)));
//--
string sGatesGuard = "MOB_GATESGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF)));
//--
if (GetTag(oClicker) == sDaytimeGuard || GetTag(oClicker) == sNighttimeGuard || GetTag(oClicker) == sGatesGuard)
   {
     DelayCommand(1.0, DestroyObject(oClicker));
   }

}



На onfailtoopen
Neverwinter Script Source
/*
door_guardspaw_4
Spawner for guards.
*/


void main()
{
//--
object oClicker = GetClickingObject();
if (GetIsPC(oClicker)) return;
//--
string sDaytimeGuard = "MOB_DAYTIMEGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF)));
//--
string sNighttimeGuard = "MOB_NIGHTTIME" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF)));
//--
string sGatesGuard = "MOB_GATESGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF)));
//--
if (GetTag(oClicker) == sDaytimeGuard || GetTag(oClicker) == sNighttimeGuard || GetTag(oClicker) == sGatesGuard)
   {

     AssignCommand(oClicker, SpeakString("*Ñòó÷èò â äâåðü*"));
     DelayCommand(1.0, ActionOpenDoor(OBJECT_SELF));
     DelayCommand(1.5, DestroyObject(oClicker));

   }

}


В userdef нпса добавлете:
Neverwinter Script Source
//--стандартный ondef код--//
............................................
else if (nUser == 111//TIME TO GO HOME:)
    {

      if ( !GetIsInCombat() || GetCurrentAction() != ACTION_DIALOGOBJECT)
        {
          ClearAllActions();
          ActionMoveToObject(GetLocalObject(GetArea(OBJECT_SELF), "THE_DOOR"));
          ActionOpenDoor(GetLocalObject(GetArea(OBJECT_SELF), "THE_DOOR"));
        }
    }


ЗЫ мой первый нвн скрипт так что если это тупо не смейтесь:)
Чуть не забыл:) Дверь должна иметь тэг DOOR_7 символов (индификатор спаунера)
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16487 · Ответов: 111 · Просмотров: 457,368

Ilharess
Отправлено: Nov 24 2004, 11:02


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


Я выделил в коде то что у меня не работало...
PS Сигнал должен посылаться тому объекту у где предпологается обрабатывать event. Всем спасибо, разобрался сам :DB:
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16479 · Ответов: 5109 · Просмотров: 854,660

Ilharess
Отправлено: Nov 23 2004, 21:07


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


У меня то же самое, только вместо объекта нпс, объект модуль. Сигнал посылается другим объектом это имеет значение?
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16446 · Ответов: 5109 · Просмотров: 854,660

Ilharess
Отправлено: Nov 23 2004, 17:54


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


Помогите ламеру:(
на онхб двери у меня
//--
if ( GetIsDawn() && GetIsObjectValid(oGatesGuard))
{
SignalEvent(GetModule() , EventUserDefined(111));
}
в userdef нпса
....
else if (nUser == 111)
{
SpeakString("Event 111");
}
B ни чего не происходит:(
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16413 · Ответов: 5109 · Просмотров: 854,660

Важно! Скрипты
Ilharess
Отправлено: Nov 21 2004, 00:09


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


AssignCommand(oDoor, ActionCloseDoor(oDoor)); не нужно связывать она и так закроется ActionCloseDoor(oDoor)); :lol:
Добавлено в [mergetime]1100985220[/mergetime]
Хотел сделать проверку на каст спела в арии, и вот что пришло в голову.. можно ли так или есть лучше способы?
На онхб арии
CODE

object oLastSpellCaster = SetLocalObject(GetModule(), GetName(GetLastSpellCaster()), GetLastSpellCaster());

А у нпс на onPerception
CODE

if (GetLastPerceived() == oLastSpellCaster)
{
 if (GetLastPerceptionSeen())
              {
              действия нпс

И где про NW_FLAG.. посмотреть можно?
И еще:) если на пути нпса попадается закрытая дверь, то он пытается сломать ее, можно ли сделать что бы он сначала пробывал открывать ее (хочу что бы работал onfailtoopen) или это уже ядро?
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16288 · Ответов: 3670 · Просмотров: 702,450

Ilharess
Отправлено: Nov 20 2004, 17:35


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


Хотел сделать проверку на каст спела в арии, и вот что пришло в голову.. можно ли так или есть лучше способы?
На онхб арии
CODE

object oLastSpellCaster = SetLocalObject(GetModule(), GetName(GetLastSpellCaster()), GetLastSpellCaster());

А у нпс на onPerception
CODE

if (GetLastPerceived() == oLastSpellCaster)
{
 if (GetLastPerceptionSeen())
              {
              действия нпс

И где про NW_FLAG.. посмотреть можно?
И еще:) если на пути нпса попадается закрытая дверь, то он пытается сломать ее, можно ли сделать что бы он сначала пробывал открывать ее (хочу что бы работал onfailtoopen) или это уже ядро?
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16267 · Ответов: 5109 · Просмотров: 854,660

Ilharess
Отправлено: Nov 20 2004, 14:10


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


QUOTE (DBColl @ Nov 20 2004, 12:57)
Ilharess 
Посмотри скрипт nwscript.nss. Там все константы описаны ;).


Их там нет
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16256 · Ответов: 5109 · Просмотров: 854,660

Ilharess
Отправлено: Nov 20 2004, 11:28


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


NW_FLAG_... какие существуют и чего означают?
Добавлено в [mergetime]1100942832[/mergetime]
И еще вопрос как в нвн организовать стек action'ов:)
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16237 · Ответов: 5109 · Просмотров: 854,660

Ilharess
Отправлено: Nov 19 2004, 16:33


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


Спасибо обошелся без расчета скростей:)
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16177 · Ответов: 5109 · Просмотров: 854,660

Ilharess
Отправлено: Nov 19 2004, 13:23


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


Это понятно, млин плохо обяснил:( есть функция GetDistanceToObject вовращает дистанцию в метрах, у моба в свойствах стоит скрость движения нормал.. Ни кто цисленные значения не знает? ну путь там поделить на время идт...:)
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16157 · Ответов: 5109 · Просмотров: 854,660

Ilharess
Отправлено: Nov 19 2004, 12:47


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


Приветствую. Ни кто не знает с чему равна скорость мобов в нвн.
В нвн метрах в секунду...
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #16154 · Ответов: 5109 · Просмотров: 854,660

Ilharess
Отправлено: Nov 16 2004, 16:32


Level 2
*

Группа: Newbie
Сообщений: 16
Регистрация: 16.11.2004
Пользователь №: 399


Я бы добавил потеря интереса к нвн.
ЗЫ Локации щарда закончены на 90% есть не которая база скриптов, обращайтесь, жалко если пропадет:(
  Форум: Главный Зал · Просмотр сообщения: #15930 · Ответов: 160 · Просмотров: 127,551


Есть новые сообщения  Открытая тема (есть новые ответы)
Нет новых сообщений  Открытая тема (нет новых ответов)
Горячая тема (есть новые сообщения)  Горячая тема (есть новые ответы)
Горячая тема (нет новых сообщений)  Горячая тема (нет новых ответов)
Опрос (есть новые голоса)  Опрос (есть новые голоса)
Опрос (нет новых голосов)  Опрос (нет новых голосов)
Тема закрыта  Закрытая тема
Тема перемещена  Тема перемещена
 

Текстовая версия Сейчас: 16th April 2024 - 19:37