Jump to content

os triggerClientEvent e triggerServerEvent não estão se comunicando nao tem erro


Recommended Posts

-------------
lado server
-------------

function buyDrogas(player, command)
if command == "aceitardroga" then
    local dataCrack1 = getElementData(player, "p_noia")
    if dataCrack1 and tonumber(dataCrack1) > 0 then
        local dinheiro = getPlayerMoney(player)
        if dinheiro >= 2500 then
            local acc = getPlayerAccount(player)
            takePlayerMoney(player, 2500)
            setElementData(player, "p_noia", getElementData(player, "p_noia") - 1)
            setElementData(player, "noia", getElementData(player, "noia") + 1)
            setAccountData(acc, "noia", getElementData(player, "noia"))
            triggerClientEvent ( "money1_c1", root )

            outputChatBox("[Vendedor]: Você comprou 1 unidade de lança", player, 0, 255, 0)
        else
            outputChatBox("[Vendedor]: Voce nao tem drogas a compra !!!", player, 255, 0, 0)
        end
    else
        outputChatBox("[Vendedor]: Voce nao tem drogas a compra !!!", player, 255, 0, 0)
    end
end
end
addCommandHandler ("aceitardroga", buyDrogas)

function money001(vendedor)
givePlayerMoney ( vendedor, 2500 )
outputChatBox("[painelDG]: Voce vendeu e recebeu 2500 !!!", vendedor, 0, 255, 0)
end 
addEvent("money001", true)
addEventHandler ( "money001", getRootElement(), money001)




----------------------
lado client 
----------------------

local nomeplayerv = getPlayerName(getLocalPlayer())
local vendedorv = getPlayerFromName(nomeplayerv)
vendedor = vendedorv

function money1_c ( vendedor )
    triggerServerEvent ("money001", getLocalPlayer(), vendedor)
end
addEvent( "money1_c1", true )
addEventHandler( "money1_c", root, money1_c )
-- "os triggerClientEvent e triggerServerEvent não estão se comunicando"

 

Link to comment
21 hours ago, Lord Henry said:

Não utilize o nome da função igual ao nome do evento.

--------------------------------------------------------------------------------------------------------------							
--------------------------------------------------------------------------------------------------------------							
							
	-- Configuração do painel lado cliente --						
							
 local NOME_Painel = "PANEL DE DROGAS"							
 local NOME_SERVIDOR = "Brasil Zueira Insana"							
 							
 local cor_letras = tocolor(169, 169, 169, 255)							
							
 --Obs.: Lembrando que algumas configuracoes devem ser repeitadas no lado do servidor !!!							
							
--------------------------------------------------------------------------------------------------------------							
--------------------------------------------------------------------------------------------------------------							
							
 							
							
local screenW,screenH = guiGetScreenSize()							
local resW, resH = 1365,767							
local x, y =  (screenW/resW), (screenH/resH)							
							
gridlist = guiCreateGridList(x*529, y*264, x*160, y*260, false)							
coluna = guiGridListAddColumn(gridlist, "Players", 0.9)							
guiSetVisible(gridlist, false)							
							
							
--pesquisarNick = guiCreateEdit(x*529, y*240, x*160, y*20, "", false)							
--guiSetVisible(pesquisarNick, false)							
							
nomeplayerv = getPlayerName(getLocalPlayer())
vendedorv = getPlayerFromName(nomeplayerv)
vendedor = vendedorv							
							
