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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 98 99 100 101 102 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Chess
сообщение Mar 12 2006, 12:40
Сообщение #2476


Level 1


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



Isendel, Не смешно !

Zirrex, Спасибо !

-fenix-, Спасибо, понятно объяснил ! Буду пробовать расширить, тока дождусь скрипт Zirrexa !!!

Сообщение отредактировал Chess - Mar 12 2006, 12:46
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 12 2006, 13:04
Сообщение #2477


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

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



QUOTE(Zirrex @ Mar 12 2006, 03:52) [snapback]72368[/snapback]
Dana, звук такой же объект, как и все остальные. Его можно поставить в точку появления костра, и после сна удалять.

кинь скрипт по созданию звука из палитры в указанной точке. CreateObject отказывается звуки делать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dana
сообщение Mar 12 2006, 17:40
Сообщение #2478


Level 2
*

Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



Доброго времени суток.

1) Действительно хотелось бы посмотреть на скрипт по CreateObject для звука (IMG:style_emoticons/kolobok_light/smile.gif)

2) Дровишки же добывать можено и без топорика – благо у всех есть руки, а деревца-то суховатенькие у меня. Наломают в 5 секунд, грынпысовцы.Ыыыы. (IMG:style_emoticons/kolobok_light/smile.gif)
Дык.. промблема: деревца-то ломаются..(дестроятся), но… как мне сделать, что бы они опять потом респились через N-ный промежуток времени? Дабы не закончились дровишки на шарде (IMG:style_emoticons/kolobok_light/smile.gif) Что-то на событие OnUsed (когда дерево превращается…дерево превращается..превращается…в элегантную вязанку дровишек. Детроится одним словом), CreateObject не хочет становиться.

Кусочек кода на OnUsed плейса дерева (РесРеф дерева - deadtree001, woodpile001 - дровишки)

NSS
void main()
{
object oPC = GetLastUsedBy();
object oTree = OBJECT_SELF;
    if (GetIsPC(oPC)==TRUE)
    {
    AssignCommand(oPC,PlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,2.0));
    CreateObject(OBJECT_TYPE_PLACEABLE,"woodpile001",GetLocation(oTree));
    DelayCommand(100.0, CreateObject(OBJECT_TYPE_PLACEABLE,"deadtree001",GetLocation(OBJECT_SELF),TRUE));//это должен быть респаун дерева
    DestroyObject(oTree);
    }
}


пишет, что декларация не соответствует описанию.
Справляйте меня (IMG:style_emoticons/kolobok_light/smile.gif)


Забыла (IMG:style_emoticons/kolobok_light/smile.gif)
В тулсете можно на НПС повесить крылья (демона, ангела и т.д.). Можно ли так сделать для ПС? Допустим на доспехи или еще-как-нить? Вот, к пирмеру у Ученика Красного Дракона по-моему имеются крылышки.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 12 2006, 18:03
Сообщение #2479


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

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



классическая ошибка.. CreateObject нельзя засунуть в DelayCommand. Обойти можно так:
NSS
void CreateObjectVoid(int nObjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE, string sNewTag="")
{
CreateObject(nObjectType,sTemplate,lLocation,bUseAppearAnimation,sNewTag);
}
void main()
{
object oPC = GetLastUsedBy();
object oTree = OBJECT_SELF;
    if (GetIsPC(oPC)==TRUE)
    {
    AssignCommand(oPC,PlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,2.0));
    CreateObject(OBJECT_TYPE_PLACEABLE,"woodpile001",GetLocation(oTree));

    DelayCommand(100.0, CreateObjectVoid(OBJECT_TYPE_PLACEABLE,"deadtree001",GetLocation(OBJECT_SELF),TRUE));
    DestroyObject(oTree);
    }
}


