-
Posts
4,008 -
Joined
-
Last visited
-
Days Won
184
Everything posted by Lord Henry
-
Não faz sentido você verificar com valores diferentes dos valores usados pra criar o DX.
-
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
-
Sem código fica difícil adivinhar. Mas já vou logo adiantando que vc usa o getAccountID.
-
Não se esqueça de deixar um Thanks nas respostas que lhe ajudaram.
-
Não se esqueça do Thanks nas respostas que lhe ajudaram.
-
Só pegar as coordenadas que vc usou pra criar o botão. No caso os parâmetros do DxDrawRectangle.
-
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.
-
Como desvincula o emprego de mecânico da agência?
Lord Henry replied to NeoGM's topic in Programação em Lua
@NeoGM você está usando a o botão de page do fórum de maneira equivocada. Tome mais cuidado. -
Já tentou com onResourceStop?
-
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)
-
@+MarceloM. favor não exagerar no uso de negrito. Use no bom senso.
-
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)
-
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.
-
Mostre seu acl.xml então. Ele está na pasta deathmatch.
-
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)
-
Dê acesso admin para o resource.
-
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.
-
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
-
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.
-
Sim é possível. Veja como é feito neste resource antigo de taxista: https://community.multitheftauto.com/index.php?p=resources&s=details&id=14561
-
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.
- 1 reply
-
- 1
-
-
Está faltando o evento onClientMarkerHit. Além disso, na sua linha 11, vc escreveu hitPlayer errado.
-
Meu mapmanager esta bugado
Lord Henry replied to V1RU5's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
Ou então apenas adicione o objeto resource.Mapmanager na ACL Group Admin. -
Erro no meu script [Mecanico]
Lord Henry replied to EduardoMega's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
É. 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. -
Erro no meu script [Mecanico]
Lord Henry replied to EduardoMega's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
Use sver no F8 e nos diga o que aparece. Mostre também o meta.xml do resource Mecanico.
