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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 83 84 85 86 87 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
[MoF]Darth_Nick
сообщение Mar 30 2006, 09:30
Сообщение #2101


Level 6
Иконки Групп

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить
NWN: Скриптинг [PW]



в OnConversation нпс есть абзац:
NSS
if (GetCommandable(OBJECT_SELF))
{
ClearActions(CLEAR_NW_C2_DEFAULT4_29);
BeginConversation();
}

ставиш проверку на локалки и изменяеш аргументы ф-ции..к примеру:
NSS
if (GetCommandable(OBJECT_SELF))
        {
            ClearActions(CLEAR_NW_C2_DEFAULT4_29);
            if(GetLocalInt(OBJECT_SELF,"SSS") == 1)
                BeginConversation("dlg1",oShouter);
            else
                BeginConversation("dlg2",oShouter);
        }


еще надо прикрутить проверку на таг или индивидуальный скрипт для нпс

Сообщение отредактировал [MoF]Darth_Nick - Mar 30 2006, 09:50
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Mar 30 2006, 14:49
Сообщение #2102


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



Благодарим, еще вопрос, я пытался сделать генерацию книг, как в Проклятии Левора, как описывал Айван, но ничего не вышло. Пытался долго и муторно, по-моему это довольно непростой скрипт. И еще, локалка это LocalInt в переменных?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 30 2006, 16:09
Сообщение #2103


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Там надо сделать одну книгу и потом копу/едит делать все остальные. Все там работает.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 30 2006, 21:14
Сообщение #2104


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Еще раз увижу ПРЕВЕД или КРАСАВЧЕГИ - влеплю пред. Юзверей с одним сообщением забаню.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 30 2006, 21:17
Сообщение #2105


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Вот работающий скрипт из моего мода ПВ.
Создаешь предмет с тагом и РесРефом AM_ITM_BOOK001. Потом Копу/едит делаешь себе сколько надо, например 25 штук. Дальше. Открываешь свойства модуля и в адвансед, присваиваешь локальную переменную ALL_BOOKS_IN_MODULES равную 25. На шкафу вешай переменную BOOKS равную столько, сколько тебе нужно книг в шкафу при открытии. Не повесишь будет одна. И все.

NSS
//:://////////////////////////////////////////////
//:: OnOpen  am_pop_bookshelf
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
  Скрипт генирирует книги в инвентарь шкафа.
  Локальная переменная "BOOKS" на объекте
  означает количество генерируемых книг.
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 23.07.2005
//:://///////////////////////////////////////////
void main()
{
    //-------------------------------------------------------------------------
    // Количество книг в палитре. Присваиваем на модуль "ALL_BOOKS_IN_MODULES"
    //-------------------------------------------------------------------------
    int iBook = GetLocalInt(GetModule(), "ALL_BOOKS_IN_MODULES");
    int iNum = GetLocalInt(OBJECT_SELF, "BOOKS"); // Сколько создаем в шкафу
    if (GetLocalInt(OBJECT_SELF, "HAS_OPERATED")) // Сработает один раз
      {
        return;
      }
      while(iNum >= 1) // Пока количество создаваемых книг больше или равно 1.
          {
    //-------------------------------------------------------------------------
    // Кстати... У меня ResRef-ы  am_itm_book001 ... am_itm_book021, поэтому
    // я извратился немного, лень было переделать книги... Но так проще создать
    // много одинаковых книг, цифры сами генерятся редактором, вы только
    // создаете первую, а дальше Изменить/Сохранить и все.
    //-------------------------------------------------------------------------
            int i = Random(iBook)+1; // Гененрируем случайную унигу
            string sN = "0";
            string sNN = "0";
            if (i >=100) {sNN ="";}
            if (i >=10) {sN ="";}
            object oBook = CreateItemOnObject("am_it_book"+sNN+sN+IntToString(i));
            iNum--; //Создали одну книгу. Отняли от количества еденичку...
          }
          SetLocalInt(OBJECT_SELF,"HAS_OPERATED",TRUE); // Запомним что уже сработал
}


QUOTE(Elf-Drow @ Mar 30 2006, 17:49) [snapback]75275[/snapback]
И еще, локалка это LocalInt в переменных?

Да.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JCDenton
сообщение Mar 31 2006, 00:26
Сообщение #2106


Level 3
*

Класс: Тайный Лучник
Характер: Chaotic Good
Раса: Эльф



Суть:

Есть N обьектов с одинаковыми тэгами. и есть обьект с тегом в конце "00". Нужно сделать:
1) на месте обьекта появляется костерчик, обьет исчезает. (первый 00)
2) загорается ближайший к нему из N обьектов, обьет исчезает.
3) загорается следующий и так далее..

КОД:
NSS
void main()
{
    int iN;
    location lLoc;
    object oFire = GetObjectByTag("PLC_DRM_F00");
      if (GetLocalInt(OBJECT_SELF, "Counter") == 1)
      return;
      else
            SetLocalInt(OBJECT_SELF, "Counter", 2);
            while (oFire != OBJECT_INVALID || iN < 10)
              {
              lLoc = GetLocation(oFire);
              DestroyObject(oFire, 0.0f);
              oFire = GetNearestObjectByTag("PLC_DRM_F01", GetNearestObjectByTag("PLC_DRM_FR", OBJECT_SELF));
              CreateObject(OBJECT_TYPE_PLACEABLE, "plc_flamelarge", lLoc, FALSE, "PLC_DRM_FR");
              iN ++;
              }
}

! Счетчик юзания триггера отключен специально!
Результаты работы:
при первом нахождении на триггер:
1) загорается обьект "..00" 1 костром.
2) загорается соседний 9 кострами. конец.
при повторном нахождении горит соседний 10 кострами..

Спрашивается.. "Какого **ра?" (IMG:style_emoticons/kolobok_light/biggrin.gif)

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Mar 31 2006, 06:14
Сообщение #2107


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



Пара вопросов по скриптам, приведенным в Проклятии Левора.
1 - Какой скрипт нужен и куда его ставить, чтобы НПС говорили фразы, то есть названия вейпоинтов, находящихся вокруг них ( Говорящие НПС в Проклятии)
2 - Как ваша команда создала такой шедевр как карта? Создание моделей в 3D-MAX, а затем вставка в игру?
Диалог, а затем скрипт с появляющейся картинкой и отправление к месту назначения? И как вы сделали, что бой по дороге может быть на случайной миле, т.е. Там на 11, 23, хоть на какой?
Заранее благодарю.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 31 2006, 07:06
Сообщение #2108


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



