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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 73 74 75 76 77 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
-fenix-
сообщение Jan 5 2006, 20:59
Сообщение #1836


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

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



Вот функции.
Neverwinter Script Source
// The subject will jump to lLocation instantly (even between areas).
// If lLocation is invalid, nothing will happen.
void ActionJumpToLocation(location lLocation)

// Jump to an object ID, or as near to it as possible.
void ActionJumpToObject(object oToJumpTo, int bWalkStraightLineToPoint=TRUE)

// Jump to lDestination.  The action is added to the TOP of the action queue.
void JumpToLocation(location lDestination)

// Jump to oToJumpTo (the action is added to the top of the action queue).
void JumpToObject(object oToJumpTo, int nWalkStraightLineToPoint=1)


Например ставишь в нужном месте вейпоинт, а на строчку в диалоге скрипт.

Neverwinter Script Source
void main()
{
object oPC = GetPCSpeaker(); // это герой
object oNPC = OBJECT_SELF; //это НПС

object oWP_PC = GetWaypointByTag("ТАГ ВЕЙПОИНТА ИГРОКА");
object oWP_NPC = GetWaypointByTag("ТАГ ВЕЙПОИНТА НПС");

AssignCOmmand(oPC, ClearAllActions());//почистим акции на всякий пожарный
AssignCommand(oPC, JumpToObject(oWP_PC));//герой прыгает к вейпоинту
AssignCommand(oNPC, JumpToObject(oWP_NPC));//НПС прыгает к вейпоинту
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
justshurik
сообщение Jan 6 2006, 02:32
Сообщение #1837


Level 4
**

Класс: Маг
Характер: Chaotic Evil
Раса: Человек



Всем привет!
Прежде всего благодарю Lex-а, Dik_Morris-а и Aiwan-a за то что помогли со скриптом.
И хотел бы спросить, сам не могу докумекать, как во время диалога с NPC сделать проверку вещей PC по тегу. Заранее спасибо!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jan 6 2006, 02:47
Сообщение #1838


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

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



Посмотри ТУТ примеры. Для тебя писалась тема.
Neverwinter Script Source
#include "nw_i0_tool"
int StartingConditional()
{
    object oPC = GetPCSpeaker();
    if(!HasItem(oPC, "ТАГ_ПРЕДМЕТА"))
        return FALSE;
    return TRUE;
}

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Salasar
сообщение Jan 6 2006, 10:18
Сообщение #1839


Level 1


Класс: Мастер Оружия
Характер: Neutral Good
Раса: Человек



Спасибо за ответ! И Ещё один вопрос. Как сделать так, чтобы НПС при определённом кол-ве жизни( например герой дрался с ним и у НПС осталось 10 или ниже хит-поинтов) начал разговор с героем.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jan 6 2006, 12:33
Сообщение #1840


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

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



Neverwinter Script Source
/*
:: Скрипт на onDamaget Npc.
:: Когда игрок, атакует Npc, происход. проверка, если HP у Npcменьше 10
:: то он становится дружественным, и начинаег диалог с игроком.
*/

void main()
{
object NPC = OBJECT_SELF;//Сам НПС
object oPC  = GetLastDamager();//Игрок. (А точнее тот кто атакует Npc)

if (GetCurrentHitPoints(NPC)<=10)//Проверка на HP
   {
   SetImmortal(NPC,TRUE);//Делаем НПС бессмертным;
   AssignCommand(oPC, ClearAllActions(TRUE));//Чистим актионы у игрока;
   AssignCommand(NPC, ClearAllActions(TRUE));//Чистим актионы у Npc;
   AssignCommand(NPC, SpeakString("Стой! Я не хочу больше дратся!"));//Думаю понятно;
   ClearPersonalReputation(oPC, NPC);//Чистим репутацию;
   ClearPersonalReputation(NPC, oPC);//Чистим репутацию;
   ChangeToStandardFaction(NPC, STANDARD_FACTION_COMMONER);//Меняем фракцию на простолюдин; 
   //(можешь сам настроить на какую именно, набери в фильтре конст. STANDARD_FACTION*)
   DelayCommand(1.0f, AssignCommand(NPC, ActionStartConversation(oPC)));
   //Заставляем Npc говорить с игроком.
   }
}

PS: Lex исправил. :)

