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

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

Ответ
 
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Скачал, сегодня проверить не смогу (редактор тупит, переставлять буду).
Вы хоть проверьте его, а то может он и не работает вовсе =\
Markiz, отмаз не защитан =)
Хмм, у меня тут возникла идейка, как упростить код.
Сейчас у меня алгоритм проделывает махинации с массивом спец. ректов в начале, а затем идет грубый механизм разделки. Идея такая:

Дано:
>> udg_NoWeather - массив ректов без погоды;
>> udg_WeatherR - массив, куда будут складироваться обрезки;
>> udg_WeatherI - массив интеджеров, каждый элемент - индикатор включения погоды (0 - выкл., 1 - вкл., 2 - вкл. вместе с предыдущим)

Алгоритм:
>> Делаем рект с полной высотой и шириной width;
>> Пробегаемся по первому массиву, определяемся с пересечениями;
>> В цикле режем все куски (и безпогодные тоже) и записываем во второй массив;
>> В этом же цикле в третий массив записываем: для первого ректа в полоске - 1, далее для всех кусков "без погоды" - 0, и 2 для всего остального.

Хмм, это сложнее, чем мне казалось.

ZlaYa1000, почему такое непредвзятое отношение к Жону? Он, может, помочь хочет, а ты не поощряешь...
Старый 03.09.2007, 16:25
tysch_tysch
Работаем
online
Опыт: отключен
ты маркизу задачу объясни для начала
Старый 03.09.2007, 18:47
Markiz

offline
Опыт: 11,432
Активность:
Дело в том, что я вполне могу исчезнуть (я постараюсь, конечно, так не делать, но все может быть)

Markiz добавил:
Цитата:
ну дык, вообще от него я слышал некоторые странные вещи, например что хендлы не во всех случаях обнулять надо, что кешь при ините флушить ненадо, так что если и переписывать то не ему.

На практике доказано, что обnullение хэндлов может вызывать довольно разнообразные глюки.
Правда я с таким столкнулся всего один раз, но уж столкнулся, так столкнулся.
Старый 03.09.2007, 20:46
Mastro

offline
Опыт: 14,878
Активность:
Цитата:
null

нулы везде глючат о.0
особенно в хытытыпы
Старый 03.09.2007, 21:21
Toadcop

offline
Опыт: 54,313
Активность:
Цитата:
насчет хендлов - на вк3джасс есть статья, где умные дядьки говорят это
типо меня ? =) обнулять не надо хендлы из "необщего диапазона" т.е. те что не юниты,триггеры,таймеры,локации и много других у которых хендл начинаетьса с 0x100000 + бульекспр напр удалять не надо т.к. они заносятьса в таблицу и повторно не создаютьса. (типо как строки) вот напр молнии,тт,имаджи обнулять не надо. у них свой диапазон он являютьса локальными объектами.


Цитата:
что обnullение хэндлов может вызывать довольно разнообразные глюки.
да подобный еффект имеет бру. т.е. ЭТО БРЕД ! всё можно нулить как хочеш и ничег оне будет ! в таких вещях сам юзер просирает/глючит. глючат удалёные тригги. напр в доте они дисейблитьса и потом возможно удаляютьса.
а не круче зделать уник погоду которая передвигаетьса О_о и потихоньку начинаетьса О_о делаетьса достаточно просто... ну конечно не сверх но все же... + где говно код Джона я понял здесь без мну нехрена норм не получитьса xD
Старый 03.09.2007, 22:30
adic3x

offline
Опыт: 108,439
Активность:
кста а нет ли смысла накатать свой везер слк?) можем серьезно выиграть в дизайне...
Старый 03.09.2007, 23:26
Toadcop

offline
Опыт: 54,313
Активность:
Цитата:
кста а нет ли смысла накатать свой везер слк?) можем серьезно выиграть в дизайне...

иммено =) (но я про джассовый стафф =)) но вообщем это полностью поодерживаю !
Старый 03.09.2007, 23:48
adic3x

offline
Опыт: 108,439
Активность:
ну а если этот тру стафф будет скажем юзать несколько типов дождей, скажем где дождь круче (тобиш больше льет) там бьет молния и т.д.
+
можно сделать для каждой карты погоду со своими эффектами, тобишь дождь в шестой мапе это липкий снег, который падает с неба или что то там еще. делается элементарно, даже на стандартных текстурах...
вобщем 1000, подумай.
Старый 03.09.2007, 23:53
Toadcop

offline
Опыт: 54,313
Активность:
О_О я круче придумал О_О сделать юнитов 100 думми к ним крипить нужные еффекты и хароводить их по карте О_О и нахрен погода как такое не нужна.тока пару партикл еммитеров надо будет сделать... но еффект будет уникальный.
[+] замечание от nazarpunk: 10.4 Создание ресурса, название которого не отражает суть вопроса.
Старый 04.09.2007, 00:09
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
ADOLF, в принципе, было бы неплохо. Однако метод использования погоды для кое-какой идеи не подойдет. Для реалистичности не делать всю карту одной погодой, а допустим сначала начал дуть ветер, потом постепенно выползает дождь и становится сильнее.
Toadcop, хмм, это не бьет по тормозам? =)
Старый 04.09.2007, 06:00
Mastro

offline
Опыт: 14,878
Активность:
Цитата:
Toadcop, хмм, это не бьет по тормозам? =)

онж на концептах(был по крайней мере )так что если всё быстренько сделает...
Старый 04.09.2007, 13:03
adic3x

