Jayceon

Members
  • Content Count

    86
  • Joined

  • Last visited

Community Reputation

20 Decent

About Jayceon

  • Rank
    Transformer
  • Birthday 14/04/2000

Recent Profile Visitors

2,387 profile views
  1. Jayceon

    Report community resources here!

    My res.: https://community.mtasa.com/index.php?p=resources&s=details&id=12624 Reuploaded: https://community.mtasa.com/?p=resources&s=details&id=15990 DONE
  2. Jayceon

    Create one shader but replace multiple textures

    Try this: texture cj_ped_torso; texture cj_ped_head; texture cj_ped_legs; texture cj_ped_feet; technique TexReplace { pass P0 { DepthBias = -0.0002; Texture[0] = cj_ped_torso; } pass P1 { DepthBias = -0.0002; Texture[0] = cj_ped_head; } pass P2 { DepthBias = -0.0002; Texture[0] = cj_ped_legs; } pass P3 { DepthBias = -0.0002; Texture[0] = cj_ped_feet; } }
  3. Jayceon

    Get a random position in a given area

    function getRandomSpawnPoint(cityName) if spawnPositions[cityName] then local realTime = getRealTime() math.randomseed(realTime.second + realTime.minute + realTime.hour) local minX = math.min(spawnPositions[cityName].minPos[1], spawnPositions[cityName].maxPos[1]) local minY = math.min(spawnPositions[cityName].minPos[2], spawnPositions[cityName].maxPos[2]) local maxX = math.max(spawnPositions[cityName].minPos[1], spawnPositions[cityName].maxPos[1]) local maxY = math.max(spawnPositions[cityName].minPos[2], spawnPositions[cityName].maxPos[2]) return math.random(minX, maxX), math.random(minY, maxY) end end
  4. Jayceon

    Set color of a custom texture

    You need a color shader, or a renderTarget -> draw the texture image then draw one rectangle with the selected color -> create texture from the renderTarget pixels then destroy renderTarget. What did I say before? function changeTextureColor(textureElement, red, green, blue, alpha) local textureWidth, textureHeight = dxGetMaterialSize(textureElement) -- get the texture size local tempRenderTarget = dxCreateRenderTarget(textureWidth, textureHeight) -- create render target with texture size dxSetRenderTarget(tempRenderTarget) -- start rt dxDrawImage(0, 0, textureWidth, textureHeight, textureElement) -- draw the texture image to the rt dxDrawRectangle(0, 0, textureWidth, textureHeight, tocolor(red, green, blue, alpha)) -- draw the selected color rectangle to the rt -- you can add custom texts to texture etc.. dxSetRenderTarget() -- end rt local rt_pixels = dxConvertPixels(dxGetTexturePixels(tempRenderTarget), "png") -- get the rt pixels and convert to png destroyElement(tempRenderTarget) -- destroy rt because I converted to texture return dxCreateTexture(rt_pixels) -- return the new texture element end Or the shader way (I dont tested the shader): float red; float green; float blue; float alpha; technique colorChange { pass P0 { MaterialAmbient = float4(red, green, blue, alpha); } } -- You need to divide the r/g/b with 255 because shader color float range is 0-1. local selectedRed = 128 local selectedGreen = 64 local selectedBlue = 32 local selectedAlpha = 200 dxSetShaderValue(colorChangeShader, "red", selectedRed / 255) dxSetShaderValue(colorChangeShader, "green", selectedGreen / 255) dxSetShaderValue(colorChangeShader, "blue", selectedBlue / 255) dxSetShaderValue(colorChangeShader, "alpha", selectedAlpha / 255) -- then apply the shader to the world texture
  5. Jayceon

    Get the range between two table keys

    I misunderstood.
  6. local screenX, screenY = guiGetScreenSize() local repBarTexture = dxCreateTexture("reputation.png") local barWidth, barHeight = dxGetMaterialSize(repBarTexture) local maxRep = 200 local currentRep = 100 local repBarPosX = currentRep * (barWidth - 1) / maxRep local repBarPixels = dxGetTexturePixels(repBarTexture) local r, g, b = dxGetPixelColor(repBarPixels, math.floor(repBarPosX), barHeight / 2) outputChatBox("HEX: " .. string.format("#%.2X%.2X%.2X", r, g, b) .. ", R: " .. r .. ", G: " .. g .. ", B: " .. b) local barX = (screenX - barWidth) / 2 local barY = (screenY - barHeight) / 2 addEventHandler("onClientRender", getRootElement(), function () dxDrawImage(barX, barY, barWidth, barHeight, repBarTexture) dxDrawRectangle(barX + repBarPosX - 2, barY - 3, 4, barHeight + 6, tocolor(255, 255, 255)) end )
  7. Jayceon

    I need help with some calculations

    Like in Vice City camera/ped rotation? When you move your cursor the ped rotate by the camera.
  8. Jayceon

    [DUDE]dxDrawCircle Bug

    Real function but only FROM VERSION 1.5.5 r13977 ONWARDS
  9. Jayceon

    Path quality problem

    I solved this problem with a 8x8 circle image. Added image to the every node position in RT and looks better. What I mean? dxSetRenderTarget(gpsRouteImage) dxSetBlendMode("modulate_add") for i = 2, #gpsLines do if gpsLines[i - 1] then local x0 = gpsLines[i][1] - routeStartPosX + 8 local y0 = gpsLines[i][2] - routeStartPosY + 8 local x1 = gpsLines[i - 1][1] - routeStartPosX + 8 local y1 = gpsLines[i - 1][2] - routeStartPosY + 8 dxDrawImage(x0 - 4, y0 - 4, 8, 8, "dot.png") dxDrawLine(x0, y0, x1, y1, tocolor(255, 255, 255), 9) end end dxSetBlendMode("blend") dxSetRenderTarget()
  10. Jayceon

    engineLoadIFP error!

    Your code in client side?
  11. Jayceon

    engineLoadIFP error!

    I think MTA Team didn't added to the stable build. Download and update your MTA client with https://nightly.mtasa.com/ I tested yesterday and works very well.
  12. Jayceon

    How to let x resource start before y resource starts

    I'm using the download_priority_group in the meta.xml and it works fine. Higher priority resources load earlier than lower priorities, so: Admin-system: <download_priority_group>2</download_priority_group> Accounts-system: <download_priority_group>1</download_priority_group>
  13. Jayceon

    [HELP] fileRead

    Or simply: local ourText = [[This is line 1 This is line 2 This is line 3 This is line 4 This is line 5 ]] local textLines = split(ourText, "\n") print(table.concat(textLines, "\n"))
  14. Jayceon

    [Help] Arrow that targeting one position

  15. Jayceon

    Check if something is within four given points

    customBoundaries = { -- this boundary is between the big brown building(s) and the skatepark on the road in LS ["test"] = { {x = 1842.2908935547, y = -1412.469360351}, {x = 1856.8596191406, y = -1412.555664062}, {x = 1851.5925292969, y = -1436.5225830078}, {x = 1842.0438232422, y = -1424.5217285156}, }, } local colorOfBounds = tocolor(255, 0, 0) bindKey("e", "down", function () if isElementWithinBoundary(localPlayer, "test") then colorOfBounds = tocolor(0, 255, 0) else colorOfBounds = tocolor(255, 0, 0) end end ) addEventHandler("onClientRender", getRootElement(), function () local localX, localY, localZ = getElementPosition(localPlayer) local boundary = "test" for i = 1, #customBoundaries[boundary] do local currentPoint = customBoundaries[boundary][i] local nextPoint = customBoundaries[boundary][i + 1] if currentPoint then if i == #customBoundaries[boundary] then nextPoint = customBoundaries[boundary][1] dxDrawLine3D(currentPoint.x, currentPoint.y, localZ, nextPoint.x, nextPoint.y, localZ, colorOfBounds, 3) end dxDrawLine3D(currentPoint.x, currentPoint.y, localZ, nextPoint.x, nextPoint.y, localZ, colorOfBounds, 3) end end end ) function isElementWithinBoundary(element, boundary) if isElement(element) and boundary and customBoundaries[boundary] and #customBoundaries[boundary] >= 3 then local pointX, pointY, pointZ = getElementPosition(element) local intersections = 0 for i = 1, #customBoundaries[boundary] do local currentPoint = customBoundaries[boundary][i] if currentPoint then local nextPoint = customBoundaries[boundary][i + 1] local previousPoint = customBoundaries[boundary][i - 1] if i == 1 then previousPoint = customBoundaries[boundary][1] elseif i == #customBoundaries[boundary] then nextPoint = customBoundaries[boundary][1] end if areIntersecting(pointX, pointY, previousPoint.x, previousPoint.y, currentPoint.x, currentPoint.y, nextPoint.x, nextPoint.y) then intersections = intersections + 1 end end end if intersections > 0 then return true end end return false end function sign(x1, y1, x2, y2, x3, y3) return (x1 - x3) * (y2 - y3) - (x2 - x3) * (y1 - y3) end function areIntersecting(pointX, pointY, x1, y1, x2, y2, x3, y3) local b1 = sign(pointX, pointY, x1, y1, x2, y2) < 0 local b2 = sign(pointX, pointY, x2, y2, x3, y3) < 0 local b3 = sign(pointX, pointY, x3, y3, x1, y1) < 0 return b1 == b2 and b2 == b3 end Tested. Works with 3 or more points. Yes, you can check the element within the the polygon.