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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
135 страниц V  « < 69 70 71 72 73 > »   
Ответить в эту темуОткрыть новую тему
> ОДИНОЧНЫЙ ВОПРОС, на любую тулсетовскую тему
Dik Morris
сообщение Sep 5 2006, 12:53
Сообщение #1746


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

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



1:

Размести в модуле вайпоинт с уже подготовленной пометкой.
(Только не забуть убрать галочку на св-ве: Map Note Enabled)
Далее, простой скрип на ActionTakes:

NSS
void main()
{
object oWP = GetWaypointByTag(""); // Здесь укажи Таг вайпоинта

SetMapPinEnabled(oWP, TRUE);
}


2:

В официальных модулях, это уже было реализовано. Посмотри там. (IMG:style_emoticons/kolobok_light/wink3.gif)

Сообщение отредактировал Dik Morris - Sep 5 2006, 12:57
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Misty Archer
сообщение Sep 5 2006, 17:11
Сообщение #1747


Level 2
*

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



По поводу второго ответа - можно поподробней.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Sep 5 2006, 18:08
Сообщение #1748


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

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



QUOTE(Misty Archer @ Sep 5 2006, 20:11) [snapback]91104[/snapback]
По поводу второго ответа - можно поподробней

Не думаю что поймешь.. но все же.
NSS
//:://////////////////////////////////////////////
//:: OnEnter  am_ten_skl_searh
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
  ПРИ УСПЕШНОЙ ПРОВЕРКЕ СКИЛА ПОИСК, СОЗДАЕМ Item.

ResRef создаваемого объекта равен локальному
стрингу на триггере, для всех классов CLASS_TYPE_ALL,
для всех остальных классов персонально для каждого:
CLASS_TYPE_BARBARIAN, CLASS_TYPE_FIGHTER и т.д.
Поле триггера KeyTag - сложность проверки скилла:
DC_EASY = 0; DC_MEDIUM = 1; DC_HARD = 2;
Флоат "DISTANCE" расстояние на котором создается
объект вокруг РС. Локалка "ACTION_MODE_DETECT"
устанавливает свойство триггера, он сработает только
когда РС в режиме обнаружения.

int CLASS_TYPE_BARBARIAN = 0;
int CLASS_TYPE_CLERIC    = 2;
int CLASS_TYPE_DRUID    = 3;
int CLASS_TYPE_FIGHTER  = 4;
int CLASS_TYPE_PALADIN  = 6;
int CLASS_TYPE_RANGER    = 7;
int CLASS_TYPE_INVALID  = 255;

nwscript

*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 31.12.2005 23:24 С новым Годом!
//:://///////////////////////////////////////////
#include "nw_i0_tool"
#include "am_inc_common"

