Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103
Batkom
Начал делать систему лута, работает следующим образом, на месте трупа создается спец.контейнер (инвизибл плесбл) юзаемый и с инвентарем, а там уже создаются рандомно сокровища используя стандартный скрипт, можно ли сделать так, чтобы при этом труп монстра оставался некоторое время, грубо говоря всем монстрам(включая стандартных) увеличить время разложения, а все дополнительные итимы(то, что вызывается с помощью функции craft_drop_items) перенести в контейнер
Добавлено в 04:45
Нашел как замедлить разложение трупа
Neverwinter Script Source
AssignCommand(OBJECT_SELF, SetIsDestroyable(FALSE, FALSE, FALSE));
DelayCommand(300.0, AssignCommand(OBJECT_SELF, SetIsDestroyable(TRUE, FALSE, FALSE)));

Дело в том, что помимо моей системы лута мне также нужна функция craft_drop_items
Но тогда придется ждать 5 минут, пока труп исчезнет и даст взять мешочек с остальным бредом(кровь из дракона, зуб из бодака, палец из скелета и тд и тп)

Вот кусок скрипта смерти моба на настоящий момент
Neverwinter Script Source
if (!((GetClassByPosition(1, OBJECT_SELF)==CLASS_TYPE_ANIMAL)||(GetClassByPosition(1, OBJECT_SELF)==CLASS_TYPE_VERMIN)||(GetIsPC(oKiller)== FALSE)))
    {
    object oTreasure = CreateObject(OBJECT_TYPE_PLACEABLE, "ресреф контейнера", GetLocation(OBJECT_SELF));
    /*


                                         >>тут уясняется какие треасуры при каких условиях создавать в контейнере, но этот текст длинный и в данном случае бесполезный<<

    */

    AssignCommand(OBJECT_SELF, SetIsDestroyable(FALSE, FALSE, FALSE));
    DelayCommand(300.0, destroy(oTreasure)); //эта функция дестроит контейнер и  все предметы в нем
    DelayCommand(300.0, AssignCommand(OBJECT_SELF, SetIsDestroyable(TRUE, FALSE, FALSE)));
    }
    craft_drop_items(oKiller); //вот собсно как переместить итемы создаваемые этой функцией в контейнер?

Добавлено в 04:58
Вроде бы нашел решение
в скрипте x2_inc_compon
в воиде функции
там где определяется object oSelf нужно заменить на
object oSelf = GetNearestObjectByTag("тег контейнера", OBJECT_SELF, 1);

Пока на практике все это не проверял, но работать поидее должно.
Zirrex
Batkom а вот этот кусок кода зачем?

Neverwinter Script Source
if (!((GetClassByPosition(1, OBJECT_SELF)==CLASS_TYPE_ANIMAL)||(GetClassByPosition(1, OBJECT_SELF)==CLASS_TYPE_VERMIN)||(GetIsPC(oKiller)== FALSE)))

Особенно мне непонятно, что делает тут условие, что это не игрок. Зачем? Ты его на скрипт смерти модуля что ли ставишь? И с классами не надо. Лучше уж так:

Neverwinter Script Source
if (GetRacialType(OBJECT_SELF) == RACIAL_TYPE_ANIMAL ||
        GetRacialType(OBJECT_SELF) == RACIAL_TYPE_ABERRATION ||
        GetRacialType(OBJECT_SELF) == RACIAL_TYPE_MAGICAL_BEAST ||
        GetRacialType(OBJECT_SELF) == RACIAL_TYPE_BEAST ||
        GetRacialType(OBJECT_SELF) == RACIAL_TYPE_VERMIN)
    {

Код переноса всех вещей в контейнер:
Neverwinter Script Source
object oLootEQ = GetFirstItemInInventory(oDeadNPC);

while (GetIsObjectValid(oLootEQ))
{
    AssignCommand(oTreasure, ActionTakeItem(oLootEQ, OBJECT_SELF));
    oLootEQ = GetNextItemInInventory(oDeadNPC);
}

Просто, тебе надо все крафтовые вещи создавать вначале не у убийцы "oKiller", а у жертвы "OBJECT_SELF".

Посмотри еще разные системы лута, набрав тут Neverwinter Vault слово "loot".
Dik Morris
Daemonix!
Это не так уж сложно как кажется большинству новичков, смотри:
1) - Создаешь своего персонажа (ну с кем диалог должен быть непрерывным)
2) - Вокруг его рисуешь триггер ( не очень большой но и не очень малой)
3) - На onEnter тригерра вешаешь вот этот скрипт (предварительно посмотри скрипт, и поставь в нем тэг)
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
object oNPC = GetObjectByTag("Тэг твоего НПС");

