FrazzIe / rp-radio

An in-game radio which makes use of the mumble-voip radio API for FiveM
MIT License
41 stars 62 forks source link

ITEM rp-radio #11

Closed SienkoV2 closed 2 years ago

SienkoV2 commented 4 years ago

Hi ! I want create item with you rp-radio did you have an tips for create this ^^ ?

mindiw01 commented 4 years ago

Hey! You can create the item with this form: server-side:

ESX.RegisterUsableItem('radio', function(source)
    local xPlayer = ESX.GetPlayerFromId(source)
    TriggerClientEvent('Radio.Set', source, true)
end)
T4K33N commented 4 years ago

But rp-radio doesn't have a server file. Where should i put the code ?

mindiw01 commented 4 years ago

You can register on esx_basicneeds, or another scripts with server-side!

Or you can create one script apart with this (you can call with the name like you want):

fxmanifest.lua:

fx_version 'adamant'
game 'gta5'

server_script 'server.lua'

server.lua:

ESX.RegisterUsableItem('radio', function(source)
    local xPlayer = ESX.GetPlayerFromId(source)
    TriggerClientEvent('Radio.Set', source, true)
end)
Bonzaii99 commented 4 years ago

when i remove the radio item in my inventory i can still use radio

Stevekovix commented 4 years ago

@mindiw01 it's clearly not like that, your exemple it's for make the item radio usable and your exemple it's wrong. If u want make the item usable use that in server.lua from esx_basicneeds :

local statusradio = false ESX.RegisterUsableItem('rp-radio', function(source) local xPlayer = ESX.GetPlayerFromId(source) if statusradio == false then TriggerClientEvent('Radio.Toggle', source) print('open') statusradio = true else TriggerClientEvent('Radio.Toggle', source) print('off') statusradio = false end end)

FBFezz commented 4 years ago

Figured it out. (New user to Mumble)

In Client.lua put this at the top

ESX = nil

Citizen.CreateThread(function()
    while ESX == nil do
        TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
        Citizen.Wait(0)
    end
end)

Then at the radio command Replace it with mine

        Enabled = true, -- Add a command to be able to open/close the radio
        Name = "radio", -- Command name
        Help = "Toggle hand radio", -- Command help shown in chatbox when typing the command
        Params = {},
        Handler = function(src, args, raw)
            ESX.TriggerServerCallback('rp-radio:getItemAmount', function(quantity)
                if quantity > 0 then
            local playerPed = PlayerPedId()
            local isFalling = IsPedFalling(playerPed)
            local isDead = IsEntityDead(playerPed)

            if not isFalling and Radio.Enabled and Radio.Has and not isDead then
                Radio:Toggle(not Radio.Open)
            elseif (Radio.Open or Radio.On) and ((not Radio.Enabled) or (not Radio.Has) or isDead) then
                Radio:Toggle(false)
                Radio.On = false
                Radio:Remove()
                exports["mumble-voip"]:SetMumbleProperty("radioEnabled", false)
            elseif Radio.Open and isFalling then
                Radio:Toggle(false)
            end
        else
            Radio:Toggle(false)
            Radio.On = false
            Radio:Remove()
            exports["mumble-voip"]:SetMumbleProperty("radioEnabled", false)
        end
    end, 'radio')
        end,

Server.lua put this

ESX = nil

TriggerEvent('esx:getSharedObject', function(obj)
    ESX = obj
end)

ESX.RegisterServerCallback('rp-radio:getItemAmount', function(source, cb, item)
    local xPlayer = ESX.GetPlayerFromId(source)
    local quantity = xPlayer.getInventoryItem(item).count

    cb(quantity)
end)
Kahvlibanaan0 commented 4 years ago

when i remove the radio item in my inventory i can still use radio

FBFezz commented 4 years ago

Did you restart the server after doing what i said?

Kahvlibanaan0 commented 4 years ago

Yep

FBFezz commented 4 years ago

Hmm, i mean its a start im getting that as well but If anyone else can help contribute? We have it so it works if you use but if you remove radio you can still use

Kahvlibanaan0 commented 4 years ago

I put server.lua one to esx_basicneeds, is that bad?

FBFezz commented 4 years ago

I made the server.lua in the radio file. Its already in the manifest so all you do is make the file and call it server.lua

Kahvlibanaan0 commented 4 years ago

And this will fix my issue?

FBFezz commented 4 years ago

