Jump to content

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


Booo

Recommended Posts

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

أما بعد اقدم لكم وظيفة جميلة ومفيدة بنفس الوقت :

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 by !#NssoR_)
Modified as requested
  • Like 1
Link to comment

@!#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
  • 5 weeks later...

السلام عليكم ورحمة الله وبركاته من غير ما اطول عليكم

اليوم جبتلكم كود مرغوب

طبعا هو مشترك ما بين سيرفر وكلينت

تمام

وش وظيفة الفنكشن الفنكشن يعطل اي فنكشن مضاف للماركر وانت مار عليه بجيت باك من فوق مثلا

كيف يعني ما فهمت شوف يقلبي يعني انت مسوي ماركر ومسوي لوحة بغيت اول ما يلمس الماركر يفتح اللوحه تمام لكن في مشكله لو انت سويت ماركر من نوع 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')

وفي الختام اتمنى اكون افدتكم ويكون مفيد للجميع بالتوفيق للجميع

  • Like 2
Link to comment
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')

وفي الختام اتمنى اكون افدتكم ويكون مفيد للجميع بالتوفيق للجميع

واصل لا توقف شروحات :D 

  • Like 1
Link to comment
8 hours ago, iMr.Omar said:

@Master_MTA الوظيفة حلوة وأهنيك بس كأن يمديك تختصرها بأحسن من كذا

منك نستفيد ممكن تقولي كيف نختصرها ازيد من كذا

انا حاولت اختصرها مع اكبر كمية ارقمنتات

ممكنه وكنت اقدر ازيد الارقمنتات لكن بيكون السورس كود اكبر فلو كان عندك طريقه يا ليت تشاركنا بها لان ذي من وجهة نظري اقصصر طريقه ممكنه

Link to comment

 

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

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

 

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 by !#NssoR_)
Modified as requested.
Link to comment
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 );

 

طبعا الوضيفة مادري اذا مفيدة ولا لا بس جت في بالي الفكرة وسويتها وقلت انشرها :lol:

وظيفة جميلة لكن بها أخطاء .. الأول
السينتاكس خاطئ المفروض تحط 

intبمكان الـ element

theElementوتحط بدل الـ 
skinModel

+
الخطأ الثاني بالمثال 
في السطر الثاني 

امسح القوسين

وفي السطر الخامس المفروض تسوي getPlayerName

Link to comment

@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 by Abdul KariM
Link to comment
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
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 by #,+( _xiRoc[K]; >
Link to comment
23 minutes ago, #,+( _xiRoc[K]; > said:

 

شكرا ع مشاركتك لكني اصلا ماكملت الفنكشن كنت يعني بحط اضافات اكثر وبعد الاخطاء + الفنكشن حقك فكرته غير الي هو يجيب العدد للاشياء الموجودة وانا الفنكشن حقي يجيب اسماء الاشخاص الي عندهم السكن

ي حبي ..
هو مسوي مثال ,,

لأن هو مسترجع القيمة تيبل في الفنكشن

وجاب كمية التيبل عشان كذا

ولا انت تقدر تخليه يجيب اسم السيارة مثلاً 

او اللاعب واشياء اخرى يعني لو تبي تفهم وش الفرق بين كوده وكودك زي الفرق بين هالفنكشنين

setPedSkin
setElementModel

^ فهمت الفرق الحين اتوقع 
واذا مافهمت باختصار هو تقدر تخليه لجميع الالمنتات

Link to comment

 

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

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

 

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 by !#NssoR_)
Modifed as requested.
Link to comment
6 minutes ago, Abdul KariM said:

@#,+( _xiRoc[K]; > والله كذا ماله فائدة الوظيفة الي حطيتها لها فائدة 

تقدر تجيب الموديل حق الاعب او السيارة او اي المنت

لكن وش الفائدة من انك تحط اسماء الاعبين او حساباتهم

 

 

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

Edited by #,+( _xiRoc[K]; >
Link to comment
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
  • 4 weeks later...

تم تقليص حجم الفنكشن وتحديثه ليدعم جميع انواع الماركرات

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
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 by #,+( _xiRoc[K]; >
Link to comment
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
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

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

ووظيفته معروفه بالويكي لكن هذا في اضافة اكثر

انه حتى الكلمه الوحده يفصلها حرف حرف تفضلو

 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

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