Сейчас 02:17:15 Пятница, 29 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Наработка] Определение предметов by tvain.
tvainДата: Суббота, 04 Декабря 2010, 21:26:59 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 188
Награды: 0
Репутация: 44
Блокировки:
Итак, здравствуйте) Это моя вторая "наработка", хотя первую назвать "наработкой" было трудно) Ну мы не об этом, продолжим.
В общем суть наработки: Кто играл в Diablo, знают, что так есть неопределенные предметы. Что это такое - неопределенные предметы спросите вы? Это предметы которые не дают доп. характеристик, т.к. герой не знает ни чего об этом предмете, чтобы узнать о нем, и он давал доп. характеристики нужно щёлкнуть по книжечке, затем по предмету и у предмета сразу появляются доп. характеристики. Так и в моей наработке.
О МУИ написанно внутри наработки. В общем я старался, думаю на этот раз вам понравится больше))
Удачи.=)

Ссылка - http://rghost.ru/3482457

Сообщение отредактировал tvain - Суббота, 04 Декабря 2010, 21:27:58
 

FkoFFДата: Суббота, 04 Декабря 2010, 21:28:01 | Сообщение # 2
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
А где же сама наработка? )

 

tvainДата: Суббота, 04 Декабря 2010, 21:36:36 | Сообщение # 3
6 уровень
Группа: Проверенные
Сообщений: 188
Награды: 0
Репутация: 44
Блокировки:
Кинул ссылку))

Добавлено (04-12-2010, 21:36)
---------------------------------------------
Комментируем) Не стесняемся) Госпосиди я так нервничаю)
И если кому то понадобиться эта наработка через 30 дней когда срок хранения на RGhost(е) закончится, обращейтесь перезалью)

 

FkoFFДата: Суббота, 04 Декабря 2010, 21:54:09 | Сообщение # 4
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Ну хорошо. Протестировал - конечно работа не ювелирная (на визуальном уровне) - но сносно. Залез в триггеры и поперхнулся.

Да, несомненно - на этот раз в разы лучше, однако есть ряд грубых ошибок, начиная с события. Первое - вместо "Unit owned by player[xx] event" лучше использовать "A unit event", второе - не "Начинает применение способности" а "Приводит способность в действие"

На счет условия: логическое действие "AND" тут неуместно и создает лишнюю нагрузку на карту. Далее по пунктикам:

Опять же - это не наработка, это пример системы. Сейчас поясню почему это наработка как и предыдущая - не жизнеспособна за пределами твоей карты:
Для каждого предмета требуется сделать десяток лишних ифзенов. Тоесть, на боевые когти у тебя 3 if\then\else. И, в случае если выпадает 1 - ты делаешь один набор действий. Если выпадает 2 - ты делаешь другой набор действие. На будущее - если действия из массива в массив повторяются - их можно сделать вне массива а внутри массивов делать лишь те действия которые различны для каждого из случаев. НО(!!!) - в твоей наработке иф\зен массив должен быть один и универсальный.

Объясняю как сделать:

Делаешь переменную типа "Тип-предмета" , конечно массив и переменную "целочисленная" и одну "Хэш-таблица". Назовем их
Item \ Int \ Data

Делаешь триггер с созданием базы из предметов. ну допустим:

set Item[1] = Blades of Attack [unid]
set Item[2] = Blades of Attack +4
set Item[3] = Blades of Attack +5
set Item[4] = Blades of Attack +6
set Int = Количество предметов в базе (в данном случае 4)

В другом триггере инитиш хэш-таблицу и заносишь данные в таблицу:

[custom script] set udg_Data = InitHasthable()
SaveInteger (3, 1, Data)
SaveInteger (2,1, Data)
SaveInteger (3,1,Data)
SaveInteger(4,1,Data)

В этом триггере ты инициализируешь по хэш-таблице все предметы которые у тебя будут "узнаваться". В примере под числом X скрывается индекс предмета на который мы произнесли заклинание: (Y, Z,X, Data). Под Y при Z равном 1 ставится число - количество предметов которые можно получить из данного предмета. Далее, как ты, пожалуй, должен догадываться - под Y идут индексы предметов которые игрок может получить при идентификации предмета.

В триггере который является "ядром" системе ты будешь лишь делать проверку предмета и его распознавание.

Собственно в таком простом случае как идентификация предметов можно обойтись всего одним циклом и 1 ифзеном.

"бла-бла-бла, юнит приводит способность в действие",
Условие:
Ability Being Cast == Идентификация Предмета
Действие:

For Loop [X] from 1 to [Int]:
If\then\else:
Itemtype of TargetItem of AbilityBeingCast == Item[X]
then
Remove TargetItemOfAbilityBeingCast
Create item for hero: Item[LoadInteger( GetRandomInteger(from 2 to LoadInteger(1, X, Data)+1), X, Data)]
CreateEffect
DestroyEffect(LastCreatedEffect)
Massage
else

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


 

tvainДата: Суббота, 04 Декабря 2010, 22:07:02 | Сообщение # 5
6 уровень
Группа: Проверенные
Сообщений: 188
Награды: 0
Репутация: 44
Блокировки:
Ну насчет первоя "системы" xD я делал быстро и просто хотел подать идею, очень нагрузачная была и несносная, это понямаю)
Ну а эта система сделана для новичёчков) Да и действовать она может за пределами карты, нужно только вставить свою каст магию и прежметы.
Поскольку я не великий про (и буду стараться=) сделал по мойму вполне не плохая) Объёмная если много предметов заносить, но попробую посовершенствовать как нибудь) Если знаний хватит)
 

FkoFFДата: Суббота, 04 Декабря 2010, 22:16:30 | Сообщение # 6
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
tvain, Я тебе написал выше как твоя система станет жизнеспособной. В данном случае там слиииииииииишком долго её импортировать в карту. К примеру в CLS 600 с лишним предметов. Как ты предпологаешь импортировать твою систему? 600 с лишним раз повторить эту конструкцию? Внимательно перечитай пост №2

 

tvainДата: Суббота, 04 Декабря 2010, 22:18:40 | Сообщение # 7
6 уровень
Группа: Проверенные
Сообщений: 188
Награды: 0
Репутация: 44
Блокировки:
Я ж говорю - но попробую посовершенствовать как нибудь!)
Если пойму твой пост)) про хэш пока не догнал, но завтра посижу разберусь)
 

FkoFFДата: Суббота, 04 Декабря 2010, 22:21:22 | Сообщение # 8
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
tvain, Стандартные функции с хэш таблицами:

Сохранить [] ( значение , индекс второй, индекс первый, хэш таблица ) грубо говоря. К числу 1 можно приписать любое количество любых значений. Те же массивы с индексами только внутри массива с индексами. Присабачив к хэштаблице массив можно получить троичный массив что вообще является "имбой" .

Под индексом первым определяется то число к которому будет идти запрос. Чаще всего это ссылка на какой либо объект или индекс какого либо массива. Индекс второй это собственно идекс внутри текущего массива. Ну а значение это и есть значение. Таким образом внутри одной переменной можно хранить неограниченный массив данных для каждого объекта в игре. Но это тяжеловато объяснить но понять на практике проще.




Сообщение отредактировал FkoFF - Суббота, 04 Декабря 2010, 22:23:51
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz