Jump to content

تحت التطوير :كود - Useful Arab functions


Booo

Recommended Posts

فنكشنات بسيطه ( لا لحظة مو بسيطه ;-; ) ألمهم :)

dxFrame, dxButton

الفنكشنات واضحه من عنوانها

:D

Frame function

  
--[[ 
    createFrame( 
        x - أحداثي x للأطار 
        y - أحداثي y للأطار 
        w - عرض الأطار 
        h - أرتفاع الأطار 
        Title - عنوان الأطار 
        Color - لون الأطار 
        TitleBarColor - لون شريط العنوان 
    ) 
]] 
function createFrame( x, y, w, h, Title, Color, TitleBarColor ) 
    MFrame = { 
        x = 0, y = 0, 
        w = 400, h = 250, 
        Title = "Frame", 
        Color = tocolor( 120, 120, 120, 150 ), 
        Color = tocolor( 120, 120, 120, 255 ), 
  
        components = { 
  
        }, 
  
        render = function () 
            dxDrawRectangle( x, y, w, h, Color, false) 
            dxDrawRectangle( x, y, w, 15, TitleBarColor, false) 
            dxDrawText( Title, x + 5, y )  
            for k,v in pairs(MFrame.components) do 
                v.render(); 
            end 
        end, 
  
        add = function ( comp ) 
            comp.setOfset(x, y) 
            table.insert(MFrame.components, comp); 
        end 
  
    } 
  
    function create() 
        MFrame.x = x; MFrame.y = y; 
        MFrame.w = w; MFrame.h = h; 
        MFrame.Title = Title;  
        MFrame.Color = Color; MFrame.TitleBarColor = TitleBarColor; 
        return MFrame; 
    end 
  
    return create(); 
end 
  

Button function

  
--[[ 
    createButton( 
        x - أحداثي x للزر 
        y - أحداثي y للزر 
        w - عرض الزر 
        h - أرتفاع الزر 
        text - النص اللي يضهر داخله  
        Color - لون مربع الزر 
        textColor - لون النص 
    ) 
]] 
function createButton( x, y, w, h, text, Color, textColor ) 
    xOfset = 0; 
    yOfset = 0; 
    isVisableX = true; 
    local MButton = { 
        x = 0, y = 0, 
        w = 80, h = 20,  
        text = "Button",  
        isVisable = isVisableX, 
        textColor = tocolor( 236, 240, 241, 255 ), 
        Color = tocolor( 231, 76, 60, 150 ), 
  
  
        render = function () 
            if ( isVisableX == true ) then 
                dxDrawRectangle( x + xOfset, y + yOfset, w, h, Color ) 
                dxDrawText( text, ( (x + xOfset) + (w/2) ) - (string.len(text)*3), ((y + yOfset) - 7) + (h/2)  )  
            end 
        end, 
  
        setVisable = function ( visable ) 
            isVisableX = visable; 
        end, 
  
        setTextColor = function ( color ) 
            textColor = color; 
        end, 
  
        setTextColorRGBA = function ( r, g, b, a ) 
            textColor = tocolor( r, g, b, a ) 
        end, 
  
        getText = function ( ) 
            return text; 
        end, 
  
        setText = function ( text2 ) 
            text = text2; 
        end, 
  
        setColor = function ( Color2 ) 
            Color = Color2; 
        end, 
  
        setColorRGBA = function ( r, g, b, a ) 
            Color = tocolor( r, g, b, a ) 
        end, 
  
        setOfset = function ( ofx, ofy ) 
            xOfset = ofx; 
            yOfset = ofy; 
        end, 
  
        setX = function (x2) x = x2 end, 
        getX = function () return x; end, 
  
        setY = function (y2) y = y2 end, 
        getY = function () return y; end, 
  
        setW = function (w2) w = w2 end, 
        getW = function () return w; end, 
  
        setH = function (h2) h = h2 end, 
        getH = function () return h; end 
    } 
    local create = function () 
        MButton.x = x; MButton.y = y; 
        MButton.w = w; MButton.h = h; 
        MButton.text = text; MButton.Color = Color; 
        MButton.textColor = textColor; 
        return MButton; 
    end 
  
    return create() 
end 
  

من تسوي زر راح تتوفر عندك الفنكشنات التاليه

