![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#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.
Вот сам скрипт смены репутации:
СКРИПТ ЗАПРЕЩАЮЩИЙ МОНСТРАМ ВЫХОДИТЬ ИЗ ЛОКАЦИИ ВСЛЕД ЗА ИГРОКОМ
|
||||||||
![]() ![]() |
Текстовая версия | Сейчас: 26th April 2025 - 12:17 |