iMr.WiFi..! Posted June 2, 2017 Share Posted June 2, 2017 (edited) بسم الله الرحمن الرحيم , سلام عليكم ورحمة الله وبركاته : أما بعد اقدم لكم وظيفة جميلة ومفيدة بنفس الوقت : getAccountsFromData | Server-Side Only | في جهة السيرفر فقط | Syntax : table getAccountsFromData( string Data ) Data : اسم الداتا المراد جلب الاكونتات الذين لديهم هذه الداتا Source Code : function getAccountsFormData ( Data ) assert(type(Data) == "string","getAccountsFormData Bad Argument 1@ [ Expected 'DataName' in string ] ") Accounts = { } for Index,Account in ipairs (getAccounts( )) do if getAccountData(Account,Data) then table.insert(Accounts,Account) end end return Accounts; end Example : المثال هذا راح يرجع اللاعبين المتواجدين ولديهم هذه الداتا : --- # Source Code function getAccountsFormData ( Data ) assert(type(Data) == "string","getAccountsFormData Bad Argument 1@ [ Expected 'DataName' in string ] ") Accounts = { } for Index,Account in ipairs (getAccounts( )) do if getAccountData(Account,Data) then table.insert(Accounts,Account) end end return Accounts; end -- # Example addCommandHandler("GetAccounts", function ( player, CommandName, DataName ) local accounts = getAccountsFromData( DataName ) -- نجلب الحسابات الي عندهم الداتا for i,v in ipairs( accounts ) do -- نسوي لوب للاكونتات local aPlayerAccount = getAccountPlayer( v ) and getPlayerName( getAccountPlayer( v ) )..",Online" or getAccountName(v)..",Offline"; --[[ اذا كان في احد بالحساب يرجعه بأسم اللاعب ثم فاصلة iMr.Wifi,Online واذا ما كان موجود يرجعه بأسم الحساب ثم فاصلة Wifi,Offline ويستمر على باقي اللاعبين ]] outputChatBox(aPlayerAccount,player) -- يظهر بالشات ^^ end end ) وسلام خير الختام <3 Edited June 2, 2017 by !#NssoR_) Modified as requested 1 Link to comment
Abdul KariM Posted June 2, 2017 Share Posted June 2, 2017 @iMr.WiFi..! وظيفة رائعة وعجبتني لكن بدل سطر 7 بهذا table.insert(Accounts,Account) 1 Link to comment
iMr.WiFi..! Posted June 2, 2017 Share Posted June 2, 2017 @!#NssoR_) يرجى تعديل السورس كود الى : function getAccountsFormData ( Data ) assert(type(Data) == "string","getAccountsFormData Bad Argument 1@ [ Expected 'DataName' in string ] ") Accounts = { } for Index,Account in ipairs (getAccounts( )) do if getAccountData(Account,Data) then table.insert(Accounts,Account) end end return Accounts; end ============ شكراً على التنبية ي عبدالكريم .. + تسلم ي آيكو ,, Link to comment
Master_MTA Posted July 1, 2017 Share Posted July 1, 2017 السلام عليكم ورحمة الله وبركاته من غير ما اطول عليكم اليوم جبتلكم كود مرغوب طبعا هو مشترك ما بين سيرفر وكلينت تمام وش وظيفة الفنكشن الفنكشن يعطل اي فنكشن مضاف للماركر وانت مار عليه بجيت باك من فوق مثلا كيف يعني ما فهمت شوف يقلبي يعني انت مسوي ماركر ومسوي لوحة بغيت اول ما يلمس الماركر يفتح اللوحه تمام لكن في مشكله لو انت سويت ماركر من نوع cylinder وجيت تمر من فوق الماركر بتصير اللوحه تفتح وبكذا بيكون عندك مشكله افرض انت مسوي ماركرين فوق بعض بتصير مشكله لو انت مسوي الماركرين يفتحو لوحتين راح تفتح اللوحتين فوظيفة ذا الفنكشن تلغي الارتفاع الزائد يعني ما تفعل الكلام ذا فقط ارتفاع 2 زياده فوق ارتفاع الماركر اللي بتفتح له تمام نشوف طولت عليكم اسف نجي نشوف السورس كود function disableMarkerHitHighet(themarker,evname,tt) if getElementType(themarker)=='marker' and type(evname)=='string' then local x,y,z=getElementPosition(themarker) local ta={} if #getEventHandlers( evname, themarker )==0 then return end for k,v in ipairs(getEventHandlers( evname, themarker ))do removeEventHandler(evname, themarker, v) table.insert(ta,v) end if tt then addEventHandler(evname,themarker,function(plr,dim) if dim then local xp,yp,zp=getElementPosition(plr) if zp<=z+2 then for k,v in ipairs(ta)do v(plr,dim) end end end end) else addEventHandler(evname,themarker,function(plr) local xp,yp,zp=getElementPosition(plr) if zp<=z+2 then for k,v in ipairs(ta)do v(plr) end end end) end end end نجي للارقمنتات الحين وطريقة الاستخدام disableMarkerHitHighet(element marker,string event,bolean state) طيب بسم الله marker:الماركر اللي تبي تنفذ عليه الوظيفه او الخاصيه ذي event:اسم الايفينت وهو يمكن ان يكون 4 اولا بالكلنت سايد onClientMarkerHit onClientMarkerLeave ------------------------سيرفر سايد onMarkerHit onMarkerLeave -----------------ارقمنت اختياري state:يمكن ان تكون قيمتين true----لو في نفس العالم false-----لو مو في نفس العالم وتقدر تخليها ما منها فاظيه هي القيمه اصلا false طيب state هذي تحقق لو الالمنت اللي لمس الماركر او تركه في نفس العالم اللي فيه الماركر ملااااااااحظه مهمة الخاصية بتزبط لو انت مسوي الحدث حق الماركر كالاتي مثلا m1 = createMarker ( 2487.7041015625, -1665.9248046875, 12.34375, "cylinder", 1.5, 215, 215, 255 ) addEventHandler('onClientMarkerHit',m1,function ( hitPlayer ) if ( hitPlayer == localPlayer ) then if ( source == m1 ) then guiSetVisible ( wnd, not guiGetVisible ( wnd ) ) showCursor ( guiGetVisible ( wnd ) ) end end end ) disableMarkerHitHighet(m1,'onClientMarkerHit') اما كذا فما بتزبط m1 = createMarker ( 2487.7041015625, -1665.9248046875, 12.34375, "cylinder", 1.5, 215, 215, 255 ) addEventHandler('onClientMarkerHit',root,function ( hitPlayer ) if source==m1 then if ( hitPlayer == localPlayer ) then if ( source == m1 ) then guiSetVisible ( wnd, not guiGetVisible ( wnd ) ) showCursor ( guiGetVisible ( wnd ) ) end end end end ) disableMarkerHitHighet(m1,'onClientMarkerHit') وفي الختام اتمنى اكون افدتكم ويكون مفيد للجميع بالتوفيق للجميع 2 Link to comment
Doffy Posted July 1, 2017 Share Posted July 1, 2017 9 hours ago, Master_MTA said: السلام عليكم ورحمة الله وبركاته من غير ما اطول عليكم اليوم جبتلكم كود مرغوب طبعا هو مشترك ما بين سيرفر وكلينت تمام وش وظيفة الفنكشن الفنكشن يعطل اي فنكشن مضاف للماركر وانت مار عليه بجيت باك من فوق مثلا كيف يعني ما فهمت شوف يقلبي يعني انت مسوي ماركر ومسوي لوحة بغيت اول ما يلمس الماركر يفتح اللوحه تمام لكن في مشكله لو انت سويت ماركر من نوع cylinder وجيت تمر من فوق الماركر بتصير اللوحه تفتح وبكذا بيكون عندك مشكله افرض انت مسوي ماركرين فوق بعض بتصير مشكله لو انت مسوي الماركرين يفتحو لوحتين راح تفتح اللوحتين فوظيفة ذا الفنكشن تلغي الارتفاع الزائد يعني ما تفعل الكلام ذا فقط ارتفاع 2 زياده فوق ارتفاع الماركر اللي بتفتح له تمام نشوف طولت عليكم اسف نجي نشوف السورس كود function disableMarkerHitHighet(themarker,evname,tt) if getElementType(themarker)=='marker' and type(evname)=='string' then local x,y,z=getElementPosition(themarker) local ta={} if #getEventHandlers( evname, themarker )==0 then return end for k,v in ipairs(getEventHandlers( evname, themarker ))do removeEventHandler(evname, themarker, v) table.insert(ta,v) end if tt then addEventHandler(evname,themarker,function(plr,dim) if dim then local xp,yp,zp=getElementPosition(plr) if zp<=z+2 then for k,v in ipairs(ta)do v(plr,dim) end end end end) else addEventHandler(evname,themarker,function(plr) local xp,yp,zp=getElementPosition(plr) if zp<=z+2 then for k,v in ipairs(ta)do v(plr) end end end) end end end نجي للارقمنتات الحين وطريقة الاستخدام disableMarkerHitHighet(element marker,string event,bolean state) طيب بسم الله marker:الماركر اللي تبي تنفذ عليه الوظيفه او الخاصيه ذي event:اسم الايفينت وهو يمكن ان يكون 4 اولا بالكلنت سايد onClientMarkerHit onClientMarkerLeave ------------------------سيرفر سايد onMarkerHit onMarkerLeave -----------------ارقمنت اختياري state:يمكن ان تكون قيمتين true----لو في نفس العالم false-----لو مو في نفس العالم وتقدر تخليها ما منها فاظيه هي القيمه اصلا false طيب state هذي تحقق لو الالمنت اللي لمس الماركر او تركه في نفس العالم اللي فيه الماركر ملااااااااحظه مهمة الخاصية بتزبط لو انت مسوي الحدث حق الماركر كالاتي مثلا m1 = createMarker ( 2487.7041015625, -1665.9248046875, 12.34375, "cylinder", 1.5, 215, 215, 255 ) addEventHandler('onClientMarkerHit',m1,function ( hitPlayer ) if ( hitPlayer == localPlayer ) then if ( source == m1 ) then guiSetVisible ( wnd, not guiGetVisible ( wnd ) ) showCursor ( guiGetVisible ( wnd ) ) end end end ) disableMarkerHitHighet(m1,'onClientMarkerHit') اما كذا فما بتزبط m1 = createMarker ( 2487.7041015625, -1665.9248046875, 12.34375, "cylinder", 1.5, 215, 215, 255 ) addEventHandler('onClientMarkerHit',root,function ( hitPlayer ) if source==m1 then if ( hitPlayer == localPlayer ) then if ( source == m1 ) then guiSetVisible ( wnd, not guiGetVisible ( wnd ) ) showCursor ( guiGetVisible ( wnd ) ) end end end end ) disableMarkerHitHighet(m1,'onClientMarkerHit') وفي الختام اتمنى اكون افدتكم ويكون مفيد للجميع بالتوفيق للجميع واصل لا توقف شروحات 1 Link to comment
Master_MTA Posted July 1, 2017 Share Posted July 1, 2017 Just now, #Himoo said: واصل لا توقف شروحات حبيب قلبي +_+ Link to comment
iMr.Omar Posted July 2, 2017 Share Posted July 2, 2017 @Master_MTA الوظيفة حلوة وأهنيك بس كأن يمديك تختصرها بأحسن من كذا Link to comment
Master_MTA Posted July 2, 2017 Share Posted July 2, 2017 8 hours ago, iMr.Omar said: @Master_MTA الوظيفة حلوة وأهنيك بس كأن يمديك تختصرها بأحسن من كذا منك نستفيد ممكن تقولي كيف نختصرها ازيد من كذا انا حاولت اختصرها مع اكبر كمية ارقمنتات ممكنه وكنت اقدر ازيد الارقمنتات لكن بيكون السورس كود اكبر فلو كان عندك طريقه يا ليت تشاركنا بها لان ذي من وجهة نظري اقصصر طريقه ممكنه Link to comment
Rockyz Posted July 3, 2017 Share Posted July 3, 2017 (edited) بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته getElementsFromModel Source Code : --# Client Side : getElementsFromModel = function ( aztype, modelnumber, atype ) assert ( type ( aztype ) == "string", "Bad Argument @ 'ElementType' [ Expected string at argument 1, got " .. type ( aztype ) .. " ]" ) assert ( type ( modelnumber ) == "number", "Bad Argument @ 'ModelNumber' [ Expected number at argument 2, got " .. type ( modelnumber ) .. " ]" ) SkinsPlayer = { }; for index, value in ipairs ( getElementsByType ( aztype ) ) do if ( getElementModel ( value ) == modelnumber and getElementType ( value ) == "player" ) then if ( atype == "name" and atype ~= "account" ) then table.insert ( SkinsPlayer, getPlayerName ( value ) ); assert ( type ( atype ) == "string", "Bad Argument @ 'argumentType' [ Expected string at argument 3, got " .. type ( atype ) .. " ]" ) else if ( atype ~= "name" and atype == "account" ) then table.insert ( SkinsPlayer, getElementData ( value, "accname" ) or "N/A" ); assert ( type ( atype ) == "string", "Bad Argument @ 'argumentType' [ Expected string at argument 3, got " .. type ( atype ) .. " ]" ) end; end; end; if ( getElementModel ( value ) == modelnumber ) then if ( getElementType ( value ) ~= "player" ) then table.insert ( SkinsPlayer, value ); end; end; end; return SkinsPlayer or false; end; --# Server Side : addEventHandler ( "onPlayerLogin", root, function ( _, acc ) if ( acc ) then setElementData ( source, "accname", getAccountName ( acc ) ) end end ) addEventHandler ( "onResourceStart", root, function ( ) for i, v in ipairs ( getElementsByType ( "player" ) ) do acc = getPlayerAccount ( v ) if ( acc ) then setElementData ( v, "accname", getAccountName ( acc ) ) end end end ) الوظيفة تقوم بأسترجاع اسم الاعبين عن طريق سكن محدد وبعد التعديل ع الكود يمكنك استرجاع اسم الاعب او اسم حساب الاعب ويمكنك استرجاع اي المنت Syntax : element ( element ElementType , element modelnumber, [ string argumentType ] ) Example : addCommandHandler ( "pSkin" , function ( cmd, skinnumber, aatype ) if ( aatype == "name" ) then pSkins = getElementsFromModel ( "player", tonumber ( skinnumber ), "name" ); outputChatBox ( " * Players that have skin " .. skinnumber .. " :" ); for i = 1, #pSkins do outputChatBox ( "Player Name : " .. pSkins [ i ] or "N/A" ); end else if ( aatype == "account" ) then pSkins = getElementsFromModel ( "player", tonumber ( skinnumber ), "account" ); outputChatBox ( " * Players that have skin " .. skinnumber .. " :" ); for i = 1, #pSkins do outputChatBox ( "Player Account : " .. pSkins [ i ] ); end; end; end; end ); هذا المثال عندما تكتب pSkin رقم السكن, نوع الارقمنت طبعا الارقمنت له نوعين الي هو يجيب اسم حساب الاعب او يجيب اسم الاعب نفسه Example2 : addCommandHandler ( "pVeh", function ( cmd, vehiclenumber ) pVeh = getElementsFromModel ( "vehicle", tonumber ( vehiclenumber ) ); outputChatBox ( #pVeh ); end ); طبعا زي مانشوف الارقمنت الثالث غير مهم اذا تبي تجيب المنت غير لاعب ولكن الارقمنت الثالث مهم عندما تبي تجيب لاعب Edited July 4, 2017 by !#NssoR_) Modified as requested. Link to comment
iMr.WiFi..! Posted July 3, 2017 Share Posted July 3, 2017 2 hours ago, #,+( _xiRoc[K]; > said: بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته getPlayersFromSkins Source Code : getPlayersFromSkins = function ( skinmodel ) SkinsPlayer = { }; for index, value in ipairs ( getElementsByType ( "player" ) ) do if ( getElementModel ( value ) == skinmodel ) then table.insert ( SkinsPlayer, getPlayerName ( value ) ); end; end; return SkinsPlayer; end; الوظيفة تقوم بأسترجاع اسم الاعبين عن طريق سكن محدد Syntax : int getPlayersFromSkins ( element theElement ) Example : addCommandHandler ( "pSkin" , function ( ) pSkins = ( getPlayersFromSkins ( 0 ) ); outputChatBox ( " * Players that have skin 0 : " ); for i = 1, #pSkins do outputChatBox ( "Player Name : " .. pSkins [ i ] ); end; end ); طبعا الوضيفة مادري اذا مفيدة ولا لا بس جت في بالي الفكرة وسويتها وقلت انشرها وظيفة جميلة لكن بها أخطاء .. الأول السينتاكس خاطئ المفروض تحط intبمكان الـ element theElementوتحط بدل الـ skinModel + الخطأ الثاني بالمثال في السطر الثاني امسح القوسين وفي السطر الخامس المفروض تسوي getPlayerName Link to comment
Abdul KariM Posted July 3, 2017 Share Posted July 3, 2017 (edited) @iMr.WiFi..! getPlayerName مايحتاج يحط لانه اساسا حاط اسماء الاعبين بالتيبل وعندي تعديل للوظيفة بحيث تكون مفيدة اكثر function getElementsFromModel( element , id ) assert ( type ( element ) == "string" ,"Bad Argument At Argument #2 id Moust String" ) assert ( type ( id ) == "number" ,"Bad Argument At Argument #2 id Moust Number" ) if ( #getElementsByType ( element ) == 0 ) then error ( "Bad Argument At Argument #1 element not found" ) return false end local aTable = { }; for index, value in ipairs ( getElementsByType ( element ) ) do if ( getElementModel ( value ) == id ) then table.insert ( aTable , value ) end end return aTable or false end Syntax : table getElementsFromModel ( string element , int id ) ex outputChatBox ( #getElementsFromModel ( "vehicle" , 475 ) ) Edited July 3, 2017 by Abdul KariM Link to comment
iMr.WiFi..! Posted July 3, 2017 Share Posted July 3, 2017 10 minutes ago, Abdul KariM said: @iMr.WiFi..! getPlayerName مايحتاج يحط لانه اساسا حاط اسماء الاعبين بالتيبل وعندي تعديل للوظيفة بحيث تكون مفيدة اكثر function getElementsFromModel( element , id ) assert ( type ( element ) == "string" ,"Bad Argument At Argument #2 id Moust String" ) assert ( type ( id ) == "number" ,"Bad Argument At Argument #2 id Moust Number" ) if ( #getElementsByType ( element ) == 0 ) then error ( "Bad Argument At Argument #1 element not found" ) return false end local aTable = { }; for index, value in ipairs ( getElementsByType ( element ) ) do if ( getElementModel ( value ) == id ) then table.insert ( aTable , value ) end end return aTable or false end Syntax : table getElementsFromModel ( string element , int id ) ex outputChatBox ( #getElementsFromModel ( "vehicle" , 475 ) ) انا حطيت الي شفته من اسم الفنكشن لاني ماراجعت السورس كود بالكامل Link to comment
Rockyz Posted July 3, 2017 Share Posted July 3, 2017 (edited) 31 minutes ago, Abdul KariM said: @iMr.WiFi..! getPlayerName مايحتاج يحط لانه اساسا حاط اسماء الاعبين بالتيبل وعندي تعديل للوظيفة بحيث تكون مفيدة اكثر function getElementsFromModel( element , id ) assert ( type ( element ) == "string" ,"Bad Argument At Argument #2 id Moust String" ) assert ( type ( id ) == "number" ,"Bad Argument At Argument #2 id Moust Number" ) if ( #getElementsByType ( element ) == 0 ) then error ( "Bad Argument At Argument #1 element not found" ) return false end local aTable = { }; for index, value in ipairs ( getElementsByType ( element ) ) do if ( getElementModel ( value ) == id ) then table.insert ( aTable , value ) end end return aTable or false end Syntax : table getElementsFromModel ( string element , int id ) ex outputChatBox ( #getElementsFromModel ( "vehicle" , 475 ) ) شكرا ع مشاركتك لكني اصلا ماكملت الفنكشن كنت يعني بحط اضافات اكثر وبعد الاخطاء + الفنكشن حقك فكرته غير الي هو يجيب العدد للاشياء الموجودة وانا الفنكشن حقي يجيب اسماء الاشخاص الي عندهم السكن Edited July 3, 2017 by #,+( _xiRoc[K]; > Link to comment
iMr.WiFi..! Posted July 3, 2017 Share Posted July 3, 2017 23 minutes ago, #,+( _xiRoc[K]; > said: شكرا ع مشاركتك لكني اصلا ماكملت الفنكشن كنت يعني بحط اضافات اكثر وبعد الاخطاء + الفنكشن حقك فكرته غير الي هو يجيب العدد للاشياء الموجودة وانا الفنكشن حقي يجيب اسماء الاشخاص الي عندهم السكن ي حبي .. هو مسوي مثال ,, لأن هو مسترجع القيمة تيبل في الفنكشن وجاب كمية التيبل عشان كذا ولا انت تقدر تخليه يجيب اسم السيارة مثلاً او اللاعب واشياء اخرى يعني لو تبي تفهم وش الفرق بين كوده وكودك زي الفرق بين هالفنكشنين setPedSkin setElementModel ^ فهمت الفرق الحين اتوقع واذا مافهمت باختصار هو تقدر تخليه لجميع الالمنتات Link to comment
Rockyz Posted July 3, 2017 Share Posted July 3, 2017 (edited) بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته getElementsFromModel Source Code : --# Client Side : getElementsFromModel = function ( aztype, modelnumber, atype ) assert ( type ( aztype ) == "string", "Bad Argument @ 'ElementType' [ Expected string at argument 1, got " .. type ( aztype ) .. " ]" ) assert ( type ( modelnumber ) == "number", "Bad Argument @ 'ModelNumber' [ Expected number at argument 2, got " .. type ( modelnumber ) .. " ]" ) SkinsPlayer = { }; for index, value in ipairs ( getElementsByType ( aztype ) ) do if ( getElementModel ( value ) == modelnumber and getElementType ( value ) == "player" ) then if ( atype == "name" and atype ~= "account" ) then table.insert ( SkinsPlayer, getPlayerName ( value ) ); assert ( type ( atype ) == "string", "Bad Argument @ 'argumentType' [ Expected string at argument 3, got " .. type ( atype ) .. " ]" ) else if ( atype ~= "name" and atype == "account" ) then table.insert ( SkinsPlayer, getElementData ( value, "accname" ) or "N/A" ); assert ( type ( atype ) == "string", "Bad Argument @ 'argumentType' [ Expected string at argument 3, got " .. type ( atype ) .. " ]" ) end; end; end; if ( getElementModel ( value ) == modelnumber ) then if ( getElementType ( value ) ~= "player" ) then table.insert ( SkinsPlayer, value ); end; end; end; return SkinsPlayer or false; end; --# Server Side : addEventHandler ( "onPlayerLogin", root, function ( _, acc ) if ( acc ) then setElementData ( source, "accname", getAccountName ( acc ) ) end end ) addEventHandler ( "onResourceStart", root, function ( ) for i, v in ipairs ( getElementsByType ( "player" ) ) do acc = getPlayerAccount ( v ) if ( acc ) then setElementData ( v, "accname", getAccountName ( acc ) ) end end end ) الوظيفة تقوم بأسترجاع اسم الاعبين عن طريق سكن محدد وبعد التعديل ع الكود يمكنك استرجاع اسم الاعب او اسم حساب الاعب ويمكنك استرجاع اي المنت Syntax : element ( element ElementType , element modelnumber, [ string argumentType ] ) Example : addCommandHandler ( "pSkin" , function ( cmd, skinnumber, aatype ) if ( aatype == "name" ) then pSkins = getElementsFromModel ( "player", tonumber ( skinnumber ), "name" ); outputChatBox ( " * Players that have skin " .. skinnumber .. " :" ); for i = 1, #pSkins do outputChatBox ( "Player Name : " .. pSkins [ i ] or "N/A" ); end else if ( aatype == "account" ) then pSkins = getElementsFromModel ( "player", tonumber ( skinnumber ), "account" ); outputChatBox ( " * Players that have skin " .. skinnumber .. " :" ); for i = 1, #pSkins do outputChatBox ( "Player Account : " .. pSkins [ i ] ); end; end; end; end ); هذا المثال عندما تكتب pSkin رقم السكن, نوع الارقمنت طبعا الارقمنت له نوعين الي هو يجيب اسم حساب الاعب او يجيب اسم الاعب نفسه Example2 : addCommandHandler ( "pVeh", function ( cmd, vehiclenumber ) pVeh = getElementsFromModel ( "vehicle", tonumber ( vehiclenumber ) ); outputChatBox ( #pVeh ); end ); طبعا زي مانشوف الارقمنت الثالث غير مهم اذا تبي تجيب المنت غير لاعب ولكن الارقمنت الثالث مهم عندما تبي تجيب لاعب @!#NssoR_) ممكن تعدل ع ردي السابق بهذا Edited July 4, 2017 by !#NssoR_) Modifed as requested. Link to comment
Abdul KariM Posted July 3, 2017 Share Posted July 3, 2017 @#,+( _xiRoc[K]; > والله كذا ماله فائدة الوظيفة الي حطيتها لها فائدة تقدر تجيب الموديل حق الاعب او السيارة او اي المنت لكن وش الفائدة من انك تحط اسماء الاعبين او حساباتهم Link to comment
Rockyz Posted July 3, 2017 Share Posted July 3, 2017 (edited) 6 minutes ago, Abdul KariM said: @#,+( _xiRoc[K]; > والله كذا ماله فائدة الوظيفة الي حطيتها لها فائدة تقدر تجيب الموديل حق الاعب او السيارة او اي المنت لكن وش الفائدة من انك تحط اسماء الاعبين او حساباتهم عدلته بحيث انه يقدر يطلع السيارة او السكن او اي المنت الي عند الشخص Edited July 3, 2017 by #,+( _xiRoc[K]; > Link to comment
Abdul KariM Posted July 3, 2017 Share Posted July 3, 2017 الافضل انه يرجع بالالمنت نفسه عشان تقدر تتحكم فيه بكل شي سواء تبي تجيب اسم السيارة او اسم حسابه او الى اخره Link to comment
Rockyz Posted July 4, 2017 Share Posted July 4, 2017 13 hours ago, Abdul KariM said: الافضل انه يرجع بالالمنت نفسه عشان تقدر تتحكم فيه بكل شي سواء تبي تجيب اسم السيارة او اسم حسابه او الى اخره انا عدلت كم تعديل اصلا امس لكن مايصير اعدل ع البوست #Edit: 18 hours ago, #,+( _xiRoc[K]; > said: بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته getElementsFromModel Source Code : --# Client Side : getElementsFromModel = function ( aztype, modelnumber, atype ) assert ( type ( aztype ) == "string", "Bad Argument @ 'ElementType' [ Expected string at argument 1, got " .. type ( aztype ) .. " ]" ) assert ( type ( modelnumber ) == "number", "Bad Argument @ 'ModelNumber' [ Expected number at argument 2, got " .. type ( modelnumber ) .. " ]" ) SkinsPlayer = { }; for index, value in ipairs ( getElementsByType ( aztype ) ) do if ( getElementModel ( value ) == modelnumber and getElementType ( value ) == "player" ) then if ( atype == "name" and atype ~= "account" ) then table.insert ( SkinsPlayer, getPlayerName ( value ) ); assert ( type ( atype ) == "string", "Bad Argument @ 'argumentType' [ Expected string at argument 3, got " .. type ( atype ) .. " ]" ) else if ( atype ~= "name" and atype == "account" ) then table.insert ( SkinsPlayer, getElementData ( value, "accname" ) or "N/A" ); assert ( type ( atype ) == "string", "Bad Argument @ 'argumentType' [ Expected string at argument 3, got " .. type ( atype ) .. " ]" ) end; end; end; if ( getElementModel ( value ) == modelnumber ) then if ( getElementType ( value ) ~= "player" ) then table.insert ( SkinsPlayer, value ); end; end; end; return SkinsPlayer or false; end; --# Server Side : addEventHandler ( "onPlayerLogin", root, function ( _, acc ) if ( acc ) then setElementData ( source, "accname", getAccountName ( acc ) ) end end ) addEventHandler ( "onResourceStart", root, function ( ) for i, v in ipairs ( getElementsByType ( "player" ) ) do acc = getPlayerAccount ( v ) if ( acc ) then setElementData ( v, "accname", getAccountName ( acc ) ) end end end ) الوظيفة تقوم بأسترجاع اسم الاعبين عن طريق سكن محدد وبعد التعديل ع الكود يمكنك استرجاع اسم الاعب او اسم حساب الاعب ويمكنك استرجاع اي المنت Syntax : element ( element ElementType , element modelnumber, [ string argumentType ] ) Example : addCommandHandler ( "pSkin" , function ( cmd, skinnumber, aatype ) if ( aatype == "name" ) then pSkins = getElementsFromModel ( "player", tonumber ( skinnumber ), "name" ); outputChatBox ( " * Players that have skin " .. skinnumber .. " :" ); for i = 1, #pSkins do outputChatBox ( "Player Name : " .. pSkins [ i ] or "N/A" ); end else if ( aatype == "account" ) then pSkins = getElementsFromModel ( "player", tonumber ( skinnumber ), "account" ); outputChatBox ( " * Players that have skin " .. skinnumber .. " :" ); for i = 1, #pSkins do outputChatBox ( "Player Account : " .. pSkins [ i ] ); end; end; end; end ); هذا المثال عندما تكتب pSkin رقم السكن, نوع الارقمنت طبعا الارقمنت له نوعين الي هو يجيب اسم حساب الاعب او يجيب اسم الاعب نفسه Example2 : addCommandHandler ( "pVeh", function ( cmd, vehiclenumber ) pVeh = getElementsFromModel ( "vehicle", tonumber ( vehiclenumber ) ); outputChatBox ( #pVeh ); end ); طبعا زي مانشوف الارقمنت الثالث غير مهم اذا تبي تجيب المنت غير لاعب ولكن الارقمنت الثالث مهم عندما تبي تجيب لاعب #Updated تم تحديث الوظيفة + مثال ثالث للي مافهم addCommandHandler ( "pVeh1", function ( cmd, vehiclenumber ) pVeh1 = getElementsFromModel ( "vehicle", tonumber ( vehiclenumber ) ); outputChatBox ( "Vehicles That Have ID " .. vehiclenumber .. " is :") for i = 1, #pVeh1 do outputChatBox ( "VehicleName : " .. getVehicleName ( pVeh1 [ i ] ) .. ", Vehicle Position : " .. table.concat ( { getElementPosition ( pVeh1 [ i ] ) }, ", " ) ); end; end ); هذا المثال اذا تكتب في اف 8 مثلا pVeh1 429 راح يعطيك اسم السيارة و احداثياتها Link to comment
Master_MTA Posted July 27, 2017 Share Posted July 27, 2017 تم تقليص حجم الفنكشن وتحديثه ليدعم جميع انواع الماركرات function Name: disableMarkerHitHighet function Type: Shared Work With: يعمل مع جميع انواع الماركرات بعد التحديث Note: الفنكشن لن يعمل الا اذا وضعته بعد الايفينت اللذي اضفته للماركر الفنكشن لن يعمل الا اذا كان الايفينت مخصص للماركر فقط وليسroot function Syntax: disableMarkerHitHighet(element Marker,string EventName,int high,bolean dim) Required Arguments: Marker=الماركر اللي تبي تسوي التاثير عليه EventName='onClientMarkerHit'او'onMarkerHit'او'onClientMarkerLeave'او'onMarkerLeave' high=اقصى ارتفاع عن ارتفاع الماركر تبي يتنفذ الفنكشن حقك عليه Optional Arguments: dim=تبي يتحقق من العالم لما اللاعب يسوي الايفينت اللي محدده انت للماركر true للتحقق من العالم flase لعدم التحقق وهي القيمة الافتراضية function Source Code: function disableMarkerHitHighet(themarker,evname,high,tt) assert ( type ( evname ) == "string", "Bad Argument @ 'EventName' [ Expected string at argument 2, got " .. type ( evname ) .. " ]" ) local ta,x,y,z={},getElementPosition(themarker) if #getEventHandlers( evname, themarker )==0 then error('No functions Handlers for this marker') return end for k,v in ipairs(getEventHandlers( evname, themarker ))do removeEventHandler(evname, themarker, v) table.insert(ta,v) end local tt=tt or false addEventHandler(evname,themarker,function(plr,dim) if dim==tt or (tt==false and dim==true) then local xp,yp,zp=getElementPosition(plr) if zp<=z+high then for k,v in ipairs(ta)do v(plr,dim) end end end end) end Exampels : GUIEditor = { window = {} } addEventHandler("onClientResourceStart", resourceRoot, function() local screenW, screenH = guiGetScreenSize() GUIEditor.window[1] = guiCreateWindow((screenW - 264) / 2, (screenH - 280) / 2, 264, 280, "", false) guiWindowSetSizable(GUIEditor.window[1], false) guiSetVisible(GUIEditor.window[1], false) end ) local marker=createMarker(2492.41797, -1674.13867, 13.3359-1,'checkpoint',1.5,0,0,0,255) addEventHandler('onClientMarkerHit',marker,function() guiSetVisible(GUIEditor.window[1],not guiGetVisible(GUIEditor.window[1])) end) disableMarkerHitHighet(marker,'onClientMarkerHit',2,true) Wrong Exampels: GUIEditor = { window = {} } addEventHandler("onClientResourceStart", resourceRoot, function() local screenW, screenH = guiGetScreenSize() GUIEditor.window[1] = guiCreateWindow((screenW - 264) / 2, (screenH - 280) / 2, 264, 280, "", false) guiWindowSetSizable(GUIEditor.window[1], false) guiSetVisible(GUIEditor.window[1], false) end ) local marker=createMarker(2492.41797, -1674.13867, 13.3359-1,'checkpoint',1.5,0,0,0,255) disableMarkerHitHighet(marker,'onClientMarkerHit',2,true) addEventHandler('onClientMarkerHit',marker,function() guiSetVisible(GUIEditor.window[1],not guiGetVisible(GUIEditor.window[1])) end) GUIEditor = { window = {} } addEventHandler("onClientResourceStart", resourceRoot, function() local screenW, screenH = guiGetScreenSize() GUIEditor.window[1] = guiCreateWindow((screenW - 264) / 2, (screenH - 280) / 2, 264, 280, "", false) guiWindowSetSizable(GUIEditor.window[1], false) guiSetVisible(GUIEditor.window[1], false) end ) local marker=createMarker(2492.41797, -1674.13867, 13.3359-1,'checkpoint',1.5,0,0,0,255) addEventHandler('onClientMarkerHit',root,function() if source==marker then guiSetVisible(GUIEditor.window[1],not guiGetVisible(GUIEditor.window[1])) end end) disableMarkerHitHighet(marker,'onClientMarkerHit',2,true) Link to comment
Rockyz Posted July 28, 2017 Share Posted July 28, 2017 (edited) On 4/24/2014 at 20:37, Booo said: بسم الله الرحمن الرحيم changeGridlistToNameVehicle وظيفه تحول القريد لست الى اسامي السيارات vehicleIDS = { 602, 545, 496, 517, 401, 410, 518, 600, 527, 436, 589, 580, 419, 439, 533, 549, 526, 491, 474, 445, 467, 604, 426, 507, 547, 585, 405, 587, 409, 466, 550, 492, 566, 546, 540, 551, 421, 516, 529, 592, 553, 577, 488, 511, 497, 548, 563, 512, 476, 593, 447, 425, 519, 520, 460, 417, 469, 487, 513, 581, 510, 509, 522, 481, 461, 462, 448, 521, 468, 463, 586, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454, 485, 552, 431, 438, 437, 574, 420, 525, 408, 416, 596, 433, 597, 427, 599, 490, 432, 528, 601, 407, 428, 544, 523, 470, 598, 499, 588, 609, 403, 498, 514, 524, 423, 532, 414, 578, 443, 486, 515, 406, 531, 573, 456, 455, 459, 543, 422, 583, 482, 478, 605, 554, 530, 418, 572, 582, 413, 440, 536, 575, 534, 567, 535, 576, 412, 402, 542, 603, 475, 449, 537, 538, 441, 464, 501, 465, 564, 568, 557, 424, 471, 504, 495, 457, 539, 483, 508, 571, 500, 444, 556, 429, 411, 541, 559, 415, 561, 480, 560, 562, 506, 565, 451, 434, 558, 494, 555, 502, 477, 503, 579, 400, 404, 489, 505, 479, 442, 458, 606, 607, 610, 590, 569, 611, 584, 608, 435, 450, 591, 594 } function changeGridlistToNameVehicle(gridlist,col) if not col then col = 1 end if gridlist then if getElementType ( GridList ) == "gui-gridlist" then guiGridListClear (gridlist) for k, v in pairs(vehicleIDS) do if getVehicleNameFromModel(v) ~= "" or nil then guiGridListSetItemText (gridlist,guiGridListAddRow (gridlist),col,getVehicleNameFromModel(v), false, false ) end end end end end مثآل vehicleIDS = { 602, 545, 496, 517, 401, 410, 518, 600, 527, 436, 589, 580, 419, 439, 533, 549, 526, 491, 474, 445, 467, 604, 426, 507, 547, 585, 405, 587, 409, 466, 550, 492, 566, 546, 540, 551, 421, 516, 529, 592, 553, 577, 488, 511, 497, 548, 563, 512, 476, 593, 447, 425, 519, 520, 460, 417, 469, 487, 513, 581, 510, 509, 522, 481, 461, 462, 448, 521, 468, 463, 586, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454, 485, 552, 431, 438, 437, 574, 420, 525, 408, 416, 596, 433, 597, 427, 599, 490, 432, 528, 601, 407, 428, 544, 523, 470, 598, 499, 588, 609, 403, 498, 514, 524, 423, 532, 414, 578, 443, 486, 515, 406, 531, 573, 456, 455, 459, 543, 422, 583, 482, 478, 605, 554, 530, 418, 572, 582, 413, 440, 536, 575, 534, 567, 535, 576, 412, 402, 542, 603, 475, 449, 537, 538, 441, 464, 501, 465, 564, 568, 557, 424, 471, 504, 495, 457, 539, 483, 508, 571, 500, 444, 556, 429, 411, 541, 559, 415, 561, 480, 560, 562, 506, 565, 451, 434, 558, 494, 555, 502, 477, 503, 579, 400, 404, 489, 505, 479, 442, 458, 606, 607, 610, 590, 569, 611, 584, 608, 435, 450, 591, 594 } function changeGridlistToNameVehicle(gridlist,col) if not col then col = 1 end if gridlist then if getElementType ( GridList ) == "gui-gridlist" then guiGridListClear (gridlist) for k, v in pairs(vehicleIDS) do if getVehicleNameFromModel(v) ~= "" or nil then guiGridListSetItemText (gridlist,guiGridListAddRow (gridlist),col,getVehicleNameFromModel(v), false, false ) end end end end end addEventHandler( "onClientResourceStart",resourceRoot, function ( ) local carsList = guiCreateGridList ( 0.80, 0.10, 0.15, 0.60, true ) local column = guiGridListAddColumn(carsList, "cars", 0.85 ) changeGridlistToNameVehicle(carsList) end ) - ادري فنكشن قديم لكن للي يبي يختصره كذا : function changeGridlistToVehicleNames ( gridlist, columnnum ) if not ( columnnum or not tonumber ( columnnum ) ) then columnnum = 1 end if ( gridlist ) then if ( getElementType ( gridlist ) == "gui-gridlist" ) then guiGridListClear ( gridlist ) for i = 411, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then guiGridListSetItemText ( gridlist, guiGridListAddRow ( gridlist ), columnnum, getVehicleNameFromModel ( i ), false, false ) end end end end end الساينتكس : changeGridlistToVehicleNames ( element gridList [ , int columnIndex ] ) gridList = القريد ليست columnIndex = الكولمن اذا ماحطيت كولمن او حطيت الكولمن سترنق تلقائي الكولمن بيكون 1 Edited July 28, 2017 by #,+( _xiRoc[K]; > Link to comment
Rockyz Posted July 28, 2017 Share Posted July 28, 2017 1 hour ago, #,+( _xiRoc[K]; > said: ادري فنكشن قديم لكن للي يبي يختصره كذا : function changeGridlistToVehicleNames ( gridlist, columnnum ) if not ( columnnum or not tonumber ( columnnum ) ) then columnnum = 1 end if ( gridlist ) then if ( getElementType ( gridlist ) == "gui-gridlist" ) then guiGridListClear ( gridlist ) for i = 411, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then guiGridListSetItemText ( gridlist, guiGridListAddRow ( gridlist ), columnnum, getVehicleNameFromModel ( i ), false, false ) end end end end end الساينتكس : changeGridlistToVehicleNames ( element gridList [ , int columnIndex ] ) gridList = القريد ليست columnIndex = الكولمن اذا ماحطيت كولمن او حطيت الكولمن سترنق تلقائي الكولمن بيكون 1 تصحيح بسيط للكود الي فوق ^ function changeGridlistToVehicleNames ( gridlist, columnnum ) if not ( columnnum ) then columnnum = 1 end if not ( tonumber ( columnnum ) ) then columnnum = 1 end if ( gridlist ) then if ( getElementType ( gridlist ) == "gui-gridlist" ) then guiGridListClear ( gridlist ) for i = 411, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then guiGridListSetItemText ( gridlist, guiGridListAddRow ( gridlist ), columnnum, getVehicleNameFromModel ( i ), false, false ) end end end end end ______________________________________________________________________________________________________________________________________________ #edit : changeGridlistToVehicleNamesAndIds الوضيفة زي الي فوق بس مع تعديلات بسيطة Source Code : function changeGridlistToVehicleNamesAndIds ( gridlist, sort, columnnum, columnnuma, AZ ) local vehsTable = { }; if not ( columnnum ) then columnnum = 1 end; if not ( columnnuma ) then columnnuma = 2 end; if not ( AZ ) then AZ = "AZ" end; if ( gridlist and tostring ( sort ) and tostring ( AZ ) ) then if ( getElementType ( gridlist ) == "gui-gridlist" ) then guiGridListClear ( gridlist ); for i = 411, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then table.insert ( vehsTable, { vehName = getVehicleNameFromModel ( i ), vehID = i } ); end; end; if ( sort == "ID" ) then if ( AZ == "ZA" ) then table.sort ( vehsTable, function ( a, b ) return tonumber ( a["vehID"] ) > tonumber ( b["vehID"] ) end ); else if ( AZ == "AZ" ) then table.sort ( vehsTable, function ( a, b ) return tonumber ( a["vehID"] ) < tonumber ( b["vehID"] ) end ); end; end; else if ( sort == "Name" ) then if ( AZ == "ZA" ) then table.sort ( vehsTable, function ( a, b ) return a["vehName"] > b["vehName"] end ); else if ( AZ == "AZ" ) then table.sort ( vehsTable, function ( a, b ) return a["vehName"] < b["vehName"] end ); end; end; end; end; for _, v in ipairs ( vehsTable ) do row = guiGridListAddRow ( gridlist ) guiGridListSetItemText ( gridlist, row, columnnum, v["vehName"], false, false ); guiGridListSetItemText ( gridlist, row, columnnuma, tostring ( v["vehID"] ), false, false ); end end; end; end; Syntax : changeGridlistToVehicleNamesAndIds ( element gridList, string sortType [ , int VehicleName columnIndex, int VehicleID columnIndex, string sortAZ ] ) Required Arguments : gridList: القريد ليست sortType: طريقة الترتيب يا بالايدي او بالاسم ( الايدي = "ID",,,, الاسم = "Name" ) Optional Arguments : VehicleName columnIndex : كولمن اسم السيارة ( اذا تركته فاضي بيكون الكولمن 1)ء VehicleID columnIndex : كولمن ايدي السيارة ( اذا تركته فاضي بيكون الكولمن 2 )ء sortAZ : طريقة الترتيب يا "AZ" او "ZA" Example : addEventHandler ( 'onClientResourceStart', root, function ( ) local screenW, screenH = guiGetScreenSize ( ) wnd = guiCreateWindow((screenW - 426) / 2, (screenH - 367) / 2, 426, 367, "EXAMPLE", false) guiWindowSetSizable(wnd, false) guiSetAlpha(wnd, 1.00) guiSetVisible ( wnd, false ) Grid = guiCreateGridList(22, 40, 373, 292, false, wnd) guiGridListAddColumn(Grid, "#Vehicle name", 0.5) guiGridListAddColumn(Grid, "#Vehicle ID", 0.5) changeGridlistToVehicleNamesAndIds ( Grid, "Name", 1, 2, "AZ" ) end ) bindKey ( 'F7', "down", function ( ) guiSetVisible ( wnd, not guiGetVisible ( wnd ) ) showCursor ( guiGetVisible ( wnd ) ) end ) function changeGridlistToVehicleNamesAndIds ( gridlist, sort, columnnum, columnnuma, AZ ) local vehsTable = { }; if not ( columnnum ) then columnnum = 1 end; if not ( columnnuma ) then columnnuma = 2 end; if not ( AZ ) then AZ = "AZ" end; if ( gridlist and tostring ( sort ) and tostring ( AZ ) ) then if ( getElementType ( gridlist ) == "gui-gridlist" ) then guiGridListClear ( gridlist ); for i = 411, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then table.insert ( vehsTable, { vehName = getVehicleNameFromModel ( i ), vehID = i } ); end; end; if ( sort == "ID" ) then if ( AZ == "ZA" ) then table.sort ( vehsTable, function ( a, b ) return tonumber ( a["vehID"] ) > tonumber ( b["vehID"] ) end ); else if ( AZ == "AZ" ) then table.sort ( vehsTable, function ( a, b ) return tonumber ( a["vehID"] ) < tonumber ( b["vehID"] ) end ); end; end; else if ( sort == "Name" ) then if ( AZ == "ZA" ) then table.sort ( vehsTable, function ( a, b ) return a["vehName"] > b["vehName"] end ); else if ( AZ == "AZ" ) then table.sort ( vehsTable, function ( a, b ) return a["vehName"] < b["vehName"] end ); end; end; end; end; for _, v in ipairs ( vehsTable ) do row = guiGridListAddRow ( gridlist ) guiGridListSetItemText ( gridlist, row, columnnum, v["vehName"], false, false ); guiGridListSetItemText ( gridlist, row, columnnuma, tostring ( v["vehID"] ), false, false ); end end; end; end; Link to comment
coNolel Posted July 29, 2017 Share Posted July 29, 2017 On 28/07/2017 at 08:21, #,+( _xiRoc[K]; > said: تصحيح بسيط للكود الي فوق ^ function changeGridlistToVehicleNames ( gridlist, columnnum ) if not ( columnnum ) then columnnum = 1 end if not ( tonumber ( columnnum ) ) then columnnum = 1 end if ( gridlist ) then if ( getElementType ( gridlist ) == "gui-gridlist" ) then guiGridListClear ( gridlist ) for i = 411, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then guiGridListSetItemText ( gridlist, guiGridListAddRow ( gridlist ), columnnum, getVehicleNameFromModel ( i ), false, false ) end end end end end ______________________________________________________________________________________________________________________________________________ #edit : changeGridlistToVehicleNamesAndIds الوضيفة زي الي فوق بس مع تعديلات بسيطة Source Code : function changeGridlistToVehicleNamesAndIds ( gridlist, sort, columnnum, columnnuma, AZ ) local vehsTable = { }; if not ( columnnum ) then columnnum = 1 end; if not ( columnnuma ) then columnnuma = 2 end; if not ( AZ ) then AZ = "AZ" end; if ( gridlist and tostring ( sort ) and tostring ( AZ ) ) then if ( getElementType ( gridlist ) == "gui-gridlist" ) then guiGridListClear ( gridlist ); for i = 411, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then table.insert ( vehsTable, { vehName = getVehicleNameFromModel ( i ), vehID = i } ); end; end; if ( sort == "ID" ) then if ( AZ == "ZA" ) then table.sort ( vehsTable, function ( a, b ) return tonumber ( a["vehID"] ) > tonumber ( b["vehID"] ) end ); else if ( AZ == "AZ" ) then table.sort ( vehsTable, function ( a, b ) return tonumber ( a["vehID"] ) < tonumber ( b["vehID"] ) end ); end; end; else if ( sort == "Name" ) then if ( AZ == "ZA" ) then table.sort ( vehsTable, function ( a, b ) return a["vehName"] > b["vehName"] end ); else if ( AZ == "AZ" ) then table.sort ( vehsTable, function ( a, b ) return a["vehName"] < b["vehName"] end ); end; end; end; end; for _, v in ipairs ( vehsTable ) do row = guiGridListAddRow ( gridlist ) guiGridListSetItemText ( gridlist, row, columnnum, v["vehName"], false, false ); guiGridListSetItemText ( gridlist, row, columnnuma, tostring ( v["vehID"] ), false, false ); end end; end; end; Syntax : changeGridlistToVehicleNamesAndIds ( element gridList, string sortType [ , int VehicleName columnIndex, int VehicleID columnIndex, string sortAZ ] ) Required Arguments : gridList: القريد ليست sortType: طريقة الترتيب يا بالايدي او بالاسم ( الايدي = "ID",,,, الاسم = "Name" ) Optional Arguments : VehicleName columnIndex : كولمن اسم السيارة ( اذا تركته فاضي بيكون الكولمن 1)ء VehicleID columnIndex : كولمن ايدي السيارة ( اذا تركته فاضي بيكون الكولمن 2 )ء sortAZ : طريقة الترتيب يا "AZ" او "ZA" Example : addEventHandler ( 'onClientResourceStart', root, function ( ) local screenW, screenH = guiGetScreenSize ( ) wnd = guiCreateWindow((screenW - 426) / 2, (screenH - 367) / 2, 426, 367, "EXAMPLE", false) guiWindowSetSizable(wnd, false) guiSetAlpha(wnd, 1.00) guiSetVisible ( wnd, false ) Grid = guiCreateGridList(22, 40, 373, 292, false, wnd) guiGridListAddColumn(Grid, "#Vehicle name", 0.5) guiGridListAddColumn(Grid, "#Vehicle ID", 0.5) changeGridlistToVehicleNamesAndIds ( Grid, "Name", 1, 2, "AZ" ) end ) bindKey ( 'F7', "down", function ( ) guiSetVisible ( wnd, not guiGetVisible ( wnd ) ) showCursor ( guiGetVisible ( wnd ) ) end ) function changeGridlistToVehicleNamesAndIds ( gridlist, sort, columnnum, columnnuma, AZ ) local vehsTable = { }; if not ( columnnum ) then columnnum = 1 end; if not ( columnnuma ) then columnnuma = 2 end; if not ( AZ ) then AZ = "AZ" end; if ( gridlist and tostring ( sort ) and tostring ( AZ ) ) then if ( getElementType ( gridlist ) == "gui-gridlist" ) then guiGridListClear ( gridlist ); for i = 411, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then table.insert ( vehsTable, { vehName = getVehicleNameFromModel ( i ), vehID = i } ); end; end; if ( sort == "ID" ) then if ( AZ == "ZA" ) then table.sort ( vehsTable, function ( a, b ) return tonumber ( a["vehID"] ) > tonumber ( b["vehID"] ) end ); else if ( AZ == "AZ" ) then table.sort ( vehsTable, function ( a, b ) return tonumber ( a["vehID"] ) < tonumber ( b["vehID"] ) end ); end; end; else if ( sort == "Name" ) then if ( AZ == "ZA" ) then table.sort ( vehsTable, function ( a, b ) return a["vehName"] > b["vehName"] end ); else if ( AZ == "AZ" ) then table.sort ( vehsTable, function ( a, b ) return a["vehName"] < b["vehName"] end ); end; end; end; end; for _, v in ipairs ( vehsTable ) do row = guiGridListAddRow ( gridlist ) guiGridListSetItemText ( gridlist, row, columnnum, v["vehName"], false, false ); guiGridListSetItemText ( gridlist, row, columnnuma, tostring ( v["vehID"] ), false, false ); end end; end; end; سوري بس وش الفايدة من الفنكشن حقك ؟ أشوف انو بيستعمل في حالة ولا حلتين ، useless Link to comment
Master_MTA Posted August 1, 2017 Share Posted August 1, 2017 ليس من صنعي لكن حبيت اشاركم فيه لاني كنت ابحث عنه هو كلنت او سيرفر ووظيفته معروفه بالويكي لكن هذا في اضافة اكثر انه حتى الكلمه الوحده يفصلها حرف حرف تفضلو function gsplit(text, pattern, plain) local splitStart, length = 1, #text return function () if splitStart then local sepStart, sepEnd = string.find(text, pattern, splitStart, plain) local ret if not sepStart then ret = string.sub(text, splitStart) splitStart = nil elseif sepEnd < sepStart then -- Empty separator! ret = string.sub(text, splitStart, sepStart) if sepStart < length then splitStart = sepStart + 1 else splitStart = nil end else ret = sepStart > splitStart and string.sub(text, splitStart, sepStart - 1) or '' splitStart = sepEnd + 1 end return ret end end end function split(text, pattern, plain) local ret = {} for match in gsplit(text, pattern, plain) do table.insert(ret, match) end return ret end مثال local text=split('master','') print(text[1])------output -->m 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