SetCutsceneMode(oPC);

AssignCommand(oNPC, ClearAllActions());
AssignCommand(oPC, ClearAllActions());
ActionDoCommand(AssignCommand(oPC, SetFacingPoint(GetPosition(oNPC))));
ActionDoCommand(AssignCommand(oNPC, SetFacingPoint(GetPosition(oPC))));
ActionDoCommand(AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_FIREFORGET_GREETING, 1.0,6.6f)));
ActionDoCommand(AssignCommand(oPC, ActionStartConversation(oNPC)));

if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "TRIGGER") == 1)
return;
SetLocalInt(OBJECT_SELF,"TRIGGER",1);

}

Тогда НПС начнет диалог... НО! На последнюю ветку в диалоге во кладку СОВЕРШЕНЫ ДЕЙСТВИЯ засунь вот этот скриптик yes.gif
Neverwinter Script Source
void main()
{
object oPC = GetPCSpeaker();
object oNPC = GetObjectByTag("Тэг твоего НПС");
ActionWait(3.5);
ActionDoCommand(AssignCommand(oNPC, ActionDoCommand(SetCutsceneMode(oPC, FALSE))));
}

Все... yahoo.gif
-fenix-
Dik Morris, проверку и установку переменной наверное надо делать в начале!
А то бедных неступившых неписей колбасит, а потом оказывается, что они тут не причем.
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
object oNPC = GetObjectByTag("Тэг твоего НПС");

  if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "TRIGGER") == 1)
    {
    return;
    }

    {
    SetLocalInt(OBJECT_SELF,"TRIGGER",1);
    SetCutsceneMode(oPC);

    AssignCommand(oNPC, ClearAllActions());
    AssignCommand(oPC, ClearAllActions());
    ActionDoCommand(AssignCommand(oPC, SetFacingPoint(GetPosition(oNPC))));
    ActionDoCommand(AssignCommand(oNPC, SetFacingPoint(GetPosition(oPC))));
    ActionDoCommand(AssignCommand(oNPC, 
    ActionDoCommand(AssignCommand(oNPC,ActionPlayAnimation
    (ANIMATION_FIREFORGET_GREETING, 1.0,6.6f)));
    ActionDoCommand(AssignCommand(oPC, ActionStartConversation(oNPC)));
    }
}


И вопросик, чем открыть расширение erf?
Daemonix
Спасибо Dik Morris, спасибо -fenix-!
Я в ближайшее время попробую. А пока что пробую сделать НЕЛИНЕЙНЫЙ сюжет, с ветками, хотя конечный результат всегда один и тот же... crazy.gif
Dik Morris
Daemonix !
QUOTE
Я в ближайшее время попробую. А пока что пробую сделать НЕЛИНЕЙНЫЙ сюжет, с ветками, хотя конечный результат всегда один и тот же...

Хм... А вот как НЕЛИНЕЙНЫЙ сюжет то может быть с одним и тем же результатом? unsure.gif
Ведь нелинейность и заключается в том, что результаты то разные! Свобода, так сказать...
Это конечно хорошо, но вот свой сюжет можешь, пришлешь на мыло? Просто глянуть охота, да заодно и подсказать что.
Мыло: DikMorris@yandex.ru
Daemonix
Dik Morris!
Да, кстати, хорошая идейка! Обязательно пришлю. Хотя я и до конца не додумал. Но пришлю что есть.
Добавлено в [mergetime]1122290425[/mergetime]
Кстати вот, проверь почтарь. Я вроде уже пререслал.
Aiwan
QUOTE (Dik Morris @ Jul 25 2005, 13:48)
Это конечно хорошо, но вот свой сюжет можешь, пришлешь на мыло? Просто глянуть охота, да заодно и подсказать что.

QUOTE (Daemonix @ Jul 25 2005, 15:24)
Да, кстати, хорошая идейка! Обязательно пришлю. Хотя я и до конца не додумал. Но пришлю что есть.

Так рождаются новые команды rolleyes.gif
Кхе Кхе... Молодежь! Тут вам не форум MTV, так что еще будете тут спамить и флудить получите по затылку. Можете не отвечать, примите к сведению.
Batkom
просто у меня лут зависит от уровня убийцы, а если это ловушка или фам, то уже совсем нето
Добавлено в [mergetime]1122298155[/mergetime]
-fenix- erf это файлы с ресурсами, создаются\открываются с помощью файл\импорт-експорт в тулсете
они не содержат моделек или еще чего, они содержат только спиок характеристик, координат, еще чего или скрипт. Экспортировать\импортировать в 1.66 можно все что душе угодно, от локаций до конфигурации магазинов.
Vitalist
В скриптах я разбираюсь не больше, чем в уголовном кодексе Мозамбика, поэтому скажите, что нужно нацарапать, чтоб перс появился в начале игры в нужной мне экипировке (к примеру, в руках одно оружие)? Заранее благодарен.
Batkom
Сенк, все сделал, теперь все отлично работает.
Теперь решил написать гильдию убийц, которая позволяет заказывать одних игроков другим.
Приходит игрок, говорит ниписю что хочет заказать чара, появляется набор ответов с именами игрков.
Вот собственно как вставить список игроков в диалог
-fenix-
QUOTE (Vitalist @ Jul 25 2005, 19:06)
В скриптах я разбираюсь не больше, чем в уголовном кодексе Мозамбика, поэтому скажите, что нужно нацарапать, чтоб перс появился в начале игры в нужной мне экипировке (к примеру, в руках одно оружие)? Заранее благодарен

Посмотри в Базе скриптов вот этот пост "Лито Jan 27 2005, 21:00".

QUOTE (Batkom @ Jul 25 2005, 20:57)
Теперь решил написать гильдию убийц, которая позволяет заказывать одних игроков другим. Приходит игрок, говорит ниписю что хочет заказать чара, появляется набор ответов с именами игрков. Вот собственно как вставить список игроков в диалог

Тебе тоже туды

СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ"
ЦИКЛ "СКРИПТЫ ДЯДЮШКИ MILEZ'А"
Zirrex
Batkom это не так просто, как кажется на первый взгляд. Если ты когда-нибудь видел посохи DMFI, то там есть подобный скрипт. Чтобы его тут продемонстрировать, страницы не хватит. Вкратце, там с помощью токенов создается нужный диалог, и потом, выбирая определенный пункт меню, можно делать что угодно с тем персонажем, который выбран. Посмотри на Ваулте этот набор. Набери в поиске слово "DMFI".
DEM
Batkom, а ты представь что играют игроков 60-70...
Аваддон
DEM А ты представь что NWN сервер больше 60ти игроков не тянет pardon.gif Можно разбить на 6 страниц по 10 игроков в алфавитном порядке.
Zirrex
Аваддон кто тебе сказал, что он не тянет больше 64 человек? Я несколько раз натыкался через GameSpy на сервера, которые поддерживают 96 человек, и даже были моменты, когда такие сервера оказывались заполнены под завязку. Наши сервера может быть и не тянут, но зарубежные, легко.

Что у нас с базой скриптов случилось? Выдает на 2-ой и 3-ей страницах ошибку сервера.
DEM
Аваддон, а ты представь что есть один ШАРД, на котором играет больше 100 игроков good.gif Там почти как онлайн игра получилась... buba.gif
Batkom
я и собираюсь делать акцент на массовость
З.Ы. Аваддон спасибо за гильдовую систему, я оттуда много идей почерпнул
Аваддон
Zirrex DEM Я не представляю как вы собираетесь сделать ХОРОШИЙ ШАРД. Нелагающий при народе в 40 игроков. Если тока нпс и скрипты к минимуму свести.
zmey
Я выдрал из хака модели деревьев, прописал их в 2da файле и сунул в другой хак. Подключил к модулю, а стволы у них - белые, блин, без текстур. об чём тут дело? black eye.gif crazy.gif
Добавлено в [mergetime]1122385767[/mergetime]
Хм, забыл совсем... у меня несколько связаных модулей, и мне надо, чтобы непись во втором модуле узнал о смерти непися в первом. как это реализовать? crazy.gif
Добавлено в [mergetime]1122385790[/mergetime]
..... знаю, что вопрос тупой....
balrog
QUOTE
Я выдрал из хака модели деревьев, прописал их в 2da файле и сунул в другой хак. Подключил к модулю, а стволы у них - белые, блин, без текстур. об чём тут дело? 

ТЫ забыл выдрать вместе с деревьями все их текстуры ё моё. Найди в том хаке нужные тебе текстуры и скопируй вместе с деревьями. Текстуры могут быть так *.tag так и *.plt расширения. Советую скачать коли ещё не имеешь НВН Эксплорер с ваулта, он тебе наверняка пригодится и облегнчет труд ешо ни раз.
Vitalist
-fenix-, что-то я не нашел там такой даты dntknw.gif . Может так напишите (если можно поподробнее)?
Zirrex
Аваддон лично я этого делать не собираюсь, мне хватает на шарде 20-25 человек ежедневно. Просто заметил, что такие шарды существуют.

zmey если только через базу данных, которая будет записывать информацию на одном сервере, и передавать на другой. Как именно это реализовать, я не знаю, ибо подобное не приходилось делать.
Aiwan
QUOTE (zmey @ Jul 26 2005, 19:40)
Подключил к модулю, а стволы у них - белые, блин, без текстур. об чём тут дело?

Ищи в модели текстовой, по строкам bitmap. Выдаст все текстуры модели.
-fenix-
QUOTE (Vitalist @ Jul 26 2005, 19:34)
-fenix-, что-то я не нашел там такой даты dntknw.gif . Может так напишите (если можно поподробнее)?

Он там есть, наверно просто время не то dntknw.gif
В любом случае, там кажись для шарда, а для сингла(у тебя ведь сингл?) наверно и так пойдет.

Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject(); // это PC
object oStore = GetModule(); // это модуль
int PCClass = GetClassByPosition(1, oPC); // класс PC

if(GetLocalInt(oStore, "DAL") != 1)// проверка

{
  SetLocalInt(oStore, "DAL", 1);
  object oItem = GetFirstItemInInventory (oPC);
  while(GetIsObjectValid(oItem)) // чистим инвентарь у PC
    {
    DestroyObject(oItem);
    oItem = GetNextItemInInventory (oPC);
    }
  int i=0;
  while(i<14)// чистим слоты у PC
    {
    DestroyObject(GetItemInSlot(i, oPC));
    i++;
    }
  switch (PCClass) // согласно классу одеваем PC
    {
        case CLASS_TYPE_BARBARIAN:
        {
            GiveGoldToCreature(oPC, 500); // кол-во золота
            CreateItemOnObject("ResRef", oPC); // предмет
            break;
        }
        case CLASS_TYPE_BARD:
        {
            GiveGoldToCreature(oPC, 500);
            CreateItemOnObject("ResRef", oPC);
            break;
        }
        case CLASS_TYPE_CLERIC:
        {
            GiveGoldToCreature(oPC, 500);
            CreateItemOnObject("ResRef", oPC);
            break;
        }
        case CLASS_TYPE_DRUID:
        {
            GiveGoldToCreature(oPC, 500);
            CreateItemOnObject("ResRef", oPC);
            break;
        }
        case CLASS_TYPE_FIGHTER:
        {
            GiveGoldToCreature(oPC, 500);
            CreateItemOnObject("ResRef", oPC);
            break;
        }
        case CLASS_TYPE_MONK:
        {
            GiveGoldToCreature(oPC, 500);
            CreateItemOnObject("ResRef", oPC);
            break;
        }
        case CLASS_TYPE_PALADIN:
        {
            GiveGoldToCreature(oPC, 500);
            CreateItemOnObject("ResRef", oPC);
            break;
        }
        case CLASS_TYPE_RANGER:
        {
            GiveGoldToCreature(oPC, 500);
            CreateItemOnObject("ResRef", oPC);
            break;
        }
        case CLASS_TYPE_ROGUE:
        {
            GiveGoldToCreature(oPC, 500);
            CreateItemOnObject("ResRef", oPC);
            break;
        }
        case CLASS_TYPE_SORCERER:
        {
            GiveGoldToCreature(oPC, 500);
            CreateItemOnObject("ResRef", oPC);
            break;
        }
        case CLASS_TYPE_WIZARD:
        {
            GiveGoldToCreature(oPC, 500);
            CreateItemOnObject("ResRef", oPC);
            break;
        }
    }
}
}

