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

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

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

offline
Опыт: 231
Активность:
Иконка в мультиборде
У меня врпрос - есть вот такой тригер
function Trig_icona_Func001C takes nothing returns boolean
    if ( not ( GetPlayerSlotState(Player(0)) == PLAYER_SLOT_STATE_PLAYING ) ) then
        return false
    endif
    if ( not ( GroupPickRandomUnit(GetUnitsOfTypeIdAll('uaco')) == GroupPickRandomUnit(GetUnitsOfPlayerAll(Player(0))) ) ) then
        return false
    endif
    return true
endfunction

function Trig_icona_Func002C takes nothing returns boolean
    if ( not ( GetPlayerSlotState(Player(1)) == PLAYER_SLOT_STATE_PLAYING ) ) then
        return false
    endif
    if ( not ( GroupPickRandomUnit(GetUnitsOfTypeIdAll('uaco')) == GroupPickRandomUnit(GetUnitsOfPlayerAll(Player(1))) ) ) then
        return false
    endif
    return true
endfunction

function Trig_icona_Func003C takes nothing returns boolean
    if ( not ( GetPlayerSlotState(Player(2)) == PLAYER_SLOT_STATE_PLAYING ) ) then
        return false
    endif
    if ( not ( GroupPickRandomUnit(GetUnitsOfTypeIdAll('uaco')) == GroupPickRandomUnit(GetUnitsOfPlayerAll(Player(2))) ) ) then
        return false
    endif
    return true
endfunction

function Trig_icona_Func004C takes nothing returns boolean
    if ( not ( GetPlayerSlotState(Player(3)) == PLAYER_SLOT_STATE_PLAYING ) ) then
        return false
    endif
    if ( not ( GroupPickRandomUnit(GetUnitsOfTypeIdAll('uaco')) == GroupPickRandomUnit(GetUnitsOfPlayerAll(Player(3))) ) ) then
        return false
    endif
    return true
endfunction

function Trig_icona_Func005C takes nothing returns boolean
    if ( not ( GetPlayerSlotState(Player(4)) == PLAYER_SLOT_STATE_PLAYING ) ) then
        return false
    endif
    if ( not ( GroupPickRandomUnit(GetUnitsOfTypeIdAll('uaco')) == GroupPickRandomUnit(GetUnitsOfPlayerAll(Player(4))) ) ) then
        return false
    endif
    return true
endfunction

function Trig_icona_Func006C takes nothing returns boolean
    if ( not ( GetPlayerSlotState(Player(5)) == PLAYER_SLOT_STATE_PLAYING ) ) then
        return false
    endif
    if ( not ( GroupPickRandomUnit(GetUnitsOfTypeIdAll('uaco')) == GroupPickRandomUnit(GetUnitsOfPlayerAll(Player(5))) ) ) then
        return false
    endif
    return true
endfunction

function Trig_icona_Func007C takes nothing returns boolean
    if ( not ( GetPlayerSlotState(Player(6)) == PLAYER_SLOT_STATE_PLAYING ) ) then
        return false
    endif
    if ( not ( GroupPickRandomUnit(GetUnitsOfTypeIdAll('uaco')) == GroupPickRandomUnit(GetUnitsOfPlayerAll(Player(6))) ) ) then
        return false
    endif
    return true
endfunction

function Trig_icona_Func008C takes nothing returns boolean
    if ( not ( GetPlayerSlotState(Player(7)) == PLAYER_SLOT_STATE_PLAYING ) ) then
        return false
    endif
    if ( not ( GroupPickRandomUnit(GetUnitsOfTypeIdAll('uaco')) == GroupPickRandomUnit(GetUnitsOfPlayerAll(Player(7))) ) ) then
        return false
    endif
    return true
endfunction

function Trig_icona_Actions takes nothing returns nothing
    if ( Trig_icona_Func001C() ) then
        call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, 2, "ReplaceableTextures\\CommandButtons\\BTNEarthBrewmaster.blp" )
    else
        call DoNothing(  )
    endif
    if ( Trig_icona_Func002C() ) then
        call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, 3, "ReplaceableTextures\\CommandButtons\\BTNEarthBrewmaster.blp" )
    else
        call DoNothing(  )
    endif
    if ( Trig_icona_Func003C() ) then
        call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, 4, "ReplaceableTextures\\CommandButtons\\BTNEarthBrewmaster.blp" )
    else
        call DoNothing(  )
    endif
    if ( Trig_icona_Func004C() ) then
        call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, 5, "ReplaceableTextures\\CommandButtons\\BTNEarthBrewmaster.blp" )
    else
        call DoNothing(  )
    endif
    if ( Trig_icona_Func005C() ) then
        call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, 6, "ReplaceableTextures\\CommandButtons\\BTNEarthBrewmaster.blp" )
    else
        call DoNothing(  )
    endif
    if ( Trig_icona_Func006C() ) then
        call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, 7, "ReplaceableTextures\\CommandButtons\\BTNEarthBrewmaster.blp" )
    else
        call DoNothing(  )
    endif
    if ( Trig_icona_Func007C() ) then
        call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, 8, "ReplaceableTextures\\CommandButtons\\BTNEarthBrewmaster.blp" )
    else
        call DoNothing(  )
    endif
    if ( Trig_icona_Func008C() ) then
        call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, 9, "ReplaceableTextures\\CommandButtons\\BTNEarthBrewmaster.blp" )
    else
        call DoNothing(  )
    endif