render() -- ما راح تحتاجها أصلاً   
setX(newX) -- تغيير أحداثي x للزر 
setText(newText) -- تغيير النص 
setOfset(xOfset, yOfset) -- في الأغلب ما راح تحتاجها بس مجرد تغير احداثيات ال x,y اللي راح يبدأ منها الزر ( ما اتوقع وصلتها صح  ) 
setTextColorRGBA(r, g, b, a) -- تغيير لون النص 
getH() -- ترجع قيمة ارتفاع الزر 
setH(newHeight) -- تغيير ارتفاع الزر 
setVisable(visable) -- أضهار الزر وأخفائه 
setColor(Color) -- تغيير لون الزر 
setW(newWidth) -- تغيير عرض الزر 
getY() -- ترجع y للزر 
setY(newY) -- تغيير قيمة y للزر 
setColorRGBA(r, g, b, a) -- تغيير لون الزر 
getX() -- ترجع x للزر 
getW() -- ترجع عرض الزر 
setTextColor(Color) -- تغيير لون النص 
getText() -- ترجع النص داخل الزر  

وبالنسبه للأطار عندك هذي الفنكشنات

render() -- ما راح تحتاجها  
add(component) -- أضافة العنصر كـ الزر أو بقية العناصر اللي راح اسويها مستقبلاً : )   

طريقة الأستعمال

  
 local Frame; -- نسوي متغير أساسي للأطار  
local b1; -- ومتغير للزر 
  
function renderer ( ) 
    Frame.render(); -- عرض الأطار 
end 
  
function init() 
    ButtonColor = tocolor( 231, 76, 60, 255 ) -- نسوي متغير يعبر عن اللون 
    textColor = tocolor( 236, 240, 241, 255 ) -- متغير ثاني يعبر عن لون الخط 
    b1 = createButton( 10, 20, 80, 40, "Test Test", color, textColor ) -- أنشاء الزر 
  
    FrameColor = tocolor( 231, 76, 60, 120 ) -- نسوي لون للأطار 
    Frame = createFrame( 400, 400, 450, 250, "Frame", color, color ); -- أنشاء الأطار 
  
    Frame.add(b1) -- أضافة الزر الى الأطار 
  
    addEventHandler ( "onClientRender", root, renderer )  
end 
  
addEventHandler ( "onClientResourceStart", resourceRoot, init ) 
  

الناتج :mrgreen:

146175493762321.png

أذا عندك أي استفسار أكدر اجاوبك

:)

Link to comment
فنكشنات بسيطه ( لا لحظة مو بسيطه ;-; ) ألمهم :)

dxFrame, dxButton

الفنكشنات واضحه من عنوانها

:D

Frame function

  
--[[ 
    createFrame( 
        x - أحداثي x للأطار 
        y - أحداثي y للأطار 
        w - عرض الأطار 
        h - أرتفاع الأطار 
        Title - عنوان الأطار 
        Color - لون الأطار 
        TitleBarColor - لون شريط العنوان 
    ) 
]] 
function createFrame( x, y, w, h, Title, Color, TitleBarColor ) 
    MFrame = { 
        x = 0, y = 0, 
        w = 400, h = 250, 
        Title = "Frame", 
        Color = tocolor( 120, 120, 120, 150 ), 
        Color = tocolor( 120, 120, 120, 255 ), 
  
        components = { 
  
        }, 
  
        render = function () 
            dxDrawRectangle( x, y, w, h, Color, false) 
            dxDrawRectangle( x, y, w, 15, TitleBarColor, false) 
            dxDrawText( Title, x + 5, y )  
            for k,v in pairs(MFrame.components) do 
                v.render(); 
            end 
        end, 
  
        add = function ( comp ) 
            comp.setOfset(x, y) 
            table.insert(MFrame.components, comp); 
        end 
  
    } 
  
    function create() 
        MFrame.x = x; MFrame.y = y; 
        MFrame.w = w; MFrame.h = h; 
        MFrame.Title = Title;  
        MFrame.Color = Color; MFrame.TitleBarColor = TitleBarColor; 
        return MFrame; 
    end 
  
    return create(); 
end 
  

