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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 94 95 96 97 98 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
virusman
сообщение Jul 6 2006, 20:44
Сообщение #2376


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Ой, перепутал GetIsPC и GetIsDM. (IMG:style_emoticons/kolobok_light/smile.gif)
OnClientEnter/OnClientLeave всегда срабатывают только на игроках. Дополнительные проверки тут не нужны.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkDeivel
сообщение Jul 7 2006, 15:17
Сообщение #2377


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



Здраствуйте всем вам. Уезжал на долго не создавал. Весь опыт потерял набираю заново. Как сделать что когда игрок наступает на Триггер на него кастуется 5 заклинаний. Лечение, защита, сила, и еще чтонибудь на ваш вкус только не навороченное. (IMG:style_emoticons/kolobok_light/nea.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 7 2006, 15:30
Сообщение #2378


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



На onEnter, триггера:

NSS
void main()
{
  object oPC = GetEnteringObject();
  effect eHeal = EffectHeal(GetMaxHitPoints(oPC));
  effect eStrength = EffectAbilityIncrease(ABILITY_STRENGTH,1);
  effect eAC = EffectACIncrease(1);
  // Остальные эффекты добавишь сам, ищи в фильтре Effect*

  if (!GetIsPC(oPC))
   return;

  if (GetCurrentHitPoints(oPC) != GetMaxHitPoints(oPC))
   {
     ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oPC);
   }
  ApplyEffectToObject(DURATION_TYPE_PERMANENT, eStrength, oPC); // Сила повышается на 1. Бесконечно.
  ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAC, oPC); // AC повышается на 1. Бесконечно.

  DestroyObject(OBJECT_SELF, 0.4); // Удали строку если не нужно чтобы скрипт срабатывал 1 раз.
}


Сообщение отредактировал Dik Morris - Jul 7 2006, 15:44
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Noah
сообщение Jul 7 2006, 23:04
Сообщение #2379


Level 5
**

Класс: Убийца
Характер: Chaotic Neutral
Раса: Полуэльф



Здрв!Нужен ответ.Как добавить в имя вещи слово,т.Е. Если был "топор" то сделать его "топор хлада" с помощью скрипта.Заране спасибо!%:-)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jul 8 2006, 00:19
Сообщение #2380


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



SetName(oItem, GetName(oItem)+" of Cold");
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Noah
сообщение Jul 8 2006, 00:31
Сообщение #2381


Level 5
**

Класс: Убийца
Характер: Chaotic Neutral
Раса: Полуэльф



Спасибо,друг virusman!Ты продвинул мою работу на сто,нет на тысячу стае!Еще раз сенкс!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 8 2006, 08:55
Сообщение #2382


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



Хотел уточнить что данная фун-ция, появляется только в версии 1.67. (IMG:style_emoticons/kolobok_light/wink3.gif)

Сообщение отредактировал Dik Morris - Jul 8 2006, 12:04
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 8 2006, 17:58
Сообщение #2383


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Кстати, с помощью этой функции можно делать индивидуальные вещи. Т.е. вначале сохранять в строковую переменную название вещи, а уж потом менять в момент создания.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkDeivel
сообщение Jul 8 2006, 21:20
Сообщение #2384


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



Скажите как сделать чтобы при слове "далее" персонаж перемещался к указаному НПС. Тоесть.

ПОдоходит к капитану на одномо острове.

-Переправь меня на другой остров.
- не прооблема давай.
-далее.

и персонаж оказывается возле НПС капитана на другом острове.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 8 2006, 21:34
Сообщение #2385


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



DarkDeivel, подобные ситуации разбираются очень часто, используй поиск.

Нашел, меньше чем за полминуты. Читать.

Сообщение отредактировал Dik Morris - Jul 8 2006, 21:34
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Noah
сообщение Jul 8 2006, 21:42
Сообщение #2386


Level 5
**

Класс: Убийца
Характер: Chaotic Neutral
Раса: Полуэльф



QUOTE(DarkDeivel @ Jul 8 2006, 21:20) [snapback]87410[/snapback]

Скажите как сделать чтобы при слове "далее" персонаж перемещался к указаному НПС. Тоесть.

ПОдоходит к капитану на одномо острове.

-Переправь меня на другой остров.Заранее установи точку прыжка(оwp).
- не прооблема давай.
-далее.
Здесь добавь скрипт:assigncommand(oPC,actionjumptoobject(oWp));

и персонаж(oPC) оказывается возле НПС капитана на другом острове(тут wp).

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkDeivel
сообщение Jul 8 2006, 22:20
Сообщение #2387


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



QUOTE(Dik Morris @ Jul 8 2006, 21:34) [snapback]87413[/snapback]

DarkDeivel, подобные ситуации разбираются очень часто, используй поиск.

Нашел, меньше чем за полминуты. Читать.

Все нашле СпС.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DARKKK
сообщение Jul 8 2006, 22:34
Сообщение #2388


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



Я вот недавно сел за Тулсет. и вот.

как сделать чтобы появилось строчка в диалоге при наличии 20 Animal Bone(в рюкзаке).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Jul 9 2006, 03:06
Сообщение #2389


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



Cтавишь у нужной строки на Text Appears When... скрипт типа такого:
NSS
int Match(a, с)
{
    return (a == с);
}

int GetNumItemsInInventory(object oInventory = OBJECT_SELF, string sTag = "*")
{
    int nNum = 0;
    object oItem = GetFirstItemInInventory(oInventory);
    while (GetIsObjectValid(oItem))
    {
        if (Match(GetTag(oItem), sTag))
        {
            nNum += GetItemStackSize(oItem);
        }

        oItem = GetNextItemInInventory(oInventory);
    }

    return nNum;
}

int StartingConditional()
{
    object oPC = GetPCSpeaker();
    int n = GetNumItemsInInventory(oPC, "ТЭГ_ЭТОЙ_САМОЙ_КОСТИ");
    return (n >= 20);
}


По-моему этот вопрос разбирали в этой теме уже несколько раз, ты наверняка наткнулся бы на ответ пролистав тему (а заодно и на множество других крайне полезных вещей) и соседние, что настоятельно советую перед тем как спрашивать: "ух-хух, а как забрать 20 костей?".

----

P.S. Глюка (IMG:style_emoticons/kolobok_light/smile.gif)
пишу: int Match(a, в);
выдает: int Match(a, (IMG:style_emoticons/kolobok_light/dirol.gif) ;

Сообщение отредактировал azathoth - Jul 9 2006, 03:09
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 9 2006, 05:19
Сообщение #2390


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

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



Да, там смайлы не парсятся, точнее парсятся... Как лечить я хз (IMG:style_emoticons/kolobok_light/pardon.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkDeivel
сообщение Jul 9 2006, 11:52
Сообщение #2391


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



QUOTE(Dik Morris @ Jul 7 2006, 15:30) [snapback]87334[/snapback]

На onEnter, триггера:

NSS
void main()
{
  object oPC = GetEnteringObject();
  effect eHeal = EffectHeal(GetMaxHitPoints(oPC));
  effect eStrength = EffectAbilityIncrease(ABILITY_STRENGTH,1);
  effect eAC = EffectACIncrease(1);
  // Остальные эффекты добавишь сам, ищи в фильтре Effect*

  if (!GetIsPC(oPC))
   return;

  if (GetCurrentHitPoints(oPC) != GetMaxHitPoints(oPC))
   {
     ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oPC);
   }
  ApplyEffectToObject(DURATION_TYPE_PERMANENT, eStrength, oPC); // Сила повышается на 1. Бесконечно.
  ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAC, oPC); // AC повышается на 1. Бесконечно.

  DestroyObject(OBJECT_SELF, 0.4); // Удали строку если не нужно чтобы скрипт срабатывал 1 раз.
}


Слухай у меня все работает. А как сделать к этому еще визуальные эффекты??
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 9 2006, 12:00
Сообщение #2392


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



С помощью 2 фун-ций:

NSS
// 1:
// Apply eEffect to oTarget.
void ApplyEffectToObject(int nDurationType, effect eEffect, object oTarget, float fDuration=0.0f)

// 2:
// * Create a Visual Effect that can be applied to an object.
// - nVisualEffectId
// - nMissEffect: if this is TRUE, a random vector near or past the target will
//   be generated, on which to play the effect
effect EffectVisualEffect(int nVisualEffectId, int nMissEffect=FALSE)

// + констант:
DURATION_TYPE_INSTANT ;
DURATION_TYPE_PERMANENT ;
DURATION_TYPE_TEMPORARY.


Константы, виз. эффектов начинаются с VFX_* (Рисунки см. в Лексиконе)

PS: Т.е получится, например так:
NSS
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M), oPC);


Сообщение отредактировал Dik Morris - Jul 9 2006, 12:04
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jul 9 2006, 14:03
Сообщение #2393


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Лучше всего залинковать эффекты бонусов с визуальными эффектами (см. скрипт любого спелла).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkDeivel
сообщение Jul 9 2006, 16:08
Сообщение #2394


Level 3
*

Класс: Паладин
Характер: Lawful Good
Раса: Человек



QUOTE(Dik Morris @ Jul 9 2006, 12:00) [snapback]87436[/snapback]

С помощью 2 фун-ций:

NSS
// 1:
// Apply eEffect to oTarget.
void ApplyEffectToObject(int nDurationType, effect eEffect, object oTarget, float fDuration=0.0f)

// 2:
// * Create a Visual Effect that can be applied to an object.
// - nVisualEffectId
// - nMissEffect: if this is TRUE, a random vector near or past the target will
//  be generated, on which to play the effect
effect EffectVisualEffect(int nVisualEffectId, int nMissEffect=FALSE)

