![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3921
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
DarkDante, для скриптов есть форумный тег nss (IMG:style_emoticons/kolobok_light/smile.gif)
Если хочется, чтобы над головой появлялось, надо юзать FloatingTextStringOnCreature (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Ilerien - Oct 25 2008, 21:36 |
![]()
Сообщение
#3922
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Сразу задам еще один вопрос - создав триггер, в собтие onEnter я вставляю следующий код: (...) Мож я что делаю неправильно? И если да, то как надо? Код сам по себе верный. Но вот подход нет. Триггеры не выводят текст над собой, как и произносят звуки... Это раз. А во-вторых, и самое главное, каждый скрипт нужно компилировать, а не просто сохранять! В этом основная ошибка, т.к. второй скрипт записан как раз для триггера, и почти верно... В этом скрипте не нужен оператор ActionDoCommand, т.к. переводит код в акцию и ГГ может её сбить. Кстати вывод строки может сразу быть записан, как акция: ActionSpeakString |
![]()
Сообщение
#3923
|
|
Level 1 Класс: Тайный Лучник Характер: Chaotic Neutral Раса: Нежить ![]() |
DarkDante, для скриптов есть форумный тег nss Сорри, это я перепутал малость (IMG:style_emoticons/kolobok_light/rolleyes.gif) Спс всем(IMG:style_emoticons/kolobok_light/yes3.gif) Хмм, тут ещё вопрос нарисовался... В некоторых модулях, в начале игры есть такая фишка - диалог героя самим с собой(поднять левел, тарам-парам...).Вот мне интересно - как с помощью скрипта запустить этот диалог(или вообще диалог)? Сорри, уж не надо, сам разобрался))))) |
![]()
Сообщение
#3924
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Можно ли при помощи базовых функций организовать подсчет наносимого урона от игроков и их петов?
Если да, то как, если нет, то почему(логика подсказывает, что если эта информация отражается в battlechat'е, то ее можно использовать). Буду премного благодарен за ответ. |
![]()
Сообщение
#3925
|
|
Level 1 ![]() Класс: Маг Характер: Lawful Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
Есть две функции полезные в этом плане - GetTotalDamageDealt и GetDamageDealtByType.
Обе вешаются в OnDamaged. Первая возвращает весь урон, полученный коллером, вторая по типу. Кстати GetTotalDamageDealt помоему возвращает 0, если на плейсебле или двери их использовать. |
![]()
Сообщение
#3926
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Спасибо, конечно, но я, видимо неправильно сформулировал вопрос. Можно ли подсчитать нанесенный урон за раунд для каждого нападающего по отдельности?
|
![]()
Сообщение
#3927
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
По идее можно, если использовать функции GetLastDamager() & GetTotalDamageDealt().
Только ещё хитрым образом надо будет отмерять раунд (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Ilerien - Oct 27 2008, 00:20 |
![]()
Сообщение
#3928
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Уважаемые мастера, подскажите, реально ли заменить имя непися с помощью скрипта? Я чего только не перепробовал! "DestroyObject" - явно не то, "DestroyString" - редактор не понимает, "DeletelString" - то же самое, нет у него такой команды, только "DeleteLocalString" - но это опять не то! Также нет в редакторе такой команды, как "ChangeString"! Понимаете, это не блажь и не придурь. Сюжет требует! Я сочиняю сказку, где герой знает героиню только по кличке. А потом берет нужный артефвкт и узнает Истиное Имя героини. То есть у него на глазах "кличка" меняется на "Истиное Имя". Эффектно, но как такого эффекта добиться?
И еще вопрос, простите за назойливость. Запертая дверь пропускает только "своих". То есть тех, на ком определенная одежда (тег). Я тупо поставил тег ключа тот же, что и тег одежды. И дверь открывается, если ты эту шмотку просто имеешь в инвентаре. Но мне-то надо не это! Надо, чтобы она одета была! С уважением, Chiffa |
![]()
Сообщение
#3929
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Заменить имя можно удалив персонажа DestroyObject, а потом поместить нового, абсолютно такого же, но просто с другим именем(создаешь в палитре).
А со шмоткой поставь проверку тега не по инвентарю, а по слоту в нем GetItemInSlot(INVENTORY_SLOT_CHEST, object) |
![]()
Сообщение
#3930
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Чтобы имя у непися изменить, можно применить функцию SetName().
А с дверью - скрипт на неё повесить (IMG:style_emoticons/kolobok_light/smile.gif) Какой, нет времени писать, мб попозже. Сообщение отредактировал Ilerien - Nov 1 2008, 23:12 |
![]()
Сообщение
#3931
|
|
Level 1 ![]() Класс: Маг Характер: Lawful Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
Насчет двери что-то типа, ставить в OnFailedToOpen:
Neverwinter Script void main() { object oPC = GetClickingObject(); if(GetItemInSlot(INVENTORY_SLOT, oPC) == "tag_of_item") { ActionOpenDoor(OBJECT_SELF); DelayCommand(2.5f,ActionCloseDoor(OBJECT_SELF)); } } Эм... там INVENTORY_SLOT_CHEST, недоглядел, и править не могу... и GetTag(GetItemInSlot(INVENTORY_SLOT, oPC)) еще, тьфу, туплю (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#3932
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Спасибо, Drago! Мне бы когда-нибудь научиться так "тупить" - сел и играючи написал скрипт для незнакомого "чайника". И скрипт, кстати, грамотный, я уже понимаю, что должно сработать! Только наверно надо еще и не "CloseDoor" (она изначально "Closе"), о все-таки "OpenDoor"? Щас проверю.
Насчет уничтожения непися и закидывания на его место нового, с палитры - фишка известная, но мне она не подходит, сорри. Я грил, что по сюжету герой узнает Истиное Имя своей возлюбленной. И замена имени происходит (Хех, ДОЛЖНА происходить!) у него на глазах. А если эта возлюбленная вдруг испарится, и на ее месте появится точно такая же, будет не "Сказка", а пародия. Попробую поэкспериментировать с "SetName()". Ilerien, будут проблемы, я тя еще побеспокою, можно? Кстати, я тут новенький. Прочитал форум. Тема была интересная насчет "сохраненок". Ну, чтобы скрипты проверить в последних локациях без прохождения всего модуля заново. И правда, обидно, что нельзя конвертировать сейвы в моды и, главное, обратно! Но есть куча способов это обойти. У меня свой. Простой, как мычание. Я никогда не делаю модуль целиком. Делаю кучу маленьких. У меня есть "Poligon", "Poligon1" "Poligon2" и т. д. Точнее, этот "микро-модуль" делается один раз, со всеми "свойствами", "настройками пользователя", фракциями, палитрой и пр., а потом размножается, с заменой тега и имени, ессно .Делаю их на полном серьезе, как части будущей "Сказки". На этих "Полигонах испытываю все скрипты, триггеры и пр. А потом экспорт-импорт" и готово. Уважаемые админы, если я глупость написал про эти "Полигоны", просто сотрите! Не хочу флудером прослыть. Спасибо. |
![]()
Сообщение
#3933
|
|
Level 3 ![]() Класс: Псионик Характер: Neutral Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
...У меня есть "Poligon", "Poligon1" "Poligon2" и т. д. Точнее, этот "микро-модуль" делается один раз, со всеми "свойствами", "настройками пользователя", фракциями, палитрой и пр., а потом размножается, с заменой тега и имени, ессно .Делаю их на полном серьезе, как части будущей "Сказки". На этих "Полигонах испытываю все скрипты, триггеры и пр. А потом экспорт-импорт" и готово. Делаю тоже самое, (IMG:style_emoticons/kolobok_light/smile.gif) ток кол-во модулей у меня обычно не больше 2х (основной + еще 1 с единственной локой для тестирования скриптов).
Уважаемые админы, если я глупость написал про эти "Полигоны", просто сотрите! Не хочу флудером прослыть. Спасибо. |
![]()
Сообщение
#3934
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
А я и не сомневался, что изобрел велосипед. Просто хотел, чтобы изобретанием таких велосипедов не занимались другие начинающие, вроде меня. Кстати, раз уж идея "Полигонов" оказалась не такой уж глупой, выскажу еще одну.
Моим "букварем" по скриптам были модулм "Проклятия Левора". Там почти у каждого скрипта сверху ПО РУССКИ написано для чего он и что делает. Кто основательно покопался в модах "Проклятья", не станет задавать вопрос типа: "Как проверить, вооружен ли игрок?". Подобные проверки во втором модуле - на диалоге каждого сюжетного непися. Как, кстати, проверки навыков, скилов, пола, "одет-раздет" - и т.д. и т.п. И еще много всякого полезного. Не думаю, что русские комментарии к скриптам писались для меня, "чайника", скорее это просто пояснения для других членов команды. Но суть дела от этого не меняется, и потому СПАСИБО мастерам! А новичкам совет: копайтесь глубже в модулях "Проклятия", там почти на все случаи жизни есть скрипты которые можно как использовать без переделки, как и "лопатить" в зависимости от собственных потребностей. Учился я еще и на том, что исправил "легендарный" квест с "доилкой". Нашел пропавшего капитана Крола (Винсент, гад, превратил его в вампира, а дальше герой с высоким навыком убеждения возвращает бедняге жизнь с помощью богини Сан. Ну а если навык низкий - хеппи энда не будет, с Кролом-вампиром приходится драться, брать с трупа его мандат и нести расстроеннму лорду Бренгу. Так или иначе, но квест завершен.) Еще раз отдельное спасибо мастерам и тем, кого хватило терпения это все прочитать. |
![]()
Сообщение
#3935
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата А если эта возлюбленная вдруг испарится, и на ее месте появится точно такая же, будет не "Сказка", а пародия. Если грамотно организовать замену непися, то игрок подмены и не заметит (IMG:style_emoticons/kolobok_light/smile.gif) Цитата Попробую поэкспериментировать с "SetName()". Ilerien, будут проблемы, я тя еще побеспокою, можно? Попытка - не пытка... (IMG:style_emoticons/kolobok_light/wink3.gif) Кстати, SetName() иногда глючит, по меньшей мере у нас переименование неписей/вещей/плейсов и т. д. работает с поправкой на то, что иногда у ДМ-а, который переименовывал обжект, отображается старое имя. Сообщение отредактировал Ilerien - Nov 2 2008, 22:42 |
![]() ![]()
Сообщение
#3936
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Ilerien, твоя цитата из Блока просто в жилу! Почти сутки бьюсь с этим .... переименованием, будь оно не ладно! По ходу, у меня глючит не просто SetName, а весь редактор! Причем оба (у мя их два, на движке "Шадоу" и "Нордеса"). И оба "SetName" в упор не видят! Ищещь в меню - нету! Набираешь вручную: ругаются "неправильная функция"! Уже почти готов сдаться и согласиться на "грамотную замену персонажа". Ну, там затемнение применить или еще какой эффект. Благо, повод хороший: игрок сцапал главный артефакт "Сказки", ну как тут без спецэффектов...http://www.city-of-masters.ru/forums/style_emoticons/kolobok_light/scratch_one-s_head.gif
Вот только... Очень уж не хочется "гнуться под этот изменчивый мир", хотя бы и виртуальный. Ilerien, если я правильно понял, тебе уже доводилось переименовывать предметы и персов. Не затруднит скинуть парочку уже использованных скриптов? Я их постараюсь перелопатить под свою "Сказку". Как перелопатил скрипт Drago. Кстати, хочу поблагодарить тебя, Drago, еще раз: скрит оказался просто на все случаи жизни! Я его не только на эту пресловутую дверь повесил успешно, но еще и в диалоги неписей вставил и даже в триггер. Теперь, если герой вздумает с кем-то поговорить или просто прогуляться по территории без униформы, то Великая Волшебная СИЛА (jamp называется) тупо швыряет его взад за эти проклятые ворота! А они снова заперты! Именно то, что требовалось, а я сразу и не оценил...http://www.city-of-masters.ru/forums/style_emoticons/kolobok_light/crazy.gif Спасибо! |
![]()
Сообщение
#3937
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата И оба "SetName" в упор не видят! Ищещь в меню - нету! Набираешь вручную: ругаются "неправильная функция" Не помню, в какой версии эту функцию сделали. Поставь 1.69 (IMG:style_emoticons/kolobok_light/smile.gif) Цитата Не затруднит скинуть парочку уже использованных скриптов? Сомневаюсь, что кусок скрипта на onPlayerChat, который обжекты переименовывает, тебе поможет (IMG:style_emoticons/kolobok_light/smile.gif)
Сообщение отредактировал Ilerien - Nov 3 2008, 11:30 |
![]()
Сообщение
#3938
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
В 1.67
|
![]()
Сообщение
#3939
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Цитата Сомневаюсь, что кусок скрипта на onPlayerChat, который обжекты переименовывает, тебе поможет А почему нет? Я где-то читал, смутно помню. что неписи - это тоже обжекты.. Вроде в скриптах... Ilerien, ты чо, всерьез принял меня за халявщика и любителя загребать жар чужими руками? Хм, правильный подход. Глупо даже рожу кривить, представляю, сколько ты повидал подобных фруктов... Только это - не мой случай. Подумай, станет халявщик ПОЛНОСТЬЮ переделывать ПЛ, чтобы хоть чему-то научиться? И только после двух лет "перелопачивания" ПЛ засесть за собственный модуль. Понимаешь, я журналист. И, смею думать, не самый худший. Сюжет завернуть покруче, заинтриговать или слезу из игрока вышибить - это мое. А вот подогнать под задумки хороший скриптовый "фундамент" - тут, ессно, я слаб. Потому мне и так важно понять принцип. КАК ОНО РАБОТАЕТ! А уж дальше - разберусь как-нибудь. Впрочем, дорогой метр, ты в своем праве, так что никаких вопросов (без иронии). Только (это уже ко всем) какая-таки версия: 1.67 или 1.69? Хотя и это не суть важно, скачаю и опробую обе. Где скачать лучше? И главное, как сделать, чтобы они работали, если не совместимы с моей версией Невера, оголтело пиратской? Патчи какие и где брать? |
![]()
Сообщение
#3940
|
|
Level 1 ![]() Класс: Маг Характер: Lawful Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
Цитата какая-таки версия: 1.67 или 1.69? 1.67 точно, потому что в 1.68 есть эта функция. |
![]()
Сообщение
#3941
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Подскажите пожалуйста, что не так: фрагмент скрипта onCombatRoundEnd. Объект должен сменить цель для атаки на новую. все получаемые локальные переменные и объекты правильно работают(все проверки выдают правильные значения). В самом конце при проверке тоже выдает правильный объект для атаки, но не переключается на нее.
Neverwinter Script object oLastAttackAt = GetLocalObject(OBJECT_SELF, "oAttackAt"); //это самый первый атакующий в скрипте onAttacked
object oDamager = GetFirstObjectInArea(); while (oDamager != OBJECT_INVALID) { if ((GetIsPC(oDamager) || GetObjectType(oDamager) == OBJECT_TYPE_CREATURE) && oDamager!=OBJECT_SELF) //перебираю всех живых { if (GetLocalInt(oDamager,"DamageDealt")>GetLocalInt(oLastAttackAt, "DamageDealt"))// Причиненный урон { oLastAttackAt = oDamager; } SpeakString(GetName(oDamager)+" : "+IntToString(GetLocalInt(oDamager, "DamageDealt"))); //проверка } oDamager = GetNextObjectInArea(); } SetLocalObject(OBJECT_SELF, "oAttackAt", oLastAttackAt); ActionAttack(oLastAttackAt); SpeakString("Attack at "+GetName(oLastAttackAt)+" : "+IntToString(GetLocalInt(oLastAttackAt, "DamageDealt"))); //проверка |
![]()
Сообщение
#3942
|
|
Level 1 ![]() Класс: Маг Характер: Lawful Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
Попробуй создать переменную int bFound = FALSE и дописать код в таком роде:
Neverwinter Script while (oDamager != OBJECT_INVALID&& bFound == FALSE)
{ if ((GetIsPC(oDamager) || GetObjectType(oDamager) == OBJECT_TYPE_CREATURE) && oDamager!=OBJECT_SELF) //перебираю всех живых { if (GetLocalInt(oDamager,"DamageDealt")>GetLocalInt(oLastAttackAt, "DamageDealt"))// Причиненный урон { oLastAttackAt = oDamager; bFound = TRUE; //нашли атакера, дальше не ищем } SpeakString(GetName(oDamager)+" : "+IntToString(GetLocalInt(oDamager, "DamageDealt"))); //проверка } oDamager = GetNextObjectInArea(); } |
![]()
Сообщение
#3943
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
2Drago
Боюсь, такой вариант не подходит. Мне надо перебрать все возможные объекты и выбрать из них всех "самый вредный", то есть причинивший наибольшее количество урона. То, что ты написал завершит цикл, не просмотрев всех до конца. Всем спасибо, все свободны, заработало: поставил ClearAllActions() перед атакой. |
![]()
Сообщение
#3944
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Ilerien, ты чо, всерьез принял меня за халявщика и любителя загребать жар чужими руками? Хм, правильный подход. Глупо даже рожу кривить, представляю, сколько ты повидал подобных фруктов.. Да что ты, я тут и бываю, чтоб помогать. Готовыми исходниками или советами - уже дело десятое (IMG:style_emoticons/kolobok_light/smile.gif) Просто там скрипт имеет только одно общее с тем, что тебе нужно - юз этой функции. Лови (IMG:style_emoticons/kolobok_light/smile.gif) Кусок кода из скрипта fr_o0_playerchat, если поможет - я буду только рад (IMG:style_emoticons/kolobok_light/smile.gif) Neverwinter Script //DM Rename Tool: new name if(sCommand == "/newname" && bIsDM) { oTarget = GetLocalObject(oPC, "FR_RENAMEWAND_TARGET"); oArea = GetArea(oTarget); if(!GetIsObjectValid(oArea) && GetObjectType(oTarget) == OBJECT_TYPE_ITEM) oArea = GetArea(GetItemPossessor(oTarget)); bHideCommand = TRUE; if(GetIsObjectValid(oTarget) && oArea == GetArea(oPC)) { if(!GetIsPC(oTarget)) SetName(oTarget, sString); DeleteLocalObject(oPC, "FR_RENAMEWAND_TARGET"); } } Цитата Только (это уже ко всем) какая-таки версия: 1.67 или 1.69? Ставь 1.69 и не парься (IMG:style_emoticons/kolobok_light/smile.gif)
Сообщение отредактировал Ilerien - Nov 5 2008, 19:15 |
![]()
Сообщение
#3945
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
greye, отсутствие ClearAllActions при смене цели, поэтому и не атакует - выполняет предыдущий приказ.
зы: а вообще система выбора цели малек странная. Ибо НПС будет тупить если его 2ое примерно одинаково будут долбать. Будет между ними метаться и в итоге ничего не сделает. Neverwinter Script if(!GetIsObjectValid(oArea) && GetObjectType(oTarget) == OBJECT_TYPE_ITEM) oArea = GetArea(GetItemPossessor(oTarget)); жесть.. ты какое событие юзаешь, что у тебя у тагета такой разброс может быть (или нормальный объект/крича, или предмет (IMG:style_emoticons/kolobok_light/smile.gif) ) ? И только после двух лет "перелопачивания" ПЛ омг (IMG:style_emoticons/kolobok_light/shok.gif) что ж там 2 года то лопатить??? |
![]() ![]() |
Текстовая версия | Сейчас: 13th August 2025 - 08:27 |