однако это все равно не сработает. Ты вешаешь на объект операцию, а объект удаляешь. Так что операция у тя тож пропадет. Самый простой тут вариант это..хм.. ну скажем так:
NSS
void CreateObjectVoid(int nObjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE, string sNewTag="")
{
CreateObject(nObjectType,sTemplate,lLocation,bUseAppearAnimation,sNewTag);
}
void main()
{
object oPC = GetLastUsedBy();
object oTree = OBJECT_SELF;
    if (GetIsPC(oPC)==TRUE)
    {
    AssignCommand(oPC,PlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,2.0));
    CreateObject(OBJECT_TYPE_PLACEABLE,"woodpile001",GetLocation(oTree));
    AssignCommand(GetArea(OBJECT_SELF),DelayCommand(100.0, CreateObjectVoid(OBJECT_TYPE_PLACEABLE,"deadtree001",GetLocation(OBJECT_SELF),TRUE)));
    DestroyObject(oTree,1.5);
    }
}

те создание деревая вешаем с задеркжой на локацию. Но как это будет в шардовых условиях работать, я хз если честно, я так в сингле делаю.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Mar 13 2006, 02:47
Сообщение #2480


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

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



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

Dana, крылья этому классу прописаны в 2da. Если ты хочешь каким-то классам, хотя бы субрасам, добавить крылья, то надо это прописать в том же 2da. Сам хочу подобное сделать, да все не соберусь, иных проблем в модуле хватает.

Не обязательно в дерево сразу помещать объект дров. Их можно случайным образом оставлять в "теле" в момент уничтожения дерева. Например, игрок уничтожил дерево, осталось 2-3 кусочка дерева. И при каждом уничтожении их будет разное количество. Как судьба улыбнется (IMG:style_emoticons/kolobok_light/smile.gif)

Что касается скрипта, не стоит вешать такой код на условие "OnUsed", если уж и делать подобный код, то на действие "OnDeath". Как правильно написал Lex, сделай свою функцию, которая будет срабатывать через определенный промежуток времени. Мне так пришлось делать с функцией "CopyObject". Тоже не признает задержки, однако своя функция c командой "DelayCommand" работает идеально:

NSS
void CopyItems(object oItem, location lLocation, object oOwner, string sTag)
{
    CopyObject(oItem, lLocation, oOwner, sTag);
    DelayCommand(0.1, DestroyObject(oItem));
}

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

В принципе, у меня есть иная идея, но пока что не опробованная скриптово. Сделать систему спавна объектов, которые исчезают с локации. При входе и выходе игрока с локации, проверять, есть ли эти объекты вообще. Одно но, чтобы не делать кучу объектов, деревьям надо давать уникальные тэги в момент их создания. Т.е., например, деревьев на всей локации 20. Первое дерево именуем так "tree_01", далее 02, 03 и т.д. Но я не говорю о том, что надо делать в палитре 20 объектов одного и того же дерева, а лишь менять тэг одному объекту в момент создания дерева. Иначе говоря, тебе придется создавать все деревья в момент первого входа персонажа на локацию с деревьями, а не размещать их заранее в редакторе. В редакторе придется только сделать точки появления для деревьев, чтобы в дальнейшем на них создать деревья. Чтобы деревья не смотрели все в одну сторону (обычно всегда их случайно кручу, чтобы придать локации уникальность), в скрипте надо случайно указывать направление в момент размещения объекта.

Далее, когда дерево уничтожат, при переходе игрока с локации на локацию, проверить, какого дерева не хватает. Если такое найдется, пересоздать его с тем тэгом, который освободится.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 13 2006, 03:22
Сообщение #2481


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

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



QUOTE(Zirrex @ Mar 12 2006, 03:52) [snapback]72368[/snapback]
Dana, звук такой же объект, как и все остальные. Его можно поставить в точку появления костра, и после сна удалять.

© ты (IMG:style_emoticons/kolobok_light/smile.gif)