Можно еще написать, чтоб давл предметы в зависимости от расы или еще чего, как хочешь.
Vitalist
-fenix-, мог бы ты ещё написать КУДА мне это вводить? И вот ещё: нужно чтобы просто убралась вся экипировка и инвентарь.
-fenix-
QUOTE (Vitalist @ Jul 27 2005, 19:36)
-fenix-, мог бы ты ещё написать КУДА мне это вводить?

Кидать это в OnClientEnter модуля.
QUOTE (Vitalist @ Jul 27 2005, 19:36)
И вот ещё: нужно чтобы просто убралась вся экипировка и инвентарь.

Тогда оставь только удаление, а раздачу предметов сотри!
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject(); // это PC
object oStore = GetModule(); // это модуль
int PCClass = GetClassByPosition(1, oPC); // класс PC

if(GetLocalInt(oStore, "DAL") != 1)// проверка

{
  SetLocalInt(oStore, "DAL", 1);
  object oItem = GetFirstItemInInventory (oPC);
  while(GetIsObjectValid(oItem)) // чистим инвентарь у PC
    {
    DestroyObject(oItem);
    oItem = GetNextItemInInventory (oPC);
    }
  int i=0;
  while(i<14)// чистим слоты у PC
    {
    DestroyObject(GetItemInSlot(i, oPC));
    i++;
    }
}
}
Zirrex
-fenix- если уж совсем верно, то нужно писать так:

Удаление надетых вещей:
Neverwinter Script Source
int i;

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

    if (GetIsObjectValid(oEquip)) DestroyObject(oEquip);
}

И проверять лучше не на переменную, а на функцию определения опыта:
Neverwinter Script Source
if (!GetXP(oPC)) // т.е. равно 0
{
    // требуемый код
}

Иначе после каждого рестарта будет все по новой lol.gif Но после выполнения всего скрипта надо написать следующее:

Neverwinter Script Source
if (!GetXP(oPC))
{
    SetXP(oPC, 1);
}

С золотом можно еще так:
Neverwinter Script Source
int StartGold = 0;

if (StartGold == 0)
{
    if (GetLevelByClass(CLASS_TYPE_BARBARIAN, oPC))      StartGold = d4(5) * 100;
    else if (GetLevelByClass(CLASS_TYPE_BARD, oPC))      StartGold = d4(4) * 100;
    else if (GetLevelByClass(CLASS_TYPE_CLERIC, oPC))    StartGold = d4(4) * 100;
    else if (GetLevelByClass(CLASS_TYPE_DRUID, oPC))    StartGold = d4(4) * 100;
    else if (GetLevelByClass(CLASS_TYPE_FIGHTER, oPC))  StartGold = d4(6) * 100;
    else if (GetLevelByClass(CLASS_TYPE_MONK, oPC))      StartGold = d4(4) * 100;
    else if (GetLevelByClass(CLASS_TYPE_PALADIN, oPC))  StartGold = d4(5) * 100;
    else if (GetLevelByClass(CLASS_TYPE_RANGER, oPC))    StartGold = d4(5) * 100;
    else if (GetLevelByClass(CLASS_TYPE_ROGUE, oPC))    StartGold = d4(6) * 100;
    else if (GetLevelByClass(CLASS_TYPE_SORCERER, oPC))  StartGold = d4(3) * 100;
    else if (GetLevelByClass(CLASS_TYPE_WIZARD, oPC))    StartGold = d4(3) * 100;
    else                                                StartGold = d4(4) * 100;
}
GiveGoldToCreature(oPC, StartGold - GetGold(oPC));
Daemonix
У меня тут вопросик возник:
как сделать так, чтобы непись после разговора пошёл и сел на диван и там и сидел?
У меня есть скрипт для дивана
CODE

void main()
{
AssignCommand (OBJECT_SELF, ActionSit (GetObjectByTag ("диван")));
}

Но куда его вставлять?
Добавлено в [mergetime]1122535728[/mergetime]
И еще вопрос:
когда игрок говорит с каким-либо неписем, то камера во время продолжительного разговора ставится немного вправо и назад. А можно ли поменять на свой вкус положение камеры при разговоре?
Dik Morris
QUOTE
Но куда его вставлять?

На ХерБит ставь...
QUOTE
У меня тут вопросик возник:
как сделать так, чтобы непись после разговора пошёл и сел на диван и там и сидел?

В строчку диалога на вкладку Совершены Действия поставь вот этот скриптик:
Neverwinter Script Source
void main()
{
object oNPC = GetObjectByTag("Тэг НПС");
AssignCommand (oNPC, ActionSit (GetObjectByTag ("Тэг дивана")));
}
Daemonix
Dik Morris!
А ты уверен, что это заработает? Помнишь Нерила? Вот на него я и хочу поставить. Диалог кончается, а вместе с ним и катсцена. И он уходит на диван...
Добавлено в [mergetime]1122543664[/mergetime]
Я имею в виду на хартбите.
-fenix-
QUOTE (Zirrex @ Jul 27 2005, 21:49)
-fenix- если уж совсем верно, то нужно писать так:

