Помощь - Поиск - Пользователи - Календарь
Полная версия: Износ вещей
Город Мастеров > РЕДАКТОРЫ > Шарды рунета
_kaa_
Понадобилось тут износ вещей продумать, может у кого будут какие предложения?
По поводу хранения определились - в локальной переменной на итеме, но как считать износ для разного типа вещей?
Для оружия вроде пойдет износ исходя из суммарного нанесенного повреждения этим оружием (на on*damage мобов обработка)

На броню как считать? Вариант с событием onHit скорее всего отпадает - накладно больно, хотя попробовать можно. Если одеть на игрока шкуру при входе и ее событие обрабатывать (если оно будет срабатывать).

У кого какие идеи будут?
TwilightCount
Самое простое. Предмету задать переменную «износ».

При событии OnPlayerEquipItem и при входе игрока в игру запоминать текущее время.

Во время игры для одетых предметов вычитать разницу во времени из «износа»
Тут выбор событий велик OnPlayerUnEquipItem, OnPlayerDeath, OnCombatRoundEnd…

Если «износ» меньше 0, то уничтожать предмет.
Вестель
А почему onHit накладно? (абсолютно не в курсе)

Кроме того, есть железный кинжал, которым сильно при всем желании не ударишь, а есть коса, которой трудно слабо шмякнуть.
Если ставить в код onHit оружия проверку:
* не попал в противника, но пробил тачАС, то кидаем простой дамаг, отнимаем от него Харднесс объекта который били, плюс с самого оружия снимаем сколько хитов сколько получилось в атаке - Харднесс оружия.
+ Если попал, то нормально - клинок в плоть, вошел с чего ломаться?
- Если вообще не попал, то чего нервничать - об воздух клинки не ломаются.

Модификация для извращенных: проверка, если противник в Парри и парировал, то снимаем хиты-Харднесс не с брони, а с его оружия. Ну и со своего тоже.

Для супер-вредных: Когда у оружия остается меньше 5 хитов, предупреждаем плеера об этом, и вешаем на него (оружие) спецабилку -1 атака, -1 дмг. Ну и покупочную цену соответственно снижаем в 4 раза.

Харднесс железного оружия: 10, Дерева: 5, Кожи: 2
Мифрил: 15, Адамантин: 20.

Хиты брони: 5 * Армор бонус
Хиты оружия: от 2 (short sword и меньше) до 20 (heavy mace)
-----
Я кучу всего наговорил, возможно в этом нету ни капли полезной информации, но я просто представил, как это бы делал я, если бы меня угораздило за это взятся.
Если чего не понятно, спрашивайте, будем разбираться вместе с вами biggrin.gif
TwilightCount
Биоваря сама посоветовала на OnHit этого не делать. Ни один сервак такой нагрузки не потянет.
_kaa_
Цитата
Я кучу всего наговорил, возможно в этом нету ни капли полезной информации, но я просто представил, как это бы делал я, если бы меня угораздило за это взятся.


Из того, что ты наговорил - большая часть не реализуема smile.gif

Насчет onHit не согласен. Я вот как думаю - вешаю на игрока шкурку при входе, на ней есть onHit cast spell. При срабатывании на все, что на игроке одето добавляется износ (просто локальная переменная на предмете). Ничего тяжелого, все просто и быстро. Будет ли это тормозить шард - надо проверять.
Lazy Ranma
Цитата
Ни один сервак такой нагрузки не потянет.

Потянет. У меня на OnDamaged мобов довольно сложный код по запоминанию кто сколько дамаджа нанес. Он на порядок или два посложнее, нежели просто увеличение перменной. Никаких лагов заметно не было. Да и судя по профайлеру, этот скрипт где-то 0.1-0.5 мс выполняется.
Вестель
Только наверное это не на onHit, а на onAttack ставить - чтобы и на атаке плеера его оружие изнашивалось.
Цитата(Lazy Ranma)
Потянет.

Вот и я говорю: должно прокатить. Всего-то 3 проверки и каких 4 действия с локальными переменными.

Кстати, если есть износ, то должен быть и ремонт: как в Диабле - чтобы не сломалось, то подчинить, а не покупать новое.
TwilightCount
Я лишь процитировал Биоварю. К тому же имелось ввиду OnHit на всех одетых предметах. Идея _каа_ более реальна. +)