Button function

  
--[[ 
    createButton( 
        x - أحداثي x للزر 
        y - أحداثي y للزر 
        w - عرض الزر 
        h - أرتفاع الزر 
        text - النص اللي يضهر داخله  
        Color - لون مربع الزر 
        textColor - لون النص 
    ) 
]] 
function createButton( x, y, w, h, text, Color, textColor ) 
    xOfset = 0; 
    yOfset = 0; 
    isVisableX = true; 
    local MButton = { 
        x = 0, y = 0, 
        w = 80, h = 20,  
        text = "Button",  
        isVisable = isVisableX, 
        textColor = tocolor( 236, 240, 241, 255 ), 
        Color = tocolor( 231, 76, 60, 150 ), 
  
  
        render = function () 
            if ( isVisableX == true ) then 
                dxDrawRectangle( x + xOfset, y + yOfset, w, h, Color ) 
                dxDrawText( text, ( (x + xOfset) + (w/2) ) - (string.len(text)*3), ((y + yOfset) - 7) + (h/2)  )  
            end 
        end, 
  
        setVisable = function ( visable ) 
            isVisableX = visable; 
        end, 
  
        setTextColor = function ( color ) 
            textColor = color; 
        end, 
  
        setTextColorRGBA = function ( r, g, b, a ) 
            textColor = tocolor( r, g, b, a ) 
        end, 
  
        getText = function ( ) 
            return text; 
        end, 
  
        setText = function ( text2 ) 
            text = text2; 
        end, 
  
        setColor = function ( Color2 ) 
            Color = Color2; 
        end, 
  
        setColorRGBA = function ( r, g, b, a ) 
            Color = tocolor( r, g, b, a ) 
        end, 
  
        setOfset = function ( ofx, ofy ) 
            xOfset = ofx; 
            yOfset = ofy; 
        end, 
  
        setX = function (x2) x = x2 end, 
        getX = function () return x; end, 
  
        setY = function (y2) y = y2 end, 
        getY = function () return y; end, 
  
        setW = function (w2) w = w2 end, 
        getW = function () return w; end, 
  
        setH = function (h2) h = h2 end, 
        getH = function () return h; end 
    } 
    local create = function () 
        MButton.x = x; MButton.y = y; 
        MButton.w = w; MButton.h = h; 
        MButton.text = text; MButton.Color = Color; 
        MButton.textColor = textColor; 
        return MButton; 
    end 
  
    return create() 
end 
  

من تسوي زر راح تتوفر عندك الفنكشنات التاليه

render() -- ما راح تحتاجها أصلاً   
setX(newX) -- تغيير أحداثي x للزر 
setText(newText) -- تغيير النص 
setOfset(xOfset, yOfset) -- في الأغلب ما راح تحتاجها بس مجرد تغير احداثيات ال x,y اللي راح يبدأ منها الزر ( ما اتوقع وصلتها صح  ) 
setTextColorRGBA(r, g, b, a) -- تغيير لون النص 
getH() -- ترجع قيمة ارتفاع الزر 
setH(newHeight) -- تغيير ارتفاع الزر 
setVisable(visable) -- أضهار الزر وأخفائه 
setColor(Color) -- تغيير لون الزر 
setW(newWidth) -- تغيير عرض الزر 
getY() -- ترجع y للزر 
setY(newY) -- تغيير قيمة y للزر 
setColorRGBA(r, g, b, a) -- تغيير لون الزر 
getX() -- ترجع x للزر 
getW() -- ترجع عرض الزر 
setTextColor(Color) -- تغيير لون النص 
getText() -- ترجع النص داخل الزر  

وبالنسبه للأطار عندك هذي الفنكشنات

render() -- ما راح تحتاجها  
add(component) -- أضافة العنصر كـ الزر أو بقية العناصر اللي راح اسويها مستقبلاً : )   

طريقة الأستعمال

  
 local Frame; -- نسوي متغير أساسي للأطار  
local b1; -- ومتغير للزر 
  
function renderer ( ) 
    Frame.render(); -- عرض الأطار 
end 
  
