Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    4,008
  • Joined

  • Last visited

  • Days Won

    184

Everything posted by Lord Henry

  1. No parâmetro de bindKey, coloque o keyState como "both". Dessa forma ela ativa tanto ao pressionar, quanto ao soltar. Com isso você consegue fazer alternância de comando. Apertar: Começa a mirar Soltar: Para de mirar
  2. Está vendo que setPedControlState está em vermelho? Significa que ela só funciona client-side.
  3. playSound3D Vai precisar verificar a distância dos jogadores server-side e depois ativar essa função acima client-side somente para os que estiverem próximos. Você pode verificar a distância dos jogadores com getDistanceBetweenPoints3D
  4. Ah, vc quer animação de revistar... E a animação vai num NPC e não no jogador. Entendi.
  5. Sim há limitações. GTA SA é um jogo bem antigo. Algumas coisas específicas são impossíveis de fazer nele. No entanto a maioria das limitações vc consegue evitar com gambiarras.
  6. "ped" é o grupo ao qual a animação pertence. Toda animação faz parte de um grupo de animações. No caso do médico, eu usaria do bloco "medic" e a única animação que ele tem: "cpr" Quanto a questão de loop, leia os demais parâmetros do setPedAnimation.
  7. Scripts client-side usam localPlayer. Remova o parâmetro de função e troque todos os thePlayer por localPlayer. Se você ler a wiki do bindKey, vai perceber que no client-side, o primeiro parâmetro não é o jogador e sim o nome da tecla/controle.
  8. Tá. Mas cadê o addCommandHandler? Sobre sua animação, ela está errada. "coptraf_stop" não faz parte do bloco "ped" e sim do bloco "police" Você pode conferir todas as animações na Wiki de Animations.
  9. Linha 12 deveria ser bindKey. Você está bindando a função ao soltar a tecla, é isso mesmo? Ou deveria ocorrer ao pressionar a tecla?
  10. Você precisa anexar manualmente as luzes no veículo. Crie uma table com os IDs das viaturas que possuem Giroflex, cada ID terá suas posições. Para criar as luzes, recomendo fazer com coronas, visto que luzes nem aparecem de dia. attachElements createMarker getElementModel
  11. setWeaponProperty (ID DA ARMA, "pro", "flags", 0x000001)
  12. Utilize o botão <> para postar códigos. Não cole direto no texto. E na próxima vez, poste na seção correta de Programação em Lua.
  13. Ah, verdade. Faltou converter o id para número. Pois depois de comando ele é uma string.
  14. Adicione isso no script de prender, fora da função: function getPlayerByID (id) for i, player in ipairs (getElementsByType("player")) do if getElementData(player, "ID") == id then return player end end end E na função que vc quer que seja por ID, troque o getPlayerFromPartialName (name) por getPlayerByID (id). Não se esqueça de substituir o parâmetro de função name por id. function colocanavtr (police, _, id) if hasObjectPermissionTo (police, "function.Prender") then local preso = getPlayerByID (id) local px, py, pz = getElementPosition (police) local bx, by, bz = getElementPosition (preso) local dist = getDistanceBetweenPoints3D (px, py, pz, bx, by, bz) if not preso then return outputChatBox ("Jogador invalido.", police, 190, 190, 190, true) end if preso == police then return outputChatBox ("Você não pode prender a si mesmo.", police, 190, 190, 190, true) end if getPlayerWantedLevel (preso) == 0 then return outputChatBox ("Este jogador não está sendo procurado.", police, 190, 190, 190, true) end if getPedOccupiedVehicle (police) then return outputChatBox ("Você não pode prender de dentro da viatura.", police, 190, 190, 190, true) end if getPedOccupiedVehicle (preso) then return outputChatBox ("Você não pode prender um bandido enquanto ele estiver dentro de um veículo.", police, 190, 190, 190, true) end if dist >= 2 then return outputChatBox ("Você precisa chegar mais perto para prender.", police, 190, 190, 190, true) end setElementData (preso, "navtr", true) addEventHandler ("onPlayerCommand", preso, onCommand) local vtr = carros[police] setElementData (vtr, "compreso", true) attachElements (preso, vtr, 0.2, -1.5, 0, 0, 0, 90) setElementFrozen (preso, true) toggleAllControls (preso, false) takeAllWeapons (preso) setPedAnimation (preso, "ped", "CAR_dead_LHS") vrx, vry, vrz = getElementRotation (vtr) setElementRotation (preso, vrx, vry, vrz+83) warpPedIntoVehicle (police, vtr) outputChatBox ("Leve o preso para a delegacia mais próxima #00ffff(sirenes azuis).", police, 190, 190, 190, true) end end addCommandHandler ("prender", colocanavtr)
  15. Não use source como parâmetro de função. function MarkerVisible (prevAcc, currAcc) -- Parâmetros do evento onPlayerLogin, vc descobre isso lendo a Wiki dele. if not getAccountData (currAcc, "FirstTime") then setElementVisibleTo (MarkerTeste, source, true) -- Source também muda dependendo do evento. Neste caso source = jogador que logou. else setElementVisibleTo (MarkerTeste, source, false) end end addEventHandler ("onPlayerLogin", root, MarkerVisible)
  16. Linhas 17 e 18 são comentários. Coloque dois traços na frente dessas linhas. Ou nem coloque elas no script.
  17. Da próxima vez, utilize a formatação adequada do fórum.
  18. Faça a conexão ser global em vez de local e coloque ela junto do onResourceStart. Dessa forma: addEventHandler("onResourceStart", resourceRoot, function() sql = dbConnect( "sqlite", "MrxSQL.db" ) dbExec(sql, "CREATE TABLE IF NOT EXISTS dinheiroatm ( conta TEXT, quantidade INT )") for k, v in ipairs(getElementsByType("player")) do local accounts = getPlayerAccount ( v ) if not isGuestAccount(accounts) then local conta = getAccountName(accounts) local target = getPlayerFromAccountName(conta) local qh = dbQuery(sql, "SELECT quantidade FROM dinheiroatm WHERE conta=?", conta) local result = dbPoll(qh, -1) if #result ~= 0 then setElementData(target,"Mrx:moneyatm",result[1]["quantidade"]) else dbFree(dbQuery(sql, "INSERT INTO dinheiroatm ( conta, quantidade ) VALUES ( '"..conta.."', '0' )")) setElementData(target,"Mrx:moneyatm",0) end end end end ) addEventHandler("onPlayerLogin", root, function(_, theCurrentAccount) local conta = getAccountName(theCurrentAccount) local target = getPlayerFromAccountName(conta) if isElement(target) then local qh = dbQuery(sql, "SELECT * FROM dinheiroatm WHERE conta=?", conta) local result = dbPoll(qh, -1) if #result ~= 0 then setElementData(target,"Mrx:moneyatm",result[1]["quantidade"]) else dbFree(dbQuery(sql, "INSERT INTO dinheiroatm ( conta, quantidade ) VALUES ( '"..conta.."', '0' )")) setElementData(target,"Mrx:moneyatm",0) end end end ) addEventHandler("onPlayerQuit", root, function() local conta = getPlayerAccount(source) if not isGuestAccount(conta) then local qh = dbQuery(sql, "SELECT quantidade FROM dinheiroatm WHERE conta=?", getAccountName(conta)) local result = dbPoll(qh, -1) if #result ~= 0 then local money = getElementData(source,"Mrx:moneyatm") dbExec(sql, "UPDATE dinheiroatm SET quantidade=? WHERE conta=?", money, getAccountName(conta)) else dbFree(dbQuery(sql, "INSERT INTO dinheiroatm ( conta, quantidade ) VALUES ( '"..getAccountName(conta).."', 0 )")) end end end ) addEvent("Mrx:depositoatm", true) addEventHandler("Mrx:depositoatm", root, function (valor) local valor = tonumber(valor) if (not valor or valor == " " or valor == "" or (valor and (tostring(valor):sub(1,1) == "-"))) then return end if not isGuestAccount(getPlayerAccount(source)) then if tonumber(getPlayerMoney(source)) >= valor then local money = getElementData(source,"Mrx:moneyatm") or 0 setElementData(source, "Mrx:moneyatm", money + valor) takePlayerMoney ( source, valor ) else outputChatBox("#7cc576[BANCO]#FFFFFF Você não possui essa quantidade para depositar.", source, 255, 0, 0,true) end end end ) addEvent("Mrx:saqueoatm", true) addEventHandler("Mrx:saqueoatm", root, function (valor) local valor = tonumber(valor) if (not valor or valor == " " or valor == "" or (valor and (tostring(valor):sub(1,1) == "-"))) then return end if not isGuestAccount(getPlayerAccount(source)) then if tonumber(getElementData(source,"Mrx:moneyatm")) >= tonumber(valor) then local money = getElementData(source,"Mrx:moneyatm") or 0 setElementData(source, "Mrx:moneyatm", money - valor) givePlayerMoney(source, valor) else outputChatBox("#7cc576[BANCO]#FFFFFF Você não possui essa quantidade para sacar.", source, 255, 0, 0,true) end end end ) addEvent("Mrx:transfere", true) addEventHandler("Mrx:transfere", root, function (valor, name) local valor = tonumber(valor) if (not valor or valor == " " or valor == "" or (valor and (tostring(valor):sub(1,1) == "-"))) then return end if name then target = getPlayerFromPartialName(name) if target == false or target == nil then outputChatBox("#7cc576[BANCO]#FFFFFF Jogador não localizado.", source, 255, 255, 255, true) return end if not isGuestAccount(getPlayerAccount(source)) then if (source) ~= (target) then if tonumber(getElementData(source,"Mrx:moneyatm")) >= (valor) then local money = getElementData(source,"Mrx:moneyatm") or 0 local quant = getElementData(target,"Mrx:moneyatm") or 0 setElementData(source, "Mrx:moneyatm", money - valor) setElementData(target, "Mrx:moneyatm", quant + valor) outputChatBox("#7cc576[BANCO]#FFFFFF O jogador "..getPlayerName(source).."#FFFFFF transferiu para sua conta $"..convertNumber(valor)..".", target, 255, 255, 255, true) outputChatBox("#7cc576[BANCO]#FFFFFF Você transferiu $"..convertNumber(valor).."#FFFFFF para a conta do jogador "..getPlayerName(target).."#FFFFFF.", source, 255, 255, 255, true) else outputChatBox("#7cc576[BANCO]#FFFFFF Você não possui essa quantidade para transferir.", source, 255, 0, 0,true) end end end end end ) function convertNumber ( number ) local formatted = number while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2') if ( k==0 ) then break end end return formatted end addEventHandler("onPlayerLogout", root, function() setElementData(source,"Mrx:moneyatm",0) end ) function getPlayerFromPartialName(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end function getPlayerFromAccountName(name) local acc = getAccount (name) if name and acc and not isGuestAccount (acc) then return getAccountPlayer (acc) else return false end end
  19. Já depurou o código pra ver se ele está lendo tudo?
×
×
  • Create New...