Через for оно конечно нагляднее.
QUOTE (Zirrex @ Jul 27 2005, 21:49)
И проверять лучше не на переменную, а на функцию определения опыта:

А если мне не надо давать и 1 опыта в начале!? Ты так жестко это говоришь, типа надо так и ни как иначе.
QUOTE (Zirrex @ Jul 27 2005, 21:49)
Иначе после каждого рестарта будет все по новой

Вот не земетил я такого! И после рестарта и после загрузки, все нормально, по второму разу не выдается!


QUOTE (Zirrex @ Jul 27 2005, 21:49)
С золотом можно еще так:

Ух, что только мое извращенное crazy.gif воображение не предумывало с этим золотом (тут перечислять не буду) biggrin.gif

QUOTE (Daemonix @ Jul 28 2005, 10:26)
когда игрок говорит с каким-либо неписем, то камера во время продолжительного разговора ставится немного вправо и назад. А можно ли поменять на свой вкус положение камеры при разговоре?

На сколько я понимаю, то это не изменить. Можно только в разговоре в кутсценке это отменить и выставить свой наклон.
Vitalist
-Fenix-, бАльшое тебе спасибище! Не знаю, что бы вез вас делал...
zmey
извиняюсь, что вопросы в разные темы.... - интернет медленный, (ВЫРЕЗАНО ЦЕНЗУРОЙ)!

