![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1701
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Вот здесь, есть альтернативная анимация боя, попробуй на ее основе - сделать свою. (IMG:style_emoticons/kolobok_light/wink3.gif)
|
![]()
Сообщение
#1702
|
|
Level 2 ![]() Класс: Воин Характер: True Neutral Раса: Человек ![]() |
Эта анимация у меня уже есть, там одни mdl файлы, я их редактил, но не умело.
Редактировал файл Assasin\njh_anims.mdl, хотел чтобы рука при ударе была допустим ниже, дохожу до кадров где бьется удар, отвожу руку вниз, но рука теперь всегда в таком положении. Подскажите как работать там с анимацией. |
![]()
Сообщение
#1703
|
|
Level 19 ![]() Класс: Обыватель Характер: True Neutral Раса: Дварф NWN: Контент ![]() |
QUOTE(Bolat @ Jul 20 2006, 07:38) [snapback]88054[/snapback] Я хочу изменить анимацию людей в nwn. Как это сделать? Можно ли изменить стандартный файл в NWN или надо писать хак? http://nwvault.ign.com/View.php?view=Movie...6298&id=188 http://nwvault.ign.com/View.php?view=Movie...6298&id=190 С анимацией - открой a_ba.mdl (только последнюю - ХотУшную), и от него уже прыгай... QUOTE(Bolat @ Jul 21 2006, 08:10) [snapback]88111[/snapback] отвожу руку вниз, но рука теперь всегда в таком положении. Помимо ошибки в анимировании, это может быть ошибка экспорта =) Попробуй экспортить и mdl plugin и nwmax |
![]()
Сообщение
#1704
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
QUOTE я немного не понял, а какие могут быть проблемы с отображением ответов игрока во время диалога с НПС? Да пусть их хоть будет 20 или 30, они все будут видны, правда, если на них нет определенных условий, которые необходимо соблюсти, чтобы отобразилась та или иная ветка. Я вот тоже не понял, почему пункт без условия отображается через раз по известному только ему критерию (IMG:style_emoticons/kolobok_light/smile.gif) Я собсно этим относительно давно занимаюсь, без моего ведома скрипт с условием никуда там не закрадывался (IMG:style_emoticons/kolobok_light/smile.gif) Так что Айван прав походу, битый диалог. Будет время, надо попробовать его заново пересоздать (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#1705
|
|
Level 2 ![]() Класс: Воин Характер: True Neutral Раса: Человек ![]() |
a_ba.mdl находится в ammunitiontypes.2da?
С помощью какой проги выдрать его оттуда? |
![]()
Сообщение
#1706
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Не могу ни как понять, почему на шарде во время рестарта у игрока иногда пропадают вещи. На стартовой локации есть скрипт, который проверяет, есть ли у игрока запрещенные вещи, и если есть, удаляет. В данном фильтре нет вещей, которые исчезают. Пропадание происходит не столь часто, но когда случается, то чаще уже поздно. Попробую в новой версии сделать проверку на эвентах передачи и потери вещей, чтобы понять, куда все же пропадают вещи, и из-за чего. На всякий случай выкладываю скрипт фильтра:
NSS // Список вещей для поиска и удаления void CheckAndDestroy(object oItem); // Удаление найденных вещей void DestroySomeItemsInInventory(object oPC); void CheckAndDestroy(object oItem) { string sItemTag = GetTag(oItem); string sItemResRef = GetResRef(oItem); // Для примера if ((sItemTag == "thing1") || (sItemResRef == "thing2")) { DestroyObject(oItem); } } void DestroySomeItemsInInventory(object oPC) { if (GetHasInventory(oPC)) { object oItem = GetFirstItemInInventory(oPC); while (GetIsObjectValid(oItem)) { CheckAndDestroy(oItem); oItem = GetNextItemInInventory(oPC); } int i; object oSlot; for (i = 0; i < 14; i++) { oSlot = GetItemInSlot(i, oPC); CheckAndDestroy(oSlot); } } } Если что-то подобное происходило у вас, поясните, как боролись. |
![]()
Сообщение
#1707
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Zirrex, нет ли каких то скриптов дающих сразу вещи РС? Может элементарный глюк, не влези вещи в инвентарь?
|
![]()
Сообщение
#1708
|
|
Level 2 ![]() Класс: Воин Характер: True Neutral Раса: Человек ![]() |
Vhall
Нашел BIF Editor Екстракнул из него файлы, там оказался a_ba.mdl. Радостный запустил 3dmax и обломился - не хочет он импортировать этот файл :-(. У меня плагин MDL Suit для 6-го макса(хотя стоит 7-ой). .mdl файлы из альтернативной анимации импортируются, а вот a_ba.mdl нет. Что же делать? Сообщение отредактировал Bolat - Jul 22 2006, 00:59 |
![]()
Сообщение
#1709
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Aiwan, такие скрипты есть, но они все предназначены для персонажей 1-го уровня, у которых нет опыта. Да и потом, даже если бы они и срабатывали, перед подобными командами стоят скрипты, которые полностью очищают от вещей как самого персонажа, так и его инвентарь. Входящий персонаж тогда бы лишался не пары вещей, а всего.
Если кто не в курсе, то после рестарта все вещи, которые носил персонаж, заново одеваются на персонажа. У меня такое впечатление, что подобная операция происходит и с инвентарем персонажа. Да, забыл одну деталь описать, когда писал выше. Вещи, которые исчезают, не исчезают совсем, нет, они случайным образом даются другим персонажам, и даже ДМ. |
![]()
Сообщение
#1710
|
|
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
Zirrex,
QUOTE OnAcquireItem The script attached to this event fires when an item is acquired. The item can be tested against a list of items, and if the item is found an event could occur such as the corpses around the PC arising to fight them in undeath or a journal entry is made. It also fires whenever the OnClientEnter script would fire for a PC. It fires before the OnClientEnter Event starts, for all the items in the PC's inventory (including those equipped!) This is new, quite recent behavior change for this event. поэтому этот скрипт должен быть максимально "легким". возможно, перенос происходит при каких-то действиях на игрока в скрипте входа(смерть, джамп, итд) - определить где именно будет крайне затруднительно, ибо редко бывает такой "глюк"... |
![]()
Сообщение
#1711
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Zirrex, дело может быть не в получении, а в потере вещей. Во многих системах есть такая вещь: при выходе персонажа с него снимаются все вещи с "Plot" флагом и отадются другому первому попавшемуся игроку. Это сделано для того, чтобы важные вещи не терялись, а оставались на сервере, и в сюжет не застопорился бы из-за их исчезновения. Симптомы похожи.
|
![]()
Сообщение
#1712
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
azathoth, вещи не Plot. Я вообще на сервере этот флажок не использую. С ним есть некоторые проблемы. Потом, вещи исчезают не в момент выхода, а в момент входа, причем перед этим должен произойти рестарт. dumbo правильно привел описание эвента, все вещи заново выдаются персонажу, когда он входит после рестарта на шард. Очень похоже, что в момент входа нескольких игроков, определенные вещи, какие именно, я знаю, теряют своих хозяев, и выдаются случайным образом. Если в новой версии не проявится подобный "глюк", значит удалось найти причину.
|
![]() ![]()
Сообщение
#1713
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Как обмануть функцию Random? Существует цикл, в который встроен переключатель (switch). В зависимости от настроек с уровнем, изменяется число от 1 до 5. Чем выше уровень персонажа, тем больше число. Чем выше число, тем больше case используется в переключателе. Т.е., если уровень ниже 7, то case всего 4. Цикл прокручивается 1 раз, а если уровень выше 7 уровня, то case 8, и цикл прокручивается 2 раза. Функция Random встроена в цикл, а значит, значение каждый раз новое. Но есть большой шанс, что цифра повторится. Когда цикл прокручивается 2 раза, изменить вторую цифру, если она совпадет с первой, легко, но когда таких чисел становится больше 2, то тут уже сложнее.
Для примера, берем Random(4)+1, и прокручиваем цикл 4 раза. Каждый раз должно получиться другое число, и числа не должны повториться. Но как этого добиться? |
![]()
Сообщение
#1714
|
|
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
QUOTE(Zirrex @ Jul 27 2006, 23:57) [snapback]88468[/snapback] берем Random(4)+1, и прокручиваем цикл 4 раза. Каждый раз должно получиться другое число, и числа не должны повториться это уже не случайное число. делай массив и на каждом проходе клади туда число. потом сверяй. |
![]()
Сообщение
#1715
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Вот, что говорит Яндекс.
http://www.yandex.ru/yandpage?&q=13740...%25D3%25D4%25C9 Но отсутствие массивов в NWN сильно мешает это реализовать. В конце концов, можно сделать псевдомассив, расположить там числа и перемешать. |
![]()
Сообщение
#1716
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
По вещам. Если скрипт стоит на OnAcquire, то цикл там лишний, ибо тогда скрипт пробегает по итему Н раз при Н итемах. Если на входе в мод/локу, то попробуй перенести его на триггер, который нельзя обойти. Как-то пробовал давно - некоторые функции в OnEnter локи или мода не работали помнится. Это я к тому, что у нас тоже стоит удаление вещей на входе, на триггере (в основном это ключи), но проблем никогда не было.
По рандому. Варианта 2. - попроще. Написать свой рандом (на базе нвновского) на сишный аналог. Т.е. берем Random() от большого уникального семени - время в секундах, другие рандомы и т.п., можно кучу разных результатов складывать, умножать на коэффициент, не важно, важно получить уникальное число побольше (скажем десятки тысяч), потом делим вывод рандома на нужный нам дайс с остатком. Что-то типа Random(nSeed) % 6 (получим число 0-5), дальше думаю все понятно. Конечно тоже не идеал, но совпадений становится меньше, проверно. - посложней. Записывать все выпадающие варианты. Скажем на локалку на вэйпоинте. В качестве строки. Если чисел до 10 (0-9), то все просто - просто пишем подряд в строку, и пока FindSubstring() выдает что-то отличное от -1 гоняем рандом в цикле. Если числа по 2+ цифр, то ставим между ними к примеру банальный прочерк при записи. Вроде так (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#1717
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
НВН ский рандом очень привязан к локациям и прочему. В итоге на малой локе рандом будет одни и тем же числом почти всегда. Я с этим столкнулся при случайных боях. У меян было 7 локаций примерно одного размера. В итоге почти неделю я искал ошибку в скрипте, всегда выдавало одно число. Скажем почти всегда. Из 10 раз 9 выпадало одно. Так что с рандомом поосторожней.
|
![]()
Сообщение
#1718
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Я сделал проще, у меня 20 case строк. В зависимости от требуемого числа (1-5) к стартову числу Random(4)+1 стал прибавлять 5, 9, 13, 17. В итоге у меня получилось, что когда цикл прокручивается 2 раза, число сначала берется в промежутке от 1 до 4, далее от 5 до 8, и т.д. Т.е., даже если цикл прокручивается 5 раз, числа никогда не повторятся.
denis0k, никаких эвентов, отдельный скрипт, который будет срабатывать только в момент смерти существа. А что касается предложения, то тут то все просто. Чтобы получилось уникальное число, можно написать такую строчку: Random(20) + (Random(20) / 20.00). Про запись уже думал. Только это лишняя проверка, и она заставит цикл прокручиваться лишний раз. А если не выпадет иное число очень долго, то цикл подвесит игру (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#1719
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Столкнулся с такой ситуацией, когда невозможно рестартовать модуль. Доступа к серверу нету, скрипта для рестарта тоже нету. И что же? Такой возможности нет даже среди консольных команд. Спрашивается, а почему за время существования игры туда их не внесли? Есть ли вообще возможность рестарта с помощью консоли?
|
![]()
Сообщение
#1720
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Для генерации двух несовпадающих чисел из N можно использовать такую хормулу:
NSS int var1 = Random(N); int var2 = (1 + var1 + Random(N - 1)) % N; Конечно, взятие остатка покруче, чем сравнение, зато все вычисляется за один проход, без потенциальной возможности зависнуть (IMG:style_emoticons/kolobok_light/biggrin.gif) Можно вывести хормулу и для большего количества чисел, но, к примеру, на моем компьютере выбор 3х уникальных вариантов из 5 происходил мгновенно, когда это когда-то делал. --- NSS void StartNewModule(string sModuleName) С именем того же модуля должен перезапускать его, во всяком случае в сингле работает. Сообщение отредактировал azathoth - Aug 1 2006, 16:21 |
![]()
Сообщение
#1721
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
1. Рестарт из игры возможен только способом, написанным выше. Например, с дмской палки (но ее на данный момент конечно же нет, иначе проблемы бы не было).
2. Положить серв грубо, нвнх его должен поднять. Народных умельцев полно. |
![]()
Сообщение
#1722
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
У меня такой вопрос. В диологе NPS должен сказать определённую фразу несколько раз. Как сделать что бы не писать её ещё раз, то есть как обратиться к уже написаной фразе в разных местах.
|
![]()
Сообщение
#1723
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Читай туториал Айвана. Там всё написано.
|
![]()
Сообщение
#1724
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
Спасибо разобрался, а как сделать, что бы после смерти NPS в журнале появлялась запись.
|
![]()
Сообщение
#1725
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить ![]() |
Переделай ЭТОТ скрипт под свои нужды, то есть:
NSS GiveXPToCreature(oKiller, 500); Замени на: NSS AddJournalQuestEntry("Таг_квеста", Номер_задания, oKiller); З.Ы: ЛУЧШАЯ_В_МИРЕ_КНОПКА |
![]() ![]() |
Текстовая версия | Сейчас: 9th May 2025 - 15:30 |