AR/setElementData

From Multi Theft Auto: Wiki
Jump to: navigation, search

هذه الوظيفة تحفظ بيانات العنصر على مفتاح معين، يتبع لعنصر. يتم تعيين بيانات العنصر باستخدام هذا ثم يتم مزامنتها مع جميع العملاء والخادم. يمكن أن يحتوى الخادم على عناصر البيانات التي تم إنشاؤها ، ولكن يجب تجنب تمرير البيانات الغير قادرة على أن تكون متمازنه مثل xmlnodes، قوائم ACL، aclgroups الخ.

كما يتم ممازنة بيانات العنصر مع جميع العملاء، يمكن أن تولد الكثير من الضغط على الشبكة وتستهلك وحدة المعالجة المركزية للخادم. الأحداث أكثر كفاءة لإرسال البيانات من العميل إلى الملقم فقط، أو من ملقم إلى عميل خاص.


[[{{{image}}}|link=]] Tip: A simple and efficient way to make a variable known to the server and clients is to use setElementData on the root element.
[[{{{image}}}|link=]] Note: See Script security for tips on preventing cheaters when using events and element data

تركيب الجملة البرمجية

bool setElementData ( element theElement, string key, var value [, bool synchronize = true ] )

OOP Syntax Help! I don't understand this!

Method: element:setData(...)
Counterpart: getElementData

العناصر المطلوبة

  • theElement: العنصر الذي تود بتعيين بيانات له.
  • key: اسم مفتاح بيانات العنصر الذي تود تعيين البيانات عليه . x ( 31 حرف كحد أقصى للمفتاح )
  • value: للحصول على قائمة من أنواع البيانات المقبولة element data القيمة التي تود بحفظها , انظر

العناصر الاختيارية

  • synchronize: يحدد ما إذا كان سيتم مزامنة البيانات مع الخادم (تغير العميل) والعملاء عن بعد (كلا الاختلافات) أو لا

النواتج

إرجاع صحيح إذا تم تعيين البيانات بنجاح، خطأ على خلاف ذلك.

Issues

Issue ID Description
#7389 [Fixed in 1.3.5-7389] Problem with floating numbers

مثال

Click to collapse [-]
سيرفر

يسمح هذا المثال لللاعب لإضافة علامة مخصصة على لقبه، وأيضا يرجعه مرة أخرى إلى وضعه الطبيعي إذا رغب في ذلك.

function addPlayerCustomTag ( thePlayer, command, newTag )
	-- لنتأكد من علامة التاج الجديد المدخلة ...
	if ( newTag ) then
		-- جلب اسمه الحالي للحفظ
		local sPlayerNickname = getPlayerName ( thePlayer )
		-- انشاء اسمه المستعار الجديد مع التاج
		local sNewPlayerNickname = newTag .. " " .. sPlayerNickname
		
		--دعونا أولا نجلب بيانات العنصر، لمعرفة ما اذا كان هنالك بيانات بالفعل
		-- مرتين / addtag والسبب في ذلك هو أنه إذا كان لاعب قام بعمل
		-- التاج يرفق مسبقاً للمره الثانية
		local sOldNick = getElementData( thePlayer, "tempdata.originalnick" )
		if ( sOldNick == false ) then
			-- حفظ اسمه الاصلي في بياناته
			setElementData ( thePlayer, "tempdata.originalnick", sPlayerNickname )
		end
		
		-- تعيين الاسم المستعار الجديد كأسم للاعب
		setPlayerName ( thePlayer, sNewPlayerNickname )
		
		-- اخباره بانه تم تعيين الاسم المستعار الجديد
		outputChatBox ( "Your new nickname has been set, to put it back to its original state you can use /deltag", thePlayer )
	else
		-- علامة التاج الجديد لم يتم ادخالها , اعطاء رسالة خطأ 
		outputChatBox ( "/addtag - Incorrect syntax, Correct: /addtag <newtag>", thePlayer )
	end
end
addCommandHandler ( "addtag", addPlayerCustomTag )

function removePlayerCustomTag ( thePlayer, command )
	-- لنقوم به الان, /addtag نحن اولاً نحتاج الى التحقق من انه مسبقاً استخدم
	local sOldNick = getElementData( thePlayer, "tempdata.originalnick" )
	if ( sOldNick ) then
		-- جيد , لديه تاج مضاف , لنقوم بإعادة تعيينه له
		
		-- ( false يجب ان تكون ) x اولاً نحن نريد ان نعيد تعيين بيانات العنصر لإرجاعه الى الافتراضي
		setElementData ( thePlayer, "tempdata.originalnick", false )
		
		-- الآن تعيين اسم العميل الى القديم
		setPlayerName( thePlayer, sOldNick )
		
		-- عمل تنبيه له
		outputChatBox ( "Your old nickname has been set", thePlayer )
	end
end
addCommandHandler ( "deltag", removePlayerCustomTag )

أنظر أيضاً