Добавлен 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
Также не вызывает десинхронизации следующее, проверял лично.