Добавлен MKDimon
У меня в карте есть проверка на файл, за это отвечает переменная типа bool. Проверка :
while(i<n) {
if GetLocalPlayer()==Player(i) {
if FileExists("config.ini") { b[i] = true }
else { b[i] = false }
}
i++
}
Для игроков с этим файлом дается доступ к командам, но при их вызове вылетает диссинхрон, как можно синхронизировать эти переменные у всех игроков.
P.s. смотрел другие вопросы на эту тему, нашел пару функций типа TriggerSyncStart() , но как она работает и зачем нужна нигде
P.s. смотрел другие вопросы на эту тему, нашел пару функций типа TriggerSyncStart() , но как она работает и зачем нужна нигде
Принятый ответ
MKDimon, здесь вообще не надо проверять в локал плеере и синхронизировать
я конкретно про то, когда ты проверяешь наличие файла
я конкретно про то, когда ты проверяешь наличие файла
globals
bolean IHaveConfig=false // булевае данные можно держать асинхронными
endfglobals
-твоя функция начало
if FileExists("config.ini") then
set IHaveConfig=true
else // это можно и не писать
set IHaveConfig=false // хотя он и так false
endif
-конец
И у каждого игрока переменная примет своё значение и это не вызовет никакого десинхрона, каждый игрок будет знать если ли у него конф или нет
Синхронизация нужна, если нужно чтобы игрока Красный, узнал о наличии конфига у игрока Синего
Синхронизировать нужно непостредственно ,то что считывает ReadString, я тебе писал функцию как строковый тип синхронить
Синхронизировать нужно непостредственно ,то что считывает ReadString, я тебе писал функцию как строковый тип синхронить
синхронизатор целого переделай под стринг или ищи я писал ранее
function SyncInteger takes player p, integer val returns integer
if (GetLocalPlayer() == p) then
call StoreInteger(SyncCache, "", "", val)
endif
call TriggerSyncStart()
if (GetLocalPlayer() == p) then
call SyncStoredInteger(SyncCache, "", "")
endif
call TriggerSleepAction(2)// меньшнее значение вызывает десинх
call TriggerSyncReady()
return GetStoredInteger(SyncCache, "", "")
endfunction
а вообще там 131 патч завезли, в котором есть быстрый синх, а на луа скорее все свои плюшки, мб можно вернуться к прелоаду и не юзать мемхак
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
я конкретно про то, когда ты проверяешь наличие файла
Синхронизировать нужно непостредственно ,то что считывает ReadString, я тебе писал функцию как строковый тип синхронить
Можно описать что в данной функции происходит?
то что выложил ты запишет асинхронный массив из булевых, он сам по себе не будет десинхать, а будет десинхать, что используется дальше
Отредактирован PT153
Отредактирован PT153