DaHoM

Members
  • Content Count

    71
  • Joined

  • Last visited

Community Reputation

2 Neutral

About DaHoM

  • Rank
    Transformer

Details

  • Gang
    Developer
  • Location
    Pro
  • Occupation
    Member
  • Interests
    I don't know

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. تم خلاص حليت المشكلة الشكرر للمساعدين
  2. انا بلشت شغل عليها وحولتها Method بس بدو ازبط ال __index على كونو الديبق يقلي table index is nil يقصد سطر 6 في طريقة ثانية يعني ما يحتاج اسوي __index هذا المسار local gridlist = {} local CursorOn = {} function dxCreateGridList ( nameGridList , x, y, width, height ) if __checkParams ( "Create", "nnnn", x, y, width, height ) then gridlist [nameGridList] = { x , y , w = ( width ) , h = ( height ) , pg = ( false ) , i = {} , mi = ( __calcMaxItems ( height ) ) , s = 1 , r = -1 , se = -1 , mo = nil , vis = true } return gridlist [ nameGridList ] ; end end function dxDestroyGridList ( nameGridList ) for k, v in pairs ( gridlist ) do if ( v == nameGridList ) then gridlist [ k ] = nil; return true; end end return false; end function dxSetGridListVisible ( nameGridList , visible ) if __checkParams ( "SetVisible", "b", visible ) then gridlist [nameGridList] [vis] = visible return true else return false end end function dxIsGridListVisible ( nameGridList ) return gridlist [nameGridList] [vis] end function dxAddGridListColumn ( nameGridList , title , width ) if __checkParams ( "AddColumn", "sn", title, width ) then local data = { info = { gridlist = nameGridList , title = title, width } }; table.insert ( gridlist [nameGridList] [i] , data ); return #gridlist [nameGridList] [i] ; end end function dxRemoveGridListColumn ( nameGridList , columnIndex ) if __checkParams ( "RemoveColumn", "n", columnIndex ) then gridlist [nameGridList] [i] [ columnIndex ] = nil; -- Recalculate the highest item count local highest = -1; for _, v in ipairs ( gridlist [nameGridList] [i] ) do if #v > highest then highest = ( #v - 1 ); end end gridlist [nameGridList] [r] = highest; -- Recalculate the scroll level (if necessary) if ( ( ( gridlist [nameGridList] [s] + gridlist [nameGridList][mi] ) - 2 ) == gridlist [nameGridList] [r] ) then gridlist [nameGridList] [s] = ( gridlist [nameGridList] [r] - gridlist [nameGridList] [mi] ) + 1; end return true end return false end function dxGetGridListColumnCount ( nameGridList ) return #gridlist [nameGridList] [i] end function dxAddGridListItem ( nameGridList , columnIndex, text, data, r, g, b ) if __checkParams ( "AddItem" , "ns" , columnIndex , text ) then if gridlist [nameGridList] [i] [ columnIndex ] then local tColor = __checkRGB ( r, g, b ) and { r, g, b } or { 255, 255, 255 }; table.insert ( gridlist [nameGridList] [i] [ columnIndex ] , { id = #gridlist [nameGridList] [i] [ columnIndex ] + 1, text = tostring( text ), data = data, color = tColor } ); if #gridlist [nameGridList] [i] [ columnIndex ] > gridlist [nameGridList] [r] then gridlist [nameGridList] [r] = #gridlist [nameGridList] [i][columnIndex]; end return #gridlist [nameGridList] [i][columnIndex]; end return false; end end function dxRemoveGridListItem ( nameGridList , column, itemID ) if __checkParams ( "RemoveItem", "nn", column, itemID ) then if gridlist [nameGridList] [i] [ column ] and gridlist [nameGridList] [i] [ column ] [ itemID ] then -- Recalculate the highest item count if gridlist [nameGridList] [r] == #gridlist [nameGridList] [i] [ column ] then local highest = -1; for _, v in ipairs ( gridlist [nameGridList] [i] ) do if #v > highest then highest = ( #v - 1 ); end end gridlist [nameGridList] [r] = highest; end -- Recalculate the scroll level (if necessary) if ( ( ( gridlist [nameGridList] [s] + gridlist [nameGridList] [mi] ) - 2 ) == gridlist [nameGridList] [r] ) then gridlist [nameGridList] [s] = ( gridlist [nameGridList] [r] - gridlist [nameGridList] [mi] ) + 1; end -- Reset the selected item if necessary² if itemID == gridlist [nameGridList] [se] then local newItem = gridlist [nameGridList] [se] - 1 if newItem <= gridlist [nameGridList] [r] then gridlist [nameGridList] [se] = math.max ( 0, newItem ); else gridlist [nameGridList] [se] = -1 end end table.remove ( gridlist [nameGridList] [i] [ column ] , itemID ); return true; end return false end end function dxGetGridListItemCount ( nameGridList , columnID ) if __checkParams ( "GetItemCount", "n", columnID ) then if gridlist [nameGridList] [i][columnID] then return #gridlist [nameGridList] [i][columnID] end return false end end function dxClearGridList ( nameGridList ) for k, v in ipairs ( gridlist [nameGridList] [i] ) do gridlist [nameGridList] [i][k] = { info = v.info } end gridlist [nameGridList] [r] = -1 gridlist [nameGridList] [se] = nil -- Recalculate the scroll level gridlist [nameGridList] [s] = 1; return true end function dxGetGridListSelectedItem ( nameGridList ) return gridlist [nameGridList] [se]; end function dxSetGridListSelectedItem ( nameGridList , itemID ) if __checkParams ( "SetSelectedItem", "n", itemID ) then if itemID <= gridlist [nameGridList] [r] then gridlist [nameGridList] [se] = itemID; return gridlist [nameGridList] [se] == itemID; end return false; end end function dxGetGridListItemDetails ( nameGridList , column , itemID ) if __checkParams ( "GetItemDetails", "nn", columnID, itemID ) then if gridlist [nameGridList] [i][column] then if gridlist [nameGridList] [i][column][itemID] then return ( gridlist [nameGridList] [i] [ column ] [ itemID ] [text] ) , ( gridlist [nameGridList] [i] [ column ] [ itemID ] [data] ) end end return false end end --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Core - render/move addEventHandler ( "onClientRender", root, function ( ) -- Is there any gridlist to render? if #gridlist > 0 then -- Loop through all grid lists for index, v in ipairs ( gridlist ) do -- Is the gridlist visible? if v.vis then -- Draw the 'gridlist' itself dxDrawRectangle ( v.x, v.y, v.w, v.h, tocolor ( 0, 0, 0, 200 ), v.pg ); -- Draw the column bar dxDrawRectangle ( v.x, v.y, v.w, 30 % v.h, tocolor ( 20, 20, 20, 220 ), v.pg ); -- Set cursorOn variable to the current gridlist, if it's selected if __isMouseInPosition ( v.x, v.y, v.w, v.h ) then CursorOn = { true , index } else if CursorOn[1] and CursorOn[2] == gridlist then CursorOn = {} end end -- Check if there's any selected item local seeFrom = v.s; local seeTo = ( v.s + data.mi ) - 1; if v.se and v.se <= v.r and v.se >= seeFrom and v.se <= seeTo then -- Draw a rectangle to make it looks like selected local index = v.se - ( data.s - 1 ); local y2 = v.y + ( ( index - 1 ) * 25 ); dxDrawRectangle ( v.x, ( 30 % v.h ) + y2, v.w, 24, tocolor ( 180, 180, 180, 180 ), v.pg ); end -- Is there any column? if #v.i > 0 then local cWidth = 0 -- Loop through all columns for cIndex, cData in ipairs ( v.i ) do -- we'll go beyond the gridlist width with this column ? if ( ( cWidth + cData.info.width ) <= v.w ) then local x = v.x + cWidth; -- Draw the column title dxDrawText ( cData.info.title, x, v.y, cData.info.width + x, ( 30 % data.h ) + v.y, tocolor ( 255, 255, 255 ), 1.0 , dxFont, "center", "center", true, true, v.pg, false, true ); -- Reset the selected item cData.info.selected = -1; -- Is there any item ? if #cData > 0 then local seeFrom = v.s; local seeTo = ( v.s + v.mi ) - 1; -- Loop the items for iIndex = seeFrom, seeTo do -- There's a row with this index in the current column? if cData[iIndex] then local index = iIndex - ( v.s - 1 ); local y = v.y + ( index * 25 ); local y2 = v.y + ( ( index - 1 ) * 25 ); -- Check if cursor is on item position if __isMouseInPosition ( v.x, ( 30 % v.h ) + y2, v.w, 20 ) then -- Define the mouse-on variable v.mo = iIndex; end -- Draw the item text dxDrawText ( cData[iIndex]["text"], x, y, cData.info.width + x, ( 30 % v.h ) + y, tocolor ( unpack ( cData[iIndex]["color"] ) ), 1.0 , dxFont, "center", "center", true, true, data.pg, false, true ); end end end -- Increase cWidth variable (to draw the columns correctly) cWidth = cWidth + cData.info.width; end end end end end end end , true, "low-5") -- addEventHandler ( "onClientKey", root, function ( button, press ) -- Is cursor showing? if isCursorShowing () then -- Is there any gridlist? if #gridlist > 0 then -- Is there any selected gridlist? if CursorOn and CursorOn [ 1 ] then -- We pressed the scroll? local cursorOn = CursorOn [ 2 ] if press and #button > 6 then -- Does the gridlist requires scroll? if gridlist.data[cursorOn].r > gridlist.data[cursorOn].mi then -- Define some variables local index = cursorOn; local currentValue = gridlist.data[index].s; local newValue = math.max ( 1, button == "mouse_wheel_down" and currentValue + 2 or currentValue -1 ); -- Check if we have spent the row's limit with the new value if ( ( newValue + gridlist.data[index].mi ) > gridlist.data[index].r ) then newValue = ( gridlist.data[index].r - gridlist.data[index].mi ) + 1; end -- Set the new scroll level gridlist.data[index].s = newValue; end elseif press and button == "mouse1" and gridlist.data[cursorOn].mo then gridlist.data[cursorOn].se = gridlist.data[cursorOn].mo; end end end end end ) --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Useful function __calcMaxItems ( height ) for i = 0, 9999 do if ( ( ( i + 1 ) * 25 ) >= math.floor ( height ) ) then return ( ( ( i + 1 ) * 25 ) > math.floor ( height ) and ( i - 1 ) or i ); end end return false; end function __checkParams ( methodnameGridList, pattern, ... ) local cTable = { ["string"] = "s"; ["number"] = "n"; ["boolean"] = "b"; ["s"] = "string"; ["n"] = "number"; ["b"] = "boolean" }; if #pattern > table.maxn ( { ... } ) then local index = table.maxn ( { ... } ) == 0 and 1 or table.maxn ( { ... } ) + 1 return false, error ( "Bad Argument @ '"..methodnameGridList.."' [Expected "..cTable[ pattern:sub ( index, index ) ].." at argument "..index..", got none]" ) end for k, v in pairs ( { ... } ) do if cTable[ type ( v ) ] ~= pattern:sub ( k, k ) then return false, error ( "Bad Argument @ '"..methodnameGridList.."' [Expected "..cTable[ pattern:sub ( k, k ) ].." at argument "..k..", got "..( type ( v ) or "none" ).."]" ) end end return true; end function __checkRGB ( r, g, b ) -- Check if all parameters were passed if ( not r ) or ( not g ) or ( not b ) then return false; end for _, v in ipairs ( { r, g, b } ) do if ( type ( v ) ~= "number" ) or ( v < 0 ) or ( v > 255 ) then return false; end end return true; end function __isMouseInPosition ( x, y, w, h ) if not isCursorShowing() then return false end local res = { guiGetScreenSize() }; local cpos = { getCursorPosition() }; local fpos = { res[1] * cpos[1], res[2] * cpos[2] }; return ( fpos[1] >= x and fpos[1] <= x + w ) and ( fpos[2] >= y and fpos[2] <= y + h ) end
  3. exports أخوي بسألك كيف اسوي للفنكشن حقت الجريد ليست مو راضي يزبطط معي ( ':' ) يضربني الديبق يقول ما ينفع تستخدم مرتين مثل exports.dx:GridList:Create(...)
  4. بـارك الله فيك مبدع اخوي , يعطيك العافية ما قصرت
  5. السلام عليكم ورحمة الله وبركاتة كيف حال الشباب عساكم طيبين الجواب من اصحاب الخبرة والاحتراف ( القصة مو سهلة على ما اعتقد )ا اليوم كنت اشتغل على برمجة بالدي اكس @t3wz وصادفت انو لازمني 2 جريد ليست وانا بستخدم جريد ليست حقت وانا مشغل نظام الكوائن بملف الميتا <oop>true</oop> بس المصيبة كانت انو ما اقدر اختار غير من جريد ليست واحده فقط وهي اخر واحده انا سويتها اكواد الجريد ليست dxGrid = { items = {} }; local cursorOn; local NATIVE_RESOLUTION = { nil } -- put your screen resolution here to fit the gridlists to all resolutions (ex: { 1366, 768 } ) if ( table.maxn ( NATIVE_RESOLUTION ) == 2 ) then FIT_MODE = true RES = { guiGetScreenSize() }; X,Y = RES[1] / NATIVE_RESOLUTION[1], RES[2] / NATIVE_RESOLUTION[2]; SCALE = ( 1 / NATIVE_RESOLUTION[1] ) * RES[1]; end --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Core - functions function dxGrid:Create ( x, y, width, height, postGUI ) -- table dxGrid:Create ( int x, int y, int width, int height[, bool postGUI ] ) if __checkParams ( "Create", "nnnn", x, y, width, height ) then local data = { x = FIT_MODE and ( x * X ) or x; -- X position y = FIT_MODE and ( y * Y ) or y; -- Y position w = FIT_MODE and ( width * X ) or width; -- Width h = FIT_MODE and ( height * Y ) or height; -- Height pg = postGUI or false; -- PostGUI i = {}; -- Items mi = __calcMaxItems ( FIT_MODE and ( height * Y ) or height ); -- Max items s = 1; -- Scroll Level r = -1; -- Row count se = -1; -- Selected item mo = nil; -- Mouse-on item vis = true -- Visible }; setmetatable ( data, { __index = dxGrid } ); table.insert ( dxGrid.items, data ); return data; end end function dxGrid:Destroy () -- bool dxGrid:Destroy () for k, v in pairs ( dxGrid.items ) do if v == self then dxGrid.items[k] = nil; return true; end end return false; end function dxGrid:SetVisible ( visible ) -- bool Gridlist:SetVisible ( bool state ) if __checkParams ( "SetVisible", "b", visible ) then self.vis = visible return true else return false end end function dxGrid:IsVisible ( ) -- bool Gridlist:IsVisible() return self.vis end function dxGrid:AddColumn ( title, width ) -- int Gridlist:AddColumn ( string title, int width ) if __checkParams ( "AddColumn", "sn", title, width ) then local data = { info = { title = title, width = FIT_MODE and ( width * X ) or width } }; table.insert ( self.i, data ); return #self.i; end end function dxGrid:RemoveColumn ( columnIndex ) -- bool Gridlist:RemoveColumn ( int columnIndex ) if __checkParams ( "RemoveColumn", "n", columnIndex ) then self.i[columnIndex] = nil; -- Recalculate the highest item count local highest = -1; for _, v in ipairs ( self.i ) do if #v > highest then highest = ( #v - 1 ); end end self.r = highest; -- Recalculate the scroll level (if necessary) if ( ( ( self.s + self.mi ) - 2 ) == self.r ) then self.s = ( self.r - self.mi ) + 1; end return true end return false end function dxGrid:GetColumnCount () -- int Gridlist:GetColumnCount() return #self.i end function dxGrid:AddItem ( columnIndex, text, data, r, g, b ) -- int Gridlist:AddItem ( int columnIndex, string title[, mixed data, int r, int g, int b ] ) if __checkParams ( "AddItem", "ns", columnIndex, text ) then if self.i[columnIndex] then local tColor = __checkRGB ( r, g, b ) and { r, g, b } or { 255, 255, 255 }; table.insert ( self.i[columnIndex], { id = #self.i[columnIndex] + 1, text = tostring( text ), data = data, color = tColor } ); if #self.i[columnIndex] > self.r then self.r = #self.i[columnIndex]; end return #self.i[columnIndex]; end return false; end end function dxGrid:RemoveItem ( column, itemID ) -- bool Gridlist:RemoveItem ( int columnIndex, int itemIndex ) if __checkParams ( "RemoveItem", "nn", column, itemID ) then if self.i[column] and self.i[column][itemID] then -- Recalculate the highest item count if self.r == #self.i[column] then local highest = -1; for _, v in ipairs ( self.i ) do if #v > highest then highest = ( #v - 1 ); end end self.r = highest; end -- Recalculate the scroll level (if necessary) if ( ( ( self.s + self.mi ) - 2 ) == self.r ) then self.s = ( self.r - self.mi ) + 1; end -- Reset the selected item if necessary² if itemID == self.se then local newItem = self.se - 1 if newItem <= self.r then self.se = math.max ( 0, newItem ); else self.se = -1 end end table.remove ( self.i[column], itemID ); return true; end return false end end function dxGrid:GetItemCount ( columnID ) -- int Gridlist:GetItemCount ( int columnIndex ) if __checkParams ( "GetItemCount", "n", columnID ) then if self.i[columnID] then return #self.i[columnID] end return false end end function dxGrid:Clear () -- bool Gridlist:Clear() for k, v in ipairs ( self.i ) do self.i[k] = { info = v.info } end self.r = -1 self.se = nil -- Recalculate the scroll level self.s = 1; return true end function dxGrid:GetSelectedItem ( ) -- int Gridlist:GetSelectedItem () return self.se; end function dxGrid:SetSelectedItem ( itemID ) -- bool Gridlist:SetSelectedItem ( int itemIndex ) if __checkParams ( "SetSelectedItem", "n", itemID ) then if itemID <= self.r then self.se = itemID; return self.se == itemID; end return false; end end function dxGrid:GetItemDetails ( column, itemID ) -- string, mixed Gridlist:GetItemDetails ( int columnIndex, int itemIndex ) if __checkParams ( "GetItemDetails", "nn", columnID, itemID ) then if self.i[column] then if self.i[column][itemID] then return self.i[column][itemID].text, self.i[column][itemID].data end end return false end end --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Core - render/move addEventHandler ( "onClientRender", root, function ( ) -- Is there any gridlist to render? if #dxGrid.items > 0 then -- Loop through all grid lists for index, data in ipairs ( dxGrid.items ) do -- Is the gridlist visible? if data.vis then -- Draw the 'gridlist' itself dxDrawRectangle ( data.x, data.y, data.w, data.h, tocolor ( 0, 0, 0, 200 ), data.pg ); -- Draw the column bar dxDrawRectangle ( data.x, data.y, data.w, 30 % data.h, tocolor ( 0, 0, 0, 220 ), data.pg ); -- Set cursorOn variable to the current gridlist, if it's selected cursorOn = nil if __isMouseInPosition ( data.x, data.y, data.w, data.h ) then cursorOn = index; end -- Check if there's any selected item local seeFrom = data.s; local seeTo = ( data.s + data.mi ) - 1; if data.se and data.se <= data.r and data.se >= seeFrom and data.se <= seeTo then local index = data.se - ( data.s - 1 ); local y2 = data.y + ( ( index - 1 ) * 25 ); -- Draw a rectangle to make it looks like selected dxDrawRectangle ( data.x, ( 30 % data.h ) + y2, data.w, 20, tocolor ( 100, 100, 100, 100 ), data.pg ); end -- Is there any column? if #data.i > 0 then local cWidth = 0 -- Loop through all columns for cIndex, cData in ipairs ( data.i ) do -- we'll go beyond the gridlist width with this column ? if ( ( cWidth + cData.info.width ) <= data.w ) then local x = data.x + cWidth; -- Draw the column title dxDrawText ( cData.info.title, x, data.y, cData.info.width + x, ( 30 % data.h ) + data.y, tocolor ( 255, 255, 255 ), FIT_MODE and ( 1 * SCALE ) or 1, "default-bold", "center", "center", true, true, data.pg, false, true ); -- Reset the selected item cData.info.selected = -1; -- Is there any item ? if #cData > 0 then local seeFrom = data.s; local seeTo = ( data.s + data.mi ) - 1; -- Loop the items for iIndex = seeFrom, seeTo do -- There's a row with this index in the current column? if cData[iIndex] then local index = iIndex - ( data.s - 1 ); local y = data.y + ( index * 25 ); local y2 = data.y + ( ( index - 1 ) * 25 ); -- Check if cursor is on item position if __isMouseInPosition ( data.x, ( 30 % data.h ) + y2, data.w, 20 ) then -- Define the mouse-on variable data.mo = iIndex; end -- Draw the item text dxDrawText ( cData[iIndex]["text"], x, y, cData.info.width + x, ( 30 % data.h ) + y, tocolor ( unpack ( cData[iIndex]["color"] ) ), FIT_MODE and ( 1 * SCALE ) or 1, "default-bold", "center", "center", true, true, data.pg, false, true ); end end end -- Increase cWidth variable (to draw the columns correctly) cWidth = cWidth + cData.info.width; end end end end end end end , true, "low-5") -- addEventHandler ( "onClientKey", root, function ( button, press ) -- Is cursor showing? if isCursorShowing () then -- Is there any gridlist? if #dxGrid.items > 0 then -- Is there any selected gridlist? if cursorOn then -- We pressed the scroll? if press and #button > 6 then -- Does the gridlist requires scroll? if dxGrid.items[cursorOn].r > dxGrid.items[cursorOn].mi then -- Define some variables local index = cursorOn; local currentValue = dxGrid.items[index].s; local newValue = math.max ( 1, button == "mouse_wheel_down" and currentValue + 2 or currentValue -1 ); -- Check if we have spent the row's limit with the new value if ( ( newValue + dxGrid.items[index].mi ) > dxGrid.items[index].r ) then newValue = ( dxGrid.items[index].r - dxGrid.items[index].mi ) + 1; end -- Set the new scroll level dxGrid.items[index].s = newValue; end elseif press and button == "mouse1" and dxGrid.items[cursorOn].mo then dxGrid.items[cursorOn].se = dxGrid.items[cursorOn].mo; end end end end end ) --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Useful function __calcMaxItems ( height ) for i = 0, 9999 do if ( ( ( i + 1 ) * 25 ) >= math.floor ( height ) ) then return ( ( ( i + 1 ) * 25 ) > math.floor ( height ) and ( i - 1 ) or i ); end end return false; end function __checkParams ( methodName, pattern, ... ) local cTable = { ["string"] = "s"; ["number"] = "n"; ["boolean"] = "b"; ["s"] = "string"; ["n"] = "number"; ["b"] = "boolean" }; if #pattern > table.maxn ( { ... } ) then local index = table.maxn ( { ... } ) == 0 and 1 or table.maxn ( { ... } ) + 1 return false, error ( "Bad Argument @ '"..methodName.."' [Expected "..cTable[ pattern:sub ( index, index ) ].." at argument "..index..", got none]" ) end for k, v in pairs ( { ... } ) do if cTable[ type ( v ) ] ~= pattern:sub ( k, k ) then return false, error ( "Bad Argument @ '"..methodName.."' [Expected "..cTable[ pattern:sub ( k, k ) ].." at argument "..k..", got "..( type ( v ) or "none" ).."]" ) end end return true; end function __checkRGB ( r, g, b ) -- Check if all parameters were passed if ( not r ) or ( not g ) or ( not b ) then return false; end for _, v in ipairs ( { r, g, b } ) do if ( type ( v ) ~= "number" ) or ( v < 0 ) or ( v > 255 ) then return false; end end return true; end function __isMouseInPosition ( x, y, w, h ) if not isCursorShowing() then return false end local res = { guiGetScreenSize() }; local cpos = { getCursorPosition() }; local fpos = { res[1] * cpos[1], res[2] * cpos[2] }; return ( fpos[1] >= x and fpos[1] <= x + w ) and ( fpos[2] >= y and fpos[2] <= y + h ) end وبارك الله في الي يقدر يساعد ❤️❤️ وجمعة مباركة تنعاد علينا وعليكم بصحة والسلامة ❤️❤️
  6. Jason افضل لي ما ابي حماية ذا نادر حصوله ضض نعمً
  7. السلام عليكم ورحمة الله وبركاتة كيف الحال ان شاء الله بخير انا الان بدي اسوي عملية نقل بيانات و اضن مو ضروري اقلكم الهدف حق النقل لأيش لانو ما رح يكون له فايدة بنسبة لطلبي انما انا بدي اعرف ايه افضل اني اخلي نفل البيانات من تطبيق اندرويد الى موقع باللغة Jason or XML والي يقلي واحدهمنهم يقلي ليش مشان استفيد واشوف اذا تتناسب مع الشغل حقي
  8. السلام عليمن ورحمة الله وبركاتة اخباركم يا شباب ابي اعرف ليش ما يرضى لما يومت الاعبي يروح الخلاط كود حفظ الاسلحة -- server said addEventHandler("onPlayerQuit", root, function() local account = getPlayerAccount(source) if account and not isGuestAccount(account) then for slot = 1, 12 do setAccountData(account, "WeaponID"..slot, getPedWeapon(source, slot)) setAccountData(account, "Ammo"..slot, getPedTotalAmmo(source, slot)) end end end); addEventHandler("onPlayerLogin", root, function(_, account) for slot = 1, 12 do local wep = getAccountData(account, "WeaponID"..slot) local ammo = getAccountData(account, "Ammo"..slot) if wep and ammo then giveWeapon(source, wep, ammo) end end end); addEventHandler("onPlayerWasted", root, function() local account = getPlayerAccount(source) if account and not isGuestAccount(account) then for slot = 1, 12 do setAccountData(account, "WeaponID"..slot, getPedWeapon(source, slot)) setAccountData(account, "Ammo"..slot, getPedTotalAmmo(source, slot)) end end end) addEventHandler("onPlayerSpawn", root, function() local account = getPlayerAccount(source) if account and not isGuestAccount(account) then for slot = 1, 12 do local wep = getAccountData(account, "WeaponID"..slot) local ammo = getAccountData(account, "Ammo"..slot) if wep and ammo then giveWeapon(source, wep, ammo) takeWeapon( source, 38, 4, 35, 36, 37 ) end end end end)
  9. يا أخي يقلي بالدي بق لما احط بوابه في العالم الوهمي الانديكس حق الديمونشن يساوي نيل
  10. انا ابي اول ما الاعب ينتقل لمنطقة في العالم الوهمي ويكتب كلمة باف8 يطلعلو اوبجكت هناك function AddDoor( player, Door ) local Rimo = getPlayerRotation ( player ) local x, y, z = getElementPosition ( player ) local intro = getElementInterior( player ) local Dim = getElementDimension ( player ) createObject ( 980, x, y, z, 0, 0, Rimo ) setElementDimension ( Door, Dim ) setElementInterior ( Door, intro ) end addCommandHandler("Door", AddDoor) كل شي زابط بس الانترو والديمنسشن ما يعطي يبقو مخفيات
  11. DaHoM

    مشكلة x2

    function A() dxDrawFramedText("Your Point : ( " ..convertNumber(getElementData(localPlayer,"Day")).. " ) || Your Points : ( " ..convertNumber(getElementData(localPlayer,"Day")).. " ) ", screenW * 0.0154, screenH * 0.4896, screenW * 0.2160, screenH * 0.5104, tocolor(0, 255, 50, 255), 0.95, "sans", "left", "top", false, false, false, false, false) end function AB() dxDrawFramedText("Your Point : ( " ..convertNumber(getElementData(localPlayer,"Days")).. " ) || Your Points : ( " ..convertNumber(getElementData(localPlayer,"Days")).. " ) ", screenW * 0.0154, screenH * 0.4896, screenW * 0.2160, screenH * 0.5104, tocolor(0, 255, 50, 255), 0.95, "sans", "left", "top", false, false, false, false, false) end function ABC() if getElementData(localPlayer,"LoginTopDay") then for i, valueT in ipairs(PointGang) do dxDrawFramedText("Best Point: "..valueT[1].. " ("..convertNumber(valueT[2])..")", screenW * 0.0154, screenH * 0.3997, screenW * 0.1398, screenH * 0.4258, tocolor(255, 0, 0, 255), 1.00, "sans", "left", "top", false, false, false, false, false) PlayerBestG = valueT[1] end end end function ABCD() if getElementData(localPlayer,"LoginTopDays") then for i, valueT in ipairs(PointPolice) do dxDrawFramedText("Best Point : "..valueT[1].. " ("..convertNumber(valueT[2])..")", screenW * 0.0154, screenH * 0.4388, screenW * 0.1398, screenH * 0.4648, tocolor(0, 0, 255, 255), 1.00, "sans", "left", "top", false, false, false, false, false) PlayerBestP = valueT[1] end end end
  12. مشكلتي المرة ذي بسيطة يقلي Error :- bad argument #1 to 'gsub' (string expected, got nill) function convertNumber(number) local formatted = number while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2') if (k==0) then break end end return formatted end
  13. كفووووووو زبط ضض + الشكر الخاص لماستر ام تي اي وا اياد واحمد 09 و عبود