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

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

Ответ
 
prog

offline
Опыт: 32,865
Активность:
ноги проблемы растут из отлова пробела - ты принимаешь решение о добавлении способности на основании локальных данных, полученных через GetLocalPlayer. Естественно это вызывает десинк.
Старый 14.03.2012, 09:03
ScorpioT1000
Работаем
online
Опыт: отключен
prog, автор вроде говорил, что
ВСЕ функции вызываются без GetLocalPlayer.
Старый 14.03.2012, 14:02
vladfaust

offline
Опыт: 12,714
Активность:
prog,
отлова пробела
!okay!
Даже Hellfim так и не смог это рещить. Тему можно закрыть...
Старый 14.03.2012, 14:37
ScorpioT1000
Работаем
online
Опыт: отключен
Выложи ты код здесь, у меня на работе нет инструментария исследовать карту, а дома куча другой работы.
Старый 14.03.2012, 14:43
XOR

offline
Опыт: 38,159
Активность:
чо ты делаешь, после нажатия пробела хочешь абилку юзать ? в мультиплеере всегда будет десинкать, в сингле - сколько хочешь юзай
Старый 14.03.2012, 14:46
ScorpioT1000
Работаем
online
Опыт: отключен
XimikS, любое событие можно синхронизировать со всеми, вопрос в скорости
Старый 14.03.2012, 15:04
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
XimikS, нужен мультиплеер.
ScorpioT1000,
» code
library SpaceDetect initializer init {
    #include "cj_types_priv.j"
    #define {
        private TIMER_PERIOD = 0.035
        private FILTER = 0.003
    }

    private real x[], y[], oldX[], oldY[]
    private timer sdt = CreateTimer()

    void ActionsForPlayers(int i) {
	//здесь проблема
    }

    private void onTimer() {
        real newX
        real newY
        int i = 0 
        whilenot (i==11) {
            if (GetLocalPlayer() == Player(i)) {
                newX = GetCameraTargetPositionX()
                newY = GetCameraTargetPositionY()
            }
            
            if ((newX == x[i]) && (newY == y[i])) {
                if GetLocalPlayer() == Player(i) {
                    PanCameraToTimed(oldX[i], oldY[i],0.)
                }
                ActionsForPlayers(i)
            else
                if (GetLocalPlayer() == Player(i)) {
                    x[i] = newX+FILTER
                    y[i] = newY+FILTER
                    SetCameraQuickPosition(x[i], y[i])
                }
            }
            oldX[i] = newX
            oldY[i] = newY
            i++
        }
    }

    private void init () {
        int i = 0
        whilenot (i==11) {
            if (GetLocalPlayer() == Player(i)) {
                x[i] = GetCameraTargetPositionX() + FILTER
                y[i] = GetCameraTargetPositionY() + FILTER
                SetCameraQuickPosition(x[i], y[i])
            }
            i++
        }
        TimerStart(sdt, TIMER_PERIOD, true, function onTimer)
    }
}
В функции ActionsForPlayers надо создать хендл, из-за того что там заюзан GetLocalPlayer() на разных компах разные значения у переменных массива и всё такое.

Отредактировано XimikS, 14.03.2012 в 15:58.
Старый 14.03.2012, 15:52
ScorpioT1000
Работаем
online
Опыт: отключен
получается что автор наврал с локальными функциями =\
Старый 14.03.2012, 16:06
Ответ

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

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

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

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



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