ежели не жалко, идейку подкиньте, как сделать, чтобы непись шел к случайно выбранному WP из нескольких известных? crazy.gif
Добавлено в [mergetime]1122548275[/mergetime]
.............как запретить респаун?
Добавлено в [mergetime]1122548514[/mergetime]
.....ссылку на нвн эксплорер, плиз... yes.gif crazy.gif
Auren
QUOTE (zmey @ Jul 28 2005, 13:49)
ежели не жалко, идейку подкиньте, как сделать, чтобы непись шел к случайно выбранному WP из нескольких известных? 


Используй switch() а в нем Random(int x)

QUOTE (zmey @ Jul 28 2005, 13:49)
.............как запретить респаун?


На ondeath модуля функцию PopUpDeathGUIPanel(oPC,FALSE,TRUE,0, sDeathMessage);

Vhall
QUOTE (zmey @ Jul 28 2005, 13:49)
....ссылку на нвн эксплорер, плиз... yes.gif crazy.gif
Zirrex
QUOTE
Вот не земетил я такого! И после рестарта и после загрузки, все нормально, по второму разу не выдается!

Такое работает только при условии, если переменная сохраняется, и постоянно остается равной 1, даже после рестарта, если же нет, то итог прост, обработка скрипта происходит вновь.

Почему я аргументирую, что надо. Потому что по моему пути этого именно надо, так как переменной нету. По твоему пути надо сохранять переменную. Получается, что одно и тоже.
Daemonix
Вот у меня тута недоразумение. Есть такой скрипт.

CODE
void main()
{
object oPC = GetPCSpeaker();
object oNPC = GetObjectByTag("neril");
ActionWait(1.5);
AssignCommand (oNPC, ActionSit (GetObjectByTag ("nerilhome2_sofa")));
ActionDoCommand(AssignCommand(oNPC, ActionDoCommand(SetCutsceneMode(oPC, FALSE))));
}

Стоит на последней строке разговора. Непись бежит на диван, но катсцена не кончается почему-то...
А если убрать строку про диван, то всё пашет!
Никто не знает, почему?
DEM
Я конечно не скриптёр года, Но может попробуй так?
Neverwinter Script Source
DelayCommand(SetCutsceneMode(oPC,FALSE));


Может и не праильно, тогда извеняюсь black eye.gif this.gif
Daemonix
Не, Dem, всё равно не пашет.. this.gif

У меня тут, если не сложно, 2ой вопрос:
используя приведённый выше код непись БЕЖИТ к стулу, сломя голову. А можно ли сделать так, чтобы он просто шёл, а не бежал, как все нормальные люди?
DEM
Да.. это даже я знаю biggrin.gif (без обид) Вместо FALSE, ставь TRUE (и наоборот)...
И как всегда говрит Lex:"Зачем даёться кнопка NSS?" biggrin.gif
Агрессинг
Daemonix
QUOTE
AssignCommand (oNPC, ActionSit (GetObjectByTag ("nerilhome2_sofa")));
ActionDoCommand(AssignCommand(oNPC, ActionDoCommand(SetCutsceneMode(oPC, FALSE))));
}

Ты посмотри, у тебя в сите сразу Assing идет. Вставь ActionDoCommand.
ЗЫ
А вообще по мне так удобнее пользоваться Дилеем.
Zirrex
А не проще ли вначале подойти к софе, а уж только потом сесть на нее?

Neverwinter Script Source
void main()
{
    object oPC = GetPCSpeaker();
    object oNPC = OBJECT_SELF;
    object oSofa = GetNearestObjectByTag("nerilhome2_sofa");

    ActionWait(1.5);
    AssignCommand(oNPC, ActionMoveToObject(oSofa, FALSE, 1.0));

    // проверка, не сидит ли уже кто-то на софе.
    if (!GetIsObjectValid(GetSittingCreature(oSofa)))
    {
        AssignCommand(oNPC, ActionSit(oSofa));
    }
    ActionDoCommand(SetCutsceneMode(oPC, FALSE));
}

