Jump to content

Jayceon

Members
  • Posts

    89
  • Joined

  • Last visited

  • Days Won

    1

Jayceon last won the day on August 1

Jayceon had the most liked content!

About Jayceon

  • Birthday 14/04/2000

Recent Profile Visitors

3,837 profile views

Jayceon's Achievements

Punk-@ss B*tch

[email protected] B*tch (12/54)

28

Reputation

  1. Hi. I've put together a code for you in which the door movement works as expected, there is one up and down movement involved at a certain camera/vehicle angle (see the pictures below). If you don't need that up/down movement either, we can remove it. local cameraElement = getCamera() local oldCursorRelX = 0.5 local oldCursorRelY = 0.5 local moveSensitivity = 2 function moveDoor(cursorRelX, cursorRelY) if not isCursorShowing() then return end local vehicleElement = getPedOccupiedVehicle(localPlayer) if not isElement(vehicleElement) then return end local cameraMatrix = getElementMatrix(cameraElement) local vehicleMatrix = getElementMatrix(vehicleElement) local dotProductX = cameraMatrix[1][1] * vehicleMatrix[1][1] + cameraMatrix[1][2] * vehicleMatrix[1][2] local dotProductY = cameraMatrix[3][1] * vehicleMatrix[1][1] + cameraMatrix[3][2] * vehicleMatrix[1][2] local cursorDeltaX = (cursorRelX - oldCursorRelX) * moveSensitivity local cursorDeltaY = (cursorRelY - oldCursorRelY) * moveSensitivity oldCursorRelX = cursorRelX oldCursorRelY = cursorRelY local dotProductCombined = cursorDeltaX * -dotProductX + cursorDeltaY * dotProductY local openRatio = getVehicleDoorOpenRatio(vehicleElement, 2) + dotProductCombined if openRatio < 0 then openRatio = 0 elseif openRatio > 1 then openRatio = 1 end setVehicleDoorOpenRatio(vehicleElement, 2, openRatio) end bindKey("f1", "down", function () addEventHandler("onClientCursorMove", root, moveDoor) end ) bindKey("f2", "down", function () removeEventHandler("onClientCursorMove", root, moveDoor) end )
  2. You can convert the normal vectors to euler angles with the following function, you can use the phi for the so called Z rotation and the theta for one of the remaining (check it which one is better for you). It's a working function, I had a fun time with it shooting trash cans everywhere function directionToEuler(dirX, dirY, dirZ) local radius = (dirX*dirX + dirY*dirY + dirZ*dirZ) ^ 0.5 local theta = math.deg(math.acos(dirZ / radius)) local phi = math.deg(math.atan2(dirY, dirX)) % 360 return theta, phi end
  3. First, you don't need to convert the normal vectors to euler angles, beacuse the fxAddSparks function needs a direction vector that is exactly what normal vectors is. Second, you need to extend the TargetEndX/Y/Z values a bit because sometimes it's too short and the raycast returns false. For scaling: TargetEndX = TargetX + (TargetEndX - TargetX) * 5 TargetEndY = TargetY + (TargetEndY - TargetY) * 5 TargetEndZ = TargetZ + (TargetEndZ - TargetZ) * 5
  4. The CPU usage was normal (average 0.62% in IPB when flying around the map) on my Intel Celeron E3200 (2.40 GHz) This PC only have a integrated video card with 128 MB dedicated video memory, so the only problem is the lower fps because a lot of objects drawed. (Tested on a green venturas map with the forest generator publiced by Essle ~ Total 2124 tree objects created) But yeah, this is a great work
  5. fileDelete download the file and then delete (and not secure bc the file visible for 3-5 seconds while the server is still downloading), cache false not download the file but load it into the memory.
  6. My res.: https://community.multitheftauto.com/index.php?p=resources&s=details&id=12624 Reuploaded: https://community.multitheftauto.com/?p=resources&s=details&id=15990 DONE
  7. 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; } }
  8. 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
  9. 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
  10. 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 )
  11. Like in Vice City camera/ped rotation? When you move your cursor the ped rotate by the camera.
  12. Real function but only FROM VERSION 1.5.5 r13977 ONWARDS
  13. 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()
  14. Your code in client side?
×
×
  • Create New...