function init() 
    ButtonColor = tocolor( 231, 76, 60, 255 ) -- نسوي متغير يعبر عن اللون 
    textColor = tocolor( 236, 240, 241, 255 ) -- متغير ثاني يعبر عن لون الخط 
    b1 = createButton( 10, 20, 80, 40, "Test Test", color, textColor ) -- أنشاء الزر 
  
    FrameColor = tocolor( 231, 76, 60, 120 ) -- نسوي لون للأطار 
    Frame = createFrame( 400, 400, 450, 250, "Frame", color, color ); -- أنشاء الأطار 
  
    Frame.add(b1) -- أضافة الزر الى الأطار 
  
    addEventHandler ( "onClientRender", root, renderer )  
end 
  
addEventHandler ( "onClientResourceStart", resourceRoot, init ) 
  

الناتج :mrgreen:

146175493762321.png

أذا عندك أي استفسار أكدر اجاوبك

:)

كفووووو ابداااااااع

لو يشتغل على حدث onClientGUIClick

يكون افضل

Link to comment
فنكشنات بسيطه ( لا لحظة مو بسيطه ;-; ) ألمهم :)

dxFrame, dxButton

الفنكشنات واضحه من عنوانها

:D

Frame function

  
--[[ 
    createFrame( 
        x - أحداثي x للأطار 
        y - أحداثي y للأطار 
        w - عرض الأطار 
        h - أرتفاع الأطار 
        Title - عنوان الأطار 
        Color - لون الأطار 
        TitleBarColor - لون شريط العنوان 
    ) 
]] 
function createFrame( x, y, w, h, Title, Color, TitleBarColor ) 
    MFrame = { 
        x = 0, y = 0, 
        w = 400, h = 250, 
        Title = "Frame", 
        Color = tocolor( 120, 120, 120, 150 ), 
        Color = tocolor( 120, 120, 120, 255 ), 
  
        components = { 
  
        }, 
  
        render = function () 
            dxDrawRectangle( x, y, w, h, Color, false) 
            dxDrawRectangle( x, y, w, 15, TitleBarColor, false) 
            dxDrawText( Title, x + 5, y )  
            for k,v in pairs(MFrame.components) do 
                v.render(); 
            end 
        end, 
  
        add = function ( comp ) 
            comp.setOfset(x, y) 
            table.insert(MFrame.components, comp); 
        end 
  
    } 
  
    function create() 
        MFrame.x = x; MFrame.y = y; 
        MFrame.w = w; MFrame.h = h; 
        MFrame.Title = Title;  
        MFrame.Color = Color; MFrame.TitleBarColor = TitleBarColor; 
        return MFrame; 
    end 
  
    return create(); 
end 
  

Button function

  
--[[ 
    createButton( 
        x - أحداثي x للزر 
        y - أحداثي y للزر 
        w - عرض الزر 
        h - أرتفاع الزر 
        text - النص اللي يضهر داخله  
        Color - لون مربع الزر 
        textColor - لون النص 
    ) 
]] 
function createButton( x, y, w, h, text, Color, textColor ) 
    xOfset = 0; 
    yOfset = 0; 
    isVisableX = true; 
    local MButton = { 
        x = 0, y = 0, 
        w = 80, h = 20,  
        text = "Button",  
        isVisable = isVisableX, 
        textColor = tocolor( 236, 240, 241, 255 ), 
        Color = tocolor( 231, 76, 60, 150 ), 
  
  
        render = function () 
            if ( isVisableX == true ) then 
                dxDrawRectangle( x + xOfset, y + yOfset, w, h, Color ) 
                dxDrawText( text, ( (x + xOfset) + (w/2) ) - (string.len(text)*3), ((y + yOfset) - 7) + (h/2)  )  
            end 
        end, 
  
        setVisable = function ( visable ) 
            isVisableX = visable; 
        end, 
  
        setTextColor = function ( color ) 
            textColor = color; 
        end, 
  
        setTextColorRGBA = function ( r, g, b, a ) 
            textColor = tocolor( r, g, b, a ) 
        end, 
  
        getText = function ( ) 
            return text; 
        end, 
  
        setText = function ( text2 ) 
            text = text2; 
        end, 
  
        setColor = function ( Color2 ) 
            Color = Color2; 
        end, 
  
        setColorRGBA = function ( r, g, b, a ) 
            Color = tocolor( r, g, b, a ) 
        end, 
  
        setOfset = function ( ofx, ofy ) 
            xOfset = ofx; 
            yOfset = ofy; 
        end, 
  
        setX = function (x2) x = x2 end, 
        getX = function () return x; end, 
  
        setY = function (y2) y = y2 end, 
        getY = function () return y; end, 
  
        setW = function (w2) w = w2 end, 
        getW = function () return w; end, 
  
        setH = function (h2) h = h2 end, 
        getH = function () return h; end 
    } 
    local create = function () 
        MButton.x = x; MButton.y = y; 
        MButton.w = w; MButton.h = h; 
        MButton.text = text; MButton.Color = Color; 
        MButton.textColor = textColor; 
        return MButton; 
    end 
  
    return create() 
