Jump to content

Jonas^

Members
  • Posts

    1,016
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Jonas^

  1. Como o DNL já mencionou é possível sim porém isso exige muito conhecimento até porque você vai ter clientes se acontecer algum problema eles vão pedir suporte isso é extremamente importante você dar um suporte muito rápido aos seus clientes, pois é assim que eles vão trazer mais clientes pra você, agora imagina se você fizer um sistema de qualquer jeito todo bugado código todo mal feito e vender pro cara e ele achar algum bug e vim te procurar e você não saber corrigir e não responder ele? logicamente ele vai falar pra todo mundo que você é caloteiro e tudo mais, isso estraga sua fama e você não vai conseguir vender + nada. Agora se fizer tudo certinho dar suporte, atender bem com respeito os clientes da pra ganhar um bom dinheiro sim, mas antes você precisa de muito conhecimento pra pensar em ganhar algum dinheiro com o MTA. Lua é mais simples de você entender, e se seu intuito é realmente ficar pelo MTA aconselho começar por lua, agora se você quer ganhar + dinheiro aconselho você começar estudar php/html, pois o número de clientes que necessitam de websites é muito maior que donos de servidores que precisam de resources compradas.
  2. Isso pode acontecer em 2 ocasiões mais comuns. 1. O código pode estar com algum erro no lado server/client. 2. Quando o evento é chamado pelo server ele é não é reconhecido pois pode ter algum erro ou o mais comum que é o server carregar antes do client informando esse erro no debug. -- A solução é colocar dentro de um timer ou se tiver algum problema achar e corrigi-lo mas como acredito que seu código não tem erros é a segunda opção.
  3. Sim claro que é complexo, concordo totalmente com você, porém pelo que vi aqui os resources que ele posta na página dele, ele tem capacidade pra desmembrar esse sistema de admin todo. não entendi o porque da dificuldade, quero entender como ele mostra resources mais complexas que um simples sistema de chat e não consegue nem começar a parte mais básica.
  4. Use a função getPlayersByData -- function getPlayersByData (dataName) if dataName and type(dataName) == "string" then local playersTable = {} for i,v in ipairs(getElementsByType("player")) do if getElementData (v, dataName) then table.insert (playersTable, getPlayerName(v)) end end if #playersTable == 0 then return false end return playersTable end return false end
  5. Painel admin tem o código pronto, basta ter vontade de dar ctrl + c + v e adaptar para jogadores falar entre eles já que lá esta entre admins.
  6. Dai eu não sei, tem que ver ... Te dei o código pronto é só dar ctrl + c e ctrl + v não entendo como você consegue apanhar pra uma coisa tão simples.
  7. Teste com o meu DX, use somente meu código pra testar, tenho quase certeza que o problema ta na verificação nesse seu painel aí. @Renazz
  8. Note: Seu comando precisa de uma verificação: Se o jogador não estiver preso, então: em forma de código: if not getElementData (alvo, "preso") then -- Se o jogador não estiver preso, então: -- Código -- else --Se ele já estiver a data, então: outputChatBox ("Este jogador já esta preso!", thePlayer) end
  9. Agora esta certo, mas antes faça isso: outputChatBox ("[PRESOS] Nick: ".. getPlayerName(p):gsub("#%x%x%x%x%x%x", "") .." - Tempo: ".. tostring(jailtime(p)).." minuto(s)!", player, 230, 230, 230, true) Coloque essa linha no lugar da que está lá no comando de /presos.
  10. Eu disse verdadeira OU falsa não ambas ao mesmo tempo, leia mais atentamente as coisas, preste bem atenção no seu comando, você quer mostrar o tempo preso do jogador, você já tem ele no timer valTimer, bastar usar no element-data qual a dificuldade de fazer isso? Eu ou o DNL já poderiamos ter te dado o código a minutos atrás, mas já demos 95% do código pronto pra você, custa você se puxar pra fazer o restante que é coisa muito básica.
  11. R: Valor bool se trata de dois valores, sendo eles como exemplo true ou false ou seja, verdadeiro ou falso. Então não faz nenhum sentido você utilizar um valor booleano no element-data onde você quer obter o tempo do jogador preso correto?
  12. Então como você acha que tem que ser um valor bool sem nem saber oque é?
  13. Você sabe oque é um valor bool pelo menos @Renazz pode nos dizer oque é? esquecemos.
  14. Lhe damos 95% do código pronto, você é capaz de fazer isso, basta pensar um pouco.
  15. Mano, você mal vê o código e faz de qualquer jeito em menos de 2 minutos. Você vai ter que setar em 1 element-data nesse tempo preso aí como já foi mostrado no código do DNL.
  16. Nem tentou pelo visto... addCommandHandler ("presos", function (player, cmd) local presos = getPlayersByData ("preso") or {} local msg = "" if #presos == 0 then msg = "Nenhum jogador preso encontrado!" elseif type(presos) == "table" then msg = table.concat (presos, ", ") end outputChatBox ("[PRESOS] #FFFFFF"..msg, player, 255, 30, 30, true) end) function getPlayersByData (dataName) if dataName and type(dataName) == "string" then local playersTable = {} for _, v in ipairs(getElementsByType("player")) do if getElementData (v, dataName) then table.insert (playersTable, getPlayerName(v)) end end if #playersTable == 0 then return false end return playersTable end return false end
  17. Function útil. https://wiki.multitheftauto.com/wiki/GetPlayersByData
  18. Very good video, thanks for recording on my server xD.
  19. Mostre o onClientRender completo desse painel aí.
  20. Não, não se usa onPlayerJoin pra verificar uma data existente pois esse evento é antes do jogador fazer login na sua conta, vai retornar false. Faça assim mano: server-side local porte = createMarker (249.60, 68.46, 1002.64, "cylinder", 1, 255, 255, 255, 50) setElementDimension (porte, 1) setElementInterior (porte, 6) addCommandHandler ("comprarporte", function (player, cmd) if (not isGuestAccount (getPlayerAccount (player))) then -- Se o jogador não estiver deslogado, então: if isElementWithinMarker (player, porte) then -- Se o jogador estiver no marker, então: if not getElementData (player, "porte") then -- Se o jogador não estiver com a element-data "porte", então: if getPlayerMoney (player) >= 30000 then -- Se o jogador tiver menos ou igual a 30k, então: takePlayerMoney (player, 30000) -- Debita 30k da conta do jogador. setElementData (player, "porte", true) -- Seta a data no jogador. outputChatBox ("[AVISO] Você comprou o porte de armas!", player, 0, 255, 0) else --Se o jogador não tiver 30k, então: outputChatBox ("[AVISO] Você não tem dinheiro para o porte!", player, 255, 30, 30) end else -- Se o jogador tiver a account-data, então: outputChatBox ("[AVISO] Você já tem o porte de armas!", player, 255, 30, 30) end else -- Se o jogador não estiver no marker, então: outputChatBox ("[AVISO] Você não está na delegacia!", player, 255, 30, 30) end else -- Se o jogador estiver deslogado, então: outputChatBox ("[AVISO] Você não pode comprar o porte estando deslogado.", player, 255, 30, 30) end end) function savePlayerPorte (p) if isElement(p) then local savePorte = getElementData (p, "porte") or false setAccountData (getPlayerAccount(p), "porte", savePorte) end end function loadPlayerPorte (p) if isElement(p) and not (isGuestAccount(getPlayerAccount(p))) then local loadPorte = getAccountData (getPlayerAccount(p), "porte") or false setElementData (p, "porte", loadPorte) end end addEventHandler ("onResourceStart", resourceRoot, function () for i, p in ipairs(getElementsByType("player")) do loadPlayerPorte (p) end end) addEventHandler ("onPlayerLogin", root, function () loadPlayerPorte (source) end) addEventHandler ("onResourceStop", resourceRoot, function () for i, p in ipairs(getElementsByType("player")) do savePlayerPorte (p) end end) addEventHandler ("onPlayerQuit", root, function () savePlayerPorte (source) end) addEventHandler ("onPlayerLogout", root, function (acc) savePlayerPorte (source, acc) end) client-side addEventHandler ("onClientRender", root, function () local checkPorte = getElementData (localPlayer, "porte") or false if (checkPorte) then dxDrawText ("Porte: Sim", -19, 459, 346, 493, tocolor(0, 255, 0, 255), 2.00, "default-bold", "center", "center", false, false, false, false, false) else dxDrawText ("Porte: Não", -19, 459, 346, 493, tocolor(255, 0, 0, 255), 2.00, "default-bold", "center", "center", false, false, false, false, false) end end) Leia este tópico: Isso pode te ajudar de alguma forma. Boa sorte! @Renazz
  21. Meu deus mano, você ta tentando fazer sem nem se quer entender, olha oque você fez '-', primeira vez que vejo isso jesus
  22. Coloque o comando novamente com element-data, ou seja, getElementData (..) e setElementData (..), dai quando o jogador quitar você usa o evento onPlayerQuit pra salvar na conta do jogador com getElementData e setAccountData dai quando ele logar getAccountData e setElementData com o valor.
  23. Sim, getPlayerAccount é somente server, passe pra element-data novamente e salve na conta do jogador quando ele quitar com setAccountData.
  24. Ali no meu comentário na linha 9 ta errado, é -- Se o jogador tiver, maior ou igual a 30k, então:
×
×
  • Create New...