XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
NETRAT

offline
Опыт: 83,712
Активность:
TONIC у мя вменяемых нет - большую я туда не засуну ибо это уменьшит размер инва 100 - красивое число, не хочу уменьшать - и так вот панель дескрипшна уменьшил чтобы кнопки поместились. Еще к картинке есть некоторые рекоммендации - слоты на нормальном расстоянии, и еще они должны как можно лучше под сетку подходить... Так что с картинкой сложно

NETRAT добавил:
1. Закрытие окна инвентаря
2. Использовать вещь в инвентаре
3. Выбросить вещь из инвентаря
4. Продать вещь прямо из инвентаря
5. Всегда оставлять один слот свободным (для того чтобы основной инвентарь никогда не забивался). Вещи при этом одеваются в свои слоты(классовые) но в этом инвентаре который мы видим в игре ВСЕГДА остается 1 слот свободным. НЕ ОДИН и тот же - может быть любой - который ты сам последним оставишь. (Выключатель - автокастинговая - то есть может быть в двух положениях - либо включено, либо нет)
6. Класть все подбираемые вещи прямо в 100 инвентарь - то есть напрямую, не одевая, не проверяя (Выключатель - автокастинговая)
7. Сортировка вещей внутри 100 инвентаря. Сортировка идет по классам, а затем по типам вещей(на скринах все понятно)
8. Скорее всего мне еще понадобится кнопка-выключатель. Если включена, то использованные вещи пополняются - то есть если зелье выпил, на место него автоматически достается другое такое же из 100 инвентаря(конечно при условии что оно там есть)


Хорошие новости:
1. Глюк Drop item при выключенном инвентаре пофиксен. Ранее выброшенная вещь возвращалась(не выбрасывалась)
2. Полная поддержка ICS. Вещи при подборе попадают ТОЛЬКО в определенный слот, соответствующий их классу. Нет никакого способа засунуть вещь в неподходящий для нее слот. Использовал принцип критической секции(и мьютекса).

Надеюсь добавить Flashing и Floating Text Tags

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

NETRAT добавил:
KENDO да что вы, блин, мне присваиваете результаты не моей работы - Там моих только тело героя и две кнопки
Старый 07.10.2005, 01:01
NETRAT

offline
Опыт: 83,712
Активность:
COBRA что значит "делать нестандартные предметы"?
не понял что ты имеешь ввиду

TONIC а тебе обьяснить что на картинке должно быть нарисовано? Если бы я знал... Тут фантазировать нужно

NETRAT добавил:
Димон, кстати, я не понимаю зачем тебе понадобилась та функция SetPermanentTextTag, если она работает только для версий позже 1.17
Старый 07.10.2005, 12:44
zibada

offline
Опыт: отключен
NETRAT, потому что без этой функции тексттэги живут 30, кажется, секунд, а потом исчезают...
в старых версиях инвентаря у меня они все автоматом пересоздавались отдельной периодической функией..
в новой я от этого геморроя отказался, ибо появилась вот такая удобная функция =)
Старый 07.10.2005, 12:58
NETRAT

offline
Опыт: 83,712
Активность:
DimonT эту херь я заметил...
Ты чего не в асе - анинсталлил асю чтоль?

Чем больше я пишу, тем сложнее писать...

NETRAT добавил:
DimonT Скажи, как сделать инициализационную функцию, которая будет иниц. все инвентари(для всех юнитов) на карте во время загрузки или в самом начале - а то много проблем из-за того, что кэш не проинициализирован в самом начале
Старый 07.10.2005, 13:04
tysch_tysch
Работаем
offline
Опыт: отключен
http://xgm.guru/stuff/inv100_readme_ru.txt
только одно изменение для этого инвентаря - предмету надо будет прописать ещё и класс
Старый 07.10.2005, 14:26
NETRAT

offline
Опыт: 83,712
Активность:
ZlaYa1000, не обязательно - я ведь старую функцию оставил, просто если пользуешься старой, то получишь что вещь подходит к любому слоту - то есть класс будет равен 0. Это для облегчения замены инвентаря 2.01 на этот

COBRA это действительно просто - добавить дудад с этой иконкой и зарегистрировать вещь

NETRAT добавил:
Исправления:
1. Уменьшена пауза перед появлением описания выбранной вещи
2. Исправлен баг, когда при выборе другого юнита в режиме открытого инвентаря, камера не возвращалась на свое место, а оставалась в темной области карты.
3. Поддержка Undroppable вещей

