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

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

Ответ
 
Ksax
Взрываю ваше вображение!
offline
Опыт: 4,349
Активность:
Я на свой проэкт сделал систему проще и быстрее! Автор что-бы люди пользовались твоей системой подними производительность.
Старый 25.08.2008, 13:38
Gres
Кораэлестраз
offline
Опыт: 18,575
Активность:
Там стока перенастраивать нада чтобы перенести на другую карту! Проще самому сделать наверна!
Старый 25.08.2008, 13:47
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Цитата:
Сообщение от Ksax
А не легче на каждый предмет отдельный тригер? Ведь когда подбираеш "Королевскую корону" И потом собираеш клинок мага случается притормаживание! Увы автор система не годится.
P.s. Кэш в сборке предметов даже новички не используют

Ksax добавил:
Чуть не забыл можно было еще сделать наложение зарядов здесь же.


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

Alex_Hell добавил:
ShadoW DaemoN, да я был не прав, когда поспешно показал другую формулу для сложения всего в 1 массив... ваш пример правильный

но мне всеже кажется, что от кол-ва массивов быстрее работать не будет, ведь что 1 массив из 60 элементов, что 6 массивов каждый из 10 - одно и тоже, или я чегото не понимаю?
Цитата:
для оптимальной работы - разработай более быстрый алгоритм

Можно конечно убрать из моего алгоритма доп. проверки на одинаковые составляющие для набора, но тогда наработка не пойдет в случае, если понадобится:
Цитата:
3 х амулет маны = кинжал мага

Как вы думаете, стоит пожертвовать этим?

Alex_Hell добавил:
Цитата:
Сообщение от GresAHT
Там стока перенастраивать нада чтобы перенести на другую карту! Проще самому сделать наверна!

Перенастраивать тама нужно только то, какие вам в карте нужны наборы, и какие составляющие, и все это занести в базу по примеру.
Старый 25.08.2008, 19:11
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Alex_Hell наработка класс,только ты не против вместо переменных я сделаю с кешем мне так удобнее?И импортну к себе в карту.
Старый 25.08.2008, 19:44
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Alex_Hell, каждый массив по сути занимает 32 Кб памяти (8192 элемента * 4 байта = 32 768 байт). Вот, собственно, и все объяснение, быстрее работать-то не будет, а вот памяти меньше истратит. К тому же, ничтожно маловероятно, что кто-то придумает более 8190 сборных предметов. Так что можно использовать 1 массив, в этом случае, максимальное число возможных комбинаций предметов упадет до 1170, что тоже является внушительной цифрой. Следовательно, в случае если юзер не заабузит систему, то волноваться неочем =)

Кстати, я не заметил выход из цикла при проверке на совпадение предметов - даже если первый проверяемый предмет не совпадает с тем, что в инвентаре, проверка все равно продолжается. Нехорошо.

Как можно улучшить систему? Да вот навскидку хотя бы добавить массив, содержащий информацию о кол-ве однотипных предметов в рецепте и кол-ве типов ингредиентов (добавлять при регистрации сборного предмета). Таким образом, можем избавиться от двойного цикла и некоторых условий. А также пофиксить вышеуказанный баг с выходом из цикла.
Старый 25.08.2008, 19:53
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
ShadoW DaemoN, насчет того, что можно перенести в 1 массив - это я понял, уже сделал...
Цитата:
добавить массив, содержащий информацию о кол-ве однотипных предметов в рецепте

Спасибо, но уже догадался... как открыл код еще раз, так сразу и понял, что каждый раз при проверке очередного набора выполняется пересчет кол-ва однотипных предметов, а можно это сделать заранее и запомнить...
Цитата:
Кстати, я не заметил выход из цикла при проверке на совпадение предметов - даже если первый проверяемый предмет не совпадает с тем, что в инвентаре, проверка все равно продолжается. Нехорошо.

Правда, не заметил, но она есть:
Код:
loop
        exitwhen x > 5
        if a[x] > 0 then
            set v = 0
            set d = 0
            loop
                exitwhen d > 5
                if v < count[x] then
                    if items[d] == a[x] then // если нашли нужный предмет, увеличиваем счетчик v
                        set v = v + 1
                        set g = g + 1
                        set drop[g] = d
                    endif
                endif
                set d = d + 1
            endloop
            if v < count[x] then //если насчитали меньше, чем надо -> выход
                return false
            endif
        endif
        set x = x + 1
    endloop


Alex_Hell добавил:
Улучшил алгоритм и загрузил новую версию в 1 пост!

Alex_Hell добавил:
Цитата:
Сообщение от Dragon Knight
Alex_Hell наработка класс,только ты не против вместо переменных я сделаю с кешем мне так удобнее?И импортну к себе в карту.

Насчет импорта, бери, я и выложил ее для того, чтобы помочь остальным.
А насчет кэша - не очень хорошая идея, он работает намного медленнее переменных, будут лаги.

Отредактировано Alex_Hell, 25.08.2008 в 22:34.
Старый 25.08.2008, 22:38
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Alex_Hell лагов ни разу не замечал,но за совет спасибо.
Старый 25.08.2008, 23:39
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Ну как, кто-нить уже пробовал новую версию?
Старый 27.08.2008, 19:34
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Alex_Hell да вроде бы лагов нет!
Есть предложение:
Сделай какой нибудь ефект при сложении зарядов.
Старый 27.08.2008, 19:42
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Dragon Knight, у меня сложение зарядов не используется, думаю добавить...
или ты имел ввиду при создании набора?
Старый 28.08.2008, 00:49
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Alex_Hell при создании набора.
Старый 28.08.2008, 09:38
ZerG_KilleR

offline
Опыт: 82
Активность:
Да простит меня преуважаемый автор...
Просто создание спецэффекта при каждой удачной сборке...
Код:
function Trig_PickItem_Actions takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local integer id = UIS_Check(u)
    local item f = null
    if id > -1 then
        set f = CreateItem(id,GetUnitX(u)+10,GetUnitY(u))
        call UnitAddItem(u,f)
    call AddSpecialEffectTargetUnitBJ( "origin", GetTriggerUnit(), "Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl" ) // создание эффекта
    call DestroyEffectBJ( GetLastCreatedEffectBJ() ) // удаление эффекта
        set f = null
    endif
    set u = null
endfunction
Старый 22.11.2008, 11:52
Инди
Дух Дракона
offline
Опыт: 2,843
Активность:
Alex_Hell, спс тебе большое за твой шедевр. Я перепробовал около 5 систем, одни пеня посылали сразу при копировании, другие при тесте удивляли меня главным меню варкрафта, третьи при покупке одного предмета собирали сразу все коллекцию, что возможно из него собрать. Твое же творение, без единого упрека все четко и быстро. Спс тебе большое
Старый 20.09.2011, 11:39
Suite
┌_____┐
offline
Опыт: 11,222
Активность:
Цитата:
Сообщение от Инди
при тесте удивляли меня главным меню варкрафта

возможно это флуд, но рб давно не работает или ты сохраняешь не в жнгп.
Старый 20.09.2011, 13:40
Ответ

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

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

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

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



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