Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Procure pela função do clique no botão do celular e chame o evento no lado server que vai executar a função do /uber. Edit: E esse código não é do botão do celular, o código com certeza só pode estar no lado cliente.
  2. Na linha 160 tem a givePlayerMoney. Vai precisar editar e remove isso do if, variável e todas partes que tenham esse valor.
  3. O código do createMarker está certo, deveria funcionar no client, mostre o seu meta.xml. A maneira mais lógica que eu faria pra fechar seria com um Botão. Você também pode usar o onClientMarkerLeave pra isso. Edit: lembre-se de usar o comando debugscript 3 para ver se mostra erros.
  4. Movi o tópico para a seção Ajudas relacionadas ao MTA:SA (Cliente/Servidor) visto que o assunto aqui só foi relacionado ao server e não programação/scripting. @UltimaterSCR Da próxima vez certifique-se do local correto, e, boa sorte com o servidor
  5. Faltou adicionar a extensão da imagem nas linhas 6 e 7. Em dxDrawImage Você colocou parâmetros a mais. Tenta fazer o código do Hud com o fundo e as imagens primeiro, depois você faz a aplicação da dxDrawImageSection.
  6. addEventHandler( "onClientMarkerHit", marker, function ( p, md ) if p == localPlayer and md and ( not getElementData(localPlayer,"prison") ) then if not isInColExport () then guiSetVisible(Window_VS, not guiGetVisible(Window_VS)) guiSetVisible (Window_CHK, false) playSound(":EQPsons/open.wav") showCursor(guiGetVisible(Window_VS)) vehsa = getElementData(localPlayer,"spawnedcars") or {} vehs = "" for ind,veh in ipairs(vehsa) do if vehs ~= "" then vehs = vehs..", "..veh.."" else vehs = vehs..""..veh.."" end end end end end ) 'marker' deve ser a variável da função createMarker
  7. Boa, já testou com outros sons de batidas ou foi só 1? Provavelmente nesse caso foi mais fácil pois o contraste entre os sons da batidas e de fundo são fáceis de se distinguir.
  8. Mas a questão não vai ser > Como saber quais frequências vai ser necessário remover para chegar ao som ideal? Ou seja, apenas batidas. Eu sou um leigo nesse assunto também, posso estar dando informação errada, mas acho que pra isso, você vai precisar pegar todas essas frequências e fazer uma análise para julgar aquelas que não fazem parte da batida. E isso não se resume em frequências altas e baixas - cada frequência reproduz certo som (foi o que entendi lendo um pouco sobre o assunto). Acho que fazer isso de uma forma 100% efetiva pra todos sons é quase impossível, se for para ajustar alguns sons/músicas especificas pode ser mais fácil pra quem não é expert no assunto. Embora tudo isso possa ser mais fácil do que eu imagino, já que hoje em dia encontra-se de tudo na internet xd
  9. Sobre o 'resourceRoot' é a melhor forma que ele pode fazer, já que ele quer que execute a função apenas para as markers do próprio resource. Daí no caso ele pode fazer um if-elseif e criar o código numa só função. Já isso que você citou não vai acontecer já que a variável da marker estará num outro resource. Só daria esse conflito se fosse no mesmo script, e acredito que você não quis dizer isso, pois com 'resourceRoot' também vai executar essa função para outras markers dentro do resource. Edit: @Zakk As 2 funções nas linhas 4 e 5 do seu código não precisam, pois o elemento já vai ser criado nessa dimensão e interior. Também tenha como hábito definir variáveis sempre local para evitar conflitos entre o nome dela e para otimização do script. Você também pode abrir mão da função setElementPosition especificando as coordenadas com setElementInterior Ex: setElementInterior(source, 3, 418.18564, -81.11912, 1001.80469)
  10. Faça o mesmo para o elemento de colisão na tabela 'vehCol'. E limpe a memória setando nil em veh[source] e vehCol[source].
  11. Eu usaria from/toJSON para converter as coordenadas de uma tabela > string e vice-versa. Um exemplo no seu código: function loadUsuarios(player, acc) local accName = getAccountName(getPlayerAccount(player)) local datas = db:query("SELECT * FROM Usuarios WHERE Usuario=? LIMIT 1", accName) if (datas and type(datas) == "table" and #datas > 0) then -- @Datas local coordsTable = fromJSON( datas[1]["Coordenadas"] ) or { 0,0,0 } setElementData(player, "CRP:Skin", tonumber(datas[1]["Skin"])) setElementData(player, "CRP:Dinheiro", tonumber(datas[1]["Dinheiro"])) setElementData(player, "CRP:Coordenadas", datas[1]["Coordenadas"]) setElementData(player, "CRP:Interior", tonumber(datas[1]["Interior"])) setElementData(player, "CRP:Dimensao", tonumber(datas[1]["Dimensao"])) setElementData(player, "CRP:Procurado", tonumber(datas[1]["Procurado"])) iprint(datas[1]["Coordenadas"]) -- @Funções setCameraTarget(player, player) fadeCamera(player, true, 2.0) spawnPlayer(player, unpack( coordsTable ) ) setElementPosition(player, unpack( coordsTable )) setElementModel(player, tonumber(datas[1]["Skin"])) setPlayerMoney(player, tonumber(datas[1]["Dinheiro"])) setElementInterior(player, tonumber(datas[1]["Interior"])) setElementDimension(player, tonumber(datas[1]["Dimensao"])) setPlayerWantedLevel(player, tonumber(datas[1]["Procurado"])) else setCameraTarget(player, player) fadeCamera(player, true, 2.0) spawnPlayer(player, x2, y2, z2) setElementPosition(player, x2, y2, z2) local x, y, z = getElementPosition(player) local pos = toJSON( { x, y, z + 0.7 } ) db:exec("INSERT INTO Usuarios VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", getPlayerName(player):gsub("#%x%x%x%x%x%x", ""), accName, getPlayerSerial(player), getElementModel(player), getPlayerMoney(player), pos, getElementInterior(player), getElementDimension(player), getPlayerWantedLevel(player)) end end
  12. 1 - Com dxDrawImageSection - este tópico vai te ajudar com os cálculos necessários: https://forum.multitheftauto.com/topic/95911-bug-what-wrong-in-this-circle-hud 2 - Você pode definir um tempo com setTimer para ativar o inicio da perca de fome/sede sempre que o jogador comer ou beber algo. E fazer uma verificação, resetando quando necessário. Para a subtração do valores, você pode usar também setTimer e definir um tempo para abaixar esses valores. Para abaixar a vida quando sentir fome: Fazendo os passos que eu disse acima, você poderá verificar a quantidade de sede/fome continuamente e ir setando a vida do jogador com get/setElementHealth. Obs: minha primeira resposta também vale para a barra de fome e sede. 3 - Salvamento: Eventos onPlayerQuit; onPlayerLogout e onResourceStop para o salvamento dos dados. Salve com: getElementData (que será definido no carregamento) e setAccountData. Carregamento: Eventos onPlayerLogin e onResourceStart. Obtenha o salvamento na conta (com getAccountData) e defina no player com setElementData Sistema de compra: Você pode procurar algum resource existente ou criar do zero. Todos esforço em fazer é válido, então se você já tentou fazer mostre aqui o código.
  13. Minha intenção foi só deixar a verificação com o getElementModel, por isso eu usei os valores genéricos vehicle e marker. Também vai precisar verificar se o veículo tem motorista (getVehicleController).
  14. Por favor, crie o post na seção Portuguese / Português da próxima vez. Essa seção é apenas para a linguagem inglesa. Sobre o seu problema: addEventHandler( "onMarkerHit", marker, function ( hitElement ) if getElementModel(vehicle) == 416 then -- verificando se o id do veículo é 416 destroyElement(vehicle) end end )
  15. Parece ser a função 'getWeaponDamage' retornando um valor não-numérico.
  16. Sim, vai precisar da função de conta pra salvar quando o servidor desligar ou quando o resource for parado. Você pode optar só pelo addAccount + setAccountData se preferir.
  17. Você pode usar a função createElement - a função cria um elemento no jogo e isso iria representar o do banco de todos os postos. Para salvar você usaria setElementData assim como fosse em um player qualquer. Ou também fazer o mesmo só que com uma conta e salvar o valor com setAccountData.
  18. Já tem alguns exemplo com seleção/cliques em gridlist aqui pelo fórum que você vai encontrar pesquisando. Tente pegar uma base semelhante e fazer você mesmo, se tiver dificuldade poste aqui o código.
  19. An easy way to select the last gridlist row: local lastRow = guiGridListGetRowCount(gridlistItems["inventory"]) guiGridListSetSelectedItem( gridlistItems["inventory"], lastRow, column1 ) How do you know when you'll need to use this function? > By checking if the dropped item row is the last one in gridlist.
  20. No código que postei ali em cima só tem as funções que você vai precisar. Os nomes você precisa adicionar nas rows da gridlist; e quando o jogador clicar no botão irá verificar se algum texto está selecionado e retornará o nome da torcida. Mas pra isso você deve programar utilizando aquelas funções como eu disse.
  21. Vai mostrar a lista das torcidas numa gridList, tipo assim: Então o jogador iria selecionar um item e clicar no botão para escolher.
  22. Você tá salvando a profissão na conta e usando getElementData no client, sendo que element-data é um valor armazenado diretamente para um elemento. Use: setElementData( source, "Profissão", "Mecânico" ) no lado server.
  23. @kevincouto6 Você pode mandar o código por privado se não quiser postar aqui, e se for pra postar só um pedaço do código vai ficar difícil pra alguém te ajudar.
  24. Você vai precisar destas funções: createMarker "onMarkerHit" isObjectInACLGroup getAccountName getPlayerAccount aclGetGroup Para destruir a ambulância é só você armazenar ela numa tabela e obter ela da tabela com o jogador na chave e usar destroyElement.
  25. Mas qual é exatamente o problema? Se é o conflito entre os 2 scripts com essa função é só você desativar/editar o outro.
×
×
  • Create New...