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

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

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

offline
Опыт: 2,291
Активность:
Не работает функция
Трабла
Функция должна находить путь но она с цикла толе не выходит толе еше какойто бред
Код:
globals
real dbl = 50.00
real array pxs
real array pys
integer pmn
boolean pp = true
string es = "Abilities\\Spells\\Orc\\AncestralSpirit\\AncestralSpiritCaster.mdl"
endglobals

//////////////////////////////////////////
function AngleBetweenXY takes real x1, real y1, real x2, real y2 returns real
    return Atan2((y2-y1),(x2-x1)) * 57.295827
endfunction

function echo takes string s returns nothing
    call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,8,s)
endfunction

function PolarX takes real x, real range, real angle returns real
    return x + Cos(angle * 0.017453277)*range
endfunction

function PolarY takes real y, real range, real angle returns real
    return y + Sin(angle * 0.017453277)*range
endfunction

function DistanceBetweenXY takes real x1, real y1, real x2, real y2 returns real
    return SquareRoot((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2))
endfunction
//////////////////////////////////////////

function b2s takes boolean b returns string
if b then
return "True"
else
return "False"
endif
endfunction

function IsPatchPatchable takes real cx,real cy,real xe,real ye,real a returns boolean
local integer in = 0
local real x = cx
local real y = cy
set pp = true
loop
set x = PolarX(x,5.00,a)
set y = PolarY(y,5.00,a)
set pp = not IsTerrainPathable(x,y,ConvertPathingType(1))
set in = in + 1
exitwhen (in >= 10)
endloop
return pp
endfunction

function FindPatch takes real cx,real cy,real xe,real ye returns nothing
local real a = AngleBetweenXY(cx,cy,xe,ye)
local real nx = PolarX(cx,dbl,a)
local real ny = PolarY(cy,dbl,a)
local integer i = 0
local integer i2 = 0
local boolean b = false
local boolean b2 = false
local integer c  ///////////////ВОТТТТТ
local real cha
loop
exitwhen b
call CreateTextTagLocBJ("!",Location(cx,cy),10.00,10.00,10.00,10.00,10.00,10.00)
set i = i + 1
if DistanceBetweenXY(cx,cy,xe,ye) <= 50.00 then
set b = true
endif
if  IsPatchPatchable(cx,cy,nx,ny,a) then
set c = c + 1
set pxs[c] = cx
set pys[c] = cy
set cx = nx
set cy = ny
else
loop
exitwhen b2 == true
set cha = cha + 5.00
set nx = PolarX(cx,dbl,a+cha)
set ny = PolarY(cy,dbl,a+cha)
if IsPatchPatchable(cx,cy,nx,ny,a) then
set c = c + 1
set pxs[c] = nx
set pys[c] = ny
endif
set nx = PolarX(cx,dbl,a-cha)
set ny = PolarY(cy,dbl,a-cha)
if IsPatchPatchable(cx,cy,nx,ny,a) then
set c = c + 1
set pxs[c] = nx
set pys[c] = ny
set b2 = true
endif
endloop
set a = AngleBetweenXY(cx,cy,xe,ye)
endif
endloop
call CreateTextTagLocBJ("!",Location(cx,cy),100.00,100.000,100.00,100.00,100.00,50.00)
set pmn = 0

endfunction

Отредактировано darker, 12.04.2009 в 12:48.
Старый 12.04.2009, 10:55
J
expert
offline
Опыт: 48,447
Активность:
где инициализируется пееременая local integer c?
Старый 12.04.2009, 11:28
darker

offline
Опыт: 2,291
Активность:
Цитата:
где инициализируется пееременая local integer c?

Лол смотри код :)
Старый 12.04.2009, 12:47
Toadcop

offline
Опыт: 54,313
Активность:
чё то вообще не рацыонально... -.-

вот на "подумай" над этим...

ну конечно есть и другие более хитрые возможности... (тока надо ограничиватса на геймплеи и что там возможно/нужно)

+ pathing cell == 32 =) а не 5 =О

Toadcop добавил:
darker а ты еще и давн xD
Цитата:
Лол смотри код :)
101010101010lololololo100101010 ... =) СУМАШЕДСТВИЕ ?! ЭТО ДЖАСС !

Toadcop добавил:
а точней джонита полностью прав.
так же включительно и про
Код:
local real cha
Старый 12.04.2009, 13:08
darker

offline
Опыт: 2,291
Активность:
Ето не вся система, ето только половина. Остальное - оптимизация пути. прошу исправить етот код (
Исправил

darker добавил:
В таком случае я вас двоих не понял
[+] замечание от ScorpioT1000: Ничего не понятно - "четай русское языку"!

Отредактировано ScorpioT1000, 12.04.2009 в 17:01.
Старый 12.04.2009, 16:30
J
expert
offline
Опыт: 48,447
Активность:
local integer i - объявление переменой
set i = 0 - инициализация переменой
local integer i = 0 - объявление и инициализация переменой

связь видно?
Старый 12.04.2009, 16:51
ScorpioT1000
Работаем
online
Опыт: отключен
Цитата:
set i = 0 - инициализация переменой

неа )
local integer i - объявление
local integer i = 0 - объявление иинициализация
set i = 0 - присвоение, а не ! инициализация

ScorpioT1000 добавил:
хотя по теме все норм, но понятия надо знать)
Старый 12.04.2009, 17:04
Toadcop

offline
Опыт: 54,313
Активность:
darker тебе уже написали всё что надо если ты этого не понимаеш то бида...

Toadcop добавил:
Активность: 512 ^_^
Старый 15.04.2009, 13:45
Закрытая тема

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

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

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

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



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