а вообще..
в данном варианте с костором проигрывать звук конечно можно, но фигово это. Не знаешь время, звук проигрывается для кого-то и тд. Есть конечно вариант ставить звук в локации изначально (который на всю локацию) и включать/выключать его при зажигании/тушении костра. Но это тоже криво (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Mar 13 2006, 10:20
Сообщение #2482


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

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



Lex, о чем и речь. Именно так у меня в модуле и срабатывает один звук при определенном действии. И что странно, он звучит столь тихо (хотя игрок находится в одном шаге от источника), что его купол пришлось сделать чуть ли не на всю локацию. То ли просто сам звук тихий, то ли ему нужно скриптово громкость менять.

Я просто подумал, ведь НПС и игроки могут издавать звуки, то почему аналогичный звук не может издавать костер? Хотя, если уж быть честным, было бы проще, если у объектов можно было выставлять различные звуки в их свойствах.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 13 2006, 10:28
Сообщение #2483


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

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



QUOTE(Lex @ Mar 13 2006, 05:22) [snapback]72487[/snapback]
Есть конечно вариант ставить звук в локации изначально (который на всю локацию) и включать/выключать его при зажигании/тушении костра. Но это тоже криво

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

Тоже все сижу и жду код, как креетить звук на локе. (IMG:style_emoticons/kolobok_light/biggrin.gif)

QUOTE(Zirrex @ Mar 13 2006, 12:20) [snapback]72515[/snapback]
Именно так у меня в модуле и срабатывает один звук при определенном действии. И что странно, он звучит столь тихо (хотя игрок находится в одном шаге от источника), что его купол пришлось сделать чуть ли не на всю локацию. То ли просто сам звук тихий, то ли ему нужно скриптово громкость менять.

Тут я что-то не догнал. (IMG:style_emoticons/kolobok_light/pardon.gif) Моя лошадь как всегда позно скачет. О чем? Подробней... Вопрос просто тоже важнецкий.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Existor
сообщение Mar 13 2006, 14:40
Сообщение #2484


Level 6
**

Класс: Разведчик Арфистов
Характер: True Neutral
Раса: Животное



QUOTE(Zirrex @ Mar 13 2006, 10:20) [snapback]72515[/snapback]
И что странно, он звучит столь тихо (хотя игрок находится в одном шаге от источника), что его купол пришлось сделать чуть ли не на всю локацию. То ли просто сам звук тихий, то ли ему нужно скриптово громкость менять.

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

Сообщение отредактировал Existor - Mar 13 2006, 14:46
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dana
сообщение Mar 13 2006, 15:02
Сообщение #2485


Level 2
*

Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



Возможно немножко не туда пишу, но не судите строго. Коротко мне в двух строчках о работе с форматом 2da. Нашла прогу для данного формата. Как я понимаю, мне нужне файл 2dasource.zip. Выбираю там интересующий меня фалик. чего-то там меняю, а потом...?
что потом то? никуда не надо? в override или хак какой-нить?
З.Ы. не стирайте это сообщение с этого топика )) я и так устала по форуму прыгать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
maximal_up
сообщение Mar 13 2006, 16:50
Сообщение #2486


Ищущий
*****

Класс: Рейнджер
Характер: Lawful Neutral
Раса: Эльф
ПОДМАСТЕРЬЕ



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

Читайте тут: http://www.wrg.ru/forums/index.php?showforum=24
Там можно найти очень много полезного.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Mar 13 2006, 18:11
Сообщение #2487


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

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить
NWN: Скриптинг [PW]



2dasource.zip - не советую, выдерй nwn explorer'ом каким-нить из патченного\простого ХОТУ.
прога не обязательна, пойдет и ворд пад\блокнот
оверрайд - для себя, хак - для шарда\сервера
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 13 2006, 20:47
Сообщение #2488


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

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



QUOTE(Existor @ Mar 13 2006, 16:40) [snapback]72536[/snapback]
В нвне, афаик, на громкость точечного источника звука влияет не только положение чара, а еще и положение камеры относительно центра сферы звучания. Так как большинство игроков предпочитают отдалять камеру на максимум, они зачастую пропускают мимо ушей звуковое оформление локации.

Меня интересует другое. КАК СКРИПТОМ СОЗДАТЬ ЗВУКОВОЙ ОБЪЕКТ НА ЛОКЕ.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Mar 13 2006, 22:52
Сообщение #2489


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

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