Фичеры оригинальной версии:
- До 100 дополнительных слотов у любого юнита;
- Работает с неограниченным числом игроков и юнитов одновременно;
- Интерфейс в стиле стандартного, для всех 4 рас;
- Все компоненты находятся на одном экране, управление осуществляется одной кнопкой мыши;
- Настраиваемость многих параметров по вкусу;
- Возможность подбирать предметы напрямую в рюкзак;
- Возможность продавать предметы из рюкзака в близлежащий магазин;
- Возможность применять некоторые предметы моментального действия (лечебные зелья) напрямую в рюкзаке;
- Дополнительные функции для контроля инвентаря через триггеры:
можно добавлять/удалять предметы, проверять наличие предмета,
а также изменять размеры рюкзака.

Добавления:
1. 6 дополнительных активных слотов. Эти слоты дают эффект как слоты обычного инвентаря, однако не видны пока инвентарь закрыт. Вещи в этих слотах сохраняют кулдауны, дают бонусы и эффекты юниту. То есть полная аналогия стандартного инвентаря, однако скрытая. Система имеет двойное название - Расширенный Основной Инвентарь (EMI) или Скрытый Инвентарь(HI). В связи с тем что активных слотов(то есть тех, которые дают бонусы) теперь 12, появилась необходимость классификации вещей.
2. Добавлена Система Классификации Вешей (ICS) - то есть каждой вещи соответствует свой тип слота. Например меч можно взять только в одну из рук, ботинки только на ноги и т.п. Система полностью настраиваемая - для любой вещи можно изменить ее класс, и для любого слота можно изменить класс подходящих вещей, причем одному слоту может соответствовать любое количество классов вещей. Нет никакой возможности надеть кольцо в слот для ботинок или шлем, в слот для брони.
3. Переключатель "Всегда оставлять один слот свободным" - когда в Основном инвентаре (MI) остается только один свободный слот, вещь кладется в подходящее для него место из HI, если такового нет, то в Пассивный инвентарь. Не коммутирует с кнопкой "Класть все вещи в Пассивный инвентарь". То есть они не могут быть включены обе одновременно.
4. Кнопка "Сортировка" - сортирует вещи в пассивном инвентаре по классам,а внутри класса по типам.
5. Переключатель ??? - при использовании вещи(когда полностью исчезает из инвентаря), автоматически добавляет вещь такого же типа из пассивного инвентаря - разумеется, если она там есть.

Дополнительные фичи:
A. Теоретически количество EMI слотов неограничено, однако потребует модификации кода
B. После маленькой модификации, инвентарь поддерживается версией 1.17, может и более ранними версиями.

NETRAT добавил:
Фичеры оригинальной версии еще не все выдержаны.

Поддержку флага Undroppable собираюсь сделать через Кеш - дополнительной регистрацией, скажем функцию RegisterItemState(ItemCode,IsDroppable).
Старый 07.10.2005, 19:49
NETRAT

offline
Опыт: 83,712
Активность:
TONIC в-общем, когда время или желание будет. Ну не оставлять же эти иконки
Старый 07.10.2005, 22:57
NETRAT

offline
Опыт: 83,712
Активность:
Млин, добавил IRS, поубирал все известные баги, правда функция UseItem пока не получается... Димон, как ты вообще эту схему реализовывал - я не фтыкаю - там функция и триггер - часть кода в функции, часть в триггере. Какова схема-то?
Старый 08.10.2005, 12:35
tysch_tysch
Работаем
offline
Опыт: отключен
NETRAT можно ли реализовать такие дополнения
как система наборов предметов?
Старый 08.10.2005, 12:42
NETRAT

offline
Опыт: 83,712
Активность:
ZlaYa1000 если только обьяснишь что ты имеешь ввиду и как ты себе это представляеш

Лады, выложу пока зеленую(однако она в заголовках не обозначена как зеленая потому что не до конца зеленая) - если кому интересно что такое IRS - это самая нижняя кнопка

Баг может появиться только с кнопкой 5/1 но он достаточно редкий, и я пока не знаю из-за чего

NETRAT добавил:
ZlaYa1000 пока я не начал делать, ты предлагаешь давать сету спеллбук, а в спеллбуке будут лежать абилы - то есть для каждого сета свой спеллбук, а в каждом спеллбуке лежать несколько абил - верно?

тут еще вопрос - будут ли спеллбуки комутировать - то есть если я дам 2 разных спеллбука одному юниту - они не перепишут друг друга(по правилам не должны, но мало ли?!)

