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

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

Ответ
 
SantaRu
Blood Moon Orpg
offline
Опыт: 1,184
Активность:
Отрывок помогите сделать на свой вкус
Код:
function MoveUnits takes nothing returns nothing
    local unit     un      = GetEnumUnit()
    local location initpos = GetUnitLoc(un)
    local location movepos = PolarProjectionBJ(initpos, 11, GetUnitFacing(un))
    
    call SetUnitPositionLoc(un, movepos)
    
    call RemoveLocation(initpos)
    call RemoveLocation(movepos)
    set un      = null
    set initpos = null
    set movepos = null
endfunction

function TerrainType takes nothing returns boolean
    return GetTerrainType(GetUnitX(GetFilterUnit()), GetUnitY(GetFilterUnit())) == 'Idki'
endfunction

function SlidePick takes nothing returns nothing
    local group Sliders = CreateGroup()
    
    call GroupEnumUnitsOfType(Sliders, "rifleman", Condition(function TerrainType))
    call ForGroup(Sliders, function MoveUnits)
    
    call DestroyGroup(Sliders)
    set Sliders = null
endfunction

//===================================================
function InitTrig_Slide takes nothing returns nothing
    set gg_trg_Slide = CreateTrigger()
    call TriggerRegisterTimerEventPeriodic(gg_trg_Slide, 0.03)
    call TriggerAddAction(gg_trg_Slide, function SlidePick)
endfunction


вместо refleman'a надо засунуть тип юнитов который есть в глобалке Hero с массивом от 1 до 8 то есть все типы юнитов которые в данный момент будут в переменной Hero[1] Hero[2] и тп, так же тайл 'Idki' поменять на нортрендский лёд. спс аццким жассерам которые мне помогут :)

Отредактировано ShadoW DaemoN, 06.12.2008 в 15:11.
Старый 04.12.2008, 18:37
Vadim

offline
Опыт: 603
Активность:
Код:
function SlidePick takes nothing returns nothing
local group Sliders = CreateGroup()
local integer i = 1
loop
 call GroupEnumUnitsOfType(Sliders, Hero[i], Condition(function TerrainType))
 call ForGroup(Sliders, function MoveUnits)
 //exitwhen Hero[i] == null
 // или....
 //exitwhen Hero[i] == ""
 // или...
 //exitwhen i >= 8// или вместо числа 8 твоя переменная
 set i = i + 1
endloop
call DestroyGroup(Sliders)
set Sliders = null
endfunction


Тут еще бы было неплохо сондитион в переменную запихнуть и там все действия делать, триггер ведь периодический.

Отредактировано Vadim, 05.12.2008 в 18:04.
Старый 04.12.2008, 21:58
alexkill

offline
Опыт: 18,872
Активность:
Думаю, что в твоем случае так будет вернее.
Код:
function SlidePick takes nothing returns nothing
    local integer i = 0
      loop
        exitwhen i>=8
          if Hero[i] != null and GetTerrainType(GetUnitX(Hero[i]), GetUnitY(Hero[i])) == 'Nice' then
            call SetUnitX(Hero[i], GetUnitX(Hero[i])+11*Cos(GetUnitFacing(Hero[i])*0.01745))
            call SetUnitY(Hero[i], GetUnitY(Hero[i])+11*Sin(GetUnitFacing(Hero[i])*0.01745))
          endif  
        set i = i + 1
      endloop
endfunction

function InitTrig_Slide takes nothing returns nothing
    set gg_trg_Slide = CreateTrigger()
    call TriggerRegisterTimerEvent(gg_trg_Slide, 0.04, true)
    call TriggerAddAction(gg_trg_Slide, function SlidePick)
endfunction

Для большей детализации опиши подробнее, кого ты хотел видеть в массиве Hero[] (юнитов одного типа или т.п.).
Старый 09.12.2008, 10:45
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
Код:
function MoveUnits takes nothing returns nothing
    local unit     un      = GetEnumUnit()
    call SetUnitX(un, (GetUnitX(un) + 11 * CosBJ(GetUnitFacing(un)))
    call SetUnitY(un, (GetUnitY(un) + 11 * SinBJ(GetUnitFacing(un)))
    set un      = null
endfunction

function TerrainType takes nothing returns boolean
    return GetTerrainType(GetUnitX(GetFilterUnit()), GetUnitY(GetFilterUnit())) == 'Idki'
endfunction

function SlidePick takes nothing returns nothing
    local group Sliders = CreateGroup()
    local integer i = 1
    loop
    exitwhen GetUnitTypeId(udg_Hero[i]) == null
    call GroupEnumUnitsOfType(Sliders, GetUnitTypeId(udg_Hero[i]), Condition(function TerrainType))
    call ForGroup(Sliders, function MoveUnits)
    set i = i + 1
    endloop
    call DestroyGroup(Sliders)
    set Sliders = null
    set i = 0
endfunction

//===================================================
function InitTrig_Slide takes nothing returns nothing
    set gg_trg_Slide = CreateTrigger()
    call TriggerRegisterTimerEventPeriodic(gg_trg_Slide, 0.03)
    call TriggerAddAction(gg_trg_Slide, function SlidePick)
endfunction


ток с тераином помочь не могу

Отредактировано ELDAR, 10.12.2008 в 04:43.
Старый 09.12.2008, 15:16
alexkill

offline
Опыт: 18,872
Активность:
ELDAR
GroupEnumUnitsOfType() вторым параметром принимает string, а не integer, как у тебя.
Старый 09.12.2008, 16:02
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
Цитата:
Сообщение от alexkill
ELDAR
GroupEnumUnitsOfType() вторым параметром принимает string, а не integer, как у тебя.


ну а если и так то есть преобрпзование к стрингу, имя юнита

ELDAR добавил:
alexkill я как понял ему надо взять всех юнитов данного типа и сделать действие
а у тебя берутся тока юниты записанные в переменную
Старый 10.12.2008, 04:43
alexkill

offline
Опыт: 18,872
Активность:
ELDAR, ну перед этим несложно отобрать всех юнитов данного типа в массив.
Я думаю, что домыслы стоит прекратить до появления автора. Вариантов можно тучу придумать.
Старый 10.12.2008, 10:22
Ответ

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

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

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

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



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