1. Строка дожна быть в диалоге всегда ОДНА и содержать токен <CUSTOM220>. А содержание = имя вейпоинта. Я опускаю разные ньюансы, стринге на поинте, ответы РС локалки на расстояния и прочее. Даю обрезанный рабочий код. Вставляй и работай.
NSS
//:://////////////////////////////////////////////
//:: Выдает стринг, если НПС рядом с поинтом
//:: Copyright © 2006 WRG!
//:://////////////////////////////////////////////
/*
    Таг нашего поинта. WP_STRING
    <CUSTOM220> - [Имя поинта - строка НПС]
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 17.01.2006
//:://////////////////////////////////////////////
int StartingConditional()
{
  object oWp = GetNearestObjectByTag("WP_STRING"); // Берем ближайший объект с тагом "WP_STRING"
  float fDist = 20.0f; // Расстояние реакции, дальше 20 метров строки не будет
  float fZone = GetDistanceBetween(OBJECT_SELF, oWp); // Дистанция срабатывания
//-------------------------------------------------------
  if(GetIsObjectValid(oWp)) // Если такой объект существует
  {
    if (fDist < fZone) // Если дистанция между Нпс и Поинтом больше установленной 20 м.
      return FALSE; // Строка не появится
      else // в противном случае (ЕЩЕ)
      {
          string sMessage = GetName(oWp); // Стринг sMessage равен имени поинту
          SetCustomToken(220, sMessage); // Установим токен 220 равный этому стрингу
          return TRUE; // Вернем строку функции StartingConditional(). Она покажет ее игроку
      }
    }
    else return FALSE; // Если такого объекта oWp нет, то нечего не появится
}


2. Карта и ее скрипты очень сложны. Не берись пока за это. Созреешь до сложных скриптов поговорим.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 31 2006, 07:06
Сообщение #2109


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



А чего ты хотел? БЕРЕМ БЛИЖАЙШИЙ и насилуем его девять раз. (IMG:style_emoticons/kolobok_light/smile.gif) Тебе надо брать все объекты и перебирать по параметрам свои костры.
Нужен скрипт на факела-костры-жаровние? Вот мой скрипт запускается ExecuteScript на локацию.
Суть такая. Создаешь два объекта один горящий, другой потухший. На этих объектах в палитре вешаешь стриги ResRef-ы объектов что создаем вместо существующего. Например на плейсе AM_PLS_TORCH_ON стринг NEW_ResRef будет равен am_pls_torchoff. И на оборот. Годится скрипт для чего хошь. Днем объект создается, ночью дестроится. Вешай на вход в локацию. Или на хертбит с проверкой в локации ли РС.
NSS
//:://////////////////////////////////////////////
//:: OnEnter  am_exe_torch_del
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
    ВКЛЮЧАЕМ ОГОНЬ ФАКЕЛОВ И ЗВУК К НИМ НОЧЬЮ.

Таг факела = "AM_PLS_TORCH_OFF". Он должен быть с
в палитре с моделью факела без амбиент анимации.
Именно его и надо расставить в локации. Иначе будет
свет от факела гореть над ним. Его ResRef "am_pls_torchoff"
Таг горящего факела = "AM_PLS_TORCH_ON" ResRef "am_pls_torchon"
Звуковой объект ставим рядом с факелом, помните его таг
ДОЛЖЕН БЫТЬ УНИКАЛЬНЫМ ВО ВСЕМ МОДУЛЕ. Иначе не
сработает. К примеру таг моего звука, равен тагу
триггера плюс порядковый номер, начиная с еденицы:
AM_SOUND_TORTCH_(порядковый номер = i). Расставляйте
на локации факела и звуки рядом.
"NEW_ResRef" Локальный стринг ResRef-а объекта, который
создаем на месте этого. Все готово!

LocalInt "AREA_TORCH_ON_OFF" - запускает на локацию.

*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 08.06.2005
//:://///////////////////////////////////////////
void main()
{
  int i=1; // Первый порядковый номер тага звука
  float f=0.5; // Задержка дестроя
  string sSound = GetTag(OBJECT_SELF); // Приравнял таг Локации к звуовому
  object oTorch = GetFirstObjectInArea(OBJECT_SELF);
  object oSound = GetObjectByTag(sSound+IntToString(i)); // Звуковой объект
  effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_20); // Свет факела
  int nEvent = GetUserDefinedEventNumber();
//======================= USERDEINE EVENT 1000 =================================
if (GetIsDay() || GetIsDawn())
//---------------------------------- ДЕНЬ --------------------------------------
  {
  while (GetIsObjectValid(oTorch))
      {
      if (GetTag(oTorch) == "AM_PLS_TORCH_ON" && !GetLocalInt(oTorch, "DO"))
        /* Проверяем все объекты на локации, берем с нужным тегом и без
            локальной переменной, что с объектом уже выключен. */

          {
          string sResRef = GetLocalString(oTorch, "NEW_ResRef");
          SetLocalInt(oTorch, "DO", TRUE);
          DestroyObject(oTorch, f);
          CreateObject(OBJECT_TYPE_PLACEABLE,sResRef, GetLocation(oTorch));
          f=f+0.2; // Сделай паузу!
          }
          if (GetIsObjectValid(oSound))
            {
            DebugObject(oSound);
            SoundObjectStop(oSound); // Выключаем звук
            i++;  // Присвоим объекту звука таг на единицу больше
            }
      oSound = GetObjectByTag(sSound+IntToString(i));
      oTorch = GetNextObjectInArea(OBJECT_SELF);
      }
    return;
  }
