Multiuser Lingo Dictionary > Multiuser Lingo Dictionary > setAttribute |  |

setAttribute

Syntax

    system.group.setAttribute [#group: "@groupName", #attribute: [#attribute1: value1 {, #attribute2: value2} {, #lastUpdateTime: "timeString"}]]
    system.DBUser.setAttribute [#userID: "userName", #attribute: [#attribute1: value1 {, #attribute2: value2} {, #lastUpdateTime: "timeString"}]]
    system.DBPlayer.setAttribute [#userID: "userName", #application: "appName", #attribute: [#attribute1: value1 {, #attribute2: value2} {, #lastUpdateTime: "timeString"}]]
    system.DBApplication.setAttribute [#application: "appName", #attribute: [#attribute1: value1 {, #attribute2: value2} {, #lastUpdateTime: "timeString"}]]

Description

Multiuser Server command; sets the value of an attribute for a group or a database object. To set a group attribute, supply the group name. To set a database object attribute, supply the `#userID` attribute, the `#application` attribute, or both. If both are supplied, the attribute is set for the `DBPlayer` object for the given user in the given application.

The `#lastUpdateTime` property is optional and lets you determine whether some other user has updated the attributes of the group since you last checked them with `getAttribute`. When you use `getAttribute`, the server responds with the values of the attributes you requested plus a `#lastUpdateTime` property, which indicates the moment in time when the server read the values of those attributes for the group you requested. The `#lastUpdateTime` property is a string containing the year, month, day, hour, minutes, seconds, and microseconds on the server. By sending this same string with your `setAttribute` command, you allow the server to check whether the attributes for the group have been updated since you last checked them.

If the server determines that the attributes for the group have been updated by someone else since you checked them, it responds with a value in the `#errorCode` property indicating a concurrency error. If no one else has updated the attributes since you checked them, the server responds with a new value in the `#lastUpdateTime` property for the group or database object, indicating that you have just updated the attributes.

Examples

This statement sets the attributes `#teamLeader` and `#location` for the group @RedTeam:

    errCode = gMultiuserInstance.sendNetMessage("system.group.setAttribute", "anySubject", [#group: "@RedTeam", #attribute: [#teamLeader: "Mary", #location: "New York", #lastUpdateTime: "2001/07/26 15:26:33:123456"]])

The server's response looks like this:

    [#errorCode: 0, #recipients: ["userName"], #senderID: "system.group.setAttribute", #subject: "anySubject", #content: ["@RedTeam": [#lastUpdateTime: "2001/08/25 18:55:33.132456"]], #timeStamp: 32189685]

This statement sets the attribute `#favoriteColor` for the DBUser object Bob:

    errCode = gMultiuserInstance.sendNetMessage("system.DBUser.setAttribute", "anySubject", [#userID: "Bob", #attribute: [#favoriteColor: "Blue", #lastUpdateTime: "2001/07/26 15:26:33:123456"]])

The server's response looks like this:

    [#errorCode: 0, #recipients: ["userName"], #senderID: "system.DBUser.setAttribute", #subject: "anySubject", #content: ["Bob": [#lastUpdateTime: "2001/08/25 13:28:22.123456"]], #timeStamp: 184472070]

The following statement sets the attributes `#accountBalance` and `#cardHand` for the DBPlayer object of the user Bob in the movie Poker. The `#accountBalance` and `#cardHand` attributes have already been declared with `declareAttribute`.

    errCode = gMultiuserInstance.sendNetMessage("system.DBPlayer.setAttribute", "anySubject", [#userID: "Bob", #application: "Poker", #attribute: [#accountBalance: 3500, #cardHand: "Royal Flush", #lastUpdateTime: "2001/07/26 15:26:33:123456"]])

The server's response looks like this:

    [#errorCode: 0, #recipients: ["userName"], #senderID: "system.DBPlayer.setAttribute", #subject: "anySubject", #content: ["Bob": [#lastUpdateTime: "2001/08/26 12:43:33.647483"]], #timeStamp: 6461476]

The following statement sets the attribute `#highScore` for the DBApplication object Basketball. The `#highScore` attribute has already been declared with `declareAttribute`.

    errCode = gMultiuserInstance.sendNetMessage("system.DBApplication.setAttribute", "anySubject", [#application: "Basketball", #attribute: [#highScore: 1352, #lastUpdateTime: "2001/07/26 15:26:33:123456"]])

The server's response looks like this:

    [#errorCode: 0, #recipients: ["userName"], #senderID: "system.DBApplication.setAttribute", #subject: "anySubject", #content: ["Basketball": [#lastUpdateTime: "2001/08/25 14:16:14.852673"]], #timeStamp: 187351603]

See also

`getAttribute`, `sendNetMessage()`