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

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

Ответ
 
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
На какие грабли наступил?
есть код
function cond1 takes nothing returns nothing
local real r = 50.00

loop
exitwhen r >= 700.00

if ( CountUnitsInGroup(GetUnitsInRangeOfLocMatching(r, GetUnitLoc(udg_Dante)Condition IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Dante)) == true and IsUnitAliveBJ(GetFilterUnit()) == true > 0 ) then
call SetUnitFacingToFaceUnitTimed( udg_Dante, GroupPickRandomUnit(GetUnitsInRangeOfLocMatching(r, GetUnitLoc(udg_Dante)Condition IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Dante)) == true and IsUnitAliveBJ(GetFilterUnit()) == true, 0.60 )
endif
set r = r + 50.00

endloop

endfunction

function Trig_NearestTarget_Actions takes nothing returns nothing
    if ( GetOrderedUnit() == udg_Dante ) and ( GetIssuedOrderIdBJ() == String2OrderIdBJ("holdposition")) then
    call cond1()
    endif
endfunction

//===========================================================================
function InitTrig_NearestTarget takes nothing returns nothing
    set gg_trg_NearestTarget = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_NearestTarget, EVENT_PLAYER_UNIT_ISSUED_ORDER )
    call TriggerAddAction( gg_trg_NearestTarget, function Trig_NearestTarget_Actions )
endfunction
де я ошибся? компилятор выдает вот что
Миниатюры
Кликните на картинку для увеличения
Название:  nt.JPG
Просмотров: 38
Размер:  35.7 Кбайт  
Старый 13.11.2011, 02:30
The Requiem

offline
Опыт: 2,766
Активность:
Hatsume_Hate, ругается на отсутствие запятой в функции. по логике
Старый 13.11.2011, 02:53
Death_Jester
ad personam
offline
Опыт: 5,629
Активность:
Hatsume_Hate:
На какие грабли наступил?
создаю dmc в варкрафте <<
Ну тут я думаю всё понятно.
Старый 13.11.2011, 02:57
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Death_Jester:
Hatsume_Hate:
На какие грабли наступил?
создаю dmc в варкрафте <<
Ну тут я думаю всё понятно.
и как мой статус над авой дает тебе понять что не так с кодом?)
Hatsume_Hate добавил:
The_Requiem:
Hatsume_Hate, ругается на отсутствие запятой в функции. по логике
знать бы еще куда ее пихануть...
Старый 13.11.2011, 03:02
Death_Jester
ad personam
offline
Опыт: 5,629
Активность:
Hatsume_Hate:
Спасибо тем, кто отказал мне в помощи. Именно благодаря им я справился сам. (с) кто-то
Последняя подсказка.
Старый 13.11.2011, 03:04
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
GetUnitLoc(udg_Dante)Condition IsUnitEnemy(GetFilterUnit(),
омфг что это
Старый 13.11.2011, 03:09
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Death_Jester:
Hatsume_Hate:
Спасибо тем, кто отказал мне в помощи. Именно благодаря им я справился сам. (с) кто-то
Последняя подсказка.
эээхх.. в этой ветке идет обсуждение всего связанного с жассом и ничем другим, поэтому либо пиши по теме, либо вообще не пиши ладненько?
Hatsume_Hate добавил:
FellGuard:
GetUnitLoc(udg_Dante)Condition IsUnitEnemy(GetFilterUnit(),
омфг что это
это попытка прицепить фильтр юнитов)
Старый 13.11.2011, 03:11
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
фильтер/кондишн-функшны делаются за всю игру один раз и пишутся или в глобалки, или в хэш или ещё куда душе угодно.
У тебя там нет запятой после скобки это раз, правильная конструкция Condition(function <НазваниеФункции>) это два
Старый 13.11.2011, 03:13
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
FellGuard:
фильтер/кондишн-функшны делаются за всю игру один раз и пишутся или в глобалки, или в хэш или ещё куда душе угодно.
У тебя там нет запятой после скобки это раз, правильная конструкция Condition(function <НазваниеФункции>) это два
чиерт... а после какой скобки у мя нету запятой?
Старый 13.11.2011, 03:16
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Да тут не в запятых дело, вся конструкция ужасна до дрожи, и никак не взлетит.
function Nightmare takes nothing returns boolean
    return IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Dante)) and IsUnitAliveBJ(GetFilterUnit())