//======================= USERDEINE EVENT 3000 =================================
  else if (GetIsNight() || GetIsDusk())
//----------------------------- НОЧЬ -------------------------------------------
  {
  while (GetIsObjectValid(oTorch))
      {
      if (GetTag(oTorch) == "AM_PLS_TORCH_OFF" && !GetLocalInt(oTorch, "DO"))
        {
          string sResRef = GetLocalString(oTorch, "NEW_ResRef");
          SetLocalInt(oTorch, "DO", TRUE);
          DestroyObject(oTorch, f);
          object oTorchNew = CreateObject(OBJECT_TYPE_PLACEABLE,sResRef, GetLocation(oTorch));
          DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oTorchNew));
          f=f+0.2; // Сделай паузу!
          }
          if (GetIsObjectValid(oSound))
            {
            DebugObject(oSound);
            SoundObjectPlay(oSound); // Включаем звук
            i++; // Присвоим объекту звука таг на единицу больше
            }
      oSound = GetObjectByTag(sSound+IntToString(i));
      oTorch = GetNextObjectInArea(OBJECT_SELF);
      }
  }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Mar 31 2006, 10:10
Сообщение #2110


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



Знаешь, Айван, вроде вы в Проклятии сделали так, чтобы Геркан был с героем одной расы, то есть ты гном он гном, ты эльф он эльф. Но это не работает! Я играю за эльфа, но Геркан у меня гном!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 31 2006, 12:06
Сообщение #2111


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



Elf-Drow, ты баг описываешь, предполагаешь или вопрос какой есть по реалезации?

Если первые два, то это не сюда.

Сообщение отредактировал -fenix- - Mar 31 2006, 13:05
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 31 2006, 18:16
Сообщение #2112


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



В скриптинге карты в принципе нет ничего сложного. (текущая версия карты для ПВ это небольшая библиотечка в ~800 строк, там ~50 функций описано).
А вот моделинг самой карты, плейсов для нее и всякие вспомогательные штуки, это скриптами не сделать.

QUOTE(Elf-Drow @ Mar 31 2006, 11:10) [snapback]75488[/snapback]
Знаешь, Айван, вроде вы в Проклятии сделали так, чтобы Геркан был с героем одной расы, то есть ты гном он гном, ты эльф он эльф. Но это не работает! Я играю за эльфа, но Геркан у меня гном!

баг.. хотя странны. А делается просто - в палитре Герканы всех расс, при старте модуля создаем нужного, согласно расе игрока. Хоть полуорка (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lanilor
сообщение Mar 31 2006, 18:17
Сообщение #2113


Level 1


Класс: Волшебник
Характер: Chaotic Neutral
Раса: Полуэльф



2[MoF]Darth_Nick: спасибо.
У меня еще один вопрос: как сделать, чтобы npc (хенч) уходил назад в свою область (дом) для будущего использования, как только он становится ненужным. Никак не сделать, чтобы нпс бежал на вейпоинт, находящийся в другой области? Может можно его туда телепортировать?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 31 2006, 18:22
Сообщение #2114


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE(Lanilor @ Mar 31 2006, 19:17) [snapback]75560[/snapback]
Никак не сделать, чтобы нпс бежал на вейпоинт, находящийся в другой области? Может можно его туда телепортировать?

Делай темный экран на пару секунд и телепортируй. С бегатней меж локами гемороя много всякого.
отследить событие отсоединения можно в библиотеке x0_inc_henai. Строка 866.
там ниже вставь, что если хенч с тэгом таким-то, то джампается туда-то.
Не забудь билдануть скрипты потом, особено onConversation для хенчей.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JCDenton
сообщение Mar 31 2006, 18:52
Сообщение #2115


Level 3
*

Класс: Тайный Лучник
Характер: Chaotic Good
Раса: Эльф



Нафик мне факелы? :-) Мне надо спалить кучу обьектов..
в скрипте.. то как я это вижу..

