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

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

Ответ
 
Daemonik

offline
Опыт: 5,084
Активность:
Shared vision
function Trig_All_See_Actions takes nothing returns nothing
    local player p
    local player p1
    local integer i = 0
    local integer i1 = 0
    // 1
    set p = Player(i)
    set p1 = Player(i1)   
    loop
        loop
            if (p == p1) then
                return
            endif
            call SetPlayerAlliance(p, p1, ALLIANCE_PASSIVE, true)
            call SetPlayerAlliance(p, p1, ALLIANCE_HELP_REQUEST, true)
            call SetPlayerAlliance(p, p1, ALLIANCE_HELP_RESPONSE, true)
            call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_XP, true)
            call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_SPELLS, true)
            call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_VISION, true)
            call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_CONTROL, false)
            call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_ADVANCED_CONTROL, false)
            set i1 = i1 + 1
            exitwhen i1 == 7
        endloop
        set i1 = 0
        set i = i + 1
        exitwhen i == 7
    endloop
    call DestroyTrigger(GetTriggeringTrigger())
endfunction

//===========================================================================
function InitTrig_All_See takes nothing returns nothing
    local trigger t = CreateTrigger()
    call TriggerRegisterTimerEvent(t, 0.01, false)
    call TriggerAddAction( t, function Trig_All_See_Actions )
    set t = null
endfunction
Что здесь не так?
Старый 01.08.2009, 20:53
J
expert
offline
Опыт: 48,447
Активность:
function Trig_All_See_Actions takes nothing returns nothing
    local player p
    local player p1
    local integer i = 0
    local integer i1
    loop
        set p = Player(i)
        set i1 = 0
        loop
            if (i != i1) then
                set p1 = Player(i1)   
                call SetPlayerAlliance(p, p1, ALLIANCE_PASSIVE, true)
                call SetPlayerAlliance(p, p1, ALLIANCE_HELP_REQUEST, true)
                call SetPlayerAlliance(p, p1, ALLIANCE_HELP_RESPONSE, true)
                call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_XP, true)
                call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_SPELLS, true)
                call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_VISION, true)
                call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_CONTROL, false)
                call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_ADVANCED_CONTROL, false)
            endif
            exitwhen i1 == 6
            set i1 = i1 + 1
        endloop
        exitwhen i == 6
        set i = i + 1
    endloop
    call DestroyTrigger(GetTriggeringTrigger())
endfunction

Отредактировано J, 02.08.2009 в 20:40.
Старый 01.08.2009, 21:16
Daemonik

offline
Опыт: 5,084
Активность:
Ну была такая мысль.
Daemonik добавил:
Эххх. Не помогло(
Старый 02.08.2009, 00:03
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
call SetPlayerAlliance(p, p1, ALLIANCE_SHARED_CONTROL, true)
Старый 02.08.2009, 01:08
Daemonik

offline
Опыт: 5,084
Активность:
Зачем мне shared control? Мне shared vision нужен.
Старый 02.08.2009, 14:56
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Daemonik
  1. У тебя триггер на каждого игрока расчитан? А то ты его уничтожаешь в конце (но 1 раз должен срабатывать).
  2. Если по триггеру на игрока, то цикл нужен всего 1.
Старый 02.08.2009, 19:25
Daemonik

offline
Опыт: 5,084
Активность:
Триггер расчитан на 8 игроков. После окончания цикла они должны видеть друг друга всю игру.
Daemonik добавил:
Изначально стоит такой
» триггер:
function Trig_All_See_Actions takes nothing returns nothing
    call SetPlayerAllianceStateBJ(Player(0) , Player(1) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(0) , Player(2) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(0) , Player(3) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(0) , Player(4) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(0) , Player(5) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(0) , Player(6) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(0) , Player(7) , bj_ALLIANCE_ALLIED_VISION)
    // 2
    call SetPlayerAllianceStateBJ(Player(1) , Player(0) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(1) , Player(2) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(1) , Player(3) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(1) , Player(4) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(1) , Player(5) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(1) , Player(6) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(1) , Player(7) , bj_ALLIANCE_ALLIED_VISION)
    // 3
    call SetPlayerAllianceStateBJ(Player(2) , Player(0) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(2) , Player(1) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(2) , Player(3) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(2) , Player(4) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(2) , Player(5) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(2) , Player(6) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(2) , Player(7) , bj_ALLIANCE_ALLIED_VISION)
    // 4
    call SetPlayerAllianceStateBJ(Player(3) , Player(0) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(3) , Player(1) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(3) , Player(2) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(3) , Player(4) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(3) , Player(5) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(3) , Player(6) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(3) , Player(7) , bj_ALLIANCE_ALLIED_VISION)
    // 5
    call SetPlayerAllianceStateBJ(Player(4) , Player(0) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(4) , Player(1) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(4) , Player(2) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(4) , Player(3) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(4) , Player(5) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(4) , Player(6) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(4) , Player(7) , bj_ALLIANCE_ALLIED_VISION)
    // 6
    call SetPlayerAllianceStateBJ(Player(5) , Player(0) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(5) , Player(1) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(5) , Player(2) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(5) , Player(3) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(5) , Player(4) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(5) , Player(6) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(5) , Player(7) , bj_ALLIANCE_ALLIED_VISION)
    // 7
    call SetPlayerAllianceStateBJ(Player(6) , Player(0) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(6) , Player(1) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(6) , Player(2) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(6) , Player(3) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(6) , Player(4) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(6) , Player(5) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(6) , Player(7) , bj_ALLIANCE_ALLIED_VISION)
    // 8
    call SetPlayerAllianceStateBJ(Player(7) , Player(0) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(7) , Player(1) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(7) , Player(2) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(7) , Player(3) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(7) , Player(4) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(7) , Player(5) , bj_ALLIANCE_ALLIED_VISION)
    call SetPlayerAllianceStateBJ(Player(7) , Player(6) , bj_ALLIANCE_ALLIED_VISION)
endfunction

//===========================================================================
function InitTrig_All_See takes nothing returns nothing
    local trigger t= CreateTrigger()
    call TriggerRegisterTimerEvent(t , 0.01 , false)
    call TriggerAddAction(t , function Trig_All_See_Actions)
    set t = null
endfunction
Но он абсолютно не оптимален.
Старый 02.08.2009, 20:00
ToChilo
■□□□□
offline
Опыт: 356
Активность:
Код:
if (p == p1) then
    return
endif

здесь у тебя вылетает из функции

юзай вот это

Код:
local integer i = 0
local integer j = 0

loop
      exitwhen i > 6
      loop
        exitwhen j > 6
        if i != j then
          call SetPlayerAlliance( Player(i), Player(j), ALLIANCE_PASSIVE, true )
          call SetPlayerAlliance( Player(i), Player(j), ALLIANCE_HELP_REQUEST, true )
          call SetPlayerAlliance( Player(i), Player(j), ALLIANCE_HELP_RESPONSE, true )
          call SetPlayerAlliance( Player(i), Player(j), ALLIANCE_SHARED_XP, true )
          call SetPlayerAlliance( Player(i), Player(j), ALLIANCE_SHARED_SPELLS, true )
          call SetPlayerAlliance( Player(i), Player(j), ALLIANCE_SHARED_VISION, true )
          call SetPlayerAlliance( Player(i), Player(j), ALLIANCE_SHARED_CONTROL, false )
          call SetPlayerAlliance( Player(i), Player(j), ALLIANCE_SHARED_ADVANCED_CONTROL, false )
        endif
        set j = j + 1
      endloop
      set j = 0
      set i = i + 1
endloop

Отредактировано ToChilo, 02.08.2009 в 20:26.
Старый 02.08.2009, 20:15
Daemonik

offline
Опыт: 5,084
Активность:
Ок попробую.
Старый 02.08.2009, 20:22
J
expert
offline
Опыт: 48,447
Активность:
if (p == p1) then
    return
endif
о боже, как я мог это проглядеть...
J добавил:
я поправил второй пост
Старый 02.08.2009, 20:40
Ответ

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

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

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

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



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