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

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

Закрытая тема
 
biridius

offline
Опыт: 20,277
Активность:
Расстановка магических кругов и д.р.
Вот некоторый набор слов на джассе) При вызове самой нижней функции вар вылетает с ошибкой. В чем проблемы? Может быть в циклах в функциях cX, cY? Если да, подскажите как их лучше переделать, чтобы выдавали по номеру круга его "координаты"?При сохранении карты никаких ошибок не выдает.
Код:
globals
integer array cn          
integer       mY =        7
integer       mX =      10
real            cs =      128
unit array    c           
integer       ctp =   'ncop'
endglobals

function ci takes integer x, integer y returns integer
if GetBooleanOr(x>mX, x<1) then
return 0
elseif GetBooleanOr(y>mY, y<1) then
return 0
else
return x + (y-1)*mY
endif
endfunction

function cX takes integer i returns integer
local integer j = i
loop
    exitwhen( j < mY+1 )
    set j = j - mY
endloop
return j
endfunction

function cY takes integer i returns integer
local integer j = i
local integer f = 1
loop
    exitwhen( j < mY+1)
    set f = f + 1
    set j = j - mY
endloop
return f
endfunction

function cZan takes integer i returns boolean
return false
endfunction

function num4_help takes integer N, integer s returns nothing
if GetBooleanOr(GetBooleanOr( cZan(N), N==0 ), cn[N] != 0 ) then
else
set cn[N] = s
endif
endfunction

function num4 takes integer i, integer s returns nothing
local integer x = cX(i)
local integer y = cY(i)
call num4_help(ci(x+1,y),s)
call num4_help(ci(x-1,y),s)
call num4_help(ci(x,y+1),s)
call num4_help(ci(x,y-1),s)
endfunction

function mark takes integer start, integer speed returns nothing
local integer s = 0
local integer i = 1
loop
    exitwhen( i > mX*mY )
    set cn[i] = 0
    set i = i + 1
endloop
set i = 0
set cn[start] = 1
loop
    exitwhen( s > speed )
    set s = s + 1
    set i = 1
    loop
        exitwhen( i > mX*mY )
        if cn[i] != 0 then
            call num4(i, s)
        else
        endif
        set i = i + 1
    endloop
endloop
endfunction

function Place_c takes real x, real y returns nothing
local integer i = 1
loop
    exitwhen( i > mX*mY )
    set c[i] = CreateUnit(Player(16), ctp, x+cX(i)*cs, y-cY(i)*cs, 0.00)
    set i = i + 1
endloop
endfunction
Старый 08.10.2011, 15:16
Elf_Stratigo

offline
Опыт: 4,599
Активность:
имена ни о чем не говорят
Player(16)
Старый 08.10.2011, 15:25
Praudmur
в поисках идей...
offline
Опыт: 3,604
Активность:
помните, что игроки нумеруются с нуля, а 16 игрока вообще не существует -_-
Старый 08.10.2011, 15:40
biridius

offline
Опыт: 20,277
Активность:
Спасибо теперь работает
Старый 08.10.2011, 15:41
Закрытая тема

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

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

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

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



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