берем обьект и получаем с него координаты
уничтожаем обьект
присваиваем следующий обьект (предыдущий не может быть так как он уничтожился строкой выше)
создаем на месте обьекта костерчик

и по новой..

а работает хз как

а тупой перебор тагов (если их разными сделать) я тоже как бы сам соображу..
суть не в скрипте а в причине его не работоспособности.. вникнуть может ктонить? просто интересно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 31 2006, 18:58
Сообщение #2116


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



работает хз как, потому что написан хз как.
oFire = GetNearestObjectByTag("PLC_DRM_F01", GetNearestObjectByTag("PLC_DRM_FR", OBJECT_SELF));
это тебе все время одно и тоже давать будет: ближайший к твоей конструкции (Так как удаление не происходит мгновенно. Создание тоже не мгновенное.).
NSS
void main()
{
object oFire  = GetObjectByTag("PLC_DRM_F00");
location lLoc = GetLocation(oFire);
if (GetLocalInt(OBJECT_SELF, "Counter") == 1return;
SetLocalInt(OBJECT_SELF, "Counter", 2);
DestroyObject(oFire);
// центр, относительно которого берем ближайший объект на удаление
object oCenter = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_flamelarge", lLoc, FALSE, "PLC_DRM_FR");
// берем следующую кучу дров
oFire = GetNearestObjectByTag("PLC_DRM_F01", oCenter);
// пока есть дрова в локации.. тут бы лучше добавить проверки дистанции.
while (GetIsObjectValid(oFire))
    {
    lLoc = GetLocation(oFire);
    DestroyObject(oFire, 0.0f);
    // новый центр поиска - костерок на месте дров
    oCenter = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_flamelarge", lLoc, FALSE, "PLC_DRM_FR");
    // следующие дрова
    oFire  = GetNearestObjectByTag("PLC_DRM_F01", oCenter);
    }
}

Так примерно, не тестировал..

QUOTE(JCDenton @ Mar 31 2006, 19:52) [snapback]75570[/snapback]
а тупой перебор тагов (если их разными сделать) я тоже как бы сам соображу..

не заметно как-то, что сообразишь. тут самый, что ни наесть, тупой перебор.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JCDenton
сообщение Apr 1 2006, 01:21
Сообщение #2117


Level 3
*

Класс: Тайный Лучник
Характер: Chaotic Good
Раса: Эльф



Ну Куда нам нубам до мудрого Лекса... (IMG:style_emoticons/kolobok_light/smile.gif) ))
Твой скрипт вешает невервинтер к чертям.. т.к. получается бесконечный цикл. Почему он там получается? потому что скрипт написан ХЗ как =)

Сеня первое апреля но я тя не прикалываю.. проверь сам =)
Кстати потому я и ввел второе условие в цикл.. чтобы не atl-ctrl-delete =)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 1 2006, 01:51
Сообщение #2118


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



ну раз не получилось так (все из-за того же, создание и удаление + взятие одних и тех же по несколько раз)
делаем простейшую рекурсию