Еще вопрос - кто это незареганный качает аттачи? или это вы по 2 раза клацаете?

ATTACH:
Кто скачал файл inv100_EMI_green.w3x
Всего скачиваний: 16
Ник
DimonT
cHAm
MOd2war
ZlaYa1000
VolkPK
Terros

Отредактировано NETRAT, 14.10.2005 в 01:02.
Старый 08.10.2005, 13:59
tysch_tysch
Работаем
offline
Опыт: отключен
верно
указывай разные ид приказа...
у нас в барахолке открыто скачивание для гостей... предлагаешь закрыть?
Старый 08.10.2005, 14:35
zibada

offline
Опыт: отключен
Цитата:
функция UseItem пока не получается... Димон, как ты вообще эту схему реализовывал


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

через 0.01 сек (т.е. в отдельной функции) смотрим на счетчик зарядов итема, который применяли...
там 3 случая:
1. итем применился, заряды кончились;
2. итем применился, заряды еще остались;
3. итем не применился (зарядов осталось столько же)...

в любом случае возвращаем всю расстановку итемов в исходное состояние, и вновь паузим юнита.
Старый 08.10.2005, 15:24
NETRAT

offline
Опыт: 83,712
Активность:
ZlaYa1000 ай, ладно, пускай качают - все равно, если уж в коде Димона мало кто разобрался(про модификации я ничего не нашел), то в моем уж подавно - хотя я его и комментил изрядно, он все равно больше чем в 2 раза.

Я вот думаю как сделать - в айтеме прописывать ид сета или в сете прописывать ид айтемов и эффект от сета.

То есть тут 2 варианта - простой и геморрный:
I. Прописываем в сете ид айтемов и эффект сета. Этот вариант так же позволяет создавать подсеты - то есть, к примеру сет:
Злой гобелен:
Шапка гоблина
Пояс гоблина
Дубина гоблина
Трусы гоблина
Эффект сета: +50 к дамагу (помимо всех бонусов, которые дают айтемы сета)
1 Подсет:
Трусы
Пояс
Эффект +10 дамагу
2 Подсет
Пояс
Дубина
+ 5 к дамагу
3 Подсет
Дубина
Шапка
+1 к дамагу

Так вот - как тут собранный сет будет давать +65 к дамагу. Это если определять подсеты как сеты. однако есть и другой вариант - определяется СЕТ и его подсеты(они будут содержать ссылку на сет), тогда есть возможность реализовать удаление эффектов посетов - то есть подсеты будут действовать, пока не собран сет, как только он собран, все эффекты подсетов заменяются эффектом сета.

Если брать этот путь, то Какой вариант здесь выбрать - более простой или более интересный

II. Однако есть еще супергеморрный вариант, в котором для каждого айтема можно будет прописать абилы, которые он добавляет и которые заменяет/отнимает. Этот вариант будет в несколько раз дольше работать(не знаю будет ли это заметно, но итерации точно будет больше). Так вот и описание вещи, конечно сложнее будет.


Мне кажется, что здесь оптимальным будет вариант 1.B - то есть сеты и подсеты. хотя, может имеет смысл просто взять 1.A и не мучаться да и CPU не перегружать. Какие предложения?

NETRAT добавил:
DimonT угу, ну я так и подумал... Дело в том, что он неплохо глючил и я его потер совсем решил сначала написать. Вот что я думаю -
1. Если слот не из MI, то дропаем айтем в слоте 0 и переносим туда наш айтем, запоминая группу(g2) и слот(slot2 кажется)
2. Далее анпаузим юнита и даем приказ юзать вещь (либо из слота 0 либо из слота slot2, в зависимости от группы)
3. ...
Ну в-общем то же самое, но почему-то не очень работало, видать опять намудрил... А когда юнита нужно анпаузить? Перед ДропАйтемом или можно непосредственно перед ЮзАйтемом?! А паузить можно вроде сразу после юза или в таймере

NETRAT добавил:
Блин, ну панель описания маловата получается... тольео если уменьшить 100 слотовый

NETRAT добавил:
Его нужно раздвинуть по границам экрана, появится еще один столбец
Старый 08.10.2005, 15:37
tysch_tysch
Работаем
offline
Опыт: отключен
я думаю стоит оставить только полные сеты, а на подсеты пока забить...
первый вариант конечно лучше, а если решишься реализовать подсеты то их можно описать как отдельные сеты и при появлении более крутого сета, старые просто должны перестать работать
вариант также описания сета как многоуровнего( т.е. в одном описании сета могут быть много описаний меньших сетов), но я пока не представляю как это будет работать и как это описать...
Вообще идея потрести на эту тему дьяблу=)
Старый 08.10.2005, 16:26
NETRAT