// + констант:
DURATION_TYPE_INSTANT ;
DURATION_TYPE_PERMANENT ;
DURATION_TYPE_TEMPORARY.


Константы, виз. эффектов начинаются с VFX_* (Рисунки см. в Лексиконе)

PS: Т.е получится, например так:
NSS
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M), oPC);


Понятно ща попробую. (IMG:style_emoticons/kolobok_light/declare.gif)

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


Сообщение отредактировал Aiwan - Jul 9 2006, 17:45
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Noah
сообщение Jul 11 2006, 21:16
Сообщение #2395


Level 5
**

Класс: Убийца
Характер: Chaotic Neutral
Раса: Полуэльф



Всем mass heal & level up!:)*как мне организовать скрипт на он персепт нпс чтобы он брал мои деиствия и реагировал.Например если он видит что рс в режиме parry,то он отбегает и лечиться!Ответ очень нужен!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 12 2006, 00:33
Сообщение #2396


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Noah, простой скрипт, взята функция "Талента" лечения из инклуда "x0_i0_talent":

NSS
if (GetActionMode(oPercep, ACTION_MODE_PARRY) == TRUE)
{
    if (TalentHealingSelf())
    {
        // Подлечиться;
    }
}

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

All

Всем, кто программирует, известен цикл "for", позволяющий сделать счетчик из числа, границы которого для Вот сложения, вычитания, и т.д., описываются в шапке цикла. Есть универсальный цикл для снятия вещей с персонажа:
NSS
for (i = 0; i < NUM_INVENTORY_SLOTS; i++)
{
    oItem = GetItemInSlot(i, oPC);

    if (GetIsObjectValid(oItem))
        AssignCommand(oPC, ActionUnequipItem(oItem));
}

Сам цикл работает без проблем, к нему претензий нет, но не срабатывает при каждом новом проходе функция, ради который весь цикл и создавался, "ActionUnequipItem" (выполняется только 4 раза). Экспериментальным путем удалось установить, что в стэке может одновременно находиться лишь 4 действия. Т.е., если эти действия еще не выполнились, то все последующие окажутся вне стэка, и соответственно, не выполнятся. Что же делать? Ведь данный цикл раньше работал отлично. Тогда я решил немного перехитрить скрипт, заставив цикл выполняться не 1 раз, а 4 раза. Как бы проверяя, а точно ли все вещи сняты?! В итоге получилось следующее:
NSS
void TakeItemsFromPC(object oPC)
{
    int k = GetLocalInt(oPC, "DropThings");

    if (k > 3)
    {
        DeleteLocalInt(oPC, "DropThings");
        AssignCommand(oPC, ClearAllActions());
        return;
    }

    int i;
    object oItem;

    for (i = 0; i < 14; i++)
    {
        oItem = GetItemInSlot(i, oPC);

        if (GetIsObjectValid(oItem))
        {
            AssignCommand(oPC, ActionUnequipItem(oItem));
        }
    }
    SetLocalInt(oPC, "DropThings", ++k);
    DelayCommand(0.2, TakeItemsFromPC(oPC));
}

void main()
{
    TakeItemsFromPC(GetPCSpeaker());
}

Не уверен, что это лучшее решение, но вещи снимаются все, правда не за 1 цикл. У меня возник вопрос, можно ли как-нибудь эту операцию осуществить иначе?

Сообщение отредактировал Zirrex - Jul 12 2006, 00:56
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Noah
сообщение Jul 12 2006, 03:43
Сообщение #2397


Level 5
**

Класс: Убийца
Характер: Chaotic Neutral
Раса: Полуэльф



Спасиб,Zirrex!1.B скриптах для новичков Айван приводил подобный скрипт,глянь.2.Как скриптом добавить крылья,хвост или костяну руку?Иль отобрать!Или это только через 2dа?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Jul 12 2006, 04:19
Сообщение #2398


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



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

По другому - копировать вещи CopyItem'ом в инвернтарь существа, а из слотов - удалять. Действия - побоку.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 12 2006, 04:34
Сообщение #2399


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

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



Вообще в стеке может быть 75 действий. Просто сам скрипт может в одном из блоков очищать акции. РС надо время на то что бы снять предмет. Попробуй накидать акций, повесить на каждую задержку в полсекунды и закройстек РС.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 12 2006, 08:36
Сообщение #2400


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE(Noah @ Jul 12 2006, 05:43) [snapback]87624[/snapback]

2.Как скриптом добавить крылья,хвост или костяну руку?Иль отобрать!Или это только через 2dа?


Читать эту ссылку.


От себя, как известно такие свойства появляются на эпическом уровне, у определенных классов, (например, светящиеся глаза, у монаха) значит попробуй добавить NPC несколько лишних уровней.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 94 95 96 97 98 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 16th June 2025 - 21:47