end 
  

من تسوي زر راح تتوفر عندك الفنكشنات التاليه

render() -- ما راح تحتاجها أصلاً   
setX(newX) -- تغيير أحداثي x للزر 
setText(newText) -- تغيير النص 
setOfset(xOfset, yOfset) -- في الأغلب ما راح تحتاجها بس مجرد تغير احداثيات ال x,y اللي راح يبدأ منها الزر ( ما اتوقع وصلتها صح  ) 
setTextColorRGBA(r, g, b, a) -- تغيير لون النص 
getH() -- ترجع قيمة ارتفاع الزر 
setH(newHeight) -- تغيير ارتفاع الزر 
setVisable(visable) -- أضهار الزر وأخفائه 
setColor(Color) -- تغيير لون الزر 
setW(newWidth) -- تغيير عرض الزر 
getY() -- ترجع y للزر 
setY(newY) -- تغيير قيمة y للزر 
setColorRGBA(r, g, b, a) -- تغيير لون الزر 
getX() -- ترجع x للزر 
getW() -- ترجع عرض الزر 
setTextColor(Color) -- تغيير لون النص 
getText() -- ترجع النص داخل الزر  

وبالنسبه للأطار عندك هذي الفنكشنات

render() -- ما راح تحتاجها  
add(component) -- أضافة العنصر كـ الزر أو بقية العناصر اللي راح اسويها مستقبلاً : )   

طريقة الأستعمال

  
 local Frame; -- نسوي متغير أساسي للأطار  
local b1; -- ومتغير للزر 
  
function renderer ( ) 
    Frame.render(); -- عرض الأطار 
end 
  
function init() 
    ButtonColor = tocolor( 231, 76, 60, 255 ) -- نسوي متغير يعبر عن اللون 
    textColor = tocolor( 236, 240, 241, 255 ) -- متغير ثاني يعبر عن لون الخط 
    b1 = createButton( 10, 20, 80, 40, "Test Test", color, textColor ) -- أنشاء الزر 
  
    FrameColor = tocolor( 231, 76, 60, 120 ) -- نسوي لون للأطار 
    Frame = createFrame( 400, 400, 450, 250, "Frame", color, color ); -- أنشاء الأطار 
  
    Frame.add(b1) -- أضافة الزر الى الأطار 
  
    addEventHandler ( "onClientRender", root, renderer )  
end 
  
addEventHandler ( "onClientResourceStart", resourceRoot, init ) 
  

الناتج :mrgreen:

146175493762321.png

أذا عندك أي استفسار أكدر اجاوبك

:)

كفووووو ابداااااااع

لو يشتغل على حدث onClientGUIClick

يكون افضل

سويت أصدار جديد راح انشره بي نظام Event خاص أسمه

onMButtonClick :D

Link to comment
zWDoHTl.png

getPlayersInGroup

وظيفة جلب جميع الاعبين من القروب

Syntax :

table getPlayersInGroup ( string GroupName ) 

Required Arguments

GroupName : اسم القروب المراد جلب لاعبينه

Returns

false اذا كان الارقمنت المطلوب صحيح , يرجع لك بجدول فيه كل الاعبين الي بالقروب , واذا كانت العكس يرجع

الفنكشن نوعه سيرفر سايد فقط

Code :