offline
Опыт: 108,439
Активность:
ну вобщем даже если оставить старый погодный скрипт всеравно имхо везер.слк можно подкрутить.
Старый 04.09.2007, 16:07
Toadcop

offline
Опыт: 54,313
Активность:
Цитата:
ну вобщем даже если оставить старый погодный скрипт всеравно имхо везер.слк можно подкрутить.
да.


Цитата:
Toadcop, хмм, это не бьет по тормозам? =)


онж на концептах(был по крайней мере )так что если всё быстренько сделает...
я вообще не понял какие тормоза производительности в игре или еще какие то ? если сделать грамотно то нет. (очень даже нет) если двигать 0.2 в сек еффекты то это вообще детский лепет. про концепты рисовать всё не долго всё вопрос желания =) (настроения или когда у мну електричество отключают =)))))
Старый 04.09.2007, 19:48
tysch_tysch
Работаем
online
Опыт: отключен
подкрутим если вы мне дорогие тригерщики заставите для начала работать погодный скрипт и доделаете инвентарь.

ZlaYa1000 добавил:
а художник по концептам вам поможет ценными советами=))

ZlaYa1000 добавил:
и напишет пару функций во имя великого, но крайне ленивого тюленя
Старый 04.09.2007, 20:26
Mastro

offline
Опыт: 14,878
Активность:
Toadcop,йа прото што решает 1000,а ему важней основная работа

M_a_s_t_r_o добавил:
ну вот,не успел=\
Старый 04.09.2007, 20:27
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Скриптик (ver. для Toadcop'a)...
Прикрепленные файлы
Тип файла: rar shapespl.rar (1.4 Кбайт, 1 просмотров )
Старый 08.09.2007, 18:55
tysch_tysch
Работаем
online
Опыт: отключен
ShadoW DaemoN что у тебя сейчас не получается? выложи в тег код я и адольф глянем.
Старый 16.09.2007, 12:42
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Вот код:
1. Функция для проверки пересечения регионов:
Код:
function IsRectInRect takes rect r1, rect r2 returns integer
    local real ax1 = GetRectMinX(r1)
    local real ax2 = GetRectMaxX(r1)
    local real bx1 = GetRectMinX(r2)
    local real bx2 = GetRectMaxX(r2)
    if     ax1 >= bx1 and ax2 <= bx2 then    // r2 полностью пересекает r1
        return 1
    elseif ax1 <  bx1 and ax2 >  bx2 then    // r2 полностью в r1
        return 2
    elseif ax1 <  bx1 and ax2 <  bx2 then    // r2 правее r1
        return 3
    elseif ax1 >  bx1 and ax2 >  bx2 then    // r2 левее r1
        return 4
    endif
    return 0
endfunction


2. Функция вырезания регионов:
Код:
function RectSplit takes rect r1, rect r2 returns rect
    local real ax1 = GetRectMinX(r1)
    local real ay1 = GetRectMinY(r1)
    local real ax2 = GetRectMaxX(r1)
    local real ay2 = GetRectMaxY(r1)
    local real bx1 = GetRectMinX(r2)
    local real by1 = GetRectMinY(r2)
    local real bx2 = GetRectMaxX(r2)
    local real by2 = GetRectMaxY(r2)
    local integer i = IsRectInRect(r1, r2)
    if i > 0 then
        set udg_W[udg_I] = Rect(ax1, ay1, bx1, ay2)
        set udg_I = udg_I + 1
        if i == 2 or i == 3 then
            set udg_W[udg_I] = Rect(bx1, ay1, bx2, by1)
            set udg_I = udg_I + 1
        endif
        if i == 2 or i == 4 then
            set udg_W[udg_I] = Rect(bx1, by2, bx2, ay2)
            set udg_I = udg_I + 1
        endif
        return Rect(bx2, ay1, ax2, ay2)
    else
        set udg_W[udg_I] = Rect(ax1, ay1, ax2, ay2)
        set udg_I = udg_I + 1
    endif
    return null
endfunction


3. Основная обрабатывающая функция:
Код:
function ShapeSplitv2 takes rect r, real width returns nothing
    local rect    H = null
    local integer i = 0
    local real minx = GetRectMinX(r)
    local real miny = GetRectMinY(r)
    local real maxx = GetRectMaxX(r)
    local real maxy = GetRectMaxY(r)
    local real    x = minx
    loop
        exitwhen x >= maxx
        set H = Rect(x, miny, x + width, maxy)
        set i = 0
        loop
            exitwhen udg_R[i] == null or i > 8190
            set H = RectSplit(H, udg_R[i])
            set udg_B[udg_I] = true
            set udg_I = udg_I + 1
            set i = i + 1
        endloop
        set x = x + width
    endloop
endfunction


Вроде бы все нормально, пока не встречается спец. регион. Объяснить на словах сложновато, поэтому нарисовал - http://img166.imageshack.us/img166/2862/krivoysplitmt6.jpg

Отредактировано ShadoW DaemoN, 16.09.2007 в 16:12.
Старый 16.09.2007, 14:57
tysch_tysch
Работаем
online
Опыт: отключен
ShadoW DaemoN 1 фукшен - почему только по х проверочка идёт?
Старый 16.09.2007, 15:05
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
1000, регионы режутся по Х (т.е. по вертикальным полосам шириной width). Y не учитывается.
Старый 16.09.2007, 15:11
Ответ

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

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

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

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



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