Максимальный износ можно сделать в зависимости от цены предмета. Реалестичнее чем выше цена тем долговечнее, для баланса полезнее наоборот.
_kaa_
Ммм. Вещь после покупки\крафта имеет параметр "состояние" и "макс.состояние". При покупке он выставляется в зависимости от цены вещи, при крафте - от цены и от крафтера, кубика.
При износе эта величина уменьшается.
Крафтеры могут подремонтировать товар, но максимум при этом уменьшается

В общем тут-то все как обычно. Вопрос только в том как считать износ и где его обрабатывать.

Суммируя:
Износ одетых вещей считать:
1) Исходя из "древности" вещей (время на шарде в 30 раз быстрее летит, так что тут все ок)
2) Все одетое изнашивать, если тебя бьют (на игрока шкурку, на шкурку onHit Cast spell, далее кубики и уменьшение состояния на одетых вещах). Шанс начисления износа разный для разных типов вещей.
3) оружие - добавить обработку на onDamage мобов. Тут уже можно исходя из нанесенных повреждений считать износ.
Оружие изнашивается быстрее чем броня, если больше попадает ты и наоборот, если больше бьют тебя
4) При смерти можно изнашивать все на 5-15% (а-ля SWG), еще один стимул не умирать wacko.gif

ps. Для крафта это все весьма полезно smile.gif Ведь если шмотки вечные, то и в крафте мало смысла.
TwilightCount
_каа_, как ты собираешся цену у попорченой вещи менять? Или метку столен вешать после того как вещь потеряла товарный вид wacko.gif
_kaa_
Цитата
как ты собираешся цену у попорченой вещи менять? Или метку столен вешать после того как вещь потеряла товарный вид


О смене цены нигде речи нет, тем более ее нельзя поменять wacko.gif
TwilightCount
Угу, это я знаю. Но тогда у вещей при разной «изношенности» будет одинаковая цена, что не есть гуд. Придется свои магазины делать с помощью контейнеров?
_kaa_
Цитата
Угу, это я знаю. Но тогда у вещей при разной «изношенности» будет одинаковая цена, что не есть гуд. Придется свои магазины делать с помощью контейнеров?


Не думаю, это плохо реализуется. Наверное имеет смысл ставить флаг stolen на изношенную более чем на 50% вещь
_kaa_
Цитата
2) Все одетое изнашивать, если тебя бьют (на игрока шкурку, на шкурку onHit Cast spell, далее кубики и уменьшение состояния на одетых вещах). Шанс начисления износа разный для разных типов вещей.


Оказалось что onHit для шкурки на игроке не вызывается. Сделал выставление этого свойства при одевании армора и его удаления с армора при снятии.
Lex
"По поводу хранения определились - в локальной переменной на итеме" Это как? Они же слетают при сэйв-лоаде. Те рестарт и все вещи стали новенькие.
снимаю. Глянул фичи про сохранение локалок. Только тогда вопрос, как их оттуда выдернуть?
<small>Добавлено в 14:40</small>
кстати, все это вы думете для боя Игрок-Моб. И только про износ оружия игрока и износ брони моба. А наоборот как делать планируете?

Я на СоУ когда-то делал схемку такую:
на повреждение НПС считается нанесенный урон и соответственно портится оружие. (локалка). Когда она достигает значения (charges * коэфициент от качества, материалов и апгрейда. Этов се было заложено в локалках и тэге вещи). вещь ломается. Ее можно восстановить, но charges опускается на 1, что понижает прочнисть максимальную. С броней тоже-самое. Но когда выяснилось, что на вещах локалки не сохраняются при перезагрузке и что есть проблема (уже нет) подсчета повреждений, полученных игроком, я дело бросил.
_kaa_
Соб-но все затеял после того, как убедился что теперь локальные переменные сохраняются между рестартами.
Износ уже сделал, обкатываем на тестовом шарде - чуть позже выложу что получилось.

Остается одна проблема - описание предметов. К сожалению вариант nwnx2+leto нам недоступен, а других способов изменить описание я не знаю. Может кто предложить другой вариант?

Пока для просмотра "скрытых" параметров используется итем, но с ним есть проблемы - им нельзя действовать на предметы в сундуке, в магазине - только те, что на полу или в инвентаре.
Добавлено в [mergetime]1088408258[/mergetime]
Цитата
Глянул фичи про сохранение локалок. Только тогда вопрос, как их оттуда выдернуть?

