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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 50 51 52 53 54 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Pather
сообщение Jun 10 2005, 13:17
Сообщение #1261


Level 1


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



minion
Насчет 75 строк ты, наверно, перепутал. Есть ограничение 75 действий в очереди команд. Скажем, если ты приказал персу скастовать подряд на себя 10 разных спеллов, то иконки этих действий выстроятся в левом верхнем углу и он их по очереди выполнит. То же самое, когда ты даешь объекту команду через скрипт. И вот их очередь не может превышать 75.

Никаких ограничений на размер скриптов для предмета нет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 10 2005, 13:27
Сообщение #1262


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



Pather
Спасибо это я уже понял. Вот кто бы мне второй вопрос по скрипту ответил. mamuc предложил, но его пока нет. Может кто еще знает?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение Jun 10 2005, 14:22
Сообщение #1263


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



ммм я вроде уже написал ,каким образом следовалобы это делать в общих чертах...
пожалуй напишу кокретный пример:
предположим что тот инклюд где ты определил структуру и написал SetupLab(nComboNumber) назыветься
craftspell_inc, тогда на OnClose сундука надо будет повесить примерно такой скрипт проверки наличия компонентов и , при успешной проверки, уничтожение компонентов и создание результата
Neverwinter Script Source
#include "craftspell_inc"

int CheckComponent(object oBox,struct stRec stR)
{
    int C1,C2,C3,C4;
    while (GetIsObjectValid(oItem))
    {
        if (GetTag(oItem)==stR.req1) C1 = TRUE;
        if (stR.req2=="" || GetTag(oItem)==stR.req2) C2 = TRUE;
        if (stR.req3=="" || GetTag(oItem)==stR.req3) C3 = TRUE;
        if (stR.req4=="" || GetTag(oItem)==stR.req4) C4 = TRUE;
        oItem = GetNextItemInInventory(oBox);
    }
    if (C1&&C2&&C3&&C4) return TRUE;
    return FALSE;
}


void main()
{
    object oBox = OBJECT_SELF;
    object oItem = GetFirstItemInInventory(oBox);
    if (!GetIsObjectValid(oItem)) return;
    int nComboNumber;
    // zdesj zadajesh tebe nuzhnim sposobom  znachenije nComboNumber
    // chtobi mozhno bilo bi vzjatj iz include craftspell_inc
    // strukturu skomponentami i rezuljtatom
    struct stRec stR;
    stR = SetupLab(nComboNumber);
    if(CheckComponent(oBox, stR))
    {
        oItem = GetFirstItemInInventory(oBox);
        while (GetIsObjectValid(oItem))
        {
            if (GetTag(oItem)==stR.req1) DestroyObject(oItem);
            if (GetTag(oItem)==stR.req2) DestroyObject(oItem);
            if (GetTag(oItem)==stR.req3) DestroyObject(oItem);
            if (GetTag(oItem)==stR.req4) DestroyObject(oItem);
            oItem = GetNextItemInInventory(oBox);
        }
        CreateItemOnObject(stR.rez,oBox);
    }
}

п.с. поскольку я человек ленивый, то за основу взял скрипт из соседней темы написаный Лехсом :yes:

как видишь количество компонентов в рецепте здесь не используеться

Сообщение отредактировал mamuc - Jun 10 2005, 14:30
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 10 2005, 14:38
Сообщение #1264


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



mamuc Спасибо! все супер! :good: Но это все будет работать, если ингридиенты просто положить в сундук. А если мне надо что бы при кастовании определенного спелла?
Все равно спасибо за пример. Им я тоже воспользуюсь! :good:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение Jun 10 2005, 14:48
Сообщение #1265


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



QUOTE
А если мне надо что бы при кастовании определенного спелла?

ну тогда надо будет смодифицировать этот скрипт не ставить его наOnClose сундука,а пустить его через спеллхук например ..про спеллхук тут есть весьма подробно обьясненнопросто полистай темы и почитай
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Scaled
сообщение Jun 11 2005, 04:41
Сообщение #1266


