Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    4,008
  • Joined

  • Last visited

  • Days Won

    184

Everything posted by Lord Henry

  1. Não faz sentido você verificar com valores diferentes dos valores usados pra criar o DX.
  2. Essa sua função getPlayerFromID está errada. Não tem nada a ver com ID dos jogadores, apenas com o índice daquele loop. Dai é óbvio que não vai retornar o mesmo ID pro mesmo jogador. function getPlayerFromID (theID) if (tonumber (theID)) then theID = tonumber (theID) local players = getElementsByType ("player") for id, p in ipairs (players) do local accID = getAccountID (getPlayerAccount (p)) if (theID == accID) then return p end end return false else return false end end
  3. Sem código fica difícil adivinhar. Mas já vou logo adiantando que vc usa o getAccountID.
  4. Não se esqueça de deixar um Thanks nas respostas que lhe ajudaram.
  5. Não se esqueça do Thanks nas respostas que lhe ajudaram.
  6. Só pegar as coordenadas que vc usou pra criar o botão. No caso os parâmetros do DxDrawRectangle.
  7. Ele está procurando isso na linha 9. local rand = math.random(1, 5) Mas não prestei atenção se foi removido de propósito.
  8. @NeoGM você está usando a o botão de page do fórum de maneira equivocada. Tome mais cuidado.
  9. Já tentou com onResourceStop?
  10. Não seria melhor ter feito tudo junto? SpawnM = createMarker (-2396.8295898438, -617.03546142578, 131.75123596191, "cylinder", 1.5, 255, 255, 255, 50) function msg (player) if (player) and (getElementType (player) == "player") then outputChatBox ("Você foi congelado até iniciar o Round!!", player, 255, 255, 255) setElementFrozen (player, true) end end addEventHandler ("onMarkerHit", SpawnM, msg)
  11. @+MarceloM. favor não exagerar no uso de negrito. Use no bom senso.
  12. source não é o jogador no evento onResourceStart. Preste atenção na Wiki. local vZones = { {x = 190, y = -489, z = 980, width = 65, depth = 60, height = 1}, } local z = {} function initvZones() if vZones and #vZones ~= 0 then for _,v in ipairs (vZones) do if v then if v.x and v.y and v.z and v.width and v.depth and v.height then local c = createColCuboid (v.x, v.y, v.z, v.width, v.depth, v.height) if c then z[c] = true for _,thePlayer in ipairs (getElementsByType("player")) do if (getElementDimension (thePlayer) == 100) then -- Tentativa de verdade. if isElementWithinColShape (thePlayer, c) then killPed (thePlayer) end end addEventHandler ("onElementDestroy", c, function() -- Não recomendo fazer isso dentro de loops. if z[source] then z[source] = nil end end) addEventHandler ("onColShapeHit", c, function (h, d) -- Prefira usar nomes fáceis de identificar em vez de letras. if h and isElement(h) and getElementType (h) == "player" then killPed (h) end end) end end end end end end end addEventHandler ("onResourceStart", resourceRoot, initvZones)
  13. Não. Pois se fizer isso não será mais possível falar no chat normal também. Quando vc aperta T e escreve alguma mensagem, vc está internamente usando o comando /say Se você está querendo evitar Spam, só usar um setTimer. Quando o jogador enviar uma mensagem, verifica se existe esse timer, se existir, cancela o envio da mensagem com cancelEvent no evento onPlayerChat. Se não tiver o timer, manda a mensagem normalmente e cria o timer.
  14. Mostre seu acl.xml então. Ele está na pasta deathmatch.
  15. Você sabe criar botões DX, certo? Então qual a dificuldade de criar um botão pequeno com um X? Dai quando clicar nesse botão, vc cancela a renderização do painel com: removeEventHandler ("onClientRender", root, renderPanel)
  16. Dê acesso admin para o resource.
  17. Baixe um programa chamado IMG Tools, depois vá na pasta de instalação do seu GTA SA na pasta Models. Copie o arquivo gta_int.img para uma pasta segura, depois abra-o com esse programa e exporte todos os arquivos DFF dele. Depois vc precisa descobrir qual arquivo é do interior que você quer. Descobrindo qual deles é do interior que você quer, abra-o em um programa de modelagem 3D e altere-o como quiser. Depois de concluir a alteração, exporte o arquivo de volta em DFF e mova-o pra dentro do seu resource no MTA. Você pode carregá-lo com engineLoadDFF e engineReplaceModel.
  18. Você pode criar uma table e definir a posição da máscara em cada ID de skin. Exemplo: maskTable = { [0] = {offX, offY, offZ}, -- Substitua pela coordenada que a máscara vai ficar anexada na skin do CJ. [1] = {offX, offY, offZ}, -- Mesma coisa pra skin 1. E assim por diante. } masks = {} -- Onde as máscaras de cada player vão ficar. -- Depois pra anexar a máscara no jogador: function anexarMask (thePlayer) local id = getElementModel (thePlayer) -- Se o cara estiver usando a skin do CJ, id = 0. if (maskTable[id] == nil) then -- Se essa skin não existe na table, então: outputChatBox ("Sua skin não tem máscara.", thePlayer) else local x, y, z = unpack (maskTable[id]) -- x, y, z recebem offX, offY, offZ do [id] da table. local px, py, pz = getElementPosition (thePlayer) masks[thePlayer] = createObject (??, px, py, pz, 0, 0, 0, true) -- Cria a máscara na posição do jogador. Coloque o ID do objeto no lugar do ?? attachElements (masks[thePlayer], thePlayer, x, y, z) -- Anexa a máscara no jogador, usando os offsets configurados na table. end end
  19. function Render() if (getElementDimension (localPlayer) == 5) and (getElementInterior (localPlayer) == 10) then -- Substitua o 5 e o 10 pela dimensão e interior respectivamente. for _, Data in pairs( bInfos ) do local fPosX, fPosY, fPosZ = getElementPosition( localPlayer ); local fDataX, fDataY, fDataZ = unpack( Data.vecPos ); local fDistanceBetweenPoints = getDistanceBetweenPoints3D ( fPosX, fPosY, fPosZ,fDataX, fDataY, fDataZ ); local fInputDistance = Data.fDistance or 20; if fDistanceBetweenPoints < fInputDistance then local fCameraX, fCameraY, fCameraZ = getCameraMatrix(); local fWorldPosX, fWorldPosY = getScreenFromWorldPosition( fDataX, fDataY, fDataZ + 1, fInputDistance ); local bHit = processLineOfSight( fCameraX, fCameraY, fCameraZ, fDataX, fDataY, fDataZ, true, false, false, true, false, false, false, false ); if not bHit then if fWorldPosX and fWorldPosY then dxDrawText( Data.sText, fWorldPosX, fWorldPosY, fWorldPosX, fWorldPosY, Data.iColor, Data.fScale, Data.sFont ); end end end end end end addEventHandler ("onClientRender", root, Render) Só fazer assim.
  20. Sim é possível. Veja como é feito neste resource antigo de taxista: https://community.multitheftauto.com/index.php?p=resources&s=details&id=14561
  21. Faz todos os objetos serem LowLOD. Assim eles podem ser vistos a uma distância maior. No entanto eles perderão a colisão. Pra arrumar isso, duplique o mapa com objetos normais e deixe-os invisíveis.
  22. Está faltando o evento onClientMarkerHit. Além disso, na sua linha 11, vc escreveu hitPlayer errado.
  23. Ou então apenas adicione o objeto resource.Mapmanager na ACL Group Admin.
  24. É. Seu servidor está antigo demais. Os caras da host te tapearam. Sobre seu meta, parece estar tudo certo. Mas da próxima vez, utilize o botão <> do fórum e selecione XML pra postar o meta.
  25. Use sver no F8 e nos diga o que aparece. Mostre também o meta.xml do resource Mecanico.
×
×
  • Create New...