-
Posts
378 -
Joined
-
Last visited
Everything posted by BriGhtx3
-
I still need help.. Not even Solidsnake or Kenix?
-
no one?
-
Hey! I can't figure out how to create a sphere between 2 positions (X/Y). Currently I use createColCuboid and calculate the width and depth like this: width = math.abs(x1-x2) depth = math.abs(y1-y2) But when I create a sphere with a command, the sphere sometime gets created to the wrong/opposite side. For example: I create a sphere from the station at SF to the police department, but it gets created from the station to the opposite side. Is there another function to create a sphere with two positions?
-
What the hell? Explain it better.
-
More about setElementData(): Where is saved?
BriGhtx3 replied to Stanley Sathler's topic in Scripting
I think it is stored in MTA itself. Try to download the decompiled MTA version and search after the setElementData function. It looks like a temporarly save of a certain key. -
I think it is just a snippet or he couldn't start the resource or would get errors.
-
Sorry I didn't read your second pm. What is the size of the maps?
-
Just give us the lines of the script where the errors are.
-
Lol! Just ask Zipper! He gives you the support, if you bought it.
-
for k,v in ipairs (getElementsByType("marker")) do end
-
It still overlaps. But thank you for your help
-
I script on a local server If you tell me how to put it online (because of the ports etc.) you can see it.
-
Which script do you mean? oO If you mean this nametag script, of course^^ It is the race nametag-resource which I modified^^
-
Ok, let me explain better ;D I have a player. Over his name should be three things like this: And in my code, this three things overlap. But they should be underneath each others. Thanks
-
Would be nice if somebody could help me
-
g_Root = getRootElement() g_ResRoot = getResourceRootElement(getThisResource()) g_Players = getElementsByType('player') g_Me = getLocalPlayer() nametag = {} local nametags = {} local g_screenX,g_screenY = guiGetScreenSize() local bHideNametags = false local NAMETAG_SCALE = 0.3 --Overall adjustment of the nametag, use this to resize but constrain proportions local NAMETAG_ALPHA_DISTANCE = 25 --Distance to start fading out local NAMETAG_DISTANCE = 25 --Distance until we're gone local NAMETAG_ALPHA = 120 --The overall alpha level of the nametag --The following arent actual pixel measurements, they're just proportional constraints local NAMETAG_TEXT_BAR_SPACE = 2 local NAMETAG_WIDTH = 50 local NAMETAG_HEIGHT = 5 local NAMETAG_TEXTSIZE = 0.9 local NAMETAG_OUTLINE_THICKNESS = 1.3 -- local NAMETAG_ALPHA_DIFF = NAMETAG_DISTANCE - NAMETAG_ALPHA_DISTANCE NAMETAG_SCALE = 1/NAMETAG_SCALE * 800 / g_screenY -- Ensure the name tag doesn't get too big local maxScaleCurve = { {0, 0}, {3, 3}, {13, 5} } -- Ensure the text doesn't get too small/unreadable local textScaleCurve = { {0, 0.8}, {0.8, 1.2}, {99, 99} } -- Make the text a bit brighter and fade more gradually local textAlphaCurve = { {0, 0}, {25, 100}, {120, 190}, {255, 190} } function nametagcreate ( player ) nametags[player] = true end function nametagdestroy ( player ) nametags[player] = nil end addEventHandler ( "onClientRender", g_Root, function() -- Hideous quick fix -- for i,player in ipairs(g_Players) do if isElement(player) then if player ~= g_Me then setPlayerNametagShowing ( player, false ) if not nametags[player] then nametagcreate ( player ) end end end end if bHideNametags then return end local x,y,z = getCameraMatrix() for player in pairs(nametags) do while true do if not isElement(player) then break end if getElementDimension(player) ~= getElementDimension(g_Me) then break end local px,py,pz = getElementPosition ( player ) if processLineOfSight(x, y, z, px, py, pz, true, false, false, true, false, true) then break end local pdistance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz ) if pdistance <= NAMETAG_DISTANCE then --Get screenposition local sx,sy = getScreenFromWorldPosition ( px, py, pz+0.95, 0.06 ) --------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------ POSI OF STATUS ---------------------------------------------- --------------------------------------------------------------------------------------------------------------------- local sxStat,syStat = getScreenFromWorldPosition ( px, py, pz+0.85, 0.06 ) if not sx or not sy then break end if not sxStat or not syStat then break end --Calculate our components local scale = 1/(NAMETAG_SCALE * (pdistance / NAMETAG_DISTANCE)) local alpha = ((pdistance - NAMETAG_ALPHA_DISTANCE) / NAMETAG_ALPHA_DIFF) alpha = (alpha < 0) and NAMETAG_ALPHA or NAMETAG_ALPHA-(alpha*NAMETAG_ALPHA) scale = math.evalCurve(maxScaleCurve,scale) local textscale = math.evalCurve(textScaleCurve,scale) local textalpha = math.evalCurve(textAlphaCurve,alpha) local outlineThickness = NAMETAG_OUTLINE_THICKNESS*(scale) --Draw our text local health local p local r,g health = getElementHealth ( player ) health = math.max(health, 0)/100 p = -510*(health^2) r,g = math.max(math.min(p + 255*health + 255, 255), 0), math.max(math.min(p + 765*health, 255), 0) local offset = (scale) * NAMETAG_TEXT_BAR_SPACE/2 --------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------ STATUS ------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------- dxDrawText ( "DER STATUS", sxStat, syStat - offset, sxStat, syStat - offset, tocolor(10,10,10,255), (textscale*NAMETAG_TEXTSIZE)-0.3, "default", "center", "bottom", false, false, false ) if health <= 0 then --------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------ IMAGE -------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------- dxDrawImage ( sx - offset, sy - offset, 20, 20, 'images/tt.png' ) dxDrawText ( getPlayerName(player), sx, sy - offset, sx, sy - offset, tocolor(0,0,0,textalpha), (textscale*NAMETAG_TEXTSIZE)-0.3, "default", "center", "bottom", false, false, false ) else dxDrawText ( getPlayerName(player), sx, sy - offset, sx, sy - offset, tocolor(r,g,0,textalpha), (textscale*NAMETAG_TEXTSIZE)-0.3, "default", "center", "bottom", false, false, false ) end end break end end end ) ---------------THE FOLLOWING IS THE MANAGEMENT OF NAMETAGS----------------- addEventHandler('onClientResourceStart', g_ResRoot, function() for i,player in ipairs(getElementsByType("player")) do if player ~= g_Me then nametagcreate ( player ) end end end ) addEventHandler ( "onClientPlayerJoin", g_Root, function() if source == g_Me then return end setPlayerNametagShowing ( source, false ) nametagcreate ( source ) end ) addEventHandler ( "onClientPlayerQuit", g_Root, function() nametagdestroy ( source ) end ) -- Math functions function math.lerp(from,to,alpha) return from + (to-from) * alpha end -- curve is { {x1, y1}, {x2, y2}, {x3, y3} ... } function math.evalCurve( curve, input ) -- First value if input[1][1] then return curve[1][2] end -- Interp value for idx=2,#curve do if input[idx][1] then local x1 = curve[idx-1][1] local y1 = curve[idx-1][2] local x2 = curve[idx][1] local y2 = curve[idx][2] -- Find pos between input points local alpha = (input - x1)/(x2 - x1); -- Map to output points return math.lerp(y1,y2,alpha) end end -- Last value return curve[#curve][2] end The name-position is right. The text "Der Status"-position is wrong because it overlaps. And I didn't create the image, because at first I wanted to create the right text above. But when the player dies, an image appears which position is partly wrong.
-
Hey, I still have the same problem as before. I want three "nametags" for one player. The first should contain the name. The second should contain a simple text. And the third an image. I use the standard race nametag resource. I think the problem is the offset. If someone created something like this before, could he just post a snippet how he created it? Or at least explain how I can adjust the offset (they should be underneath each others and not overlap). Thanks
-
function value1(player) val1 = getTickCount() setElementData(player,"value1",tonumber(val1)) end addCommandHandler("val1",value1) function value2(player) val2 = getTickCount() setElementData(player,"value2",tonumber(val2)) end addCommandHandler("val2",value2) function timeVal1val2(player) local valu1 = getElementData(player,"value1") local valu2 = getElementData(player,"value2") local substract = valu1-valu2 outputChatBox(substract.." milliseconds passed") end addCommandHandler("getTimeBetweenVal1andVal2",timeVal1val2) Here is an example anyway ;D I wrote too slow -.-
-
When you add this function to the ResourceStart-event and for example when you type /count you can substract both milliseconds. Then you know how much time passed between the start event and typing the command.
-
Yes and? In this code you use GUI-Functions. In your code before you used dx-Functions which were not built-in!
-
Close the Mtaserver.exe Open mtaserver.conf Add the resources to autostart like this : <resource src="RESOURCENAME" startup="1" protected="0"/> Open acl.xml Add this to groupname admin: <object name="resource.RESOURCENAME"></object>