void main()
{
  object oPC = GetEnteringObject();
  //object oHench = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC);
  object oSelf = OBJECT_SELF;
  string sMessage = GetName(oSelf); // Сообщение при обнаружении предмета PC
  string sHench1 = GetLocalString(oSelf, "HENCHMAN_string_1");
  string sHench2 = GetLocalString(oSelf, "HENCHMAN_string_2");
  string sHench3 = GetLocalString(oSelf, "HENCHMAN_string_3");
  string sHench4 = GetLocalString(oSelf, "HENCHMAN_string_4");
  string sHench5 = GetLocalString(oSelf, "HENCHMAN_string_5");
  float f = GetLocalFloat(oSelf, "DISTANCE"); // Расстояние от РС для находки
  if(f==0.0) f = 2.0; // Если нет, то по умолчанию 2 метра радиус
  location lLoc = CreateRandomLocation(oPC, f);
  int iDC = StringToInt(GetLockKeyTag(oSelf)); // Сложность проверки скилла
  if(!GetIsPC(oPC)||GetIsInCombat(oPC)||GetLocalInt(oSelf, "DEACTIVATED"))
      return;

  //-----------------------------------
  //    Ищем в списке помощников Алишан
  //-----------------------------------
  object oHench = GetObjectByTag("AM_HEN_ALISHAN");
  if(!GetIsAssociate(oPC, oHench))
  {
    oHench = OBJECT_INVALID;
  }
  //-----------------------------------

  if(!GetActionMode(oPC, ACTION_MODE_DETECT) && GetLocalInt(oSelf, "ACTION_MODE_DETECT"))
  {
    if (GetIsObjectValid(oHench)) // Хеньчман нас предупреждает, что тут что-то есть
    {
    if(!GetLocalInt(oSelf, "HENCHMAN_SPEAK"))
    {
      SetLocalInt(oSelf, "HENCHMAN_SPEAK", TRUE);
      DelayCommand(0.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_SEARCH)));
      DelayCommand(0.21, AssignCommand(oHench, SpeakString(sHench1)));
    }
    }
    if(GetGameDifficulty() == GAME_DIFFICULTY_EASY || !GetLocalInt(GetModule(), "DEBAG_PC"))
      SendMessageToPC(oPC, "<cу  >ВКЛЮЧИТЕ РЕЖИМ ОБНАРУЖЕНИЯ.</c>");
    return;
  }

  SetLocalInt(oSelf, "DEACTIVATED", TRUE);
  string sResRef = GetLocalString(oSelf, "CLASS_TYPE_ALL");  // Предмет для всех
  string sB = GetLocalString(oSelf, "CLASS_TYPE_BARBARIAN"); // Каждому персонально
  string sC = GetLocalString(oSelf, "CLASS_TYPE_CLERIC");
  string sF = GetLocalString(oSelf, "CLASS_TYPE_FIGHTER");
  string sP = GetLocalString(oSelf, "CLASS_TYPE_PALADIN");
  string sR = GetLocalString(oSelf, "CLASS_TYPE_RANGER");
  string sD = GetLocalString(oSelf, "CLASS_TYPE_DRUID");

  int iBestClass = GetCreatureBestClass(oPC); // Ищем лучший класс мультиклассов

  // Дебаг класса
  string sClass;
  if(iBestClass==0) sClass="BARBARIAN";
  if(iBestClass==2) sClass="CLERIC";
  if(iBestClass==3) sClass="DRUID";
  if(iBestClass==4) sClass="FIGHTER";
  if(iBestClass==6) sClass="PALADIN";
  if(iBestClass==7) sClass="RANGER";
  Debug("Лучший класс игрока - "+sClass);

  if(sResRef=="") // Если создаем предметы для классов
  {
    // Приравняем ResRef-ы к единому значению взяв от каждого класса
    if(iBestClass==0) sResRef=sB;  if(iBestClass==6) sResRef=sP;
    if(iBestClass==2) sResRef=sC;  if(iBestClass==7) sResRef=sR;
    if(iBestClass==4) sResRef=sF;  if(iBestClass==3) sResRef=sD;
  }

  if(AutoDC(iDC, SKILL_SEARCH, oPC))
    {
    if(sResRef != "")
    {
        object oItem = CreateObject(OBJECT_TYPE_ITEM, sResRef, lLoc);
        AssignCommand(oPC, PlayVoiceChat(VOICE_CHAT_LOOKHERE));
        string sRunScript = GetLocalString(oSelf, "RUN_SCRIPT");
        if(sRunScript!="")
        DelayCommand(2.0, ExecuteScript(sRunScript, oItem));
        if(sMessage == "Предмет + [Текст над РС]" || sMessage =="Item + [Текст над РС]")
          sMessage = "";
        AssignCommand(oPC, SpeakString(sMessage));
        SendMessageToPC(oPC, "<c у >Вы обнаружили предмет.</c>");
        AssignCommand(oPC, ClearAllActions());
        AssignCommand(oPC, ActionDoCommand(SetFacingPoint(GetPositionFromLocation(lLoc))));
        DelayCommand(0.3, SetCommandable(FALSE, oPC));
        DelayCommand(2.0, SetCommandable(TRUE, oPC));

        if (GetIsObjectValid(oHench))
        {
          AssignCommand(oHench, ClearAllActions());
          AssignCommand(oHench, SetFacingPoint(GetPositionFromLocation(lLoc)));

          if(GetLocalInt(oSelf, "HENCHMAN_SPEAK"))
          {
            DelayCommand(3.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_YES)));
            DelayCommand(3.21, AssignCommand(oHench, SpeakString(sHench2)));
          }
          else
            {
              DelayCommand(3.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_GOODIDEA)));
              DelayCommand(3.21, AssignCommand(oHench, SpeakString(sHench3)));
            }
      }
    }
    else
        {
          // Если мы забыли написать ResRef предметов, то ошибка
          Debug("<cу  >ОШИБКА!</c> Не могу создать объект. Нет ResRef-а для класса - "+sClass);
        }
    }
    else
        {
          if(GetLocalInt(oSelf, "HENCHMAN_SPEAK"))
          {
              AssignCommand(oPC, PlayVoiceChat(VOICE_CHAT_CANTDO));
              AssignCommand(oPC, SpeakString("Я ничего не вижу."));
              DelayCommand(3.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_NO)));
              DelayCommand(3.21, AssignCommand(oHench, SpeakString(sHench4)));
              DelayCommand(6.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_MOVEOVER)));
              DelayCommand(6.21, AssignCommand(oHench, SpeakString(sHench5)));

          }
        }
}

