Jump to content

zMpyster

Members
  • Posts

    111
  • Joined

  • Last visited

Everything posted by zMpyster

  1. http://prntscr.com/udy5x7 Aqui está a print da imagem, podem ver que eu apenas adicionei parte azul, não modifiquei as reais dimensões da imagem, apenas adicionei
  2. local enableBlips = true local renderNorthBlip = true local alwaysRenderMap = false local alwaysRenderOxygen = false local worldW, worldH = 3072, 3072 local blip = 8 local sx, sy = guiGetScreenSize() local rt = dxCreateRenderTarget(290, 175) local xFactor, yFactor = sx/1366, sy/768 local yFactor = xFactor function findRotation(x1,y1,x2,y2) local t = -math.deg(math.atan2(x2-x1,y2-y1)) if t < 0 then t = t + 360 end; return t; end function getPointFromDistanceRotation(x, y, dist, angle) local a = math.rad(90 - angle); local dx = math.cos(a) * dist; local dy = math.sin(a) * dist; return x+dx, y+dy; end newTab = {} function drawRadar() if (not isPlayerMapVisible()) then local mW, mH = dxGetMaterialSize(rt) local x, y = getElementPosition(localPlayer) local X, Y = mW/2 -(x/(6000/worldW)), mH/2 +(y/(6000/worldH)) local camX,camY,camZ = getElementRotation(getCamera()) dxSetRenderTarget(rt, true) if alwaysRenderMap or getElementInterior(localPlayer) == 0 then dxDrawRectangle(0, 0, mW, mH, 0xFF7CA7D1) dxDrawImage(X - worldW/2, mH/5 + (Y - worldH/2), worldW, worldH, "image/world.png", camZ, (x/(6000/worldW)), -(y/(6000/worldH))) end dxSetRenderTarget() dxDrawRectangle((30)*xFactor, sy-((198+10))*yFactor, (271)*xFactor, (164)*yFactor, tocolor(0, 0, 0, 160)) dxDrawImage((30+5)*xFactor, sy-((200+5))*yFactor, (270-10)*xFactor, (155)*yFactor, rt, 0, 0, 0, tocolor(139, 137, 137)) local rx, ry, rz = getElementRotation(localPlayer) local lB = (33)*xFactor local rB = (8+290)*xFactor local tB = sy-(208)*yFactor local bB = tB + (155)*yFactor local cX, cY = (rB+lB)/2, (tB+bB)/2 +(35)*yFactor local toLeft, toTop, toRight, toBottom = cX-lB, cY-tB, rB-cX, bB-cY for k, v in ipairs(getElementsByType("blip")) do local bx, by = getElementPosition(v) local actualDist = getDistanceBetweenPoints2D(x, y, bx, by) local maxDist = getBlipVisibleDistance(v) if actualDist <= maxDist and getElementDimension(v)==getElementDimension(localPlayer) and getElementInterior(v)==getElementInterior(localPlayer) then local dist = actualDist/(6000/((worldW+worldH)/2)) local rot = findRotation(bx, by, x, y)-camZ local bpx, bpy = getPointFromDistanceRotation(cX, cY, math.min(dist, math.sqrt(toTop^2 + toRight^2)), rot) local bpx = math.max(lB, math.min(rB, bpx)) local bpy = math.max(tB, math.min(bB, bpy)) local bid = getElementData(v, "customIcon") or getBlipIcon(v) local _, _, _, bcA = getBlipColor(v) local bcR, bcG, bcB = 255, 255, 255 if getBlipIcon(v) == 0 then bcR, bcG, bcB = getBlipColor(v) end if getBlipIcon(v) == 13 then setBlipSize(v, 6.4) end if getBlipIcon(v) == 25 then setBlipSize(v, 7) end local bS = getBlipSize(v) if getBlipIcon(v) ~= 34 then dxDrawImage(bpx -(blip*bS)*xFactor/2, bpy -(blip*bS)*yFactor/2, (blip*bS)*xFactor, (blip*bS)*yFactor, "image/blip/"..bid..".png", 0, 0, 0, tocolor(bcR, bcG, bcB, bcA)) end end end if renderNorthBlip then local rot = -camZ+180 local bpx, bpy = getPointFromDistanceRotation(cX, cY, math.sqrt(toTop^2 + toRight^2), rot) local bpx = math.max(lB, math.min(rB, bpx)) local bpy = math.max(tB, math.min(bB, bpy)) local dist = getDistanceBetweenPoints2D(cX, cY, bpx, bpy) local bpx, bpy = getPointFromDistanceRotation(cX, cY, dist, rot) if bpx and bpy then local bpx = math.max(lB, math.min(rB, bpx)) local bpy = math.max(tB, math.min(bB, bpy)) dxDrawImage(bpx -(blip*2)/2, bpy -(blip*2)/2, blip*2, blip*2, "image/blip/4.png", 0, 0, 0) --draw north (4) blip end end dxDrawImage(cX -(blip*2)*xFactor/2, cY -(blip*2)*yFactor/2, (blip*2)*xFactor, (blip*2)*yFactor, "image/player.png", camZ-rz, 0, 0) end end addEventHandler("onClientRender", root, drawRadar) Esse script cria um mini mapa com uma imagem 1536x1536. Eu editei essa imagem, adicionando 201 de largura, sendo assim a imagem atual está com 1737x1536 de tamanho, gostaria de saber de alguma forma conseguiria editar esse script para as novas dimensões da imagem Note: As coordenadas do mapa original permaneceram a mesma(1536x1536), ou seja, apenas foi adicionado 201 de largura. Note: Não foi eu o criador do script, apenas modifiquei o minimapa.
  3. Estava editando meu mod de trems e queria que de alguma forma quando tivesse 5 vagões o trem ficasse mais lento do que o normal. Eu já tentei usar setModelHandling e nada, muitos vão sugerir usar o setTrainSpeed, porém, eu quero que o player que esteja no trem seja livre para escolher a velocidade de andar e não que o script fique setando a velocidade do trem
  4. É uma comparação para eu ter uma noção do quão melhor é usar tabelas
  5. Tem como fazer assim, mas, eu me referia a um caso onde não tivesse alternativas, você só tinha 2 opções, usar 200 tabelas ou 1 elementData, qual seria mais viável?
  6. Então digamos que eu fosse salvar por exemplo lanches, se eu pudesse usar 200 tabelas diferentes ou 1 elementData, qual seria mais viável?
  7. Acho que todos sabem que o uso de muitos elementDatas acabam fazendo com o que o servidor fique "lagando", a minha dúvida é, quantas tabelas precisam ser criadas para o preço ficar igual ao de um elementData?
  8. Bom pessoal, tenho 2 scripts aqui, só que eu preciso quando o script 1 for desligado (lado do servidor), o script 2 retorne um valor (lado do cliente), eu tentei usar o trigger, mas, acaba que não dá tempo de finalizar a função e retornar o valor Os scripts que preciso de ligação é um de contagem de KM (funções no lado do cliente) e um de concessionária que receberá o valor de KM rodados quando for desligado (funções no lado do server) Espero ter conseguido deixar claro minha dúvida!
  9. posCars = { [1] = {-60.607, -1891.674, 7.345, -0, 0, 38.494, 589}, [2] = {-67.794, -1893.794, 7.373, -0, 0, 6.455, 402}, [3] = {-63.686, -1876.661, 7.145, -0, 0, 68.574, 492}, [4] = {-68.76, -1883.958, 7.231, -0, 0, 64.54, 546}, [5] = {-72.508, -1875.779, 7.144, -0, 0, 37.604, 400}, [6] = {-74.556, -1893.794, 7.375, -0, 0, 9.432, 579}, [7] = {-96.755, -1874.517, 7.059, -0, 0, 300.318, 580}, [8] = {-86.229, -1883.356, 7.192, -0, 0, 329.811, 550}, [9] = {-88.031, -1875.9, 7.092, -0, 0, 305.942, 494}, [10] = {-83.617, -1895.983, 7.36, -0, 0, 342, 474}, [11] = {-90.568, -1893.863, 7.321, -0, 0, 324.894, 603}, [12] = {-95.74, -1889.7, 7.257, -0, 0, 322.857, 549, 500}, [13] = {-102.904, -1884.16, 7.173, -0, 0, 316.183, 507}, [14] = {-115.831, -1879.266, 7.087, -0, 0, 320.578, 483}, [15] = {-113.032, -1883.835, 7.151, -0, 0, 309.337, 404}, [16] = {-87.334, -1907.68, 7.5, -0, 0, 350.368, 502}, [17] = {-81.205, -1913.04, 7.581, -0, 0, 9.733, 536}, [18] = {-93.914, -1914.425, 7.576, -0, 0, 339.613, 600}, [19] = {-100.304, -1902.246, 7.412, -0, 0, 323.16, 421}, [20] = {-108.174, -1900.021, 7.369, -0, 0, 307.313, 602}, [21] = {-102.732, -1916.18, 7.583, -0, 0, 330.774, 540}, [22] = {-112.588, -1910.002, 7.491, -0, 0, 311.229, 445}, [23] = {-119.002, -1905.607, 7.423, -0, 0, 304.179, 426}, [24] = {-115.182, -1917.262, 7.581, -0, 0, 294.489, 566}, [25] = {-122.122, -1914.214, 7.529, -0, 0, 315.483, 604}, [26] = {-116.957, -1892.801, 7.26, -0, 0, 305.495, 547}, [27] = {-118.075, -1899.84, 7.35, -0, 0, 303.497, 411}, [28] = {-124.798, -1891.835, 7.234, -0, 0, 314.033}, [29] = {-128.865, -1875.398, 7.014, -0, 0, 293.666}, [30] = {-131.948, -1881.229, 7.084, -0, 0, 312.091}, [31] = {-122.083, -1903.347, 12.111, -0, 0, 325.415}, [32] = {-104.14, -1914.299, 12.289, -0, 0, 344.294}, } function resourceStart() for k=1, #posCars do car[k] = createVehicle(posCars[k][7] or 411, posCars[k][1], posCars[k][2], posCars[k][3], posCars[k][4], posCars[k][5], posCars[k][6]) setVehicleDamageProof(car[k], true) setVehicleLocked(car[k], true) setVehicleColor(car[k], 255, 255, 255) setTimer (function() setElementFrozen(car[k], true) end, 3000, 1) end end addEventHandler("onResourceStart", resourceRoot, resourceStart) Esse script estava normal, porém hj fui iniciá-lo e começou a spawnar 2 carros ao invés de apenas 1 cliente: obj = createObject(1917, -100.8, -1879.4, -4.3, 0.75, 0, 187.75) objLowLOD = createObject ( 1917, -100.8, -1879.4, -4.3,0.75, 0, 187.75,true ) setLowLODElement ( obj, objLowLOD ) engineSetModelLODDistance ( 1917, 300 ) attempt to call global 'engineSetModelLODDistance' (a nil value) esse erro tbm, começou a dar apenas agr, eu queria deixar o debug limpo, esse erro não está interferindo em nada, porém fica dando no debug
  10. Sim, eu dei uma olhada e também vi essas funções, más, eu ainda tenho uma dúvida aqui, por que eles removeram essas funções? Alguém sabe se à algum projeto para novas funções parecidas como essas? O "Custom Train Tracks" ainda ta de pé? Talvez vocês saibam mais do que eu
  11. Alguém sabe se o MTA oferece algum suporte para criar trilhos personalizados, alguma função...?
  12. Comecei agora a mexer com o zmodeler, estou tendo um problema na parte de textura, meu carro estava com a porta invertida, o porta-malas tava como porta direita e a porta direita como porta-malas. Eu arrumei esse problema, exportei o dff tudo certo, porém quando iniciei o recurso do carro ele ficou sem textura, as portas estavam certas porém ele estava sem textura. Eu fiz aquilo de exportar o txd em bmp para ver se no zmodeler ele ficava com textura, porém nada, e as vezes dava esse erro aqui "invalid file signature. file:OpenSaveService.cpp. line:680" Eu tentei colocar a textura pela bola vermelha, porém fica tudo errado, coisas sobrepondo outras.
  13. é como eu disse kkkk, não tenho como testar, não tenho host
  14. Então, é que o que eu queria mesmo é por exemplo: Eu spawno um "linerunner" e um trailer, ai encaixando o trailer no caminhão ele fica preso pra todos, não fica aquela coisa bugada para os players sabe, será que então um código assim funcionaria: test = {} function detachTrailer(theTruck) if test[source] ~= true then attachTrailerToVehicle(theTruck, source) test[source] = true end end addEventHandler("onTrailerAttach", getRootElement(), detachTrailer) function reattachTrailer(theTruck) if test[source] == true then test[source] = false end end addEventHandler("onTrailerDetach", getRootElement(), reattachTrailer) Não testei, porém, creio eu que dessa forma acabaria com o loop infinito
  15. Acho que não é novidade pra ninguém que quando pegamos um trailer de caminhão manualmente sem script, fica bugado para os outros jogadores. Daí eu descobri um evento, "onTrailerAttach" que curiosamente ele é chamado até quando é do jeito manualmente (sem ser pela função "attachTrailerToVehicle") E com isso criei esse pequeno código, que na teoria, ele desbugaria o trailer quando estivesse no caminhão, más, eu não tenho uma host, e por isso não consigo ter a visão dos jogadores, e ai venho perguntar a vocês que já testaram ou podem testar Esse código realmente funciona? Ou a carga fica bugada mesmo assim? function detachTrailer(theTruck) attachTrailerToVehicle(theTruck, source) end addEventHandler("onTrailerAttach", getRootElement(), detachTrailer)
  16. Sim, sim, vou ter que fazer isso, é que com o respawn acabava ficando mais prático
  17. Então mn, tem um problema, como eu to usando o setElementFrozen, buga, algumas horas fica flutuando, outra para como se tivesse kickado no chão e subido novamente, outras em baixo da terra, parece que o carro respawna em "z" aleatório
  18. trailerPos = { [1] = {279.029, 1441.746, 10.586, -0, 0, 87.888}, [2] = {280.043, 1465.739, 10.586, -0, 0, 90.49}, [3] = {279.93, 1396.926, 10.586, -0, 0, 84.962}, [4] = {278.257, 1373.356, 10.586, -0, 0, 80.523}, [5] = {278.169, 1351.675, 10.586, -0, 0, 85.951}, } for k=1, #trailerPos do trailer[k] = createVehicle(435, trailerPos[k][1], trailerPos[k][2], trailerPos[k][3], -0, 0, trailerPos[k][6]) setVehicleRespawnPosition(trailer[k], trailerPos[k][1], trailerPos[k][2], trailerPos[k][3], -0, 0, trailerPos[k][6]) setTimer ( function() setElementFrozen(trailer[k], true) end, 800, 1) end function teste() for k=1, #trailerPos do respawnVehicle(trailer[k]) setTimer ( function() setElementFrozen(trailer[k], true) end, 800, 1) end end addCommandHandler("teste", teste) Então pessoal, queria mostrar pra vcs um bug que ta tendo nesse script, podem ver que a posição é sempre a mesma, só que quando eu respawno o veículo eles ficam bugados, más, usando as mesma coordenadas eu consigo criar eles sem nenhum bug. no createVehicle eles nascem normalmente como qualquer carro no respawnVehicle eles nascem debaixo da terra
  19. Bom pessoal, eu fiz um mapa, e eu queria saber se tem como colocar pra ele ser visto da mesma distância do mapa do GTA SA, pq quando eu vou um pouco pra trás no meu mapa ele some, já no do GTA SA não, o mapa que eu fiz foi feito pelo editor de mapas.
  20. Vocês recomendam que eu armazene em uma variável, ou na hora de chamar a função eu coloque um timer?
  21. Realmente ficou bem mais simplificado, só que ainda persisto com a dúvida do inicio, se dois players chamassem o uber ao mesmo tempo, teria chance de bugar as distâncias?
  22. Na vdd, se vc for testar no debug dessa forma não vai acusar erro, ou seja, não acho que seja um erro, o local pode ser chamado de desnecessário, más, eu coloco pq acostumei
  23. playerOrDist = {} accountName = {} distancia = {} function getUberNear(cliente) tableUber = aclGroupListObjects(aclGetGroup("UBER")) for objects,name in pairs(tableUber)do local accountName = split(name, '.') local player = getAccountPlayer(getAccount(accountName[2])) if (getElementType( player ) == "player" and player ~= cliente) then local jX, jY, jZ = getElementPosition (player) local pX, pY, pZ = getElementPosition (cliente) local dist = getDistanceBetweenPoints3D ( pX, pY, pZ, jX, jY, jZ) if distancia[cliente] == nil or distancia[cliente] == false then distancia[cliente] = dist..","..player else local playerOrDist = split(distancia[cliente], ',') if playerOrDist[1] > dist then distancia[cliente] = dist..","..player end end end end return distancia[cliente] end Testei agr, pensava que no loop, "name" retornava a conta já, más, retorna "user.conta". Pelo oq vi agr ta tudo certo, não da pra testar muita coisa pq precisa de 2 players...
  24. playerOrDist = {} distancia = {} function getUberNear(cliente) tableUber = aclGroupListObjects(aclGetGroup("UBER")) for objects,name in pairs(tableUber)do player = getAccountPlayer(getAccount(name)) if (getElementType( player ) == "player" and player ~= cliente) then local jX, jY, jZ = getElementPosition (player) local pX, pY, pZ = getElementPosition (cliente) local dist = getDistanceBetweenPoints3D ( pX, pY, pZ, jX, jY, jZ) if distancia[cliente] == nil or distancia[cliente] == false then distancia[cliente] = dist..","..player else local playerOrDist = split(distancia[cliente], ',') if playerOrDist[1] > dist then distancia[cliente] = dist..","..player end end end end return distancia[cliente] end a "distancia" eu tinha declarado lá em cima, sorry, na linha 5, eu acho que arrumei, o local na parte "local playerOrDist = split(distancia[cliente], ',')" eu coloquei por causa que o split, faz playerOrDist virar uma tabela contendo duas variáveis (distância e nome). Desculpe os erros bestas, não testei o mod
×
×
  • Create New...