![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]() |
Guest_Tarre T._* |
![]()
Сообщение
#2
|
||||
![]() |
Скрипт мой, все совпадения случайны. Синьки: "blood"-пятно крови. Так как в ДнД не описано, при каком дамаге и сколько должно выливаться крови у ПС, я буду руководствоваться практическими соображениями(IMG:style_emoticons/kolobok_light/smile.gif) На онДамагет неписи:
. ................................................. cам инклюд: ..................................................
Сообщение отредактировал Twin - Jan 9 2005, 17:39 |
||||
![]()
Сообщение
#3
|
|||
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Человек ![]() |
Да, РэндомЛокэйшн в предыдущем скрипте взят с форумов рилмс.ру. Lex: RandomLocation - Бааловский скрипт. Еще один скрипт. Посмертный(IMG:style_emoticons/kolobok_light/smile.gif) Скрипт мой, все совпадения случайны. Ставится на онДайинг модуля. При смерти ПС ложится на землю и орет, чтобы его лечили. Лечат - выфил, нелечат - постепенно погибает. Когда хп остается меньше (-10) - менять по желанию.
'blood' -синька крови. ДЛЯ ВСЕХ: Просьба пользоваться кнопкой NSS. Так удобнее читать и разбираться в скриптах. Сообщение отредактировал Twin - Jan 9 2005, 17:40 |
||
![]() ![]()
Сообщение
#4
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
В общем простой скриптик, экономящий кучу времени и ресурсов. На OnFailToOpen двери. Если дверь закрыта, то при попытке открыть будет стринг из имени вейпоинта WP_DOOR_TXT. Желательно ставить сразу под дверь. Если вы забудете его поставить, то будет сообщение об ошибке.
Сообщение отредактировал Twin - Jan 9 2005, 17:41 |
||
![]()
Сообщение
#5
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Я тут задумался о пиратах, выползающих из шахт и убивающих мирных жителей Андра-Дуна. :cruel: Вот простенький скрипт на OnAreaTransitionClick . Теперь пираты ждут вас и курят бамбук там где должны (IMG:style_emoticons/kolobok_light/biggrin.gif)
Сообщение отредактировал Twin - Jan 9 2005, 17:43 |
||
![]()
Сообщение
#6
|
|||
Вечно исчезающий ![]() Класс: Маг Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Этот скрипт я писал для Айс Блэйда, для его проекта ледяной стены. Скрипт должен создавать заданное количество плэйсиблов (сигментов ледяной стены) напротив игрока и дестроить их через заданное время. Пока я использовал синьки сдандартных ящиков (IMG:style_emoticons/kolobok_light/smile.gif) Всего два вида чередующихся плэйсиблов. Сообщение отредактировал Baal - Mar 11 2005, 21:14 |
||
![]()
Сообщение
#7
|
|||||
Level 1 Класс: Волшебник Характер: Lawful Neutral Раса: Гном ![]() |
Вы хотите добавить суб-расы в игру ? Пожайлуста ! Пока я еще не добавил им доп. умений, но скоро сделаю... надеюсь... Пока скрипт дает только спец-предмет в зависимости от суб-расы. Инклуд суб-рас:
Теперь скрипт, который ложится в onClientEnter модуля:
Вся фишка моего скрипта суб-расы в том, что он не дает оружие или предмет, а экиптрует, т.е. он на тебе, но в инвентаре его нет ! Например делаем предмет для суб-расы дроу (это темные эльфы, кто не знает): Создаем кинжал и наделяем его +2 Ловкость, -1 Харизма и -1 Сила. После этого он одевается ему в слот, которого в интвентаре нет, а х-ки остаются на персонаже. Сообщение отредактировал Twin - Jan 9 2005, 17:46 |
||||
![]()
Сообщение
#8
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Вот небольшой скрипт дающий экспу за открытие двери или обезвреживание ловушки. Специально сделан так, что если за вас работает хеньчман, то много экспы не ждите. (IMG:style_emoticons/kolobok_light/blum3.gif) Вешается это добро на разные слоты, либо на OnUnlocked либо на OnDisarm ловушки.
Сообщение отредактировал Twin - Jan 9 2005, 17:48 |
||
![]()
Сообщение
#9
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Вот немного переделанный скрипт, кому то понравится больше чем первый. LEX:Айв, тут у тебя пара косяков есть в коде. Я исправил и дополнил. Не сердись. СПАСИБО ДБу за идею! (IMG:style_emoticons/kolobok_light/good.gif)
Сообщение отредактировал Twin - Jan 9 2005, 17:50 |
||
![]()
Сообщение
#10
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Удалить не получается.... (IMG:style_emoticons/kolobok_light/smile.gif)
Сообщение отредактировал Aiwan - Aug 31 2010, 10:46 |
![]()
Сообщение
#11
|
|||||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
В процессе всем нам часто приходится кидать дайсы. А юзать Рандом+1 неудобно в случае, когда надо, скажем, бросить 3д5. Решил написать скриптину:
<small>Добавлено в 15:30</small> Прототип:
Сообщение отредактировал Twin - Jan 9 2005, 17:53 |
||||
![]()
Сообщение
#12
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Если у вас не очень много дверей, которые закрываются на ночь, то можно вставить такой скриптик на OnHeartbeat этой двери.
Сообщение отредактировал Twin - Jan 9 2005, 17:55 |
||
![]()
Сообщение
#13
|
|
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Поправлю.
Код //:://////////////////////////////////////////////
//:: Copyright (c) 2004 WRG! www.wrg.ru //:: Name: am_doorlock_d_n //::////////////////////////////////////////////// /* ЗАПИРАЕТ ДВЕРЬ НА НОЧЬ */ //::////////////////////////////////////////////// //:: Created By: Aiwan Aiwan@e-mail.ru //:: Created On: 21.05.2004 //::////////////////////////////////////////////// void main() { if (GetArea(OBJECT_SELF) != GetArea(GetFirstPC())) // return; // PS. ТОЛЬКО ДЛЯ СИНГЛОВ!!! // if((GetIsNight() && GetLocked(OBJECT_SELF))||(GetIsDay() && !GetLocked(OBJECT_SELF))) // { // return; // [b]Эта проверка 4-х условий будет жрать больше ресурсов, чем "перезакрытие" дверей! // } // Так что она не нужна.[/b] if (GetIsNight()) { SetLocked(OBJECT_SELF, TRUE); return; } if (GetIsDay()) { SetLocked(OBJECT_SELF, FALSE); return; } } |
![]()
Сообщение
#14
|
|||
Level 2 ![]() Класс: Рейнджер Характер: Lawful Good Раса: Человек ![]() |
Цитата Вот небольшой скрипт дающий экспу за открытие двери или обезвреживание ловушки. Специально сделан так, что если за вас работает хеньчман, то много экспы не ждите. Имхо, логичнее экспу уменьшать с уровнем. Обосновать? А за хенчмена - чисто формальные 10 очков. (IMG:style_emoticons/kolobok_light/smile.gif) Все цифры взяты наобум, тут надо корректировать.
------ Что касается ловушек, то Ой! Разве воришка не может ставить и обезвреживать собственные ловушки? (IMG:style_emoticons/kolobok_light/wink3.gif) (Вспоминается Jagged Alliance, где можно было поднять саперское умение с 1 до 100, с одной миной. (IMG:style_emoticons/kolobok_light/smile.gif) ) Проверку на Hostile? |
||
![]()
Сообщение
#15
|
|||||||||||||||||||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Очередная порция скриптов(начал писать АИ, вот, так сказать, начальные наработки, может, кому-нить и пригодится). Как всегда все(кроме 7 - этот скрипт взят из кампании СоУ) мое, совпадения случайны. 1. Проверяет, оружие ли вещь oWeapon. Можно использовать в скрипте-проверке, вооружен ли обьект(ведь при простом перебирании обьектов в руках у ПС(НПС) как оружие возвращается и факел).
2. Проверяет способность обьекта oObject(=OBJECT_SELF) произносить заклинания.
3. Возвращает ближайшее энеми-создание, способное творить заклы. Использует скрипт 2. Из этого скрипта вытекает скрипт 4.
4. См. 3.
5. Проверяет, метательное ли оружие oWeapon.
6. Скрипт, вытекающий из скрипта 1: если стоит 0 (по умолч.) проверяет у обьекта наличие оружитя в слотах инвентаря, если 1- в инвентаре, если 2 - и там, и там.
7. Скрипт, аналогичный второму: определяет, присутствуют ли в его классах классы бойца.
8. Рэндомная задержка. Вообще может использоваться для генерации случайного флоата.
9. Возвращает кол-во предметов в инвентаре oTarget.
Удачи! PS: про реплы Сэрлеса: восрешение вообще есть лажа и неДнДэшно к тому ж. Ну, не пропаать же скрипту(IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Twin - Jan 9 2005, 17:58 |
||||||||||||||||||
![]()
Сообщение
#16
|
|||||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
LEX: Ты бы описал в общих чертах, что эти скрипты делают. Описываю: Если Хит поинты игрока < 0 >-11 то он падает наземь.корчится, кричит и у него отнимаются хит поинты. Если его не успеют вылечить - он умрет. А когда умрет - станет призраком и перенесется в фугу. А еще экран гаснет...ну вроде как: В глазах потемнело. За основу взят скрипт Tarre OnPlayerDying
"bloody" - синька с кровью. З.Ы. Tarre там с Object_Type перепутал кажется(IMG:style_emoticons/kolobok_light/smile.gif) Далее OnPlayerDeath
WP_RAISE - вейпоинт в фуге И еще в локации фуги - куда перемещается мертвый игрок OnEnter
|
||||||
![]()
Сообщение
#17
|
|||||||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Скрипты: удаляющий эффект (1) и сканирующий эффект (2).
Обещанный скрипт-реакция грарда на нападение на оного ПС... Впихивается в онАтакед. Скрипт делает следущее: охранник вырубает ПС и начинает с ним диалог(лтбо что-то иное (IMG:style_emoticons/kolobok_light/smile.gif) )
Сообщение отредактировал Twin - Jan 9 2005, 18:00 |
||||||
![]()
Сообщение
#18
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
По идеи должно работать... Хотел еще вставить фичу, чтобы в конце убранный эффект восстанавливался, но потом передумал - ибо нехрен на охранника с иммуной наезжать :-)
Возможный баг - если на криче будет много иммунитетов, то ремувится только один (возможно, не нокдаун, т.к. эффекттип есть только EFFECT_TYPE_IMMUNITY). Хотя не знаю, я сейчас в ж...пе полнейшей, до ближайшего тулсета километры, посему могу и ошибаться ... |
||
![]()
Сообщение
#19
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Да, я добрался-таки до тулсы, проверил: все работает (исходя из оргинзации цикла ActionRemoveObject(. . .) ), уничтожает ВСЕ эффекты иммунитета на криче... Теперь в поярдке садомазохизма попытаюсь сделать, чтобы эффект возвращался после прозхождения процедуры "валяния" ПС на земле. Загвоздка в том - как фиксировать длительность начального эффекта и наложить новый эффект с такой же длительностью... ДБ, помоги :-) Да, и еще: обнаружилась досадная бага - атакующие перса кричи не меняют свое отношение к ПС, когда гвард уже поменял отношение. Попробую исправить. ----------------------------------------------------- Еще одна вещь: полезная для купцов фишка - не знаю как у других, но у нас в моде преобладают торговцы специфического назначения: напр., продающий только зелья, или только броню и оружие и т.д. Но игроки в процессе имеют привычку продавать в магазине всякую дрянь - она забивает инвентарь магазина... Проблему решает простой скриптик на он_опн_стор... Скрипт универсальный.
|
||
![]()
Сообщение
#20
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Выдрана из буржуйского мода. Код _каа_ предусматривал только 4 цвета. здесь больше. пользуйтесь. |
||
![]()
Сообщение
#21
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Цветной текст. Пример: Называешь мой инклюд "lib_colortext". Скрипт на он_ентер локи. На входе ПС говорит фразу you are entering object, и она отображается не стандартным белым, а красным (TXT_COLOR_RED). Если бы на месте TXT_COLOR_RED стояло бы TXT_COLOR_YELLOW , она отобразилась бы желтым. Проверь.
|
||
![]()
Сообщение
#22
|
|||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Скриптики на головоломку. Тоесть не совсем головоломку... На закодированную дверь. У вас есть локация в которой есть дверь. Эта дверь изначально закрыта. Еще там есть N-ое количество плиток (Plate) на полу с любыми тегами, но именами букв. Например, плита с именем "р" и тегом..ну допустим "letter_r". И надо столько плит - из скольки букв состоит кодовое слово двери. Или можно больше чтоб запутать игрока. Если у вас на двери не кодовое слово, а целая фраза, тогда чтобы сделать пробел надо содать плиту с именем - "пробел". Все плиты должны быть Юзабельные(Usable). Еще там есть рычаг после дерганья которого проверяется тот код, который вы набрали наступая на плитки. Если он правильный - закодированная дверь открывается, если нет - набранный код сбрасывается и игрока ударяет током. OnUsed любой плиты с именем-буквой
OnUsed рычага с тэгом "code_lock"
|
||||
![]()
Сообщение
#23
|
|||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Небольшой, совсем простой скриптик банка. В нем нет никаких паролей для снятия золота, проверок на CDKey или имя игрока. Это если вам надо сами добавите как SetLocalString и проверки тоже(IMG:style_emoticons/kolobok_light/smile.gif) Или можно например на предмет-договор поставить Undropable. Чтоб воры не украли и игрок не передал. Итак, у нас есть НПС - заведующий банком. Наш игрок заходит в банк и у него есть 3 действия: "балланс", "положить", "забрать". Все эти действия а так же ответы ДА и НЕТ производятся посредством обыкновенного чата(НЕ диалога). Если у него нет договора с банком то ему предлагают его завести и дают 1 минуту чтобы сказать да или нет. Если договор заведен - игрок может снять деньги со счета, положить на счет или узнать свой балланс. Система основанна на LocalInt которые сохраняются на предметах вместе с игроком. Скрипт ставится на OnSpawn НПС заведующего банком
Этот скрипт ставится на OnConversation НПС заведующего банком
|
||||
![]()
Сообщение
#24
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Часть скрипта из нашей демки. У нас будет более продвинутая(в демо, думаю, включать не будем, но в релизе всего мода будет точно), чем в обыкновенном НВН система кастомных разговоров. Сейчас я (параллельно с лтом и АИ :-) ) пишу систему разговоров. Итак, решил бросить в Базу Скриптов коротенький скриптик. Суть: он ставит любое сцществительное в родительный падеж (string RusGenetiv). Параметр nSex - род: 1 - мужской, 2 - женский, 3 - средний. Скрипт протестирован на 150 словах. Хотя, сами понимаете, русский язык сложен и этого кол-ва слов явно мало, посему если найдете ошибки, тут же сообщите. ЗЫ: сейчас пишу Dativ & Akkusativ (наряду с Genetic самые употребительные) (на немецкий манер называю - мне языки германской группы вообще в последнее время ОЧЕНЬ нравятся :-) ), подумываю над прилагательными. (просто надо грамотно реализовать стековку имени + фамилии + прозвища) ЗЫЫ: при использовании указание авторства обязательно
|
||
![]()
Сообщение
#25
|
|||
Level 4 ![]() ![]() Класс: Друид Характер: Neutral Evil Раса: Эльф NWN: Скриптинг [PW] ![]() |
Ладно думал я думал и решил тут отпостить простенький скриптик на отрыскивание изначально дисбалансированных фишек вещей и замену их другими, более сбалансированными. Тут заменяются: хаст, трусинг, иммунитеты, фридум. Хорошо для шарда =)
Сообщение отредактировал Twin - Jan 8 2005, 05:57 |
||
![]()
Сообщение
#26
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Вот простенький скриптик, если НПС отойдет от своего POST_-а дальше 15 метров, то появится строка в диалоге.
|
||
![]()
Сообщение
#27
|
|||
Level 4 ![]() ![]() Класс: Друид Характер: Neutral Evil Раса: Эльф NWN: Скриптинг [PW] ![]() |
А вот скриптик, если при каких нибуть условиях вы не хотите, чтобы игрок рестился обычным методом через кнопку реста:
|
||
![]()
Сообщение
#28
|
|||||||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
автор: _kaa_ Вот стандартный файл для алкоголя:
Самый простой способ добавить что-то: Так была реализованна отрава на Экзисе по заказу Илэссэ (IMG:style_emoticons/kolobok_light/smile.gif) Обрабатывался тег бутылки. Последние цифры преобразовывались в задержку, после который выпивший эту гадость умирал, дрыгая ногами.
Вот вызываемый скрипт смерти: `lg_anim_death`
Добавлено в [mergetime]1092332152[/mergetime] <small>Добавлено в 17:26</small> Шпаргалка Айвана по скриптам Код дело в том, что при object oJamp = GetTransitionTarget(OBJECT_SELF); if (GetIsPC(oPC)) { AssignCommand(oPC, JumpToObject(oJamp)); НЕ ВСЕГДА МОЖЕТ ПРОИЗОЙТИ СКАЧОК надо делать так: string sJamp = GetTag(GetTransitionTarget(OBJECT_SELF)); .... JumpToObject(GetObjectByTag(sJamp)); ************************************************ tag = mask + INtToString(Number); mask = "WP_NPCTAG_" Number = 1..12 ************************************************* DestroyObject(GetItemInSlot(INVENTORY_SLOT_CARMOR,oPC)); ************************************************* > ЖУРНАЛЬНЫЕ ЗАПИСИ ПО КВЕСТОВЫМ ПРЕДМЕТАМ object oItem=GetModuleItemAcquired(); if(GetTag(oItem)=="SEAMAGAZIN_PIRAT") { if(GetLocalInt(oItem,"DO_ONCE")!=1 && GetItemPossessor(oItem) == GetFirstPC()) { AddJournalQuestEntry("ANDRA_PIRATES", 4, GetFirstPC()); SetLocalInt(oItem,"DO_ONCE",1); } } ***************************************************** > Увеличение числа переменной на единицу за раз. SetLocalInt(объект_1, "переменная_1", GetLocalInt(объект_1, "переменная_1") + 1); На кого ставится переменная? объект_1 = OBJECT_SELF - если на сам триггер или GetEnteringObject() - если на наступившего ******************************** > Рандом на начало строки int StartingConditional() { // Add the randomness if(Random(100) >= 15) return FALSE; return TRUE; } ************************************************* > Дестрой нескольких объектов по одинаковому тэгу. при СreateObject укажи новый тэг "new_tag" а потом, когда условие соблюдено, делаешь так: void main() { int i=0; object oScelet = GetObjectByTag("new_tag",i); while (oScelet!=OBJECT_INVALID) { DestroyObject(oScelet); i++; oScelet = GetObjectByTag("new_tag",i) } } **************************************************** > Проверка шмотки на игроке if (GetTag(GetItemInSlot(INVENTORY_SLOT_CARMOUR,GetPCSpeaker())=="тэг нужной шмотки") >*************************************** > ВХОД в локацию по проверке переменной object oPC = GetEnteringObject(); object oDoor = GetObjectByTag("тэг_двери1"); // до затопления if (!GetIsPC(oPC)) return; if (GetLocalInt(oPC, "FLOODED") == 1) oDoor = GetObjectByTag("тэг_двери2"); // после затопления AssignCommand(oDoor, ActionOpenDoor(oDoor)); AssignCommand(oPC, JumpToObject(oDoor)); >*************************************** // Скрипт может стоять НА PC в диалоге!!! void main() { object oPC = GetPCSpeaker(); object oItem = GetItemPossessedBy(oPC, "ZAVTRAK"); if (GetTag(oItem) == "ZAVTRAK") { SpeakString("Смотри не лопни!"); DestroyObject(oItem); // УБИВАЕТ ПРЕДМЕТ } else { SpeakString("Ой! Да где же оно?"); } } >****************************************** // Скрипт должен стоять НА НЕПИСЕ!!! void main() { object oPC = GetPCSpeaker(); object oItem = GetObjectByTag("ZAVTRAK"); if (GetTag(GetItemPossessedBy(oPC, "ZAVTRAK")) == "ZAVTRAK") { SpeakString("Смотри не лопни!"); ActionGiveItem(oItem, oPC); // ОТДАЕТ ПРЕДМЕТ } else { SpeakString("Ой! Да где же оно?"); } } >****************************************** void main() { object oPC = GetPCSpeaker(); object oItem = GetItemPossessedBy(oPC, "MINERS_PISMO"); object oNos = GetObjectByTag("SUPER_NOS_IN_MARKET"); AssignCommand (oNos, JumpToObject(GetObjectByTag("POISON_SUPER_NOS"))); if (GetTag(oItem) == "MINERS_PISMO") { DestroyObject(oItem); // УБИВАЕТ ПРЕДМЕТ SpeakString("Отлично, Грэмм у нас в руках!"); } } >****************************************** > Дает вещь из палитры, а не из инвентаря object oPC = GetFirstPC(); CreateItemOnObject("ResRef-вещи", oPC, число); Последний параметр нужен только если ты даешь типа стрел или пуль... короче количество в ячейке инвентаря. Само собой 2 меча ты дать таким образом не сможешь :)... >****************************************** <small>Добавлено в 17:29</small> автор Valleo Маленький скриптик для реализации болота:
|
||||||||
![]()
Сообщение
#29
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Вот простой скриптик, ставится на строку НПС и во время длинного расказа, происходит, как бы временной интервал с потухшим экраном. Что то навроде, как в кино: "Прошло два года..." :?)
|
||
![]()
Сообщение
#30
|
|||||||
Level 5 ![]() ![]() Класс: Некромант Характер: Neutral Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
Благодаря советам вышестоящих модераторов в другом топике, я таки дописал респаунинг NPC по событию их смерти, без использования энкаунтеров. ;) Это может кому-нибудь пригодиться, т.к. нет проблемы с "пересечением" области энкаунтера игроком и т.п., NPC может появится прямо перед носом игрока. Для работы скрипта нам потребуется создать плейс с тэгом PLC_AUTORESPAWN. Любой плейс, он нужен лишь для того, чтобы на него вешать DelayCommand. Лично я ставил этот плейс в "системную" локу 8x8, которая только для подобных целей и была создана. У меня не получилось повесить DelayCommand на вейпоинт, иначе бы плейс создавать и не потребовалось бы. ;) Создаем новый файл скрипта, который будет инклюдится к событию смерти:
Далее ставим на карту требуемого NPC, в скрипте OnDeath или UserDefined на событие 1007 (главное чтобы во время смерти срабатывало) в самом начале вставляем:
И где-нибудь ближе к концу скрипта смерти вставляем:
Настраивается это всё просто. Заходим в Variables созданного NPC и добавляем переменные (все типа int): respawn_time - Количество секунд, через которое появится новый NPC. respawn_max - Необязательный параметр. Максимальное количество респаунов NPC. respawn_animation - Необязательный параметр. Проигрывать ли анимацию во время создания NPC [0/1]. Можно настраивать Variables прямо в синьке NPC, на эффект это не влияет. Место где появится новый NPC определяется путём выставления вэйпоинтов с названием типа "WPR_"+ тэг_умершего_NPC. Если в начале тэга NPC стоит "NPC_", то эти четыре символа отрежутся. Всё. При желании можно можно сохранять любые параметры умирающего NPC, даже случайный лут скопировать с трупа и загрузить в слудеющий респаун такой же. В общем всё что угодно. Надеюсь кому-нибудь пригодится. ;) P.S. Забыл о вэйпоинтах написать... Исправлено. |
||||||
![]()
Сообщение
#31
|
|||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Этот скрипт можно ставить на факел, фонарь, или луч света. Например факелы и фонари можно расставить по городу. А лучи света или магические брызги - к фонтанам. И когда в городе наступит ночь - зажгуться факелы и будут освещать территорию, а у фонтанов заработает подсветка. Скрипт ставит OnHB плейса. Не забудьте снять галочку Static.
Сообщение отредактировал Аваддон - Nov 9 2004, 22:36 |
||
![]()
Сообщение
#32
|
|||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Скрипт получения уровня по алайменту написал [MoF]Darth_Nick. Там он использовал визуальные эффекты для разных алайментов. Я лишь добавил немного своего в этот скрипт. И так, получение лвла по алайменту а-ля горец :D
Сообщение отредактировал Twin - Jan 8 2005, 06:00 |
||
![]() ![]()
Сообщение
#33
|
|||||||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Ой, чето зачастил я со скриптами:) Но надеюсь пригодится :xz: Этот скрипт на отдых. Для начала разберемся с условиями отдыха: 1. У игрока должна быть кроватка(подстилка) aka бэдролл 2. Так же должна быть в наличие еда. 3. Расстояние от разведенного костра должно быть не более 3х метров. 4. Если игрок спит в тяжелых доспехах (более 20 lbs) то у него есть риск заболеть, вредно ведь для здоровьица геройского. Но спасы рулят;) А если не рулят то придется переодеваться в пижамку (гы-гы :D ) Чтобы развести костер надо: 1. Найти дрова (сами запихнете их в какое нить дупло и т.п.) 2. Разложить дрова на земле. 3. Пожечь факелом. 4. Костер горит 180 сек (можете сами регулировать) 5. Если вы используете выложенные дрвоа без факела - игрок их поднимает, если с факелом - разводит костер. Теперь с предметами: Item'ы: Подстилка - тэг [bedroll] Еда - тэг [food] Дрова - тэг [wood] Placeable'ы: Костер - синька [camp] Подстилка (внешне выглядит как раскатаная из рулона ткань) - синька [place_bedroll] Дрова (внешне выглядит как куча дров aka woodpile :D) - синька [place_wood] . P.S. Синька это Blueprint ResRef Со всех плейсов снимите галочку Static! А плейс Дрова должен быть Используемый. Поехали... Скрипт ставится на OnPlayerRest
Скрипт ставится на UnAcquireItem
Скрипт ставится на On Used плейса дров
Скрипт ставится на On Heartbeat костра
Эээ вроде ничего не напутал. Если что не получается - скажите, я поправлю. Сообщение отредактировал Аваддон - Nov 13 2004, 16:51 |
||||||||
![]()
Сообщение
#34
|
|||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Источник: Валут. Нашел: Авадон.
|
||
![]() ![]()
Сообщение
#35
|
|||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Я тут написал пару скриптиков. Они для сервера использующего APS/NWNX 2 + MySQL. Естественно писал для своих нужд, но может кому и пригодится. Главная его цель - информативность. Если вы умеете работатьс MySQL то польза от него будет большая. Он регистрирует персонажей. Потом просмтривая БД вы можете узнать сколько: -Игроков зарегистрированно -ДМов зарегистрированно -Персонажей на одном аккаунте -Персонажей на одном IP -Персонажей на одном CD-Key -Аккаунтов на одном IP -Аккаунтов на одном CD-Key -Сколько персонажей определенной расы на шарде -Сколько персонажей определенной под-расы на шарде -Сколько персонажей поклоняются определнному одинаковому божеству, и поклоняются ли вообще -Сколько персонажей мужских, а сколько женских. -Дату создания персонажа. -ну и еще что-нибудь если забыл. Да, если кто нибудь напишет PHP форму для статистики читающую из этой БД - это будет замечательно - тогда срочно свяжитесь со мной:) Скрипты: Скрипт aps_include поставляется в erf архиве вместе с APS/NWNX 2. Скрипт на OnModuleLoad:
Скрипт на OnClientEnter:
Сообщение отредактировал Аваддон - Nov 18 2004, 07:26 |
||||
![]()
Сообщение
#36
|
|||
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
дык... Сообщение отредактировал DBColl - Nov 19 2004, 12:16 |
||
![]()
Сообщение
#37
|
|||||||
Level 9 ![]() ![]() ![]() Класс: Страж Тьмы Характер: Chaotic Evil Раса: Нежить ![]() |
у меня вот такий скрипт на OnPlayerDeath
Чтобы всплывало окошко нужна например такая строка
А для снятия экспы можно использовать этот стандартный скрипт :yes:
Я его немножко изменил...не знаю насколько хорошо, но все пашет :good: Сообщение отредактировал Лито - Nov 22 2004, 10:53 |
||||||
![]()
Сообщение
#38
|
|||
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
Я смерть плеера в БД записываю :)
Чуть изменил скрипты Аваддона... Аваддон ты мог отредактировать скрипт и записывать еще лвлы туды :) Вопрос 1: как можно изменить хелсы ПС на те которые я хочу сам, через скрипты? Добавлено в [mergetime]1101261601[/mergetime] П.С. у мя снятие экспы на OnRespawn ставится :) и золото не отбираю, ибо не жадный :lol: :lol: |
||
![]()
Сообщение
#39
|
|||||||||
Level 2 ![]() Класс: Клерик Характер: Neutral Evil Раса: Эльф ![]() |
Спаунер/анспаунер для гвардов (Утром открывается дверь и появляется гвард идет на свой пост или свои вэйпы, несет службу весь день или ночь, когда приходит время идет обратно к двери если у него есть ключ то открывает ее, если нет то стучит и ему открывают, можно использовать и для спауна и обычных нпсов, если не много изменить :D ). В вараблах двери создаем переменные DAYTIMEGUARD string “resref npc”, если гвард не нужен то "" NIGHTTIMEGUARD string “resref npc”, если гвард не нужен то "" GATESGUARD string “resref npc”, если гвард не нужен то "" На onhb двери вешаем :
На onopen
На onfailtoopen
В userdef нпса добавлете:
ЗЫ мой первый нвн скрипт так что если это тупо не смейтесь:) Чуть не забыл:) Дверь должна иметь тэг DOOR_7 символов (индификатор спаунера) Сообщение отредактировал Ilharess - Nov 24 2004, 12:56 |
||||||||
![]()
Сообщение
#40
|
|||||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
долго отсутствовал, с интернетом опять неприятности были....
Вот, Лито меня выручил. И так все объяснил:)
Хэлсы всмысле возможность максимальных хэлсов или вообще просто там сделать что у перса стало 2- хэлсов? Тогда это надо сделать так: int iMax = Берешь Максимальные Хит-Поинты перса; int iValue = 20 ;//сколько хочешь хит-поинтов сделать персу int iDiff=iMax-iSet; //разница между максимальными хит-поинтами и теми которые ты хочешь установить int iSet = iMax-iDiff; А затем просто выполняешь команду Магическое Повреждение (iSet) на PC В это случае у игрока станет 20 хит поинтов.
Няя...а зачем? Я этот скрипт делал как Регистрационный. А ты вероятно хочешь статистику сервера сделать? Тогда погоди немного... Я тут пишу одну системку, чтобы игроку надо было своего персонажа регистрировать через Web интерфейс:) Во первых это поможет отследить чтобы игроки не создавали себе кучу игроков, а во вторых, незарегистрированных лично на сайте шарда - пускать на сервер не будет. |
||||||
![]()
Сообщение
#41
|
|||||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
На ваульте полно Сервер-статус-чекеров, но они берут инфу когда снифят трафик от сервака к серверу Bioware. В нашем НВН сервере есть такая галочка "Post game to Inernet", которую самому поставить нельзя, а если интернет у сервера не доступен (например, в локальной сети) то, это галочка убирается, траффик от сервера не передается, и следовательно все PHP скрипты для статуса, не работают. Но у меня появилась идея сделать статус сервера с помощью APS/NWNX2 и базы данных MySQL. [MoF]Darth_Nick написал еще для нее PHP скрипт который будет брать данные из MySQL. Статус позволяет видеть: - Количество игроков на сервере - Их имена (зачем MoF]Darth_Nick'у нужны аккаунты - понятия не имею, но я чуть модифицировал его скрипт - если вам нужны аккаунты см. в теме "Статус Сервера через PHP страницу" Итак, для начала мои скрипты: - Пол - Раса и Подраса - Уровень - Классы и уровень каждого класса - PC или DM Теперь скрипты: OnModuleLoad
OnClientEnter
OnClientLeave
Сообщение отредактировал Twin - Jan 9 2005, 17:24 |
||||||
![]()
Сообщение
#42
|
|||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
продолжение OnPlayerLevelUp
PHP-скрипт by [MoF]Darth_Nick Я его немного модифицировал под классы, а так же чтобы сервер говорил об отсутствии игроков на сервере УДАЛЕНО. Айваном. Сообщение отредактировал Aiwan - Jul 26 2005, 10:12 |
||
![]() ![]()
Сообщение
#43
|
|||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
В одном из моих постов, в Базе Скриптов я опубликовал скрипт на отдых в дикой местности. Теперь, я бы хотел уделить внимаение отдыху в гостинице. И так, что нам надо для того чтобы организовать отдых в гостиничной комнате? 1. Нам нужен этот хак (0.04 мб), который заменяет в тайлах простые кровати, на такие же по виду кровати, но на которые игрок может забраться. 2. Нам надо сделать гостиничную комнату. Тэг локации должен начинаться с "free". Например, free_inn_rooms. Я делал одну локацию в которой много гостиничных комнат, никаким образом не соединенных между собой. В каждой комнате перед кроватью стоит ВэйПоинт с тэгом "BED" и на кровати стоит ВэйПоинт с тэгом "SLEEP". 3. Пока вам в кратце опишу, что же происходит при отдыхе в гостиничной комнате. Игрок подходит к кровати, раздевается, забирается на кровать и ложится спать. Накладывается эффект сна. Потом, если отдых удачно завершен - эффекты сна снимаются, игрок встает с кровати и одевается. Если же отдых был прерван - игрок встает с кровати, получает на время Slow, эффекты сна снимуться только когда эффект сам прекратит дейсвовать по времени. И естественно поднятый ни свет, ни заря игрок не одевается. Придется это делать вручную. На события модуля OnPlayerRest ставим нижеследующий скрипт.
Сообщение отредактировал Twin - Jan 8 2005, 05:55 |
||
![]()
Сообщение
#44
|
|||
Level 5 ![]() ![]() Класс: Некромант Характер: Neutral Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
Пара функций для сохранения и восстановления всех свойств предмета. Дают возможность конвертировать все перманентные (и только перманентные) свойства предмета в строку, которую можно сохранить куда хотите. И также восстановить все свойства (кроме On Monster Hit) из этой строки на предмет. Также сохраняются заряды палочек. Не сохраняется: Кастомный вид брони и оружия. Additional Price отличная от ResRef'овской. Свойство On Monster Hit (его можно ставить только на Creature Weapon) сохраняется нормально, но при восстановлении работает некорректно. Вернее два из подствойств (SubType) этого свойства не получается восстановить. Карочи, а оно вам ваще нужно? ;) Количество использований свойства X uses/day. То есть при восстановлении данного свойства из строки возможно, что количество использований обновится как будто после отдыха - не проверял. Наверняка что-то еще не сохраняется, но мне в голову ничего не приходит.
Данный скрипт можно исползовать для создания банка вещей. Так как проблема сохранения вещей с динамическими теперь отпадает. |
||
![]()
Сообщение
#45
|
|
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
http://rage-t.boom.ru/creative.html
На эой страничке нашего сайта висят пару библиотек. ИМХО довольно полезных. |
![]()
Сообщение
#46
|
|||||
Level 9 ![]() ![]() ![]() Класс: Страж Тьмы Характер: Chaotic Evil Раса: Нежить ![]() |
Многие начинающие не могут нормально соединить несколько отдельных скриптов в один целый, например часто надо вписывать в скрипт OnClientEnter дополнительные...хм...вещи. Специально для них я сделал систему захода игрока на сервер. она соединяет два скрипта _kaa_ и baal в одно целое, кроме того в системе реализованна выдача начального пакета по класу. Все что надо изменить это вбить РесРефы вещей которые вы хотите дать игроку. Проверка на первый заход производится с помощью проверки на наличие определенного предмета в инвенторе, то есть если этот предмет есть то скрипт останавливается на точке выдачи стартового пакета, если же этого предмета нет, то скрипт выдает игроку этот предмет:) и стартовый пакет. В моем случае этот предмет oBook, создаете предмет, копируете его ресреф и заменяете object oBook=GetItemPossessedBy(oPC, "item004"); на свой Вот сама система:
Кроме того чтобы скрипт нормально работал надо поставить еще один(_kaa_) на OnClientLeave Вот и он
Сообщение отредактировал Lex - Mar 18 2005, 23:36 |
||||
![]()
Сообщение
#47
|
|||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Скрипт на смерть НПС. НПС исчезает, а на его месте появляется труп на который переносятся все вещи покойного. Сам труп исчезает через 250 секунд. "low_plc_loot" - резреф трупа в палитре.
Сообщение отредактировал DBColl - Mar 12 2005, 12:09 |
||
![]()
Сообщение
#48
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СКРИПТ ВЕДУЩИЙ ИГРОКА ЗА НПС ПО ТОЧКАМ. Вейпов должно быть столько сколько я нарисовал, но либо меньше 10 ли бо больше чем у меня. Почему? Не знаю, неделю гонял Стинки по вейпам и он гад прыгал на некоторые из них при количестве 10, а так нет. Идет как миленький. и расчитай скорость так, что бы НПС НЕ ЗАСТРЯЛ и не опаздал на 15 сек до точки. Иначе вы просто прыгнете на следующий вейп и диалог прервется. А так он остановится и продолжите диалог.
|
||
![]()
Сообщение
#49
|
|||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ ПРОКЛЯТИЯ ЛЕВОРА" ЦИКЛ "СКРИПТЫ ДЯДЮШКИ LEX'А" Цель: сделать 2 (можно и более) НПС которые как будто между собой разговаривают. (те, кто играл ПЛ в Тсурлаголе видели такие примеры. Особенно в тавернах.) Реализация: ставим 2х НПС, даем соотв. тэги и ставим между ними нивидимый объект, в ХБ которого вносим этот скрипт. "+" - эффект диалога. Так как фразы стыкуются (вы сами их пишите так, что на вопрос дается ответ и прочее.) так как они все парные. "-" - на каждую уникальную группу свой скрипт. Текст разговора пишется в скрипте.
================================================================================ Небольшой простенький скрипт на слот onDamage плэйсебла. (ТЭГ плэйса "DANGER") Плэйс взрывается, если его повредить. Если у вас есть Проклятие Левора, то в пещере почти все бочки это объекты с таким скриптом. Сила взрыва растет, если рядом есть такие же объекты. ВНИМАНИЕ: больше таких 5 рядом не ставить. Тормозит....скрипт не оптимален. Делалася под СоУ, поэтому использованны не локалки, а поле KeyTag. Скрипт старый и давно мной не улучшавшийся. Это вам просто для работы. (как юзать в таком варианте KeyTaG: ставим флаг Закрыто и Требуется ключ. Поле открывается. Теперь пишем туда что надо и снимаем флаг Закрыто. ограничение: скрипт лучше не ставить на закрытые объекты, так как поле KeyTaG нужно для работы.) в поле KeyTag радиус и сила взрыва: X_Y X - сила по нижепреведенной шкале. По умолчанию 2 1 - слабый 2 - средний 3 - сильный Y - радиус в футах. (не более 9). По умолчанию 5 футов. подрыв объекта происходит при повреждении более чем на 30%.
|
||||
![]()
Сообщение
#50
|
|||||||||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ ПРОКЛЯТИЯ ЛЕВОРА" ЦИКЛ "СКРИПТЫ ДЯДЮШКИ AIWAN'А" Скрипт который позволяет при наличии надетой брони с определенным ТЕГом ходить во вражественном лагере :) Ну или где там вам надо...
Дальше, два скрипта для запуска диалога в котором участвует НПС которого вы атакуете и диалог начинается с определенного нр у НПС. Скрипты финального боя с воином в модуле 3.
Вот сам скрипт смены репутации:
СКРИПТ ЗАПРЕЩАЮЩИЙ МОНСТРАМ ВЫХОДИТЬ ИЗ ЛОКАЦИИ ВСЛЕД ЗА ИГРОКОМ
|
||||||||
![]()
Сообщение
#51
|
|||||||||||||||||||||||||||||||||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ ДЯДЮШКИ MILEZ'А" Автор:::::::::::::::::Milez:::::::::::::::::::::::::::::: May 22 2003 Cкрипт для смерти. Вешать на OnPlayerDying модуля. + скрипта в том, что он не использует хартбит. Это бета-версия скрипта предложена as is, автор не несет ответственности за материальный и моральные ущерб, который этот скрипт может кому-то принести!
Смысл в том, что каждый раунд (6 сек) игрок кидает спасбросок стойкости для половинного дамаджа от 1d4, при этом DC, который надо побить, увеличивается с каждым раундом на 1 (начальное значение 15). При удачном спасбраске 2 раза подряд кровотечение прекращается. от 0 до -9 - игрок без сознание. От -10 и меньше - смерть без спасброска. ************************************************************************************ Автор:::::::::::::::::Milez:::::::::::::::::::::::::::::: May 24 2003 Вот температурный скрипт, полностью в соответсвии с D&D 3ed согласно разделам HEAT и COLD в DMG. Писан мной, любые совпадения в реализации с другими подобными скриптами являются чисто случайными. За общую идею создать нечто подобное спасибо ДБколлу. Подробнее об общем алгоритме работы см DMG (Температура, в отличие от DMG, приведена не в иноземных Фаренгейтах, а в старых добрых Цельсиях). Всяческое использование, модификация, дебаггинг приветствуются! Никакой ответственности за причиненный моральный/материальный ущерб в результате работы скрипта автор не несет! Вешать на OnEnter местности.
где ku_campfire - "синька" костра ************************************************************************************ Автор:::::::::::::::::Milez:::::::::::::::::::::::::::::: May 24 2003 Скрипт для "тягловых" животных. Легко переделывается для банка. Писано мной, любые совпадения с чьей-либо реализацией как в деталях так и в общем алгоритме чисто случайны. Всяческие изменения, доработки, дебаггинг приветствуются. За моральный/материальный ущерб в результате работы скрипта автор ответственности не несет! На "тягловом" НПЦ (я использовал окса, но это может быть и хенчман, и фамильяр) в диалоге ставиться строчка наподобие "Перебрать поклажу". В Action Taken ставиться следующий скрипт:
Создается "синька" врменного контейнера (я использовал за образец Invisible Object), на "синьке" ставяться аттрибуты Usable, Plot, Has Inventory. Имя синьки в данном случае "inviscont". В обработчик "синьки" OnClose ставиться следующий скрипт:
************************************************************************************ Автор:::::::::::::::::Milez:::::::::::::::::::::::::::::: May 27 2003 Гильдия Убийц. (с) Оригинальная идея ONYX'а. (с) Реализация Milez'а. Система маленько запутанна, в модуле все взаимосвязано, здесь только основные скрипты, без диалогов и прочего. Итак, есть айтем Контракт, в св-вах добавлено Cast: Unique Power Unlim Times/Day. Имя синьки contract. Есть айтем Голова "клиента", в св-вах Cast: Unique Power Self Only Unlim Times/Day. Имя синьки headofclient. В OnActivateItem модуля следующая бяка:
Персонажи: Наемник (типа главарь). В его диалоге уставливается кол-во убийц для задания, забираются деньги у игрока, дается контракт (CreateItemOnObject("contract",oPC)). Кол-во убийц-исполнителей должно писаться на контракте (SetLocalInt(oContract,"NumberOfKillers",xxx)) Убийца. Собственно исполнитель. Имя синьки "gypsy007". В OnHeartbeat убийцы такая бяка:
Вестник Гильдии Убийц. После исполнения задания доставляет заказчику голову жертвы. Имя синьки "halfmerc002". Диалог длинный, хитрый и может быть любым. Основной скрипт который должен быть для отдавания головы жертвы следующий:
Работа скрипта: игрок говорит с Наемником и просит его убрать какого-либо игрока/неписю. Наемник спрашивает сколько посылать убийц и в зависимости от их кол-ва устанавливает цену, если игрок согласен и у него хватает денег, то игроку дается контракт и забираются деньги. Потом контракт используется на том неписе/игроке которого надо "убрать", после чего через 50-100 секунд (DelayCommand(IntToFloat(Random(51)+50),... Впрочем это можно регулировать) около "клиента" материализуется энное кол-во убийц. Они атакуют жертву (убийцы у меня в спец. фракции Killer, которая нейтральна ко всем, так что атакуют они только намеченную жертву, но это можно менять) и если жертва успешно убивается, то к заказчику направляется гонец (если жертва выживает, то значит убийцы умирают и посылать гонца некому) и убийцы бесследно смываются с места преступления. Игрок говорит с посыльным и получает голову "клиента". Если использовать эту голову, то игроку-заказчику напишет чья это голова. Вот и все. ************************************************************************************ Автор:::::::::::::::::Milez:::::::::::::::::::::::::::::: May 14 2003 Это система отдыха в моем модуле (модуль пока еще не вышел из стадии первичной разработки поэтому о нем пока ни гу-гу). Навеяно системой отдыха из Axistown'а но полностью писано мной kel_rest
ku_makecamp (вешать на OnUsed дров)
kua_dropwood (вешать OnUnAquiredItem модуля)
kr_resteffect (вешать на OnRested модуля)
khb_cfire_sfx (на OnHeartbeat костра, исключительно для красоты, можно не использовать в целях повышения скорости работы кода)
Используемые "синьки": KEL_WOOD - дрова как айтем в инвентаре ku_woodpile - горка дров как плэйсабл айтем на земле ku_campfire - сам костер KEL_FOOD - еда ************************************************************************************ Автор:::::::::::::::::Milez:::::::::::::::::::::::::::::: May 29 2003 "Приведем НВН в соответствие с АДиД". На повестке дня скрипт для ветра. Ниже базовый инклуд. Основная функция - ApplyWindEffect. Параметры: int iWindForce - сила ветра: 0 - Light wind; 1 - Moderate wind; 2 - Strong wind; 3 - Severe wind; 4 - Windstorm; 5 - Hurricane force wind; 6 - Tornado.
- направление ветра, угол.
- на кого "подуть" Рекомендуется использовать в Heartbeat'е, перебирая всех игроков, так как по АДиД эти проверки должны проходить каждый раунд. Реально в хартбите использовать можно например так:
Работает в соответствии с соответствующим разделом DMG. Ниже собственно сам инклуд.
Кроме того сила ветра 3 (Severe wind) соответствует спеллу Gust of Wind, так что кому не в терпеж ждать этого спелла в SoU можете заюзать этот скрипт для создание этого спелла вручную Смотреть spells.2da, там прописаны данные по спеллам, включая скрипты, эти спеллы реализующие. ************************************************************************************ Автор:::::::::::::::::Milez:::::::::::::::::::::::::::::: Jun 8 2003 Как и обещал, скрипт для осадков. Прошу прощения за такую задержку: только начались экзамены, просто не было времени. Писано как всегда мной, теперь уже по готовому шаблону (см. ветер, кстати, этот шаблон очень удобно использовать во многих случаях, может кому пригодиться). Ниже только функция, использовать можно так же, как скрипт на ветер. Все сделано по DMG AD&D 3ed.
Это предпоследний скрипт из цикла скриптов, реализующих окружающую среду по АДиД. Последним будет скрипт для штормов, но там уже в принципе все просто: это в основном смесь осадков и ветра. ************************************************************************************ |
||||||||||||||||||||||||||||||||||
![]()
Сообщение
#52
|
|||||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ ДЯДЮШКИ MILEZ'А" Автор:::::::::::::::::Milez:::::::::::::::::::::::::::::: Jun 29 2003 Еще один спавн. Фишка в том, что респавн существ основан на вероятностом законе, а не на времени, через которое спавн должен происходить. Может кому пригодиться. Основной скрипт на Heartbeat плейсабла, играющего роль спавна:
В OnUserDefined стандартного скрипта nw_c2_defaultd добавим обработчик на событие 1007 (смерть), для регистрации смерти существа на мастер-спавне:
Модификации возможны самые разные. Можно добавить флаг на макс. спавн, чтобы спавн работал только 1 раз, можно внести ограничения по времени. Короче, делайте что хотите Настраивается спавн до обидног просто: с св-вах плейсабла-спавна (я использовал невидимый объект) ставите: Max Hit Points - расстояние, на котором должен появиться игрок, чтобы спавн заработал. Reflex Save - макс. расст-ие от спавна, на котором будут создаваться сущ-ва. Fortitude Save - макс. кол-во существ, к-ое будет поддерживаться спавном. Will Save - вероятность того, что существо будет создано при каждом данном вызове скрипта, в процентах (100 - существа будут спавниться всегда, 0 - спавн отключен. 100 используйте очень осторожно: спавн будет постоянно поддерживать популяцию монстров, игрок просто может не успеть всех прибить!) ************************************************************************************ Автор:::::::::::::::::Milez:::::::::::::::::::::::::::::: Feb 24 2004 Ээээх, давно я тут не писал. Времени скриптовать не было. И вот жизнь подладилась, вышла ХотУ и... Сбылась мечта идиота! Я наконец-то смог сделать нормального призрака! Вот функция:
Ставим ее на OnDeath, а скрипт ресурректа правим так, чтобы, будучи скастованным на чара, проверял соотв-ую лок. переменную и, если надо, "оживлял" чара, скидывая эффкты. КОНЕЦ ЦИКЛА "СКРИПТЫ ДЯДЮШКИ MILEZ'А" СЕРИИ "СКРИПТЫ СТАРОЙ БАЗЫ" |
||||||
![]()
Сообщение
#53
|
|||||||||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ ДЯДЮШКИ _kaa_" Автор:::::::::::::::::_kaa_:::::::::::::::::::::::::::::: Feb 24 2004 По поводу защиты чаров от хака. Вот простая реализация, привязывает конкретный аккаунт и имя персонажа к СД-КЕЮ. Есть возможность ДМ-ом отключить защиту на некоторое время (например сменили СД-КЕЙ и не могут попасть на шард) Все ключи хранятся в базе данных на сервере.
Чтобы отключить на время защиту - из ДМ-клиента в консоли набираете: dm_setmodulevarint SecurityDisable 1 включить обратно : dm_setmodulevarint SecurityDisable 0 ************************************************************************************ Автор:::::::::::::::::_kaa_:::::::::::::::::::::::::::::: Oct 3 2003 Скрипт для магазинов. Проверяет наличие такого товара в магазине, если уже есть - то после продажи удаляет. Нужен на шардах, где мазагины со временем забиваются ловушками, камнями и т.п. - при наличии более 10 страниц ассортимента в магазине начинаются заметные торможения сервера, проверенно. Только одно требования к самим магазинам. В теге должно содержаться слово "_SHOP" (//Иначе нельзя узнать, магазин это или нет). - Вру ведь и никто не видит %) Есть функция узнать тип объекта GetObjectType(); Вызывать из события модуля OnUnAcquireItem Проще всего добавить в уже существующий обработчки строку: ExecuteScript("at_check_dupe",OBJECT_SELF); Сам скрипт: at_check_dupe
************************************************************************************ Автор:::::::::::::::::_kaa_:::::::::::::::::::::::::::::: Jan 30 2004 Из нового. Реализация кольца духа - при надевании игрок становится полупрозрачным и может проходить сквозь других игроков. При снятии - эффект пропадает. При желании можно добавить и неузвимость (не стал делать, ибо нефиг). Для эффекта рекомендую добавить DayToNight() при надевании и наоборот. на событие модуля onPlayerEquipItem()
где mg_it_ringghost - тег кольца. написанно вчера для Мидгарда. ************************************************************************************ Автор:::::::::::::::::_kaa_:::::::::::::::::::::::::::::: Mar 25 2004 Расцветка сообщений, выводимых SendMessageToPC() Работает все примерно так: есть тег <cRGB> и парный ему </c> RGB - это три символа, ascii код каждого - это значение соответствующей цветовой компоненты. Посколько многие символы нельзя использовать в скиптах, я взял " " (пробел) (32) и букву "ю" (254) как минимум и максимум. После использования тега раскраски - закрывайте тег в помощью s_end() Мне было достаточно 4 цветов, вот самый простейший код:
Вроде можно и в диалогах через SetCustomToken ************************************************************************************ Автор:::::::::::::::::_kaa_:::::::::::::::::::::::::::::: Mar 26 204 Простейшая реализация двумерного массива (очень полезен при кэширование .2da таблиц). Ограничение - размерность, поставил 0..999
ps. Многие не знают, поэтому добавлю: Если вы описываете кроме самой функции ее прототип - это дает вам а) право использовать функцию в рекурсивных вызовах б) при дабл клике на функции выдаст описание этой функции (все то, что выше прототипа) ************************************************************************************ КОНЕЦ ЦИКЛА "СКРИПТЫ ДЯДЮШКИ _kaa_" СЕРИИ "СКРИПТЫ СТАРОЙ БАЗЫ" |
||||||||||
![]()
Сообщение
#54
|
|||||||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ ДЯДЮШКИ DBCOLL'A" автор::::::::::::DBColl:::::::::::::::::::: May 7 2003 скрипт на первое использование рычага отпирает и открывает дверь, на второе закрывает и захлопывает ее и тд. На "OnUsed" рычага
************************************************************************************ Автор:::::::::::::::::DBColl:::::::::::::::::::::::::::::: May 8 2003 данный скрипт каждые 18 секунд убавляет хиты, если игрок более, чем на 15 футов от костра. (эмуляция действия холода)
************************************************************************************ Автор:::::::::::::::::DBColl:::::::::::::::::::::::::::::: May 28 2003 Это скрипт командира охраны. Ему все солдаты (его фракции) отдают честь. ставится в UserDefined
************************************************************************************ Автор:::::::::::::::::DBColl:::::::::::::::::::::::::::::: Feb 20 2004 Я вот смотрю-смотрю, жду, но что-то так никто и не догадался, как просто можно сделать всплывающую строку на триггере... Вот мой вариант: 1. Создать триггер в палитре. В ОнЭнтер нужен всего один универсальный скрипт! Этот юзаем мы в Проклятии.
2. Создаем этот триггер в модуле, заходим в его свойства и в поле Name пишем текст, который должен всплыть над игроком при наступании на него!!! 3. В KeyTag вносим что-то (любое число!) и получаем постоянно всплывающий текст над всеми PC, кто войдет на него. ************************************************************************************ КОНЕЦ ЦИКЛА "СКРИПТЫ ДЯДЮШКИ DBCOLL'A" СЕРИИ "СКРИПТЫ СТАРОЙ БАЗЫ" |
||||||||
![]()
Сообщение
#55
|
|||||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ ДЯДЮШКИ LAZY RAMN'Ы" автор::::::::::::Lazy Ramna:::::::::::::::::::: Oct 14 2003 LEX: ИСТОРИЧЕСКИЙ СКРИПТ LAZY. ОКТЯБРЬ 2003 ГОДА!! ВЕСЬ РУНЕТ ПОЛЬЗОВАЛСЯ ЭТОЙ ИДЕЕЙ ДО ВЫХОДА ПАТЧА DUMBO Скрипт, позволяющий использовать букву "я" в скриптах В константных строках буковка "я" запрещена, однако в переменных ее никто не запрещал. Посему создаем любой плэсейбл с тэгом ax_letter_ya и именем "я". Потом просто через ya() получаем нашу буковку, либо заменяем в строке все "йа" на "я". =)
Использование: 1) string sMessage = "Мо"+ya()+" сто"+ya()+"ть как стена"; 2) string sMessage = ya("Мойа стойать как стена"); В обоих случаях в sMessage будет "Моя стоять как стена" ************************************************************************************ автор::::::::::::Lazy Ramna:::::::::::::::::::: Mar 15 2004 Не знаю, было или нет (я сюда не сильно заглядываю ), вот элементарнейший скрипт "автоперехода". Телепортирует наступившую на триггер кричу к объекту, тэг которого прописан в KeyTag. Вешается на OnEnter.
Я его ставлю после городских ворот, или ворот на мосту. Если PC не захочет "входить" в ворота, а решит пройтись чуть дальше к краю локации, то его насильно кинут куда надо. Добавлено 18:57 Простенький инклюд. Позволяет получать кол-во лет/месяцев/дней/часов/минут/секунд, которое прошло с момента старта модуля. (в стиле UNIX_TIMESTAMP ) AX_LIB_START_YEAR - стартовый год.
************************************************************************************ КОНЕЦ ЦИКЛА "СКРИПТЫ ДЯДЮШКИ LAZY RAMN'Ы" СЕРИИ "СКРИПТЫ СТАРОЙ БАЗЫ" |
||||||
![]()
Сообщение
#56
|
|||||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ ДЯДЮШКИ BAAL'A" автор::::::::::::Baal:::::::::::::::::::: May 7 2003 данный скрипт забирает у игрока (или любого другого объекта) все вещи и дестроит их.
************************************************************************************ автор::::::::::::Baal:::::::::::::::::::: Aug 18 2003 Вот конечный, работающий скрипт часов, для тех кому интересно. Спасибо ДБу за то, что помог с минутами.
************************************************************************************ автор::::::::::::Baal:::::::::::::::::::: Этот скрипт подсчитовает сколько у цели предметов с выбранным тегом. oInventory - чей инвентарь. sItemTag - Тег
************************************************************************************ КОНЕЦ ЦИКЛА "СКРИПТЫ ДЯДЮШКИ BAAL'A" СЕРИИ "СКРИПТЫ СТАРОЙ БАЗЫ" |
||||||
![]()
Сообщение
#57
|
|||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ SMITH'A" автор::::::::::::Smith:::::::::::::::::::: Sep 24 2003 Мне иногда приходилось сталкиваться с задачей создания случайной локации на заданном растоянии от какого-то объекта. Среди стандартных функций тулсета я такой вещи не нашел (хотя может быть плохо искал ), так, что пришлось написать самому. Может кому и пригодиться:
Скрипт создает случайную локацию на растоянии fRadius метров от объекта oTarget, причем, если задать iLine = FALSE, то локация может быть создана внутри круга на произвольном растоянии от объекта, не превышающем, однако, fRadius. ************************************************************************************ КОНЕЦ ЦИКЛА "СКРИПТЫ SMITH'A" СЕРИИ "СКРИПТЫ СТАРОЙ БАЗЫ" |
||
![]()
Сообщение
#58
|
|||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ SELLARY" автор::::::::::::sellary:::::::::::::::::::: Oct 20 2003 Функция определяет, можно ли надеть указанный армор. в функцию передаем: oArmor - объект армора, oCreature - объект создания, на которое этот армор пытаемся одеть возвращает TRUE, если одеть можно, FALSE - в обратном случае. Проверка идет без учета класса создания (возможно, в дальнейшем модифицирую "по просьбам радиослушателей"). Отдельное спасибо Lazy Ranma за идею и spurlos - за мотивацию, DBColl за подсказку с уровнем.
************************************************************************************ КОНЕЦ ЦИКЛА "СКРИПТЫ SELLARY" СЕРИИ "СКРИПТЫ СТАРОЙ БАЗЫ" |
||
![]()
Сообщение
#59
|
|||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ GREEDO BEEFY" автор::::::::::::Greedo Beefy:::::::::::::::::::: Jan 10 2004 Может кому то пригодится... Если хотите что бы на вашем сервере, имеются ввиду шарды с PW, время и дата не сбрасывались с рестартом то можно сделать следующее. Такой вот скриптик вешаем на любой предмет в модуле, лучше в защищенной локе, в слот OnHeartBeat
Раз в десять минут (можно поставить любое значение) будет сохранятся текущая дата и время на сервере , игровое конечно же. А на OnModuleLoad ставим это:
Написать скрипт вынудило желание ввести в банковскую систему проценты по вкладам и кредиты с процентами, которые зависят от времени. Ну как в жизни С уважением Александр Дишке ************************************************************************************ КОНЕЦ ЦИКЛА "СКРИПТЫ GREEDO BEEFY" СЕРИИ "СКРИПТЫ СТАРОЙ БАЗЫ" |
||||
![]()
Сообщение
#60
|
|||||||||||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ DOCFEERT'A" автор::::::::::::DocFeert:::::::::::::::::::: Feb 10 2004 Вот скрипт для уборщика: Cтавится на OnHeartBeat уборщика Как только уборщик увидит валяющийся на земле предмет, он его сразу поднимет.
************************************************************************************ автор::::::::::::DocFeert:::::::::::::::::::: Feb 24 2004 Скрипт определяет кол-во жизней цели в процентах. oObject - чьи жизни, Возвращает кол-во жизней oObject.
************************************************************************************ автор::::::::::::DocFeert:::::::::::::::::::: Feb 24 2004 Скрипт на автооткрывание дверей. Делаем триггер и вешаем на него 2 скрипта. Это на OnEnter Триггера:
А это на OnExit Триггера:
Триггер просто растягивается под открываемой дверью. ************************************************************************************ автор::::::::::::DocFeert:::::::::::::::::::: Mar 10 2004 А этот код позволяет создать "случайную локацию", как например в БГ или Фаллоут, когда идешь, идешь... И натыкаешься на каких-нибудь рейдеров. Для этого в oArea записываем локацию, в которой будут создоваться обьекты, в Х записываем количество тайлов этой локации по оси Х, в Y записываем количество тайлов этой локации по оси Y, в sObjByResRef пишем тег по ресрефу обьекта, в iObjType пишем тип обьекта (OBJECT_TYPE_*) а в iMaxObjects пишем максимальное количество этих обьектов.
************************************************************************************ автор::::::::::::DocFeert:::::::::::::::::::: Mar 10 2004 А этот скрипт для переноса всех обьектов (крич, плейсов, итемов) из одной локации в другую. В oAreaFrom записываем локацию ИЗ которой переносим обьекты, в oAreaTo пишим ту локацию В которую переносим обьекты, если iDestroy = TRUE, все обьекты в локации oAreaFrom уничтожаются. Если в локации игрок, то он тоже переностится.
************************************************************************************ КОНЕЦ ЦИКЛА "СКРИПТЫ DOCFEERT'A" СЕРИИ "СКРИПТЫ СТАРОЙ БАЗЫ" |
||||||||||||
![]() ![]() |
Текстовая версия | Сейчас: 26th April 2025 - 08:41 |