Вобщем моя карта как и ожидалось вылетает в мультиплеере
Пройдясь поиском по всем триггерам ища GetLocalPlayer, нашел вот эти примеры (знаю, код кривой).
Все чисто визуальщина, никаких хендлов создавать не должно.
Что из этого вызывает десинк?
//1 установить цель камеры
if GetLocalPlayer()==Player(i) {SetCameraTargetController(this.dummy,0,0,false)}

//2 видимость тексттага
SetTextTagVisibility(tt, IAbsBJ(View[GetPlayerId(GetLocalPlayer())].battle_index) == a)

//3 установить параметры камеры
        int j=GetPlayerId(GetLocalPlayer())
        SetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK,    View[j].pAngle,0)
        SetCameraField(CAMERA_FIELD_ZOFFSET,            View[j].pZ - GetZ(View[j].X, View[j].Y),0)
        SetCameraField(CAMERA_FIELD_TARGET_DISTANCE,    View[j].pRange,0)
        SetCameraField(CAMERA_FIELD_ROTATION,           View[j].pFacing,0)
 // при этом
    real GetZ(real x, real y)
    {
        MoveLocation(temp_zloc,x,y)
        return GetLocationZ(temp_zloc)
    }

//4 установить прозрачность юнита
            if GetLocalPlayer() == GetOwningPlayer(mdl) {SetUnitVertexColor(mdl, 255, 255, 255, 120)}

//5 установить громкость звука
            if IAbsBJ(View[GetPlayerId(GetLocalPlayer())].battle_index) != arena
            {
                SetSoundVolume(speech, 0)
            }

//6 кино-фильтр, картинка на весь экран; раньше спрашивал, сказали не десинкает
	if IAbsBJ(View[GetPlayerId(GetLocalPlayer())].battle_index) == index
            {
                CinematicFadeCommonBJ(100, 100, 100, time * 0.5, what, 100, 0)
                FinishCinematicFadeAfterBJ(time)
            }

//7 отобразить мультиборд игроку
	MultiboardDisplay(mb[p], GetLocalPlayer() == Player(p))

//8 опять прозрачность юнита, но по другому; переменная дальше никем не используется
            a=255; if GetLocalPlayer()!=Player(p) {a=0}
            SetUnitVertexColor(preview[p],255,255,255,a)

//9 опять видимость тексттага, но по другому
            if GetLocalPlayer()==Player(p)
            {
                SetTextTagVisibility(nametag[p], true)
            }

//10 опять отображение мультибордов
// скрыть все мультиборды кроме одного
// уже переделал это безобразие, но вдруг десинк был из-за него?
            if Player(i) == GetLocalPlayer()
            {
                if here[i] and !ai[i] and IAbsBJ(View[i].battle_index) == a.index and a.intro<0
                {
                    if i==a.pl[1].owner {
                        MultiboardDisplay(mb[a.pl[1].owner], true)
                    }
                    else
                    {
                        MultiboardDisplay(mb[a.pl[0].owner], true)
                    }
                }
                else
                {
                        MultiboardDisplay(mb[a.pl[0].owner], false)
                        MultiboardDisplay(mb[a.pl[1].owner], false)
                }
            }

Принятый ответ

Локейшены нельзя двигать локально, глобальный хендл. Двигай для всех и бери высоту для всех, ибо глобал параметры.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
21
6 лет назад
Отредактирован biridius
0
пока так
        bool array isshown
        for(i=0;i<PLAYERS;i++) {isshown[i]=false}
        i=GetPlayerId(GetLocalPlayer())
        if here[i] and !ai[i] and IAbsBJ(View[i].battle_index) == a.index and a.intro<0
                {
                    if i==a.pl[1].owner {
                        isshown[a.pl[1].owner] = true
                    }
                    else
                    {
                        isshown[a.pl[0].owner] = true
                    }
                }
        for(i=0;i<PLAYERS;i++) {MultiboardDisplay(mb[i], isshown[i])}
