Делаем с другом одну мапку, в которой реализуем систему сохранения данных и синхронизации в мультиплеере, столкнулись с проблемами синхронизации строки.
Как правильно реализовать синхронизацию строки? Как правильно пользоваться SyncStoredString ?
инфа по теме:

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

Ну как бы там все одно да потому, код тот же что я описал выше, вот только проверять все надо в МУИ это раз, два время затраченное на синхронизацию может быть пипец каким большим...
function Trig_SyncStr_Actions takes nothing returns nothing
    local string splayer = null
    local player pl = Player(0)
    
    if GetLocalPlayer() == pl then
        call StoreString( udg_Data, "A", "B", "твоя строка!" )
    endif

    call TriggerSyncReady()
    
    if GetLocalPlayer) == pl  then
        call SyncStoredString( udg_Data, "A", "B"  )
    endif

    call TriggerSleepAction( 2.00 )
    
    call TriggerSyncReady()
    
    set splayer = GetStoredString( udg_Data, "A", "B" ) // выгрузи строку из кеша в локалку и делай с ней что хочешь
    
endfunction

//===========================================================================
function InitTrig_SyncStr takes nothing returns nothing
    set gg_trg_SyncStr = CreateTrigger(  )
    call TriggerAddAction( gg_trg_SyncStr, function Trig_SyncStr_Actions )
endfunction
Триггер запускаем ExecuteTrigger а "Твоя строка" заменяется на глобальную переменную.
4
32
9 лет назад
Отредактирован quq_CCCP
4
Через вейт, в потоке триггера только.
call TriggerSyncStart()

if GetLocalPlayer() == pl then
	`call SycnStored....( cache, "", "" )
enid
call TriggerSleepAction(2.00)
call TriggerSyncReady()
Незабываем что синк не мгновенный, я тоже радовался когда на ракапе у меня синкнулись 4 значения через 15 секунд...
0
21
9 лет назад
0
quq_CCCP:
Через вейт, в потоке триггера только.
call TriggerSyncStart()

if GetLocalPlayer() == pl then
	`call SycnStored....( cache, "", "" )
enid
call TriggerSleepAction(2.00)
call TriggerSyncReady()
Незабываем что синк не мгновенный, я тоже радовался когда на ракапе у меня синкнулись 4 значения через 15 секунд...
Можно рабочий пример синхрона строк? Самый простейший - лишь бы работал.
В виде карты в смысле)
4
32
9 лет назад
Отредактирован quq_CCCP
4
Ну как бы там все одно да потому, код тот же что я описал выше, вот только проверять все надо в МУИ это раз, два время затраченное на синхронизацию может быть пипец каким большим...
function Trig_SyncStr_Actions takes nothing returns nothing
    local string splayer = null
    local player pl = Player(0)
    
    if GetLocalPlayer() == pl then
        call StoreString( udg_Data, "A", "B", "твоя строка!" )
    endif

    call TriggerSyncReady()
    
    if GetLocalPlayer) == pl  then
        call SyncStoredString( udg_Data, "A", "B"  )
    endif

    call TriggerSleepAction( 2.00 )
    
    call TriggerSyncReady()
    
    set splayer = GetStoredString( udg_Data, "A", "B" ) // выгрузи строку из кеша в локалку и делай с ней что хочешь
    
endfunction

//===========================================================================
function InitTrig_SyncStr takes nothing returns nothing
    set gg_trg_SyncStr = CreateTrigger(  )
    call TriggerAddAction( gg_trg_SyncStr, function Trig_SyncStr_Actions )
endfunction
Триггер запускаем ExecuteTrigger а "Твоя строка" заменяется на глобальную переменную.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.