Сообщение отредактировал Dik Morris - Jan 6 2006, 12:51
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 6 2006, 12:47
Сообщение #1841


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

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



QUOTE (Dik Morris @ Jan 6 2006, 12:33)
  AssignCommand(oPC, ClearAllActions());//Чистим актионы у игрока;
  AssignCommand(NPC, ClearAllActions());//Чистим актионы у Npc;

так как это боевые действия, то надо ClearAllActions(TRUE) юзать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение Jan 7 2006, 03:38
Сообщение #1842


Level 8
***

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



QUOTE
дрался с ним и у НПС осталось 10
По поводу скрипта..
А если ХП меньше будет, тоесть в минуса. Ну герой типа все уже...
Пример:
Остется 11 ХП, и тут ПС ударяют ударом в 20ХП. Что будет?


ПС: Если приведенный выше скрипт переделать на ПС.

Сообщение отредактировал Nashman - Jan 7 2006, 03:39
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 7 2006, 03:53
Сообщение #1843


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

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



не раз говорил, что делать: вешать Immortale в начале такого боя и снимать в скрипте потом.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StalkerDtN
сообщение Jan 7 2006, 10:48
Сообщение #1844


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [Sn]



Привет всем!:vava:
Это опять я и опять с тем же вопросом.
Видимо, меня в пршлый раз не так поняли. Т.к. на свой вопрос в мануале ответа я не нашел (хотя возможно плохо искал). Я спрашивл не про то как с помощью toolset нарисоват полигон триггера в локации или поставить галочку на двери возле строчки - ловушка, меня интересует другое:
вот, к примеру, есть у меня локация. В искомой области на данный момент нет триггеров! (в toolsete ничего не рисовалось). Далее разговариваю я с каким-нибудь перцом и он мне придлагает поставить в таком-то месте какой-нибудь триггер я соглашаюсь и втом месте рисуется этот триггер (в моем случаи это ловушка).
Вот именно в этом и заключается вся сложность как это сделать?!
Пробывал из шаблона уже где-то нарисованного триггера сделать копию - неполучилось.
Очень вероятно, что все намного проще, чем мне кажется.
Заранее спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 7 2006, 14:17
Сообщение #1845


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

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



скриптами триггер не сделаеть.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StalkerDtN
сообщение Jan 7 2006, 17:46
Сообщение #1846


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [Sn]



Если нельзя скриптами сделать триггер, то как же вор создает ловушку в области?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 7 2006, 18:09
Сообщение #1847


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

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



движковыми скрытыми фунциями, которые нам не доступны.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Jan 7 2006, 19:52
Сообщение #1848


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



QUOTE (Lex @ Jan 7 2006, 14:17)
скриптами триггер не сделаеть.

Ой... И Encounter-ы тоже нельзя?..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение Jan 7 2006, 21:03
Сообщение #1849


Level 8
***

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



Привет,
У меня есть вопрос:
В ниже приведенном коде работает все, но не так как я этого хотел. Это для официантки в таверне. Она бегает между столиками(первые два вейпа) и барной стойкой и кухней. Она должна подойти к столику, подождать, а потом сказать фразу и сразу пойти далле к следующему вейпу... и так далее.

Код:
Neverwinter Script Source
void main()
{
object oW1 = GetWaypointByTag("ast_tavern1_001");
object oW2 = GetWaypointByTag("ast_tavern1_002");
object oW3 = GetWaypointByTag("ast_tavern1_003");
object oW4 = GetWaypointByTag("ast_tavern1_004");

object oNC = OBJECT_SELF;

string speek1 = "Что будете заказывать?";
string speek2 = "Вот Ваш заказ. Еще что-то?";
string speek3 = "Ваше пиво.";
string speek4 = "Извените, но мы такого не продаем.";

ActionDoCommand(ActionMoveToObject(oW1, FALSE, 1.0f));
ActionWait(2.0);

switch (Random(4)+1)
  {
  case 1:
  ActionDoCommand(ActionSpeakString(speek1, TALKVOLUME_TALK));
  break;

  case 2:
  ActionDoCommand(ActionSpeakString(speek2, TALKVOLUME_TALK));
  break;

  case 3:
  ActionDoCommand(ActionSpeakString(speek3, TALKVOLUME_TALK));
  break;

  case 4:
  ActionDoCommand(ActionSpeakString(speek4, TALKVOLUME_TALK));
  break;
  }
ActionWait(4.0);
ActionDoCommand(ActionMoveToObject(oW2, FALSE, 1.0f));
ActionWait(2.0);

switch (Random(4)+1)
  {
  case 1:
  ActionDoCommand(ActionSpeakString(speek1, TALKVOLUME_TALK));
  break;

  case 2:
  ActionDoCommand(ActionSpeakString(speek2, TALKVOLUME_TALK));
  break;

  case 3:
  ActionDoCommand(ActionSpeakString(speek3, TALKVOLUME_TALK));
  break;

  case 4:
  ActionDoCommand(ActionSpeakString(speek4, TALKVOLUME_TALK));
  break;
  }

ActionDoCommand(ActionMoveToObject(oW3, FALSE, 1.0f));
ActionWait(4.0);

ActionDoCommand(ActionMoveToObject(oW4, FALSE, 1.0f));
ActionWait(2.0);
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StalkerDtN
сообщение Jan 7 2006, 21:23
Сообщение #1850


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [Sn]



Привет Nashman!
Я так понимаю у тебя это на HB висит. Если так то скорее всего действия официантки накладываются друг на друга. Попробуй поставить в начало локальную переменную и делай проверку на завершение скрипта. Т.е если она пробежалась по всем точкам и все сказала, то только тогда скрипт запускается заново.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jan 8 2006, 01:23
Сообщение #1851


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

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



Лучше юзать ЮзерДеф с проверкой игрока в локации с НПС.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 8 2006, 01:28
Сообщение #1852


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

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



QUOTE (Aiwan @ Jan 8 2006, 01:23)
Лучше юзать ЮзерДеф с проверкой игрока в локации с НПС.

в начале ХБ дефолтового это есть уже.
Neverwinter Script Source
// * if not runnning normal or better Ai then exit for performance reasons
    if (GetAILevel() == AI_LEVEL_VERY_LOW) return;
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jan 8 2006, 02:23
Сообщение #1853


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

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



Nashman, во первых, тебе уже сказали, во вторых, помоему задержка между действиями маловата, а иногда слишком большая. Да и удобнее юзать DelayCommand.

QUOTE (Kavin @ Jan 7 2006, 20:52)
Ой... И Encounter-ы тоже нельзя?..

Тоже, как и тригеры!

Сообщение отредактировал -fenix- - Jan 8 2006, 02:27
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
NedWarN
сообщение Jan 8 2006, 06:30
Сообщение #1854


Level 5
**

Класс: Маг
Характер: Lawful Good
Раса: Тварь



Хелп, Мастера Скриптов.
У меня бешанная идея создать скрипт. Нападобии Диабло.
Чтобы можно было вставить Камень в Шмотку и она изменилась.
А думаю это невозможно. Помогите.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jan 8 2006, 09:54
Сообщение #1855


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

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



А почему бы не сделать так:
На оружие вешаешь особое свойство, при вызывании которого начинался бы диалог с оружие.
Там, строчки появ. в зависимости от тагов камней, потом на Action Takens можно повесить скрипт добавление свойства определенной вещи. (Функцию не помню, глянь в НотУ у кузнеца, во 2 компании.)
Просто и понятно. :)
QUOTE
создать скрипт.

Создаеться способом описанным выше макс. за 5 мин. Дерзай. ;)

Сообщение отредактировал Dik Morris - Jan 9 2006, 21:57
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StalkerDtN
сообщение Jan 8 2006, 13:07
Сообщение #1856


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [Sn]



Всем привет! :yes:
Плз, подскажите как работает "сумка просителя" в игре.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 8 2006, 14:26
Сообщение #1857


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

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



QUOTE (NedWarN @ Jan 8 2006, 06:30)
Хелп, Мастера Скриптов.
У меня бешанная идея создать скрипт. Нападобии Диабло.
Чтобы можно было вставить Камень в Шмотку и она изменилась.
А думаю это невозможно. Помогите.

