Как новый объект узнает, к какой сети присоединиться (новой или существующей)? В зависимости от того, что именно вам нужно, есть несколько подходов.
Первый метод
Вы можете использовать менее точный таймер, чем каждую секунду, например, что-то вроде этого:
integer time = llGetUnixTime();
integer channel = time - (time % 1000);
Вероятно, все объекты, которые были перезагружены почти в одно и то же время, имеют один и тот же канал в соответствии с приведенным выше кодом, хотя вы, вероятно, захотите убедиться, что время% 1000 не близко к 0 или 1000, и, возможно, использовать время% 10000 в этот случай.
Второй метод
Кроме этого, вы можете создать своего рода протокол обнаружения. Например:
- недавно перезаписанный объект здоровается с жестко-закодированным каналом управления
- главный сервер для каждой сети в области отвечает номером канала своей сети
- объект выбирает сеть, к которой он хочет присоединиться
- если никто не отвечает, объект становится сервером для собственной сети, увеличивая канал управления на некоторое число (например, +1)
- если объект все равно хочет создать свою собственную сеть, он увеличивает наивысший используемый канал на +1 и создает собственный канал / сеть
Комбинация
Конечно, вы можете комбинировать оба метода - используйте llGetUnixTime () для получения канала, скажем привет, и если сервер отвечает, становится узлом, в противном случае становится сервером. Кроме того, вы можете проверить соответствующий верхний и нижний канал, чтобы избежать наличия двух сетей из-за различий во время смены кадров при повторном наборе объектов.