Level 3
*

Класс: Волшебник
Характер: True Neutral
Раса: Человек



javascript:ins("mamuc")
То есть проще говоря float - это дробное число.
А на примере какого-нибудь скрипта, а то я не очень сооброжу важность этого

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

Да вот еще хотел спросить: вот есть скрипт такой проверка простейшая наличия 1000 монет у игрока, основаный на if и else
как привизать его к диалогу,чтобы при наличии попадать на одну ветьв диалога, а при отсутствии на другую?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Tiger Greyhawk
сообщение Jun 11 2005, 06:27
Сообщение #1267



Иконки Групп

Класс: Обыватель
Характер: Chaotic Good
Раса: Человек
NWN: Скриптинг [Sn]



1.
QUOTE (Scaled @ Jun 11 2005, 05:41)
То есть проще говоря float - это дробное число. А на примере какого-нибудь скрипта, а то я не очень сооброжу важность этого

в разных функциях используются разные числа. Если функция использует float, то именно число с
плавующей точкой и надо писать: void ActionMoveToObject(object oMoveTo, int bRun=FALSE, float fRange=1.0f). Т.е. : ActionMoveToObject(oWP, FALSE, 2.5); крич подойдет на расстояние 2.5 метра до oWP.
А если int, то именно int и надо void JumpToObject(object oToJumpTo, int nWalkStraightLineToPoint=1)
Т.е. JumpToObject(oWP, 3); крич "прыгнет" к третьему oWP по счету от предмета с которого запустился скрипт... здесь же не может быть 3.5 по счету предмет...
2.
QUOTE (Scaled @ Jun 11 2005, 05:41)
Обьясните как замкнуть диалог, т. е. когда есть в диалоге некое главное меню и после рассказа одной истории происхдит возвращение в начало, ан е выход из диалога.

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


З.Ы. Лекс или Лем, в вопросах и ответах я не нашел этого :xz:

3.
QUOTE (Scaled @ Jun 11 2005, 05:41)
Да вот еще хотел спросить: вот есть скрипт такой проверка простейшая наличия 1000 монет у игрока, основаный на if и else как привизать его к диалогу,чтобы при наличии попадать на одну ветьв диалога, а при отсутствии на другую?



QUOTE (Lex @ Feb 12 2005, 23:02)
ВОПРОС Есть диалог, в котором должно быть две ветки. Первая, в случае истинности условия, вторая в случае его ложности. Объясните поподробнее, куда должен вставляться скрипт и как его писать. (условие - наличие оружие в руках героя).