И не надо никаких задержек, все действия начинаются только тогда, когда заканчиваются предыдущие действия, единственное решение с командой "ActionDoCommand", когда у функции нету такого начала, как "Action".

DEM функция задержки пишется так:

Neverwinter Script Source
DelayCommand(0.0, SetCutsceneMode(oPC,FALSE)); // где 0.0 - время;
Daemonix
Ну не знаю, Zirrex, не компилирует, ссылаясь на ошибку в строке:
CODE
AssignCommand(oNPC, ActionMoveToObject(oSofa, FALSE, 1.0);
-fenix-
Daemonix, скобку там забыли.
Neverwinter Script Source
AssignCommand(oNPC, ActionMoveToObject(oSofa, FALSE, 1.0));

Пользуйся кнопкой NSS


Хы, а еще вот тут не хватает biggrin.gif
Neverwinter Script Source
if (!GetIsObjectValid(GetSittingCreature(oSofa )))

Ведать в спешке писали
Zirrex
Daemonix иногда полезно думать, а не просто копировать, тем более все ошибки редактор выделяет, когда происходит какой-нибудь казус при компиляции. Писал, я, и правда, в спешке, поэтому забыл расставить скобки, но скрипт работает, как надо.

Поправил свое сообщение, чтобы никого не смущало smile.gif
-fenix-
Блин, люди не как не могу понять, как заставить чела скастовать спел на другого чела. Можно через
Neverwinter Script Source
DelayCommand(165.0, AssignCommand(***, ActionCastSpellAtObject(тут спелл, o***, METAMAGIC_ANY, TRUE, 0)));

У чела нет умения, но с TRUE он кажись должен скастануть!

И еще, как наложить эффекты.
Я про те для которых нужна точка "выхода", тобишь молнии всякии.
Можно заставить чела их произвести на другого, а то пишу вот так и ни чего
Neverwinter Script Source
DelayCommand(173.0, AssignCommand(о***, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(тут эффект), o***)));


Все уже разобрадся в чем дело victory.gif
Daemonix
Zirrex
QUOTE
Daemonix иногда полезно думать, а не просто копировать, тем более все ошибки редактор выделяет, когда происходит какой-нибудь казус при компиляции. Писал, я, и правда, в спешке, поэтому забыл расставить скобки, но скрипт работает, как надо.


Я понял, просто я в скриптах почти не разбираюсь, да и сам их не пишу, а клею из кусочков чужих скриптов. Так что без обид. yes.gif
Ferst
QUOTE (-fenix- @ Jul 29 2005, 21:23)
Блин, люди не как не могу понять, как заставить чела скастовать спел на другого чела. Можно через

1. Сначала Assign, а _потом_ делей. Вполне возможно, что исчезает тот объект, от которого делается событие за столько минут. AssignCommand(oPC, DelayCommand(165.0, ..........

2. А точно делей нужен более 150 секунд? (165.0 = 165сек. )

3. Пишите пожалуйста полностью строчки кода, а если код маленький, то лучше весь код - быстрее получите ответ.
-fenix-
QUOTE (Ferst @ Jul 30 2005, 18:43)
1. Сначала Assign, а _потом_ делей. Вполне возможно, что исчезает тот объект, от которого делается событие за столько минут. AssignCommand(oPC, DelayCommand(165.0, ..........

2. А точно делей нужен более 150 секунд? (165.0 = 165сек. )

3. Пишите пожалуйста полностью строчки кода, а если код маленький, то лучше весь код - быстрее получите ответ.

1. Это зачем сначала Assign? Все и с Delay пашет.
2. Это ты про что?
3. Не могу я целиком, сценка на конкурс!

А есле пост по ниже почитать, то
QUOTE (-fenix- @ Jul 29 2005, 21:23)
Все уже разобрадся в чем дело

Просто кастер стоял далеко от объекта, вот и все.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.