Possibly? I cant use the radio when i don't have it but if im on a radio channel it stays but i haven't coded that in yet as i haven't looked at mumble for long

Kahvlibanaan0 commented 4 years ago

Its not taking radio even out, but when i add radio to registable item its taking radio out but when i drop it its still usable

Kahvlibanaan0 commented 4 years ago

I got a solution at server.lua add this `ESX = nil

TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)

ESX.RegisterServerCallback('rp-radio:getItemamount', function(source, cb, item) local xPlayer = ESX.GetPlayerFromId(source) local qtty = xPlayer.getInventoryItem(item).count cb(qtty) end) `

At the client.lua add this `Citizen.CreateThread(function() while ESX == nil do TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) Citizen.Wait(0) end end)

Citizen.CreateThread(function() while true do Citizen.Wait(0) if IsControlJustPressed(1, 170) then ESX.TriggerServerCallback('rp-radio:getItemamount', function(qtty) if qtty > 0 then SetRadio(true) else SetRadio(false) ClearPedTasks(GetPlayerPed(-1)) TriggerEvent("pNotify:SendNotification", { text = "Sul puudub raadio", type = "error", timeout = math.random(1000, 1000), layout = "centerRight", queue = "right" }) end end, 'radio') end end end)`

KacpereQ0 commented 4 years ago

So anyone got the script?

Stevekovix commented 4 years ago

i use the basic rp-radio from frazzle and works perfectly

Sylvesterb commented 4 years ago

i use the basic rp-radio from frazzle and works perfectly

Thanks for the quite pointless message. The issue is about using a radio item.

Sylvesterb commented 4 years ago

So anyone got the script?

Yes its here in the github

Stevekovix commented 4 years ago

i use the basic rp-radio from frazzle and works perfectly

Thanks for the quite pointless message. The issue is about using a radio item.

In the type of message, no need you are at the top .. to criticize and give no solutions

We have already given solutions in passing;)

DNDdjay commented 4 years ago

i am not sure but the solution there is showing

Figured it out. (New user to Mumble)

In Client.lua put this at the top

ESX = nil

Citizen.CreateThread(function() while ESX == nil do TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) Citizen.Wait(0) end end) Then at the radio command Replace it with mine

    Enabled = true, -- Add a command to be able to open/close the radio
    Name = "radio", -- Command name
    Help = "Toggle hand radio", -- Command help shown in chatbox when typing the command
    Params = {},
    Handler = function(src, args, raw)
        ESX.TriggerServerCallback('rp-radio:getItemAmount', function(quantity)
            if quantity > 0 then
        local playerPed = PlayerPedId()
        local isFalling = IsPedFalling(playerPed)
        local isDead = IsEntityDead(playerPed)

        if not isFalling and Radio.Enabled and Radio.Has and not isDead then
            Radio:Toggle(not Radio.Open)
        elseif (Radio.Open or Radio.On) and ((not Radio.Enabled) or (not Radio.Has) or isDead) then
            Radio:Toggle(false)
            Radio.On = false
            Radio:Remove()
            exports["mumble-voip"]:SetMumbleProperty("radioEnabled", false)
        elseif Radio.Open and isFalling then
            Radio:Toggle(false)
        end
    else
        Radio:Toggle(false)
        Radio.On = false
        Radio:Remove()
        exports["mumble-voip"]:SetMumbleProperty("radioEnabled", false)
    end
end, 'radio')
    end,

Server.lua put this

ESX = nil

TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)

ESX.RegisterServerCallback('rp-radio:getItemAmount', function(source, cb, item) local xPlayer = ESX.GetPlayerFromId(source) local quantity = xPlayer.getInventoryItem(item).count

cb(quantity)

end)

is it not missing the part that is telling what item there is needed ????

iSentrie commented 4 years ago

i am not sure but the solution there is showing

Figured it out. (New user to Mumble)

In Client.lua put this at the top

ESX = nil

