あなたの世界を作りなさい
マルチプレイ
特定のユーザーをルームから削除
4 分
特定のユーザーをランタイム中にルームからキックすることができます。 サーバーコード index ts sandbox を作成してください。 関数定義 kick(client sandboxplayer, reason? string) promise; これは、sessionidを持つsandboxplayerを受け取った後にsandboxplayerをキックするための関数です。 \ キックされると、キックされたことを知らせるポップアップが表示されますが、そのポップアップはzepetoアプリのuiであり、エディターでは確認できません。 📘 次のガイドを参照してください。 \[ zepeto multiplay(server) api https //developer zepeto me/docs/multiplay server/classes/zepeto multiplay sandbox#kick ] まず、ユーザー情報を取得するために、schema typesとroomstateを次のように定義します: 使用例 userinfosのデータを使用して、ユーザーidから追い出されるユーザーのセッションidを取得します。 セッションidを持つサンドボックスプレイヤーをインポートした後、キック関数を呼び出します。 誰が追い出されたかをブロードキャストを通じてお知らせできます。 import { sandbox, sandboxoptions, sandboxplayer } from 'zepeto multiplay'; import { datastorage, loaddatastorage } from 'zepeto multiplay datastorage'; import { userinfo } from 'zepeto multiplay schema'; export default class extends sandbox { oncreate(options sandboxoptions) { this onmessage("kick", (client sandboxplayer, message string) => { this trykick(client, message); }); } onjoin(client sandboxplayer) { const user = new userinfo(); user sessionid = client sessionid; user userid = client userid; this state userinfos set(client userid, user); } async trykick(client sandboxplayer, userid string) { let player sandboxplayer; if (userid == null) { player = client; } else { const kickplayersessionid string = this state userinfos get(userid) sessionid; player = this loadplayer(kickplayersessionid); } console log(`try kick ${player userid}`); await this kick(player); this broadcast("log", `kick ${player userid}`); } } 👍 デフォルトでは、追い出されたユーザーは再度部屋に入ることができます これを防ぐために、useridに基づいてデータストレージ管理機能を使用して、ユーザーによって追い出された部屋の情報を保存します。 部屋に入ろうとする際にキックを呼び出すことで実装できます。