Jump to content

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


Booo

Recommended Posts

الفنكشن سيرفر فقط ,

ليش ؟ :)

+

لو تخليه يرجع لك تيبل فيه اللاعبين الي عندهم قيمه معينه من الفلوس بيكون افضل

يفرق سنتاكس getPlayerMoney

من سيرفر وكلنت ,

الكلنت ماراح يطلب الاعب ,

السيرفر راح يطلب الاعب , فعشان كذا تفرق ,

عالعموم تم وضعه في جدول ,

بخصوص الترتيب تراي مافهمتكم , وياليت واحد يفهمني وش الترتيب الي تقصدونه انا اشوف ترتيبي كويس ذذ , :roll:

Link to comment

60727218.png

FormatTime

. هذه الوظيفة تقوم بتحويل الوقت أو حسابه وترجع جدول مع سترنق

Syntax

table, string FormatTime( float Time, string TimeFormula, bool Convert, string MaximumTimeFormula, table BannedTimeFormulas ) 

Required Arguments

  • Time : الوقت

  • TimeFormula : ..صيغة الوقت مثل ثانية ، ساعة ، يوم ، سنة ، الخ

Optional Arguments

  • Convert : . false ينحسب + القيمة الافتراضية هي false يتحول و true ، قيمة منطقية قائمة على أن الوقت المعطاه بيتحول أو بينحسب

  • MaximumTimeFormula : ...
    . ( قرن ) century القيمة الافتراضية هي + hour أعلى صيغة وقت الوظيفة راح تحسب بها ، يعني مثلاً تبي تحسب بالساعات فقط ، حط

  • BannedTimeFormulas : . صيغ الوقت إلي بتنحذف من جدول الوقت + ما راح تظهر في السترنق إلي يرجع ، طبعًا تحط الصيغ إلي تبي تحذفها في جدول + الافتراضي أنه يطلع الكل إذا كان قيمتهم مو صفر

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

صيغ الوقت المدعومة

( picosecond, nanosecond, microsecond, millisecond, centisecond, decisecond, second, minute, hour, day, week, month, year, decade, century )

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

Returns

  • . إذا صار خطأ false ترجع جدول فيه الوقت وسترنق فيه الوقت كـ كلام ، ويرجع

Source Code

