猫史档案馆


尝试解决岛三rtc语音系统卡崩(⚠若使用此代码导致地图崩溃,后果自负!⚠)

用户:LZ编编编编程猫LZ编编编编程猫查看:2 回复:6 评论:2 创建时间:2023-07-22T14:35:30


⚠⚠⚠pro版rtc功能未完善,语音频道内的玩家若退出地图会导致地图下一次运行时崩溃,任何人无法进入!严禁在已发布地图上测试此功能!地图崩溃后果自负!

解决了频道内玩家退出地图导致崩溃的问题,但开麦就会很卡。不知道七七是怎么解决的。。。
(async () => {
    channel = await rtc.createChannel('channel');
})();

world.onPlayerJoin(async ({ entity }) => {
    entity.player.inChannel = false;
    entity.player.microphone = false;
    entity.player.directMessage('鼠标右键(手机/平板B键)可打开语音设置面板');
});

// 尝试解决频道内玩家退出地图导致崩溃的问题
setInterval(async () => {
    await channel.destroy();
    world.querySelectorAll('player').filter(entity => entity.player.inChannel).forEach(async (entity) => {
        await channel.add(entity);
    });
}, 384);

world.onPress(async ({ button, entity }) => {
    if (button === GameButtonType.ACTION1) {
        let permission = await channel.getMicrophonePermission(entity);
        if (!permission) {
            entity.player.dialog(({
                type: GameDialogType.TEXT,
                title: '语音设置',
                content: '检测到你已禁止此网页使用你的麦克风,请先允许此功能!',
            }));
            return;
        }
        if (!entity.player.inChannel) {
            let result = await entity.player.dialog(({
                type: GameDialogType.SELECT,
                title: '语音设置',
                options: ['加入语音频道']
            }));
            if (!result) {
                return;
            }
            entity.player.inChannel = true;
            world.say(entity.player.name + '加入了语音频道!');
            return;
        }
        let result = await entity.player.dialog({
            type: GameDialogType.SELECT,
            title: '语音设置',
            options: [(entity.player.microphone ? '关闭' : '开启') + '麦克风', '设置麦克风音量', '查看语音频道内玩家列表', '退出语音频道']
        });
        if (!result) return;
        switch (result.value) {
            case '开启麦克风':
                try {
                    await channel.publishMicrophone(entity);
                    entity.player.microphone = true;
                    entity.player.directMessage('已开启麦克风!');
                } catch {
                    entity.player.directMessage('由于语音频道卡顿,开启麦克风失败,请重试!');
                }
                break;
            case '关闭麦克风':
                try {
                    await channel.unpublish(entity);
                    entity.player.microphone = false;
                    entity.player.directMessage('已关闭麦克风!');
                } catch {
                    entity.player.directMessage('由于语音频道卡顿,关闭麦克风失败,请重试!');
                }
                break;
            case '设置麦克风音量':
                let volume = await channel.getVolume(entity);
                let result = await entity.player.dialog({
                    type: GameDialogType.INPUT,
                    title: '设置麦克风音量',
                    content: '你目前的麦克风音量为' + volume,
                    placeholder: '设置麦克风音量(0~100的整数)'
                });
                if (!result) {
                    break;
                }
                result = +result;
                if (!Number.isInteger(result) || result < 0 || result > 100) {
                    entity.player.directMessage('输入不合法!');
                    break;
                }
                await channel.setVolume(entity, result);
                entity.player.directMessage('已将麦克风音量设置为' + result);
                break;
            case '查看语音频道内玩家列表':
                let names = world.querySelectorAll('player').filter(entity => entity.player.inChannel).map((entity) => entity.player.name);
                entity.player.dialog({
                    type: GameDialogType.SELECT,
                    title: '语音频道内玩家列表',
                    options: names
                });
                break;
            case '退出语音频道':
                await channel.remove(entity);
                entity.player.inChannel = false;
                world.say(entity.player.name + '退出了语音频道!');
                break;
            default:
                break;
        }
    }
});
​


回复

上一页1 页 / 共 1下一页
LZ编编编编程猫LZ编编编编程猫

沙发

点赞1


评论


翎with珝翎with珝

板凳)

 

点赞1


评论


追梦ez追梦ez

前排

点赞1


评论


伴只狗头伴只狗头

前排

点赞1


评论


Star_Ink_sansStar_Ink_sans

很喜欢岛民的一句话:啊?

点赞2


评论


屑怪盗屑怪盗

DDD

点赞1


评论