Chess, система конечно не идеальна, но на ее основе можно сделать неплохую систему дропа различных вещей. Самое главное, это формула, а остальное уже гораздо проще. Данный пример рассматривает дроп металлической краски с довольно маленьким шансом выпадения. Чтобы увеличить шанс, достаточно изменить величину "DROPPROCENT" или же число 1.4. Одно но, я старался подобрать число 1.4 таким образом, чтобы получаемый шанс не вылезал за 0 или 100. Конечно, если монстр 40 уровня, а персонаж 1-го уровня, то число уйдет в минус, но тогда число нужно пересчитать таким образом, чтобы даже при такой разнице в уровнях число не уходило в минус. При числе 0.43 и максимальном уровне 20, число даже при разнице в уровнях 1 к 20 не будет уходить в минус. Также величина этого числа зависит, насколько сильно будет изменяться шанс по мере роста персонажа над уровнем монстра или наоборот.

NSS
int GetIsMonsterDrop(object oOwner)
{
    object oMod = GetModule();

    object oKiller = GetLastKiller();

    int nLevelP = GetHitDice(oKiller);
    int nLevelM = GetHitDice(OBJECT_SELF);

    float fChance = IntToFloat(GetLocalInt(oMod, "DROPPROCENT")); // к примеру - 55

    // Расчет случайного числа
    float fRandom = IntToFloat(Random(100)) + (IntToFloat(Random(100)) / 100.00);
    // Подсчет разницы в уровнях между персонажем и противником
    float fLevel = (IntToFloat(nLevelP) - IntToFloat(nLevelM));
    float fConst = (fLevel * fLevel);
    // Расчет основного шанса выпадения
    float fProcent = ((fChance - (1.4 * fConst)) + IntToFloat(Random(100))) / 100.00;

    if (fProcent >= fRandom)
    {
        return TRUE;
    }
    return FALSE;
}

void main()
{
    object oKiller = GetLastKiller();
    object oCreature = OBJECT_SELF;

    if (GetLastKiller() == oCreature) return;

    if (GetRacialType(oCreature) == RACIAL_TYPE_ANIMAL ||
        GetRacialType(oCreature) == RACIAL_TYPE_ABERRATION ||
        GetRacialType(oCreature) == RACIAL_TYPE_MAGICAL_BEAST ||
        GetRacialType(oCreature) == RACIAL_TYPE_BEAST ||
        GetRacialType(oCreature) == RACIAL_TYPE_VERMIN)
    {
        SetIsDestroyable(FALSE, FALSE, FALSE);
        DelayCommand(1.0, SetIsDestroyable(TRUE, FALSE, FALSE));
    }
    else
    {
        // Простые функции, которые запрещают на некоторое время
        // исчезновение трупа.
        SetIsDestroyable(FALSE, FALSE, FALSE);
        DelayCommand(30.0, SetIsDestroyable(TRUE, FALSE, FALSE));

        // Расчет шанса выпадения
        if (GetIsMonsterDrop(oKiller))
        {
            int nDye = Random(17) + 1;

            switch (nDye)
            {
                case 1: CreateItemOnObject("x2_it_dyeM03", oCreature); break;
                case 2: CreateItemOnObject("x2_it_dyeM00", oCreature); break;
                case 3: CreateItemOnObject("x2_it_dyeM31", oCreature); break;
                case 4: CreateItemOnObject("x2_it_dyeM16", oCreature); break;
                case 5: CreateItemOnObject("x2_it_dyeM40", oCreature); break;
                case 6: CreateItemOnObject("x2_it_dyeM28", oCreature); break;
                case 7: CreateItemOnObject("x2_it_dyeM24", oCreature); break;
                case 8: CreateItemOnObject("x2_it_dyeM32", oCreature); break;
                case 9: CreateItemOnObject("x2_it_dyeM18", oCreature); break;
                case 10: CreateItemOnObject("x2_it_dyeM10", oCreature); break;
                case 11: CreateItemOnObject("x2_it_dyeM42", oCreature); break;
                case 12: CreateItemOnObject("x2_it_dyeM02", oCreature); break;
                case 13: CreateItemOnObject("x2_it_dyeM25", oCreature); break;
                case 14: CreateItemOnObject("x2_it_dyeM37", oCreature); break;
                case 15: CreateItemOnObject("x2_it_dyeM08", oCreature); break;
                case 16: CreateItemOnObject("x2_it_dyeM36", oCreature); break;
                case 17: CreateItemOnObject("x2_it_dyeM48", oCreature); break;
            }
        }
    }
}