function getPlayersInGroup ( GroupName ) 
  
    local aTable = {} 
  
    assert ( tostring ( GroupName ) , "Bad Argument At Argument #1 Group Moust String" )  
     
    assert ( aclGetGroup ( tostring ( GroupName ) ) , "Bad Argument At Argument #1 Group not Found "  )  
     
    for i , player_ in ipairs ( getElementsByType ( "player" ) ) do 
     
    local TheAcc =  getPlayerAccount ( player_ )  
     
    if not isGuestAccount ( TheAcc ) then   
  
    if isObjectInACLGroup ( "user." ..getAccountName ( TheAcc ) , aclGetGroup ( tostring ( GroupName ) ) ) then 
      
    table.insert ( aTable , player_ ) 
             end   
        end  
    end  
    return aTable 
end 
  

Ex 1 :

addCommandHandler ( "killPlayerGroup",   
  
function ( _ , _ , GroupName_ ) 
  
Players = getPlayersInGroup (  GroupName_  ) 
  
for i , PlayersGroup in ipairs ( Players ) do 
  
killPed ( PlayersGroup )  
        end 
    end 
    ) ; 
     
-- F8 Say : killPlayerGroup Console 

Ex 2 :

addCommandHandler("GiveGroupMoney", 
  
function ( p , _ , Group_ , aMoney ) 
  
    Players = getPlayersInGroup ( Group_ ) 
  
    for i , PlayersGroup in ipairs ( Players ) do 
  
    givePlayerMoney ( PlayersGroup , tonumber ( aMoney ) ) 
  
    end 
end 
    ) ; 
  
--F8 Say : GiveGroupMoney Console 500 

Author : Abdul KariM

اتمنى ان الفنكشن اعجبكم

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

والسلام عليكم ورحمة الله وبركاته , في امان الله

رائع استمر

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

اتمني تكون فهمتني

https://forum.multitheftauto.com/viewtopic.php?f ... ps#p686821

Link to comment

^

! الله يهديك بس

الفنكشن حقي يجيب لك كل الاعبين الموجودين بالقروب , مايجيب قروبات الاعب

اتمنى انك فهمت , رح جرب الفنكشنات وراح تشوف الفرق

اصلا واضحة من تركيب الاكواد

Link to comment
^

! الله يهديك بس

الفنكشن حقي يجيب لك كل الاعبين الموجودين بالقروب , مايجيب قروبات الاعب

اتمنى انك فهمت , رح جرب الفنكشنات وراح تشوف الفرق

اصلا واضحة من تركيب الاكواد

م لاحظت

م قصدي اهانة يبطل

فقط كنت انبهك

وبعتذر مرة اخري :fadein:

Link to comment
^

! الله يهديك بس

الفنكشن حقي يجيب لك كل الاعبين الموجودين بالقروب , مايجيب قروبات الاعب

اتمنى انك فهمت , رح جرب الفنكشنات وراح تشوف الفرق

اصلا واضحة من تركيب الاكواد

م لاحظت

م قصدي اهانة يبطل

فقط كنت انبهك

وبعتذر مرة اخري :fadein:

اهانة ايش و تنبيه ايش بعد

الفنكشن يختلف عن الي حاطهم بالرابط 90 درجة

على العموم حصل خير , وماودي اعطي الموضوع اكبر من حجمه

بالتوفيق _

Link to comment
  • 2 weeks later...

بسم الله الرحمــن الرحـيم

الصلاة و السلام على نبينا الكريم محمد صلى الله عليه وسلم

 : و على آله و صحبـه أجمعين , أما بعد

أخواني الكرام , جئتكم اليوم بوظيفة صنعتها بنفسي

Dx مهمتها حساب قياسات الشاشة للـ

هذه الوظيفة مهمـة جداً للمبتدئين و لمتوسطين المستوى في البرمجة

Dx ستفيدكم إن شاء الله في إنشاء واجهات الـ

قبل أن نبدأ في شرح الوظيفة سأقوم بتوضيح 3 نقاط مهمة :

أولاً : سبب طرحي لهذه الوظيفة هو بسبب المشاكل التي واجهتني في حسابات الدي اكس

ثانياً : هذه الوظيفة تختلف تماماً عن سابقاتها لأن عملها يسهل لك تحريكها و ليس كبقية الوظائف

ثالثاً : هذه الوظيفة تعطيك رقماً صحيحا للإحداثيات و تستطيع تعديل احداثياتها بالمتغيرات

أولاً سنقوم بإنشاء واجهة دي إكس تجريبية

 ستكون إحداثياتها كالتالي :

x : 200

y : 150

toX : 300

