Knight docs
EN ID
GitHub

Plugin Voice

Voice proximity yang tidak menyentuh protokol game.

SA-MP 0.3.7 dan 0.3.DL tidak punya channel voice, jadi audio tidak bisa lewat RakNet. Knight memakai sidecar: server menentukan siapa mendengar siapa, dan audio dibawa transport terpisah (WebRTC atau lainnya). Latensi gameplay tidak terpengaruh karena audio tidak pernah masuk tick.

text
game client ── Knight server ── voice sidecar ── audio transport ── game client
                    │                 │
              player::update      proximity groups

1. Menjalankan

bash
# 1. sidecar (separate process)
./knight-voice -addr :7788 -range 30

# 2. server with the voice plugin compiled in
KNIGHT_VOICE_URL=http://127.0.0.1:7788 ./knight-server -cfg "" -gamemode Gamemodes/voice.sa
VariabelDefaultArti
KNIGHT_VOICE_URLhttp://127.0.0.1:7788alamat sidecar
KNIGHT_VOICE_RANGE30radius pendengaran dalam unit dunia

2. Native

NativeHasilKegunaan
VoiceJoin(playerid)boolDaftar ke sidecar
VoiceLeave(playerid)boolHapus dari sidecar
VoiceMute(playerid, bool)boolSenyapkan audio keluar
VoiceDeafen(playerid, bool)boolSenyapkan audio masuk
VoicePeers(playerid)stringId dipisah koma yang bisa didengar
VoiceInRange(playerid, other)boolCek lokal, tanpa panggilan sidecar
VoiceSetRange(float)boolUbah radius

3. Perilaku otomatis

EventAction
player::spawnmasuk room voice
player::updatekirim posisi
player::disconnectkeluar dari room
Note
Hook selalu mengembalikan true. Bila sidecar mati, gameplay tetap jalan dan VoiceJoin mengembalikan false.

4. Contoh

knight
player::spawn() {
    if (!VoiceJoin(playerid)) {
        SendClientMessage(playerid, "Voice tidak tersedia.");
    }
};

player::command("/who") {
    SendClientMessage(playerid, "Dengar: [{VoicePeers(playerid)}]");
};

player::command("/mute") {
    VoiceMute(playerid, true);
};

5. Aturan keanggotaan

AturanEfek
Same worldPemain di world/interior lain tidak mendengar apa pun
Within rangeDefault 30 unit, jarak 3D
Not mutedPembicara yang di-mute tidak terdengar siapa pun
DeafenedPendengar itu tidak mendengar apa pun, tapi masih terdengar
-teamsBila diaktifkan di sidecar, hanya pemain satu tim terhubung

6. Menguji dengan bot

bash
./knight-voice -addr 127.0.0.1:7788 -range 30 &
./knight-voicebot -url http://127.0.0.1:7788 -bots 5 -steps 8

Bot mendaftarkan beberapa pemain, menggerakkan mereka, mute, deafen, lalu leave; gagal bila ada pendengar yang mendengar pemain mute, jauh, beda world, atau sudah keluar.

7. Yang tidak termasuk

Penangkapan audio di dalam client SA-MP, yang tidak bisa dibawa protokol; pemain memakai browser/aplikasi terpisah. Sidecar tidak terikat transport: pion/webrtc sudah menjadi dependency bila ingin menambah SFU.