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

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

Ответ
 
ivanbakavan
waiting Warcraft IV
offline
Опыт: отключен
Ошибка
Я нуб в джассе. Надо, чтоб создавало 9 пехотинцев для каждого игрока, даже, если игроков нет в игре.
Не создаёт вообще. :\
Код:
function Trig_TP_v_arenu_Func007Func001C takes nothing returns boolean
    if ( not ( GetOwningPlayer(GetEnumUnit()) != Player(10) ) ) then
        return false
    endif
    if ( not ( GetOwningPlayer(GetEnumUnit()) != Player(11) ) ) then
        return false
    endif
    if ( not ( GetOwningPlayer(GetEnumUnit()) != Player(9) ) ) then
        return false
    endif
    if ( not ( IsUnitType(GetEnumUnit(), UNIT_TYPE_HERO) == true ) ) then
        return false
    endif
    return true
endfunction

function Trig_TP_v_arenu_Func007A takes nothing returns nothing
local integer i = 0
    if ( Trig_TP_v_arenu_Func007Func001C() ) then
        call UnitAddAbilityBJ( 'AEbl', GetEnumUnit() )
        call PanCameraToTimedLocForPlayer( GetOwningPlayer(GetEnumUnit()), GetUnitLoc(GetEnumUnit()), 1.00 )
    else
    endif
endfunction

function Trig_TP_v_arenu_Actions takes nothing returns nothing
    call PauseAllUnitsBJ( true )
    set udg_Chislo = 1
    call DestroyTimerDialogBJ( GetLastCreatedTimerDialogBJ() )
    // Ýòî íå âàæíî
    call CreateFogModifierRectBJ( true, Player(0), FOG_OF_WAR_VISIBLE, gg_rct_Ograjdennaia_oblas )
    // Ýòî âàæíî
    call ForGroupBJ( GetUnitsInRectAll(GetPlayableMapRect()), function Trig_TP_v_arenu_Func007A )
    call TriggerSleepAction( 5.00 )
    call CreateNUnitsAtLoc( 1, 'Hmkg', Player(11), GetRectCenter(gg_rct_YjasnogoOtKotorogoNadoSebatsaSuda), bj_UNIT_FACING )
    set udg_TotSamiy = GetLastCreatedUnit()
endfunction

//===========================================================================
function InitTrig_TP_v_arenu takes nothing returns nothing
    set gg_trg_TP_v_arenu = CreateTrigger(  )
    call TriggerRegisterTimerExpireEventBJ( gg_trg_TP_v_arenu, udg_Taimer )
    call TriggerAddAction( gg_trg_TP_v_arenu, function Trig_TP_v_arenu_Actions )
endfunction
[+] замечание от Hanabishi: Дубль темы.
Старый 30.07.2011, 22:59
Wortecs

offline
Опыт: 3,146
Активность:
Бессмысленный тригер. Если тебе надо чтоб создавало просто пройдись циклом по номеру игрока "Player(11)"
Старый 30.07.2011, 23:15
silumin

offline
Опыт: 11,153
Активность:
Цитата:
Сообщение от SSrunX
Я нуб в джассе.
Тогда смысл конвертить триггер в джасс, если можно выложить скрин триггера?

Да, это требует больше манипуляций, но ты не будешь выглядеть глупо, а участникам форума, желающим тебе помочь, не нужно будет ковыряться в жудком нагромождении функций и ифов в попытках понять где зарыта собака...
Старый 30.07.2011, 23:56
Msey
????
offline
Опыт: 67,346
Активность:
SSrunX:
Я нуб в джассе.
А гуи уже не в моде? твой триггер делается в несколько строк
Старый 31.07.2011, 06:20
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Лучше выложи гуи, а то этот бред никто не будет разбирать.
Старый 31.07.2011, 11:48
Oxygen D
Вернулся
offline
Опыт: 5,180
Активность:
Вставь в шапку не морочь людям голову и вызывай когда хочешь. И будет радость.

function units takes integer id, real x, real y, real face,boolean solo,integer pl returns nothing
local integer i = 0
if solo {
set bj_lastCreatedUnit = CreateUnit(Player(pl),id,x,y,face)
else

loop
exitwhen i > bj_MAX_PLAYER_SLOTS
set bj_lastCreatedUnit = CreateUnit(Player(i),id,x,y,face)
set  i = i+1
endloop
}
endfunction
аргументы такие равкод юнита,х,y,взгляд, да/нет нужно для того если ты хочешь создать юнит для 1 игрока. Если да то создает для 1 игрока если нет для всех. И пследнее integer номер игрока (нужен только если создаешь для 1, но указывать надо всегда в любом случае)
вот вставь в шапку и вызывай когда тебе нужно и будет радость.

call units('h000',-155.00,368.00,90.00,false,0) //если false то оставляй в конце 0, он не на, что не влияет.
или

call units('h000',-155.00,368.00,90.00,true,0) //если true то ставь в конце номер игрока. Учти нумерация идет с 0.

Отредактировано Oxygen D, 04.08.2011 в 17:42.
Старый 04.08.2011, 17:33
Ответ

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

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

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

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



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