Nakka Lindo Posted April 2, 2023 Share Posted April 2, 2023 ------------- 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
Other Languages Moderators Lord Henry Posted April 2, 2023 Other Languages Moderators Share Posted April 2, 2023 Não utilize o nome da função igual ao nome do evento. Link to comment
Nakka Lindo Posted April 2, 2023 Author Share Posted April 2, 2023 1 hour ago, Lord Henry said: Não utilize o nome da função igual ao nome do evento. Obrigado Link to comment
Nakka Lindo Posted April 2, 2023 Author Share Posted April 2, 2023 (edited) 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 April 2, 2023 by Nakka Lindo Vendedor nao recebe o dinheiro ,eo comprador não desconta o dinheiro da compra Link to comment
DkFall_ Posted April 4, 2023 Share Posted April 4, 2023 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: 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. 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. 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now