Имеется код
gamecache gameCache = InitGameCache("MMD.Dat")
string keyExp = "Experience"

player p = GetLocalPlayer()
integer exp = 0

exp = ... (локальные вычисления)

StoreInteger(gameCache, keyExp, "P" + I2S(GetPlayerId(p)), exp)

TriggerSyncStart()

SyncStoredInteger(gameCache, keyExp, "P" + I2S(GetPlayerId(p)))
TriggerSleepAction( 2.00 )
TriggerSyncReady()

for (integer i = 0; i < PLAYERS_MAX; i++)
{            
  experience[i] = GetStoredInteger(gameCache, keyExp, "P" + I2S(i))
}
Тестирую с другим человеком этот код на Ирине, по какой-то причине я не получаю его данные, при этом он получает мои. От того в каких мы сидим слотах ничего не зависит. Результаты синка:
Игрок 1:
Игрок 4:
Тестил у себя в локалке, данные сохраняются корректно.
В чём может быть причина такого поведения?

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

как бы так сказать:
TriggerSyncStart()

SyncStoredInteger(gameCache, keyExp, "P" + I2S(GetPlayerId(p)))
TriggerSleepAction( 2.00 )
TriggerSyncReady()
Не факт что успеваеть синкнуть, не знаю с чем конкретно это связано, но порой синх кеша занимает очень и очень много времени, вовсе ммд наработка нужна для хостбота, синхать с игроками нет надобности, ибо боту главное увидеть факт сиха инфы - а сихнулась она или нет уже дело десятое, бот получил что нужно...
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
2 года назад
0
Похожие вопросы:

ответ
JackFastGame, просто без синхры ставишь всем героям нужное кол-во опыта, т.к у тебя одна машина и нет живых игроков, ты 1 зритель, остальные все боты и действия синхронизации не требуются для реплея, просто выставление напрямую всем игрокам експы.

0
32
2 года назад
Отредактирован quq_CCCP
0
как бы так сказать:
TriggerSyncStart()

SyncStoredInteger(gameCache, keyExp, "P" + I2S(GetPlayerId(p)))
TriggerSleepAction( 2.00 )
TriggerSyncReady()
Не факт что успеваеть синкнуть, не знаю с чем конкретно это связано, но порой синх кеша занимает очень и очень много времени, вовсе ммд наработка нужна для хостбота, синхать с игроками нет надобности, ибо боту главное увидеть факт сиха инфы - а сихнулась она или нет уже дело десятое, бот получил что нужно...
Принятый ответ
0
15
2 года назад
0
quq_CCCP, MMD это просто рандомное название, мне надо локальные данные игроков передавать в глобальные данные.
Я правильно понимаю, что нужно от каждого игрока отдельно передавать всем?
if GetLocalPlayer() == p then
	SyncStoredInteger(gameCache, keyExp, "P" + I2S(GetPlayerId(p)))
endif
Мне надо создать 12 триггеров (по одному для каждого игрока), и в каждом вызывать синк? Или ждать в одном триггере и не начинать новый синк пока предыдущий не прошёл?
0
32
2 года назад
0
JackFastGame, ну от любого игрока ко всем остальным, одновременно хз можно ли нет, но офк геймкеш нагружает траффик и в реальном мультиплеере может быть так что игроки вовсе отвалятся, либо синх займет секунд 10....
Но факт остается фактом, нужен триггер в котором с помощью вейта и надо синхать, имеено в trigger action и нигде больше, иначе это работать не бдует, да и 2 секунды может быть мало, поэтому на старте секунд 10 все синхаем, и все потом ниче не трогаем, синхать динамически всякие курсоры и камеры - провальная идея.
0
15
2 года назад
0
quq_CCCP, в общем создал 12 триггеров, в каждом из них синкаются данные от одного игрока. В этот раз всё работает, спасибо.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.