Abo-Al3ZaB Posted May 11, 2020 Share Posted May 11, 2020 السلام عليكم كيفكم رمضان كريم عالجميع عندي سؤال وان شاء الله بتفهموني وبلاقي جواب ض انا مسوي لوحة دي اكس تمام ؟ ومسوي بوتون عادي فيها الدي اكس بشغلها عن طريق الإيفنت والبوتون لحال من غير ويندو بشغله بالجوي سيت فيزبل يعني هيك مثلاً هي لوحة الدي اكس فنكشن 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
-Ilker. Posted May 11, 2020 Share Posted May 11, 2020 والله مافهمت شيء عيد صياغة الموضوع لكي افهمك Link to comment
#Khaled Posted May 11, 2020 Share Posted May 11, 2020 43 minutes ago, -Ilker. said: والله مافهمت شيء عيد صياغة الموضوع لكي افهمك اتوقع يقصد يبي لوحة الدي اكس زي نظام اللوحة العادية الازرار تكون مرتبطه مع اللوحة Link to comment
Abo-Al3ZaB Posted May 11, 2020 Author Share Posted May 11, 2020 (edited) 33 minutes ago, #Khaled said: اتوقع يقصد يبي لوحة الدي اكس زي نظام اللوحة العادية الازرار تكون مرتبطه مع اللوحة يب يب بالزبط كذا بدي تكون لوحة الدي اكس زي نظام اللوحة العادية يكون الها اسم والازرار البوتون العادي مرتبطة فيها 1 hour ago, -Ilker. said: والله مافهمت شيء عيد صياغة الموضوع لكي افهمك مثل ما قال خالد اخي Edited May 11, 2020 by Abo-Al3ZaB Link to comment
#\_oskar_/# Posted May 11, 2020 Share Posted May 11, 2020 نظامك دا ماينفع لانك بتخلي كودك طويل وزحمه الافضل انك تحمل اي مكتبه دي اكس من المنشورين وتصمم لوحات منها حتي لو تبي تسوي جريد ليست او اي شئ بشكل افضل ومرتب اذا كنت تبي تسويها جيو تقدر تبدل الدي اكس بصوره افضل واسهل لك Link to comment
Ahmed Ly Posted May 11, 2020 Share Posted May 11, 2020 سهله جدا سوي زر مخفي و تمت وحط فوق زر دي اكس وتمت قصه Link to comment
Abo-Al3ZaB Posted May 12, 2020 Author Share Posted May 12, 2020 1 hour ago, Ahmed Ly said: سهله جدا سوي زر مخفي و تمت وحط فوق زر دي اكس وتمت قصه اخي انا مسوي هالشي بعرفه ... ما فهمت كلامي يمكن انا بدي اربط الازرار والليبل والاديت كلهم بلوحة الدي اكس يكونو معرفين باسم اللوحة مثل الويندو العادي يعني هي بوتون مثلاً guiCreatButtoun (38,76,..,.. false, هنا مثلاً احط اسم لوحة الدي اكس) يكون مربوط فيها كاني مسوي ويندو عادي مع ازرار ... ما في شي زي هيك من غير ما اسوي لوجة جديدة بل dgs مثل ما قال اوسكار Link to comment
Ahmed Ly Posted May 12, 2020 Share Posted May 12, 2020 5 minutes ago, Abo-Al3ZaB said: اخي انا مسوي هالشي بعرفه ... ما فهمت كلامي يمكن انا بدي اربط الازرار والليبل والاديت كلهم بلوحة الدي اكس يكونو معرفين باسم اللوحة مثل الويندو العادي يعني هي بوتون مثلاً guiCreatButtoun (38,76,..,.. false, هنا مثلاً احط اسم لوحة الدي اكس) يكون مربوط فيها كاني مسوي ويندو عادي مع ازرار ... ما في شي زي هيك من غير ما اسوي لوجة جديدة بل dgs مثل ما قال اوسكار انت تبي تسوي زر داخل دي اكس؟ Link to comment
Abo-Al3ZaB Posted May 12, 2020 Author Share Posted May 12, 2020 (edited) 18 minutes ago, Ahmed Ly said: انت تبي تسوي زر داخل دي اكس؟ اخوي انا مسوي اللوحة كلها وجاهزة بس بدي اربط الازرار والاديت باسم لوحة الدي اكس واضح كلامي مممم اعطيتك مثال فوق وقلتلك يا اخي هي ويندو عادي وزر مثلاً NameWindow = guiCreatWindow (......, false) NameButtoun = guiCreatButtoun (....., false, NameWindow) كيف هنا اللوحة الها اسم والزر مربوط باسم اللوحة بدي بالدي اكس نفس الشيييي تماماً وصلت ؟!!!!! Edited May 12, 2020 by Abo-Al3ZaB Link to comment
-Ilker. Posted May 12, 2020 Share Posted May 12, 2020 28 minutes ago, Abo-Al3ZaB said: اخوي انا مسوي اللوحة كلها وجاهزة بس بدي اربط الازرار والاديت باسم لوحة الدي اكس واضح كلامي مممم اعطيتك مثال فوق وقلتلك يا اخي هي ويندو عادي وزر مثلاً NameWindow = guiCreatWindow (......, false) NameButtoun = guiCreatButtoun (....., false, NameWindow) كيف هنا اللوحة الها اسم والزر مربوط باسم اللوحة بدي بالدي اكس نفس الشيييي تماماً وصلت ؟!!!!! سوي لك مكتبة او استخدم dgs اذا تبيها كذا Link to comment
-Ilker. Posted May 12, 2020 Share Posted May 12, 2020 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
nxFairlywell Posted May 12, 2020 Share Posted May 12, 2020 تقدر تسويها بالجداول زي كذا 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
N3xT Posted May 12, 2020 Share Posted May 12, 2020 (edited) الكود يبغاله تحققات واضافات، لكن عموماً هذا توضيح للفكرة لا اكثر ولا اقل 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 May 12, 2020 by N3xT Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now