Tokovoip is outdated
I’ve a problem with TokoVoip. Is it really outdated?
how can i set it pls?
The problem would be that if we were 40 meters away we could still hear each other as if we were 5 meters.
And if we do, we won’t have voice chat. Someone help me?
If radiochannel < radio channels then
Radio animation
End
people didnt moved to LOBBY channel, how do i fix this?
TokoVoipConfig = {
refreshRate = 100, -- Rate at which the data is sent to the TSPlugin
networkRefreshRate = 2000, -- Rate at which the network data is updated/reset on the local ped
playerListRefreshRate = 5000, -- Rate at which the playerList is updated
minVersion = "1.2.5", -- Version of the TS plugin required to play on the server
distance = {
15, -- Normal speech distance in gta distance units
5, -- Whisper speech distance in gta distance units
40, -- Shout speech distance in gta distance units
},
headingType = 0, -- headingType 0 uses GetGameplayCamRot, basing heading on the camera's heading, to match how other GTA sounds work. headingType 1 uses GetEntityHeading which is based on the character's direction
radioKey = Keys["CAPS"], -- Keybind used to talk on the radio
keySwitchChannels = Keys["Z"], -- Keybind used to switch the radio channels
keySwitchChannelsSecondary = Keys["LEFTSHIFT"], -- If set, both the keySwitchChannels and keySwitchChannelsSecondary keybinds must be pressed to switch the radio channels
keyProximity = Keys["Z"], -- Keybind used to switch the proximity mode
radioClickMaxChannel = 100, -- Set the max amount of radio channels that will have local radio clicks enabled
radioAnim = true, -- Enable or disable the radio animation
radioEnabled = true, -- Enable or disable using the radio
plugin_data = {
-- TeamSpeak channel name used by the voip
-- If the TSChannelWait is enabled, players who are currently in TSChannelWait will be automatically moved
-- to the TSChannel once everything is running
TSChannel = "LOBBY",
TSPassword = "07092004", -- TeamSpeak channel password (can be empty)
-- Optional: TeamSpeak waiting channel name, players wait in this channel and will be moved to the TSChannel automatically
-- If the TSChannel is public and people can join directly, you can leave this empty and not use the auto-move
TSChannelWait = "WAITING",
-- Blocking screen informations
TSServer = "35.198.207.100", -- TeamSpeak server address to be displayed on blocking screen
TSChannelSupport = "WAITING", -- TeamSpeak support channel name displayed on blocking screen
TSDownload = "https://www.teamspeak.com/", -- Download link displayed on blocking screen
TSChannelWhitelist = { -- Black screen will not be displayed when users are in those TS channels
"WAITING",
"LOBBY",
},
-- The following is purely TS client settings, to match tastes
local_click_on = true, -- Is local click on sound active
local_click_off = true, -- Is local click off sound active
remote_click_on = false, -- Is remote click on sound active
remote_click_off = true, -- Is remote click off sound active
enableStereoAudio = true, -- If set to true, positional audio will be stereo (you can hear people more on the left or the right around you)
localName = "", -- If set, this name will be used as the user's teamspeak display name
localNamePrefix = "[" .. GetPlayerServerId(PlayerId()) .. "] ", -- If set, this prefix will be added to the user's teamspeak display name
}
};
AddEventHandler("onClientResourceStart", function(resource)
if (resource == GetCurrentResourceName()) then -- Initialize the script when this resource is started
Citizen.CreateThread(function()
TokoVoipConfig.plugin_data.localName = escape(GetPlayerName(PlayerId())); -- Set the local name
end);
TriggerEvent("initializeVoip"); -- Trigger this event whenever you want to start the voip
end
end)
-- Update config properties from another script
function SetTokoProperty(key, value)
if TokoVoipConfig[key] ~= nil and TokoVoipConfig[key] ~= "plugin_data" then
TokoVoipConfig[key] = value
if voip then
if voip.config then
if voip.config[key] ~= nil then
voip.config[key] = value
end
end
end
end
end
-- Make exports available on first tick
exports("SetTokoProperty", SetTokoProperty)
Is there a way to use tokovoip with gcphone?
Yes, you need to edit something in the client.lua from your gcphone
here is the code you need.
--====================================================================================
-- #Author: Jonathan D @ Gannon
--====================================================================================
-- Configuration
local KeyToucheCloseEvent = {
{ code = 172, event = 'ArrowUp' },
{ code = 173, event = 'ArrowDown' },
{ code = 174, event = 'ArrowLeft' },
{ code = 175, event = 'ArrowRight' },
{ code = 176, event = 'Enter' },
{ code = 177, event = 'Backspace' },
}
local KeyOpenClose = 5120 -- F2
local KeyTakeCall = 38 -- E
local menuIsOpen = false
local contacts = {}
local messages = {}
local myPhoneNumber = ''
local isDead = false
local USE_RTC = false
local useMouse = false
local ignoreFocus = false
local takePhoto = false
local hasFocus = false
local TokoVoipID = nil
local PhoneInCall = {}
local currentPlaySound = false
local soundDistanceMax = 8.0
local TokoVoipID = nil
--====================================================================================
-- Check si le joueurs poséde un téléphone
-- Callback true or false
--====================================================================================
function hasPhone (cb)
cb(true)
end
--====================================================================================
-- Que faire si le joueurs veut ouvrir sont téléphone n'est qu'il en a pas ?
--====================================================================================
function ShowNoPhoneWarning ()
end
--[[
Ouverture du téphone lié a un item
Un solution ESC basé sur la solution donnée par HalCroves
https://forum.fivem.net/t/tutorial-for-gcphone-with-call-and-job-message-other/177904
--]]
--[[
ESX = nil
Citizen.CreateThread(function()
while ESX == nil do
TriggerEvent('esx:getShDFWMaredObjDFWMect', function(obj) ESX = obj end)
Citizen.Wait(0)
end
end)
function hasPhone (cb)
if (ESX == nil) then return cb(0) end
ESX.TriggerServerCallback('gcphone:getItemAmount', function(qtty)
cb(qtty > 0)
end, 'phone')
end
function ShowNoPhoneWarning ()
if (ESX == nil) then return end
ESX.ShowNotification("Vous n'avez pas de ~r~téléphone~s~")
end
--]]
--====================================================================================
--
--====================================================================================
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
if takePhoto ~= true then
if IsControlJustPressed(1, KeyOpenClose) then
hasPhone(function (hasPhone)
if hasPhone == true then
TooglePhone()
else
ShowNoPhoneWarning()
end
end)
end
if menuIsOpen == true then
for _, value in ipairs(KeyToucheCloseEvent) do
if IsControlJustPressed(1, value.code) then
SendNUIMessage({keyUp = value.event})
end
end
if useMouse == true and hasFocus == ignoreFocus then
local nuiFocus = not hasFocus
SetNuiFocus(nuiFocus, nuiFocus)
hasFocus = nuiFocus
elseif useMouse == false and hasFocus == true then
SetNuiFocus(false, false)
hasFocus = false
end
else
if hasFocus == true then
SetNuiFocus(false, false)
hasFocus = false
end
end
end
end
end)
--====================================================================================
-- Active ou Deactive une application (appName => config.json)
--====================================================================================
RegisterNetEvent('gcPhone:setEnableApp')
AddEventHandler('gcPhone:setEnableApp', function(appName, enable)
SendNUIMessage({event = 'setEnableApp', appName = appName, enable = enable })
end)
--====================================================================================
-- Gestion des appels fixe
--====================================================================================
function startFixeCall (fixeNumber)
local number = ''
DisplayOnscreenKeyboard(1, "FMMC_MPM_NA", "", "", "", "", "", 10)
while (UpdateOnscreenKeyboard() == 0) do
DisableAllControlActions(0);
Wait(0);
end
if (GetOnscreenKeyboardResult()) then
number = GetOnscreenKeyboardResult()
end
if number ~= '' then
TriggerEvent('gcphone:autoCall', number, {
useNumber = fixeNumber
})
PhonePlayCall(true)
end
end
function TakeAppel (infoCall)
TriggerEvent('gcphone:autoAcceptCall', infoCall)
end
RegisterNetEvent("gcPhone:notifyFixePhoneChange")
AddEventHandler("gcPhone:notifyFixePhoneChange", function(_PhoneInCall)
PhoneInCall = _PhoneInCall
end)
--[[
Affiche les imformations quant le joueurs est proche d'un fixe
--]]
function showFixePhoneHelper (coords)
for number, data in pairs(FixePhone) do
local dist = GetDistanceBetweenCoords(
data.coords.x, data.coords.y, data.coords.z,
coords.x, coords.y, coords.z, 1)
if dist <= 2.0 then
SetTextComponentFormat("STRING")
AddTextComponentString("~g~" .. data.name .. ' ~o~' .. number .. '~n~~INPUT_PICKUP~~w~ Verwendung')
DisplayHelpTextFromStringLabel(0, 0, 0, -1)
if IsControlJustPressed(1, KeyTakeCall) then
startFixeCall(number)
end
break
end
end
end
Citizen.CreateThread(function ()
local mod = 0
while true do
local playerPed = PlayerPedId()
local coords = GetEntityCoords(playerPed)
local inRangeToActivePhone = false
local inRangedist = 0
for i, _ in pairs(PhoneInCall) do
local dist = GetDistanceBetweenCoords(
PhoneInCall[i].coords.x, PhoneInCall[i].coords.y, PhoneInCall[i].coords.z,
coords.x, coords.y, coords.z, 1)
if (dist <= soundDistanceMax) then
DrawMarker(1, PhoneInCall[i].coords.x, PhoneInCall[i].coords.y, PhoneInCall[i].coords.z,
0,0,0, 0,0,0, 0.1,0.1,0.1, 0,255,0,255, 0,0,0,0,0,0,0)
inRangeToActivePhone = true
inRangedist = dist
if (dist <= 1.5) then
SetTextComponentFormat("STRING")
AddTextComponentString("~INPUT_PICKUP~ Auflegen")
DisplayHelpTextFromStringLabel(0, 0, 1, -1)
if IsControlJustPressed(1, KeyTakeCall) then
PhonePlayCall(true)
TakeAppel(PhoneInCall[i])
PhoneInCall = {}
StopSoundJS('ring2.ogg')
end
end
break
end
end
if inRangeToActivePhone == false then
showFixePhoneHelper(coords)
end
if inRangeToActivePhone == true and currentPlaySound == false then
PlaySoundJS('ring2.ogg', 0.2 + (inRangedist - soundDistanceMax) / -soundDistanceMax * 0.8 )
currentPlaySound = true
elseif inRangeToActivePhone == true then
mod = mod + 1
if (mod == 15) then
mod = 0
SetSoundVolumeJS('ring2.ogg', 0.2 + (inRangedist - soundDistanceMax) / -soundDistanceMax * 0.8 )
end
elseif inRangeToActivePhone == false and currentPlaySound == true then
currentPlaySound = false
StopSoundJS('ring2.ogg')
end
Citizen.Wait(0)
end
end)
function PlaySoundJS (sound, volume)
SendNUIMessage({ event = 'playSound', sound = sound, volume = volume })
end
function SetSoundVolumeJS (sound, volume)
SendNUIMessage({ event = 'setSoundVolume', sound = sound, volume = volume})
end
function StopSoundJS (sound)
SendNUIMessage({ event = 'stopSound', sound = sound})
end
RegisterNetEvent("gcPhone:forceOpenPhone")
AddEventHandler("gcPhone:forceOpenPhone", function(_myPhoneNumber)
if menuIsOpen == false then
TooglePhone()
end
end)
--====================================================================================
-- Events
--====================================================================================
RegisterNetEvent("gcPhone:myPhoneNumber")
AddEventHandler("gcPhone:myPhoneNumber", function(_myPhoneNumber)
myPhoneNumber = _myPhoneNumber
SendNUIMessage({event = 'updateMyPhoneNumber', myPhoneNumber = myPhoneNumber})
end)
RegisterNetEvent("gcPhone:contactList")
AddEventHandler("gcPhone:contactList", function(_contacts)
SendNUIMessage({event = 'updateContacts', contacts = _contacts})
contacts = _contacts
end)
RegisterNetEvent("gcPhone:allMessage")
AddEventHandler("gcPhone:allMessage", function(allmessages)
SendNUIMessage({event = 'updateMessages', messages = allmessages})
messages = allmessages
end)
RegisterNetEvent("gcPhone:getBourse")
AddEventHandler("gcPhone:getBourse", function(bourse)
SendNUIMessage({event = 'updateBourse', bourse = bourse})
end)
RegisterNetEvent("gcPhone:receiveMessage")
AddEventHandler("gcPhone:receiveMessage", function(message)
-- SendNUIMessage({event = 'updateMessages', messages = messages})
SendNUIMessage({event = 'newMessage', message = message})
table.insert(messages, message)
if message.owner == 0 then
local text = '~o~Neue Nachricht'
if ShowNumberNotification == true then
text = '~o~Neue Nachricht ~y~'.. message.transmitter
for _,contact in pairs(contacts) do
if contact.number == message.transmitter then
text = '~o~Neue Nachricht von ~g~'.. contact.display
break
end
end
end
SetNotificationTextEntry("STRING")
AddTextComponentString(text)
DrawNotification(false, false)
PlaySound(-1, "Menu_Accept", "Phone_SoundSet_Default", 0, 0, 1)
Citizen.Wait(300)
PlaySound(-1, "Menu_Accept", "Phone_SoundSet_Default", 0, 0, 1)
Citizen.Wait(300)
PlaySound(-1, "Menu_Accept", "Phone_SoundSet_Default", 0, 0, 1)
end
end)
--====================================================================================
-- Function client | Contacts
--====================================================================================
function addContact(display, num)
TriggerServerEvent('gcPhone:addContact', display, num)
end
function deleteContact(num)
TriggerServerEvent('gcPhone:deleteContact', num)
end
--====================================================================================
-- Function client | Messages
--====================================================================================
function sendMessage(num, message)
TriggerServerEvent('gcPhone:sendMessage', num, message)
end
function deleteMessage(msgId)
TriggerServerEvent('gcPhone:deleteMessage', msgId)
for k, v in ipairs(messages) do
if v.id == msgId then
table.remove(messages, k)
SendNUIMessage({event = 'updateMessages', messages = messages})
return
end
end
end
function deleteMessageContact(num)
TriggerServerEvent('gcPhone:deleteMessageNumber', num)
end
function deleteAllMessage()
TriggerServerEvent('gcPhone:deleteAllMessage')
end
function setReadMessageNumber(num)
TriggerServerEvent('gcPhone:setReadMessageNumber', num)
for k, v in ipairs(messages) do
if v.transmitter == num then
v.isRead = 1
end
end
end
function requestAllMessages()
TriggerServerEvent('gcPhone:requestAllMessages')
end
function requestAllContact()
TriggerServerEvent('gcPhone:requestAllContact')
end
--====================================================================================
-- Function client | Appels
--====================================================================================
local aminCall = false
local inCall = false
RegisterNetEvent("gcPhone:waitingCall")
AddEventHandler("gcPhone:waitingCall", function(infoCall, initiator)
SendNUIMessage({event = 'waitingCall', infoCall = infoCall, initiator = initiator})
if initiator == true then
PhonePlayCall()
if menuIsOpen == false then
TooglePhone()
end
end
end)
RegisterNetEvent("gcPhone:acceptCall")
AddEventHandler("gcPhone:acceptCall", function(infoCall, initiator)
if inCall == false and USE_RTC == false then
inCall = true
exports['tokovoip_script']:setPlayerData(GetPlayerName(PlayerId()), "call:channel", infoCall.id + 20, true)
exports.tokovoip_script:addPlayerToRadio(infoCall.id + 20)
TokoVoipID = infoCall.id + 20
end
if menuIsOpen == false then
TooglePhone()
end
PhonePlayCall()
SendNUIMessage({event = 'acceptCall', infoCall = infoCall, initiator = initiator})
end)
RegisterNetEvent("gcPhone:rejectCall")
AddEventHandler("gcPhone:rejectCall", function(infoCall)
if inCall == true then
inCall = false
Citizen.InvokeNative(0xE036A705F989E049)
exports['tokovoip_script']:setPlayerData(GetPlayerName(PlayerId()), "call:channel", 'nil', true)
exports.tokovoip_script:removePlayerFromRadio(TokoVoipID)
TokoVoipID = nil
end
PhonePlayText()
SendNUIMessage({event = 'rejectCall', infoCall = infoCall})
end)
RegisterNetEvent("gcPhone:historiqueCall")
AddEventHandler("gcPhone:historiqueCall", function(historique)
SendNUIMessage({event = 'historiqueCall', historique = historique})
end)
function startCall (phone_number, rtcOffer, extraData)
TriggerServerEvent('gcPhone:startCall', phone_number, rtcOffer, extraData)
end
function acceptCall (infoCall, rtcAnswer)
TriggerServerEvent('gcPhone:acceptCall', infoCall, rtcAnswer)
end
function rejectCall(infoCall)
TriggerServerEvent('gcPhone:rejectCall', infoCall)
end
function ignoreCall(infoCall)
TriggerServerEvent('gcPhone:ignoreCall', infoCall)
end
function requestHistoriqueCall()
TriggerServerEvent('gcPhone:getHistoriqueCall')
end
function appelsDeleteHistorique (num)
TriggerServerEvent('gcPhone:appelsDeleteHistorique', num)
end
function appelsDeleteAllHistorique ()
TriggerServerEvent('gcPhone:appelsDeleteAllHistorique')
end
--====================================================================================
-- Event NUI - Appels
--====================================================================================
RegisterNUICallback('startCall', function (data, cb)
startCall(data.numero, data.rtcOffer, data.extraData)
cb()
end)
RegisterNUICallback('acceptCall', function (data, cb)
acceptCall(data.infoCall, data.rtcAnswer)
cb()
end)
RegisterNUICallback('rejectCall', function (data, cb)
rejectCall(data.infoCall)
cb()
end)
RegisterNUICallback('ignoreCall', function (data, cb)
ignoreCall(data.infoCall)
cb()
end)
RegisterNUICallback('notififyUseRTC', function (use, cb)
USE_RTC = use
if USE_RTC == true and inCall == true then
inCall = false
Citizen.InvokeNative(0xE036A705F989E049)
exports.tokovoip_script:removePlayerFromRadio(TokoVoipID)
TokoVoipID = nil
end
cb()
end)
RegisterNUICallback('onCandidates', function (data, cb)
TriggerServerEvent('gcPhone:candidates', data.id, data.candidates)
cb()
end)
RegisterNetEvent("gcPhone:candidates")
AddEventHandler("gcPhone:candidates", function(candidates)
SendNUIMessage({event = 'candidatesAvailable', candidates = candidates})
end)
RegisterNetEvent('gcphone:autoCall')
AddEventHandler('gcphone:autoCall', function(number, extraData)
if number ~= nil then
SendNUIMessage({ event = "autoStartCall", number = number, extraData = extraData})
end
end)
RegisterNetEvent('gcphone:autoCallNumber')
AddEventHandler('gcphone:autoCallNumber', function(data)
TriggerEvent('gcphone:autoCall', data.number)
end)
RegisterNetEvent('gcphone:autoAcceptCall')
AddEventHandler('gcphone:autoAcceptCall', function(infoCall)
SendNUIMessage({ event = "autoAcceptCall", infoCall = infoCall})
end)
--====================================================================================
-- Gestion des evenements NUI
--====================================================================================
RegisterNUICallback('log', function(data, cb)
print(data)
cb()
end)
RegisterNUICallback('focus', function(data, cb)
cb()
end)
RegisterNUICallback('blur', function(data, cb)
cb()
end)
RegisterNUICallback('reponseText', function(data, cb)
local limit = data.limit or 255
local text = data.text or ''
DisplayOnscreenKeyboard(1, "FMMC_MPM_NA", "", text, "", "", "", limit)
while (UpdateOnscreenKeyboard() == 0) do
DisableAllControlActions(0);
Wait(0);
end
if (GetOnscreenKeyboardResult()) then
text = GetOnscreenKeyboardResult()
end
cb(json.encode({text = text}))
end)
--====================================================================================
-- Event - Messages
--====================================================================================
RegisterNUICallback('getMessages', function(data, cb)
cb(json.encode(messages))
end)
RegisterNUICallback('sendMessage', function(data, cb)
if data.message == '%pos%' then
local myPos = GetEntityCoords(PlayerPedId())
data.message = 'GPS: ' .. myPos.x .. ', ' .. myPos.y
end
TriggerServerEvent('gcPhone:sendMessage', data.phoneNumber, data.message)
end)
RegisterNUICallback('deleteMessage', function(data, cb)
deleteMessage(data.id)
cb()
end)
RegisterNUICallback('deleteMessageNumber', function (data, cb)
deleteMessageContact(data.number)
cb()
end)
RegisterNUICallback('deleteAllMessage', function (data, cb)
deleteAllMessage()
cb()
end)
RegisterNUICallback('setReadMessageNumber', function (data, cb)
setReadMessageNumber(data.number)
cb()
end)
--====================================================================================
-- Event - Contacts
--====================================================================================
RegisterNUICallback('addContact', function(data, cb)
TriggerServerEvent('gcPhone:addContact', data.display, data.phoneNumber)
end)
RegisterNUICallback('updateContact', function(data, cb)
TriggerServerEvent('gcPhone:updateContact', data.id, data.display, data.phoneNumber)
end)
RegisterNUICallback('deleteContact', function(data, cb)
TriggerServerEvent('gcPhone:deleteContact', data.id)
end)
RegisterNUICallback('getContacts', function(data, cb)
cb(json.encode(contacts))
end)
RegisterNUICallback('setGPS', function(data, cb)
SetNewWaypoint(tonumber(data.x), tonumber(data.y))
cb()
end)
-- Add security for event (leuit#0100)
RegisterNUICallback('callEvent', function(data, cb)
local eventName = data.eventName or ''
if string.match(eventName, 'gcphone') then
if data.data ~= nil then
TriggerEvent(data.eventName, data.data)
else
TriggerEvent(data.eventName)
end
else
print('Event not allowed')
end
cb()
end)
RegisterNUICallback('useMouse', function(um, cb)
useMouse = um
end)
RegisterNUICallback('deleteALL', function(data, cb)
TriggerServerEvent('gcPhone:deleteALL')
cb()
end)
function TooglePhone()
menuIsOpen = not menuIsOpen
SendNUIMessage({show = menuIsOpen})
if menuIsOpen == true then
PhonePlayIn()
else
PhonePlayOut()
end
end
RegisterNUICallback('faketakePhoto', function(data, cb)
menuIsOpen = false
SendNUIMessage({show = false})
cb()
TriggerEvent('camera:open')
end)
RegisterNUICallback('closePhone', function(data, cb)
menuIsOpen = false
SendNUIMessage({show = false})
PhonePlayOut()
cb()
end)
----------------------------------
---------- GESTION APPEL ---------
----------------------------------
RegisterNUICallback('appelsDeleteHistorique', function (data, cb)
appelsDeleteHistorique(data.numero)
cb()
end)
RegisterNUICallback('appelsDeleteAllHistorique', function (data, cb)
appelsDeleteAllHistorique(data.infoCall)
cb()
end)
----------------------------------
---------- GESTION VIA WEBRTC ----
----------------------------------
AddEventHandler('onClientResourceStart', function(res)
DoScreenFadeIn(300)
if res == "gcphone" then
TriggerServerEvent('gcPhone:allUpdate')
end
end)
RegisterNUICallback('setIgnoreFocus', function (data, cb)
ignoreFocus = data.ignoreFocus
cb()
end)
RegisterNUICallback('takePhoto', function(data, cb)
CreateMobilePhone(1)
CellCamActivate(true, true)
takePhoto = true
Citizen.Wait(0)
if hasFocus == true then
SetNuiFocus(false, false)
hasFocus = false
end
while takePhoto do
Citizen.Wait(0)
if IsControlJustPressed(1, 27) then -- Toogle Mode
frontCam = not frontCam
CellFrontCamActivate(frontCam)
elseif IsControlJustPressed(1, 177) then -- CANCEL
DestroyMobilePhone()
CellCamActivate(false, false)
cb(json.encode({ url = nil }))
takePhoto = false
break
elseif IsControlJustPressed(1, 176) then -- TAKE.. PIC
exports['screenshot-basic']:requestScreenshotUpload(data.url, data.field, function(data)
local resp = json.decode(data)
DestroyMobilePhone()
CellCamActivate(false, false)
cb(json.encode({ url = resp.files[1].url }))
end)
takePhoto = false
end
HideHudComponentThisFrame(7)
HideHudComponentThisFrame(8)
HideHudComponentThisFrame(9)
HideHudComponentThisFrame(6)
HideHudComponentThisFrame(19)
HideHudAndRadarThisFrame()
end
Citizen.Wait(1000)
PhonePlayAnim('text', false, true)
end)
(You need to use HotKeys to Speak, it will not work without)
Have Fun
Thank you! Will test it out
Change TSChannelSupport to LOBBY.
Players are allowed to join the game in TSChannelSupport channels
Hello!
I heave one big problem.
I heave 99+ players, and tokovoip stop work 1-2mins and work again, and stop work again.
How can i set up tokovoip to 128slot ?
Thanks for help before forumers!
plugin_data = {
-- TeamSpeak channel name used by the voip
-- If the TSChannelWait is enabled, players who are currently in TSChannelWait will be automatically moved
-- to the TSChannel once everything is running
TSChannel = "LOBBY",
TSPassword = "07092004", -- TeamSpeak channel password (can be empty)
-- Optional: TeamSpeak waiting channel name, players wait in this channel and will be moved to the TSChannel automatically
-- If the TSChannel is public and people can join directly, you can leave this empty and not use the auto-move
TSChannelWait = "WAITING",
-- Blocking screen informations
TSServer = "35.198.207.100", -- TeamSpeak server address to be displayed on blocking screen
TSChannelSupport = "LOBBY", -- TeamSpeak support channel name displayed on blocking screen
TSDownload = "https://www.teamspeak.com/", -- Download link displayed on blocking screen
TSChannelWhitelist = { -- Black screen will not be displayed when users are in those TS channels
"LOBBY",
},
-- The following is purely TS client settings, to match tastes
local_click_on = true, -- Is local click on sound active
local_click_off = true, -- Is local click off sound active
remote_click_on = false, -- Is remote click on sound active
remote_click_off = true, -- Is remote click off sound active
enableStereoAudio = true, -- If set to true, positional audio will be stereo (you can hear people more on the left or the right around you)
localName = "", -- If set, this name will be used as the user's teamspeak display name
localNamePrefix = "[" .. GetPlayerServerId(PlayerId()) .. "] ", -- If set, this prefix will be added to the user's teamspeak display name
}
like this?
has anyone a solution to make spectating people work with tokovoip?
Moin Ich Habe jetzt Das problem das z.B Keine Medic Calls etc mehr kommen (Wenn man sie anschreibt)
Hello, is it possible to use TOKO Voip without TeamSpeak?
Thanks in advance
If I wanted to extend this from 100 channels to 1000 channels how would I do this?
Is it as simple as this:
+++ b/tokovoip_script/src/c_TokoVoip.lua
@@ -138,7 +138,7 @@ function TokoVoip.initialize(self)
if (IsControlPressed(0, self.radioKey) and self.plugin_data.radioChannel ~= -1) then -- Talk on radio
self.plugin_data.radioTalking = true;
self.plugin_data.localRadioClicks = true;
- if (self.plugin_data.radioChannel > 100) then
+ if (self.plugin_data.radioChannel > 1000) then
self.plugin_data.localRadioClicks = false;
end
if (not getPlayerData(self.serverId, "radio:talking")) then
diff --git a/tokovoip_script/src/c_main.lua b/tokovoip_script/src/c_main.lua
+++ b/tokovoip_script/src/c_main.lua
@@ -125,7 +125,7 @@ local function clientProcessing()
for _, channel in pairs(voip.myChannels) do
if (channel.subscribers[voip.serverId] and channel.subscribers[playerServerId] and voip.myChannels[remotePlayerChannel] and remotePlayerUsingRadio) then
- if (remotePlayerChannel <= 100) then
+ if (remotePlayerChannel <= 1000) then
tbl.radioEffect = true;
end
tbl.volume = 0;
+++ b/tokovoip_script/src/s_main.lua
@@ -42,7 +42,7 @@ AddEventHandler("TokoVoip:addPlayerToRadio", addPlayerToRadio);
function removePlayerFromRadio(channelId, playerServerId)
if (channels[channelId] and channels[channelId].subscribers[playerServerId]) then
channels[channelId].subscribers[playerServerId] = nil;
- if (channelId > 100) then
+ if (channelId > 1000) then
if (tablelength(channels[channelId].subscribers) == 0) then
channels[channelId] = nil;
end
Is it as simply replacing 100 with 1000 above?
No that is not possible
Does anyone know if there is some sort of way to prevent players from moving when they see the initial screen if they aren’t in Teamspeak? We are trying to use this as a whitelisting plugin as well. While the player sees the screen, I believe they are still able to move even though they aren’t in the Teamspeak server.
Disable all their keys while on that screen However i would like to point out as i just found out myself
Im not even sure where to start with this I have no idea how to do anything on TeamSpeak if any wonderful souls would be willing to walk me through on discord call Dabz#3540 I would appreciate it. I think so far what i need to do is like buy a teamspeak server then configure it to connect with the channel ids and passwords or something, if someone could just walk me through that would be great! shoot me a message thanks!