LINUX.ORG.RU

История изменений

Исправление Obezyan, (текущая версия) :

А как там будет такой модуль выглядеть?

Могу ошибиться немного в синтаксисе, давно не писал на них:

В UE объявление вот такое примерно

UFUNCTION(Server, unreliable, WithValidation)
FText GetServerTime_Interact();

UFUNCTION(Client, unreliable)
FText GetClientTime();

Реализация такая

FText ACharacter::GetServerTime_Implementation()
{
    FDateTime CurrentDateTime = FDateTime::Now();
    FText TimeStamp = FText::AsDateTime(CurrentDateTime, EDateTimeStyle::Short, EDateTimeStyle::Medium);

    return TimeStamp;
}

bool ACharacter::GetServerTime_Validate()
{
    return true;
}

FText ACharacter::GetClientTime()
{
    FDateTime CurrentDateTime = FDateTime::Now();
    FText TimeStamp = FText::AsDateTime(CurrentDateTime, EDateTimeStyle::Short, EDateTimeStyle::Medium);

    return TimeStamp;
}

Вызов уже банальный

void ACharacter::OnButtonPressed() {
    FText serverTime = GetServerTime();
    FText clientTime = GetClientTime();

    UE_LOG(LogTemp, Warning, TEXT("Время на сервере: %s"), *serverTime);
    UE_LOG(LogTemp, Warning, TEXT("Время на клиенте: %s"), *clientTime);
}

На SQF это это будет:

Get_Time = {
    if (isServer) {
        SERVERDATE = format ["%1 %2 %3", (date select 0), (date select 1), (date select 2)];
        publicVariableClient "SERVERDATE";
    };

    if (isClient && hasInterface) {
        _clientDate = format ["%1 %2 %3", (date select 0), (date select 1), (date select 2)];
        hint _clientDate;
        hint SERVERDATE;
    };
};

remoteExec ["Get_Time", 0];  // 0 - вызов и на сервере и на клиенте, 2 - вызов на сервере, 3,4,5 итд вызов на подключенных клиентах в том числе безголовых

Исправление Obezyan, :

А как там будет такой модуль выглядеть?

Могу ошибиться немного в синтаксисе, давно не писал на них:

В UE объявление вот такое примерно

UFUNCTION(Server, unreliable, WithValidation)
FText GetServerTime_Interact();

UFUNCTION(Client, unreliable)
FText GetClientTime();

Реализация такая

FText ACharacter::GetServerTime_Implementation()
{
    FDateTime CurrentDateTime = FDateTime::Now();
    FText TimeStamp = FText::AsDateTime(CurrentDateTime, EDateTimeStyle::Short, EDateTimeStyle::Medium);

    return TimeStamp;
}

bool ACharacter::GetServerTime_Validate()
{
    return true;
}

FText ACharacter::GetClientTime()
{
    FDateTime CurrentDateTime = FDateTime::Now();
    FText TimeStamp = FText::AsDateTime(CurrentDateTime, EDateTimeStyle::Short, EDateTimeStyle::Medium);

    return TimeStamp;
}

Вызов уже банальный

void ACharacter::OnButtonPressed() {
    FText serverTime = GetServerTime();
    FText clientTime = GetClientTime();

    UE_LOG(LogTemp, Warning, TEXT("Время на сервере: %s"), *serverTime);
    UE_LOG(LogTemp, Warning, TEXT("Время на клиенте: %s"), *clientTime);
}

На SQF это это будет:

Get_Time = {
    if (isServer) {
        SERVERDATE = format ["%1 %2 %3", (date select 0), (date select 1), (date select 2)];
        publicVariableClient "SERVERDATE";
    };

    if (isClient && hasInterface) {
        _clientDate = format ["%1 %2 %3", (date select 0), (date select 1), (date select 2)];
        hint _clientDate;
        hint SERVERDATE;
    };
};

remoteExec ["Get_Time", 0];  // 0 - вызов и на сервере и на клиенте, 2 - вызов на сервере, 3,4,5 итд вызов на подключенных клиентах в том числе безголовых

Исходная версия Obezyan, :

А как там будет такой модуль выглядеть?

Могу ошибиться немного в синтаксисе, давно не писал на них:

В UE объявление вот такое примерно

UFUNCTION(Server, unreliable, WithValidation)
FText GetServerTime_Interact();

UFUNCTION(Client, unreliable)
FText GetClientTime();

Реализация такая

FText ACharacter::GetServerTime_Implementation()
{
    FDateTime CurrentDateTime = FDateTime::Now();
    FText TimeStamp = FText::AsDateTime(CurrentDateTime, EDateTimeStyle::Short, EDateTimeStyle::Medium);

    return TimeStamp;
}

bool ACharacter::GetServerTime_Validate()
{
    return true;
}

FText ACharacter::GetClientTime()
{
    FDateTime CurrentDateTime = FDateTime::Now();
    FText TimeStamp = FText::AsDateTime(CurrentDateTime, EDateTimeStyle::Short, EDateTimeStyle::Medium);

    return TimeStamp;
}

Вызов уже банальный

void ACharacter::OnButtonPressed() {
    FText serverTime = GetServerTime();
    FText clientTime = GetClientTime();

    UE_LOG(LogTemp, Warning, TEXT("Время на сервере: %s"), *serverTime);
    UE_LOG(LogTemp, Warning, TEXT("Время на клиенте: %s"), *clientTime);
}

На SQF это это будет:

Get_Time = {
    if (isServer) {
        SERVERDATE = (date select 0) + " " + (date select 1) + " " + (date select 2);
        publicVariableClient "SERVERDATE";
    };

    if (isClient && hasInterface) {
        _clientDate = (date select 0) + " " + (date select 1) + " " + (date select 2);
        hint _clientDate;
        hint SERVERDATE;
    };
};

remoteExec ["Get_Time", 0];  // 0 - вызов и на сервере и на клиенте, 2 - вызов на сервере, 3,4,5 итд вызов на подключенных клиентах в том числе безголовых