можно конечно вариант Дика, но это не очень удобно.
На самом деле все проще и более функционально.
В 2да прописываются новые заклы, на камни эти заклы вешаются. Скрипт заклов - добавление свойств вещи.

Посмотри стандартные заклы.. например Light. Можно наложить его на вещь, можно на существо.
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Light
//:: NW_S0_Light.nss
//:: Copyright © 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Applies a light source to the target for
    1 hour per level

    XP2
    If cast on an item, item will get temporary
    property "light" for the duration of the spell
    Brightness on an item is lower than on the
    continual light version.

*/

//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Aug 15, 2001
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 22, 2001
//:: Added XP2 cast on item code: Georg Z, 2003-06-05
//:://////////////////////////////////////////////

#include "x2_inc_spellhook"

void main()
{

   // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run
    // this spell.
    if (!X2PreSpellCastCode())
    {
        return;
    }

    //Declare major variables
    object oTarget = GetSpellTargetObject();

    int nDuration;
    int nMetaMagic;

    // Handle spell cast on item....
    if (GetObjectType(oTarget) == OBJECT_TYPE_ITEM && ! CIGetIsCraftFeatBaseItem(oTarget))
    {
        // Do not allow casting on not equippable items
        if (!IPGetIsItemEquipable(oTarget))
        {
         // Item must be equipable...
             FloatingTextStrRefOnCreature(83326,OBJECT_SELF);
            return;
        }

        itemproperty ip = ItemPropertyLight (IP_CONST_LIGHTBRIGHTNESS_NORMAL, IP_CONST_LIGHTCOLOR_WHITE);

        if (GetItemHasItemProperty(oTarget, ITEM_PROPERTY_LIGHT))
        {
            IPRemoveMatchingItemProperties(oTarget,ITEM_PROPERTY_LIGHT,DURATION_TYPE_TEMPORARY);
        }

        nDuration = GetCasterLevel(OBJECT_SELF);
        nMetaMagic = GetMetaMagicFeat();
        //Enter Metamagic conditions
        if (nMetaMagic == METAMAGIC_EXTEND)
        {
            nDuration = nDuration *2; //Duration is +100%
        }

        AddItemProperty(DURATION_TYPE_TEMPORARY,ip,oTarget,HoursToSeconds(nDuration));
    }
    else
    {
        effect eVis = EffectVisualEffect(VFX_DUR_LIGHT_WHITE_20);
        effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
        effect eLink = EffectLinkEffects(eVis, eDur);

        nDuration = GetCasterLevel(OBJECT_SELF);
        nMetaMagic = GetMetaMagicFeat();
        //Enter Metamagic conditions
        if (nMetaMagic == METAMAGIC_EXTEND)
        {
            nDuration = nDuration *2; //Duration is +100%
        }
        //Fire cast spell at event for the specified target
        SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_LIGHT, FALSE));

        //Apply the VFX impact and effects
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(nDuration));
    }

}



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

можно конечно не заклами, а просто уникальным свойством камня. МБ тебе так проще будет, но суть одна: Вешать на камни это (наложение), а не на вещи.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
NedWarN
сообщение Jan 9 2006, 09:58
Сообщение #1858


Level 5
**

Класс: Маг
Характер: Lawful Good
Раса: Тварь



Dik Morris
Извени но ты не представляеш, как диалоги меня достали.
Lex
А я неумею Прописывать 2да, блин что делать.
И еще как сделать так чтоб при использовании закла, игрок стоял смирно и ничо не делал.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jan 9 2006, 12:03
Сообщение #1859


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

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



QUOTE (NedWarN @ Jan 9 2006, 10:58)
А я неумею Прописывать 2да, блин что делать.

Топать в форум по 2да и просить/спрашивать/учиться там!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение Jan 9 2006, 13:53
Сообщение #1860


Level 8
***

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



Привет,
Нужен совет!!
У меня есть сидячии НЕПИСИ. Можно им задать какую-нить анимацию. И можно их заставить разговаривать между собой не вставая?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 73 74 75 76 77 > » 
Ответить в эту темуОткрыть новую тему
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30th April 2025 - 22:29