lx_fire_start
NSS
void main()
{
if (GetLocalInt(OBJECT_SELF, "Counter") == 1return;
SetLocalInt(OBJECT_SELF, "Counter", 2);
object oFire  = GetObjectByTag("PLC_DRM_F00");
location lLoc = GetLocation(oFire);
CreateObject(OBJECT_TYPE_PLACEABLE, "plc_flamelarge", lLoc, FALSE, "PLC_DRM_FR");
ExecuteScript("lx_fire_main",oFire);
DestroyObject(oFire,0.5);
}


lx_fire_main
NSS
void main()
{
SetLocalInt(OBJECT_SELF,"USED",TRUE);
location lLoc = GetLocation(OBJECT_SELF);
int i = 1;
CreateObject(OBJECT_TYPE_PLACEABLE, "plc_flamelarge", lLoc, FALSE, "PLC_DRM_FR");
object oFire = GetNearestObjectByTag("PLC_DRM_F01", OBJECT_SELF,i);
while (GetLocalInt(oFire,"USED"))
    {
    i++;
    oFire = GetNearestObjectByTag("PLC_DRM_F01", OBJECT_SELF,i);
    }
if (GetIsObjectValid(oFire))
    DelayCommand(0.4,ExecuteScript("lx_fire_main",oFire));

DestroyObject(OBJECT_SELF, 0.5f);
}


--
вместо того, чтоб панику поднимать, товарищ нуб, лучше бы подумали маленько (IMG:style_emoticons/kolobok_light/smile.gif)
А не списывали начисто у мудрого Лекса.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JCDenton
сообщение Apr 1 2006, 02:05
Сообщение #2119


Level 3
*

Класс: Тайный Лучник
Характер: Chaotic Good
Раса: Эльф



Во, терь Лекс молодец, терь работает (IMG:style_emoticons/kolobok_light/yahoo.gif)
Вопросы(IMG:style_emoticons/kolobok_light/smile.gif)
1) Что такое рекурсия? ссылка на другой скрипт?
2) тот скрипт не работал изза того что "удаление/создание" проходят медленее чем остальная часть скрипта?



3) object GetNearestObjectByTag(string sTag, object oTarget=OBJECT_SELF, int nNth=1)

что обозначает "int nNth"?
как я понял из твоего скрипта.. Берется ближайший, потом 2-й ближайший.. 3-й и т.п. Так?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 1 2006, 02:15
Сообщение #2120


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



1. рекурсия это в общем когда функция вызывает саму себя. В данном случае скрипт вызывает сам себя до определенного момента.

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

3. это номер ближайшего объекта. по умолчанию 1, те ближайший. А можно брать второй, третий и Хый по удаленности. это все описано в лексиконе.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Apr 1 2006, 11:20
Сообщение #2121


Level 9
Иконки Групп

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



изначально скрипт не работал именно из-за того, что не был указан третий параметр в функции GetNearestObjectByTag. так как фактическое удаление объекта происходит после окончания работы скрипта, то циклилось все на первом объекте. рекурсии-фигурсии... (IMG:style_emoticons/kolobok_light/crazy.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
JCDenton
сообщение Apr 1 2006, 15:57
Сообщение #2122


Level 3
*

Класс: Тайный Лучник
Характер: Chaotic Good
Раса: Эльф



Значит в принципе операции удаления происходят после выполнения Большей части скрипта?
Короче не юзать удаление обьектов в циклах, если с них таким методом снимаем координаты.. (IMG:style_emoticons/kolobok_light/biggrin.gif)

Насчет карты в Проклятии..
Щелкаешь правой на тсурлаголе, выбераешь "рубануть". Слышешь вопли ПС "My weapon is not effect.." Ржешь.. Делаешь Alt-Ctrl-Delete. Закрываешь нвн. Заходшь аново и загружаешься с последней савы.. я такое сделал в момент прохождения половины первого мода.. а сохраняться я люблю только перед тем как вырубить камп.. :-)

Но тем не менее карта это прикол, надо только сделать, чтобы в случае закрытия диалога - он появлялся снова.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Apr 3 2006, 18:15
Сообщение #2123


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



У меня, такой вопрос.
Можно ли восстановить хиты игроку кроме как регенерациями и EffectHeal?
В общем, есть что-то, что не пишет в панель сообщений, кто и скока хитов восстановил?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Apr 3 2006, 19:18
Сообщение #2124


Level 9
Иконки Групп

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



ForceRest()
EffectDamage (IMG:style_emoticons/kolobok_light/crazy.gif)

можно временные хиты добавлять еще..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Apr 3 2006, 19:22
Сообщение #2125


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE(2_advanced @ Apr 3 2006, 20:18) [snapback]76072[/snapback]
ForceRest()
EffectDamage

Иными словами - НЕТ! А жаль.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 83 84 85 86 87 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 15th June 2025 - 01:35