offline
Опыт: 83,712
Активность:
Если нет предложений лучше, то я просто из такого инва как на этой картинке панель описания уменьшу на 1 слот по горизонтали и сдвину вправо, а в то место, где мышь, добавлю еще одну аналогичную панельку, тогда для описания вещей места должно хватить

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

Таким образом достаточно просто ручками ввести приоритет подсета
Миниатюры
Кликните на картинку для увеличения
Название:  WC3ScrnShot_100805_164228_01.jpg
Просмотров: 270
Размер:  162.4 Кбайт  
Старый 08.10.2005, 17:59
NETRAT

offline
Опыт: 83,712
Активность:
Хорошие новости - Use Item работает и, кажется мне удается реализовать сетовые вещи вот такой структурой
Код:
//################################################################################  
function inv100_RegisterSet takes integer setid, integer abilcode, string name returns nothing
    local integer i = 0
    loop 
        exitwhen i > cfgi("invEmi_set_max")
        if not HaveStoredInteger(udg_fs_cache, "set"+I2S(i), "setid") then
            call StoreInteger(udg_fs_cache, "set"+I2S(i), "setid", setid)
            call StoreInteger(udg_fs_cache, "set"+I2S(i), "abilcode", abilcode)
            call StoreString(udg_fs_cache, "set"+I2S(i), "name", name)

            call StoreInteger(udg_fs_cache, "set", "count", i+1)
            return
        endif
    endloop
endfunction
//################################################################################  
function inv100_RegisterSetLevel takes integer setid, integer level, integer itemcount, string desc returns nothing
    local integer i = 0
    loop 
        exitwhen i > cfgi("invEmi_set_maxlevels")
        if not HaveStoredInteger(udg_fs_cache, "set_"+I2S(setid)+"_"+I2S(i), "level") then
            call StoreInteger(udg_fs_cache, "set_"+I2S(setid)+"_"+I2S(i), "level", level)
            call StoreInteger(udg_fs_cache, "set_"+I2S(setid)+"_"+I2S(i), "itemcount", itemcount)
            call StoreString(udg_fs_cache, "set_"+I2S(setid)+"_"+I2S(i), "desc", desc)

            call StoreInteger(udg_fs_cache, "set_"+I2S(setid), "count", i+1)
            return
        endif
    endloop
endfunction
//################################################################################  
function inv100_RegisterSetItem takes integer setid, integer level, integer itemid returns nothing
    local integer i = 0
    loop 
        exitwhen i > cfgi("invEmi_set_maxitems")
        if not HaveStoredInteger(udg_fs_cache, "set_item"+I2S(setid)+"_"+I2S(level)+"_"+I2S(i), "itemid") then
            call StoreInteger(udg_fs_cache, "set_item"+I2S(setid)+"_"+I2S(level)+"_"+I2S(i), "itemid", itemid)

            call StoreInteger(udg_fs_cache, "set_item"+I2S(setid)+"_"+I2S(level), "count", i+1)
            return
        endif
    endloop
endfunction
Старый 08.10.2005, 22:11
zibada

offline
Опыт: отключен
можно все сдвинуть влево на клетку, там один ряд еще должен оставаться...
иконки героев начнут накладываться на рамки из эффектов, но ничего существенного они не закроют.

DimonT добавил:
нетрат... давай вначале доведем до рабочего релиза версию без сетов, а потом уже будем всякие такие штуки приделывать =)

я не думаю, что всем потенциальным юзерам этой системы нужны сеты...
Старый 08.10.2005, 22:13
NETRAT

offline
Опыт: 83,712
Активность:
DimonT да все равно это опция отключаема. Ну и где баги?!
1. Загрузка/Сохранение 90%
2. Кнопка 5/1 очень редко глюкает - инвентарь забивается - по каким событиям - не удалось опознать
Что еще исправлять?
Старый 08.10.2005, 22:27
Terros

offline
Опыт: 2,502
Активность:
Добавь в инвентарь опцию стакинга вешей...
Старый 09.10.2005, 17:54
NETRAT

offline
Опыт: 83,712
Активность:
Terros вот это вряд ли - инв и так на 100 слотов, а если еще заряды склеивать - имхо маразмь - зачем так много вещей в инвентаре?!
Старый 09.10.2005, 22:46
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 13:55.