ОТВЕТЫ Ставишь один лишь скрипт на TextAppearsWhen в первой ветке. Neverwinter Script Source int StartingConditional() { object oPC = GetPCSpeaker(); if (GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC) != OBJECT_INVALID){ // оружие в руке return FALSE; } return TRUE; }

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Jun 11 2005, 14:12
Сообщение #1268


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Вот такая проблема. Не умею работать с DataBase, но необходимо сохранить стринг(сохранить его так, чтобы он пережил рестарт.)
Вот скрипт-инклюд:
Neverwinter Script Source
//##############################
//##############################

void SendMessageToAllPlayers( string sMessage );

void SendMessageToAll( string sMessage );

void CheckAccount( object oPC );

//##############################

void SendMessageToAllPlayers( string sMessage )
{
object oPlayer = GetFirstPC();
while( GetIsObjectValid( oPlayer ) )
  {
  SendMessageToPC( oPlayer, sMessage );
  oPlayer = GetNextPC();
  }
}

void SendMessageToAll( string sMessage )
{
SendMessageToAllDMs( sMessage );
SendMessageToAllPlayers( sMessage );
}

void CheckAccount( object oPC )
{
object oStore = "IPaddress";
string sStoreName = GetPCIPAddress( oPC );
string sAccount = GetCampaignString( oStore, sStoreName );

if( ( sAccount != GetPCPlayerName( oPC ) ) && ( sAccount != "" ) )
  {
  string sMessage = GetName( oPC ) + ". " + "Зафиксирована смена аккаунта. " + sAccount + " -> " + GetPCPlayerName( oPC );
  SendMessageToAll( sMessage );
  }
SetCampaignString( oStore, sStoreName, GetPCPlayerName( oPC ) );

}

Тестирую на Windows-сервере. До рестарта смену аккаунта засекает, после нет. :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 11 2005, 18:19
Сообщение #1269


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



mamuc К примеру поставитть его на ОнСпеллКастедЭт? И как я предложил с самого начала отслеживать кастуемый спелл и затем проверять к какому комбо он подходит. Пошел работать. Позже выложу что у меня получилось.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jun 11 2005, 21:22
Сообщение #1270


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



Ребят от чистого сердца прошу, помогите мне.
Постараюсь объяснить на пальцах. У меня задумка, Игрок входит в дом, пройдётся по нему посмотрит всё и пойдёт обратно, а дверь закрылась как так? И попытается найти выход, и тут попадется ему странная полка он отодвинет её и найдёт потайной путь в подземелье.
А теперь по русски. Мне нужно чтобы ПК вошел в локу и Дверь закрылась, и открыть её можно было бы, только определённым ключом, если ПК кликнет на дверь то начнётся разговор, с самим собой, и. Только после этого можно будет использовать полку, и поговорить с ней. Я понимаю скрипт сложный. Но самому мне не справится. :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 11 2005, 21:30
Сообщение #1271


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



Для начала на событие локации ОнЭнтер повесь скрипт, который закроет дверь. На ОнЮзед двери повесь скрипт, который будет выполняться один раз. Т.е. запускать сам диалог. Следующая часть скрипта должна проверять на наличие ключа в рюкзаке. Если такого нет то сказать что дверь закрыта. Если есть то отпирать дверь и дестроить ключ. Вроде так.
Добавлено в [mergetime]1118514915[/mergetime]
На ОнЭнтер Вешаешь что-то типа:
Neverwinter Script Source
void main ()
{
  object oDoor = GetObjectByTag ("sdes` pewew` tag dveri");
  ActionCloseDoor (oDoor);
  SetLocked (oDoor, TRUE);
}

Добавлено в [mergetime]1118515322[/mergetime]
На ОнЮзед вешаешь что-то типа:
Neverwinter Script Source
void main ()
{
  int iDoOnce = 0;
  if (iDoOnce != 1)
  {
      &#092;&#092; сдесь начинаешь говорить с ПС
      iDoOnce = 1;
      &#092;&#092; и создаешь свою полку
  }
  &#092;&#092;сдесь проверяешь наличие ключа
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jun 12 2005, 01:29
Сообщение #1272


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



minion Насчёт первого скрипта я понел.
А вот насчёт второго, извени но обсалютно ничего, я просто скрипты плохо знаю.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 12 2005, 15:32
Сообщение #1273


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



вот примерный скрипт:
Neverwinter Script Source
void ActionCreateObject (string sCreature, location lLoc)
{
    CreateObject(OBJECT_TYPE_PLACEABLE, sCreature, lLoc);
}

int PlayerHasItem(object oPC, string s)
{
    return  GetIsObjectValid(GetItemPossessedBy(oPC, s));
}

void main()
{
    object oPC = GetEnteringObject ();
    object oDoor = GetObjectByTag ("zdes piwew tag dveri")
    string sPolka = "zdes piwew resref polki, kotoruu sozdaem";
    location locPolka = GetLocation (GetWaypointByTag ("zdes piwew tag triggera mesta gde budet polka"))
    if (GetLocalInt (oPC, "DoOnce") == 0)
    {
        ActionStartConversation (oPC, "zdes piwew resref dialoga");
        ActionCreateObject (sPolka, locPolka);
        SetLocalInt (oPC, "DoOnce", 1); //teper dialog budet rabotat odin raz
    }
    //teper proveryaem nali4ie klu4a
    if (PlayerHasItem (oPC, "zdes piwew tag klu4a kotorim otkrivaetsya dver"))
    {
        SetLocked (oDoor, FALSE);
        ActionOpenDoor (oDoor);
        DestroyObject (GetObjectByTag ("zdes piwew tag klu4a"));
    }
    else
    {
        AssignCommand (oPC, SpeakString ("Sorry!! The door is locked!"));
    }

}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 12 2005, 16:17
Сообщение #1274


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

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



У меня такой вопросик. Если нужно сделать кутсцену в самом начале модуля, типа это сон герою снится, то как быть с запуском скрипта. Тут говорили, что на онэнтер локи скрипты ставить не льзя, они глючить будут. А если в начале скрипта черный экран сделать секунды на 3, это прокатит?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 12 2005, 17:13
Сообщение #1275


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



Не знаю у меня висит на ОнЭнтер и работает нормально.
Я дописал свой скрипт!!! Огромное спасибо за помощь Aiwanу и отдельное спасибо mamucу. Теперь все готово и работает. Вот скрипт.
Этот кусок обзываем как spell_items_0
Neverwinter Script Source
struct stRec
{
    string req1;
    string req2;
    string req3;
    string req4;
    string req5;
    string rez;
};//sozdaem structuru dlya kombinacij

struct stRec SetupLab (int nSpellID)
{
    struct stRec stR;
    switch (nSpellID)
    {
        case 115:    //kislotnaya strela melfa
            stR.req1 = "NW_IT_MSMLMISC12"// bolotnaya yagoda
            stR.req2 = "NW_IT_MSMLMISC09"// glaz rakwasa
            stR.req3 = "NW_IT_MSMLMISC10"// yazik slaada
            stR.req4 = "NW_IT_MSMLMISK08"// bruho ognennogo guka
            stR.rez = "NW_IT_MRING004";    // to 4to hotim polu4it
            break;
        case 107:                          // volwebnaya raketa
            stR.req1 = "NW_IT_MSMLMISC12";
            stR.req2 = "NW_IT_MSMLMISC10";
            stR.req3 = "NW_IT_MSMLMISK14";//4erep gorgul`i
            stR.rez = "NW_IT_MBOOTS004";
            break;
    }
    return stR;
}

int CheckOneItem (string sItem, struct stRec strItem)
{
    if ((sItem == "") || (sItem == strItem.req1) || (sItem == strItem.req2) || (sItem == strItem.req3) || (sItem == strItem.req4) || (sItem == strItem.req5))
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

int CheckFirstItem (string sItem, struct stRec strItem)
{
    if ((sItem == strItem.req1) || (sItem == strItem.req2) || (sItem == strItem.req3) || (sItem == strItem.req4) || (sItem == strItem.req5))
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

int CheckComponent (struct stRec stR, object oBox)
{
    int C1,C2,C3,C4,C5;
    object oItem = GetFirstItemInInventory (oBox);
    while (GetIsObjectValid (oItem))
    {
        if (CheckFirstItem (GetTag(oItem), stR)) C1 = TRUE;
        if (CheckOneItem (GetTag(oItem), stR)) C2 = TRUE;
        if (CheckOneItem (GetTag(oItem), stR)) C3 = TRUE;
        if (CheckOneItem (GetTag(oItem), stR)) C4 = TRUE;
        if (CheckOneItem (GetTag(oItem), stR)) C5 = TRUE;
        oItem = GetNextItemInInventory (oBox);
    }
    if (C1&&C2&&C3&&C4&&C5) return TRUE;
    return FALSE;
// proveryaet sootvetstvuet li to 4to mi pologili v sunduk s kombinaciej

void BadResult ()
{
    object oPC = GetLastSpellCaster ();
    int nDamage = d20() * 2;
    effect eVis = EffectVisualEffect (VFX_IMP_FLAME_S);
    effect eDam = EffectDamage (nDamage, DAMAGE_TYPE_FIRE);
    DelayCommand (0.6, ApplyEffectToObject (DURATION_TYPE_INSTANT, eVis, oPC));
    DelayCommand (0.6, ApplyEffectToObject (DURATION_TYPE_INSTANT, eDam, oPC));
// esli ne sootvetstvuet nanosim povregdeniya

void CreateLabItem (int nCastedSpell)
{
    struct stRec stR;
    stR = SetupLab (nCastedSpell);
    if(CheckComponent(stR, OBJECT_SELF))
    {
        object oItem = GetFirstItemInInventory(OBJECT_SELF);
        while (GetIsObjectValid(oItem))
        {
            DestroyObject(oItem); // uni4togaem ob`ekti
            oItem = GetNextItemInInventory(OBJECT_SELF);
        }
        CreateItemOnObject(stR.rez);
    }
    else
    {
        BadResult ();
    }
}  // sozdaem vew,

вот основной скрипт
Neverwinter Script Source
#include "spell_items_0"
void main()
{
    CreateLabItem (GetLastSpell ());
}

Aiwan и mamuc :good: :good: :good:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jun 12 2005, 19:52
Сообщение #1276


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



Куча вопросов, блин. Вы уж простите. Но помогите. :D
1.Как использовать функцию AktionAttak.
2. У Тулсете есть специальные триггеры битвы. Называется «Раскрасить Встретившихся». Дак вот как мне задать точку, чтобы именно от туда появлялись монстры.
3. Дайте, пожалуйста, скриптик, чтобы если Уничтожено 4 объекта с определенными Тегами. То строка в диалоге появится, если нет то нет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 12 2005, 21:50
Сообщение #1277


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

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



2Мефистофель

1.
void ActionAttack(object oAttackee, int bPassive=FALSE)

object - это объект, на который будет происходить атака.
int bPassive - атака в пассивном (если стоит TRUE) или в активном режиме (если стоит FALSE)

2.
Цитата из Aurora Toolset Айвана. Прочитай его.
QUOTE

Если оставить наш encounter нарисованным на локации в виде большой области, то монстры
появятся по всему периметру. Если вам необходимо, чтобы нападение произошло из заданной
точки, то нужно нажать на очерченный encounter правой кнопкой мыши и выбрать пункт "Add
spawn point" (Рис. 46). Появится стрелка, указывающая на черный треугольник, этот
треугольник и будет точкой spawn'а монстров. Точек spawn'а может быть несколько, сделайте
их и перетащите мышкой в нужное место.
Рис. 46.
Важно! При точках spawn'а монстры будут появляться лицом в ту сторону, в которую
направлена самая маленькая сторона, являющаяся основанием равнобедренного
треугольника. И монстры будут появляться только из той точки, которая находится
перед наступившим на область encounter'а объектом (NPC, PC). Выглядит это так: вы
делаете encounter и ставите три точки spawn'а в разные стороны. С какой бы стороны вы
не подошли, противник всегда будет появляться в точке перед вами.
И еще один слот – OnExhausted. Он срабатывает, если вы выбрали опцию "Single-Shot
spawn" и в локации исчезли все противники.


Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jun 13 2005, 00:45
Сообщение #1278


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



2-fenix-
Спасиб, а вот готовый скрипт про атаку взгянуть, можно а то я так ничё не понимаю.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 13 2005, 13:31
Сообщение #1279


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

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



2Мефистофель

3.

На OnDeath челов ставим это.

Neverwinter Script Source
void main()
{
  object oChel = GetObjectByTag ("Тег чела с кем базарить");

  SetLocalInt(oChel, "Первый чел, Второй, Третий, четвертый", 1);
}


А на проверку фразы это

Neverwinter Script Source
int StartingConditional()
{
    if(GetLocalInt(OBJECT_SELF, "Первый чел") == 1 &&

    GetLocalInt(OBJECT_SELF, "Второй чел") == 1 &&

    GetLocalInt(OBJECT_SELF, "Третий чел") == 1 &&

    GetLocalInt(OBJECT_SELF, "Четвертый чел") == 1)
        {
        return TRUE;
        }
    return FALSE;
}


Добавлено в [mergetime]1118684998[/mergetime]
QUOTE
Спасиб, а вот готовый скрипт про атаку взгянуть, можно а то я так ничё не понимаю.


Вот переделка скрипта на разговор

Neverwinter Script Source
void main()
{
  if(GetLocalInt(OBJECT_SELF, "Первый чел") == 1 &&

    GetLocalInt(OBJECT_SELF, "Второй чел") == 1 &&

    GetLocalInt(OBJECT_SELF, "Третий чел") == 1 &&

    GetLocalInt(OBJECT_SELF, "Четвертый чел") == 1)
    {
    ActionAttack(GetPCSpeaker(), False);
    }
}


Если все эти локальные переменные равны 1, то Чел будет атаковать заговорившего PC в активном режиме(а, что это значет ХЗ).

З.Ы Объясните, что значат эти режимы ПЛИЗЗЗ.

Сообщение отредактировал -fenix- - Jun 13 2005, 20:49
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Scaled
сообщение Jun 14 2005, 05:13
Сообщение #1280


Level 3
*

Класс: Волшебник
Характер: True Neutral
Раса: Человек



Приветствую всех.

Как сделать в модуле, чтобы встреча спавнилась только ночью или только днем?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение Jun 14 2005, 10:28
Сообщение #1281


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



Neverwinter Script Source
if (GetIsDay())
    {
          // i tut to chto nado delatj dnem
          //dlja nochi  pohozhe
    }


Сообщение отредактировал mamuc - Jun 14 2005, 10:28
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 14 2005, 12:16
Сообщение #1282


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

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



Том III находится тут
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 14 2005, 12:19
Сообщение #1283


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

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



Том II находится тут
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Scaled
сообщение Jun 15 2005, 12:44
Сообщение #1284


Level 3
*

Класс: Волшебник
Характер: True Neutral
Раса: Человек



Маmuc

Это понятно, я не знаю как активизировать эту размещаемую встречу.
Добавлено в [mergetime]1118828800[/mergetime]
Вот наступает ночь и встреча должна работать, а когда пиходит день - нет. Как это сделать?
Добавлено в [mergetime]1118828896[/mergetime]
Я хочу понять как активизировать встречу.

Во спросил :yes:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DBColl
сообщение Jun 15 2005, 13:06
Сообщение #1285


4-х Кубовый
Иконки Групп

Класс: Некромант
Характер: Lawful Evil
Раса: Человек
NWN: Скриптинг [Sn]
Проклятие Левора



Scaled

Цитирую из Lexicon'а:
QUOTE

SetEncounterActive(int, object)

Sets an encounter to active or inactive.

void SetEncounterActive(int bNewValue, object oEncounter = OBJECT_SELF);



Parameters

bNewValue
TRUE if the encounter is active, otherwise FALSE.

oEncounter
The encounter to set active or inactive. (Default: OBJECT_SELF)



Description

Set oEncounter's active state to nNewValue.
When an encounter is exhausted it will set itself to be "not active".
If your encounter is set for "Continuous" respawns, it will reset itself to "active" each time the Respawn Time lapses.
If you want to use the SetEncounterActive function to control exactly when the encounter is active then you need to use the "Single Shot" setting on the encounter.



Remarks

From Victor Morales:
I have tried the SetEncounterActive function to spawn creatures at different times of the day. For example, I only wanted the undead in a cemetery to spawn if it was nighttime.
If the encounter active flag is set to FALSE to begin with (in the encounter GUI window when the encounter is created) then the SetEncounterActive function will spawn them properly the first time. It seems that the creatures are set to spawn before the OnEnter event is checked for validity. In addition, once the active flag is set it won't revert until the next time the encounter is triggered.
So I would have undead that would spawn at night properly, but once they spawned - if the time changed to day they would spawn at least one more time during daylight hours. Then the trigger would work properly again.
I tried to make it reset the active flag to active OnEnter, then the creatures would spawn, and to reset it to inactive OnExit. However, that didn't work either and the behavior stayed the same.
You can draw a trigger around the encounter and call this function from OnEnter of that trigger instead as a workaround.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 50 51 52 53 54 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 4th May 2025 - 19:11