Jump to content

[M]ister

Members
  • Posts

    444
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by [M]ister

  1. O erro é que no triggerClientEvent, o resource ainda não está disponivel no seu cliente (você está no download) Tente: -- cliente addEventHandler("onClientResourceStart", resourceRoot, function () triggerServerEvent ( "onClientDownloaded", localPlayer ) end ) addEventHandler("onClientPlayerQuit", getRootElement(), function() triggerServerEvent("playerNotChatting", source) end ) -- server addEvent( "onClientDownloaded", true ) addEventHandler( "onClientDownloaded", root, function() addEventHandler("playerChatting", client, playerChatting) addEventHandler("playerNotChatting", client, playerNotChatting) end ) * remova as linhas 15,16,17
  2. Adicione isso no seu client e remova a linha 17 do seu script server-side addEventHandler("onClientPlayerQuit", getRootElement(), function() triggerServerEvent("playerNotChatting", source) end )
  3. addCommandHandler( "an", function ( source, cmd, ... ) local message2 = #{...} > 0 and table.concat({...}," ") or nil if message2 then for _, p in ipairs (getElementsByType("player")) do if hasObjectPermissionTo(p, "command.mute", true) then outputChatBox("#ffffff[ #696969 Anônimo #ffffff] "..getPlayerName(source).."#696969 - "..message2, p, 255, 255, 255, true) else outputChatBox("#ffffff[ #696969 Anônimo #ffffff] #696969 - "..message2, p, 255, 255, 255, true) end end else outputChatBox( "[/"..cmd.."]: Digite uma mensagem!", source, 230, 20, 20 ) end end )
  4. https://community.multitheftauto.com/index.php?p=resources&s=details&id=14785
  5. local atualmsg = 1 local msgs = { "NÃO É TOLERADO ANTI RP NO SERVIDOR, EVITE SER BANIDO!", "VEJA INFORMAÇÕES SOBRE O SERVIDOR NO F4!", "msg3" } triggerClientEvent(root, 'addNotification', root, msgs[atualmsg], "warning") setTimer( function() if atualmsg == #msgs then atualmsg = 1 else atualmsg = atualmsg + 1 end triggerClientEvent(root, 'addNotification', root, msgs[atualmsg], "warning") end ,300000,0)
  6. local filename = "skin.txt" addEventHandler("onClientPlayerQuit", root, function() if (source == localPlayer) then local file = fileExists(filename) and fileOpen(filename) or fileCreate(filename) fileWrite(file, getElementModel(localPlayer)) fileClose(file) end end ) addEventHandler("onClientResourceStart", resourceRoot, function() local file = fileExists(filename) and fileOpen(filename) if file then skin = fileRead(file, fileGetSize(file)) fileClose(file) createPed(tonumber(skin),-1600.9000244141,-1620.6999511719,36.599998474121,241.908905,0,0) else createPed(0,-1600.9000244141,-1620.6999511719,36.599998474121,241.908905,0,0) end end )
  7. -- server side function onPlayerQuitSaveSkin() local playeraccount = getPlayerAccount(source) if playeraccount and not isGuestAccount(playeraccount) then setAccountData(playeraccount, "player.skin", getElementModel(source)) end end addEventHandler("onPlayerQuit", getRootElement(), onPlayerQuitSaveSkin ) addEventHandler("onPlayerLogin", root, function(_,playeraccount) local playerSkin = tonumber(getAccountData(playeraccount, "player-skin")) triggerClientEvent ( source, "makePed", source, playerSkin or 0 ) end ) -- client side addEvent( "makePed", true ) addEventHandler( "makePed", localPlayer, function(skin) createPed(skin,-1600.9000244141,-1620.6999511719,36.599998474121,241.908905,0,0) end end Edit: I did not read it right, you want to create the ped before the player logs in ?
  8. Código meio incompleto, shoes é o que exatamente ? se for único valor tente: local shoesC = getElementData(localPlayer, "Roupas") if table.find(shoesC.tenis,shoes) then dxDrawButton ("JA POSSUI", x*1230, y*795, x*300, y*35, tocolor(255, 148, 0, 200), tocolor(255, 148, 0, 255), tocolor(255, 148, 0, 255),x*1) else dxDrawButton ("COMPRAR", x*1230, y*795, x*300, y*35, tocolor(255, 148, 0, 200), tocolor(255, 148, 0, 255), tocolor(255, 148, 0, 255),x*1) end function table.find(t,e) for _,v in ipairs(t) do if (v == e) then return true end end return false end
  9. Visualmente não vi erro na tabela. Então fui testar e funcionou, dei kill e ele printou o elemento veículo e seu id. Obs: Se ficar um tempo fora do veículo o f1 tem um sistema para destruir o veículo, ai vai dar erro. (verificando um veículo que já foi destruído)
  10. Dei uma olhada rápida (talvez tenha mais erros), deixo abaixo melhorias: -- Linha 17: table.thePlayer = setTimer( function(tempPlayer) removeTempOwner(tempPlayer) exports.dxmsgs:outputDx(tempPlayer, "Seu tempo para usar as bikes acabou.", "warning") end, 10000, 1, thePlayer) -- Linha 70: local tempVeh = getPedOccupiedVehicle(thePlayer) if tempVeh then for _, v in ipairs(veh) do if (v == tempVeh) then removePedFromVehicle(thePlayer) break end end end -- Linha 77: addEventHandler( "onPlayerQuit", root, function() if table.source then if isTimer(table.source) then killTimer(table.source) end table.source = nil end end)
  11. Troque sua linha 11, por: destroyElement(getPedOccupiedVehicle(player))
  12. Muito bom! Gostei da dublação: "SOCORRO AJUDAAAAA" "Responda urgenteeeee" sensacional.
  13. Exemplo do LordHenry deve funcionar, pois com onClientChatMessage (lado cliente), mensagens nativas também são captadas. “This event is triggered when any text is output to chatbox, including MTA's hardcoded messages.” by: WIKI
  14. Pensando em otimização de memória, eu utilizaria a própria função COUNT do SQL: local qh = dbQuery (connection, "SELECT COUNT(*) AS TOTAL FROM table_name") local result = dbPoll (qh, -1) local rows = result[1]["TOTAL"]
  15. É, não muito! Eu acho que ele quer executar o comando /uber quando clicar em um botão: function ChamarTaxista () executeCommandHandler ( "uber", client ) addEvent( "ChamarOTaxista", true ) addEventHandler( "ChamarOTaxista", root, ChamarTaxista) addCommandHandler ( "uber", function(player) -- código uber end end * Precisa conceder privilégios de admin ao resource na ACL
  16. Achei meio confuso seu código... Aparece algum erro no /debugscript 3 ? Esse "funcionou2" executou quando testou ? Quem chama o zm_onZoneLiberated ?
  17. O seu código está muito repetitivo, como você tem interesse em aprender, deixo abaixo um código otimizado usando tabelas, com ele fica muito mais fácil fazer manutenção no código. local armas = { ["brinquedo"] = {id = 12, municao = 1, preco = 500, nome = "Brinquedo"}, ["colt"] = {id = 12, municao = 300, preco = 1400, nome = "Colt 45"}, ["deagle"] = {id = 12, municao = 300, preco = 2000, nome = "Deagle"}, ["shotgun"] = {id = 12, municao = 300, preco = 2300, nome = "Shotgun"}, ["uzi"] = {id = 12, municao = 300, preco = 3200, nome = "Uzi"}, ["ak"] = {id = 12, municao = 300, preco = 4000, nome = "AK-47"}, ["sniper"] = {id = 12, municao = 300, preco = 5200, nome = "Sniper"}, ["rifle"] = {id = 12, municao = 300, preco = 9200, nome = "Rifle"} } markerWeapon = createMarker(2678.94214, -1430.34009, 15.25723, "cylinder", 1.5, 25,25,112,200) function msg(hitElement, matchingDimension) if getElementType(hitElement) == "player" and matchingDimension then outputChatBox("Olá, AMIGO,SOU DONO DO MERCADO NEGRO SE NÃO VEIO COMPRAR ALGO VAZA!.", hitElement, 255,255,255,true) for cmd,tbl in pairs(armas) do outputChatBox("/"..cmd.." = #727272 "..tbl.preco, hitElement, 255,255,255,true) end end end addEventHandler("onMarkerHit", markerWeapon, msg) function pegarArma(player, cmd) if not armas[cmd] then return end if isElementWithinMarker(player,markerWeapon) then local acc = getPlayerAccount(player) if acc and not isGuestAccount(acc) then if isObjectInACLGroup("user."..getAccountName(acc), aclGetGroup("WP")) then if getPlayerMoney(player) >= armas[cmd].preco then takePlayerMoney(player, armas[cmd].preco) giveWeapon(player, armas[cmd].id, armas[cmd].municao, true) outputChatBox("Você comprou uma "..armas[cmd].nome.." com "..armas[cmd].municao.." munições.", player, 255,255,255,true) else outputChatBox("Você não tem dinheiro suficiente para comprar.", player, 255,0,0,true) end end end end end for cmd,tbl in pairs(armas) do addCommandHandler ( cmd, pegarArma ) end * não testado
  18. Seguindo a lógica que imaginei seria utilizado algo como fft[ 512 ] no lugar do fft[ 1 ]. Mas se está pegando como queria então não sei de mais nada kkk Pois imaginava que conforme fosse aumentando o iBand(n), juntamente com o fft [ n ], fosse perdendo frequências cada vez mais altas
  19. Sim, a questão de conseguir separar o vocal das batidas é algo bem complexo. Sugeri ali um meio de conseguir trabalhar apenas com as frequências mais altas (pode ter voz), pois ali no exemplo em que ele coloca 2 (iBands) ocorre essa “junção”, por isso o ícone de auto-falante dele mexe mesmo com frequências não tão altas.
  20. Dei uma lida na wiki e vi que ele já ordena por frequência: da mais baixa, para a mais alta (de determinado quadro em execução do som): “A fast fourier transform generates a table of all the frequencies of the current audio frame which starts at the bass end of the spectrum to mids to highs in that order“ - by Wiki Possivelmente se você fizer isso: local tbl = getSoundFFTData ( som, 512 ) --retorna o total de samples/2 = 512/2 => 256 print(tbl[256]) Ele retornará o valor mais alto dessa amostra de 512 “faixas”. Agora, quando a gente define o iBands, se você usar um valor baixo, ex: 2, ele “junta” essas 512 faixas em apenas duas, e por isso dá essa “mistura” da batida com a voz, pois foram colocadas em um mesmo conjunto (possivelmente metade com frequência mais baixa, e outra com a mais alta). Se eu fosse você, eu tentaria aumentar o número de iBands e utilizaria esse valor definido para trabalhar apenas com as frequências mais altas. p.s. Existe a função getSoundWaveData que talvez dê também para usar.
  21. wordsCopy = guiCreateMemo(9, 32, 175, 196, janela.memo, false, wnd) btnExit = guiCreateButton(10, 280, 174, 40, "EXIT", false, wnd) btnCopy = guiCreateButton(9, 233, 175, 37, "COPY", false, wnd) elementos.btns[btnExit] = {wnd,"exit"} elementos.btns[btnCopy] = {wnd,"copy",wordsCopy} --- addEventHandler ("onClientGUIClick", resourceRoot, function (button, state, absoluteX, absoluteY) if (elementos.btns[source]) then if (elementos.btns[source][2] == "copy") then local title = guiGetText(elementos.btns[source][1]) local memo = guiGetText(elementos.btns[source][3]) -- Exemplo copiando os dois setClipboard ( title.." : "..memo ) end end end)
  22. JSON passa longe de ser uma linguagem de programação. Ele é um formato hierárquico de dados (como XML) muito utilizado no armazenamento e transferência de dados @Vazern vamos supor que eu tenha o seguinte arquivo: info.txt ou info.json { "player1" : { "nick" : "zLastink", "mail" : "[email protected]", "pass" : "1234", }, "player2" : { "nick" : "Jonnut", "mail" : "[email protected]", "pass" : "4321", } } Eu consigo facilmente carrega-lo como uma tabela no MTA: file = fileOpen("info.txt") json = fileRead(file, fileGetSize(file) tbl = fromJSON(json) print(tbl["player1"]["nick"]) print(tbl["player2"]["nick"]) fileClose(file) E o mesmo pode ser feito transformando uma tabela do MTA em JSON (toJSON) e salvando como se fosse uma "string".
  23. Isso não é minha área, não sei nem o que é iSamples ou iBands . Mas creio que com essas funções não tem essa separação de batida e voz, provavelmente seja por frequência/amplitude, ou seja, em diferentes sons tais valores serão alterados, não tendo um padrão específico para conseguir diferenciar a voz de uma batida. Imagino que para conseguir fazer o que quer, seja necessário estudar muito sobre acústica, além de deter conhecimento para conseguir implementar algum algoritmo bem complexo que faça essa identificação (ou encontrar algum).
  24. addEventHandler("onPlayerQuit", root, function() if (veh[source] and isElement(veh[source])) then destroyElement(veh[source]) end end )
  25. Por padrão já perde as armas quando morre, então nesse caso você deve procurar o script que está setando as armas após morrer! Percorra os seus scripts em busca dos eventos onPlayerWasted /onPlayerSpawn juntamente com a função giveWeapon, se não encontrar, uma alternativa seria usar um script para realizar essa remoção: -- Exemplo: addEventHandler ( "onPlayerSpawn", getRootElement(), function() setTimer ( takeAllWeapons, 1000, 1, source ) end )
×
×
  • Create New...