Jump to content

إستفسار سريع


Recommended Posts

السلام عليكم كيفكم رمضان كريم عالجميع

عندي سؤال وان شاء الله بتفهموني وبلاقي جواب ض 

انا مسوي لوحة دي اكس تمام ؟ ومسوي بوتون عادي فيها الدي اكس بشغلها عن طريق الإيفنت والبوتون لحال من غير ويندو بشغله بالجوي سيت فيزبل يعني هيك 

مثلاً هي لوحة الدي اكس فنكشن

function Weapons_Panel ()
        showChat(false)
        dxDrawLine(95 - 1, 722, 1268, 722, tocolor(0, 0, 0, 255), 1, false)
        dxDrawLine(1268, 722, 1268, 70 - 1, tocolor(0, 0, 0, 255), 1, false)
        dxDrawRectangle(95, 70, 1173, 652, tocolor(0, 0, 0, 120), false)
        dxDrawRectangle(105, 89, 143, 46, tocolor(126, 126, 126, 255), false)
        dxDrawRectangle(95, 40, 1171, 30, tocolor(126, 126, 126, 255), false)
        dxDrawText(".:GTA-WD|WEAPONS MARKET:.", 440, 40, 1117, 89, tocolor(0, 0, 0, 255), 1.00, "bankgothic", "left", "top", false, false, false, false, false)
        dxDrawRectangle(95, 722, 1171, 30, tocolor(126, 126, 126, 255), false)
        dxDrawText("Gta-Wd Server Abo-Al3ZaB | Copyright© 2020", 551, 729, 809, 762, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, false, false)
        dxDrawRectangle(258, 89, 143, 46, tocolor(126, 126, 126, 255), false)
        dxDrawRectangle(411, 89, 143, 46, tocolor(126, 126, 126, 255), false)
        dxDrawRectangle(564, 89, 143, 46, tocolor(126, 126, 126, 255), false)
        dxDrawRectangle(717, 89, 143, 46, tocolor(126, 126, 126, 255), false)
        dxDrawRectangle(870, 89, 143, 46, tocolor(126, 126, 126, 255), false)
        dxDrawRectangle(1023, 89, 233, 46, tocolor(126, 126, 126, 255), false)
        dxDrawText("Handguns", 125, 96, 315, 154, tocolor(255, 255, 255, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false)
        dxDrawText("Shotguns", 275, 96, 465, 154, tocolor(255, 255, 255, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false)
        dxDrawImage(121, 153, 105, 85, "images/DEAGLE.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(121, 291, 105, 85, "images/COLT45.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(121, 431, 105, 85, "images/SILENCED.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(272, 154, 105, 84, "images/SAWNOFF.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(272, 291, 105, 85, "images/COMBAT.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(735, 291, 105, 85, "images/RIFLE.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(430, 153, 104, 85, "images/MP5.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(430, 291, 105, 85, "images/MICROUZI.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(430, 431, 105, 85, "images/TEC9.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(582, 153, 105, 85, "images/M4.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(582, 291, 105, 85, "images/AK47.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(735, 153, 105, 85, "images/SNIPER.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(272, 431, 105, 85, "images/SHOTGUN.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(890, 153, 105, 85, "images/Satchel.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(890, 290, 105, 86, "images/Molotov.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) 
        dxDrawText("Sub-Machine Guns	", 415, 102, 605, 160, tocolor(255, 255, 255, 255), 0.70, "pricedown", "left", "top", false, false, false, false, false)
        dxDrawText("Assault Rifles	", 570, 99, 760, 157, tocolor(255, 255, 255, 255), 0.80, "pricedown", "left", "top", false, false, false, false, false)
        dxDrawText("Rifles", 754, 95, 944, 153, tocolor(255, 255, 255, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false)
        dxDrawText("Projectiles", 875, 95, 1065, 153, tocolor(255, 255, 255, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false)
        dxDrawText("Heavy Weapons	", 1055, 95, 1245, 153, tocolor(255, 255, 255, 255), 1.00, "pricedown", "left", "top", false, false, false, false, false)
        dxDrawImage(1090, 153, 105, 85, "images/Rocket_HS.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(1090, 290, 105, 85, "images/Rocket.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(1090, 431, 105, 85, "images/Mini.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(1090, 573, 105, 85, "images/AK-47_GL.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(890, 430, 105, 86, "images/GRENADE.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawRectangle(607, 663, 143, 46, tocolor(126, 126, 126, 255), false)
        dxDrawImage(890, 572, 105, 86, "images/TEARGAS.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawText("Close", 651, 669, 901, 717, tocolor(0, 0, 0, 255), 1.00, "diploma", "left", "top", false, false, false, false, false)
        dxDrawRectangle(607, 587, 143, 46, tocolor(126, 126, 126, 255), false)
        dxDrawText("Buy", 656, 595, 846, 653, tocolor(0, 0, 0, 255), 1.00, "beckett", "left", "top", false, false, false, false, false)
        dxDrawImage(582, 431, 105, 85, "images/PARACHUTE.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
        dxDrawImage(735, 431, 105, 85, "images/Armour.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
end

وهي الزر طبعاُ في ازرار كثيرة بس لاوصللكم الفكرة

Rocket_L_Ammo_E = guiCreateEdit(1090, 395, 105, 26, "0", false)

الدي اكس اللوحة بشغلها بايفنت هيك

addEventHandler("onClientRender",root,Weapons_Panel) 

والأزرار بسويلهم كلهم ترو مشان تشتغل 

guiSetVisible(Rocket_L_Ammo_E,true)

اللي بدي اعرفه هل بقدر اربط الازرار ولوحة الدي اكس مع بعض بإسم واحد اعرفهم ؟ 

يعني بدون ما اسوي  guiSetVisible ترو للزر مشان يظهر

يعني كأني مسوي ويندو عادي ومعه الأزرار ومعرفين ع اسم اللوحة هيك مثلاً

FWIND[v] = guiCreateWindow(369,256,255,148,"Name Window",false)

rpeng = guiCreateButton(32,33,188,32,"Name Button",false,FWIND[v])
fullf = guiCreateButton(32,74,188,32,"Name Button",false,FWIND[v])
cmech = guiCreateButton(111,116,23,18,"Name Button",false,FWIND[v])

هنا مثلاً اللوحة اسمها FWIND[v]

تمام ؟ والأزرار مربوطين فيها تمام ؟

انا لوحة الدي أكس والأزرار اللي مسويهم من غير ويندو عادي بدي اربطهم بهالإسم FWIND[v]

كيف ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

بتمنى الاقي حد فهمني ض

Link to comment
43 minutes ago, -Ilker. said:

والله مافهمت شيء عيد صياغة الموضوع لكي افهمك

اتوقع يقصد يبي لوحة الدي اكس زي نظام اللوحة العادية

الازرار تكون مرتبطه مع اللوحة

 

Link to comment
33 minutes ago, #Khaled said:

اتوقع يقصد يبي لوحة الدي اكس زي نظام اللوحة العادية

الازرار تكون مرتبطه مع اللوحة

 

يب يب بالزبط كذا بدي تكون لوحة الدي اكس زي نظام اللوحة العادية يكون الها اسم والازرار البوتون العادي مرتبطة فيها 

 

1 hour ago, -Ilker. said:

والله مافهمت شيء عيد صياغة الموضوع لكي افهمك

مثل ما قال خالد اخي

Edited by Abo-Al3ZaB
Link to comment

نظامك دا ماينفع لانك بتخلي كودك طويل وزحمه

الافضل انك تحمل اي مكتبه دي اكس من المنشورين وتصمم لوحات منها حتي لو تبي تسوي جريد ليست او اي شئ بشكل افضل ومرتب 

اذا كنت تبي تسويها جيو تقدر تبدل الدي اكس بصوره افضل واسهل لك 

 

Link to comment
1 hour ago, Ahmed Ly said:

سهله جدا سوي زر مخفي و تمت 

وحط فوق زر دي اكس وتمت قصه 

اخي انا مسوي هالشي بعرفه ... ما فهمت كلامي يمكن

انا بدي اربط الازرار والليبل والاديت كلهم بلوحة الدي اكس يكونو معرفين باسم اللوحة مثل الويندو العادي

يعني هي بوتون مثلاً

guiCreatButtoun (38,76,..,.. false, هنا مثلاً احط اسم لوحة الدي اكس) 

يكون مربوط فيها كاني مسوي ويندو عادي مع ازرار ... ما في شي زي هيك  من غير ما اسوي لوجة جديدة بل dgs مثل ما قال اوسكار 

Link to comment
5 minutes ago, Abo-Al3ZaB said:

اخي انا مسوي هالشي بعرفه ... ما فهمت كلامي يمكن

انا بدي اربط الازرار والليبل والاديت كلهم بلوحة الدي اكس يكونو معرفين باسم اللوحة مثل الويندو العادي

يعني هي بوتون مثلاً

guiCreatButtoun (38,76,..,.. false, هنا مثلاً احط اسم لوحة الدي اكس) 

يكون مربوط فيها كاني مسوي ويندو عادي مع ازرار ... ما في شي زي هيك  من غير ما اسوي لوجة جديدة بل dgs مثل ما قال اوسكار 

انت تبي تسوي زر داخل دي اكس؟

Link to comment
18 minutes ago, Ahmed Ly said:

انت تبي تسوي زر داخل دي اكس؟

اخوي انا مسوي اللوحة كلها وجاهزة 

بس بدي اربط الازرار والاديت باسم لوحة الدي اكس واضح كلامي مممم

اعطيتك مثال فوق وقلتلك 

يا اخي هي ويندو عادي وزر مثلاً

NameWindow = guiCreatWindow (......, false)

NameButtoun = guiCreatButtoun (....., false, NameWindow)

كيف هنا اللوحة الها اسم والزر مربوط باسم اللوحة بدي بالدي اكس نفس الشيييي تماماً وصلت ؟!!!!! 

Edited by Abo-Al3ZaB
Link to comment
28 minutes ago, Abo-Al3ZaB said:

اخوي انا مسوي اللوحة كلها وجاهزة 

بس بدي اربط الازرار والاديت باسم لوحة الدي اكس واضح كلامي مممم

اعطيتك مثال فوق وقلتلك 

يا اخي هي ويندو عادي وزر مثلاً

NameWindow = guiCreatWindow (......, false)

NameButtoun = guiCreatButtoun (....., false, NameWindow)

كيف هنا اللوحة الها اسم والزر مربوط باسم اللوحة بدي بالدي اكس نفس الشيييي تماماً وصلت ؟!!!!! 

سوي لك مكتبة او استخدم dgs اذا تبيها كذا

Link to comment
 function isMouseInPosition ( x, y, width, height )
    if ( not isCursorShowing ( ) ) then
        return false
    end
 
	local sx,sy  = guiGetScreenSize()
    local cx, cy = getCursorPosition ( )
    local cx, cy = ( cx * sx ), ( cy * sy )
    if ( cx >= x and cx <= x + width ) and ( cy >= y and cy <= y + height ) then
        return true
    else
        return false
    end
end

local statButton = { } 
addEvent ( "onButtonDxClick" , true ) 
function dxCreateButton ( element,x,y,w,h,text )
if ( not element or type ( element ) ~= "string" ) then return end 
if ( not statButton[element] ) then statButton[element] = "up" end 
if ( isMouseInPosition(x,y,w,h) ) then
if ( getKeyState ( "mouse1" ) ) then 
if ( statButton[element] ~= "down" ) then 
statButton[element] = "down"
triggerEvent ( "onButtonDxClick" , localPlayer , element , text )
end 
else 
if ( statButton[element] == "down" ) then 
statButton[element] = "up"
end
end
end
dxDrawRectangle ( x , y , w , h , tocolor(0,0,0,200) , false ) 
dxDrawText ( text or "" , x,y,x+w,y+h,tocolor(255,255,255,255),1,"default-bold","center","center",false,false,false,true)
end 

--- # Example 

addEventHandler ( "onClientRender" , root , function ( ) 
dxCreateButton ( "kill" , 300,300,120,30,"Kill Player" )
dxCreateButton ( "warp" , 300,350,120,30,"Teleport Player" )
end ) 

addEventHandler ( "onButtonDxClick" , localPlayer , function ( Button , Text ) 
if ( Button == "kill" ) then 
outputChatBox(Text)
elseif ( Button == "warp" ) then 
setElementPosition ( localPlayer ,0,0,3)
end
end )

سويت لك button dx مع حدث خاص فيه onButtonDxClick 

وسويت لك أمثلة وراح تفهمها ان شاء الله

Link to comment

تقدر تسويها بالجداول زي كذا

local dxComponents = {}

function CreateWindow(id,x,y,w,h,r,g,b,alpha,postUI,visible)
	if id and type(id)=="string" then
		if not dxComponents[id] then
			if x and type(x)=="number" and y and type(y)=="number" and w and type(w)=="number" and h and type(h)=="number" then
				local r = r and type(r)=="number" and r or 255
				local g = g and type(g)=="number" and g or 255
				local b = b and type(b)=="number" and b or 255
				local alpha = alpha and type(alpha)=="number" and alpha or 255
				dxComponents[id] = {};
				dxComponents[id]['window'] = {};
				dxComponents[id]['window']['components'] = {};
				dxComponents[id]['window']['components']['button']={}
				dxComponents[id]['window']['components']['text']={}
				dxComponents[id]['window']['components']['image']={}
				dxComponents[id]['window']['components']['line']={}
				dxComponents[id]['window']['r'] = r
				dxComponents[id]['window']['g'] = g
				dxComponents[id]['window']['b'] = b
				dxComponents[id]['window']['alpha'] = alpha
				dxComponents[id]['window']['x'] = x
				dxComponents[id]['window']['y'] = y
				dxComponents[id]['window']['w'] = w
				dxComponents[id]['window']['h'] = h
				dxComponents[id]['window']['visible'] = visible
				dxComponents[id]['window']['postUI'] = postUI
				return id,true
			else
				print("Bad Arguements");
				return false
			end
		else
			print("this id is already exist");
			return false
		end
	else
		print("id isn't string");
		return false
	end
end


function CreateButton(id,x,y,w,h,r,g,b,alpha,postUI,visible,parent)
	if id and type(id)=="string" then
		if parent and type(parent)=="string" and dxComponents[parent] then
			if not dxComponents[parent]['window']['components'][id] then
				if x and type(x)=="number" and y and type(y)=="number" and w and type(w)=="number" and h and type(h)=="number" then
					local r = r and type(r)=="number" and r or 255
					local g = g and type(g)=="number" and g or 255
					local b = b and type(b)=="number" and b or 255
					local alpha = alpha and type(alpha)=="number" and alpha or 255
					dxComponents[parent]['window']['components']['button'][id] = {};
					dxComponents[parent]['window']['components']['button'][id]['x'] = x
					dxComponents[parent]['window']['components']['button'][id]['y'] = y
					dxComponents[parent]['window']['components']['button'][id]['w'] = w
					dxComponents[parent]['window']['components']['button'][id]['h'] = h
					dxComponents[parent]['window']['components']['button'][id]['r'] = r
					dxComponents[parent]['window']['components']['button'][id]['g'] = g
					dxComponents[parent]['window']['components']['button'][id]['b'] = b
					dxComponents[parent]['window']['components']['button'][id]['alpha'] = alpha
					dxComponents[parent]['window']['components']['button'][id]['postUI'] = postUI
					dxComponents[parent]['window']['components']['button'][id]['visible'] = visible
					dxComponents[parent]['window']['components']['button'][id]['parent'] = parent
					return id,true
				else
					print("Bad Arguments");
					return false
				end
			else
				print("This button is already exist");
				return false
			end
		else
			print("Window isn't exist");
			return false
		end
	else
		print("id isn't string");
		return false
	end
end

function SetWindowPosition(id,x,y)
	if id and type(id)=="string" then
		if dxComponents[id] then
			if dxComponents[id]['window']['visible'] then
				dxComponents[id]['window']['x']=x
				dxComponents[id]['window']['y']=y
				return true
			end
			return false
		end
		return false
	end
	return false
end

function GetWindowPosition(id)
	if id and type(id)=="string" then
		if dxComponents[id] then
			return dxComponents[id]['window']['x'],dxComponents[id]['window']['y']
		end
		return false
	end
	return false
end

function SetWindowVisible(id,vis)
	if id and type(id)=="string" then
		if dxComponents[id] then
			dxComponents[id]['window']['visible'] = vis
			return true
		end
		return false
	end
	return false
end

function GetWindowVisible(id)
	if id and type(id)=="string" then
		if dxComponents[id] then
			return dxComponents[id]['window']['visible']
		end
		return false
	end
	return false
end

function SetBackgroundColor(id,r,g,b,a)
	if id and type(id)=="string" then
		if dxComponents[id] then
			if r and type(r)=="number" and g and type(g)=="number" and b and type(b)=="number" then
				dxComponents[id]['window']['r'] = r
				dxComponents[id]['window']['g'] = g
				dxComponents[id]['window']['b'] = b
				if a then
					dxComponents[id]['window']['alpha'] = a
				end
				return true
			else
				print('Wrong arguments')
				return false
			end
		end
		return false
	end
	return false
end

function GetBackgroundColor(id)
	if id and type(id)=="string" then
		if dxComponents[id] then
			return dxComponents[id]['window']['r'],dxComponents[id]['window']['g'],dxComponents[id]['window']['b'],dxComponents[id]['window']['alpha']
		end
		return false
	end
	return false
end

function MyRender()
	if dxComponents then
		local windX
		local windY
		local windW
		local windH
		for windName , values in pairs (dxComponents) do
			windX = dxComponents[windName]['window']['x']
			windY = dxComponents[windName]['window']['y']
			windW = dxComponents[windName]['window']['w']
			windH = dxComponents[windName]['window']['h']
			local windVisible = dxComponents[windName]['window']['visible']
			local windPostUI = dxComponents[windName]['window']['postUI']
			local windR = dxComponents[windName]['window']['r']
			local windG = dxComponents[windName]['window']['g']
			local windB = dxComponents[windName]['window']['b']
			local windAlpha = dxComponents[windName]['window']['alpha']
			
			if windVisible then
				dxDrawRectangle(windX,windY,windW,windH,tocolor(windR,windG,windB,windAlpha),windPostUI);
			end
			
			-- هنا الازرار كمثال, تقدر تحط نصوص بس لازم تضيف دالة للنصوص
			for btnName,v in pairs ( dxComponents[windName]['window']['components']['button'] ) do
				local btnX = dxComponents[windName]['window']['components']['button'][btnName]['x']
				local btnY = dxComponents[windName]['window']['components']['button'][btnName]['y']
				local btnW = dxComponents[windName]['window']['components']['button'][btnName]['w']
				local btnH = dxComponents[windName]['window']['components']['button'][btnName]['h']
				local btnVisible = dxComponents[windName]['window']['components']['button'][btnName]['visible']
				local btnPostUI = dxComponents[windName]['window']['components']['button'][btnName]['postUI']
				-- local btnParent = dxComponents[windName]['window']['components']['button'][btnName]['parent']
				local btnR = dxComponents[windName]['window']['components']['button'][btnName]['r']
				local btnG = dxComponents[windName]['window']['components']['button'][btnName]['g']
				local btnB = dxComponents[windName]['window']['components']['button'][btnName]['b']
				local btnAlpha = dxComponents[windName]['window']['components']['button'][btnName]['alpha']
				
				if btnVisible then
					dxDrawRectangle(windX+btnX,windY+btnY,btnW,btnH,tocolor(btnR,btnG,btnB,btnAlpha),btnPostUI)
				end
			end
		end
	end
end
addEventHandler("onClientRender",root,MyRender)

CreateWindow('window1',200,200,100,100,111,111,111,111,true,true) -- window1 نسوي لوحة باسم 
CreateButton('button1',10,10,20,20,88,33,11,255,true,true,'window1') -- Button1 نسوي زر داخلها بإسم 

-- نجرب الالوان تتغير او لا :)

function aFunc()
	local pr,pg,pb,pa = GetBackgroundColor("window1");
	outputChatBox("R : "..tostring(pr).." G : "..tostring(pg).." B : "..tostring(pb).." ALPHA : "..tostring(pa));
	SetBackgroundColor("window1",0,0,0,255) -- نغير لونها للأسود
end
setTimer(aFunc,4000,1) -- بعد 4 ثواني من بداية السكربت يتغير لون اللوحة

CreateWindow('window2',400,200,100,100,111,111,111,111,true,true) -- نسوي وحده ثانيه عشان نتأكد
CreateButton('button1',10,10,20,20,88,33,11,255,true,true,'window2') -- اسم الزر تقدر تكرره اذا مو في نفس اللوحه

 

Link to comment

الكود يبغاله تحققات واضافات، لكن عموماً هذا توضيح للفكرة لا اكثر ولا اقل

metatables والـ OOP او اذا عندك الخبرة الكافية استخدم الـ

local dxlib = {}

function dxCreateWindow()
    local window = createElement("dxWindow")

    dxlib[window] = {
        x = 0,
        y = 0,
        sx = 0,
        sy = 0
    }

    return window
end

function dxCreateButton(parent)
    local button = createElement("dxButton")

    dxlib[button] = {
        x = 0,
        y = 0,
        sx = 0,
        sy = 0
    }

    setElementParent(button, parent)
end

function toggleWindow(window)
    dxlib[window].show = false
    
    for _, children in ipairs(getElementChildren(window)) do
        if isElement(children) and dxlib[children] then
            dxlib[children].show = false
        end
    end
end

 

Edited by N3xT
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...