SetPlayerIdentity: Difference between revisions

From Wiki G1R-MP G1 Remake Multiplayer
Jump to navigation Jump to search
Document skin color and tattoos available from 0.1.3; identity/armor improvements
Document corrected female identities from upcoming 0.1.9; clarify outfits, armor and neutral expression
Line 5: Line 5:
</div>
</div>


Selects a named head/face identity while preserving the player's game body, equipped armor and independent cosmetic overrides.
Selects a named identity while preserving equipped armor and independent cosmetic overrides. See [[Female identities]] for the expanded female body/outfit presentation from upcoming 0.1.9.


== Syntax ==
== Syntax ==
Line 35: Line 35:
* Available only in server-side resource scripts.
* Available only in server-side resource scripts.
* This existing API has improved behavior in 0.1.3; it was not introduced in that release. Use a key from <code>getPlayerIdentityNames</code>, including <code>default</code> to select the default identity.
* This existing API has improved behavior in 0.1.3; it was not introduced in that release. Use a key from <code>getPlayerIdentityNames</code>, including <code>default</code> to select the default identity.
* The client applies a head-only identity layer, including the selected face presentation and supported hair/beard geometry. The current game body and armor remain in place; this does not replace the full body with the named NPC's mesh, texture set, shape or authored skin tone.
* In public 0.1.8, the client applies a head-only identity layer with supported face/hair/beard geometry. From upcoming 0.1.9, the five [[Female identities|supported female identities]] also display their full authored outfit when no armor is equipped and body/head selections match. With armor equipped, the corrected female head is shown with the native armor. This is not a general body-shape or arbitrary model replacement API.
* The identity layers are committed together in server state. Native asset loading and visual reconstruction are asynchronous, so a successful call does not promise an immediately complete image on every client.
* The identity layers are committed together in server state. Native asset loading and visual reconstruction are asynchronous, so a successful call does not promise an immediately complete image on every client.
* Equipped armor remains controlled independently by <code>setPlayerArmor</code>. This call does not equip or remove items, change HP/progression, or reset <code>setPlayerSkinColor</code>/<code>setPlayerTattoo</code> overrides.
* Equipped armor remains controlled independently by <code>setPlayerArmor</code>. This call does not equip or remove items, change HP/progression, or reset <code>setPlayerSkinColor</code>/<code>setPlayerTattoo</code> overrides.
* Test the identities, armor, exposed skin, materials and LODs used by your resource on local and remote clients; not every authored combination or material permutation is guaranteed to render identically.
* Test the identities, armor, exposed skin, materials and LODs used by your resource on local and remote clients; not every authored combination or material permutation is guaranteed to render identically.
* Reliable server-owned state is replayed on relevance entry and late join. Resources must perform their own authorization before exposing this setter to player requests.
* Reliable server-owned state is replayed on relevance entry and late join. Resources must perform their own authorization before exposing this setter to player requests.
* Accepted changes emit existing compatibility events for the layers that changed: <code>onPlayerFaceChange</code> and <code>onPlayerBodyChange</code> for the legacy face/body state, and <code>onPlayerHeadChange</code> for the head state. The legacy body event name does not mean this renderer replaces the player's full body.
* Accepted changes emit existing compatibility events for the layers that changed: <code>onPlayerFaceChange</code> and <code>onPlayerBodyChange</code> for the legacy face/body state, and <code>onPlayerHeadChange</code> for the head state. These are state-change events, not notifications that visual reconstruction has finished; the female outfit presentation from 0.1.9 does not add a new event.
* See [[Player customization]], [[Player identity catalog]] and [[Player tattoo catalog]] for the independent appearance layers and supported catalogs.
* See [[Player customization]], [[Player identity catalog]] and [[Player tattoo catalog]] for the independent appearance layers and supported catalogs.


Line 47: Line 47:
[[Category:Player Functions]]
[[Category:Player Functions]]
[[Category:Appearance Functions]]
[[Category:Appearance Functions]]
<!-- female019:start -->
== Female presentation improved from 0.1.9 ==
'''Improved from 0.1.9 (upcoming; not yet publicly released).''' This improvement is not included in public 0.1.8.
<code>setPlayerIdentity(playerId, "syra")</code> selects the matched identity; the same applies to <code>velaya</code>, <code>seraphia</code>, <code>chani</code> and <code>natalia</code>. Identity selection remains an existing API. See [[Female identities]] for full-outfit/armor behavior, neutral facial expression and supported customization. The call does not remove armor, change protection or clear tint/tattoos.
<!-- female019:end -->

Revision as of 22:47, 18 October 2026

setPlayerIdentity

IMPROVED FROM UPDATE 0.1.3
This function is available in earlier releases and has corrected or expanded behavior in G1R:MP 0.1.3 and later. The contract below describes the updated behavior.

Selects a named identity while preserving equipped armor and independent cosmetic overrides. See Female identities for the expanded female body/outfit presentation from upcoming 0.1.9.

Syntax

bool setPlayerIdentity(int playerId, string identityKey)

Parameters

Name Type Required Description
playerId int yes The connected player identifier.
identityKey string yes A stable key returned by getPlayerIdentityNames.

Returns

Returns true when the server accepts the validated identity state; returns false for an unavailable player, invalid key or rejected change. Success is not confirmation that every client has finished rendering it.

Examples

Select Milten's head/face without equipping armor or changing the body:

if not setPlayerIdentity(playerId, "milten") then
    outputChatBox("The identity could not be applied.", playerId)
end

Notes

  • Available only in server-side resource scripts.
  • This existing API has improved behavior in 0.1.3; it was not introduced in that release. Use a key from getPlayerIdentityNames, including default to select the default identity.
  • In public 0.1.8, the client applies a head-only identity layer with supported face/hair/beard geometry. From upcoming 0.1.9, the five supported female identities also display their full authored outfit when no armor is equipped and body/head selections match. With armor equipped, the corrected female head is shown with the native armor. This is not a general body-shape or arbitrary model replacement API.
  • The identity layers are committed together in server state. Native asset loading and visual reconstruction are asynchronous, so a successful call does not promise an immediately complete image on every client.
  • Equipped armor remains controlled independently by setPlayerArmor. This call does not equip or remove items, change HP/progression, or reset setPlayerSkinColor/setPlayerTattoo overrides.
  • Test the identities, armor, exposed skin, materials and LODs used by your resource on local and remote clients; not every authored combination or material permutation is guaranteed to render identically.
  • Reliable server-owned state is replayed on relevance entry and late join. Resources must perform their own authorization before exposing this setter to player requests.
  • Accepted changes emit existing compatibility events for the layers that changed: onPlayerFaceChange and onPlayerBodyChange for the legacy face/body state, and onPlayerHeadChange for the head state. These are state-change events, not notifications that visual reconstruction has finished; the female outfit presentation from 0.1.9 does not add a new event.
  • See Player customization, Player identity catalog and Player tattoo catalog for the independent appearance layers and supported catalogs.

Female presentation improved from 0.1.9

Improved from 0.1.9 (upcoming; not yet publicly released). This improvement is not included in public 0.1.8. setPlayerIdentity(playerId, "syra") selects the matched identity; the same applies to velaya, seraphia, chani and natalia. Identity selection remains an existing API. See Female identities for full-outfit/armor behavior, neutral facial expression and supported customization. The call does not remove armor, change protection or clear tint/tattoos.