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

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

Ответ
 
iZucken
ШТО
offline
Опыт: 17,960
Активность:
Помощ с кодом
Мне нужно для каждого игрока сложить здоровье всех юнитов типа "золото" в области 512 от всех юнитов взятого игрока типа "сокровищница" и затем установить золото текущее взятого игрока равному полученной сумме

Сделать ето на триггерах никак не выходит. В попытках это сделать я сотворил триггер и перевел его в код, попытался довести до ума уже код но не вышло

Код:
function Trig_Gold_Deposit_Func001Func001001002 takes nothing returns boolean
    return ( GetUnitTypeId(GetFilterUnit()) == 'h000' )
endfunction

function Trig_Gold_Deposit_Func001Func001Func001001003 takes nothing returns boolean
    return ( GetUnitTypeId(GetFilterUnit()) == 'o001' )
endfunction

function Trig_Gold_Deposit_Func001Func001Func001A takes nothing returns nothing
    call SetPlayerStateBJ( GetEnumPlayer(), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetEnumPlayer(), PLAYER_STATE_RESOURCE_GOLD) + R2I(GetUnitStateSwap(UNIT_STATE_LIFE, GetEnumUnit())) ) )
endfunction

function Trig_Gold_Deposit_Func001Func001A takes nothing returns nothing
    call ForGroupBJ( GetUnitsInRangeOfLocMatching(512, GetUnitLoc( "ЮНИТ" ), Condition(function Trig_Gold_Deposit_Func001Func001Func001001003)), function Trig_Gold_Deposit_Func001Func001Func001A )
endfunction

function Trig_Gold_Deposit_Func001A takes nothing returns nothing
    call ForGroupBJ( GetUnitsOfPlayerMatching(GetEnumPlayer(), Condition(Trig_Gold_Deposit_Func001Func001Func001001003)), function Trig_Gold_Deposit_Func001Func001A )
endfunction

function Trig_Gold_Deposit_Actions takes nothing returns nothing
    call ForForce( GetPlayersAll(), function Trig_Gold_Deposit_Func001A )
endfunction

//===========================================================================
function InitTrig_Gold_Deposit takes nothing returns nothing
    set gg_trg_Gold_Deposit = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Gold_Deposit, 1.00 )
    call TriggerAddAction( gg_trg_Gold_Deposit, function Trig_Gold_Deposit_Actions )
endfunction
Старый 06.05.2009, 18:41
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
Код:
function SGMF takes nothing returns boolean
return GetUnitTypeId(GetEnumUnit()) == 'h000' // COKPOBuLLI,HuLI,A
endfunction

function SGSF takes nothing returns boolean
return GetUnitTypeId(GetEnumUnit()) == 'h001' //3OJIOTO
endfunction

function Trig_SetGold_Actions takes nothing returns nothing
local group mg = CreateGroup()
local group sg = CreateGroup()
local unit mu
local unit su
local integer i = 0
local real gold
loop
    set gold = 0
    call GroupEnumUnitsOfPlayer(mg,Player(i),Condition(function SGMF))
    loop
        set mu = FirstOfGroup(mg)
        exitwhen mu == null
        call GroupRemoveUnit(mg,mu)
        call GroupEnumUnitsInRange(sg,GetUnitX(mu),GetUnitY(mu),512,Condition(function SGSF))
        loop
            set su = FirstOfGroup(sg)
            exitwhen su == null
            call GroupRemoveUnit(sg,su)
            set gold = gold + GetUnitState(su,UNIT_STATE_LIFE)
        endloop
    endloop
    call SetPlayerState(Player(i),PLAYER_STATE_GOLD_GATHERED,R2I(gold))
    set i = i + 1
    exitwhen i > 3
endloop
call DestroyGroup(mg)
call DestroyGroup(sg)
endfunction
Старый 11.05.2009, 20:00
Ответ

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

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

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

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



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