Citizen.CreateThread(function() while ESX == nil do TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) Citizen.Wait(0) end end) Then at the radio command Replace it with mine

  Enabled = true, -- Add a command to be able to open/close the radio
  Name = "radio", -- Command name
  Help = "Toggle hand radio", -- Command help shown in chatbox when typing the command
  Params = {},
  Handler = function(src, args, raw)
      ESX.TriggerServerCallback('rp-radio:getItemAmount', function(quantity)
          if quantity > 0 then
      local playerPed = PlayerPedId()
      local isFalling = IsPedFalling(playerPed)
      local isDead = IsEntityDead(playerPed)

      if not isFalling and Radio.Enabled and Radio.Has and not isDead then
          Radio:Toggle(not Radio.Open)
      elseif (Radio.Open or Radio.On) and ((not Radio.Enabled) or (not Radio.Has) or isDead) then
          Radio:Toggle(false)
          Radio.On = false
          Radio:Remove()
          exports["mumble-voip"]:SetMumbleProperty("radioEnabled", false)
      elseif Radio.Open and isFalling then
          Radio:Toggle(false)
      end
  else
      Radio:Toggle(false)
      Radio.On = false
      Radio:Remove()
      exports["mumble-voip"]:SetMumbleProperty("radioEnabled", false)
  end
end, 'radio')
  end,

Server.lua put this

ESX = nil

TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)

ESX.RegisterServerCallback('rp-radio:getItemAmount', function(source, cb, item) local xPlayer = ESX.GetPlayerFromId(source) local quantity = xPlayer.getInventoryItem(item).count

cb(quantity)

end)

is it not missing the part that is telling what item there is needed ????

no its here image

DNDdjay commented 4 years ago

okay is just it dont works for me

i have too set it, so u can use radio without having the radio

and there is no errors in the console or F8 menu

Kahvlibanaan0 commented 4 years ago

Tomorrow i can upload whole radio script. So u can just download it

TsShoyu commented 4 years ago

Tomorrow i can upload whole radio script. So u can just download it

I would be very grateful

Phantomymous commented 4 years ago

i want the radio as a item too :/

Phantomymous commented 4 years ago

@Kahvlibanaan0

ericb160 commented 4 years ago

Tomorrow i can upload whole radio script. So u can just download it

I would be very grateful

that would help a lot :) thanks

DNDdjay commented 4 years ago

Tomorrow i can upload whole radio script. So u can just download it

when will u uploade the script ???

iiAlphaWolf commented 3 years ago

If you have the item stuff fixed and you guys want to solve the issue players can still hear you even they dont have an radio add this: (in client) AddEventHandler('nkrp:loadingScreenOff', function() exports["mumble-voip"]:SetRadioChannel(0) end)

DNDdjay commented 3 years ago

If you have the item stuff fixed and you guys want to solve the issue players can still hear you even they dont have an radio add this: (in client) AddEventHandler('nkrp:loadingScreenOff', function() exports["mumble-voip"]:SetRadioChannel(0) end)

what do u mean this event do ???

cuz for me its dont sound like the problem we are having

can be me there is wrong

DNDdjay commented 3 years ago

I found a way too make it work

ESX.RegisterUsableItem('radio', function(source) local xPlayer = ESX.GetPlayerFromId(source) TriggerClientEvent('Radio.Set', source, true) TriggerClientEvent('Radio.Toggle', source) end)

past that in ur server.lua

GamenHaaDee commented 3 years ago

Does anyone have a pre written script for it?

DNDdjay commented 3 years ago

Does anyone have a pre written script for it?

i have show the script part there is need right over ur comment

DNDdjay commented 3 years ago

Does anyone have a pre written script for it?

here u go

https://github.com/DNDdjay/RP_radio

GamenHaaDee commented 3 years ago

Doesnt work normaly cuz i have the item i can use it but when i drop it i can still open it with Shift + F3

DNDdjay commented 3 years ago

its not working as toko voip for that u need u rewhite the whole item system in the script

beauflexx commented 3 years ago

Does anyone have a pre written script for it?

here u go

https://github.com/DNDdjay/RP_radio

I tried using this, using my hotkeys to bring it up. shift and f10 however nothing happens.

anything else i would need to do?

DNDdjay commented 3 years ago

u have to go in ur inventory and say use radio before u can use it

beauflexx commented 3 years ago

if i open my inventory i cant open the chat box also dragging item over to use doesnt show its a useable item also tried commands /radio /useradio /radiouse, also reverted back to original commands wonder if i should restart server.. thank you for quick reply been trying to do this

DNDdjay commented 3 years ago

okay what framework are u using ???

beauflexx commented 3 years ago

esx 1.1 up to date

beauflexx commented 3 years ago

ty ty

heavenlygamer04 commented 3 years ago

Does anyone have a pre written script for it?

here u go

https://github.com/DNDdjay/RP_radio

Hi! so i installed this remade script and it is loaded and i even have the radio in my inventory, but for some reason i cannot get it to work, ive tried the keybind and the command

