Добавлен biridius
Вобщем моя карта как и ожидалось вылетает в мультиплеере
Пройдясь поиском по всем триггерам ища GetLocalPlayer, нашел вот эти примеры (знаю, код кривой).
Все чисто визуальщина, никаких хендлов создавать не должно.
Что из этого вызывает десинк?
Пройдясь поиском по всем триггерам ища 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)
}
}
Принятый ответ
Локейшены нельзя двигать локально, глобальный хендл. Двигай для всех и бери высоту для всех, ибо глобал параметры.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. biridius
зря мультиплеер пилил
Я правда хочу понять
1, Вот я беру этот индекс игрока на чьей машине сейчас выполняется этот код
2, Беру из соответствующего этому игроку экземпляра структуры число
3, и ставлю расстояние камеры.
Почему десинк?
Ред. PT153
Точно 4 и 8.
Убери 4 и 8 и посмотри на наличие разрыва соединения после этого.
Ред. Unryze
Ред. biridius
Tailer007, спс
Ред. PT153
Прочитали бы сначала эту статью, прежде чем такое утверждать.
Ред. biridius
или только если это внутри иф-блока с GetLocalPlayer в условии?
Ред. PT153
Также не вызывает десинхронизации следующее, проверял лично.
Ред. biridius
Ред. Unryze
PT153: Совершенно не заметил, да, я похоже слишком выше гор смотрел. Виноват :)
biridius: После удаления движения локации перестало десинкать?
Ред. biridius
там вроде сразу обновилось
но в сингле тестить смысла нет, так то она и так работала в синглплеере
Ред. Unryze
PT153: Лайк поставить не могу >_< Да, как вариант, правда лично у меня он отказался работать, но ранее работал.
проблему не вижу, потмоу что написано это не на жассе
MoveLocation(temp_zloc,x,y)
не стоит делать если эти координаты локальные
Ред. biridius
на хайве ответили, это все бж функция которая убирает fade filter, там создается таймер