AR/setElementData: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 44: | Line 44: | ||
--دعونا أولا نجلب بيانات العنصر، لمعرفة ما اذا كان هنالك بيانات بالفعل | --دعونا أولا نجلب بيانات العنصر، لمعرفة ما اذا كان هنالك بيانات بالفعل | ||
--مرتين / addtag والسبب في ذلك هو أنه إذا كان لاعب قام بعمل | -- مرتين / addtag والسبب في ذلك هو أنه إذا كان لاعب قام بعمل | ||
--التاج يرفق مسبقاً للمره الثانية | -- التاج يرفق مسبقاً للمره الثانية | ||
local sOldNick = getElementData( thePlayer, "tempdata.originalnick" ) | local sOldNick = getElementData( thePlayer, "tempdata.originalnick" ) | ||
if ( sOldNick == false ) then | if ( sOldNick == false ) then | ||
Line 55: | Line 55: | ||
setPlayerName ( thePlayer, sNewPlayerNickname ) | setPlayerName ( thePlayer, sNewPlayerNickname ) | ||
--اخباره بانه تم | -- اخباره بانه تم تعيين الاسم المستعار الجديد | ||
outputChatBox ( "Your new nickname has been set, to put it back to its original state you can use /deltag", thePlayer ) | outputChatBox ( "Your new nickname has been set, to put it back to its original state you can use /deltag", thePlayer ) | ||
else | else | ||
--علامة التاج الجديد لم يتم ادخالها , اعطاء رسالة خطأ | -- علامة التاج الجديد لم يتم ادخالها , اعطاء رسالة خطأ | ||
outputChatBox ( "/addtag - Incorrect syntax, Correct: /addtag <newtag>", thePlayer ) | outputChatBox ( "/addtag - Incorrect syntax, Correct: /addtag <newtag>", thePlayer ) | ||
end | end | ||
Line 65: | Line 65: | ||
function removePlayerCustomTag ( thePlayer, command ) | function removePlayerCustomTag ( thePlayer, command ) | ||
--لنقوم به الان, /addtag نحن اولاً نحتاج الى التحقق من | -- لنقوم به الان, /addtag نحن اولاً نحتاج الى التحقق من انه مسبقاً استخدم | ||
local sOldNick = getElementData( thePlayer, "tempdata.originalnick" ) | local sOldNick = getElementData( thePlayer, "tempdata.originalnick" ) | ||
if ( sOldNick ) then | if ( sOldNick ) then | ||
-- جيد , لديه تاج مضاف , لنقوم بإعادة تعيينه | -- جيد , لديه تاج مضاف , لنقوم بإعادة تعيينه له | ||
--( false يجب ان تكون ) x اولاً نحن نريد ان نعيد تعيين بيانات العنصر لإرجاعه الى الافتراضي | -- ( false يجب ان تكون ) x اولاً نحن نريد ان نعيد تعيين بيانات العنصر لإرجاعه الى الافتراضي | ||
setElementData ( thePlayer, "tempdata.originalnick", false ) | setElementData ( thePlayer, "tempdata.originalnick", false ) | ||
Line 85: | Line 85: | ||
==أنظر أيضاً== | ==أنظر أيضاً== | ||
{{Element_functions}} | {{AR/Element_functions}} |
Latest revision as of 16:07, 21 August 2016
هذه الوظيفة تحفظ بيانات العنصر على مفتاح معين، يتبع لعنصر. يتم تعيين بيانات العنصر باستخدام هذا ثم يتم مزامنتها مع جميع العملاء والخادم. يمكن أن يحتوى الخادم على عناصر البيانات التي تم إنشاؤها ، ولكن يجب تجنب تمرير البيانات الغير قادرة على أن تكون متمازنه مثل xmlnodes، قوائم ACL، aclgroups الخ.
كما يتم ممازنة بيانات العنصر مع جميع العملاء، يمكن أن تولد الكثير من الضغط على الشبكة وتستهلك وحدة المعالجة المركزية للخادم. الأحداث أكثر كفاءة لإرسال البيانات من العميل إلى الملقم فقط، أو من ملقم إلى عميل خاص.
Tip: A simple and efficient way to make a variable known to the server and clients is to use setElementData on the root element. |
تركيب الجملة البرمجية
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 )
أنظر أيضاً
- clearElementVisibleTo
- cloneElement
- createElement
- destroyElement
- getAllElementData
- getAttachedElements
- getElementAlpha
- getElementAttachedOffsets
- getElementCollisionsEnabled
- getElementAttachedTo
- getElementByID
- getElementByIndex
- getElementChild
- getElementChildren
- getElementChildrenCount
- getElementColShape
- getElementData
- getElementDimension
- getElementHealth
- getElementID
- getElementInterior
- getElementParent
- getElementPosition
- getElementRotation
- getElementsByType
- getElementsWithinColShape
- getElementType
- getElementVelocity
- getElementZoneName
- getRootElement
- isElement
- isElementAttached
- isElementCallPropagationEnabled
- isElementDoubleSided
- isElementFrozen
- isElementVisibleTo
- isElementWaitingForGroundToLoad
- isElementWithinColShape
- removeElementData
- setElementAlpha
- setElementCallPropagationEnabled
- setElementCollisionsEnabled
- setElementData
- setElementDoubleSided
- setElementDimension
- setElementFrozen
- setElementHealth
- setElementID
- setElementInterior
- setElementParent
- setElementPosition
- setElementSyncer
- setElementRotation
- setElementVelocity
- setElementVisibleTo
- attachElements
- detachElements
- getElementModel
- getElementSyncer
- isElementInWater
- setElementAttachedOffsets
- setElementModel
- setLowLODElement
- getLowLODElement
- isElementLowLOD