endfunction

if ( CountUnitsInGroup(GetUnitsInRangeOfLocMatching(r, GetUnitLoc(udg_Dante), Filter(function Nightmare)) > 0 ) then
call SetUnitFacingToFaceUnitTimed( udg_Dante, GroupPickRandomUnit(GetUnitsInRangeOfLocMatching(r, GetUnitLoc(udg_Dante), Filter(function Nightmare), 0.60 )))
endif
хотя бы так
Старый 13.11.2011, 03:22
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
FellGuard:
Да тут не в запятых дело, вся конструкция ужасна до дрожи, и никак не взлетит.
function Nightmare takes nothing returns boolean
    return IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_Dante)) and IsUnitAliveBJ(GetFilterUnit())
endfunction

if ( CountUnitsInGroup(GetUnitsInRangeOfLocMatching(r, GetUnitLoc(udg_Dante), Filter(function Nightmare)) > 0 ) then
call SetUnitFacingToFaceUnitTimed( udg_Dante, GroupPickRandomUnit(GetUnitsInRangeOfLocMatching(r, GetUnitLoc(udg_Dante), Filter(function Nightmare), 0.60 )
endif
хотя бы так
название функции тащит :D
спасиб) потыркаюсь над этим
Старый 13.11.2011, 03:23
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
за совпадение количества открывающих/закрывающих скобок не ручаюсь, а так вроде всё правильно
Старый 13.11.2011, 03:25
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
FellGuard:
за совпадение количества открывающих/закрывающих скобок не ручаюсь, а так вроде всё правильно
нешта всеравно барахлит , но другое уже совсем выдает
Hatsume_Hate добавил:
if ( CountUnitsInGroup(GetUnitsInRangeOfLocMatching(r, GetUnitLoc(udg_Dante), Filter(function Nightmare()), > 0 ) then
call SetUnitFacingToFaceUnitTimed( udg_Dante, GroupPickRandomUnit(GetUnitsInRangeOfLocMatching(r, GetUnitLoc(udg_Dante), Filter(function Nightmare()), 0.50 )
вот на этих опять та же ошибка, нету запятой гдето, скобки добавил пару штук ><
Старый 13.11.2011, 03:35
The Requiem

offline
Опыт: 2,766
Активность:
В первом ифе разве нужна запятая перед > 0?
Старый 13.11.2011, 03:37
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
The_Requiem:
В первом ифе разве нужна запятая перед > 0?
а без разницы, что она есть, что ее нету, ошибка всегда висит та же
Старый 13.11.2011, 03:38
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
её там быть не должно
Filter(function Nightmare())
Нафига скобки к имени функции присобачил? Короче вот тебе нотариально заверенный вариант:
  if ( CountUnitsInGroup(GetUnitsInRangeOfLocMatching(r, GetUnitLoc(udg_Dante), Filter(function Nightmare))) > 0 ) then
    call SetUnitFacingToFaceUnitTimed( udg_Dante, GroupPickRandomUnit(GetUnitsInRangeOfLocMatching( r, GetUnitLoc(udg_Dante), Filter(function Nightmare))), 0.50 )
  endif 
что оно делает я не стал вдумываться, ибо сонный, но у меня подозрение, что можно сделать в 100 раз проще... Не юзайте BJ функции, от них одно зло
Старый 13.11.2011, 03:54
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
FellGuard:
её там быть не должно
Filter(function Nightmare())
Нафига скобки к имени функции присобачил? Короче вот тебе нотариально заверенный вариант:
  if ( CountUnitsInGroup(GetUnitsInRangeOfLocMatching(r, GetUnitLoc(udg_Dante), Filter(function Nightmare))) > 0 ) then
    call SetUnitFacingToFaceUnitTimed( udg_Dante, GroupPickRandomUnit(GetUnitsInRangeOfLocMatching( r, GetUnitLoc(udg_Dante), Filter(function Nightmare))), 0.50 )
  endif 
что оно делает я не стал вдумываться, ибо сонный, но у меня подозрение, что можно сделать в 100 раз проще... Не юзайте BJ функции, от них одно зло
вот она рыба моей мечты!
вот теперь все отлично скомпилировалось, спасибо большое)
Старый 13.11.2011, 03:56
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
Hatsume_Hate,
тут море утечек
вот на код
udg_G,udg_GG это глобальные группы
» Код
function ABU takes unit u,unit c returns real
return Atan2(GetUnitY(u)-GetUnitY(c),GetUnitX(u)-GetUnitX(c))
endfunction

function IsUnitDead takes unit u returns boolean
return GetUnitTypeId(u) == 0 or IsUnitType(u, UNIT_TYPE_DEAD)
endfunction

function cond1 takes nothing returns nothing
local real x = GetUnitX(udg_Dante)
local real y = GetUnitY(udg_Dante)
local integer i = 0
local real r = 50.00
local unit u
loop
exitwhen r >= 700.00
call GroupEnumUnitsInRange(udg_G,x,y,r,null)
loop
set u = FirstOfGroup(udg_G)
if IsUnitEnemy(u,GetOwningPlayer(udg_Dante)) and not IsUnitDead(u) then
set i = i+1
call GroupAddUnit(udg_GG,u)
endif
call GroupRemoveUnit(udg_G,u)
exitwhen u == null
endloop
if i > 0 then
call SetUnitFacingTimed(udg_Dante,ABU(udg_Dante,GroupPickRandomUnit(udg_GG)),.6)
set i = 0
endif
call GroupClear(udg_GG)
set r = r + 50.00
endloop
set u = null
endfunction

function Trig_NearestTarget_Actions takes nothing returns nothing
    if ( GetOrderedUnit() == udg_Dante ) and ( GetIssuedOrderId() == OrderId("holdposition")) then
    call cond1()
    endif
endfunction

Отредактировано 16GB, 13.11.2011 в 16:51.
Старый 13.11.2011, 09:18
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
~16GB:
Hatsume_Hate,
тут море утечек
вот на код
udg_G,udg_GG это глобальные группы
» Код
function ABU takes unit u,unit c returns real
return Atan2(GetUnitY(u)-GetUnitY(c),GetUnitX(u)-GetUnitX(c))
endfunction

function IsUnitDead takes unit u returns boolean
return GetUnitTypeId(u) == 0 or IsUnitType(u, UNIT_TYPE_DEAD)
endfunction

function cond1 takes nothing returns nothing
local real x = GetUnitX(udg_Dante)
local real y = GetUnitY(udg_Dante)
local integer i = 0
local real r = 50.00
local unit u
loop
exitwhen r >= 700.00
call GroupEnumUnitsInRange(udg_G,x,y,r,null)
loop
set u = FirstOfGroup(udg_G)
if IsUnitEnemy(u,GetOwningPlayer(udg_Dante)) and not IsUnitDead(u) then
set i = i+1
call GroupAddUnit(udg_GG,u)
endif
exitwhen u == null
endloop
if i > 0 then
call SetUnitFacingTimed(udg_Dante,ABU(udg_Dante,GroupPickRandomUnit(udg_GG)),.6)
set i = 0
endif
call GroupClear(udg_GG)
set r = r + 50.00
endloop
set u = null
endfunction

function Trig_NearestTarget_Actions takes nothing returns nothing
    if ( GetOrderedUnit() == udg_Dante ) and ( GetIssuedOrderId() == OrderId("holdposition")) then
    call cond1()
    endif
endfunction
хзхз, от использования твоего кода вар подвисает на пол секунды каждый раз при отдаче приказа, при моем коде вар не подлагивает...
Hatsume_Hate добавил:
да и не делает он нужных мне действий ваааще)
Старый 13.11.2011, 16:25
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
ну я не проверял же у меня же нет твоей карты, в том у тебя туча утечек,
как я понял он должен к случайному юниту в радиусе разворачиваться лицом
вроде исправил

Отредактировано 16GB, 13.11.2011 в 16:51.
Старый 13.11.2011, 16:33
Ответ

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

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

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

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



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