18

» WarCraft 3 / Всем ку. Как синхронизировать Real данные локального игрока…

Panda_95, ошибся. Нету редактора под рукой
function InitSync takes nothing returns nothing
    local trigger t = CreateTrigger()
    local integer i = 0
    loop
         exitwhen i > кол.игроков
              call TriggerRegisterPlayerSyncEvent(t, i , "id строка", false)
              set i = i + 1
    endloop
    call TriggerAddAction(t, function OnSync)
endfunction
18

» WarCraft 3 / Всем ку. Как синхронизировать Real данные локального игрока…

Принятый ответ
function InitSync takes nothing returns nothing
    local trigger t = CreateTrigger()
    call TriggerRegisterPlayerSyncEvent(t, "id строка", false)
    call TriggerAddAction(t, function OnSync)
endfunction

function OnSync takes nothing returns nothing
    call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, " Get sync: " + GetTriggerSyncData())
endfunction

function Send takes string prefix, string data returns nothing
    if (GetLocalPlayer() == Player(0)) then
        call SendSyncData( prefix, data )
    endif
endfunction
Я понимаю как то так должно работать...
Вызов:
call Send( "id строка", R2S( real ) )
18

» WarCraft 3 / Всем ку. Как синхронизировать Real данные локального игрока…

Panda_95, В ujapi можно писать на AngelScript, на котором пример и написан. Нативки для jass
// Variable Sync API
native GetSyncedVariableType							takes nothing returns variabletype
native GetSyncedVariableName							takes nothing returns string
native GetSyncedInteger									takes nothing returns integer
native GetSyncedReal									takes nothing returns real
native GetSyncedString									takes nothing returns string
native GetSyncedHandle									takes nothing returns handle
native GetSyncedBoolean									takes nothing returns boolean

native SyncInteger             							takes string variableName returns nothing
native SyncReal             							takes string variableName returns nothing
native SyncString             							takes string variableName returns nothing
native SyncHandle             							takes string variableName returns nothing
native SyncBoolean             							takes string variableName returns nothing

native TriggerRegisterPlayerVariableSyncEvent           takes trigger whichTrigger, player whichPlayer, string variableName returns event
//

// Hashtable Sync API
native GetSyncSavedVariableType							takes nothing returns variabletype
native GetSyncSavedHashtable							takes nothing returns hashtable
native GetSyncSavedParentKey							takes nothing returns integer
native GetSyncSavedChildKey								takes nothing returns integer

native SyncSavedInteger             					takes hashtable table, integer parentKey, integer childKey returns nothing
native SyncSavedReal             						takes hashtable table, integer parentKey, integer childKey returns nothing
native SyncSavedString             						takes hashtable table, integer parentKey, integer childKey returns nothing
native SyncSavedHandle             						takes hashtable table, integer parentKey, integer childKey returns nothing
native SyncSavedBoolean             					takes hashtable table, integer parentKey, integer childKey returns nothing

native TriggerRegisterPlayerHashtableDataSyncEvent      takes trigger whichTrigger, player whichPlayer, hashtable whichHashtable returns event
//

// Prefix Sync API
native GetTriggerSyncPrefix                     		takes nothing returns string
native GetTriggerSyncData                       		takes nothing returns string

native SendSyncData                             		takes string prefix, string data returns boolean

native TriggerRegisterPlayerSyncEvent           		takes trigger whichTrigger, player whichPlayer, string prefix, boolean fromServer returns event
18

» WarCraft 3 / Всем ку. Как синхронизировать Real данные локального игрока…

Вот пример для ujapi, с гита.
trigger tString = nil;

    void String( string prefix, string data )
    {
        if ( tString == nil )
        {
            TriggerAPI::RegisterPlayerSyncEvent
            (
                tString = CreateTrigger( ),
                prefix,
                false,
                null,
                function( )
                {
                    print( "[EVENT_PLAYER_SYNC_PREFIX]: " + GetTimeStamp( false, 0 ) + "\n" );
                    print( "Prefix: " + GetTriggerSyncPrefix( ) + "\n" );
                    print( "==========================================================\n" );
                    print( "Data: " + GetTriggerSyncData( ) + "\n" );
                }
            );
        }

        if ( GetLocalPlayer( ) == Player( 0 ) )
        {
            SendSyncData
            ( 
                prefix,
                data
            );
        }
    }
18

» WarCraft 3 / Как отследить урон от руки/заклинаний? Какую систему…

Joma, Лучше при входе на карту добавлять событие на получение урона с проверкой на наличие в групе
18

» WarCraft 3 / Нанесение урона при нахождении на высоте

Ну скорее всего у тебя не динамичные высоты. В нужных точках проставь регионы, и событие на вход в каждый из регионов и одно действие которое отнимает входящему юниту здоровье
18

» WarCraft 3 / Расенган не должен пролетать через блокировку пути. Как реализовать?

В гуи варианте, когда юнит паузится, то он упрется в стенк. А так вариант, проверить декорации и разницу высоты рельефа в смещаемую точку
18

» WarCraft 3 / Вопрос по Таймерам и JASS

В if отсутствует сохранение юнита. Также лишнее сохранение с приставкой BJ (раз изучаеш джасс).
SaveUnitHandle( hash, parentId, childId, object )
18

» WarCraft 3 / Какие ошибки допущены в данной способности? Jass.

LastUchiha, нет, их задача хранить информацию, не отвечают они за оптимизацию. Комп выделяет место под хранение информации, для глобалок на старте, а локалок по ходу их создания. По простому, задача локальних, в нужный период отработать внутри функции и освободить место. Возможно скорость будет чуть ниже, но она на столько мизерная, что не стоит на протяжении всей игры "занимать место".
18

» WarCraft 3 / Не работает триггер

Принятый ответ
Выведи сообщение с именем юнита tempunit и создай юнита в точке. Думаю проблема с tempunit
18

» WarCraft 3 / Как сделать простой рандом?

Еще вариант. Создать переменную массив тип юнита, целое число дальше TypeUnit, Count.
TypeUnit[0] = пехотинец
TypeUnit[1] = стрелок
TypeUnit[2] = рицарь
Count[0] = 8
...
...
Соб - спустя 100сек.
Integer int = RandomInt(0,2)
Создать Count[ int ] юнитов TypeUnit[ int ] в центре твоей области
18

» WarCraft 3 / Почему может не воспроизводится анимация юнита после паузы? Jass.

Поробую другую анимацию, если сработает, то проблема в названии анимации. Если нет, то измени время с 0.98 на 0
18

» WarCraft 3 / Как отследить удар из невидимости?

Каст стремительности создает юнита пустышку, который накинет баф, с такой же временем действия на героя.
Отслеживаешь урон, если наносящий урон имеет баф, то отнимаешь золото и удаляешь баф