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

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

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


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

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



QUOTE(Dana @ Mar 11 2006, 12:44) [snapback]72277[/snapback]
2)так же хочу сделать, чтобы при убийстве какого-либо животного после него оставался итем «Мясо» и через определенное время исчезал (5 сек, 10 сек…). Через инвентарь животного оно конечно остается, но не исчезает. Здесь надо делать генерируемый лут с DestoyObject?

описывалось недавно как это делать. Удаление с указаной задержкой делается в скрипте onDeath. Сначала отчистка инвенторя, потом удаление плейса.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chess
сообщение Mar 11 2006, 21:03
Сообщение #2472


Level 1


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



Еще раз вынужден просить помощи, я уже писал этот вопрос, но не кто не помог, умельцы, подскажите мне ПЛИЗ, как убрать этого пацана, Link Boy его завут, который появляется, когда спать ложишься ? И потом продолжает бегать за тобой с факелом !
И еще, что-нибудь про систему лута, процент выпадения данной вещи из данного моба например, хотяб примерно, как написать такой скрипт ?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Isendel
сообщение Mar 11 2006, 21:19
Сообщение #2473


Level 10
***

Класс: Бард
Характер: Chaotic Good
Раса: Эльф



Брр, ты вообще откуда этого Линк Боя достал? Или он появляется, когда ты в реале спать ложишься, и бегает за тобой с факелом? (IMG:style_emoticons/kolobok_light/ph34r.gif) (IMG:style_emoticons/kolobok_light/crazy.gif)

Думаю, с этим вопросом было бы уместнее обратиться сюда - http://www.wrg.ru/forums/index.php?showforum=3
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 11 2006, 21:28
Сообщение #2474


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

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



QUOTE(Chess @ Mar 11 2006, 21:03) [snapback]72324[/snapback]
Еще раз вынужден просить помощи, я уже писал этот вопрос, но не кто не помог, умельцы, подскажите мне ПЛИЗ, как убрать этого пацана, Link Boy его завут, который появляется, когда спать ложишься ? И потом продолжает бегать за тобой с факелом !

Эт хто такой и где? (IMG:style_emoticons/kolobok_light/shok.gif)

QUOTE(Chess @ Mar 11 2006, 21:03) [snapback]72324[/snapback]
И еще, что-нибудь про систему лута, процент выпадения данной вещи из данного моба например, хотяб примерно, как написать такой скрипт ?

Самое простое, это задать шанс выпадения фиксированного шмота. Тобишь ты указываешь в скрипте все шмотки, которые могут выпасть из чела, а потом ставешь для каждой процент.
Вот скажем так на смерть НПС
NSS
void main()
{
string s1 = "РесРеф_первого_итема";
string s2 = "РесРеф_второго_итема";

//Random генерирует случайные числа от 0 до 3, то есть выбирает из четырех чисел.
//мы ставим условие, чтоб объект создавался если выпадет "2", то есть 1 из 4, то есть шанс 25%
if(Random(4)==2)
CreateItemOnObject(s1);
//аналогично
if(Random(4)==2)
CreateItemOnObject(s2);
}

А вот нормальная систему лута сложнее. Тут надо все вещи разбивать по группам: мечи, щиты, копья..., хорошее состоянее, плохое... и прочее. И условия выпада соответственные.
Посмотри в форуме шардов, там вроде есть примеры.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Mar 12 2006, 03:52
Сообщение #2475


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

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



Dana, звук такой же объект, как и все остальные. Его можно поставить в точку появления костра, и после сна удалять. Только я все же больше склоняюсь ко сну, в котором не нужно создавать костер с помощью дров, ибо маг, друид, и т.п. классы, таскать с собой дрова, и тем более рубить дерево топориком, который они даже в руки взять не могут, не очень здорово. Старая идея, которая очень давно была реализована на Экзисе. Причем по сей день жива на некоторых шардах. Если честно, такая идея несколько банальна. Лучше сделать места по всей территории мира, где можно спать. Например, на Мидгарде можно было спать только около костров. Единственный недостаток, костры горели вечно, даже если рядом никого не было. Но такой уж объект. К сожалению поменять ему ключ "горит - не горит" нельзя.

По поводу второго, посмотри внимательно мое сообщение.

Chess, днем тебе представлю простенький код по системе лута, а ты уж сам его расширишь.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
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
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



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