Не надо ничего делать - просто читаешь локальную переменную, она уже установленна. Я так подозреваю, что появилось это одновременно с кнопками variables в тулсете, где можно задать значения локальных переменных
Dark Lord
Цитата(_kaa_ @ Jun 25 2004, 20:33)
Наверное имеет смысл ставить флаг stolen на изношенную более чем на 50% вещь


При этом изменения в dialog.tlk - в строке "Этот торговец не будет покупать ворованные вещи" заменить "Этот торговец не будет покупать ворованные и старые вещи" Просто поделился идеей для отшлифовки замысла.
_kaa_
Цитата(Dark Lord @ Jul 27 2004, 20:44)

При этом изменения в dialog.tlk - в строке "Этот торговец не будет покупать ворованные вещи" заменить "Этот торговец не будет покупать ворованные и старые вещи" Просто поделился идеей для отшлифовки замысла.

Что-то в роде того smile.gif

Есть один неприятный момент, который можно (еще не пробовал) вылечить хаком. Для реакции на удар - нужно событие onHit на броне. Я сделал что оно автоматом добавляется когда армор одевается и снимается когда снимают армор.
Но цена армора растет, пусть на 10 монет - но меняется. Нужно в хаке править стоимость свойства onHit, ставить 0.
balrog
Помогите люди добрые! Помогите скриптеры хорошинькие! Поделитесь гатовым скриптиком по износу вещей =) Скриптер нашего шарда в больницу залёг надолго =) а време то не ждёт .... сам я по части сриптов особо не шарю .... разве шо могу чио изменить, но написать не могу =) .... пожайлуйсто помогите .... умоляю !
Аваддон
Вы же модуль делаете а не шард? Хммм думаешь это актуально износ вещей в сингловом модуле?
balrog
Ну пока это модуль ..... а как сделаем будет шард biggrin.gif
Добавлено в [mergetime]1091686934[/mergetime]
До шарда сервака не хватает .... а это лишь вопрос времени
_kaa_
Скипты износа сильно зависят от других (крафт, ремонт). Тексты я тебе дать могу, но без скриптера этого мало - нужно посмотреть как они вписываются в вашу систему.
balrog
Я был бы очень благодарен хотябы за код ... сриптера придётся поискать ... ну если ктото из вас может помоч .... ждём вас с распростёртыми руками biggrin.gif
Добавлено в [mergetime]1091712999[/mergetime]
Ну .... ето .... мозно и пояснить если не тязело шо к чему. Да и система у нас то простинкая .... Нвнлвский крафт вирублен ... наш крафт через конверсатион (старомодно, премитивно, но зато без багов!)
Добавлено в [mergetime]1091713191[/mergetime]
А насччиот ремонта .... по мне мозно билоби зделать так: Вещ полностью изнашивается - не исчезает а лишь становится не использоваемой ... и лишь ттогда с 0% она полностью чинится до 100% - и с ценами не надо мудрить .... Я лишь высказал свою точку зрения ... я не скриптер и мало чио смислю (прошу не смеятся)
Аваддон
И каким макаром ты собираешься ее сделать неюзабельной? Разве только отбирать эту шмотку у игрока и заменять на какие нить руины в инвентори а на этих руинах ставить локалку с тегом поломавшейся вещи и по ремонту отбирать руины и создавать на игроке эту шмотку. Один вопрос - как игрок будет различать какие руины от какой шмотки? Имхо, проще поломку шмоток сделать на цифровых локалках, а при юзании какого нить предмета типа линзы на оружие говорить игроку состояние оружия. Вот и все. А если оружие в хреновом состоянии и игрок его не починил - просто дестроить его.
balrog
Ти знаешь, я бы радовлся хотябы простым скриптом по износу вещей , почиинка ето узе серьозней, хотя и она не помешала бы =)