thanks in advance

pablordgez commented 3 years ago

Add this to the top of client.lua ESX = nil

Then below the local radio part add this:

Citizen.CreateThread(function()
    while true do
        TriggerServerEvent("checkradio")
        Citizen.Wait(200)
    end
end)

RegisterNetEvent("doeshaveradio")
AddEventHandler("doeshaveradio",function()
    Radio.Has = true
end)

RegisterNetEvent("doesnthaveradio")
AddEventHandler("doesnthaveradio",function()

    Radio.Has = false
end)

Add this to server.lua (you can create a server.lua file in rp-radio and it will work right away)

ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)

RegisterNetEvent("checkradio")
AddEventHandler("checkradio", function()
    local xPlayer = ESX.GetPlayerFromId(source)
    if xPlayer ~= nil then
        local item_radio = xPlayer.getInventoryItem('radio').count
        if item_radio > 0 then
            xPlayer.triggerEvent("doeshaveradio")
        else
            xPlayer.triggerEvent("doesnthaveradio")
        end
    end
end)

I coded this and it worked. This was using ESX v1 Final, so you should use that

FuriousLeech commented 3 years ago

Does anyone have a pre written script for it?

here u go

https://github.com/DNDdjay/RP_radio

hey, would you be able to fix an issue where you need to restart the script every time you load into the server? i know the issue, just not how to fix it. its calling the radio or something before the character is even loaded in, so it needs a restart to work. i had the same issue with my dispatch. i had to TriggerEvent in my multichar script after the character has fully loaded. but im not sure what to trigger in this radio script.

pablordgez commented 3 years ago

Does anyone have a pre written script for it?

here u go https://github.com/DNDdjay/RP_radio

hey, would you be able to fix an issue where you need to restart the script every time you load into the server? i know the issue, just not how to fix it. its calling the radio or something before the character is even loaded in, so it needs a restart to work. i had the same issue with my dispatch. i had to TriggerEvent in my multichar script after the character has fully loaded. but im not sure what to trigger in this radio script.

Try mine https://github.com/pablordgez/rp-radio and tell me if it works

therealnoskill commented 3 years ago

Add this to the top of client.lua ESX = nil

Then below the local radio part add this:

Citizen.CreateThread(function()
    while true do
        TriggerServerEvent("checkradio")
        Citizen.Wait(200)
    end
end)

RegisterNetEvent("doeshaveradio")
AddEventHandler("doeshaveradio",function()
    Radio.Has = true
end)

RegisterNetEvent("doesnthaveradio")
AddEventHandler("doesnthaveradio",function()

  Radio.Has = false
end)

Add this to server.lua (you can create a server.lua file in rp-radio and it will work right away)

ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)

RegisterNetEvent("checkradio")
AddEventHandler("checkradio", function()
  local xPlayer = ESX.GetPlayerFromId(source)
  if xPlayer ~= nil then
      local item_radio = xPlayer.getInventoryItem('radio').count
      if item_radio > 0 then
          xPlayer.triggerEvent("doeshaveradio")
      else
          xPlayer.triggerEvent("doesnthaveradio")
      end
  end
end)

I coded this and it worked. This was using ESX v1 Final, so you should use that

this works very well :) TY

Mat40 commented 2 years ago

Add this to the top of client.lua ESX = nil Then below the local radio part add this:

Citizen.CreateThread(function()
    while true do
        TriggerServerEvent("checkradio")
        Citizen.Wait(200)
    end
end)

RegisterNetEvent("doeshaveradio")
AddEventHandler("doeshaveradio",function()
    Radio.Has = true
end)

RegisterNetEvent("doesnthaveradio")
AddEventHandler("doesnthaveradio",function()

    Radio.Has = false
end)

Add this to server.lua (you can create a server.lua file in rp-radio and it will work right away)

ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)

RegisterNetEvent("checkradio")
AddEventHandler("checkradio", function()
    local xPlayer = ESX.GetPlayerFromId(source)
    if xPlayer ~= nil then
        local item_radio = xPlayer.getInventoryItem('radio').count
        if item_radio > 0 then
            xPlayer.triggerEvent("doeshaveradio")
        else
            xPlayer.triggerEvent("doesnthaveradio")
        end
    end
end)

I coded this and it worked. This was using ESX v1 Final, so you should use that

this works very well :) TY

Hi i have this error : SCRIPT ERROR: @rp-radio/server.lua:10: attempt to call a nil value (field 'triggerEvent')