PT153, что-то же вызывает; с тексттагом на всякий перестрахуюсь
3
28
6 лет назад
3
что-то же вызывает
Я думаю, проблема вся была в передвижении локаций.
0
20
6 лет назад
Отредактирован Unryze
0
PT153:
Вот SetTextTagVisibility это при использовании с локальным игроком вызовет десинк, потому что мы указываем "сложные" данные, которые обрабатываются по-разному у всех. То есть правильнее создать тексттаг всем, но заменить текст, который будет показан. Тогда десинка не будет.
Что за чушь? У меня всё работает с этим. Скрытие мультибоардов тоже не вызывает десинка.
Прочитали бы сначала эту статью, прежде чем такое утверждать.
Грубить было не обязательно, я поспешил с написанием, да. Ещё умудрился вместо лайка - дизлайк поставить ))0
PT153:
что-то же вызывает
Я думаю, проблема вся была в передвижении локаций.
Совершенно не заметил, да, я похоже слишком выше гор смотрел. Виноват :)
biridius:
пока так
        bool array isshown
        for(i=0;i<PLAYERS;i++) {isshown[i]=false}
        i=GetPlayerId(GetLocalPlayer())
        if here[i] and !ai[i] and IAbsBJ(View[i].battle_index) == a.index and a.intro<0
                {
                    if i==a.pl[1].owner {
                        isshown[a.pl[1].owner] = true
                    }
                    else
                    {
                        isshown[a.pl[0].owner] = true
                    }
                }
        for(i=0;i<PLAYERS;i++) {MultiboardDisplay(mb[i], isshown[i])}
PT153, что-то же вызывает; с тексттагом на всякий перестрахуюсь
После удаления движения локации перестало десинкать?
0
21
6 лет назад
0
Tailer007, хз, надо тестить а где
1
28
6 лет назад
1
Грубить было не обязательно, я поспешил с написанием, да. Ещё умудрился вместо лайка - дизлайк поставить ))0
Прошу прощения, бывает. А ещё Вы вставили 2 одинаковых скриншота в предыдущее сообщение.
0
20
6 лет назад
0
PT153:
Грубить было не обязательно, я поспешил с написанием, да. Ещё умудрился вместо лайка - дизлайк поставить ))0
Прошу прощения, бывает. А ещё Вы вставили 2 одинаковых скриншота в предыдущее сообщение.
Да, заметил, но поправить не могу, уже поздно :(
biridius:
Tailer007, хз, надо тестить а где
Можешь собрать тест версию карты (даже пустую) и запустить в одиночной игре. Но по идее, PT153 прав и проблема была только в движении локации, в остальном, если дашь мне код чистым Jass'ом, то смогу всё написать как нужно и проверить сам (я не использую cJass/vJass).
0
21
6 лет назад
0
Tailer007, кода больно много в карте чтобы переводить в обычный джасс, в прнципе проблема может быть в чем угодно, м.б. у людей фаталит от ExecuteFunc либо при загрузке звуков (у самого фаталило, пока не замедлил подгрузку вдвое)
буду ждать баг репортов в коментах к карте тут и на хайве, обновил тут (пока на утверждении) и там
0
20
6 лет назад
0
biridius:
Tailer007, кода больно много в карте чтобы переводить в обычный джасс, в прнципе проблема может быть в чем угодно, м.б. у людей фаталит от ExecuteFunc либо при загрузке звуков (у самого фаталило, пока не замедлил подгрузку вдвое)
буду ждать баг репортов в коментах к карте тут и на хайве, обновил тут (пока на утверждении) и там
Можешь дать ссылку на карту? Или она у тебя в ресурсах добавлена?
0
21
6 лет назад
Отредактирован biridius
0
Tailer007, www.hiveworkshop.com/threads/fighting-for-azeroth-3d.305111
там вроде сразу обновилось
но в сингле тестить смысла нет, так то она и так работала в синглплеере
0
28
6 лет назад
0
Я уже как-то советовал. Можно поставить JNPG с эмуляцией мультиплеера, сам я этим пользовался разок.
0
20
6 лет назад
Отредактирован Unryze
0
biridius:
Tailer007, www.hiveworkshop.com/threads/fighting-for-azeroth-3d.305111
там вроде сразу обновилось
но в сингле тестить смысла нет, так то она и так работала в синглплеере
Мне нужно было код почитать, 20 раз используется GetLocalPlayer, а проверять в принципе можно используя патч 1.26 + KLoader для эмуляции нескольких окон Вар 3.
В целом уже по идее десинхронизации быть не должно. Все использования у тебя остались безопасные и не имеющие проблем.
PT153:
Я уже как-то советовал. Можно поставить JNPG с эмуляцией мультиплеера, сам я этим пользовался разок.
Лайк поставить не могу >_< Да, как вариант, правда лично у меня он отказался работать, но ранее работал.
Загрузил картинку со всеми использованиями, а то почему-то загрузить скриншот не даёт.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.