ЗЫ Куда ето все подевались?
Аваддон
Простой скрипт по износу вещей на ваульте лежитsmile.gif поищи что то типа breakable weapon/armor
balrog
Чиото я уже третий день по ваулту лазию ничего подобного не нахожу yes3.gif
_kaa_
Сейчас изношенные вещи просто не беруться, на onEquip стоит проверка. Износ идет и переодический, раз в игровые сутки. Из изношенных сумок иногда вываливаются вещи smile.gif
Как до ума все доведу (читать - как время появится) - выложу готовые скрипты, я стараюсь все немного даже комментировать dirol.gif
balrog
СПАСИБО! Может тебе каких скриптов надо? Если у меня такие скрипты будут обязательно поделюсь!
Аваддон
_kaa_ Вот насчет сумок - классная идея...
А про OnEquip...как же я не додумался unknw.gif
Lexey aka Hawk
А по мне износ - это в корне бредовая идея. Воспроизвести логически объяснимую реализацию имеющимися техническими средствами невозможно. Это то же самое, что резать аппендицит через ... извините ... заднее отверстие. Фича такого уровня должна реализовываться исключительно движком, ИМХО. Все остальные варианты реализации - это источников багов, тормозов и прочих неприятных вещей.
DBColl
Цитата(Lexey aka Hawk @ Aug 10 2004, 17:03)
Фича такого уровня должна реализовываться исключительно движком, ИМХО

Лексей, как и большинство того извращения, что создано нами, скриптерами-энтузиастами wink3.gif. Реализуют и гораздо большие гемморои. wink3.gif Сам знаешь.
Lexey aka Hawk
Знаю smile.gif Вопрос в другом. Введение любой дополнительной системы должно преследовать какие-то цели. Вот ответьте на простой вопрос - зачем нужен износ? Только не надо общих ответов типа "добавит интереса игре".
DBColl
Увы невсегда этим вопросом интересуются. Делают: "главное, чтобы побольше изврата". Интерес не анализируют... большинство.
Добавлено в [mergetime]1092148234[/mergetime]
Я бы сам его не делал. Гемор разработчику/работе модуля не оправдывает средств. Имхо.
Lexey aka Hawk
Я в системе износа вижу только 2 рациональных момента:
1) стимулирование системы крафтинга;
2) вывод из экономики шарда переизбытка вещей.
Оба эти момента плотно увязаны с количеством денег в игре, а их можно отрегулировать и другими способами. Можете мне как экономисту со стажем поверить smile.gif
DBColl
Это все внутренние заморочки шарда. Так скать, невидимые... Игроку надо чтобы было интересно щупать... Поэтому даже эти рациональные моменты не спасают реализацию идеи износа.
_kaa_
Цитата(Lexey aka Hawk @ Aug 10 2004, 17:18)
Знаю smile.gif Вопрос в другом. Введение любой дополнительной системы должно преследовать какие-то цели. Вот ответьте на простой вопрос - зачем нужен износ? Только не надо общих ответов типа "добавит интереса игре".

Износ нам нужен для крафта. Без него крафт теряется всякий смысл - один раз купил меч и бегай с ним всю жизнь.
Кроме того износ позволяет регулировать некоторые игровые моменты. Скажем если лупить мечом по двери\сундуку - меч быстро изнашивается. Если подумать и бить руками - уменьшается здоровье.
Или те же большие ворота. Надумали игроки прорваться скажем в лагерь разбойников, чтобы этих самых разбойников перебить да добро отобрать smile.gif - а ворота то дубовые, магия на них почти не действует. Вот и приходится задуматься, а не тупо полдня лупить мечом по воротам.

Биоваре уже сделала шаг в сторону поддержки износа движком - ввела сохранение локальных переменных для каждого итема в инвентаре игрока. Пока они обдумывают механизмы - мы что-то выдумываем. По поводу "напряжности" скриптов - они совсем простые, просчитать и изменить несколько переменных на объекте - дело не сложное для сервера.

По поводу "гемора разработчику" - система износа проста даже в написании smile.gif

По прежнему самым сложным остается скриптинг АИ мобов.

Цитата
Воспроизвести логически объяснимую реализацию имеющимися техническими средствами невозможно.


Это почему? От того, что ты топором ломаешь железную дверь - он портится. Или ты про отображение этого самого износа? Тут да, все надеюсь появится "родная" функция Get\SetDescription()
DBColl
Цитата(_kaa_ @ Aug 11 2004, 08:59)
Биоваре уже сделала шаг в сторону поддержки износа движком - ввела сохранение локальных переменных для каждого итема в инвентаре игрока.

Хех, глючно, работает. По-крайней мере в синглах есть трабла. Делаешь Save/Load игры и переменные на итемах сносит нафиг. Так что это не канает (для синглов)...
Цитата(_kaa_ @ Aug 11 2004, 08:59)
По поводу "гемора разработчику" - система износа проста даже в написании

