![]() |
|
[Plugin] [VoiceChat] omp-voice - Printable Version +- open.mp forum (https://forum.open.mp) +-- Forum: SA-MP (https://forum.open.mp/forumdisplay.php?fid=3) +--- Forum: Releases (https://forum.open.mp/forumdisplay.php?fid=13) +---- Forum: Plugins (https://forum.open.mp/forumdisplay.php?fid=32) +---- Thread: [Plugin] [VoiceChat] omp-voice (/showthread.php?tid=4288) |
[VoiceChat] omp-voice - ionuzcostin - 2026-06-13 [RELEASE] omp-voice — Proximity + Radio/Phone Voice Chat for open.mp & SA-MP 0.3.7 What is omp-voice? omp-voice is a full-featured, server-authoritative voice chat system for open.mp and SA-MP 0.3.7 R5. It brings proximity voice, radio channels, and phone calls to your server — all encrypted, low-latency, and scriptable via Pawn. GitHub: https://github.com/staark-dev/omp-voice Features ?️ Proximity Voice
Architecture omp-voice uses a hybrid mixing model:
Module Roleshared/ Wire protocol, crypto (libsodium), INI, UDP core/ Routing engine: proximity, bus router, channels, mix policy relay/ Standalone relay process — AEAD transport shell samp/ SA-MP 0.3.7 plugin bridge (Pawn natives) omp/ open.mp component bridge client/ Windows .asi — WASAPI, Opus, RNNoise, ImGui panel Installation Server Side
Open UDP port 7779 inbound on your server: # Windows (admin) netsh advfirewall firewall add rule name="VoiceChat 7779" dir=in action=allow protocol=UDP localport=7779 # Linux sudo ufw allow 7779/udp Pawn API (quick overview) Code: #include <voicechat>
#include <voicechat_ui>
public OnGameModeInit() {
gProximity = Voice_CreateChannel(VOICE_FILTER_NONE, false);
return 1;
}
public OnPlayerConnect(playerid) {
new ip[16]; GetPlayerIp(playerid, ip, sizeof ip);
Voice_OnPlayerConnect(playerid, ip);
Voice_AddToChannel(playerid, gProximity);
Voice_SetPlayerRange(playerid, VOICE_RANGE_NORMAL);
return 1;
}
public OnPlayerUpdate(playerid) {
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
new veh = GetPlayerVehicleID(playerid) ? VOICE_VEH_CLOSED : VOICE_ONFOOT;
Voice_UpdatePosition(playerid, x, y, z,
GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid), veh);
return 1;
}
public OnPlayerStartTalking(playerid) { VoiceUI_OnStartTalking(playerid); return 1; }
public OnPlayerStopTalking(playerid) { VoiceUI_OnStopTalking(playerid); return 1; }
public OnPlayerDisconnect(playerid, reason) {
Voice_OnPlayerDisconnect(playerid);
return 1;
}
Key Natives
// Channel management
Voice_CreateChannel(filter, bool:positional, priority = 100);
Voice_AddToChannel(playerid, channelid);
Voice_RemoveFromChannel(playerid, channelid);
// Player control
Voice_SetPlayerRange(playerid, preset, Float:override = 0.0);
Voice_SetPlayerFlags(playerid, bool:muted, bool:deafen, bool:alive, bool:spectator);
Voice_SetMixPolicy(playerid, policy, Float:duckLevel = 0.5, Float:proximityFloor = 0.25);
Voice_MutePlayer(playerid, targetid, bool:mute = true); // per-pair mute
Voice_SetSpeakerphone(playerid, bool:on = true);
// Lifecycle
Voice_OnPlayerConnect(playerid, const ip[]);
Voice_OnPlayerDisconnect(playerid);
Voice_ReloadConfig(); // reload voice.ini at runtimeIn-Game Controls (Client) Key Action: B Proximity push-to-talk N Radio/phone push-to-talk F9 Self-mute F8 Toggle "who's talking" HUD INSERT Open settings panel All keys are rebindable in the in-game panel. Building from Source One-shot Windows build: powershell -ExecutionPolicy Bypass -File .\build.ps1 Manual CMake (production config, x86): cmake -S . -B build -A Win32 -DVC_NO_SODIUM=OFF -DVC_WITH_OPUS=ON -DVC_BUILD_CLIENT=ON cmake --build build --config Release All third-party dependencies (libsodium, Opus, Dear ImGui, MinHook, RNNoise) are fetched and built automatically by CMake — no manual installs needed. CI/CD via GitHub Actions builds and tests on every push. Tagged releases (v*) publish ready-to-use bundles automatically. Current Status Core engine and all major features are implemented and validated in-game (2-player proximity with occlusion + falloff, radio/phone channels, speakerphone, RNNoise, ImGui panel). Remaining / planned:
Download ? GitHub Releases: https://github.com/staark-dev/omp-voice/releases Bundles available:
INSTALL.txt. License MIT — free to use, modify, and distribute. See LICENSE. Feedback, bug reports, and pull requests are welcome on GitHub! |