painel_Drog = false							
function tag_Drog ()							
        dxDrawRectangle(x*514, y*191, x*381, y*400, tocolor(0, 0, 0, 225), false)        							
        dxDrawText("Selecione o player", x*527, y*244, x*689, y*234+20, tocolor(255, 255, 255, 255), x*1.00, "default", "center", "bottom", false, false, false, false, false)							
		dxDrawText("Fazer Vendas", x*689, y*380, x*885, y*415, tocolor(255, 255, 255, 255), x*1.00, "default", "center", "bottom", false, false, false, false, false)					
        							
		dxDrawImage(x*685, y*190, x*200, y*200, "GFX/Traficante.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)					
		dxDrawImage(x*755, y*445, x*45, y*35, "GFX/Lanca.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)					
		dxDrawImage(x*755, y*480, x*45, y*45, "GFX/Maconha.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)					
							
		dxDrawRectangle(x*810, y*446, x*74, y*34, tocolor(36, 35, 35, isCursorOnElement(x*810, y*446, x*34, y*34) and 255 or 100), false)					
		dxDrawText("Lança", x*699, y*448, x*885, y*480, cor_letras, x*1.00, "default-bold", "left", "center", false, false, false, false, false)					
		dxDrawText("Vender", x*817, y*446, x*885, y*480, tocolor(255, 255, 255, 255), x*1.35, "default-bold", "left", "center", false, false, false, false, false)					
							
		dxDrawRectangle(x*810, y*488, x*74, y*34, tocolor(36, 35, 35, isCursorOnElement(x*810, y*488, x*34, y*34) and 255 or 100), false)					
		dxDrawText("Maconha", x*699, y*525, x*885, y*480, cor_letras, x*1.00, "default-bold", "left", "center", false, false, false, false, false)					
		dxDrawText("Vender", x*817, y*530, x*885, y*480, tocolor(255, 255, 255, 255), x*1.35, "default-bold", "left", "center", false, false, false, false, false)					
							
        dxDrawText(NOME_SERVIDOR, x*524, y*548, x*885, y*565, tocolor(255, 255, 255, 255), x*1.00, "default", "center", "top", false, false, false, false, false)							
end							
							
function abrir () --<<++--							
    if painel_Drog == false then							
    addEventHandler ("onClientRender", root, tag_Drog)							
    painel_Drog = true --<<++--							
    showCursor (true)							
    guiSetVisible(gridlist, true)							
	playSoundFrontEnd(20)						
	--guiSetVisible(pesquisarNick, true)						
    else							
    if painel_Drog == true then							
    removeEventHandler ("onClientRender", root, tag_Drog)							
    guiSetVisible(gridlist, false)							
    painel_Drog = false --<<++--							
    showCursor (false)							
	playSoundFrontEnd(20)						
	--guiSetVisible(pesquisarNick, false)						
    end							
    end							
    end							
addEvent (NOME_Painel,true) --<<++--							
addEventHandler (NOME_Painel,root,abrir) --<<++--							
    							
function X ()							
    if painel_Drog == true then							
       if ( isCursorOnElement (x*855, y*170, x*40, y*42) ) then							
           removeEventHandler("onClientRender", root, tag_Drog)							
           guiSetVisible(gridlist, false)							
           showCursor (false)							
           painel_Drog = false							
		   playSoundFrontEnd(20)					
               end							
               end							
               end							
addEventHandler ("onClientClick", root, X)							
							
function Actualizar()							
guiGridListClear(gridlist)							
for index, player in ipairs(getElementsByType("player")) do							
 FILA = guiGridListAddRow(gridlist)							
 guiGridListSetItemText ( gridlist, FILA, coluna, (string.gsub ( getPlayerName(player), '#%x%x%x%x%x%x', '' ) or getPlayerName(player)), false, false)							
 guiGridListSetItemData ( gridlist, FILA, coluna, getPlayerName(player))							
end							
end							
addEventHandler("onClientPlayerJoin", getRootElement(), Actualizar)							
addEventHandler("onClientPlayerQuit", getRootElement(), Actualizar)							
addEventHandler("onClientPlayerChangeNick", getRootElement(), Actualizar)							
addEventHandler ("onClientResourceStart",getRootElement(), Actualizar)							
							
function pegarnick ()							
if source == gridlist then							
    local nomeplayer = guiGridListGetItemData(gridlist, guiGridListGetSelectedItem(gridlist), 1)							
    local jogadorx = getPlayerFromName(nomeplayer)							
    jogador = jogadorx	
   end							
end							
addEventHandler ("onClientResourceStart", getRootElement(), pegarnick)							
addEventHandler ("onClientGUIClick", gridlist, pegarnick, false)							
addEventHandler("onClientPlayerJoin", getRootElement(), pegarnick)							
addEventHandler("onClientPlayerQuit", getRootElement(), pegarnick)							
addEventHandler("onClientPlayerChangeNick", getRootElement(), pegarnick)							
							
function add_dg1 (_,state) 						
  if painel_Drog == true then							
    if state == "down" then							
      if isCursorOnElement (x*810, y*446, x*74, y*34) then							
       triggerServerEvent ("buyCrack001", getLocalPlayer(), jogador)		   
	   playSoundFrontEnd(37)	   					
    end							
 end							
end							
end							
addEventHandler ("onClientClick", root, add_dg1)

function money1_c ( )
   	triggerServerEvent ("money001", getLocalPlayer(), vendedor)	
end
addEvent( "money1_c1", true )
addEventHandler( "money1_c1", root, money1_c ) 

function money2_c ( )
   	triggerServerEvent ("money002", getLocalPlayer(), vendedor)	
end
addEvent( "money2_c2", true )
addEventHandler( "money2_c2", root, money2_c )						
							
function add_dg2 (_,state) 						
  if painel_Drog == true then							
    if state == "down" then							
      if isCursorOnElement (x*810, y*488, x*74, y*34) then							
       triggerServerEvent ("buyMaconha001", getLocalPlayer(), jogador)							
	   playSoundFrontEnd(37)  						
    end							
 end							
end							
end							
addEventHandler ("onClientClick", root, add_dg2 )							
							
function isCursorOnElement(x,y,w,h)							
 local mx,my = getCursorPosition ()							
 local fullx,fully = guiGetScreenSize()							
 cursorx,cursory = mx*fullx,my*fully							
 if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then							
  return true							
 else							
  return false							
 end							
end	
                                                                   
 --------------------------------------------------------------------------------------------------------------											
--------------------------------------------------------------------------------------------------------------			
 											
 -- Configuração do painel lado servidor --											
 											
 local TAG_Drogas = "Gangues"
 local NOME_Painel = "PANEL DE DROGAS" 
											
 local button = "f7" -- Botão para Abrir --											
 local nome_comando = "abrirdrogas" -- comando para abrir via  t/ --


function infos_dro(player)
outputChatBox("----------------------------------------------------------", player, 255, 255, 255)
outputChatBox("* [F7] Gangs painel de venda", player, 255, 255, 255)
outputChatBox("* /abrirdrogas Gangs painel de venda", player, 255, 255, 255)
outputChatBox("* /aceitardroga", player, 255, 255, 255)
outputChatBox("* /resetdrogas", player, 255, 255, 255)
outputChatBox("* /drogaspen", player, 255, 255, 255)
outputChatBox("* /getdrogas", player, 255, 255, 255)
outputChatBox("* /lanca", player, 255, 255, 255)
outputChatBox("* /maconha", player, 255, 255, 255)
outputChatBox("----------------------------------------------------------", player, 255, 255, 255)
end
addCommandHandler ("drogas", infos_dro) 		
 											
--------------------------------------------------------------------------------------------------------------											
--------------------------------------------------------------------------------------------------------------											
											
 function painel_Drog(thePlayer) --<<++--											
	login = getAccountName(getPlayerAccount(thePlayer))										
	if isObjectInACLGroup("user."..login, aclGetGroup(TAG_Drogas)) then										
		triggerClientEvent(thePlayer, NOME_Painel, getRootElement())									
		else									
											
	end										
end											
addCommandHandler (nome_comando, painel_Drog) --<<++--											
											
function onResStartlr()											
  for index, player in ipairs(getElementsByType("player")) do											
    bindKey(player, button , "down", painel_Drog)											
  end											
end											
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), onResStartlr)											
function onPlayerJoinlr()											
  bindKey(source, button , "down", painel_Drog) --<<++--											
end											
addEventHandler("onPlayerJoin", getRootElement(), onPlayerJoinlr)											
function cleanAlllr(player)											
  for index, player in ipairs(getElementsByType("player")) do											
    unbindKey(player, button , "down", painel_Drog)											
  end											
end											
addEventHandler("onResourceStop", getResourceRootElement(getThisResource()), cleanAlllr)

--------------------------------------------------------------------------------------------------------------											
--------------------------------------------------------------------------------------------------------------											

function buyCrack001(jogador)
	local dinheiro = getPlayerMoney(jogador)
	if dinheiro >= 2500 + (getElementData(jogador, "p_noia") * 2500) then
		setElementData(jogador, "p_noia", getElementData(jogador, "p_noia") + 1)	
		outputChatBox("[Vendedor]: Está aguardado confirmar a compra de 1 lança /aceitardroga !!!", jogador, 0, 255, 0)
		outputChatBox("[painelDG]: Voce vendeu drogas para jogador selecionado !!!", source, 0, 255, 0)			
	else	
		outputChatBox("[painelDG]: O comprador vai ficar sem grana para finalizar a compra !!!", source, 255, 0, 0)		
	end

end
addEvent("buyCrack001", true) 
addEventHandler ( "buyCrack001", getRootElement(), buyCrack001)

function buyMaconha1(jogador)
	local dinheiro = getPlayerMoney(jogador)
	if dinheiro >= 3000 + (getElementData(jogador, "p_laerva") * 3000) then
		setElementData(jogador, "p_laerva", getElementData(jogador, "p_laerva") + 1)				
		outputChatBox("[Vendedor]: Está aguardado confirmar a compra de 1 Maconha /aceitardroga !!!", jogador, 0, 255, 0)
		outputChatBox("[painelDG]: Voce vendeu drogas para jogador selecionado !!!", source, 0, 255, 0)	
		--triggerClientEvent ( jogador, "money1_c1", vendedor )
	else	
		outputChatBox("[Vendedor]: O comprador vai ficar sem grana para finalizar a compra !!!", source, 255, 0, 0)			
	end

end
addEvent("buyMaconha001", true) 
addEventHandler ( "buyMaconha001", getRootElement(), buyMaconha1)

--------------------------------------------------------------------------------------------------------------											
--------------------------------------------------------------------------------------------------------------

function money001(vendedor)
givePlayerMoney ( vendedor, 2500 )
outputChatBox("[painelDG]: Voce vendeu e recebeu 2500 !!!", vendedor, 0, 255, 0)
end 
addEvent("money001", true)
addEventHandler ( "money001", getRootElement(), money001)

function money002()
givePlayerMoney ( vendedor, 3000 )
outputChatBox("[painelDG]: Voce vendeu e recebeu 3000 !!!", vendedor, 0, 255, 0)
end 
addEvent("money002", true)
addEventHandler ( "money002", getRootElement(), money002)

--------------------------------------------------------------------------------------------------------------											
--------------------------------------------------------------------------------------------------------------

function buyDrogas(player, command)
if command == "aceitardroga" then
	local dataCrack1 = getElementData(player, "p_noia")
	if dataCrack1 and tonumber(dataCrack1) > 0 then
		local dinheiro = getPlayerMoney(player)
		if dinheiro >= 2500 then
			local acc = getPlayerAccount(player)
			takePlayerMoney(player, 2500)			
			setElementData(player, "p_noia", getElementData(player, "p_noia") - 1)
			setElementData(player, "noia", getElementData(player, "noia") + 1)
			setAccountData(acc, "noia", getElementData(player, "noia"))
			triggerClientEvent ( player, "money1_c1", player )
						
			outputChatBox("[Vendedor]: Você comprou 1 unidade de lança", player, 0, 255, 0)						
		else
			outputChatBox("[Vendedor]: Voce nao tem drogas a compra !!!", player, 255, 0, 0)			
		end			
	else
		outputChatBox("[Vendedor]: Voce nao tem drogas a compra !!!", player, 255, 0, 0)		
	end	
end	
end
addCommandHandler ("aceitardroga", buyDrogas)

function buyDrogas2(player, command)
if command == "aceitardroga" then
	local datalaerva1 = getElementData(player, "p_laerva")
	if datalaerva1 and tonumber(datalaerva1) > 0 then
		local dinheiro = getPlayerMoney(player)
		if dinheiro >= 3000 then
			local acc = getPlayerAccount(player)
			takePlayerMoney(player, 3000)			
			setElementData(player, "p_laerva", getElementData(player, "p_laerva") - 1)
			setElementData(player, "laerva", getElementData(player, "laerva") + 1)
			setAccountData(acc, "laerva", getElementData(player, "laerva"))
			triggerClientEvent ( player, "money2_c2", player )
		
			outputChatBox("[Vendedor]: Você comprou 1 unidade de Maconha", player, 0, 255, 0)
		else
			outputChatBox("[Vendedor]: Voce nao tem drogas a compra !!!", player, 255, 0, 0)			
		end			
	else
		outputChatBox("[Vendedor]: Voce nao tem drogas a compra !!!", player, 255, 0, 0)		
	end
end	
end
addCommandHandler ("aceitardroga", buyDrogas2)

--------------------------------------------------------------------------------------------------------------											
--------------------------------------------------------------------------------------------------------------

function reset_drogas(player)
setElementData(player, "p_noia", 0)
setElementData(player, "p_laerva", 0)
setElementData(player, "noia", 0)
setElementData(player, "laerva", 0)
outputChatBox("[Vendedor]: Você resetou todas as drogas", player, 255, 0, 0)
end
addCommandHandler ("resetdrogas", reset_drogas)

function getpendentes(player)
local dataCrack2 = getElementData(player, "p_noia")
local datalaerva2 = getElementData(player, "p_laerva")
outputChatBox("[Vendedor]: Voce tem "..dataCrack2.." de Lança e "..datalaerva2.." de Maconha pendentes.", player, 255, 255, 255)
end
addCommandHandler ("drogaspen", getpendentes)

function getdrogas(player)
local dataCrack1 = getElementData(player, "noia")
local datalaerva1 = getElementData(player, "laerva")
outputChatBox("[Vendedor]: Voce tem "..dataCrack1.." de Lança e "..datalaerva1.." de Maconha.", player, 255, 255, 255)
end
addCommandHandler ("getdrogas", getdrogas)

--------------------------------------------------------------------------------------------------------------											
--------------------------------------------------------------------------------------------------------------

function onResourceStart()
	local players = getElementsByType("player")
	for i, p in ipairs(players) do
		local sourceAccount = getPlayerAccount(p)
		if isGuestAccount(sourceAccount) then
			setElementData(p, "p_noia", 0)
			setElementData(p, "noia", 0)
			setElementData(p, "p_laerva", 0)
			setElementData(p, "laerva", 0)
		else
			if getAccountData(sourceAccount, "noia") then
				setElementData(p, "noia", getAccountData(sourceAccount, "noia"))
			end
			if getAccountData(sourceAccount, "laerva") then
				setElementData(p, "laerva", getAccountData(sourceAccount, "laerva"))
			end
			if not getAccountData(sourceAccount, "noia") and not getAccountData(sourceAccount, "laerva") then
				setElementData(p, "noia", 0)
				setElementData(p, "laerva", 0)
			end
		end
	end
end
addEventHandler("onResourceStart", resourceRoot, onResourceStart)

function onPlayerLogin(_, theCurrentAccount)
	if getAccountData(theCurrentAccount, "noia") then
		setElementData(source, "noia", getAccountData(theCurrentAccount, "noia"))
	end
	if getAccountData(theCurrentAccount, "laerva") then
		setElementData(source, "laerva", getAccountData(theCurrentAccount, "laerva"))
	end
end
addEventHandler("onPlayerLogin", root, onPlayerLogin)

function onPlayerJoin()
	setElementData(source, "p_noia", 0)
	setElementData(source, "noia", 0)
	setElementData(source, "p_laerva", 0)
	setElementData(source, "laerva", 0)
end
addEventHandler("onPlayerJoin", root, onPlayerJoin)                                                                

Consegue ver o por que o vendedor não recebe a droga eo comprador não desconta o dinheiro.

Edited by Nakka Lindo
Vendedor nao recebe o dinheiro ,eo comprador não desconta o dinheiro da compra
Link to comment

Boa

On 01/04/2023 at 23:02, Nakka Lindo said:




  
     
       
        
          
                        
   
           
        
       
    



     
  











    

 

Boa noite, sou novo no mundo do MTA... Poderia me corrigir se estiver errado?

No lado do servidor:
 

  1. O nome da função é "buyDrogas", mas no final do código, você adicionou um manipulador de comando para "aceitardroga". Certifique-se de usar o mesmo nome de função em todos os lugares em que você o chama.

  2. A variável "dinheiro local" na linha 5 não está inicializada corretamente. Você precisa definir um valor inicial para essa variável, caso contrário, o código pode falhar quando você tentar usá-la.

  3. A variável "acc" na linha 10 está faltando uma chamada de função para "getPlayerAccount". Você precisa chamar essa função passando o jogador como parâmetro para obter a conta do jogador.

No lado client:

Há alguns erros no seu código que podem estar causando problemas de comunicação entre os eventos triggerClientEvent e triggerServerEvent. Primeiro, na função money1_c, você está adicionando o manipulador de eventos para o evento "money1_c", mas o evento que você está desencadeando com triggerClientEvent é "money1_c1". Você precisa alterar o nome do evento para que eles correspondam.

Além disso, o primeiro argumento de triggerServerEvent deve ser o elemento raiz (root) em vez de getLocalPlayer(). Assim, você deve alterar triggerServerEvent("money001", getLocalPlayer(), vendedor) para triggerServerEvent("money001", root, vendedor).

Por fim, há uma diferença no nome do evento em addEventHandler. Na função money1_c, você adicionou o manipulador de eventos para o evento "money1_c", mas na chamada de addEventHandler, você usou "money1_c1". Certifique-se de usar o nome correto do evento aqui também.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...