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

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

Закрытая тема
 
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Vampirrr, думаю первое. Но первое и второе связано...
Старый 01.01.2009, 01:47
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
Hellfim, бххх) мне просто важно докопаться до сути, на сколько отрицательно сказывается данный код на работоспособности игры)
Старый 01.01.2009, 02:18
J
expert
offline
Опыт: 48,447
Активность:
это для офицера, если делал не так как я гоорил - твои проблемы...
Код:
// (!!)индексация ректов от 0 до 63 включительно(!!)
function my_function takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local integer Column = R2I((GetUnitX(u)-<ВерхнийЛевыйУголДоски.x>)/<РазмерЯчейки.x>)
    local integer Row    = R2I((<ВерхнийЛевыйУголДоски.y>-GetUnitY(u))/<РазмерЯчейки.y>)
    local integer IndexRect = Column+Row*<КоличествоЯчеекПоШирине> //Это <то значение что ты получал с помощью цикла от 1 до 64>-1
    local integer c = Column
    local integer r = Row 
    local integer i
    loop
        set c = c - 1 
        set r = r - 1
        exitwhen c < 0 or r < 0
        set i = c+r*<КоличествоЯчеекПоШирине>
        call <ПоставитьСтрелкуНаЯчейку>(udg_Square[i])
        if <ВРектеНаходитсяЮнит>(udg_Square[i]) then
            exitwhen true
        endif
    endloop
    set c = Column
    set r = Row 
    loop
        set c = c + 1 
        set r = r + 1
        exitwhen c >= <КоличествоЯчеекПоШирине> or r >= <КоличествоЯчеекПоВысоте>
        set i = c+r*<КоличествоЯчеекПоШирине>
        call <ПоставитьСтрелкуНаЯчейку>(udg_Square[i])
        if <ВРектеНаходитсяЮнит>(udg_Square[i]) then
            exitwhen true
        endif
    endloop
    set c = Column
    set r = Row 
    loop
        set c = c + 1
        set r = r - 1
        exitwhen c >= <КоличествоЯчеекПоШирине> or r < 0
        set i = c+r*<КоличествоЯчеекПоШирине>
        call <ПоставитьСтрелкуНаЯчейку>(udg_Square[i])
        if <ВРектеНаходитсяЮнит>(udg_Square[i]) then
            exitwhen true
        endif
    endloop
    set c = Column
    set r = Row 
    loop
        set c = c - 1
        set r = r + 1
        exitwhen c < 0 or r >= <КоличествоЯчеекПоВысоте>
        set i = c+r*<КоличествоЯчеекПоШирине>
        call <ПоставитьСтрелкуНаЯчейку>(udg_Square[i])
        if <ВРектеНаходитсяЮнит>(udg_Square[i]) then
            exitwhen true
        endif
    endloop
    set u = null
endfunction
Старый 02.01.2009, 14:22
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
J, в общем сделал я пример, что б ты только глянул и исправил что не так, ибо у меня работает, но криво =)
Прикрепленные файлы
Тип файла: w3x RookSelection.w3x (28.4 Кбайт, 14 просмотров )

Отредактировано Vampirrr, 03.01.2009 в 10:43.
Старый 02.01.2009, 18:37
Закрытая тема

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

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

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

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



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