Aiwan, а почему бы не попробовать эту функцию? Если посмотреть описание функции "SoundObjectSetPosition":
QUOTE

This function can be used to change the position of the sound object that is placed in the module. For instance, a sound of moaning could be placed on a player when they open a chest.

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

NSS
void main()
{
    vector vPlayer = GetPosition(GetLastDisturbed());
    // location in vector format
    object mySound = GetObjectByTag("CryptMoans");
    SoundObjectSetPosition(mySound, vPlayer);
}

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

Когда загорается костер, помещать звук в точку, где стоит игрок, и проигрывать до тех пор, пока игрок спит. Идея не опробована, но чем черт не шутит?

Сообщение отредактировал Zirrex - Mar 13 2006, 22:53
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chess
сообщение Mar 14 2006, 04:35
Сообщение #2490


Level 1


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



Zirrex, примного благодарен ! Буду разбераться !

NSS
void main()
{
    object oMod = GetModule();
    object oPC = GetEnteringObject();
      if (!GetIsPC(oPC) || GetLocalInt(oMod, "START_GAME"))
      {return;}
      {
  SetLocalInt(oMod, "START_GAME", TRUE);
  TakeGoldFromCreature(GetGold(oPC),oPC,TRUE);
        object oItem = GetFirstItemInInventory(oPC);
        while(GetIsObjectValid(oItem))
        {
            DestroyObject(oItem);
            oItem = GetNextItemInInventory(oPC);
        }

        int i=0;
        while(i<14)
        {
        DestroyObject(GetItemInSlot(i, oPC));
        i++;
        }
        object oItemCr = GetFirstItemInInventory(oPC);
        while(GetIsObjectValid(oItemCr))
            {
            SetIdentified(oItemCr,TRUE);
            oItemCr = GetNextItemInInventory(oPC);
            }

        GiveGoldToCreature(oPC, 250);
        CreateItemOnObject("item", oPC, 1);
        CreateItemOnObject("item001", OPc, 1);
        AssignCommand(oPC, ActionEquipMostEffectiveArmor());
        }
        }

Этот скрипт у меня стоит на OnEnterClient, вот проблема, когда я перезапускаю сервак, он выполняет этот скрипт по новой... Подскажите, как исправить, чтоб этот скрипт выполнялся всего один раз, при первом входе в модуль...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Mar 14 2006, 09:56
Сообщение #2491


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

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



Chess, убери "GetLocalInt(oMod, "START_GAME")". Это лишнее. Когда рестартуется сервер, то у тебя эта переменная сбрасывается в 0. Даже если у входящего персонажа опыт не 0, но переменная 0, то скрипт выполнится. Соответственно не нужна функция "SetLocalInt(oMod, "START_GAME", TRUE);"

Не совсем понял, зачем тебе этот цикл:
NSS
object oItemCr = GetFirstItemInInventory(oPC);

while(GetIsObjectValid(oItemCr))
{
    SetIdentified(oItemCr,TRUE);
    oItemCr = GetNextItemInInventory(oPC);
}

если ты верхней командой и так все удалил из инвентаря. В итоге получается что-то вроде этого скрипта:

NSS
void main()
{
    object oPC = GetEnteringObject();

    if (GetIsDM(oPC)) return;

    if (!GetXP(oPC)) // опыт равен 0
    {
        TakeGoldFromCreature(GetGold(oPC), oPC, TRUE);

        object oItem = GetFirstItemInInventory(oPC);

        while (GetIsObjectValid(oItem))
        {
            DestroyObject(oItem);
            oItem = GetNextItemInInventory(oPC);
        }

        int i = 0;

        while (i < 15)
        {
            DestroyObject(GetItemInSlot(i, oPC));
            i++;
        }

        GiveGoldToCreature(oPC, 250);

        CreateItemOnObject("item", oPC, 1);
        CreateItemOnObject("item001", oPC, 1);

        SetXP(oPC, 1);

        AssignCommand(oPC, ActionEquipMostEffectiveArmor());
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 14 2006, 13:42
Сообщение #2492


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

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



со скриптами в соотв. тему плиз.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 14 2006, 19:35
Сообщение #2493


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

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



QUOTE(Zirrex @ Mar 13 2006, 22:52) [snapback]72582[/snapback]
Правда, звук предварительно придется разместить на закрытой локации, которая служит для хранения каких-либо вещей или просто для теста.

При этом мы не видим в параметрах функции oArea, а в лексиконе читаем "assumes CryptMoans Sound is placed nearby this script placed in the OnDisturbed section of the chest"!!!
Вариант тут один - в каждой локе ставить данный звук.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 14 2006, 19:44
Сообщение #2494


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

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



Zirrex, черти сколько бился. Уже надоело давно. Думал есть готовое решение. В любом случае спасибо за инфу.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chess
сообщение Mar 14 2006, 20:03
Сообщение #2495


Level 1


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



Возможно ли написать скрипт, который при загрузке в локу определенную, сканировал чара на класс, фокусировку на оружие, и загружал скрипт на выдачу рандомного шмота, но по результатам сканирования, например Воин с фокусом на топор, загружаешься в локу, у воина в инвентаре Тяжелая Броня и Топор.
З.Ы. это просто вопрос, скрипты не обязательны, сам подумаю если такое возможно, а от подсказок не откажусь :-)

Сообщение отредактировал Chess - Mar 14 2006, 20:06
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Archangel
сообщение Mar 14 2006, 20:06
Сообщение #2496


Восставший из пепла
***

Класс: Бледный Мастер
Характер: Neutral Evil
Раса: Человек
ПОДМАСТЕРЬЕ



QUOTE(Chess @ Mar 14 2006, 22:03) [snapback]72686[/snapback]

Возможно ли написать скрипт, который при загрузке в локу определенную, сканировал чара на класс, фокусировку на оружие, и загружал скрипт на выдачу рандомного шмота, но по результатам сканирования, например Воин с фокусом на топор, и после загрузке в локу у тебя в рюкзаке лежит Фулик и топор ?
З.Ы. это просто вопрос, скрипты не обязательны, сам подумаю если можно, а от подсказок не откажусь :-)

Ну, если это только вопрос... То тогда ответ положительный. Да, можно.
Надо написать скриптик и поставить его на OnEnter локи.
Тока локалку не забудь, а то будешь давать предметы каждый раз при входе в локу.
Ну, а если вдруг все таки понадобится скрипт, то это не ко мне.
Не, ну, конечно, я могу вдоволь постебаться над собой во время его написания. Но себя жалко. И инет, которого вообще нету нифиха...(IMG:style_emoticons/kolobok_light/biggrin.gif)


Сообщение отредактировал Archangel - Mar 14 2006, 20:15
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chess
сообщение Mar 14 2006, 22:16
Сообщение #2497


Level 1


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



Не боись Archangel, не потривожу :-)
Но спасибо, что ответил на вопрос...





Извините за очень тупой вопрос, но может есть у кого ссылочка или на компе перевод Функций Тулсета ?
С Инглишем туган, всю жизнь немецкий учил, я пытаюсь конечно разбираться, словарь из рук не убераю,
но не все есть в словаре... Хотяб самые основные функции, если не сложно...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Archangel
сообщение Mar 14 2006, 22:28
Сообщение #2498


