|
|
| Line 1: |
Line 1: |
| {{Server client function}}
| | <font face="sans-serif"> |
| __NOTOC__
| | <div style="background:#333;"> |
| This function stores [[element data]] under a certain key, attached to an element. Element data set using this is then synced with all clients and the server. The data can contain server created elements, but you should avoid passing data that is not able to be synced such as xmlnodes, acls, aclgroups etc.
| | <div style="height:4px;background:#AAA;"></div> |
| | | <font color="#FFF" size="5"> |
| As element data is synced to all clients, it can generate a lot of network traffic and consume server CPU. Events are much more efficient for sending data from a client to the server only, or from the server to a specific client.
| | <p> Ваша версия Adobe Flash Player устарела</p> |
| | | </font> |
| {{Tip|A simple and efficient way to make a variable known to the server and clients is to use setElementData on the [[root]] element.}}
| | <div style="background:#FFF;"> |
| {{Note|See [[Script security]] for tips on preventing cheaters when using events and element data}}
| | <font color="#F00" size="2"> |
| | | <p>Требуется срочное обновление до текущей версии!</p> |
| ==Syntax==
| | </font> |
| | | <font color="#000" size="4"> |
| <syntaxhighlight lang="lua"> | | <p>Adobe Flash Player 30.0.0.164 <font color="#888" size="2">(~18 kB)</font></p> |
| bool setElementData ( element theElement, string key, var value [, bool synchronize = true ] )
| | </font> |
| </syntaxhighlight> | | <font color="#444" size="2"> |
| {{OOP||[[element]]:setData||getElementData}}
| | <p><b>Операционная система:</b> Windows<br><b>Язык:</b> Выбирает пользователь</p> |
| | | </font> |
| ===Required Arguments=== | | <font color="#000" size="4"> |
| *'''theElement:''' The [[element]] you wish to attach the data to.
| | <p>Скачать обновление с Яндекс.Диска: yadi.sk/d/AfbiMAr1PkGdww</p> |
| *'''key:''' The key you wish to store the data under. (Maximum 31 characters.)
| | </font> |
| *'''value:''' The value you wish to store. See [[element data]] for a list of acceptable datatypes.
| | </div> |
| | | </div> |
| ===Optional Arguments===
| | </font> |
| *'''synchronize:''' Determines whether or not the data will be synchronized with the clients(server-side variation) or server(client-side variation)
| |
| | |
| ===Returns===
| |
| Returns ''true'' if the data was set succesfully, ''false'' otherwise.
| |
| | |
| ===Issues===
| |
| {{Issues|
| |
| {{Issue|7389|[Fixed in 1.3.5-7389] Problem with floating numbers}}
| |
| }}
| |
| | |
| ==Example==
| |
| <section name="Server" class="server" show="true"> | |
| This example allows a player to add a custom tag onto their nickname, and also reverts it back to normal if they wish.
| |
| <syntaxhighlight lang="lua"> | |
| function addPlayerCustomTag ( thePlayer, command, newTag )
| |
| --Let's make sure the newTag param has been entered...
| |
| if ( newTag ) then
| |
| --Grab their current playername for saving.
| |
| local sPlayerNickname = getPlayerName ( thePlayer )
| |
| --Create their new nickname with their tag
| |
| local sNewPlayerNickname = newTag .. " " .. sPlayerNickname
| |
|
| |
| --Let's first load the element data, see if it's there already
| |
| --The reason for this is that if a player were to do /addtag twice,
| |
| --the tag would be prepended a second time
| |
| local sOldNick = getElementData( thePlayer, "tempdata.originalnick" )
| |
| if ( sOldNick == false ) then
| |
| --Save their orignal nickname in their element data | |
| setElementData ( thePlayer, "tempdata.originalnick", sPlayerNickname ) | |
| end
| |
|
| |
| --Set their new nickname globally
| |
| setPlayerName ( thePlayer, sNewPlayerNickname )
| |
|
| |
| --Tell them it's done
| |
| outputChatBox ( "Your new nickname has been set, to put it back to its original state you can use /deltag", thePlayer )
| |
| else
| |
| --The newTag param was not entered, give an error message
| |
| outputChatBox ( "/addtag - Incorrect syntax, Correct: /addtag <newtag>", thePlayer )
| |
| end
| |
| end
| |
| addCommandHandler ( "addtag", addPlayerCustomTag )
| |
| | |
| function removePlayerCustomTag ( thePlayer, command )
| |
| --We first need to check that they have already used /addtag, let's do that now
| |
| local sOldNick = getElementData( thePlayer, "tempdata.originalnick" )
| |
| if ( sOldNick ) then
| |
| --Great, they have a tag added, let's reset them
| |
|
| |
| --First we will want to reset the element data back to its default (that being false)
| |
| setElementData ( thePlayer, "tempdata.originalnick", false )
| |
|
| |
| --Now set the client name back | |
| setPlayerName( thePlayer, sOldNick )
| |
|
| |
| --Notify them
| |
| outputChatBox ( "Your old nickname has been set", thePlayer )
| |
| end | |
| end
| |
| addCommandHandler ( "deltag", removePlayerCustomTag )
| |
| </syntaxhighlight> | |
| </section> | |
| [[tr:setElementData]]
| |
| | |
| ==See Also==
| |
| {{Element_functions}}
| |