function FormatTime( Time, TimeFormula, Convert, MaximumTimeFormula, BannedTimeFormulas ) 
    if ( type( Time ) == "number" and type( TimeFormula ) == "string" ) then 
        local SomeTable = { picosecond = Time / 1000000000000, nanosecond = Time / 1000000000, microsecond = Time / 1000000, 
            millisecond = Time / 1000, centisecond = Time / 100, decisecond = Time / 10, second = Time, minute = Time * 60, hour = Time * 3600, 
            day = Time * 86400, week = Time * 604800, month = Time * 2592000, year = Time * 31536000, decade = Time * 315360000, century = Time * 3153600000 
        } 
        MaximumTimeFormula = string.lower( tostring( MaximumTimeFormula ) ) 
        Time, MaximumTimeFormula = SomeTable[string.lower( TimeFormula )], SomeTable[MaximumTimeFormula] and MaximumTimeFormula or "century" 
        if ( Time ) then 
            local TimeTable, Time, String, Convert = {}, math.abs( Time ), "", not Convert 
            TimeTable["picosecond"] = math.floor( Convert and MaximumTimeFormula ~= "picosecond" and Time * 1000000000000 % 10 or Time * 1000000000000 ) 
            TimeTable["nanosecond"] = math.floor( Convert and MaximumTimeFormula ~= "nanosecond" and Time * 1000000000 % 10 or Time * 1000000000 ) 
            TimeTable["microsecond"] = math.floor( Convert and MaximumTimeFormula ~= "microsecond" and Time * 1000000 % 10 or Time * 1000000 ) 
            TimeTable["millisecond"] = math.floor( Convert and MaximumTimeFormula ~= "millisecond" and Time * 1000 % 10 or Time * 1000 ) 
            TimeTable["centisecond"] = math.floor( Convert and MaximumTimeFormula ~= "centisecond" and Time * 100 % 10 or Time * 100 ) 
            TimeTable["decisecond"] = math.floor( Convert and MaximumTimeFormula ~= "decisecond" and Time * 10 % 10 or Time * 10 ) 
            TimeTable["second"] = math.floor( Convert and MaximumTimeFormula ~= "second" and Time % 60 or Time ) 
            TimeTable["minute"] = math.floor( Convert and MaximumTimeFormula ~= "minute" and Time % 3600 / 60 or Time / 60 ) 
            TimeTable["hour"] = math.floor( Convert and MaximumTimeFormula ~= "hour" and Time % 86400 / 3600 or Time / 3600 ) 
            TimeTable["day"] = math.floor( Convert and MaximumTimeFormula ~= "day" and Time % 31536000 % 2592000 % 604800 / 86400 or Time / 86400 ) 
            TimeTable["week"] = math.floor( Convert and MaximumTimeFormula ~= "week" and Time % 2592000 / 604800 or Time / 604800 ) 
            TimeTable["month"] = math.floor( Convert and MaximumTimeFormula ~= "month" and Time % 31536000 / 2592000 or Time / 2592000 ) 
            TimeTable["year"] = math.floor( Convert and MaximumTimeFormula ~= "year" and Time % 315360000 / 31536000 or Time / 31536000 ) 
            TimeTable["decade"] = math.floor( Convert and MaximumTimeFormula ~= "decade" and Time % 3153600000 / 315360000 or Time / 315360000 ) 
            TimeTable["century"] = math.floor( Time / 3153600000 ) 
            local TimeFormulas = { "picosecond", "nanosecond", "microsecond", "millisecond", "centisecond", "decisecond", "second", "minute", "hour", "day", "week", "month", "year", "decade", "century" } 
            for _, TimeFormula in next, TimeFormulas, ( { picosecond = 1, nanosecond = 2, microsecond = 3, millisecond = 4, centisecond = 5, decisecond = 6, second = 7, minute = 8, hour = 9, day = 10, week = 11, month = 12, year = 13, decade = 14 } )[MaximumTimeFormula] or 15 do TimeTable[TimeFormula] = nil end 
            if ( type( BannedTimeFormulas ) == "table" ) then for _, TimeFormula in ipairs( BannedTimeFormulas ) do TimeTable[string.lower( TimeFormula )] = nil end end 
            for _, TimeFormula in ipairs( { "century", "decade", "year", "month", "week", "day", "hour", "minute", "second", "decisecond", "centisecond", "millisecond", "microsecond", "nanosecond", "picosecond" } ) do 
                local Time = TimeTable[TimeFormula] 
                if ( Time and Time ~= 0 ) then 
                    TimeFormula = string.upper( string.sub( TimeFormula, 1, 1 ) )..string.sub( TimeFormula, 2, #TimeFormula )..( Time == 1 and "" or "s" ) TimeFormula = TimeFormula == "Centurys" and "Centuries" or TimeFormula 
                    String = ( String == "" and String or String..( Convert and " and " or ", " ) )..( Convert and Time.." "..TimeFormula or TimeFormula.." = "..Time ) 
                end 
            end 
            return TimeTable, String..( String ~= "" and " ." or "" ) 
        end 
        return false 
    end 
    return false 
end 

Example

print( select( -1, FormatTime( 10, "Day" ) ) ) --> 1 Week and 3 Days . الحساب 
print( select( -1, FormatTime( 10, "Decisecond" ) ) ) --> 1 Second . الحساب 
print( select( -1, FormatTime( 1, "Second", true ) ) ) --> Second = 1, Deciseconds = 10, Centiseconds = 100, Milliseconds = 1000, Microseconds = 1000000, Nanoseconds = 1000000000, Picoseconds = 1000000000000 . -- التحويل 
print( select( -1, FormatTime( 2.6, "day", nil, "hour" ) ) --> 62 Hours and 24 Minutes . --> hour الحساب + أعلى صيغة هي 
print( select( -1, FormatTime( 2.6, "day", nil, "hour", { "minute" } ) ) --> 62 Hours . --> شلنا الدقائق من الجدول والسترنق + hour الحساب + أعلى صيغة 

Author : #CroSs

:fadein: .

Edited by Guest
Link to comment

string.toTable

وظيفة تقوم بتحويل السلسة النصية الى جدول

كيف تعمل الوظيفة .؟

تقوم بتفكيك محتوى السلسة واضافتة بالجدول وترجع لك جدول بجميع محتوى السلسة النصية

سلبياتها

ماتعمل مع اللغة العربية للأسف :(

Code :

function string.toTable(s) 
    local t, i = "", 0 
    for k=0,#s do 
        t = t..s:sub(k, k) 
    end 
    return t 
end 

OOP Code :

function string:toTable( ) 
    local t, i = "", 0 
    for k=0,#self do 
        t = t..self:sub(k, k) 
    end 
    return t 
end 

Examples :

This example prints the chars of the "hello" string

local s = "hello" 
for k,v in ipairs(string.toTable(s)) do 
    print(k, v) 
end 

OOP Example :

local s = "hello" 
for k,v in ipairs(s:toTable( )) do 
    print(k, v) 
end 

Other :

local s = "hello" 
print(table.concat(s:toTable( ))) -- Return orignal string value 

Link to comment
  • 2 weeks later...
    function dxDrawOutline(text, x, y, w, h, color, scale, font, alignX, alignY, clip, wordBreak, postGUI) 
                dxDrawText(text, x, y, w, h, color, scale, font, alignX, alignY, clip, wordBreak, true, true) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x - 1, y - 1, w - 1, h - 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x + 1, y - 1, w + 1, h - 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x - 1, y + 1, w - 1, h + 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x + 1, y + 1, w + 1, h + 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
    end 

وضيفة تخلي الخط اسود من الحواف وقابل لل

HEX

Link to comment
    function dxDrawOutline(text, x, y, w, h, color, scale, font, alignX, alignY, clip, wordBreak, postGUI) 
                dxDrawText(text, x, y, w, h, color, scale, font, alignX, alignY, clip, wordBreak, true, true) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x - 1, y - 1, w - 1, h - 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x + 1, y - 1, w + 1, h - 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x - 1, y + 1, w - 1, h + 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x + 1, y + 1, w + 1, h + 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
    end 

وضيفة تخلي الخط اسود من الحواف وقابل لل

HEX

:: شروط آضافتك للوظيفه ::

مافيه شروط محدده لكن هو شرط واحد ان الوظيفه تكون من برمجتك يعني ماهو تروح تأخذ نسخ لـ اي كود وتقول انا مبرمجه ، هي فالاخير ذمه و آمانه

Link to comment
    function dxDrawOutline(text, x, y, w, h, color, scale, font, alignX, alignY, clip, wordBreak, postGUI) 
                dxDrawText(text, x, y, w, h, color, scale, font, alignX, alignY, clip, wordBreak, true, true) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x - 1, y - 1, w - 1, h - 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x + 1, y - 1, w + 1, h - 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x - 1, y + 1, w - 1, h + 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
        dxDrawText( string.gsub(text, "#%x%x%x%x%x%x", ""), x + 1, y + 1, w + 1, h + 1, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak, postGUI) 
    end 

وضيفة تخلي الخط اسود من الحواف وقابل لل

HEX

:: شروط آضافتك للوظيفه ::

مافيه شروط محدده لكن هو شرط واحد ان الوظيفه تكون من برمجتك يعني ماهو تروح تأخذ نسخ لـ اي كود وتقول انا مبرمجه ، هي فالاخير ذمه و آمانه

طيب الغلط وين؟

Link to comment

doesTextContainColorCode

بكل بساطة تتحقق اذا كان النص فيه كود تلوين

Syntax :

bool doesTextContainColorCode(string Text) 

Text : النص اللي تبي تتحقق اذا كان فيه كود تلوين

true 

ترجع لك

لو فيه كود تلوين

false 

لو ما فيه

Code :

function doesTextContainColorCode(Text) 
    if Text then  
        if type(Text) == "string" then 
            local NewText = string.gsub(Text, "#%x%x%x%x%x%x", "") 
            if Text ~= NewText then 
                return true 
            else 
                return false 
            end 
        else 
             error("Bad Argument At Argument #1 Got "..type(Text)) 
        end 
    else 
         error("Bad Argument At Argument #1 Got nothing") 
    end 
end 

Author : TAPL, DABL

Note : تابل عطاني الطريقة انا كتبت بس

Edited by Guest
Link to comment

آلسلام عليكم

guiSetPos

الفنكشن هو عبارة عن انه يضبط لوحة ألــ GUI على جميع الشاشت

طبعا واضح من الاسم فقط للــ GUI

Syntax:

bool guiSetPos ( GUI theGUI, float x, float y, bool Relative ) 

Source Code :

function guiSetPos ( theGUI, x, y, Relative ) 
    if ( ( isElement ( theGUI ) ) and ( getElementType ( theGUI ):find( "gui-" ) ) ) then 
        if ( ( theGUI ) and ( x ) and ( y ) ) then 
    local px, py = guiGetScreenSize ( ); 
        local hx, hy = guiGetPosition ( theGUI, Relative ); 
    guiSetPosition ( theGUI, hx * px / x, hy * py / y, Relative ); 
        return true 
    else 
        return false 
    end 
else 
    return false 
   end 
end 

طريقة الاستخدام :

طبعا واضح من الساينتكس

bool guiSetPos ( GUI theGUI الزر او الوحة او اي شي, float x احداثيات شاشتك x, float y احداثيات شاشتك y, bool Relative طبعا تحصل هذا من عبر الوحة او الـgui )

كيف تحصل ال Relative ?

GUIEditor.window[1] = guiCreateWindow(396, 187, 377, 256, "Test", false << Relative )

Example :

  
GUIEditor = { 
    button = {}, 
    window = {} 
} 
addEventHandler("onClientResourceStart", resourceRoot, 
    function() 
        GUIEditor.window[1] = guiCreateWindow(396, 187, 377, 256, "Test", false) 
        guiWindowSetMovable(GUIEditor.window[1], false) 
        guiWindowSetSizable(GUIEditor.window[1], false) 
        guiSetAlpha(GUIEditor.window[1], 1.00) 
        guiSetPos ( GUIEditor.window[1], 1366, 768, false ) 
        guiSetVisible ( GUIEditor.window[1], false ) 
        GUIEditor.button[1] = guiCreateButton(142, 73, 168, 41, "hi", false, GUIEditor.window[1]) 
        guiSetProperty(GUIEditor.button[1], "NormalTextColour", "FFAAAAAA")     
    end 
) 
  
bindKey ( "F7", "down", function (  ) 
guiSetVisible ( GUIEditor.window[1], not guiGetVisible ( GUIEditor.window[1] ) ) 
showCursor ( guiGetVisible ( GUIEditor.window[1] ) ) 
end ) 
  
function guiSetPos ( theGUI, x, y, Relative ) 
    if ( ( isElement ( theGUI ) ) and ( getElementType ( theGUI ):find( "gui-" ) ) ) then 
        if ( ( theGUI ) and ( x ) and ( y ) ) then 
    local px, py = guiGetScreenSize ( ); 
        local hx, hy = guiGetPosition ( theGUI, Relative ); 
    guiSetPosition ( theGUI, hx * px / x, hy * py / y, Relative ); 
        return true 
    else 
        return false 
    end 
else 
    return false 
   end 
end 

Author : ~xiRoc[K]#^

Wiki Page : ماعرف كيف احطه في الويكي :!:

طبعا ماحصلت اسم للـوضيفة خليته كذا :lol:

اي خطأ قول ليي :P

والسلام عليكم :mrgreen:

Edited by Guest
Link to comment

dxDrawFramedDxElement

. تقوم الوظيفة بـ صنع مستطيل مخطط أو صورة مخططة

حيث لو وضعت في الأرقمنت الخامس رقم ، راح يعتبره مستطيل

. ولو وضعت فيه سترنق ، راح يعتبره مسار الصورة ويصنع صورة

. ملاحظة : مخطط يعني حواليه خطوط

Syntax :

dxDrawFramedDxElement( float PositionX, float PositionY, float Width, float Height, string or int PRC, int LineColor, int LineWidth, bool PostGUI ) 

، بالمستطيل أو الصورة ، عشان ما اجلس كل شوي اكررها ض1 PRC بختصر كلمة

  • PositionX = بالنسبة لعرض الشاشة PRC موقع الـ

  • PositionY = بالنسبة لطول الشاشة PRC موقع الـ

  • Width = PRC عرض الـ

  • Height = PRC طول الـ

  • PRC = لون المستطيل أو مسار الصورة ، حط سترنق ويعتبره المسار ، وحط رقم ويعتبره مستطيل

  • LineWidth = عرض الخط

  • LineColor = لون الخط

  • PostGUI = تصير ورا اللوحات PRC الـ false تصير فوق اللوحات ولو حطيتها PRC الـ true قيمة منطقية ، لو حطيتها

Return :

  • . لا شيء

Code :

function dxDrawFramedDxElement( PositionX, PositionY, Width, Height, PRC, LineColor, LineWidth, PostGUI ) 
    LineWidth = math.ceil( math.abs( LineWidth ) ) local Type, Half = type( PRC ), LineWidth / 2 
    if ( LineWidth > 0 ) then 
        dxDrawLine( PositionX, PositionY - Half - 0.5, PositionX + Width, PositionY - Half - 0.5, LineColor, LineWidth, PostGUI ) -- Top 
        dxDrawLine( PositionX, PositionY + Height + Half - 0.5, PositionX + Width, PositionY + Height + Half - 0.5, LineColor, LineWidth, PostGUI ) -- Bottom 
        dxDrawLine( PositionX - Half, PositionY - LineWidth - 0.5, PositionX - Half, PositionY + Height + LineWidth - 1, LineColor, LineWidth, PostGUI ) -- Left 
        dxDrawLine( PositionX + Width + Half, PositionY - LineWidth - 0.5, PositionX + Width + Half, PositionY + Height + LineWidth - 1, LineColor, LineWidth, PostGUI ) -- Right 
    end 
    if ( Type == "string" or Type == "userdata" and getElementType( PRC ) == "texture" ) then 
        dxDrawImage( PositionX, PositionY, Width, Height, PRC, 0, 0, 0, nil, PostGUI ) 
    elseif ( Type == "number" ) then 
        dxDrawRectangle( PositionX, PositionX, Width, Height, PRC, PostGUI ) 
    end 
end 

مثال

dxDrawFramedDxElement( 200, 200, 400, 200, tocolor( 0, 255, 0 ), tocolor( 255, 0, 0 ), 5, false ) -- كذا مستطيل 
dxDrawFramedDxElement( 200, 200, 400, 200, "Image.png", tocolor( 255, 0, 0 ), 5, false ) -- كذا صورة 

Author : #CroSs

Note : انا نشرتها عنه فقط هو صنعها

Edited by Guest
Link to comment
  • 2 weeks later...

IsPlayerHaveWeapon

الوظيفه فائدتها تتحق ان اللاعب معه السلاح ام لا

Source Code:

function IsPlayerHaveWeapon (player,weapon) 
        if ( ( player ) and ( weapon ) ) then 
            if ( isElement ( player ) ) then 
    if ( getPlayerWeapon ( player ) == ( weapon ) ) then 
        return true 
        else 
        return false 
            end 
        end 
    end 
end 

Examble:

addCommandHandler("Have", 
function (HitElem) 
            if IsPlayerHaveWeapon(HitElem,24) then 
        outputChatBox("You have Deagle" ,HitElem, 0, 255, 0) 
    else 
            outputChatBox("You dont't have Deagle",HitElem, 255, 0, 0) 
    end 
end) 
Link to comment

IsPlayerHaveWeapon

الوظيفه فائدتها تتحق ان اللاعب معه السلاح ام لا

Source Code:

function IsPlayerHaveWeapon (player,weapon) 
        if ( ( player ) and ( weapon ) ) then 
            if ( isElement ( player ) ) then 
    if ( getPlayerWeapon ( player ) == ( weapon ) ) then 
        return true 
        else 
        return false 
            end 
        end 
    end 
end 

Examble:

addCommandHandler("Have", 
function (HitElem) 
            if IsPlayerHaveWeapon(HitElem,24) then 
        outputChatBox("You have Deagle" ,HitElem, 0, 255, 0) 
    else 
            outputChatBox("You dont't have Deagle",HitElem, 255, 0, 0) 
    end 
end) 

This function is deprecated. This means that its use is discouraged and that it might not exist in future versions.

Please use getPedWeapon instead.

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

Link to comment

IsPlayerHaveWeapon

الوظيفه فائدتها تتحق ان اللاعب معه السلاح ام لا

Source Code:

function IsPlayerHaveWeapon (player,weapon)
        if ( ( player ) and ( weapon ) ) then
            if ( isElement ( player ) ) then
    if ( getPlayerWeapon ( player ) == ( weapon ) ) then
        return true
        else
        return false
            end
        end
    end
end

Examble:

addCommandHandler("Have",
function (HitElem)
            if IsPlayerHaveWeapon(HitElem,24) then
        outputChatBox("You have Deagle" ,HitElem, 0, 255, 0)
    else
            outputChatBox("You dont't have Deagle",HitElem, 255, 0, 0)
    end
end)

This function is deprecated. This means that its use is discouraged and that it might not exist in future versions.

Please use getPedWeapon instead.

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

+1 مايعتبر كود مفيد بالنسبة لـ هذي صدق فيها تقدر تسوي تحقق بـ سطر واحد وتشكر عالمجهود .

Link to comment
IsPlayerHaveWeapon

#بـدايهه رائعهه .. بالتوفيق !

.. عـليكمم تحطيمم شـجعوهه بدال ماتحطموهه !#

حنا نتكلم عن اكواد تفيد بـ شكل غير هذا يعني الحين كنك تحققت من الاعب هل هو لاعب في وظيفة ثانية وبس وحنا نبي الوظايف المفيدة هنا وقلنا لة يشكر عـ المجهود .

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...