Восставший из пепла
***

Класс: Бледный Мастер
Характер: Neutral Evil
Раса: Человек
ПОДМАСТЕРЬЕ



QUOTE(Chess @ Mar 15 2006, 00:16) [snapback]72696[/snapback]

Извините за очень тупой вопрос, но может есть у кого ссылочка или на компе перевод Функций Тулсета ?
С Инглишем туган, всю жизнь немецкий учил, я пытаюсь конечно разбираться, словарь из рук не убераю,
но не все есть в словаре... Хотяб самые основные функции, если не сложно...

Ну как такового перевода вроде нет. А вообще на сайте есть часть переведенного Лексикона. Должно помочь.
Вот ссылочка


Сообщение отредактировал Archangel - Mar 14 2006, 22:37
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Mar 15 2006, 14:28
Сообщение #2499


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

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



QUOTE(Chess @ Mar 14 2006, 20:03) [snapback]72686[/snapback]
Возможно ли написать скрипт, который при загрузке в локу определенную, сканировал чара на класс, фокусировку на оружие, и загружал скрипт на выдачу рандомного шмота, но по результатам сканирования, например Воин с фокусом на топор, загружаешься в локу, у воина в инвентаре Тяжелая Броня и Топор.


Ответ: Возможно.

А если без шуток, то писать его довольно долго, если учитывать все варианты соответствия оружия-классов-фитов. Свой я посеял, а новый писать - кучу времени нужно. Вот советы:
1. Вместо проверки на класс делай проверку на Weapon/Armor Proficiency, так как их можно взять дополнительно фитом или получить от расы.
2. Не забудь про размер (Size category) рас, так, например, пузаны и гномы не смогут тягать косу.
3. В НВН, да и в D&D вообще вариант меч+щит выигрывает перед двуручниками и дуалом (да и щитом могут пользоваться не все).

В первой кампании НВН был подобный скрипт, но он учитывал только фокус на оружия, увеличивая шанс попадания в сундук предпочитаемого орудия убийства. Может быть стоит сделать нечто подобное? А для брони и щита много писать не надо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Mar 15 2006, 15:46
Сообщение #2500


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

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить
NWN: Скриптинг [PW]



QUOTE
А если без шуток, то писать его довольно долго

правда? 19 строк занимает ф-ция, которая возвращает фокус на оружие(если фокус есть ессенно)

NSS
int dnGetWF(object oPC)
{
    if(GetHasFeat(FEAT_WEAPON_FOCUS_CLUB ,oPC))
        return FEAT_WEAPON_FOCUS_CLUB ;
    if(GetHasFeat(FEAT_WEAPON_FOCUS_DWAXE,oPC))
        return FEAT_WEAPON_FOCUS_DWAXE;
    if(GetHasFeat(FEAT_WEAPON_FOCUS_WHIP,oPC))
        return FEAT_WEAPON_FOCUS_WHIP;

    int i;

    for(i=90; i<128; i++)
    {
        if(GetHasFeat(i,oPC))
            return i;
    }

    return FALSE;
}


QUOTE
если учитывать все варианты соответствия оружия-классов-фитов

зачем? не когда не видел игроков трятящих фиты просто так

QUOTE
сканировал чара на класс

NSS
// A creature can have up to three classes.  This function determines the
// creature's class (CLASS_TYPE_*) based on nClassPosition.
// - nClassPosition: 1, 2 or 3
// - oCreature
// * Returns CLASS_TYPE_INVALID if the oCreature does not have a class in
//   nClassPosition (i.e. a single-class creature will only have a value in
//   nClassLocation=1) or if oCreature is not a valid creature.
int GetClassByPosition(int nClassPosition, object oCreature=OBJECT_SELF)


© toolset

QUOTE
и загружал скрипт на выдачу рандомного шмота, но по результатам сканирования, например Воин с фокусом на топор

можно, не трудно

Сообщение отредактировал [MoF]Darth_Nick - Mar 15 2006, 15:59
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 98 99 100 101 102 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



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