Donate with PayPal button New New

+ Ответить в теме
Страница 6 из 7 ПерваяПервая ... 4 5 6 7 ПоследняяПоследняя
Показано с 51 по 60 из 70

Тема: Скриптование под мультиплеер

  1. #51
    Пользователь Аватар для kemal
    Регистрация
    22.10.2009
    Страна
    Адрес
    Казань / 793км
    Возраст
    35
    Сообщений
    3,554
    Автор

    По умолчанию

    Ввёл для каждого объекта свои Id (привет, z7). Вроде работает, но...

    Берём файл multiplayergame.gs и читаем
    //================================================== ===========================
    // Name: BroadcastGameplayMessage
    // Desc: Broadcasts a multiplayer 'gameplay' message over the network to every
    // client. Only valid during multiplater games. This will broadcast a
    // script message when it is recieved on the client.
    // Parm: msgMajor - The major component of the broadcast message
    // Parm: msgMinor - The minor component of the broadcast message
    // Parm: data - The data of the broadcast message. On the recieving end the
    // native code will add the sending users profile name with the tag
    // "__sender". Do not use any tag names that begin with a double
    // underscore "__" on send, they will be stripped.
    //================================================== ===========================
    public native void BroadcastGameplayMessage(string msgMajor, string msgMinor, Soup data);
    Судя по тексту, вроде как, сообщения должны ходить между всеми пользователями. На практике сообщения ходили только между клиентом и сервером, а между клиентами - нет. Что тут может быть не так?

  2. #Trainz
    Реклама
    Регистрация
    Постоянная
    Адрес
    Весь мир
    Возраст
    2010
    Сообщений
    Много

    Donate with PayPal button N3v New New

     

  3. #52
    Пользователь Аватар для Эрендир
    Регистрация
    13.01.2010
    Страна
    Адрес
    Я Бот, живу в сети :)
    Возраст
    39
    Сообщений
    6,303

    По умолчанию

    kemal, как это не ходит. Всё там ходит. С чего ты взял, что не ходит?

  4. #53
    Пользователь Аватар для kemal
    Регистрация
    22.10.2009
    Страна
    Адрес
    Казань / 793км
    Возраст
    35
    Сообщений
    3,554
    Автор

    По умолчанию

    Добавил в скрипт, чтобы все приходящие сообщения писались в лог. В логах клиентов сообщения только от сервера.

  5. #54
    Пользователь Аватар для Эрендир
    Регистрация
    13.01.2010
    Страна
    Адрес
    Я Бот, живу в сети :)
    Возраст
    39
    Сообщений
    6,303

    По умолчанию

    kemal, ну так при бродкасте с клиента клиентам будет приходить сообщение сервера. Принцип такой: клиент отправляет серверу, а он рассылает всем остальным.

  6. #55
    Пользователь Аватар для kemal
    Регистрация
    22.10.2009
    Страна
    Адрес
    Казань / 793км
    Возраст
    35
    Сообщений
    3,554
    Автор

    По умолчанию

    А это не должно, как минимум, происходить нативно?

    ---------- Сообщение добавлено в 16:54 ---------- Предыдущее сообщение размещено в 10:30 ----------

    А всё же, может кто-нибудь однозначно ответить на вопрос, формулировка "to every client" означает, что сообщение будет доставлено от одного клиента другому клиенту, или нет?

  7. #56
    Пользователь Аватар для Эрендир
    Регистрация
    13.01.2010
    Страна
    Адрес
    Я Бот, живу в сети :)
    Возраст
    39
    Сообщений
    6,303

    По умолчанию

    kemal, когда отсылаешь броткаст с клиента он рассылается абсолютно всем. Просто в __source будет не имя клиента, который рассылал, а имя сервера. А вот на сервере как раз будет имя того самого клиента.

  8. #57
    Пользователь Аватар для kemal
    Регистрация
    22.10.2009
    Страна
    Адрес
    Казань / 793км
    Возраст
    35
    Сообщений
    3,554
    Автор

    По умолчанию

    Понятно... Придётся дебажить дальше. Хотя, совешенно не понятно, в какую сторону. Потому как во время теста между клиентами сообщения не ходили.

    ---------- Сообщение добавлено в 19:25 ---------- Предыдущее сообщение размещено в 19:18 ----------

    Кусок скрипта из светофора:
    Код:
            else if(id=="ForceUpdate"){
                kmLib.LibraryCall("ForceUpdate", stringParam, objectParam);
                if(MultiplayerGame.IsActive()){
                    Soup SyncSoup=Constructors.NewSoup();
                    SyncSoup.SetNamedTag("function", "ForceUpdate");
                    SyncSoup.SetNamedTag("id", MyId);
                    MultiplayerGame.BroadcastGameplayMessage("kmSigMP", "Sync", SyncSoup);
                }
            }
    Кусок скрипта из библиотеки:
    Код:
        void SyncHandler(Message msg){
            Soup soup = cast<Soup>msg.paramSoup;
            if(!soup)return;
            string function=soup.GetNamedTag("function");
            Str.ToLower(function);
            Interface.Print("SyncHandler");
            soup.Log();
            int id=soup.GetNamedTagAsInt("id", -1);
            if(id<0)return;
            int nmb=Signals.Find(id);
            kmRC sign=cast<kmRC>Signals.DBSE[nmb].value;
            if(!sign){
                return;
                Interface.Print("sign not found");
            }
    
            if(function=="forceupdate"){
                FullUpdate(sign);
            }
            ...
        }

  9. #58
    Пользователь Аватар для Эрендир
    Регистрация
    13.01.2010
    Страна
    Адрес
    Я Бот, живу в сети :)
    Возраст
    39
    Сообщений
    6,303

    По умолчанию

    kemal, должно всё работать. У меня в маршрутизации такого нет, ибо на сервак отправляется команда, а он уже рассылает синхронизацию. Но вот в ПОНАБ обработка идёт на том клиенте, которому принадлежит состав наехавший на датчик. И там соответственно броткаст клиент рассылает. И ведь работает же. По крайней мере, когда тестили, всё работало.

  10. #59
    Пользователь Аватар для kemal
    Регистрация
    22.10.2009
    Страна
    Адрес
    Казань / 793км
    Возраст
    35
    Сообщений
    3,554
    Автор

    По умолчанию

    Обнаружилось странное поведение правила в мультиплеере. Ощущение такое, что на клиенте правило не получает своих настроек. В чём может быть дело?
    И, чтобы два раза не вставать, что скрывается за фразой Loading network data?

  11. #60
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    Цитата Сообщение от kemal Посмотреть сообщение
    Ощущение такое, что на клиенте правило не получает своих настроек. В чём может быть дело?
    если вручную запрашиваешь, может слишком много данных за раз либо слишком часто опрашиваются.

+ Ответить в теме

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения