Jump to content

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


Booo

Recommended Posts

11 hours ago, #َxLysandeR said:

ولكم كروس منور 

 

تسلم حبيبي

5 hours ago, Abdul KariM said:

 

 

والخروج منه Marker جربت هالكلام مع أحداث دخول الـ
وحدث الخروج يشتغل بعد ما اطلع منه بمسافة ،Marker والنتيجة إن حدث الدخول يشتغل قبل ما المس الـ
أكبر Marker نفسها، وهالمشكلة توضح كل ما كان الـ MTA اتضح إنها مشكلة في
مربوط بلوحة Marker عادي تطلع لك لوحة فوق لو كان الـ ،Marker ودخلت الـ Jetpack يعني لو كنت فوق تطير بـ ،Marker وهي إنها تهمل الارتفاع لما تدخل الـ MTA وفي مشكلة ثانية في
.أخيرًا، اعذرني على سذاجتي

Link to comment
55 minutes ago, #CroSs said:

مربوط بلوحة Marker عادي تطلع لك لوحة فوق لو كان الـ ،Marker ودخلت الـ Jetpack يعني لو كنت فوق تطير بـ ،Marker وهي إنها تهمل الارتفاع لما تدخل الـ MTA وفي مشكلة ثانية في

احم احم في فنكشن سويته لاصلاح هذا البق

راجع الموضوع ذا

مدري شسمه

disableMarker

مدري الزبده دور عليه

Link to comment

@#CroSs معذور , وانا ماطرح شي الا واثق منه ولاهنت على المرور

#edit والي يبي يحل المشاكل الي قالها الاخ كروس

استخدم التايمر او الرندر مع الوظائف الي انا حاطها وان شاء الله ماتواجهه مشاكل

Edited by Abdul KariM
Link to comment

zWDoHTl.png

createObjectAttachedTo

 وظيفه بسيطة و واضحه من اسمها تنشأ اوبجكت وتلصقه بالالمنت

Syntax :

object createObjectAttachedTo ( element elementToAttachTo , int objID [ , float offx , float offy , float offz ] )

Required Arguments

elementToAttachTo : الالمنت الي تبي تلصق الاوبجكت فيه

objID : ايدي الاوبجكت

source Code :

	local elements = { [ "player" ] = true , [ "ped" ] = true , [ "vehicle" ] = true , [ "object" ] = true , [ "weapon" ] = true , [ "blip" ] = true , [ "effect" ] = true , [ "light" ] = true , [ "camera" ] = true , [ "pickup" ] = true , [ "searchlight" ] = true }

    function createObjectAttachedTo ( elementToAttachTo , objID , offx , offy , offz )
	
	local Check = not ( elementToAttachTo and isElement ( elementToAttachTo ) and elements [ getElementType ( elementToAttachTo ) ] ) and error ( "createObjectAttachedTo Bad Argument 1 got ".. ( not elementToAttachTo and "nil" or getElementType ( elementToAttachTo ) or "nil" ) ) or type ( objID ) ~= "number" and error ( "createObjectAttachedTo Bad Argument 2 got " .. type ( objID ) )
	
	local obj = createObject ( objID , getElementPosition ( elementToAttachTo ) )
	
	attachElements ( obj , elementToAttachTo , offx , offy , offz )
		return obj
	end

 

بعض الامثلة

client : 

createObjectAttachedTo ( localPlayer , 1482 , offx , offy , offz )

--

server :

createObjectAttachedTo ( getRandomPlayer ( ) , 1482 , offx , offy , offz )

Author : Abdul KariM

 

Edited by Abdul KariM
  • Like 3
Link to comment

e2zd4f1.png

getSmoothRGBColor

وظيفة تجيبلك لون RGB

بشكل ناعم

Syntax:

int int int getSmoothRGBColor()

Source code:

local colorChangeSpeed = 2;

addEventHandler('onClientResourceStart', resourceRoot, function()
    colorChangeSpeed = math.max(math.min(colorChangeSpeed, 2), .5)
    randomR, randomG, randomB = 0, 0, 0;
    levelNumber = math.random(3)
    startTick = getTickCount();
    addEventHandler('onClientRender', root, updateRGB)
end)

function updateRGB()
    local currentTick = getTickCount();
    local fadeIn, fadeOut = interpolateBetween(0, 255, 0, 255, 0, 0, (currentTick-startTick)/(colorChangeSpeed*1000), 'Linear')
    if levelNumber == 1 then
        randomR, randomG, randomB = fadeOut, fadeIn, 0
    elseif levelNumber == 2 then
        randomR, randomG, randomB = 0, fadeOut, fadeIn
    elseif levelNumber == 3 then
        randomR, randomG, randomB = fadeIn, 0, fadeOut
    end
    if currentTick > (startTick+(colorChangeSpeed*1000)) then
        levelNumber = math.max((levelNumber+1)%4, 1)
        startTick = getTickCount();
    end
end

function getSmoothRGBColor()
    return randomR, randomG, randomB;
end

Example:

local sx, sy = guiGetScreenSize()

addEventHandler('onClientRender', root, function()
    dxDrawText(getPlayerName(localPlayer), 0, 0, sx, sy, tocolor(getSmoothRGBColor()), 2, 'default-bold', 'center', 'top')
end)

تقدر تغير سرعة التغيير مابين الألوان من السطر الأول

  • Like 1
  • Thanks 1
Link to comment
Just now, Abdul KariM said:

@N3xT يعطيك العافية مجهود تشكر عليه 

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

registry.db تقدر تسوي قاعدة بيانات بأسم واحد وتضيف وتحذف منها عشان تختصر الاكواد وايضا تقليل من حجم 

حبيت انه يكون لكل سيريال قاعدة خاصة فيه بالداتا اللي عليه, والله يعافيك نورت الموضوع

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

بينما كذا راح تختصر الموضوع وعلى طول تجيبها من السيريال

Link to comment
2 minutes ago, Abdul KariM said:

@N3xT مافهمت قصدك تسوي لوب على قاعدة البيانات ؟

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

وبالمقابل لو كان فيه قاعدة لكل سيريال راح يكون أسرع

 

بإختصار كل طريقة لها ايجابياتها وسلبياتها

Link to comment
Just now, N3xT said:

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

وبالمقابل لو كان فيه قاعدة لكل سيريال راح يكون أسرع

 

بإختصار كل طريقة لها ايجابياتها وسلبياتها

كلامك صحيح بس تقدر تعوض عن هذا عن طريق 

dbConnect

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

registry.db وبكذا تخلي الوظائف مستقلة بقاعدة لحالها مايحتاج استخدام الـ

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

Link to comment
1 minute ago, Abdul KariM said:

كلامك صحيح بس تقدر تعوض عن هذا عن طريق 


dbConnect

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

registry.db وبكذا تخلي الوظائف مستقلة بقاعدة لحالها مايحتاج استخدام الـ

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

هذي كانت الفكرة بالبداية, لكن عيبها انها بتسوي لك قاعدة بكل ملف تستخدم فيه الكود وبعدين اذا احتجت نسخة منها بتقعد تنسخ اكثر من قاعدة عندك

أو انها تتحول من يوزفل فنكشن الى سكربت وتنحفظ فيه قاعدة البيانات وانا ما ابيه سكربت, وحياك الله واحترم رأيك

  • Thanks 1
Link to comment
Just now, N3xT said:

هذي كانت الفكرة بالبداية, لكن عيبها انها بتسوي لك قاعدة بكل ملف تستخدم فيه الكود وبعدين اذا احتجت نسخة منها بتقعد تنسخ اكثر من قاعدة عندك

أو انها تتحول من يوزفل فنكشن الى سكربت وتنحفظ فيه قاعدة البيانات وانا ما ابيه سكربت, وحياك الله واحترم رأيك

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

  • Like 1
