Jump to content

x [ استفسار ] x تحريك ماركر


Recommended Posts

السلام عليكم

اليوم حبيت استفسر عن شي

كيف مثلا اخلي لو اللاعب خش ماركر

اجيب اتجاه اللاعب الي خش فيه الماركر

يعني لو خش الماركر من اليسار الماركر يتحرك قدام اللاعب بالظبط

لو من اليمين نفس القصة

يجيب ال rotation حق اللاعب

ويحركه

يعني اجيب زاوية دخول اللاعب في الماركر
@iMr.WiFi..!
@Master_MTA
@Abdul KariM

Edited by #DesTroeyR
Link to comment
local marker = createMarker(580.57379, -273.58017, 8.78952-1,"cylinder")

function getStatusRot ( rot ) 
local s
if ( rot >= 84 and rot < 175 ) then 
s = "خلف"
elseif ( rot >= 175 and rot <= 255 ) then 
s = "يمين"
elseif ( rot >= 256 and rot <= 279 ) then 
s = "امام"
elseif ( rot >= 280 ) then 
s = "يسار"
end
return s or "nil"
end

addEventHandler("onMarkerHit",root,function(e)
if ( source == marker ) then 
local rot = { getElementRotation(e) }
local state = getStatusRot ( math.floor(rot[3]) )
local pos = { getElementPosition ( source ) } ; 
if ( state == "خلف" ) then 
setElementPosition ( source , pos[1]-2 , pos[2],pos[3])
elseif ( state == "امام" ) then 
setElementPosition ( source , pos[1]+2 , pos[2],pos[3])
elseif ( state == "يمين" ) then 
setElementPosition ( source , pos[1] , pos[2]-2,pos[3])
elseif ( state == "يسار" ) then 
setElementPosition ( source , pos[1] , pos[2]+2,pos[3])
end
end
end)
    

شف ذي انا مسويها كذا

بس ماهي مره دقيقة 

ومادري فيه طريقة ثانية ولا الي اعرف قلت لك :)

Link to comment
2 minutes ago, Trefeor said:

local marker = createMarker(580.57379, -273.58017, 8.78952-1,"cylinder")

function getStatusRot ( rot ) 
local s
if ( rot >= 84 and rot < 175 ) then 
s = "خلف"
elseif ( rot >= 175 and rot <= 255 ) then 
s = "يمين"
elseif ( rot >= 256 and rot <= 279 ) then 
s = "امام"
elseif ( rot >= 280 ) then 
s = "يسار"
end
return s or "nil"
end

addEventHandler("onMarkerHit",root,function(e)
if ( source == marker ) then 
local rot = { getElementRotation(e) }
local state = getStatusRot ( math.floor(rot[3]) )
local pos = { getElementPosition ( source ) } ; 
if ( state == "خلف" ) then 
setElementPosition ( source , pos[1]-2 , pos[2],pos[3])
elseif ( state == "امام" ) then 
setElementPosition ( source , pos[1]+2 , pos[2],pos[3])
elseif ( state == "يمين" ) then 
setElementPosition ( source , pos[1] , pos[2]-2,pos[3])
elseif ( state == "يسار" ) then 
setElementPosition ( source , pos[1] , pos[2]+2,pos[3])
end
end
end)
    

شف ذي انا مسويها كذا

بس ماهي مره دقيقة 

ومادري فيه طريقة ثانية ولا الي اعرف قلت لك :)

طيب مثلا لو جا اللاعب من جهة فوق يمين

او فوق يسار

او ورا يسار

او ورا يمين ؟

Link to comment

local marker = createMarker(0,0,2,"cylinder")

addEventHandler("onClientMarkerHit",marker,
function(p)
    setElementRotation(source,unpack({getElementRotation(p)}))
    local pos = {getElementPosition(source)}
    local matrix = getElementMatrix(p)
    local unit = 1 
    setElementPosition(source,pos[1]+matrix[2][1]*unit,pos[2]+matrix[2][2]*unit,pos[3]+matrix[2][3]*unit)
end
)


ما جربته + ما اعرف كيف احط كود :|

  • Like 1
Link to comment
4 minutes ago, justboy said:

local marker = createMarker(0,0,2,"cylinder")

addEventHandler("onClientMarkerHit",marker,
function(p)
    setElementRotation(source,unpack({getElementRotation(p)}))
    local pos = {getElementPosition(source)}
    local matrix = getElementMatrix(p)
    local unit = 1 
    setElementPosition(source,pos[1]+matrix[2][1]*unit,pos[2]+matrix[2][2]*unit,pos[3]+matrix[2][3]*unit)
end
)


ما جربته + ما اعرف كيف احط كود :|

ما صار يتحرك ابد

Link to comment
local marker = createMarker(0,0,2,"cylinder")
local unit = 3;
addEventHandler("onClientMarkerHit",marker,
  function(p)
		local x, y = getElementPosition ( p ) 
		local z = getElementPosition ( marker )
		local rotZ = getElementRotation ( p ) 
		x = x + ( ( math.cos ( math.rad ( rotZ ) ) ) * unit ) 
		y = y + ( ( math.sin ( math.rad ( rotZ ) ) ) * unit ) 
		setElementPosition( marker, x, y, z )
  end
)

Source: Wikipedia
جزئية انه يحطه قدامه هذي من الويكي بس الباقي سويته لك

Link to comment
6 minutes ago, iMr.WiFi..! said:

local marker = createMarker(0,0,2,"cylinder")
local unit = 3;
addEventHandler("onClientMarkerHit",marker,
  function(p)
		local x, y = getElementPosition ( p ) 
		local z = getElementPosition ( marker )
		local rotZ = getElementRotation ( p ) 
		x = x + ( ( math.cos ( math.rad ( rotZ ) ) ) * unit ) 
		y = y + ( ( math.sin ( math.rad ( rotZ ) ) ) * unit ) 
		setElementPosition( marker, x, y, z )
  end
)

Source: Wikipedia
جزئية انه يحطه قدامه هذي من الويكي بس الباقي سويته لك

ما ظبط

صرت اول ما اخش بالمارك الماركر يختفي

خلاص مشكورين  جميعا كود جست بوي ظبط

تمت الافادة

يرجي اغلاق الموضوع

@!#NssoR_)

Link to comment
local marker = createMarker(0,0,2,"cylinder")
local unit = 1;
addEventHandler("onClientMarkerHit",marker,
  function(p)
		local x, y = getElementPosition ( p ) 
		local rotZ = getElementRotation ( p ) 
		x = x + ( ( math.cos ( math.rad ( rotZ ) ) ) * unit ) 
		y = y + ( ( math.sin ( math.rad ( rotZ ) ) ) * unit ) 
		setElementPosition( marker, x, y, 2 )
  end
)

جرب ذا وتأكد من اعدادات الماركر وغير الاحداثيات حق z 

الموجودة في setElementPosition
 

Link to comment

كود جست بوي شغال 

انا حولته لـ سيرفر سايد واشتغل معاي

local marker = createMarker(0,0,2,"cylinder")
setElementRotation(marker,0,0,2)
addEventHandler("onMarkerHit",marker,
function(p)
    setElementRotation(source,unpack({getElementRotation(p)}))
    local pos = {getElementPosition(source)}
    local matrix = getElementMatrix(p)
    local unit = 2
    setElementPosition(source,pos[1]+matrix[2][1]*unit,pos[2]+matrix[2][2]*unit,pos[3]+matrix[2][3]*unit)
end
)

 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...