![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2461
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
NSS void main()
{ object oPC = GetExitingObject(); object oPCin = GetFirstObjectInArea(OBJECT_SELF); if (!GetIsPC(oPC)) return; while (oPCin!=OBJECT_INVALID) // Пока такой объект есть { if (GetObjectType(oPCin) == OBJECT_TYPE_CREATURE) // Его тип создание { if (GetIsPC(oPCin)) // если это игрок { // Тут то что ты хочешь сделать // если надо прервать - прерви. } } oPCin = GetNextObjectInArea(OBJECT_SELF); // Берем следующего в локации } } |
![]()
Сообщение
#2462
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Можно еще так:
NSS void main()
{ object oPC = GetExitingObject(); if (!GetIsPC(oPC)) return; int nPlayer = FALSE; object oPlayer = GetFirstPC(); while (GetIsObjectValid(oPlayer)) { if (GetArea(oPlayer) == OBJECT_SELF) { nPlayer = TRUE; break; } oPlayer = GetNextPC(); } if (nPlayer) { // скрипт действия } } |
![]()
Сообщение
#2463
|
|
Level 2 ![]() Класс: Друид Характер: Lawful Neutral Раса: Полуэльф ![]() |
Без трудностей никуда. Продолжим. Итак, ситуация: в ивентаре имеется итем дрова (синька “wood”), в палитре – плейс дрова (синька «place_wood»). Выкладывая итем дров из инвентаря, я должна получить плейс дров на земле.
OnUnAquiredItem модуля: NSS void main() { object oPC = GetModuleItemLostBy(); if (!GetIsPC(oPC)) return; object oLostItem = GetModuleItemLost(); if (!GetIsObjectValid(oLostItem)) return; if (GetTag(oLostItem)=="wood") { //выкладываем плейс дров CreateObject(OBJECT_TYPE_PLACEABLE,"place_wood",GetLocation(oPC)); //уничтожаем итем дров DestroyObject(oLostItem); } } Казалось бы…ан нет! Итем уничтожается, но плейс дров не появляется. |
![]()
Сообщение
#2464
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
QUOTE в ивентаре имеется итем дрова (синька ”wood”), в том случае надо таг, а не синьку..если таг другой, то QUOTE if (GetTag(oLostItem)=="wood") непрально так..заметка перепроверь таги и синьки, я к тому, что у меня работает всё Сообщение отредактировал [MoF]Darth_Nick - Mar 10 2006, 23:24 |
![]()
Сообщение
#2465
|
|
Level 2 ![]() Класс: Друид Характер: Lawful Neutral Раса: Полуэльф ![]() |
ниии... с тэгами все нормуль. не в этом дело (IMG:style_emoticons/kolobok_light/sad.gif)
|
![]()
Сообщение
#2466
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Dana, я надеюсь ты в курсе, что объект создается по РесРефу?
Похоже ты хочешь сделать что-то типа отдыха. Не надо мучаться с тем, что уже есть! Посмотри в базе скриптов, там есть скрипт на отдых в дикой местности, как раз с выкладкой дров, ну и прочим. Очень советую посмотреть темки: База скриптов, Скрипты для новичков, Вопросы и Ответы по Toolsetу. |
![]()
Сообщение
#2467
|
|
Level 2 ![]() Класс: Друид Характер: Lawful Neutral Раса: Полуэльф ![]() |
ыыыы (IMG:style_emoticons/kolobok_light/smile.gif) как раз оттуда это и взято. там 2 источника. Очень похожи. (IMG:style_emoticons/kolobok_light/smile.gif)
а результата нет (IMG:style_emoticons/kolobok_light/sad.gif) |
![]()
Сообщение
#2468
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
http://nwcustom.jino-net.ru/upload/plc_itm_down.rar
наглядно. береш, ложиш и появляются дрова Сообщение отредактировал [MoF]Darth_Nick - Mar 11 2006, 01:00 |
![]()
Сообщение
#2469
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Dana, еще раз обращаю твое внимание на то, что объект создается по РесРефу! Это очень частая ошибка начинающих.
Об этом говорится в ВиО QUOTE ВОПРОС CreateObject(...); - создает по Blueprint ResRef или по тэгу? ОТВЕТЫ CreateObject(...); - создает по Blueprint ResRef Создавать можно только итемы, NPC, плейсы, магазины и вейпоинты. Посмотри в модуле [MoF]Darth_Nick'а , там у дров в палитре и имя и тег и РесРеф "place_wood". |
![]()
Сообщение
#2470
|
|
Level 2 ![]() Класс: Друид Характер: Lawful Neutral Раса: Полуэльф ![]() |
(IMG:style_emoticons/kolobok_light/smile.gif) моя вина. исправлиась. действительно делала по тэгу.
теперь все нормально. ПС дрыхнет так, что экран трясется. Всем спасибо, все свободны... до следующей моей очередной заковырки (IMG:style_emoticons/kolobok_light/smile.gif) И снова здравствуйте… С отдыхом все получилось, на радостях даже сделала, что бы дрова из плейсов деревьев добывать можно было (IMG:style_emoticons/kolobok_light/smile.gif) Итак, продолжим: 1) хочу, что бы при создании плейса костра и в течении всего времени что он у меня полыхает, был звук треска костра. Как я понимаю CreateObject здесь неуместен. 2)так же хочу сделать, чтобы при убийстве какого-либо животного после него оставался итем «Мясо» и через определенное время исчезал (5 сек, 10 сек…). Через инвентарь животного оно конечно остается, но не исчезает. Здесь надо делать генерируемый лут с DestoyObject? Пока что это все, что меня интересует (IMG:style_emoticons/kolobok_light/smile.gif) Заранее благодарна. Навеки ваша. Дана. Сообщение отредактировал Dana - Mar 11 2006, 12:43 |
![]()
Сообщение
#2471
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Dana @ Mar 11 2006, 12:44) [snapback]72277[/snapback] 2)так же хочу сделать, чтобы при убийстве какого-либо животного после него оставался итем «Мясо» и через определенное время исчезал (5 сек, 10 сек…). Через инвентарь животного оно конечно остается, но не исчезает. Здесь надо делать генерируемый лут с DestoyObject? описывалось недавно как это делать. Удаление с указаной задержкой делается в скрипте onDeath. Сначала отчистка инвенторя, потом удаление плейса. |
![]()
Сообщение
#2472
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Еще раз вынужден просить помощи, я уже писал этот вопрос, но не кто не помог, умельцы, подскажите мне ПЛИЗ, как убрать этого пацана, Link Boy его завут, который появляется, когда спать ложишься ? И потом продолжает бегать за тобой с факелом !
И еще, что-нибудь про систему лута, процент выпадения данной вещи из данного моба например, хотяб примерно, как написать такой скрипт ? |
![]()
Сообщение
#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 |
![]()
Сообщение
#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); } А вот нормальная систему лута сложнее. Тут надо все вещи разбивать по группам: мечи, щиты, копья..., хорошее состоянее, плохое... и прочее. И условия выпада соответственные. Посмотри в форуме шардов, там вроде есть примеры. |
![]() ![]()
Сообщение
#2475
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Dana, звук такой же объект, как и все остальные. Его можно поставить в точку появления костра, и после сна удалять. Только я все же больше склоняюсь ко сну, в котором не нужно создавать костер с помощью дров, ибо маг, друид, и т.п. классы, таскать с собой дрова, и тем более рубить дерево топориком, который они даже в руки взять не могут, не очень здорово. Старая идея, которая очень давно была реализована на Экзисе. Причем по сей день жива на некоторых шардах. Если честно, такая идея несколько банальна. Лучше сделать места по всей территории мира, где можно спать. Например, на Мидгарде можно было спать только около костров. Единственный недостаток, костры горели вечно, даже если рядом никого не было. Но такой уж объект. К сожалению поменять ему ключ "горит - не горит" нельзя.
По поводу второго, посмотри внимательно мое сообщение. Chess, днем тебе представлю простенький код по системе лута, а ты уж сам его расширишь. |
![]()
Сообщение
#2476
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Isendel, Не смешно !
Zirrex, Спасибо ! -fenix-, Спасибо, понятно объяснил ! Буду пробовать расширить, тока дождусь скрипт Zirrexa !!! Сообщение отредактировал Chess - Mar 12 2006, 12:46 |
![]()
Сообщение
#2477
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Zirrex @ Mar 12 2006, 03:52) [snapback]72368[/snapback] Dana, звук такой же объект, как и все остальные. Его можно поставить в точку появления костра, и после сна удалять. кинь скрипт по созданию звука из палитры в указанной точке. CreateObject отказывается звуки делать. |
![]()
Сообщение
#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) В тулсете можно на НПС повесить крылья (демона, ангела и т.д.). Можно ли так сделать для ПС? Допустим на доспехи или еще-как-нить? Вот, к пирмеру у Ученика Красного Дракона по-моему имеются крылышки. |
![]()
Сообщение
#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); } } те создание деревая вешаем с задеркжой на локацию. Но как это будет в шардовых условиях работать, я хз если честно, я так в сингле делаю. |
![]()
Сообщение
#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 объектов одного и того же дерева, а лишь менять тэг одному объекту в момент создания дерева. Иначе говоря, тебе придется создавать все деревья в момент первого входа персонажа на локацию с деревьями, а не размещать их заранее в редакторе. В редакторе придется только сделать точки появления для деревьев, чтобы в дальнейшем на них создать деревья. Чтобы деревья не смотрели все в одну сторону (обычно всегда их случайно кручу, чтобы придать локации уникальность), в скрипте надо случайно указывать направление в момент размещения объекта. Далее, когда дерево уничтожат, при переходе игрока с локации на локацию, проверить, какого дерева не хватает. Если такое найдется, пересоздать его с тем тэгом, который освободится. |
![]()
Сообщение
#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) |
![]()
Сообщение
#2482
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Lex, о чем и речь. Именно так у меня в модуле и срабатывает один звук при определенном действии. И что странно, он звучит столь тихо (хотя игрок находится в одном шаге от источника), что его купол пришлось сделать чуть ли не на всю локацию. То ли просто сам звук тихий, то ли ему нужно скриптово громкость менять.
Я просто подумал, ведь НПС и игроки могут издавать звуки, то почему аналогичный звук не может издавать костер? Хотя, если уж быть честным, было бы проще, если у объектов можно было выставлять различные звуки в их свойствах. |
![]()
Сообщение
#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) Моя лошадь как всегда позно скачет. О чем? Подробней... Вопрос просто тоже важнецкий. |
![]()
Сообщение
#2484
|
|
Level 6 ![]() ![]() Класс: Разведчик Арфистов Характер: True Neutral Раса: Животное ![]() |
QUOTE(Zirrex @ Mar 13 2006, 10:20) [snapback]72515[/snapback] И что странно, он звучит столь тихо (хотя игрок находится в одном шаге от источника), что его купол пришлось сделать чуть ли не на всю локацию. То ли просто сам звук тихий, то ли ему нужно скриптово громкость менять. В нвне, афаик, на громкость точечного источника звука влияет не только положение чара, а еще и положение камеры относительно центра сферы звучания. Так как большинство игроков предпочитают отдалять камеру на максимум, они зачастую пропускают мимо ушей звуковое оформление локации. Я предпочитаю по этому поводу не беспокоиться. Кому надо, тот итак все услышит и оценит. Сообщение отредактировал Existor - Mar 13 2006, 14:46 |
![]()
Сообщение
#2485
|
|
Level 2 ![]() Класс: Друид Характер: Lawful Neutral Раса: Полуэльф ![]() |
Возможно немножко не туда пишу, но не судите строго. Коротко мне в двух строчках о работе с форматом 2da. Нашла прогу для данного формата. Как я понимаю, мне нужне файл 2dasource.zip. Выбираю там интересующий меня фалик. чего-то там меняю, а потом...?
что потом то? никуда не надо? в override или хак какой-нить? З.Ы. не стирайте это сообщение с этого топика )) я и так устала по форуму прыгать. |
![]() ![]() |
Текстовая версия | Сейчас: 23rd July 2025 - 05:59 |