SetPlayerIdentity: Difference between revisions

From Wiki G1R-MP G1 Remake Multiplayer
Jump to navigation Jump to search
Document 0.1a Lua API, identities, moderation and synchronized spells
Document skin color and tattoos available from 0.1.3; identity/armor improvements
 
Line 1: Line 1:
= setPlayerIdentity =
= setPlayerIdentity =
Atomically changes a player's complete recognizable appearance without changing armor.
<div style="background:#fff5f5; border:1px solid #d13b3b; border-left:5px solid #d13b3b; color:#111111; padding:0.85rem 1rem; margin:0.75rem 0 1rem;">
<div style="color:#111111; font-weight:bold; letter-spacing:0.04em;">IMPROVED FROM UPDATE 0.1.3</div>
<div style="color:#111111; margin-top:0.25rem;">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.</div>
</div>
 
Selects a named head/face identity while preserving the player's game body, equipped armor and independent cosmetic overrides.


== Syntax ==
== Syntax ==
Line 17: Line 22:


== Returns ==
== Returns ==
Returns <code>true</code> when the validated identity is accepted and replicated; otherwise returns <code>false</code>.
Returns <code>true</code> when the server accepts the validated identity state; returns <code>false</code> for an unavailable player, invalid key or rejected change. Success is not confirmation that every client has finished rendering it.


== Examples ==
== Examples ==
Apply Milten's armor-free identity:
Select Milten's head/face without equipping armor or changing the body:
<syntaxhighlight lang="lua" line>
<syntaxhighlight lang="lua" line>
if not setPlayerIdentity(playerId, "milten") then
if not setPlayerIdentity(playerId, "milten") then
Line 29: Line 34:
== Notes ==
== Notes ==
* Available only in server-side resource scripts.
* Available only in server-side resource scripts.
* In G1R:MP 0.1 this is the only supported setter for a complete player identity. The test command <code>/identity &lt;key&gt;</code> uses this API.
* 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 face profile and identity surface/hair layer are committed in one authoritative update, so clients never observe a half-applied 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.
* Equipped armor remains controlled by <code>setPlayerArmor</code>; selecting an identity does not equip armor.
* 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.
* Gothic Remake character models and variants are authored with different armor support. Not every identity/armor combination exists or renders correctly, so test every combination used by a resource.
* 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.
* The reliable state is replayed during relevance entry and late join.
* 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.
* Accepted changes emit the existing compatibility events for the layers that changed: <code>onPlayerFaceChange</code> and <code>onPlayerBodyChange</code> for the face/body layer, and <code>onPlayerHeadChange</code> for the head layer.
* 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.
* See [[Player customization]], [[Player identity catalog]] and [[Player tattoo catalog]] for the independent appearance layers and supported catalogs.


[[Category:Lua Functions]]
[[Category:Lua Functions]]

Latest revision as of 02:32, 9 September 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 head/face identity while preserving the player's game body, equipped armor and independent cosmetic overrides.

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.
  • 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.
  • 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. The legacy body event name does not mean this renderer replaces the player's full body.
  • See Player customization, Player identity catalog and Player tattoo catalog for the independent appearance layers and supported catalogs.