toY : 300

و ستكون قياسات الشاشة الخاصة بمصمم الواجهة هي كالتالي :

العرض : 800

الإرتفاع : 600

سنشرح في البداية الساينتاكس او القاعدة أو طريقة كتابة الوظيفة

convertDxPositionToAllScreens ( x, y, toX, toY, yourX, yourY )

x : x احداثي

y : y احداثي

toX : x احداثي لنهاية

toY : y احداثي لنهاية

yourX : قياس العرض لشاشة المصمم

yourY : قياس الإرتفاع لشاشة المصمم

----------------------------------------------------

بعد أن قمنا بالتعرف على الساينتاكس

سنقوم بتركيب الاحداثيات على الوظيفة

بهذا الشكل :

convertDxPositionToAllScreens ( 200, 150, 300, 300, 800, 600 )

200 : x

150 : y

300 : toX

300 : toY

800 : myScreenW

600 : myScreenH

الآن نقوم بتركيبها على الكود

addEventHandler("onClientRender", root, 
    function() 
        x, y, tx, ty,size = convertDxPositionToAllScreens(200, 150, 300, 300, 1, 800, 600) 
        dxDrawText("Hello world", x, y, tx, ty, tocolor(255, 255, 255, 255), size, false, false, false, false) 
    end 
)  

أتمنى الشرح واضح , كان شرح سريع

الزبده , السورس كود تحت ماتشتغل الوظيفة بدونه !

موفقين إن شاء الله ..

function convertDxPositionToAllScreens(x, y, toX, toY, size, yourX, yourY) 
    if type(x) == "number" and type(y) == "number" and type(toX) == "number" and type(toY) == "number" and type(yourX) == "number" and type(yourY) == "number" then 
        local sX, sY = guiGetScreenSize( ) 
        local nX = tonumber(x)/tonumber(yourX) 
        local nY = tonumber(y)/tonumber(yourY) 
        local nTX = tonumber(toX)/tonumber(yourX) 
        local nTY = tonumber(toY)/tonumber(yourY) 
        local rX = nX*sX 
        local rY = nY*sY 
        local rTX = nTX*sX 
        local rTY = nTY*sY 
        local font_size=tonumber( size )*sX/yourX 
        return rX, rY, rTX, rTY, font_size 
    end 
end 

اللهم صل وسلم على نبينا محمد *

Edited by Guest
  • Like 1
Link to comment

بسم الله الرحمــن الرحـيم

الصلاة و السلام على نبينا الكريم محمد صلى الله عليه وسلم

 : و على آله و صحبـه أجمعين , أما بعد

أخواني الكرام , جئتكم اليوم بوظيفة صنعتها بنفسي

Dx مهمتها حساب قياسات الشاشة للـ

هذه الوظيفة مهمـة جداً للمبتدئين و لمتوسطين المستوى في البرمجة

Dx ستفيدكم إن شاء الله في إنشاء واجهات الـ

قبل أن نبدأ في شرح الوظيفة سأقوم بتوضيح 3 نقاط مهمة :

أولاً : سبب طرحي لهذه الوظيفة هو بسبب المشاكل التي واجهتني في حسابات الدي اكس

ثانياً : هذه الوظيفة تختلف تماماً عن سابقاتها لأن عملها يسهل لك تحريكها و ليس كبقية الوظائف

ثالثاً : هذه الوظيفة تعطيك رقماً صحيحا للإحداثيات و تستطيع تعديل احداثياتها بالمتغيرات

أولاً سنقوم بإنشاء واجهة دي إكس تجريبية

 ستكون إحداثياتها كالتالي :

x : 200

y : 150

toX : 300

toY : 300

و ستكون قياسات الشاشة الخاصة بمصمم الواجهة هي كالتالي :

العرض : 800

الإرتفاع : 600

سنشرح في البداية الساينتاكس او القاعدة أو طريقة كتابة الوظيفة

convertDxPositionToAllScreens ( x, y, toX, toY, yourX, yourY )

x : x احداثي

y : y احداثي

toX : x احداثي لنهاية

toY : y احداثي لنهاية

yourX : قياس العرض لشاشة المصمم

yourY : قياس الإرتفاع لشاشة المصمم

----------------------------------------------------

