JimALIEN
вдупляет sc2 editor
offline
Опыт:
7,176Активность: |
Equipment system (система экипировки)
Впринципе их уже много понаделали, я лиш предлагаю свою.
Собственно она предназначена преимущественно для моделей чаров из WoW но естественно может быть применена и к другим моделям после редактировании модели\изменения кода. Собственно принцип распределения предметов: Артефакты - оружие: 1лвл - одноручное 2лвл - одноручное для левой руки 3лвл - щиты 4лвл - двуручное 5лвл - стрелковое\огнестрельное Постоянные - броня: 1лвл - наплечники 2лвл - шлемы Это лиш основные типы экипировки которые я знаю, по их примеру можно сделать и остальные вроде нагрудника, ботинок, перчаток и т.п. Отдельно хотелось бы отметить полноценную систему Dual Weld, позволяющую носить любое одноручное оружие в левой руке, совместно с любым одноручным в правой. Это наиболее сложная часть системы и из-за нее есть пара изъянов, подробнее я опишу ниже. Теперь подробнее об устройстве: I. Каждый юнит на карте, который может быть экипирован должен иметь свой номер. Впринципе в большинстве РПГ\ОРПГ у каждого игрока по 1 герою, поэтому в качестве этого номера удобно использовать номер игрока, собственно в приложенном примере сделано именно так. В других случаях можно использовать Custom Value или кеш. II. Для данной системы должны быть созданы по 2 логических глобальных переменных-массивов на каждый тип экипировки: 1. отвечающий за возможность персонажа носить данный тип экипировки, например HeroCanEquip2H[] - т.е. может ли этот герой брать двуручное оружие Эти переменные задаются герою с самого начала и могут быть изменены по ходу, если персонаж например выучил соответствующий навык ношения такого-то оружия\брони. 2. определяющий, есть ли уже у юнита предмет данного типа, например HeroEquipped2H[] Индексы этих массивов означают номер юнита. Этот номер определяется действием в тригерах PickUp и Drop local integer pid = GetConvertedPlayerId(GetOwningPlayer(u)) т.е. если ваши юниты пронумерованы Custom Value, нужно сделать так: local integer pid = GetUnitUserData(u) III. Для того, чтобы работал Dual Weld, нужна глобальная целочисленная переменная-массив WeaponDual в которой будет храниться ИД предмета в левой руке. (Важно!) Необходимо в триггере PickUp в функции OneHequals (2й по счету) указать все возможные эквиваленты одноручных оружий через их ID (один эквивалент прокоментирован). Эту часть конечно можно назвать недостатком данной системы, т.к. в случае если в карте очень много одноручного оружия, то придется ставить эквивалент к каждому, однако это необходимое условие для корректной работы системы, к тому же по сути идет замена предмета, следовательно для каждой руки можно сделать свой вариант предмета, например в левой руке предмет будет давать заниженные бонусы и т.п. Из дополнительного: в карте сделан простой пример изменения дальности атаки через морф и блок с щитом. Блок не универсален, т.е. без динамического создания триггеров и т.п. просто сделан для демонстрации работы щита. Примечание: при выбросе предмета из левой руки, предмет падает не в указанную точку а под персонажа. Это сделано во избежание возможных багов, связанных с передачей предмета из левой руки другому юниту, при этом предмет не передается, а лиш выкидывается. Скажу сразу, что на джасе я пишу недавно, поэтому если будут придирания к коду, то хотелось бы сразу увидеть ваш вариант упрощения=) Пример (тяжеловат из-за импорта) Отредактировано JimALIEN, 15.01.2009 в 10:34. |
18.11.2008, 16:32 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
RazArt
offline
Опыт:
11,197Активность: |
Имхо баян, уже видел почти такую на форуме. не универсальный, для кажого юнита куча моделей => Большой вес карты => об онлайне можно забыть. Когда берёш 1 айтем немного лагает. Кажеться все пока) |
18.11.2008, 17:10 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
Неплохо, однако есть ряд недостатков.
1) Странная система массивов. Это не очень удобно. Кто мешал сделать интерфейсы ? 2) Если юзаешь массивы - юзай vJass. 3) Неудобная система регистрации предметов - использовать функцию я не рекомендую. PlayerDark добавил: Ну код конечно тоже не идеален. Хотя довольно работоспособен. |
18.11.2008, 17:14 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
RPGamer
учу jass...
offline
Опыт:
2,085Активность: |
JimALIEN, зачем такое писать на жассе, если можно банально на гуи?
|
18.11.2008, 17:16 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Korneliy
DMF
offline
Опыт:
23,443Активность: |
баян. уже выкладывали подобное, даже в академии. и я и другие юзвери. |
18.11.2008, 17:19 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JimALIEN
вдупляет sc2 editor
offline
Опыт:
7,176Активность: |
JokArt
в чем неуниверсальность? модели будут верно отображаться на любом юните. PlayerDark я недавно пишу на жасе, до вжаса пока не дотянулся, как ты предлагаеш регистрировать предметы?=\ но спс RPGamer есть и на гуи, на джасе оптимальней Korneliy если честно я не видел системы с рабочим dual weld... покажи плз |
18.11.2008, 17:40 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Korneliy
DMF
offline
Опыт:
23,443Активность: |
если найду старую свою Slayers: TR. там все основывалось на похожем принципе, просто было: лвл1 - правая рука, лвл2 - левая(неважно, щит или меч), лвл3 - обе руки. ну и банальное выбрасывание шмотки из инвентаря при несовпадении. |
18.11.2008, 17:44 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
CDJ
Unity 3D engine user
offline
Опыт:
5,954Активность: |
JokArt,существуют ещё и различные сингл рпг.
RPGamer,имхо,дабы избежать утечек... |
18.11.2008, 17:53 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
RazArt
offline
Опыт:
11,197Активность: |
JimALIEN, неуниверсальность в самих юнитах. Для каждого придёться делать модель с анимациями дальнего боя, ближнего 1 ручным мечём, 2 ручным, рупопашный бой, да и много чего ещё
|
18.11.2008, 18:17 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
CeraRalaz
...
offline
Опыт:
48,115Активность: |
ScorpioT3k делал точь-в-точь такуюже.Просто как с оттиска.
Комментировать нет смысла:Всё класно,всё понравилось. Вот если бы она в мультиплеере работала,то тогда это было бы что-то выдающееся. CeraRalaz добавил: Ну ты разве что модельки прикрутил. |
18.11.2008, 18:19 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
CDJ
Unity 3D engine user
offline
Опыт:
5,954Активность: |
JokArt,зачем для каждого то? Это всё можно сделать всего одним триггером...
|
18.11.2008, 18:23 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Фил
Gun FAN
offline
Опыт:
15,373Активность: |
JokArt, а ты как хотел?... чтобы и для одноручника, и для двуручника ,и для копья и для стрелкового проигрывались одни и те же анимы?... думайте, прежде чем говорить, сударь...
|
18.11.2008, 18:28 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
RazArt
offline
Опыт:
11,197Активность: |
Feleer, так я и говорю что нет смысла её использовать в онлайн картах или только через сайты типа епика распостранять
|
18.11.2008, 18:33 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JimALIEN
вдупляет sc2 editor
offline
Опыт:
7,176Активность: |
JokArt
У меня уже есть 2 карты (которые я к сожалению забросил) в одной из которых 8 импортированых юнитов и дофига оружия причем весит она 2мб. Собственно каждая модель весила не так уж и много, т.к. изначально задумывалось, что определенный герой сможет носить лиш 2-3 вида оружия, т.е. ненужные анимации я просто удалял. Такчто ограничения конечно есть, куда ж без них, но не все так плохо. CeraRalaz Систему Скорпиота не видел, извиняюсь если действительно точ-в-точ) а в мульти она вполне исправно пашет, специально для этого и делал на массивах. |
18.11.2008, 18:46 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
RazArt
offline
Опыт:
11,197Активность: |
JimALIEN, А какие анимации не нужные? оО Анимации все остаются, но вот анимация атаки меняется
|
18.11.2008, 18:51 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JimALIEN
вдупляет sc2 editor
offline
Опыт:
7,176Активность: |
Ну скажем ты изначально задумал сделать героев таурена и эльфийку, причем таурен может носить только одноручное, щиты и двуручное оружие, а эльфийка - только одноручное или огнестрельное. Т.е. таурену не нужны анимации Attack Fifth, Stand Fifth, а эльфийке не нужны анимации Attack Second, Stand Hit Defend, Stand Second. Т.е. удаляем моделям эти анимации. Ну примеры примитивные но смысл я думаю ясен. |
18.11.2008, 19:23 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
CeraRalaz
...
offline
Опыт:
48,115Активность: |
А где ты стока моделей с полным комплектом анимаций раздобудешь? |
18.11.2008, 20:37 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JimALIEN
вдупляет sc2 editor
offline
Опыт:
7,176Активность: |
CeraRalaz
Экспортом из WoW=) |
18.11.2008, 20:43 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
CeraRalaz
...
offline
Опыт:
48,115Активность: |
И сколько будет весить твоя карта?Как сам WoW или на пару гигов полегче? |
19.11.2008, 15:11 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
Я же делал вроде такую?
ScorpioT1000 добавил: ну т.е. оптимальнее ) |
19.11.2008, 15:13 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|