Проста, если бы локалы на айтемах работали, как надо. wink3.gif
Цитата(_kaa_ @ Aug 11 2004, 08:59)
По прежнему самым сложным остается скриптинг АИ мобов.

Согласен. Есть опыт... crazy.gif
Цитата(_kaa_ @ Aug 11 2004, 08:59)
Тут да, все надеюсь появится "родная" функция Get\SetDescription()

Не обязательно Get... wink3.gif Хотя в ИДЕАЛЕ было бы классно получить ВСЕ функции в связке Set-Get. yes3.gif
Также как и SetName... Тож надеюсь... Но вроде Биовары получали на своем форуме от скриптеров заявки на реализацию этих функций. Посмотрим...
NiMH
Цитата(DBColl @ Aug 11 2004, 11:52)

Хех, глючно, работает. По-крайней мере в синглах есть трабла. Делаешь Save/Load игры и переменные на итемах сносит нафиг. Так что это не канает (для синглов)...


А оно надо для синглов? Для мультика это вообще спасение

Добавлено в [mergetime]1092237992[/mergetime]
т.к. там идет сохранение не по принципу сейв\лоад - а экспорт чара
DBColl
Цитата(NiMH @ Aug 11 2004, 18:23)
А оно надо для синглов?  Для мультика это вообще спасение

Что именно? Износ или переменные на айтемах? Износ - не нужен. Переменные ОЧЕНЬ даже нужны.
Цитата(NiMH @ Aug 11 2004, 18:23)
т.к. там идет сохранение не по принципу сейв\лоад - а экспорт чара

Это я знаю biggrin.gif. Поэтому и не говорю, что в мультах не работает wink3.gif.
NiMH
Цитата
Переменные ОЧЕНЬ даже нужны


просто в сингле есть куча способов эти переменные сохранить
Добавлено в [mergetime]1092280002[/mergetime]
имеется в виду то, что в сингле они сносятся - не критично
DBColl
NiMH
Существуют задачи, в которых приходится так извращаться, избегая сохранения на айтемах, что, блин, иногда мозги заворачиваются. Хотя, действительно, ничего невозможного нет. Просто на кой этот весь гемор, если Биоварам вполне под силу нормально реализовать это сохранение?
NiMH
DBColl тебе сюда
http://forums.obsidianent.com/index.php?showforum=21
есть шанс исправить неудобства тулсета

А пока что придется извращаться, пока не выйдет новой версии - я уверен что в 1.64 они этого не исправят buba.gif
Добавлено в [mergetime]1092301188[/mergetime]
простите, новой игры
DBColl
Цитата(NiMH @ Aug 12 2004, 11:58)
DBColl тебе сюда http://forums.obsidianent.com/index.php?showforum=21 есть шанс исправить неудобства тулсета

Я так думаю, что Обсидианы будут так или иначе при разработке опираться на форумы Биоваров. А на Биоварах уже проскакивали подобные моим замечания. Так что, думаю, и без моих соплей решат все верно wink3.gif.
NiMH
Если будем много выступать, то возможно и заметят. На стадии зарождения игры, естественно.
DBColl
Цитата(NiMH @ Aug 12 2004, 13:00)
Если будем много выступать, то возможно и заметят. На стадии зарождения игры, естественно.

На биоварах и так достаточно выступлений lol.gif. Думаю заметят. Наши лишние 3 голоса не решат проблему в целом wink3.gif. Имхо. Но, конечно, наверное все же стоит зарегиться и побурчать biggrin.gif.
NiMH
Цитата(DBColl @ Aug 12 2004, 13:02)
На биоварах и так достаточно выступлений lol.gif. Думаю заметят. Наши лишние 3 голоса не решат проблему в целом wink3.gif. Имхо. Но, конечно, наверное все же стоит зарегиться и побурчать biggrin.gif.

в принципе, рациональное и содержательное бурчание помогает делу - во всяком случае на форумах, приведенных выше, разработчики по крайней мере делают ыид что прислушиваются к идеям (естественно, лучшим) обитателей форума, и даже ( вроде как) ихз реализуют.

а теперь посмотри на сабж crazy.gif
Lex
"а теперь посмотри на сабж crazy.gif "
угу. Каа, три тут все не по теме.
Exes
вот реализация износа апреля 2004 года выпуска
http://nwvault.ign.com/Files/scripts/data/...228128000.shtml
balrog
Каа .... как там со скриптом?
Узе додумался!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.