Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2019-11-01, 10:52


Kulegg







Wiek: 46
Na forum: 3266 dni
Posty: 283

Piwa: 20

Respekt: 50

Cze??, mam wgrane markery i zrobi?em tak aby marker wy?wietla? obrazek, ?eby troche inaczej wygl?da?y markery ni? na kazdym serwerze i by?y "bardziej przejrzyste", nie mog? sobi? poradzi? z tym ?eby przesun?? marker(obrazek) w lewo, aby nie by? krzywo co to strza?ki, bo jest strasznie krzywo i jest za bardzo w prawo. Chcia?bym aby obrazek(marker "Przecho") znajdowa? si? centralnie na ?rodku strza?ki zamiast bardziej w prawo od niej(czyli w lewo trzeba przesun??), bawie si? tym kodem od godziny (naprawd? od godziny) i nie mog? sobie poradzi?, wi?c prosze o pomoc.


O co mi chodzi? SS:


Kod:

--[[
    @author: TheTroll
    @resource: custom
    @copyright 2017 TheTroll
--]]

local light = dxCreateTexture("files/light.png", "argb")
local arrow = dxCreateTexture("img/arrow.png", "argb")
local anim_type = "foward"
local distance = 50
local animTime = 0

addEventHandler("onClientPreRender", root, 
    function()
        for i, v in ipairs(getElementsByType("marker")) do
            if getElementData(v, "custom1") then
                local x, y, z = getElementPosition(v)
                local x2, y2, z2 = getElementPosition(localPlayer)
                local r, g, b, a = getMarkerColor(v)
                local distanceBetweenPoints = getDistanceBetweenPoints3D(x, y, z, x2, y2, z2)
                if (distanceBetweenPoints < distance) then
                    local size = getMarkerSize(v)
                    if anim_type == "back" then
                        local progress = (getTickCount() - animTime) / 1500
                        position = math.floor(interpolateBetween(-600, 0, 0, 200, 0, 0, progress, "InQuad"))
                        if(progress > 1) then
                            anim_type = "foward"
                            animTime = getTickCount()
                        end
                    else
                        local progress = (getTickCount() - animTime) / 1500
                        position = math.floor(interpolateBetween(200, 0, 0, -600, 0, 0, progress, "OutQuad"))
                        if(progress > 1) then
                            anim_type = "back"
                            animTime = getTickCount()
                        end
                    end
                    
                    dxDrawMaterialLine3D(x, y, z+2+2+(-1000/700), x, y, z+2+(-1000/700), arrow, 2, tocolor(r, g, b, 200))
                
                end
            end
        end
    end
)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2019-11-01, 13:58


Wilq







Wiek: 24
Na forum: 4570 dni
Posty: 3409

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Obstawiam, ?e pozycja markera zaczyna si??jako? w rogu i w tym samym miejscu zaczynasz rysowa? obraz.

Masz dwa wyj?cia:
dodajesz jak?? ma?? odleg?o?? do argument 1 i 4 odpowiadaj?cych za pozycj? X, tak samo dla Y (2, 5) je?li b?dzie trzeba,
LUB
poszerzasz obraz (kt?ry? tam argument w tej funkcji od rysowania, nie pami?tam kt?ry) przez co ca?o?? si??rozszerzy i wy?rodkuje nad markerem.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2019-11-01, 16:57


Kulegg







Wiek: 46
Na forum: 3266 dni
Posty: 283

Piwa: 20

Respekt: 50

Wola?bym t? pierwsz? opcj? bo teraz si? bawie w wielko?ci ale nie zabardzo mi to wychodzi, wszystko mog? z tym zrobi?, zwi?kszy?, zmniejszy? itp, tylko nie przesuwa?.. ani w prawo, ani w lewo.. Wyt?umaczy?by? co musze zrobi? je?li wol? opcje 1?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2019-11-01, 20:28


Wilq







Wiek: 24
Na forum: 4570 dni
Posty: 3409

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Funkcja wygl?da tak:
dxDrawMaterialLine3D ( startX, startY, startZ, endX, endY, endZ, material, width, color = white, postGUI = false, faceTowardX, faceTowardY, faceTowardZ )


Czyli do warto?ci startX musisz doda? kilka jednostek (nie wiem jak to nazwa?, pikseli/metr?w?) i sprawdza? czy to si? w og?le przemieszcza. Musisz tak? sam? warto?? doda? do warto?ci endX.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Kulegg
Wysłany: 2019-11-02, 18:27


Kulegg







Wiek: 46
Na forum: 3266 dni
Posty: 283

Piwa: 20

Respekt: 50

Doda?em w taki spos?b ustawi?em t? linijke, jednak po wpisaniu czegokolwiek(liczby np 1 jak teraz) to obrazek (marker) znika jakby go wog?le nie by?o.

--[[
    @author: TheTroll
    @resource: custom
    @copyright 2017 TheTroll
--]]

local light = dxCreateTexture("files/light.png", "argb")
local arrow = dxCreateTexture("img/arrow.png", "argb")
local anim_type = "foward"
local distance = 50
local animTime = 0

addEventHandler("onClientPreRender", root, 
    function()
        for i, v in ipairs(getElementsByType("marker")) do
            if getElementData(v, "custom1") then
                local x, y, z = getElementPosition(v)
                local x2, y2, z2 = getElementPosition(localPlayer)
                local r, g, b, a = getMarkerColor(v)
                local distanceBetweenPoints = getDistanceBetweenPoints3D(x, y, z, x2, y2, z2)
                if (distanceBetweenPoints < distance) then
                    local size = getMarkerSize(v)
                    if anim_type == "back" then
                        local progress = (getTickCount() - animTime) / 1500
                        position = math.floor(interpolateBetween(-600, 0, 0, 200, 0, 0, progress, "InQuad"))
                        if(progress > 1) then
                            anim_type = "foward"
                            animTime = getTickCount()
                        end
                    else
                        local progress = (getTickCount() - animTime) / 1500
                        position = math.floor(interpolateBetween(200, 150, 0, -600, 0, 0, progress, "OutQuad"))
                        if(progress > 1) then
                            anim_type = "back"
                            animTime = getTickCount()
                        end
                    end
                    
                    dxDrawMaterialLine3D(x, y, z+2+2+(-1000/1700), x, y, z+2+(-1000/700), arrow, 4, tocolor(r, g, b, 200))
                       dxDrawMaterialLine3D (1, startY, startZ, 1, endY, endZ, material, width, color = white, postGUI = false, faceTowardX, faceTowardY, faceTowardZ )
                end
            end
        end
    end
)


[ Dodano: 2019-11-02, 18:51 ]
Dobra poprawi?em miejsce linijki i dzia?a, dzi?kuje, :piwo: dla ciebie za pomoc i zrozumienie mnie xd

Postaw piwo autorowi tego posta
 

 
Tagi: pozycja :: markera
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Pozycja markera Odpowiedz do tematu

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku