<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.11/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.11/ http://www.mediawiki.org/xml/export-0.11.xsd" version="0.11" xml:lang="en">
  <siteinfo>
    <sitename>Wiki G1R-MP G1 Remake Multiplayer</sitename>
    <dbname>qcherry2_wiki</dbname>
    <base>https://g1r-mp.com/wiki/index.php?title=Main_Page</base>
    <generator>MediaWiki 1.46.0</generator>
    <case>first-letter</case>
    <namespaces>
      <namespace key="-2" case="first-letter">Media</namespace>
      <namespace key="-1" case="first-letter">Special</namespace>
      <namespace key="0" case="first-letter" />
      <namespace key="1" case="first-letter">Talk</namespace>
      <namespace key="2" case="first-letter">User</namespace>
      <namespace key="3" case="first-letter">User talk</namespace>
      <namespace key="4" case="first-letter">Wiki G1R-MP G1 Remake Multiplayer</namespace>
      <namespace key="5" case="first-letter">Wiki G1R-MP G1 Remake Multiplayer talk</namespace>
      <namespace key="6" case="first-letter">File</namespace>
      <namespace key="7" case="first-letter">File talk</namespace>
      <namespace key="8" case="first-letter">MediaWiki</namespace>
      <namespace key="9" case="first-letter">MediaWiki talk</namespace>
      <namespace key="10" case="first-letter">Template</namespace>
      <namespace key="11" case="first-letter">Template talk</namespace>
      <namespace key="12" case="first-letter">Help</namespace>
      <namespace key="13" case="first-letter">Help talk</namespace>
      <namespace key="14" case="first-letter">Category</namespace>
      <namespace key="15" case="first-letter">Category talk</namespace>
    </namespaces>
  </siteinfo>
  <page>
    <title>Main Page</title>
    <ns>0</ns>
    <id>1</id>
    <revision>
      <id>888</id>
      <parentid>886</parentid>
      <timestamp>2026-09-13T00:41:11Z</timestamp>
      <contributor>
        <username>QCherry</username>
        <id>2</id>
      </contributor>
      <comment>Place the main wiki heading above release announcements</comment>
      <origin>888</origin>
      <model>wikitext</model>
      <format>text/x-wiki</format>
      <text bytes="15241" sha1="81ye14tay022jgvgl0ioybp5c22hblm" xml:space="preserve">__NOTOC__

&lt;div style="background:#111611; color:#eee7d5; border:1px solid #8f7338; border-top:4px solid #c6a251; padding:1.6rem 1.8rem; margin-bottom:1.25rem;"&gt;
&lt;div style="color:#c6a251; font-size:0.78rem; font-weight:bold; letter-spacing:0.08em; text-transform:uppercase;"&gt;Gothic 1 Remake Multiplayer&lt;/div&gt;
&lt;div style="font-size:2.25rem; font-weight:bold; line-height:1.1; margin:0.25rem 0 0.55rem;"&gt;G1R:MP Scripting Wiki&lt;/div&gt;
&lt;div style="max-width:58rem; color:#cfc8b8; font-size:1.02rem; line-height:1.55;"&gt;Build multiplayer resources and gamemodes with Lua 5.1. This wiki documents the server, client, networking, gameplay, database, and RmlUi APIs exposed by G1R:MP.&lt;/div&gt;
&lt;div style="margin-top:1rem; color:#e1c36d; font-size:0.9rem;"&gt;Lua 5.1 &amp;bull; server and client resources &amp;bull; authoritative gameplay &amp;bull; RmlUi&lt;/div&gt;
&lt;/div&gt;

&lt;div style="border:1px solid #b28a3d; border-left:4px solid #b28a3d; background:#faf9f5; padding:0.9rem 1rem; margin:0 0 1.2rem;"&gt;
'''G1R:MP 0.1.3 — official release, BUILD106 / Protocol 35.''' Windows client and Windows/Linux dedicated server downloads are available on the [https://g1r-mp.com/download/ Download page]. Update both the client and server. See [[Update 0.1.3]] for scripting additions and migration notes.
&lt;/div&gt;

&lt;div style="background:#fff8f8; border:1px solid #d13b3b; border-left:5px solid #d13b3b; color:#111; padding:0.95rem 1.1rem; margin:0 0 1.25rem;"&gt;
&lt;div style="color:#111; font-size:1.05rem; font-weight:bold;"&gt;CHAPTER SCREENS — AVAILABLE FROM UPDATE 0.1.3&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.55;"&gt;'''2 new server-side functions''': [[showChapterScreen|ShowChapterScreen]] and [[hideChapterScreen|HideChapterScreen]] (also available with lower-camel aliases). Show custom chapter-style title cards without advancing the story. See [[Chapter screens]] for examples, validation, resource ownership and &lt;code&gt;/chaptertest&lt;/code&gt;.&lt;/div&gt;
&lt;/div&gt;

&lt;div style="background:#fff8f8; border:1px solid #d13b3b; border-left:5px solid #d13b3b; color:#111; padding:0.95rem 1.1rem; margin:0 0 1.25rem;"&gt;
&lt;div style="color:#111; font-size:1.05rem; font-weight:bold; letter-spacing:0.04em;"&gt;OBSERVER NAMEPLATES — AVAILABLE FROM UPDATE 0.1.3&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.55;"&gt;'''12 new server-side functions''' add per-observer text, whole-label visibility and numeric-ID policy. Build directional acquaintance presentation with exclusive resource-owned fields and reliable relevance replay. See [[Observer nameplates]] for APIs, lifecycle, database integration and the optional three-client &lt;code&gt;/nametest&lt;/code&gt; sequence. Overhead customization does not anonymize other packets, chat or player lists.&lt;/div&gt;
&lt;/div&gt;

&lt;div style="background:#fff8f8; border:1px solid #d13b3b; border-left:5px solid #d13b3b; color:#111; padding:0.95rem 1.1rem; margin:0 0 1.25rem;"&gt;
&lt;div style="color:#111; font-size:1.05rem; font-weight:bold; letter-spacing:0.04em;"&gt;PLAYER CUSTOMIZATION — AVAILABLE FROM UPDATE 0.1.3&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.55;"&gt;'''7 new server-side functions''' provide independent skin-color and tattoo overrides. Existing identity selection has improved head and armor compatibility from update 0.1.3. See [[Player customization]] for examples and reset behavior, and [[Player tattoo catalog]] for all 12 keys.&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.65rem; line-height:1.65;"&gt;&lt;strong&gt;Skin color:&lt;/strong&gt; [[setPlayerSkinColor]] &amp;bull; [[getPlayerSkinColor]] &amp;bull; [[resetPlayerSkinColor]]&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.65;"&gt;&lt;strong&gt;Tattoos:&lt;/strong&gt; [[setPlayerTattoo]] &amp;bull; [[getPlayerTattoo]] &amp;bull; [[resetPlayerTattoo]] &amp;bull; [[getPlayerTattooNames]]&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.65;"&gt;&lt;strong&gt;Improved existing API:&lt;/strong&gt; [[setPlayerIdentity]] keeps the game-owned body and equipped armor. These are cosmetic controls, not a full NPC body/outfit replacement.&lt;/div&gt;
&lt;/div&gt;

&lt;div style="background:#fff8f8; border:1px solid #d13b3b; border-left:5px solid #d13b3b; color:#111; padding:0.95rem 1.1rem; margin:0 0 1.25rem;"&gt;
&lt;div style="color:#111; font-size:1.05rem; font-weight:bold; letter-spacing:0.04em;"&gt;SCRIPTED CAMERA — AVAILABLE FROM UPDATE 0.1.3&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.55;"&gt;'''15 camera functions''' and '''2 client camera events''' are available from G1R:MP 0.1.3. Build login backgrounds, fixed shots, smooth transitions, paths and orbits. See [[Scripted camera]] for examples, limits and client/server differences.&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.65rem; line-height:1.65;"&gt;&lt;strong&gt;Client and server (10):&lt;/strong&gt; [[setCameraPos]] &amp;bull; [[setCameraRot]] &amp;bull; [[setCameraLookAt]] &amp;bull; [[setCameraFOV]] &amp;bull; [[setCameraPose]] &amp;bull; [[moveCameraTo]] &amp;bull; [[playCameraPath]] &amp;bull; [[orbitCamera]] &amp;bull; [[stopCameraMovement]] &amp;bull; [[resetCameraPos]]&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.65;"&gt;&lt;strong&gt;Client read-back (5):&lt;/strong&gt; [[getCameraPos]] &amp;bull; [[getCameraRot]] &amp;bull; [[getCameraFOV]] &amp;bull; [[getCameraState]] &amp;bull; [[requestCameraState]]&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.65;"&gt;&lt;strong&gt;Client events (2):&lt;/strong&gt; [[onClientCameraCommandResult]] &amp;bull; [[onClientCameraReset]]. Client commands use asynchronous acknowledgements; server calls return only a queued boolean.&lt;/div&gt;
&lt;/div&gt;

&lt;div style="background:#fff8f8; border:1px solid #d13b3b; border-left:5px solid #d13b3b; color:#111; padding:0.95rem 1.1rem; margin:0 0 1.25rem;"&gt;
&lt;div style="color:#111; font-size:1.05rem; font-weight:bold; letter-spacing:0.04em;"&gt;AVAILABLE AND IMPROVED FROM UPDATE 0.1.2&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.55;"&gt;The following '''40 Lua functions''' &amp;mdash; 29 server-side and 11 client-side &amp;mdash; are available from G1R:MP 0.1.2. Existing lifecycle, inventory, JSON, NPC, monster, and world-item APIs also include corrected or expanded behavior from this update.&lt;/div&gt;

&lt;div style="color:#111; margin-top:0.65rem; line-height:1.65;"&gt;&lt;strong&gt;Accounts and consumables (4):&lt;/strong&gt; [[completePlayerConsumableFinalize]] &amp;bull; [[completePlayerConsumableUse]] &amp;bull; [[getPlayerAccountBindingSerial]] &amp;bull; [[getPlayerConsumableNames]]&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.65;"&gt;&lt;strong&gt;World items (1):&lt;/strong&gt; [[spawnItem]] &amp;mdash; see also the [[World item catalog]].&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.65;"&gt;&lt;strong&gt;Monster identity, health, and combat (5):&lt;/strong&gt; [[setMonsterName]] &amp;bull; [[setMonsterIdVisible]] &amp;bull; [[setMonsterMaxHealth]] &amp;bull; [[getMonsterAttackDamage]] &amp;bull; [[setMonsterAttackDamage]]&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.65;"&gt;&lt;strong&gt;Monster navigation (6):&lt;/strong&gt; [[setMonsterNavigationMode]] &amp;bull; [[setMonsterNavigationCollisionMode]] &amp;bull; [[setMonsterMoveGoal]] &amp;bull; [[stopMonsterMovement]] &amp;bull; [[testMonsterMove]] &amp;bull; [[walkMonsterTo]]&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.65;"&gt;&lt;strong&gt;NPC identity and navigation (7):&lt;/strong&gt; [[setNpcIdVisible]] &amp;bull; [[setNpcObstacleBehavior]] &amp;bull; [[setNpcNavigationMode]] &amp;bull; [[setNpcNavigationCollisionMode]] &amp;bull; [[setNpcMoveGoal]] &amp;bull; [[stopNpcMovement]] &amp;bull; [[testNpcMove]]&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.65;"&gt;&lt;strong&gt;Custom navigation blockers (6):&lt;/strong&gt; [[createAiNavigationBlocker]] &amp;bull; [[updateAiNavigationBlocker]] &amp;bull; [[setAiNavigationBlockerEnabled]] &amp;bull; [[destroyAiNavigationBlocker]] &amp;bull; [[getAiNavigationBlockerData]] &amp;bull; [[getAiNavigationBlockers]] &amp;mdash; see [[NPC and monster navigation collision]].&lt;/div&gt;
&lt;div style="color:#111; margin-top:0.35rem; line-height:1.65;"&gt;&lt;strong&gt;Client audio (11):&lt;/strong&gt; [[playSound]] &amp;bull; [[playSound3D]] &amp;bull; [[stopSound]] &amp;bull; [[setSoundVolume]] &amp;bull; [[getSoundVolume]] &amp;bull; [[setSoundPaused]] &amp;bull; [[isSoundPaused]] &amp;bull; [[isSoundPlaying]] &amp;bull; [[setSoundLooped]] &amp;bull; [[setSound3DPosition]] &amp;bull; [[setSound3DMinMaxDistance]] &amp;mdash; see [[Client audio]].&lt;/div&gt;

&lt;div style="color:#111; margin-top:0.65rem; line-height:1.65;"&gt;&lt;strong&gt;Events available from 0.1.2 (8):&lt;/strong&gt; [[onNpcIdVisibilityChange]] &amp;bull; [[onMonsterNameChange]] &amp;bull; [[onMonsterIdVisibilityChange]] &amp;bull; [[onMonsterMoveBlocked]] &amp;bull; [[onMonsterMoveComplete]] &amp;bull; [[onNpcMoveBlocked]] &amp;bull; [[onNpcMoveComplete]] &amp;bull; [[onWorldItemDrop]]. Existing [[onPlayerJoin]], [[onPlayerQuit]], [[onWorldItemPickup]], and [[onWorldItemSpawn]] contracts are also improved from 0.1.2.&lt;/div&gt;
&lt;/div&gt;

&lt;div style="display:flex; flex-wrap:wrap; gap:1rem; margin-bottom:1rem;"&gt;
&lt;div style="flex:1 1 22rem; border:1px solid #c9c2b2; border-left:4px solid #b28a3d; padding:1rem 1.15rem; background:#faf9f5;"&gt;
&lt;div style="font-size:1.35rem; font-weight:bold; margin-bottom:0.45rem;"&gt;Start here&lt;/div&gt;
&lt;div style="color:#555; margin-bottom:0.6rem;"&gt;Find the right entry point for your first resource.&lt;/div&gt;
&lt;ul style="margin:0.35rem 0 0 1.25rem; line-height:1.75;"&gt;
&lt;li&gt;[[:Category:Lua API|Lua API overview]]&lt;/li&gt;
&lt;li&gt;[[:Category:Lua Functions|Complete function catalog]]&lt;/li&gt;
&lt;li&gt;[[Lua events|Complete event and callback catalog]]&lt;/li&gt;
&lt;li&gt;[[Scripting limits|Lua, resource and API limits — 0.1.3 BUILD81]]&lt;/li&gt;
&lt;li&gt;[[Lua API catalogs|Validated skin, monster, equipment, and gameplay keys]]&lt;/li&gt;
&lt;li&gt;[[NPC and monster navigation collision|NPC and monster navigation collision]]&lt;/li&gt;
&lt;li&gt;[[Client audio|Client audio and synchronized 3D playback]]&lt;/li&gt;
&lt;li&gt;[[Scripted camera|Scripted camera and moving login backgrounds (0.1.3)]]&lt;/li&gt;
&lt;li&gt;[[Chapter screens|Custom chapter title cards (0.1.3)]]&lt;/li&gt;
&lt;li&gt;[[Observer nameplates|Observer-specific labels and acquaintance presentation (0.1.3)]]&lt;/li&gt;
&lt;li&gt;[[:Category:Resource Functions|Resource lifecycle functions]]&lt;/li&gt;
&lt;li&gt;[[:Category:Lua Examples|Lua examples]]&lt;/li&gt;
&lt;li&gt;[[Hosting a G1R:MP dedicated server|Hosting a dedicated server]]&lt;/li&gt;
&lt;li&gt;[[:Category:Experimental Lua API|Experimental API status]]&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div style="flex:1 1 22rem; border:1px solid #c9c2b2; border-left:4px solid #6f8461; padding:1rem 1.15rem; background:#faf9f5;"&gt;
&lt;div style="font-size:1.35rem; font-weight:bold; margin-bottom:0.45rem;"&gt;Reference by execution side&lt;/div&gt;
&lt;div style="color:#555; margin-bottom:0.6rem;"&gt;Check where a function is available before using it.&lt;/div&gt;
&lt;ul style="margin:0.35rem 0 0 1.25rem; line-height:1.75;"&gt;
&lt;li&gt;[[:Category:Server Functions|Server-side functions]]&lt;/li&gt;
&lt;li&gt;[[:Category:Client Functions|Client-side functions]]&lt;/li&gt;
&lt;li&gt;[[:Category:Audio Functions|Client audio functions]]&lt;/li&gt;
&lt;li&gt;[[:Category:Shared Functions|Shared functions]]&lt;/li&gt;
&lt;li&gt;[[:Category:Server Events|Server-side events]]&lt;/li&gt;
&lt;li&gt;[[:Category:Client Events|Client-side events]]&lt;/li&gt;
&lt;li&gt;[[:Category:Event Functions|Event functions]]&lt;/li&gt;
&lt;li&gt;[[:Category:Network Functions|Network functions]]&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div style="display:flex; flex-wrap:wrap; gap:1rem; margin-bottom:1rem;"&gt;
&lt;div style="flex:1 1 22rem; border:1px solid #c9c2b2; padding:1rem 1.15rem; background:#fff;"&gt;
&lt;div style="font-size:1.25rem; font-weight:bold; border-bottom:1px solid #ded8ca; padding-bottom:0.45rem; margin-bottom:0.6rem;"&gt;Gameplay&lt;/div&gt;
&lt;div style="display:grid; grid-template-columns:repeat(auto-fit,minmax(10rem,1fr)); gap:0.4rem 1rem; line-height:1.65;"&gt;
&lt;div&gt;[[:Category:Player Functions|Players]]&lt;/div&gt;
&lt;div&gt;[[:Category:Spatial Functions|Position and spawn]]&lt;/div&gt;
&lt;div&gt;[[:Category:Progression Functions|Progression]]&lt;/div&gt;
&lt;div&gt;[[:Category:Inventory Functions|Inventory]]&lt;/div&gt;
&lt;div&gt;[[:Category:Equipment Functions|Equipment]]&lt;/div&gt;
&lt;div&gt;[[:Category:Magic Functions|Magic]]&lt;/div&gt;
&lt;div&gt;[[:Category:Life State Functions|Health and life state]]&lt;/div&gt;
&lt;div&gt;[[:Category:World Functions|World time and weather]]&lt;/div&gt;
&lt;div&gt;[[:Category:Monster Functions|Monsters]]&lt;/div&gt;
&lt;div&gt;[[:Category:Navigation Functions|AI navigation]]&lt;/div&gt;
&lt;div&gt;[[:Category:Interaction Functions|Interactions]]&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div style="flex:1 1 22rem; border:1px solid #c9c2b2; padding:1rem 1.15rem; background:#fff;"&gt;
&lt;div style="font-size:1.25rem; font-weight:bold; border-bottom:1px solid #ded8ca; padding-bottom:0.45rem; margin-bottom:0.6rem;"&gt;Scripting systems&lt;/div&gt;
&lt;div style="display:grid; grid-template-columns:repeat(auto-fit,minmax(10rem,1fr)); gap:0.4rem 1rem; line-height:1.65;"&gt;
&lt;div&gt;[[:Category:GUI Functions|RmlUi and GUI]]&lt;/div&gt;
&lt;div&gt;[[:Category:Database Functions|Database]]&lt;/div&gt;
&lt;div&gt;[[Known issue: MySQL error 2006 (Server has gone away)|Known MySQL/MariaDB issue]]&lt;/div&gt;
&lt;div&gt;[[:Category:Timer Functions|Timers]]&lt;/div&gt;
&lt;div&gt;[[:Category:Command Functions|Commands]]&lt;/div&gt;
&lt;div&gt;[[:Category:Chat Functions|Chat]]&lt;/div&gt;
&lt;div&gt;[[:Category:Animation Functions|Animations]]&lt;/div&gt;
&lt;div&gt;[[Client audio|Client audio and OGG playback]]&lt;/div&gt;
&lt;div&gt;[[:Category:Camera Functions|Camera]]&lt;/div&gt;
&lt;div&gt;[[Lua events|Events and callbacks]]&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

== Your first server script ==

The following example welcomes a joining player and places them at an authoritative spawn point:

&lt;syntaxhighlight lang="lua" line&gt;
addEventHandler("onPlayerJoin", root, function(playerId)
    setPlayerName(playerId, "Newcomer")
    spawnPlayer(playerId, 12.0, 24.0, 2.0, 90)
    outputChatBox("Welcome to G1R:MP!", playerId, 225, 195, 110)
end)
&lt;/syntaxhighlight&gt;

See [[onPlayerJoin]], [[AddEventHandler|addEventHandler]], [[SetPlayerName|setPlayerName]], [[SpawnPlayer|spawnPlayer]], and [[OutputChatBox|outputChatBox]] for parameter details and additional examples.

&lt;div style="display:flex; flex-wrap:wrap; gap:1rem; margin-top:1.25rem;"&gt;
&lt;div style="flex:1 1 22rem; border-top:3px solid #b28a3d; background:#f5f2e9; padding:1rem 1.15rem;"&gt;
&lt;div style="font-size:1.2rem; font-weight:bold; margin-bottom:0.4rem;"&gt;Community&lt;/div&gt;
&lt;ul style="margin:0.35rem 0 0 1.25rem; line-height:1.7;"&gt;
&lt;li&gt;[https://g1r-mp.com/ G1R:MP website]&lt;/li&gt;
&lt;li&gt;[https://g1r-mp.com/forum/ Community forum]&lt;/li&gt;
&lt;li&gt;[https://g1r-mp.com/forum/member.php?action=profile&amp;uid=1 Project lead: QCherry]&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div style="flex:1 1 22rem; border-top:3px solid #6f8461; background:#f5f2e9; padding:1rem 1.15rem;"&gt;
&lt;div style="font-size:1.2rem; font-weight:bold; margin-bottom:0.4rem;"&gt;Documentation status&lt;/div&gt;
&lt;div style="line-height:1.6;"&gt;The reference contains '''312 Lua functions''' and '''94 events''', including '''2 chapter-screen functions, 12 observer/nameplate-ID functions, 7 skin-color/tattoo functions, 15 camera functions and 2 camera events available from update 0.1.3'''. Version notices distinguish newly available APIs from improved contracts in earlier APIs. See [[Chapter screens]] for custom title cards, [[Observer nameplates]] for directional labels, [[Player customization]] for identity, color and tattoos, [[Lua API catalogs]] for validated gameplay keys, and [[Scripted camera]] for camera state and lifecycle rules. APIs marked [[:Category:Experimental Lua API|experimental]] may still change while the multiplayer runtime is under active development.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

[[Category:Lua API]]</text>
      <sha1>81ye14tay022jgvgl0ioybp5c22hblm</sha1>
    </revision>
  </page>
</mediawiki>