Рандомную локацию глянь код в теме базы скриптов.

Вешается на он ентр триггера.
NSS
location CreateRandomLocation(object oTarget, float fRadius, int bOnLine = TRUE)
{
if(!bOnLine)
fRadius=IntToFloat(Random(FloatToInt(fRadius)));

float iXO=VectorMagnitude(GetPosition(oTarget))*cos(VectorToAngle(GetPosition(oTarget)));
float iYO=VectorMagnitude(GetPosition(oTarget))*sin(VectorToAngle(GetPosition(oTarget)));
float fRndomAngle=IntToFloat(Random(360));
location lNEW=Location(GetArea(oTarget),Vector(iXO+fRadius*cos(fRndomAngle),iYO+fRadius*sin(fRndomAngle)),360.0);
return lNEW;
}


int GetCreatureBestClass(object oCr)
{
    int class1 = GetClassByPosition(1, oCr);
    int class2 = GetClassByPosition(2, oCr);
    int class3 = GetClassByPosition(3, oCr);
    int classlev1, classlev2, classlev3;
    classlev1 = GetLevelByClass(class1, oCr);
    if (class2 != CLASS_TYPE_INVALID)
        classlev2 = GetLevelByClass(class2, oCr);
    if (class3 != CLASS_TYPE_INVALID)
        classlev3 = GetLevelByClass(class3, oCr);
    int BestClass = class1;
    if (classlev1 < classlev2)
        BestClass = class2;
    if (classlev2 < classlev3)
        BestClass = class3;
    return BestClass;
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Misty Archer
сообщение Sep 7 2006, 16:22
Сообщение #1749


Level 2
*

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



Спасиб, будем разбираться (IMG:style_emoticons/kolobok_light/biggrin.gif) .
Опять новый вопрос:
1 хочу вставить в книгу рисунок карты, возможно ли это?
2 можно ли сделать что-то типа проверки на ловкость при вскрытии замков
( так же хочу сделать в модуле отмычки которые будут влиять на результат этой проверки если их держать в руках, как это зделать)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Sep 7 2006, 17:37
Сообщение #1750


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

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



1. Нет.
2. Слот OnUnlocked. Проверка идет и так. Отмычки делай как в палитре + к скилу открыть замок. Вот тебе скрипт на экспу. Мож поправить чо надо.
NSS
//:://////////////////////////////////////////////
//:: OnUnlocked am_dul_unlocked
//:: Copyright © 2004 WRG!
//:://////////////////////////////////////////////
/*
              УНИВЕРСАЛЬНЫЙ СКРИПТ
    РАЗДЕЛЕНИЕ ХР ЗА ОТКРЫТИЕ-ОБЕЗВРЕЖИВАНИЕ
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 09.05.2004
//:://////////////////////////////////////////////
#include "nw_i0_tool"
void main()
{
int iL = GetLockUnlockDC(OBJECT_SELF);
int iT = GetTrapDisarmDC(OBJECT_SELF);
object oDisarmed = GetLastDisarmed();
object oUnlocked = GetLastUnlocked();
//================ ОТКРЫВАЕМ ЗАМОК ================
if ((!GetLocalInt(OBJECT_SELF, "UNLOCKED"))&&(GetIsObjectValid(oUnlocked)))
  {
  SetLocalInt(OBJECT_SELF, "UNLOCKED", TRUE);
  if (HasItem(oUnlocked,GetLockKeyTag(OBJECT_SELF))) return;
  if (GetIsPC(oUnlocked)) // Если замок вскрыл РС
    {
    GiveXPToCreature(oUnlocked, (iL * GetHitDice(oUnlocked)/3));
    // XP = DC двери умноженное на 1/3 уровень РС
    return;
    }
  else // Если замок вскрыл Henchman
    RewardPartyXP((iL*2), GetMaster(oUnlocked));
    // XP = DC двери умноженное на 2
  return;
  }
//=============== ОБЕЗВРЕЖИВАЕМ ЛОВУШКУ ============
if ((!GetLocalInt(OBJECT_SELF, "DISARMED"))&&(GetIsObjectValid(oDisarmed)))
  {
  SetLocalInt(OBJECT_SELF, "DISARMED", TRUE);
  if (HasItem(oDisarmed,GetTrapKeyTag(OBJECT_SELF))) return;
  if (GetIsPC(oDisarmed)) // Если ловушку обезвредил РС
    {
    GiveXPToCreature(oDisarmed, (iT * GetHitDice(oDisarmed)/3));
    // XP = DC ловушки умноженное на 1/3 уровень РС
    return;
    }
  else // Если ловушку обезвредил Henchman
    RewardPartyXP((iT*2), GetMaster(oDisarmed));
    // XP = DC ловушки умноженное на 2
  }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Sep 7 2006, 20:40
Сообщение #1751


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



Столкнулся с проблемой, меняю внешность у существа при помощи функции SetCreatureAppearanceType. Параметр AppearanceType задаю число из 2da файла(appearance). У меня создана своя модель и забита в хаке. Так вот, когда внешность должна меняться НПС просто пропадает. Подскажите в чём проблема. Может быть ошибка в хаке?

Сообщение отредактировал Milfes - Sep 7 2006, 22:58
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Sep 10 2006, 03:49
Сообщение #1752


Level 4
**

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



У меня проблема с патчем 1.68, в частности с плащами:
-Можно ли их перекрашивать?
-Двигаются ли они вообще?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Sep 10 2006, 08:24
Сообщение #1753


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

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



1. Можно.
2. Двигаются.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Sep 10 2006, 18:42
Сообщение #1754


Level 4
**

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



(IMG:style_emoticons/kolobok_light/biggrin.gif) Сенк.

Сообщение отредактировал Batkom - Sep 10 2006, 19:52
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 11 2006, 12:44
Сообщение #1755


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

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



QUOTE(Milfes @ Sep 7 2006, 21:40) [snapback]91261[/snapback]
Столкнулся с проблемой, меняю внешность у существа при помощи функции SetCreatureAppearanceType. Параметр AppearanceType задаю число из 2da файла(appearance). У меня создана своя модель и забита в хаке. Так вот, когда внешность должна меняться НПС просто пропадает. Подскажите в чём проблема. Может быть ошибка в хаке?

а в тулсете если ты пытаешься НПС сделать свою модель, она нормально отражается? мб у тебя с моделью глюк и она просто в игре не видна.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Sep 11 2006, 16:30
Сообщение #1756


Level 5
**

Класс: Друид
Характер: Lawful Neutral
Раса: Человек



Нет, сама модель отображается нормально.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Sep 11 2006, 16:37
Сообщение #1757


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

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



Milfes, нужно учитывать еще расу существа. Скажем, если раса гном - то внешность человека ему никак не установить. (Имею в виду APPEARANCE_TYPE_HUMAN)


А если и попытатся - то NPC, как раз и исчезает. (IMG:style_emoticons/kolobok_light/wink3.gif)

Сообщение отредактировал Dik Morris - Sep 11 2006, 16:52
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 11 2006, 17:14
Сообщение #1758


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

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



QUOTE(Dik Morris @ Sep 11 2006, 17:37) [snapback]91493[/snapback]
Milfes, нужно учитывать еще расу существа. Скажем, если раса гном - то внешность человека ему никак не установить. (Имею в виду APPEARANCE_TYPE_HUMAN)

с чего ты взял?? вполне можно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Sep 11 2006, 17:29
Сообщение #1759


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

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



Действительно.

Lex, но я точно помню что в 1.66 у меня так не получалось сделать. (IMG:style_emoticons/kolobok_light/pleasantry.gif)

Сообщение отредактировал Dik Morris - Sep 11 2006, 17:29
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Diamond
сообщение Sep 15 2006, 17:02
Сообщение #1760


Level 2
*

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



У меня вопрос по технической части Туллсета. В скриптах вместо русских букв какая то абракадабра. Патч с сайта WRG, который позволяет использовать букву "я" у меня установлен. Без русских букв как то хреново...

Сообщение отредактировал Diamond - Sep 15 2006, 17:02
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Sep 15 2006, 17:28
Сообщение #1761


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

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



Поставь шрифт Courer
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Sep 17 2006, 13:56
Сообщение #1762


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



Кто сможет выложить скрипт на появления строки в диалоге один рас.
К примеру, непись мне что-то говорит, а у меня три варианта ответа и после использования какой небудь строки, при повторной попытки поговорить с неписем тот вариант исчезает, остается только два.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Sep 17 2006, 14:04
Сообщение #1763


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

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



Артём, тебе бы следовало изучить работу локальных переменных. Статей на эту тему, есть ВЕЛИКОЕ множество, ссылки давать не буду - сам найдешь, если внимательно почитаешь форум, сайт.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Sep 17 2006, 14:26
Сообщение #1764


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



Будь человеком дай пару ссылок. (IMG:style_emoticons/kolobok_light/sad.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Sep 17 2006, 14:31
Сообщение #1765


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

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



http://www.city-of-masters.ru/forums/index.php?showtopic=867
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Sep 17 2006, 16:35
Сообщение #1766


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



Способа щяс буду учить.

То что я искал там нет.

Ладно буду дожидаться НВН 2 вот там и буду учить скрипты.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Sep 17 2006, 17:14
Сообщение #1767


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

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



А это не то??
QUOTE
ВОПРОС
Здраствуйте, я вот тут захотел сделать простейший стационарный квест, но в этом я полный 0.
1) Как сделать чтобы при первом разгооре игрока с НПС показывался первый диалог;
2) После первого разговора включался второй диалог;
3) Как сделать проверку на наличие предмета у игрока? Например ели у игрока есть например ключ ему включался определеный диалог (тоесть вот смотри пункт 2, идет второй диалог. и там спрашивають.ты добыл ключ? говориш да, и делаеться проверка на наличие)
4) После того как квест выполнен включался следующий диалог


ОТВЕТЫ
Делается очень легко - с пмощью Локальных переменных...

Как ты мог догадатсья, полистав словарик или просто почитав надписи в тулсете при создании конверсейшна:
TextAppearsWhen - значит "Текст появляется когда..." и там нужно выбрать скрипт. Это значит что в скрипте задаются условия появления. (кстати там есть визард)
ActionTaken - значит "Предпринимаемое действие" (или типа того), то есть - что-то происходит после того как игрко выбрал этот ответ в диалоге, или НПЦ вышел на ветку с этим скриптом... Тут опять же есть визард.
Визард (Wizard) - помощник создания простых скриптов, отображается как шапочка...

Итак, теперь рассказываю подробнее...
Мы создаем все три ветки (для данного примера):

- Привет, игрок
-- Привет, нпц!
- Есть ключ?
-- Есть (проверка)
-- Нету
- Молодец, ты справился с квестом! Терь вали отсюдова!

На первом диалоге (Привет, игрок) вешаем скрипт проверки локальной переменной, например назовем её - quest_prog (quest progress). Для этого можно использовать визард (пока в плане скриптинга обьяснять не буду - запустите визард, посмотрите на код и надеюсь все поймете) - визард в TextAppearsWhen (ТекстПоявляетсяКогда) - и там выбираем Local Variable, выбираем: int (числовая переменная, целая (не дробная)), пишем название переменной (q_prog), is less than (меньше чем), constant int (заданное число), 1.
Далее на продолжении первого диалога ("привет, нпц!") вешаем скрипт (можно опять же визардом) на создании переменной q_prog и задачи ей числа 1. Set Local Variable (Задать локальную переменную), int, q_prog, constant int, 1.
Теперь переходим к второй ветке диалога (есть ключ?) - надпись будет высвечиваться если q_prog равно 1. (Думай разберешься как сделать проверку ), ну а на ответе: (Есть) - делать првоерку на ключ... Опять же визардом: Item in Inventory и там вписываем тэг вещицы (лучше писать не попамяти - акопировать и вставлять...). Ну и Action Taken - присваиваем q_prog значение 2.
И последнюю ветку вешаем првоерку, если q_prog равен 2.

Раз стат квест - значит надо выдать награду. Выдавать награду можно опять же через ActionTaken (Give Rewards)... Примечание: если хочешь наградить вещью - то там надо вписывать ResRef вещит, а не тэг.

Кстати попутно с квестом можно вести запись в дневнике (закладочка - Others... там думаю разберешься)
ПРИМЕЧАНИЕ №1: Локальные переменные - остаюстя на игроке, так что в следущем квесте не используй переменную q_prog...
ПРИМЕЧАНИЕ №2: Если хорошо подумаете - то сможете это все еще оптимизирвоать и улучшить... (хоят бы для повышения переменной - не обязательно использоват ьнесколько разных скриптов )

Еще есть тут: http://www.city-of-masters.ru/forums/index...ost&p=48763

Сообщение отредактировал -fenix- - Sep 17 2006, 17:43
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Sep 17 2006, 18:28
Сообщение #1768


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



Я хотел, чтобы скрипт не менял строку, а убирал одну из них.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Sep 17 2006, 18:33
Сообщение #1769


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

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



Артём, убрать ты НИКАК не сможешь. (Т.е стереть.)
Нужно ставить условие при котором появляется строка, (проверка локальной переменной, значение 0 & FALSE) потом собственно устанавливать эту локальную переменную. (ActionsTakes, при выборе данной строки)
Читай мануал, там это подробно расписано.


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

Сообщение отредактировал Dik Morris - Sep 17 2006, 18:41
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Sep 17 2006, 19:37
Сообщение #1770


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



QUOTE(Артём @ Sep 17 2006, 20:36) [snapback]91887[/snapback]

Вот скрипт на появления текста один рас в день.
[/nss]
int StartingConditional()
{
object oPC = GetPCSpeaker();
int nDay = GetCalendarDay();
if (GetLocalInt(oPC, "once_a_day_phrase") != nDay)
{
SetLocalInt(oPC, "once_a_day_phrase", nDay);
return TRUE;
}
return FALSE;
}
[nss]
Мне нужно почти тоже самое только чтобы он появлялся ни каждый день а всего 1 рас.
Или такога скрипта нет? (IMG:style_emoticons/kolobok_light/biggrin.gif)



Сообщение отредактировал Артём - Sep 17 2006, 19:37
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

135 страниц V  « < 69 70 71 72 73 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 17th July 2025 - 03:15