Jump to content

Angelo Pereira

Members
  • Posts

    251
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by Angelo Pereira

  1. Dei uma ajeitada no código, teste lá : addCommandHandler("verdono", function ( thePlayer ) if isObjectInACLGroup ( "user." .. getAccountName(getPlayerAccount(thePlayer)), aclGetGroup( "Policia" )) then local vehicle = getPedOccupiedVehicle ( thePlayer ) if vehicle then local owner = getElementData(vehicle, "ownercar") or false if owner then local player = verificar_conta (owner) if player then local dono_do_veiculo = getElementData( player,"AirNew_RG_NomeCompleto" ) or "Sem Dono" outputChatBox("#ffea00═════════════════ DETRAN ERP ═════════════════", thePlayer, 0, 255, 0,true) outputChatBox("#ffea00DETRAN #ababab| #7b7b7bProprietário: #FF1493"..dono_do_veiculo.." ", thePlayer, 0, 255, 0,true) outputChatBox("#ffea00═════════════════ DETRAN ERP ═════════════════", thePlayer, 0, 255, 0,true) else outputChatBox("#ffea00═════════════════ DETRAN ERP ═════════════════", thePlayer, 0, 255, 0,true) outputChatBox("#ffea00DETRAN #ababab| #7b7b7bProprietário: #FF1493 Não Se Encontra na CITY.", thePlayer, 0, 255, 0,true) outputChatBox("#ffea00═════════════════ DETRAN ERP ═════════════════", thePlayer, 0, 255, 0,true) end else outputChatBox("#ffea00═════════════════ DETRAN ERP ═════════════════", thePlayer, 0, 255, 0,true) outputChatBox("#ffea00DETRAN #ababab| #7b7b7bVeiculo Sem Origem !", thePlayer, 0, 255, 0,true) outputChatBox("#ffea00═════════════════ DETRAN ERP ═════════════════", thePlayer, 0, 255, 0,true) end else outputChatBox("#ffea00═════════════════ DETRAN ERP ═════════════════", thePlayer, 0, 255, 0,true) outputChatBox("#ffea00DETRAN #ababab| #ff0000Você precisa estar em um veículo!", thePlayer, 0, 255, 0,true) outputChatBox("#ffea00═════════════════ DETRAN ERP ═════════════════", thePlayer, 0, 255, 0,true) end else outputChatBox("#ffea00DETRAN #ababab| #ff0000Apenas funcionários do DETRAN podem usar esse comando!", thePlayer, 0, 255, 0,true) end end) function verificar_conta ( account ) for i, players in ipairs ( getElementsByType ( "player" ) ) do if getAccountName(getPlayerAccount(players)) == account then return players end end return false end
  2. onClientVehicleStartExit Utilize este evento, pós, sera acionado, quando iniciar sua saída do veículo.
  3. Boa tarde. Fiz a solicitação de troca de IP da TOP LIST há dois(2) dias, e até o momento, não foi feito a troca solicitada. A solicitação foi feita para o @ccw. Preciso fazer a troca do IP : 51.81.110.252:22003 para o IP : 192.95.21.172:22003.
  4. Ele estará sempre em 2 dias, se quiser trazer quantos dias do client-side, para o server-side, então fará basicamente assim : function Teste ( dia ) --/> Trazer os dias do client.... local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Console" ) ) then local dia = tonumber(dia) key = generateString(12) outputChatBox("Foi Gerado Uma Nova KEY: "..key.."", source, 255, 255, 255, true) if isTimer(tempo_remover_key) then killTimer(tempo_remover_key) end tempo_remover_key = setTimer ( function ( ) --/> AQUI key = nil --/> AQUI end, 60000*60*24*dia, 1) --/> AQUI, fará a soma. else outputChatBox("Acesso Negado.", source, 255, 255, 255, true) end end addEvent ("Gen:Set", true) addEventHandler ("Gen:Set", root, Teste
  5. Teoricamente, o que eu consegui compreende, foi que, você apenas quer gerar um key por vez. Então, nessa key gerada, a pessoa apenas dará o comando, caso a key existir, já é ativado o vip na conta dela. Para adicionar uma validade, basta : local key = nil local allowed = { { 48, 57 }, { 65, 90 }, { 97, 122 } } function generateString ( len ) if tonumber ( len ) then math.randomseed ( getTickCount () ) local str = "" for i = 1, len do local charlist = allowed[math.random ( 1, 3 )] str = str .. string.char ( math.random ( charlist[1], charlist[2] ) ) end return str end return false end function Teste ( ) local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Console" ) ) then key = generateString(12) outputChatBox("Foi Gerado Uma Nova KEY: "..key.."", source, 255, 255, 255, true) if isTimer(tempo_remover_key) then killTimer(tempo_remover_key) end tempo_remover_key = setTimer ( function ( ) --/> AQUI key = nil --/> AQUI end, 60000*60*24*2, 1) --/> AQUI else outputChatBox("Acesso Negado.", source, 255, 255, 255, true) end end addEvent ("Gen:Set", true) addEventHandler ("Gen:Set", root, Teste) addCommandHandler ( "Usar", function ( player ) if ( key ~= nil ) then outputChatBox("Sua Chave: "..tostring(key), player, 0, 255, 0, true) setElementData ( player, "Vip", "Desbloqueado" ) killTimer(tempo_remover_key) --/> Kill Timer. key = nil --/> Nil Variável Key. else outputChatBox("Chave Inexistente.", player, 255, 0, 0, true) end end)
  6. Tenta isso : function AceitarWeapon () local Vendedor = getElementData(source, "TS:Vendedor") if Vendedor then local Preco = tonumber(getElementData(Vendedor, "TS:Preco")) or 0 local Municoes = getElementData(Vendedor, "TS:Muni") or 100 local IDArmaTS = tonumber(getElementData(Vendedor, "TS:IDArma")) or 0 local NomeArma = getElementData(Vendedor, "TS:NomeArma") or "Error" local MunicaoAtual = getElementData(Vendedor, "TS:MuniAtual") or 100 local MunicaoTotalVendedor = MunicaoAtual - Municoes if getPlayerMoney(source) < Preco then triggerClientEvent(source, "addNotification", root, "#0037FF✘#ffffffINFO#0037FF✘➺ #ffffffDinheiro Insuficiente!") triggerClientEvent(Vendedor, "addNotification", root, "#0037FF✘#ffffffINFO#0037FF✘➺ #ffffffO jogador não tem dinheiro suficiente!") setElementData(Vendedor, "TS:Cliente", nil) setElementData(source, "TS:Vendedor", nil) setElementData(Vendedor, "TS:Preco", nil) setElementData(Vendedor, "TS:Muni", nil) setElementData(Vendedor, "TS:IDArma", nil) setElementData(Vendedor, "TS:NomeArma", nil) return end local valor_permitido = 1000000 --/> Altere Caso Queira uma Quantidade Diferente! if Preco >= tonumber(1) and Preco <= tonumber(valor_permitido) then --/> AQUI if tonumber(Municoes) and tonumber(Municoes) > 0 then --/> AQUI takePlayerMoney(source, Preco) givePlayerMoney(Vendedor, Preco) takeWeapon(Vendedor, IDArmaTS, Municoes) giveWeapon(source, IDArmaTS, Municoes, true ) setElementData(Vendedor, "TS:Cliente", nil) setElementData(source, "TS:Vendedor", nil) setElementData(Vendedor, "TS:Preco", nil) setElementData(Vendedor, "TS:Muni", nil) setElementData(Vendedor, "TS:IDArma", nil) setElementData(Vendedor, "TS:NomeArma", nil) triggerClientEvent(Vendedor, "addNotification", root, "#0037FF✘#ffffffINFO#0037FF✘➺ #ffffffO jogador aceitou a negociação !") triggerClientEvent(source, "addNotification", root, "#0037FF✘#ffffffINFO#0037FF✘➺ #ffffffVocê aceitou a negociação!") else --/> AQUI triggerClientEvent(Vendedor, "addNotification", root, "#0037FF✘#ffffffINFO#0037FF✘➺ #ffffffApenas Permitidos Valores Positivos!") --/> AQUI end --/> AQUI else --/> AQUI triggerClientEvent(Vendedor, "addNotification", root, "#0037FF✘#ffffffINFO#0037FF✘➺ #ffffffApenas Permitidos Valores de 1 a 1,000.000!") --/> AQUI end --/> AQUI end end addEvent ("TS:AceitarWeapon", true) addEventHandler ("TS:AceitarWeapon", root, AceitarWeapon)
  7. local xc,yc,zc = getElementPosition ( vehicle ) Tente isso.
  8. Então ele não retorna somente números? Então remove a linha dessa verificação e tentar novamente
  9. Tente isso (Eu fiz em base ao que eu consegui compreende). (e fiz algumas mudanças). --// Client-Side local panel = false --[[ function vehicleShow ( ) triggerServerEvent("vehicleTime", getLocalPlayer () ) end addEventHandler("onClientRender",getRootElement(),vehicleShow) --]] function dxPanel ( ) local vehicleTime = getElementData(localPlayer, "vehicleTempo") or 0 if vehicleTime > 0 then dxDrawText("Seu Carro VIP expira em "..(tostring(vehicleTime) or 'BUGGED').."", screenW * 0.3309, screenH * 0.7227, screenW * 0.4191, screenH * 0.7461, tocolor(255, 255, 255, 255), 1.00, "default", "left", "top", false, false, true, true, false) dxDrawImage(screenW * 0.2859, screenH * 0.1546, screenW * 0.4552, screenH * 0.6074, "image/wallpaper.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end end function abrirPanel ( ) if panel == false then showCursor(true) panel = true addEventHandler("onClientRender", getRootElement(), dxPanel) timer = setTimer ( function ( ) triggerServerEvent("vehicleTime", getLocalPlayer ( ) ) end, 1000, 0 ) --addEventHandler("onClientRender", getRootElement(), vehicleShow) else fecharPanel ( ) --[[ showCursor(false) panel = false removeEventHandler("onClientRender", getRootElement(), dxPanel) removeEventHandler("onClientRender", getRootElement(), vehicleShow) --]] end end addEvent("abrirPanel", true) addEventHandler("abrirPanel", getRootElement(), abrirPanel) function fecharPanel ( ) if panel == false then removeEventHandler("onClientRender", getRootElement(), dxPanel) if isTimer ( timer ) then killTimer ( timer ) end local vehicleTime = 0 --removeEventHandler("onClientRender", getRootElement(), vehicleShow) showCursor(false) panel = true end end bindKey("o", "down", fecharPanel) --addEvent("abrirPanel", true) --addEventHandler("abrirPanel", getRootElement(), fecharPanel) --// Server-Side function f_vehicleTime ( ) --/> Tente não mistura o nome da função, com o seu código. local account = getPlayerAccount(source) if not isGuestAccount(account) then local vehicleState,vehicleTime = false, "NOT AVAILABLE" if getAccountData(account,"vehicleEnabled") == 1 then local vehicleTime = tonumber(getAccountData(account,"vehicleVIP")) if vehicleTime then local currentTime = getRealTime( ) if vehicleTime > currentTime.timestamp then local vehicleState,vehicleTime = true, convertMS(vehicleTime-currentTime.timestamp) --triggerClientEvent(source,"vehicleTempo",source,vehicleTime ) setElementData( source, "vehicleTempo", vehicleTime ) end end end end end addEvent("vehicleTime",true) addEventHandler("vehicleTime",getRootElement(), f_vehicleTime) Algumas coisas eu removi, e deixei comentado com -- or --[[ ]]-- para você saber o que você poderia ter feito.
  10. O que você enviou, foi todo o código do seu script, ou está pela metade? Bom, envie todo o código, para podermos te ajudar, e creio que há uma forma mais otimizada de fazer isto. Você está usando um evento de onClientRender, onde o mesmo vai envia quase 400 envios para o server-side em 1 ms. INFO WIKI : https://wiki.multitheftauto.com/wiki/OnClientRender Atenção Este evento e onClientPreRender acionarão qualquer função à qual ele esteja anexado a cada quadro. Dependendo do FPS máximo do servidor e da capacidade do seu computador - você pode acabar acionando a função 30 a 60 vezes por segundo . Como resultado, esse evento pode causar um atraso grave e / ou até travar se não for usado com cautela.
  11. Apenas Destruir / Sem Salvar Dados do Veiculo : addEventHandler("onPlayerQuit", root, function ( ) for i, veh in ipairs (getElementsByType("vehicle")) do if getElementData(veh, "Owner") == source then destroyVehicle ( veh ) end end end) function destroyVehicle ( theVehicle ) if isElement( theVehicle ) then destroyElement( theVehicle ) end end Destruir & Salvar Dados ( Normalmente vem no resource da concessionaria ) function destroyVehicle(theVehicle) if isElement(theVehicle) then local Owner = getElementData(theVehicle, "Owner") if Owner then local id = getElementData(theVehicle, "ID") local x, y, z = getElementPosition(theVehicle) local _, _, rz = getElementRotation(theVehicle) local r1, g1, b1, r2, g2, b2 = getVehicleColor(theVehicle, true) local color = r1..","..g1..","..b1..","..r2..","..g2..","..b2 upgrade = "" for _, upgradee in ipairs (getVehicleUpgrades(theVehicle)) do if upgrade == "" then upgrade = upgradee else upgrade = upgrade..","..upgradee end end local account_id = getElementData(theVehicle, "ownercar") local Paintjob = getVehiclePaintjob(theVehicle) or 3 dbExec(db, "UPDATE VehicleList SET X = ?, Y = ?, Z = ?, RotZ = ?, HP = ?, Colors = ?, Upgrades = ?, Paintjob = ?, new_hydr = ? WHERE Account = ? AND ID = ?", x, y, z, rz, getElementHealth(theVehicle), color, upgrade, Paintjob, getElementData ( theVehicle, "NewHydr") and 1 or 0, account_id, id) updateVehicleInfo(Owner) local attached = getAttachedElements(theVehicle) if (attached) then for k,element in ipairs(attached) do if getElementType(element) == "blip" then destroyElement(element) end end end end destroyElement(theVehicle) end end addEventHandler("onPlayerQuit", root, function ( ) for i, veh in ipairs (getElementsByType("vehicle")) do if getElementData(veh, "Owner") == source then destroyVehicle ( veh ) end end end) OBS [1] : Caso der erro, foi, pelo motivo de alguma modificação feita pelo responsável pela editação. OBS [2] : Deixe o erro do debugscript 3, caso tiver algum erro ocorrido em algum dos dois processos.
  12. addEventHandler("onClientGUIClick ", GerarCarro, ClicarBotao) O problema está no evento dentro das ASPAS, está "onClientGuiClick ". --/> Vermelho (Espaço). Contém um espaço depois do nome do evento, remova o espaço, que o evento funcionará.
  13. Faça o seguinte, vai-a até o seu resource, e faça o seguinte : no meta.xml : <setting name="driveby_driver" value="[[ ]]"/> e no driveby_server.Lua : driver = get"driveby_driver" or { 0 },
  14. Para você entender o tempo, você precisar calcula-lo. TIMER [1] : setTimer(detonateBomb, 5*60*1000 --[[TEMPO]], 1 --[[TOTAL DE LOOP]], thePlayer) [ TEMPO ] 5*60*1000 : 5 x (vezes) 60 = 300 300 x (vezes) 1000 = 300000 Milissegundos --/> Para Saber os Minutos : 300000 divide por 60000 = 5 Minutos [ TOTAL DE LOOP ] 1 : -- Será o TOTAL DE LOOPS Que o TIMER Dará Para Encerrar. OBSERVAÇÃO : Você sabendo que, (60 x 1000 = 60.000 milissegundos ) é igual a 1 Minuto, você saberá sem precisará calcular na calculadora, que (1 minuto x 5 ) = 5 minutos. TIMER [2] : setTimer(resetBank, 90*60*1000 --[[TEMPO]], 1) [ TEMPO ] : 90*60*1000 90 x (vezes) 60 = 5400 5400 x (vezes) 1000 = 5400000 Milissegundos. --/> Para Saber os Minutos : 5400000 divide por 60000 : 90 Minutos Mesma coisa, 60 * 1000 = 1 Minuto x 90 = 90 Minutos. Para você alterar para 2 horas, tem várias formas : setTimer(resetBank, 60000*60*2, 1) -- 60000 é igual 1 Minuto x 60 = 1 Hora x 2 = 2 Horas. setTimer(resetBank, 1000*60*60*2, 1) -- 1000 x 60 = 60000 que é igual a 1 Minuto x 60 = 1 Hora x 2 = 2 Horas. setTimer(resetBank, 1000*60*120, 1) -- 1000 x 60 = 60000 que é igual a 1 Minuto x 120 = 2 Horas. setTimer(resetBank, 7200000, 1) -- 7.200,000 Milessegundos que é igual a 2 Horas. -- Para Saber os Minutos : 7200000 ( Milessegundos ) dividido por 60000 = 120 Minutos divide por 60 Minutos / 2 horas. Espero que consiga tira suas dúvidas !
  15. Tente isso : -- Server-Side addEventHandler("onPlayerLogin", getRootElement( ), function ( ) bindKey( source, "F5", "down", abrir_painel_f5 ) end) addEventHandler("onResourceStart", resourceRoot, function ( ) for i, player in ipairs(getElementsByType("player")) do bindKey( player, "F5", "down", abrir_painel_f5 ) end end) addEventHandler("onResourceStop", resourceRoot, function ( ) for i, player in ipairs(getElementsByType("player")) do unbindKey( player, "F5", "down", abrir_painel_f5 ) end end) function abrir_painel_f5 ( thePlayer ) local accountname = getAccountName( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup("user." .. accountname, aclGetGroup("Armas")) then triggerClientEvent( thePlayer, "Painel_de_Armas:Abrir", thePlayer) end end -- Client-Side local screenW, screenH = guiGetScreenSize() local x, y = (screenW/1366), (screenH/768) local dxfont0_icons = dxCreateFont("font/icons.ttf", x*12) local dxfont1_icons = dxCreateFont("font/icons.ttf", x*11) local ID = createElement("TS:EditBoxArmas") local Preco = createElement("TS:EditBoxArmas") local Municao = createElement("TS:EditBoxArmas") painel = false painel3 = false --[[ ><><><><><><><><><><><><><><><><><><><>< >< Painel Inicial >< ><><><><><><><><><><><><><><><><><><><>< --]] function painelsamu () exports["Blur"]:dxDrawBluredRectangle(screenW * 0.2848, screenH * 0.2839, screenW * 0.4305, screenH * 0.4323, tocolor(255, 255, 255, 230)) dxDrawRectangle(screenW * 0.2848, screenH * 0.2839, screenW * 0.4305, screenH * 0.4323, tocolor(0, 0, 0, 77), false) dxDrawRectangle(screenW * 0.2848, screenH * 0.2839, screenW * 0.4305, screenH * 0.0599, tocolor(0, 0, 0, 167), false) dxDrawLine(screenW * 0.2848, screenH * 0.3424, screenW * 0.7152, screenH * 0.3424, tocolor(5, 0, 217, 254), 3, false) dxDrawText("Enviar Armas", screenW * 0.4641, screenH * 0.2969, screenW * 0.5381, screenH * 0.3229, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) dxDrawEditBox("ID Do Jogador", screenW * 0.5124, screenH * 0.3659, screenW * 0.1559, screenH * 0.0534, false, 10, ID) dxDrawEditBox("Preço da Arma", screenW * 0.5124, screenH * 0.4648, screenW * 0.1559, screenH * 0.0534, false, 10, Preco) dxDrawEditBox("Quantidade de Munição", screenW * 0.5124, screenH * 0.5534, screenW * 0.1559, screenH * 0.0534, false, 10, Municao) if isCursorOnElement(screenW * 0.3507, screenH * 0.6328, screenW * 0.1127, screenH * 0.0625) then dxDrawImage(screenW * 0.3507, screenH * 0.6328, screenW * 0.1127, screenH * 0.0625, "0.png", 0, 0, 0, tocolor(5, 0, 217, 255), false) else dxDrawImage(screenW * 0.3507, screenH * 0.6328, screenW * 0.1127, screenH * 0.0625, "0.png", 0, 0, 0, tocolor(5, 0, 217, 123), false) end if isCursorOnElement(screenW * 0.5015, screenH * 0.6328, screenW * 0.1127, screenH * 0.0625) then dxDrawImage(screenW * 0.5015, screenH * 0.6328, screenW * 0.1127, screenH * 0.0625, "0.png", 0, 0, 0, tocolor(5, 0, 217, 255), false) else dxDrawImage(screenW * 0.5015, screenH * 0.6328, screenW * 0.1127, screenH * 0.0625, "0.png", 0, 0, 0, tocolor(5, 0, 217, 123), false) end dxDrawText("Enviar Arma", screenW * 0.3763, screenH * 0.6471, screenW * 0.4502, screenH * 0.6732, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) dxDrawText("Fechar Painel", screenW * 0.5234, screenH * 0.6484, screenW * 0.5974, screenH * 0.6745, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) end addEventHandler("onClientResourceStart", resourceRoot, function () Lista_Armas = dxGridW:Create(408, 278, 254, 192) Lista_Armas:AddColumn("Armas", 150) Lista_Armas:AddColumn("Muniçao", 70) Lista_Armas:AddColumn("ID", 100) Lista_Armas:SetVisible(false) end) function Refresh_Jogadores () Lista_Armas:Clear(true) for slot = 0, 12 do local Armamento = getPedWeapon ( localPlayer, slot ) local Municao = getPedTotalAmmo ( localPlayer, slot ) if Armamento > 0 then local NomeDaArma = getWeaponNameFromID ( Armamento ) Lista_Armas:AddItem(1, ""..NomeDaArma) Lista_Armas:AddItem(2, ""..Municao) Lista_Armas:AddItem(3, ""..Armamento) end end end function painelsamu2 () local Jogador = getElementData(localPlayer, "TS:Vendedor") local Preco = getElementData(Jogador, "TS:Preco") or "Error" local Municoes = getElementData(Jogador, "TS:Muni") or "Error" local IDArma = getElementData(Jogador, "TS:IDArma") or "Error" local NomeArma = getWeaponNameFromID(IDArma) dxDrawRectangle(screenW * 0.3426, screenH * 0.0130, screenW * 0.3155, screenH * 0.2578, tocolor(0, 0, 0, 123), false) dxDrawRectangle(screenW * 0.3426, screenH * 0.0130, screenW * 0.3155, screenH * 0.0560, tocolor(0, 0, 0, 162), false) dxDrawLine(screenW * 0.3426, screenH * 0.0690, screenW * 0.6589, screenH * 0.0690, tocolor(10, 0, 198, 254), 3, false) dxDrawText("Venda de Armas", screenW * 0.4605, screenH * 0.0260, screenW * 0.5527, screenH * 0.0560, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) dxDrawText("Algum jogador está querendo te vender uma "..NomeArma.." por #00FF00R$#FFFFFF "..Preco.." \ncom "..Municoes.." Munições. Você deseja:", screenW * 0.3499, screenH * 0.0820, screenW * 0.4422, screenH * 0.1120, tocolor(255, 255, 255, 255), 1.00, dxfont1_icons, "left", "top", false, false, false, true, false) if isCursorOnElement(screenW * 0.3572, screenH * 0.1628, screenW * 0.1061, screenH * 0.0534) then dxDrawImage(screenW * 0.3572, screenH * 0.1628, screenW * 0.1061, screenH * 0.0534, "0.png", 0, 0, 0, tocolor(10, 0, 198, 255), false) else dxDrawImage(screenW * 0.3572, screenH * 0.1628, screenW * 0.1061, screenH * 0.0534, "0.png", 0, 0, 0, tocolor(10, 0, 198, 126), false) end if isCursorOnElement(screenW * 0.5110, screenH * 0.1628, screenW * 0.1061, screenH * 0.0534) then dxDrawImage(screenW * 0.5110, screenH * 0.1628, screenW * 0.1061, screenH * 0.0534, "0.png", 0, 0, 0, tocolor(10, 0, 198, 255), false) else dxDrawImage(screenW * 0.5110, screenH * 0.1628, screenW * 0.1061, screenH * 0.0534, "0.png", 0, 0, 0, tocolor(10, 0, 198, 126), false) end dxDrawText("Comprar", screenW * 0.3865, screenH * 0.1732, screenW * 0.4348, screenH * 0.2031, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) dxDrawText("Rejeitar", screenW * 0.5410, screenH * 0.1732, screenW * 0.5893, screenH * 0.2031, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) end --[[ ><><><><><><><><><><><><><><><><><><><>< >< Configurações N Altere >< ><><><><><><><><><><><><><><><><><><><>< --]] function convertTime(ms) local min = math.floor ( ms/60000 ) local sec = math.floor( (ms/1000)%60 ) return min, sec end -- /> APENAS FIZ ALTERAÇÃO AQUI : addEvent("Painel_de_Armas:Abrir", true) function AbrirArmas ( ) if getElementData(localPlayer, "TS:Cliente") then return end if painel == false then addEventHandler ( "onClientRender", root, painelsamu ) painel = true showCursor ( true ) playSoundFrontEnd ( 43 ) setElementData(ID, "text2", "") setElementData(Preco, "text2", "") setElementData(Municao, "text2", "") Lista_Armas:SetVisible(true) Refresh_Jogadores ( ) end end addEventHandler("Painel_de_Armas:Abrir", getRootElement(), AbrirArmas ) --bindKey("F5", "down", AbrirArmas) --/> Removido function FecharPainel (_,state) if painel == true then if state == "down" then if isCursorOnElement ( screenW * 0.5015, screenH * 0.6328, screenW * 0.1127, screenH * 0.0625 ) then removeEventHandler("onClientRender", root, painelsamu ) showCursor (false) playSoundFrontEnd ( 43 ) painel = false Lista_Armas:SetVisible(false) end end end end addEventHandler ("onClientClick", root, FecharPainel ) function VenderArmas (_,state) if painel == true then if isCursorOnElement ( screenW * 0.3507, screenH * 0.6328, screenW * 0.1127, screenH * 0.0625 ) then local getID = tonumber(getElementData(ID, "text2")) local getPreco = tonumber(getElementData(Preco, "text2")) or 0 local getMunicao = tonumber(getElementData(Municao, "text2")) or 0 local gridItem = Lista_Armas:GetSelectedItem() local Arma_Selecionada = Lista_Armas:GetItemDetails(1, gridItem, 1) or nil local MunicaoAtual = Lista_Armas:GetItemDetails(2, gridItem, 2) or nil local WeaponID = Lista_Armas:GetItemDetails(3, gridItem, 3) or nil removeEventHandler("onClientRender", root, painelsamu ) showCursor (false) playSoundFrontEnd ( 43 ) painel = false Lista_Armas:SetVisible(false) setElementData(localPlayer, "TS:IDArma", WeaponID) setElementData(localPlayer, "TS:MuniAtual", MunicaoAtual) triggerServerEvent( 'TS:IniciarVendaArmas', getLocalPlayer(), localPlayer, Arma_Selecionada, getID, getPreco, getMunicao, WeaponID) end end end addEventHandler ("onClientClick", root, VenderArmas ) painelcomprador = false function ConfirmacaoWeapon () addEventHandler("onClientRender", root, painelsamu2) end addEvent("TS:ConfirmacaoWeapon", true) addEventHandler("TS:ConfirmacaoWeapon", getRootElement(), ConfirmacaoWeapon) function ParteComprador (_,state) if state == "down" then if isCursorOnElement ( screenW * 0.5110, screenH * 0.1628, screenW * 0.1061, screenH * 0.0534 ) then removeEventHandler("onClientRender", root, painelsamu2 ) triggerServerEvent("TS:Rejeitado", localPlayer) elseif isCursorOnElement(screenW * 0.3572, screenH * 0.1628, screenW * 0.1061, screenH * 0.0534) then removeEventHandler("onClientRender", root, painelsamu2 ) triggerServerEvent("TS:AceitarWeapon", localPlayer) end end end addEventHandler ("onClientClick", root, ParteComprador ) 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
  16. Envie o que você tentou por favor, a explicação já está na resposta que você deu sad.
  17. Para você verificar o grupo ACL de um Jogador, você precisará fazer isso do lado server-side. Então, você vai precisa muda basicamente, algumas coisinhas, como : 1. BindKey : remove do client-side, e enviar para o server-side (fazer alterações). 2. isObjectInACLGroup : verificar o grupo ACL do jogador. 3. triggerClientEvent : utilizar para dispara um evento para o client-side, para abrir o painel.
  18. Não está funcionando, pois, está apenas faltando criar a tabela do chatTime local range = 100 local chatTime = { } --/> ADD local lastChatMessage = { } addEventHandler("onPlayerChat", root, function ( text, msgType ) local name = _getPlayerName( source ) local text = string.gsub( text,'#%x%x%x%x%x%x', " ") if ( msgType == 1 ) then return cancelEvent(true) end if ( msgType == 0 ) then cancelEvent(true) if chatTime[source] and chatTime[source] + tonumber(150) > getTickCount() then return outputChatBox("Evite Fazer SPAM.",source,255,0,0) else chatTime[source] = getTickCount() end if lastChatMessage[source] and lastChatMessage[source] == text then return outputChatBox("Evite Mensagem Repetida.",source,255,0,0,true) else lastChatMessage[source] = text end cancelEvent(true) local x,y,z = getElementPosition(source) for i, player in pairs(getElementsByType("player")) do local px,py,pz = getElementPosition(player) local distance = getDistanceBetweenPoints3D(x,y,z,px,py,pz) if ( distance < range ) then outputChatBox("[ Chat Local ] "..name.." #FFFFFF: "..text, player, 255, 255, 255, true) end end end end) function _getPlayerName (player) local playerTeam = getPlayerTeam(player) if (playerTeam) then local r,g,b = getTeamColor(playerTeam) local color = RGBToHex(r,g,b) playerName = color..getPlayerName(player) else playerName = "#FFFFFF"..getPlayerName(player) end return playerName end function RGBToHex(red,green,blue) return string.format("#%.2X%.2X%.2X",red,green,blue) end
  19. Seu erro, é aparentemente o mesmo problema ocorrido com uns dos membro do fórum que postou o mesmo problema AQUI NESTE TÓPICO. Eu, já tentei descobri uma solução para este problema, infelizmente, não encontrei (Nem mesmo formatando o PC), Então o problema pode está no hardware do PC. A única solução está apenas da parte da administração responsável pela programação do servidor, mas, eu creio que não é um problema do servidor, e sim do PC do client.
  20. É complicado, eu indico você a fazer o seguinte, salva a skin que entrou no trabalho. ---- COMANDO PARA PEGA SKIN E TRAB local tabela = { } --/> ADD function chave1 ( hitElement ) if isElement(hitElement) and getElementType(hitElement) == "player" then --/> ALTERADO setMarkerSize(marker1, 1.5) tabela[hitElement] = getElementModel(hitElement) --/> ADD setElementModel(hitElement, 27) end end addEventHandler("onMarkerHit", markerchave1, chave1) ---- COMANDO PARA SAIR DO TRAB E TIRA SKIN function sair_do_trabalho ( source ) if isElementWithinMarker(source, markerchave1) then setMarkerSize(marker1, 0) setElementModel(source, (tabela[source] or 0) ) --/> ADD end end addCommandHandler("sair", sair_do_trabalho ) addEventHandler("onPlayerQuit", root, function () --/> ADD if tabela[source] then tabela[source] = nil end end)
  21. Realmente, por algum motivo do lado server-side, mesmo usando outros métodos, ele trava, ou seja, não aumenta a life. Mais, do lado client-side, funciona perfeitamente, então é só fazer alguma alterações ; setTimer ( function ( ) local vida = math.ceil (getElementHealth( localPlayer )) if vida < 100 then setElementHealth( localPlayer, vida + 1) end end, 1000, 0 )
  22. local entrarInterior = createMarker(-2413.875, -601.86, 132.563, 'cylinder', 1.5, 255, 255, 0, 170 ) -- Local onde o marker de entrada ira ser criado. local sairInterior = createMarker(-2412.739, -597.491, 132.627, 'cylinder', 1.5, 255, 255, 0, 170 ) -- Local onde o marker de saida ira ser criado. --/ local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) --# Vai Dentro da Funções ! --/-- function entrarLocal ( hitElement, matchingDimension ) if getElementType( hitElement ) == "player" and not isPedInVehicle(hitElement) then local accName = getAccountName ( getPlayerAccount ( hitElement ) ) --# MOVIDO. if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then --/> Alterado Posição. setElementPosition ( hitElement, -2410.438, -597.773, 132.648) setElementInterior ( hitElement, 0) end end end addEventHandler( "onMarkerHit", entrarInterior , entrarLocal ) --/-- function sairLocal ( hitElement, matchingDimension ) if getElementType( hitElement ) == "player" and not isPedInVehicle(hitElement) then local accName = getAccountName ( getPlayerAccount ( hitElement ) ) --# MOVIDO. if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then --/> Alterado Posição. setElementPosition ( hitElement, -2411.634, -602.279, 132.563) setElementInterior ( hitElement, 0 ) end end end addEventHandler( "onMarkerHit", sairInterior , sairLocal )
  23. Testa essa luz : setTimer ( function ( ) for i, player in pairs(getElementsByType("player")) do local vida = getElementHealth(player) if vida < 100 then setElementHealth(player, vida + 1) end end end, 1000, 0 )
  24. Nesse caso, para destruir o objeto antes, de criar o outro objeto, faça o seguinte : * Lembrando, vejo na sua função, acho eu, que nela, já deve está trazendo um objeto anterior (creio eu), então só fazer o seguinte : function tableObject.create(elementObject) if (elementObject) then if (getElementType(elementObject) == "object") then local x, y, z = getElementPosition(elementObject) local rx, ry, rz = getElementRotation(elementObject) destroyElement(elementObject) --/> Adicionado. local object = createObject(id, x, y, z, rx, ry, rz) end end end
×
×
  • Create New...