endfunction

//===========================================================================
function InitTrig_icona takes nothing returns nothing
    set gg_trg_icona = CreateTrigger(  )
    call DisableTrigger( gg_trg_icona )
    call TriggerRegisterTimerEventPeriodic( gg_trg_icona, 1.00 )
    call TriggerAddAction( gg_trg_icona, function Trig_icona_Actions )
endfunction
ну так вот дело в том что он не всегда срабатывает для игрока который играет ( тригер меняет иконку в мультиборде )
Как мне зделать чтобы таких осечек не было ???

Отредактировано alexkill, 10.12.2009 в 11:05.
Старый 10.12.2009, 08:58
and_y87
Тру Кодер
offline
Опыт: 21,030
Активность:
Наверно это из-за рандомного просмотра юнита... Берет не того кого ты задумал...
Старый 10.12.2009, 09:23
BuGGaga

offline
Опыт: 231
Активность:
нет
каждую 1 сек игрового времени,
если все условия верны то сделать :
игрок красный ровно играет
выбрать случайного юнита из типы юнитов обычный TD( Обычный TD - это мой юнит ) равно случайный юнит принадлежащий игроку красный
то действия
меню паузы заменить иконку ( это я по проще )
иначе действия ничего не делать
И так для всех 8 игроков ))
Короче такая хрень что это все работает но когда все 8 игроков зразу играют то у кого то одного иконка не меняеться и я не знаю как сделать чтобы у всех срабатывало !!!
Старый 10.12.2009, 10:01
Stefler
MCA
offline
Опыт: 10,457
Активность:
У тя через цикл идет проверка играет ли игрок и если "да", то менять иконку или как?! -_-
Старый 10.12.2009, 10:03
BuGGaga

offline
Опыт: 231
Активность:
я с верху написал >_<
если все условия верны то сделать :
игрок красный ровно играет
выбрать случайного юнита из типы юнитов обычный TD( Обычный TD - это мой юнит ) равно случайный юнит принадлежащий игроку красный
Старый 10.12.2009, 10:14
and_y87
Тру Кодер
offline
Опыт: 21,030
Активность:
BuGGaga, и идёт проверка на соответствие типа юнита:
( GroupPickRandomUnit(GetUnitsOfTypeIdAll('uaco'))
вот вроде ошибка
Старый 10.12.2009, 10:24
BuGGaga

offline
Опыт: 231
Активность:
Да так , но говорю почему то не всегда срабатывает , я даже усдловие поставил каждую секунду проверять а она если в первый раз иконку не поставила то вобще не ставит всю игру так и играем у 5-7 есть иконка а у остальных нет я даже незнаю че делать. помогите плиз
BuGGaga добавил:
Хм а заменить эти строки то как тогда я же изначально не знаю какого игрок красный возмет перса ( строителя ) условие полюбому нужно ( просто если он возмет именно этого строителя то будет как я написал а если другово то иконка будет другая но тригер там такой же ) Всего два юнита и вот кого возьмет та и иконка ( говорю все работает но только почему т о когда много народа играет то эта вся хрень глючит )
Старый 10.12.2009, 10:38
FunkieFoO

offline
Опыт: 7,159
Активность:
Проверяй наличие игроков в отдельном триге и вноси их в булин массив, потом в этом тригге проверяй верность булинов циклом
Старый 10.12.2009, 10:41
BuGGaga

offline
Опыт: 231
Активность:
мне это идея не очень нравитца во первых сколько условий при чем для каждого игрока надо делать вся это система лагать будет ( говорю мне надо такую систему не длшя одного а для 8 ) а там такая же будет что у 7 активируеться а у 8 нет ( я вот в своем тригере понять не могу - почему если с первого раза не поставидлась иконка у 8 а у семирых поставилась то почему тригер заново не может сработать для восьмого ведь стоит событие каждую 1 секунду проверять !! )
Старый 10.12.2009, 10:49
FunkieFoO

offline
Опыт: 7,159
Активность:
Инициализация-ставишь значения массиву булинов да/нет
ставишь иконки играющим игрокам
отлавливаешь событие выхода из игры всех игроков-удаляешь иконку вышедшему
юзаем КАТы
Старый 10.12.2009, 11:00
BuGGaga

offline
Опыт: 231
Активность:
что такое булины и с чем их едят ?
Старый 10.12.2009, 11:02
FunkieFoO

offline
Опыт: 7,159
Активность:
boolean - переменная имеющая два варианта да/нет, юзаеться для всевозможных проверок.
дорога тебе в ФАК ознакомся с содержанием статей касающихся триггеров
тема исчерпана, имхо
когда она будет исчерпана, решит автор, а не ты - прим. alexkill

Отредактировано alexkill, 10.12.2009 в 13:57.
Старый 10.12.2009, 11:13
BuGGaga

offline
Опыт: 231
Активность:
ахаха - 1 я ни чего не подсвечивал ! кстати кто бы ни сделал так мой код красиво - ему спасибо !
2 я не нуб в картостроении просто всегда делал вот как в этом тригере и сейчас у мя все работает я не прошу мне написать тригер - я спросил почему он глючит и несрабатывает для всех кто играет ! 3 тема не может быть исчерпана просто щас еще много народу спит а может к вечеру зайдут люди и помогут ( надеюсь очень ) мне =) .... И если ты не можешь просто ни чем помоч или не хочешь на такую фигню тратить свое драгоценное время, мог бы просто не обращать на эту тему внимания ,а то начил умными словами бросаться =(
Старый 10.12.2009, 11:20
FunkieFoO

offline
Опыт: 7,159
Активность:
кривая проверка присутствия игрока в игре, сделай как я сказал, в отдельном триггере, инициализироввать массив булинов и по ходу игры его изменять, делая необходимые действия....
Старый 10.12.2009, 11:30
and_y87
Тру Кодер
offline
Опыт: 21,030
Активность:
BuGGaga,
Вот что нить типо такого тебе надо: (это просто оптимизация твоего кода)
» Код
function CPG takes integer i returns boolean
    local integer i
    if ( not ( GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING ) ) then
        return false
    endif
    if ( not ( GroupPickRandomUnit(GetUnitsOfTypeIdAll('uaco')) == GroupPickRandomUnit(GetUnitsOfPlayerAll(Player(i))) ) ) then
        return false
    endif
    return true
    set i = 0
endfunction


function Trig_icona_Actions takes nothing returns nothing
    local integer i = 1
    loop
        exitwhen i < 8

    if ( CPG(i) ) then
        call MultiboardSetItemIconBJ( GetLastCreatedMultiboard(), 1, (i+1), "ReplaceableTextures\\CommandButtons\\BTNEarthBrewmaster.blp" )
    else
        call DoNothing(  )
    endif
        set i = i + 1
    endloop
endfunction

//===========================================================================
function InitTrig_icona takes nothing returns nothing
    set gg_trg_icona = CreateTrigger(  )
    call DisableTrigger( gg_trg_icona )
    call TriggerRegisterTimerEventPeriodic( gg_trg_icona, 1.00 )
    call TriggerAddAction( gg_trg_icona, function Trig_icona_Actions )
endfunction
Старый 10.12.2009, 11:34
BuGGaga

offline
Опыт: 231
Активность:
во только можно это сделать в виде русского тригера а не кодом и на счет переменной как ее назвать и как она по русски называеться в редакторе а то булиан булиан а я нема )))
Старый 10.12.2009, 11:38
and_y87
Тру Кодер
offline
Опыт: 21,030
Активность:
BuGGaga, оптшт лучше что у тебя имеется и что тебе надо?
насколько я понял..
надо сменить иконку если игрок не играет и если у игрока нет определённого юнита?
это так?
Старый 10.12.2009, 11:46
BuGGaga

offline
Опыт: 231
Активность:
короче смысл такой вот зашел в игру игрок в таблице у него уже стоит нейтральная иконка ( это у мя работает ) дальше он может выбрать на выбор путь развития можно выбрать только один ( от типа развития выбираеться нужный перс ( всего два вида развития- то есть всего два перса ) с персом в таблице вместо нейтральной иконки появляеться иконка перса которого он выбрал ( вот тут вот я попросил помощь ) и после того как человек выходит из игры его иконка становиться снова пассивной как и в начале ( это у мя работает ). И так надо для 8 игроков . усё
ну если уж совсем не понятно и для особо одаренных этот метод взял я из доты ( только не надо мне говорить про доту ни чего ) просто моя система с ней похожа )))
Старый 10.12.2009, 11:56
and_y87
Тру Кодер
offline
Опыт: 21,030
Активность:
BuGGaga, тебе это на GUI надо?
Старый 10.12.2009, 12:16
BuGGaga

offline
Опыт: 231
Активность:
да да да
BuGGaga добавил:
MEXAHuK ты сможешь мне помочь ?
Старый 10.12.2009, 21:05
Закрытая тема

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

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

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

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



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