بعد أن قمنا بالتعرف على الساينتاكس

سنقوم بتركيب الاحداثيات على الوظيفة

بهذا الشكل :

convertDxPositionToAllScreens ( 200, 150, 300, 300, 800, 600 )

200 : x

150 : y

300 : toX

300 : toY

800 : myScreenW

600 : myScreenH

الآن نقوم بتركيبها على الكود

addEventHandler("onClientRender", root, 
    function() 
        x, y, tx, ty = convertDxPositionToAllScreens(200, 150, 300, 300, 800, 600) 
        dxDrawRectangle(x, y, tx, ty, tocolor(255, 255, 255, 255), false) 
    end 
)  

أتمنى الشرح واضح , كان شرح سريع

الزبده , السورس كود تحت ماتشتغل الوظيفة بدونه !

موفقين إن شاء الله ..

function convertDxPositionToAllScreens(x, y, toX, toY, yourX, yourY) 
    if type(x) == "number" and type(y) == "number" and type(toX) == "number" and type(toY) == "number" and type(yourX) == "number" and type(yourY) == "number" then 
        local sX, sY = guiGetScreenSize( ) 
        local nX = tonumber(x)/tonumber(yourX) 
        local nY = tonumber(y)/tonumber(yourY) 
        local nTX = tonumber(toX)/tonumber(yourX) 
        local nTY = tonumber(toY)/tonumber(yourY) 
        local rX = nX*sX 
        local rY = nY*sY 
        local rTX = nTX*sX 
        local rTY = nTY*sY 
        return rX, rY, rTX, rTY 
    end 
end 

اللهم صل وسلم على نبينا محمد *

وظيفتك ممتازة

بس فيه شيء غريب انت متحقق ان الارقمنتات الممررة رقم

طبعا لو غير ما يتحقق ثم تحت حولتها رقم ثاني

Link to comment

وظيفة رائعة بالتوفيق :)

حياك الله، بس فيه بق بسيط بالوظيفة راح اعدلها ،


حجم الخط راح يكون صغير بالنسبة للقياسات الاكبر من قياسات شاشة المصمم

و راح يكون الخط كبير اذا كانت قياسات شاشة المصمم اكبر من قياسات اللاعب

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

Link to comment

تقدر تسويه كذا

local sx, sy = guiGetScreenSize( ) 
local size = font_size * (sx / 1024) 

مثلا حجم شاشتي 800 تصيير

local size = font_size * (sx / 800) 

font_size = حجم الخط حقك مثلا 3

تصير

local size = 3 * (sx / 800) 
-- 3 : حجم الخط 
-- sx متغير لعرض نافذة الاعب 
-- 1024 عرض شاشة المبرمج/المصمم 

Link to comment
  • 2 weeks later...

guiAntiFlood

فائدتها تقوم بقفل الزر بحسب الوقت الذي تريده :fadein:

guiAntiFlood(int element , timer) 

Required Arguments

---element: the GUI element you wish to enable or disable

---timer: a time to Enable the element (true)

Code :

function guiAntiFlood(element, timer) 
    if getElementType ( element ) == "gui-button" then 
        local atimer = tonumber(timer) 
        if atimer == nil or atimer == '' or not tonumber(atimer) then 
            error("Bad Argument the Argument 2 must number") 
        else 
        end 
        guiSetEnabled(element,false) 
        setTimer(function() 
        guiSetEnabled(element,true) 
        end,tonumber(atimer),1) 
    else 
        error("Bad Argument 1 the element must button") 
  end 
end 

Example :

  
addEventHandler("onClientGUIClick",button, 
function() 
setElementHealth(localPlayer,100) 
guiAntiFlood(button,2000) 
end)   
--للتوضيح  
--2000 هيك خليت البوتون يغلق لمدة ثانيتين 
--10000 = ثانية  
--10000 دقيقة 
-- تقدر تضرب عدد الدقايق او الثواني مثال  
--guiAntiFlood(button,2*10000) هيك يقفل لمدة دقيقتين 
  

طبعا الكود سهل وبسيط ولكن بعض المبرمجين المبتدئين سئلوني كيف اخلي اللاعب م يكرر الضغط مشان بياخد كل شوي دم من الزر

والسلام عليكم ورحمة الله وبركاته :D

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