Link to comment
  • 3 weeks later...

e2zd4f1.png

removeSpecialCharacters

الوظيفة تقوم بحذف الرموز الخاصة مثل ^
 
Syntax:
string removeSpecialCharacters(string text)

Source code:

function removeSpecialCharacters(str)
    return type(str) == 'string' and ({str:gsub('[%(%)%.%%%+%-%*%?%[%^%$]', '%%%1')})[1] or false
end

Example:

print(removeSpecialCharacters('Is it 20$ ?')) -- Is it 20%$ %?

 

 
 
Edited by #,xiRocKyz
Sorting
  • Like 1
Link to comment

Function Name : sortGridlist

Function Type : Client-Side

Function Args. : gridlist ( element ) , { filter, from , column } ( table )

filter = الفلتر الي هيرتب بيه ممكن يكون الأنواع التاليه فقط :

1 - both ( للنوعين نص او رقم )

2 - string ( لو تبي ترتيب ابجدي ) [ English - Only ]

3 - number ( لترتيب الأرقام )

from = من وين هياخد النصوص الي هيرتبها , لها اختيارين بس

1 - text = guiGridListGetItemText ( يعني هياخدها من النص الكتابي )

2 - data = guiGridListGetItemData ( يعني هياخدها من الداتا )

column = ( العمود الي هياخد منه ( لو ما كتبتوش هيتحط 1 تلقائي

 

Source Code : 

local Alphabet = {["a"] = 1, ["b"] = 2, ["c"] = 3, ["d"] = 4, ["e"] = 5, ["f"] = 6, ["g"] = 7, ["h"] = 8, ["i"] = 9, ["j"] = 10, ["k"] = 11, ["l"] = 12, ["m"] = 13, ["n"] = 14, ["o"] = 15, ["p"] = 16, ["q"] = 17, ["r"] = 18, ["s"] = 19, ["t"] = 20, ["u"] = 21, ["v"] = 22, ["w"] = 23, ["x"] = 24, ["y"] = 25, ["z"] = 26}
function sortGridlist(grid, stype)
    if grid and isElement(grid) and getElementType(grid) == "gui-gridlist" and type(stype) == "table" then
		local data = {}
        if #stype > 0 then
			local filter, from, column = stype[1] or "both", stype[2] or "text", stype[3] or 1
			local func = from == "data" and guiGridListGetItemData or guiGridListGetItemText
			local startIndex, row, cCount = 0, nil, guiGridListGetColumnCount(grid)
			for i = 0, guiGridListGetRowCount(grid)-1 do
				for j = 1, cCount do
					table.insert(data, {func(grid, i, column), guiGridListGetItemText(grid, i, j), guiGridListGetItemData(grid, i, j), {guiGridListGetItemColor(grid, i, j)}})
				end				
			end
			guiGridListClear(grid)
			if filter == "number" then
				table.sort(data, 
					function(a, b)
						return tonumber(a[1]) > tonumber(b[1])
					end
				)
			elseif filter == "string" then
				table.sort(data,
					function(a, b)
						local a, b = a[1]:sub(1, 1):lower(), b[1]:sub(1, 1):lower()
						return Alphabet[b] > Alphabet[a]
					end
				)
			elseif filter == "both" then
				table.sort(data, 
					function(a, b)
						if tonumber(a[1]) and tonumber(b[1]) then
							return tonumber(a[1]) > tonumber(b[1])
						elseif tonumber(a[1]) and not tonumber(b[1]) then
							return tonumber(a[1]) > tonumber(Alphabet[b[1]:sub(1, 1):lower()])
						elseif not tonumber(a[1]) and tonumber(b[1]) then
							return tonumber(Alphabet[a[1]:sub(1, 1):lower()]) > tonumber(b[1])
						else
							return Alphabet[b[1]:sub(1, 1):lower()] > Alphabet[a[1]:sub(1, 1):lower()]
						end
					end
				)
			end
			for _,value in ipairs(data) do
				startIndex = startIndex + 1
				if startIndex == 1 then
					row = guiGridListAddRow(grid)
				elseif startIndex >= cCount then
					startIndex = 1
					row = guiGridListAddRow(grid)
				end
				for i = 1, cCount do
					guiGridListSetItemText(grid, row, i, value[2], false, false)
					guiGridListSetItemData(grid, row, i, value[3])
					guiGridListSetItemColor(grid, row, i, value[4][1], value[4][2], value[4][3], value[4][4] or 255)
				end
			end
		end
	end
end

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

اي بق يا ريت تكتبوه هنا و شكراً

  • Like 1
Link to comment

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

اليوم جايب فنكشن شوي حلو ومره حلو ههه الزبده انه عاجبني 

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

ريكتانجل وابي ارسم  تكست عليه 

وابي التكست ما يطلع برا الريكتانجل 

يمديني اسوي خاصيه من خصائص drawtext

طبعا معروفه

wordbreak

or clip

لكن لو انت متقدم شوي بالدي اكس وشديت حيلك

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

ولو تبي تفك راسك ايضا من ارقمنتات dxDrawText

كثيره يمديك تستخدمه

ما اطول عليككم اصلا طولت السورس كود

function getMaxStringForWidth(text,width,isinvers,scale,font)

	local scale=scale or 1.15
	
	local font=font or 'default-bold'
	
	local isinvers= isinvers or false
	
	local mystring=''
	
	local inverstable={}
	
	local num=0
		
	if text~=nil then
			
		local txtwidth=dxGetTextWidth( text,scale,font)
			
			if width>=txtwidth then
			
				return text,text
			
			end
						
		for v in text:gmatch('.') do
		

				if not isinvers then

				mystring=mystring..v
				
					local finalWidth=dxGetTextWidth( mystring,scale,font)
					
						if finalWidth>=width then
							
							mystring=mystring:gsub("[%z\1-\127\194-\244][\128-\191]*$", "")
							
							return mystring,text
							
						end
				
				else
				
					table.insert(inverstable,v)
				
				end
		end
		
				if isinvers then
 
					num=#inverstable
					
					while(num>=1) do
					
						mystring=inverstable[num]..mystring
						
						local finalWidth=dxGetTextWidth( mystring,scale,font)
					
						if finalWidth>=width then
														
							return mystring,text
							
						end
						
						num=num-1
					
					end
					
			return mystring,text
				
				
			
		end
		
	end
	
	return false,text
end

طويل شوي لاني مابي اتلغبط اللي يبي يقصره يقصره

الحين الساينتكس

getMaxStringForWidth(string text,int width,bool isinvers,int scale,string or font element font)

text:النص اللي تبي

width:العرض او اقصى عرض اللي تبيه ما يتعداه

isinvers:هذي لو تبي القطع يبدا من ورا ولا قدام

scale:حجم الخط

font:الخط سواء كانت خطوط اللعبه او خط سويته انت ب dxCreateFont

Returns :الكود يرجعلك ب 2 سترنج

اول سترنج المقصوصه او المناسبه للحجم والثانيه اللي انت حطيتها بالبدايه

 

المهم مثال على الموضوع

 

print(getMaxStringForWidth('Hello Worled am fine',100,true))

اتمنى وصلتكم المعلومه

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

@coNolel

وش رايك انت ههه

@#CroSs

وانت فك الحظر حق الدسكورد ههه كل ذا عشان قلتلك بكرا دوام

Edited by Master_MTA
  • Like 1
Link to comment
4 minutes ago, Master_MTA said:

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

اليوم جايب فنكشن شوي حلو ومره حلو ههه الزبده انه عاجبني 

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

ريكتانجل وابي ارسم  تكست عليه 

وابي التكست ما يطلع برا الريكتانجل 

يمديني اسوي خاصيه من خصائص drawtext

طبعا معروفه

wordbreak

or clip

لكن لو انت متقدم شوي بالدي اكس وشديت حيلك

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

ولو تبي تفك راسك ايضا من ارقمنتات dxDrawText

كثيره يمديك تستخدمه

ما اطول عليككم اصلا طولت السورس كود


function getMaxStringForWidth(text,width,isinvers,scale,font)

	local scale=scale or 1.15
	
	local font=font or 'default-bold'
	
	local isinvers= isinvers or false
	
	local mystring=''
	
	local inverstable={}
	
	local num=0
		
	if text~=nil then
			
		local txtwidth=dxGetTextWidth( text,scale,font)
			
			if width>=txtwidth then
			
				return text,text
			
			end
						
		for v in text:gmatch('.') do
		

				if not isinvers then

				mystring=mystring..v
				
					local finalWidth=dxGetTextWidth( mystring,scale,font)
					
						if finalWidth>=width then
							
							mystring=mystring:gsub("[%z\1-\127\194-\244][\128-\191]*$", "")
							
							return mystring,text
							
						end
				
				else
				
					table.insert(inverstable,v)
				
				end
		end
		
				if isinvers then
 
					num=#inverstable
					
					while(num>=1) do
					
						mystring=inverstable[num]..mystring
						
						local finalWidth=dxGetTextWidth( mystring,scale,font)
					
						if finalWidth>=width then
														
							return mystring,text
							
						end
						
						num=num-1
					
					end
					
			return mystring,text
				
				
			
		end
		
	end
	
	return false,text
end

طويل شوي لاني مابي اتلغبط اللي يبي يقصره يقصره

الحين الساينتكس


getMaxStringForWidth(string text,int width,bool isinvers,int scale,string or font element font)

text:النص اللي تبي

width:العرض او اقصى عرض اللي تبيه ما يتعداه

isinvers:هذي لو تبي القطع يبدا من ورا ولا قدام

scale:حجم الخط

font:الخط سواء كانت خطوط اللعبه او خط سويته انت ب dxCreateFont

Returns :الكود يرجعلك ب 2 سترنج

اول سترنج المقصوصه او المناسبه للحجم والثانيه اللي انت حطيتها بالبدايه

 

المهم مثال على الموضوع

 


print(getMaxStringForWidth('Hello Worled am fine',100,true))

اتمنى وصلتكم المعلومه

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

@coNolel

وش رايك انت ههه

إبداعك مال اممممه حدووووووووود يا ولد

  • Thanks 1
Link to comment
33 minutes ago, Master_MTA said:

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

اليوم جايب فنكشن شوي حلو ومره حلو ههه الزبده انه عاجبني 

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

ريكتانجل وابي ارسم  تكست عليه 

وابي التكست ما يطلع برا الريكتانجل 

يمديني اسوي خاصيه من خصائص drawtext

طبعا معروفه

wordbreak

or clip

لكن لو انت متقدم شوي بالدي اكس وشديت حيلك

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

ولو تبي تفك راسك ايضا من ارقمنتات dxDrawText

كثيره يمديك تستخدمه

ما اطول عليككم اصلا طولت السورس كود


function getMaxStringForWidth(text,width,isinvers,scale,font)	local scale=scale or 1.15		local font=font or 'default-bold'		local isinvers= isinvers or false		local mystring=''		local inverstable={}		local num=0			if text~=nil then					local txtwidth=dxGetTextWidth( text,scale,font)						if width>=txtwidth then							return text,text						end								for v in text:gmatch('.') do						if not isinvers then				mystring=mystring..v									local finalWidth=dxGetTextWidth( mystring,scale,font)											if finalWidth>=width then														mystring=mystring:gsub("[%z\1-\127\194-\244][\128-\191]*$", "")														return mystring,text													end								else									table.insert(inverstable,v)								end		end						if isinvers then 					num=#inverstable										while(num>=1) do											mystring=inverstable[num]..mystring												local finalWidth=dxGetTextWidth( mystring,scale,font)											if finalWidth>=width then																					return mystring,text													end												num=num-1										end								return mystring,text													end			end		return false,textend

طويل شوي لاني مابي اتلغبط اللي يبي يقصره يقصره

الحين الساينتكس


getMaxStringForWidth(string text,int width,bool isinvers,int scale,string or font element font)

text:النص اللي تبي

width:العرض او اقصى عرض اللي تبيه ما يتعداه

isinvers:هذي لو تبي القطع يبدا من ورا ولا قدام

scale:حجم الخط

font:الخط سواء كانت خطوط اللعبه او خط سويته انت ب dxCreateFont

Returns :الكود يرجعلك ب 2 سترنج

اول سترنج المقصوصه او المناسبه للحجم والثانيه اللي انت حطيتها بالبدايه

 

المهم مثال على الموضوع

 


print(getMaxStringForWidth('Hello Worled am fine',100,true))

اتمنى وصلتكم المعلومه

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

@coNolel

وش رايك انت ههه

@#CroSs

وانت فك الحظر حق الدسكورد ههه كل ذا عشان قلتلك بكرا دوام

والله شغل جميل وعال العال

كفوووو

  • Like 1
Link to comment
On 20/08/2018 at 01:57, N3xT said:

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

 

فالفترة الأخيرة لاحظت طلبات كثير على قواعد البيانات عالسيريال وما شابه, فقلت ليه ما اسهل الموضوع وأخليها بكود أسهل بكثير

عموماً نخش عالموضوع سريع سريع ونشوف

-

 

setSerialData

 

Syntax:


setSerialData ( string serial, string key, string value )

 

Source code:


function setSerialData ( serial, key, value )
	if ( serial and key and value ) then
		local database = executeSQLQuery ( "CREATE TABLE IF NOT EXISTS `" .. serial .. "` ( key TEXT, value TEXT )" )
		local data = executeSQLQuery ( "SELECT value FROM `" .. serial .. "` WHERE key=?", tostring ( key ) )
		local result = false
		if ( #data == 1 ) then
			if ( data[1].value ~= value ) then
				executeSQLQuery ( "UPDATE `" .. serial .. "` SET value=? WHERE key=?", tostring ( value ), tostring ( key ) )
				result = true
			end
		else
			executeSQLQuery ( "INSERT INTO `" .. serial .. "` ( key, value ) VALUES ( ?, ? )", tostring ( key ), tostring ( value ) )
			result = true
		end
		return result
	end
end

 

 

getSerialData

 

Syntax:


getSerialData ( string serial, string key )

 

Source code:


function getSerialData ( serial, key )
	if ( serial and key ) then
		local database = executeSQLQuery ( "CREATE TABLE IF NOT EXISTS `" .. serial .. "` ( key TEXT, value TEXT )" )
		local data = executeSQLQuery ( "SELECT value FROM `" .. serial .. "` WHERE key=?", tostring ( key ) )
		local result = false
		if ( #data == 1 ) then
			result = data[1].value
		end
		return result
	end
end

 

 

removeSerialData

 

Syntax:


removeSerialData ( string serial, string key )

 

Source code:

 


function removeSerialData ( serial, key )
	if ( serial and key ) then
		local database = executeSQLQuery ( "CREATE TABLE IF NOT EXISTS `" .. serial .. "` ( key TEXT, value TEXT )" )
		local data = executeSQLQuery ( "SELECT value FROM `" .. serial .. "` WHERE key=?", tostring ( key ) )
		local result = false
		if ( #data == 1 ) then
			executeSQLQuery("DELETE FROM `" .. serial .. "` WHERE key=?", tostring ( key ) )
			result = true
		end
		return result
	end
end

 

 

ان شاء الله تكون مفيدة الوظيفة لكم, في آمان الله

كودك يسبب ثغرة SQL Injection

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