<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[G1R:MP Forum - G1 Remake Multiplayer Community - All Forums]]></title>
		<link>https://g1r-mp.com/forum/</link>
		<description><![CDATA[G1R:MP Forum - G1 Remake Multiplayer Community - https://g1r-mp.com/forum]]></description>
		<pubDate>Sat, 19 Sep 2026 05:34:49 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Cancellable pre-action hooks for custom resources]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=61</link>
			<pubDate>Thu, 17 Sep 2026 16:02:48 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=20">RhyZe</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=61</guid>
			<description><![CDATA[Hi! <br />
<br />
Could G1R:MP expose server-side hooks that let custom resources reject gameplay actions before their effects are applied?<br />
According to the wiki, pickup, drop and damage events report completed changes.<br />
For RP servers, public pre-action hooks would allow ownership checks, protected items and custom combat restrictions.<br />
<br />
For example.:<br />
<br />
_____________________________________________________<br />
<br />
addEventHandler("onPlayerRequestPickup", root,<br />
    function(playerId, objectId)<br />
        -- Custom permission check<br />
        if not canPlayerTakeItem(playerId, objectId) then<br />
            cancelEvent()<br />
        end<br />
    end<br />
)<br />
<br />
_____________________________________________________<br />
<br />
<br />
Similar hooks for dropping, equipping, consuming items and applying damage would be useful. Cancellation should prevent the action without requiring scripts to undo inventory or health changes afterward.<br />
<br />
This would complement the existing native validation and completion events. Are public pre-action hooks planned?]]></description>
			<content:encoded><![CDATA[Hi! <br />
<br />
Could G1R:MP expose server-side hooks that let custom resources reject gameplay actions before their effects are applied?<br />
According to the wiki, pickup, drop and damage events report completed changes.<br />
For RP servers, public pre-action hooks would allow ownership checks, protected items and custom combat restrictions.<br />
<br />
For example.:<br />
<br />
_____________________________________________________<br />
<br />
addEventHandler("onPlayerRequestPickup", root,<br />
    function(playerId, objectId)<br />
        -- Custom permission check<br />
        if not canPlayerTakeItem(playerId, objectId) then<br />
            cancelEvent()<br />
        end<br />
    end<br />
)<br />
<br />
_____________________________________________________<br />
<br />
<br />
Similar hooks for dropping, equipping, consuming items and applying damage would be useful. Cancellation should prevent the action without requiring scripts to undo inventory or health changes afterward.<br />
<br />
This would complement the existing native validation and completion events. Are public pre-action hooks planned?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Instances / Virtual Worlds]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=60</link>
			<pubDate>Thu, 17 Sep 2026 15:58:47 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=20">RhyZe</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=60</guid>
			<description><![CDATA[Hi! <br />
<br />
For our Roleplay server, this would be useful for character creation, private RP events and separate dungeon groups.<br />
<br />
Players in different instances should not see, hear or interact with each other. NPCs, world items, combat and spatial voice should respect the same separation.<br />
<br />
For example.:<br />
 __________________________________________ <br />
<br />
local instanceId = createInstance()<br />
<br />
setPlayerInstance(playerId, instanceId)<br />
setNpcInstance(npcId, instanceId)<br />
<br />
-- Return to the main world<br />
setPlayerInstance(playerId, 0)<br />
<br />
-- Once players have left<br />
destroyInstance(instanceId)<br />
<br />
__________________________________________<br />
<br />
Server-controlled membership and clear cleanup rules would help prevent entities or interactions leaking between instances.<br />
<br />
I couldn't find this in the wiki. Is something similar already available or planned?]]></description>
			<content:encoded><![CDATA[Hi! <br />
<br />
For our Roleplay server, this would be useful for character creation, private RP events and separate dungeon groups.<br />
<br />
Players in different instances should not see, hear or interact with each other. NPCs, world items, combat and spatial voice should respect the same separation.<br />
<br />
For example.:<br />
 __________________________________________ <br />
<br />
local instanceId = createInstance()<br />
<br />
setPlayerInstance(playerId, instanceId)<br />
setNpcInstance(npcId, instanceId)<br />
<br />
-- Return to the main world<br />
setPlayerInstance(playerId, 0)<br />
<br />
-- Once players have left<br />
destroyInstance(instanceId)<br />
<br />
__________________________________________<br />
<br />
Server-controlled membership and clear cleanup rules would help prevent entities or interactions leaking between instances.<br />
<br />
I couldn't find this in the wiki. Is something similar already available or planned?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Object placement previews and editing API]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=59</link>
			<pubDate>Thu, 17 Sep 2026 15:55:56 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=20">RhyZe</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=59</guid>
			<description><![CDATA[Hi! <br />
<br />
For our Roleplay server, we are building an in-game world editor.<br />
<br />
`spawnItem` already supports exact coordinates, yaw and ground snapping. <br />
<br />
To complement this, could we get:<br />
<br />
- Transparent, client-only previews without collision or pickup.<br />
- Camera raycasts for placement targeting.<br />
- Functions to move, rotate and delete existing world items.<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">an small Example.:</span><br />
____________________________________________________________<br />
<br />
-- Client: local preview<br />
local preview = createObjectPreview("itfo_apple", x, y, z)<br />
setObjectPreviewOpacity(preview, 0.45)<br />
<br />
local hit = raycastFromCamera(maxDistance)<br />
if hit then<br />
    setObjectPreviewPosition(preview, hit.x, hit.y, hit.z)<br />
    setObjectPreviewRotation(preview, yaw)<br />
end<br />
<br />
destroyObjectPreview(preview)<br />
<br />
-- Server: edit an existing item<br />
setWorldItemPosition(objectId, x, y, z)<br />
setWorldItemRotation(objectId, yaw)<br />
destroyWorldItem(objectId)<br />
<br />
________________________________________________________<br />
<br />
Placement would use the existing `spawnItem` after server validation. <br />
These additions would allow preview → adjust → confirm, plus editing placed items.<br />
<br />
I couldn't find these features in the wiki. If equivalents already exist, a short example would be appreciated!<br />
<br />
Cheers!]]></description>
			<content:encoded><![CDATA[Hi! <br />
<br />
For our Roleplay server, we are building an in-game world editor.<br />
<br />
`spawnItem` already supports exact coordinates, yaw and ground snapping. <br />
<br />
To complement this, could we get:<br />
<br />
- Transparent, client-only previews without collision or pickup.<br />
- Camera raycasts for placement targeting.<br />
- Functions to move, rotate and delete existing world items.<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">an small Example.:</span><br />
____________________________________________________________<br />
<br />
-- Client: local preview<br />
local preview = createObjectPreview("itfo_apple", x, y, z)<br />
setObjectPreviewOpacity(preview, 0.45)<br />
<br />
local hit = raycastFromCamera(maxDistance)<br />
if hit then<br />
    setObjectPreviewPosition(preview, hit.x, hit.y, hit.z)<br />
    setObjectPreviewRotation(preview, yaw)<br />
end<br />
<br />
destroyObjectPreview(preview)<br />
<br />
-- Server: edit an existing item<br />
setWorldItemPosition(objectId, x, y, z)<br />
setWorldItemRotation(objectId, yaw)<br />
destroyWorldItem(objectId)<br />
<br />
________________________________________________________<br />
<br />
Placement would use the existing `spawnItem` after server validation. <br />
These additions would allow preview → adjust → confirm, plus editing placed items.<br />
<br />
I couldn't find these features in the wiki. If equivalents already exist, a short example would be appreciated!<br />
<br />
Cheers!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[mouse handler and equip weapon fix]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=58</link>
			<pubDate>Thu, 17 Sep 2026 10:31:45 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=62">asvra</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=58</guid>
			<description><![CDATA[- add handling mouse movements<br />
- setplayerweapon function adding properly only melee weapons but not ranged]]></description>
			<content:encoded><![CDATA[- add handling mouse movements<br />
- setplayerweapon function adding properly only melee weapons but not ranged]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Feature request] IsPlayerCombatMode]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=57</link>
			<pubDate>Tue, 15 Sep 2026 17:40:36 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=4">PaolSon44</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=57</guid>
			<description><![CDATA[Hey,<br />
<br />
Something like that will be cool:<br />
<br />
<span style="font-size: large;" class="mycode_size">isPlayerCombatMode</span><br />
<hr class="mycode_hr" />
Checks wheter player is in combat mode. Usually like held melee / distance weapon, fists or use magic.<br />
<br />
<span style="font-size: large;" class="mycode_size">Syntax</span><br />
<hr class="mycode_hr" />
<blockquote class="mycode_quote"><cite>Quote:</cite>bool isPlayerCombatMode(int playerId)  </blockquote>
<br />
<span style="font-size: large;" class="mycode_size">Examples</span><br />
<hr class="mycode_hr" />
<blockquote class="mycode_quote"><cite>Quote:</cite>if isPlayerCombatMode(playerId) then<br />
    unbindKey("tab", "both", handleScoreboard)<br />
end </blockquote>
<br />
In this way server can check player combat state, so this will enable to protect other functions which would be disturb a combat.  <img src="https://g1r-mp.com/forum/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" />]]></description>
			<content:encoded><![CDATA[Hey,<br />
<br />
Something like that will be cool:<br />
<br />
<span style="font-size: large;" class="mycode_size">isPlayerCombatMode</span><br />
<hr class="mycode_hr" />
Checks wheter player is in combat mode. Usually like held melee / distance weapon, fists or use magic.<br />
<br />
<span style="font-size: large;" class="mycode_size">Syntax</span><br />
<hr class="mycode_hr" />
<blockquote class="mycode_quote"><cite>Quote:</cite>bool isPlayerCombatMode(int playerId)  </blockquote>
<br />
<span style="font-size: large;" class="mycode_size">Examples</span><br />
<hr class="mycode_hr" />
<blockquote class="mycode_quote"><cite>Quote:</cite>if isPlayerCombatMode(playerId) then<br />
    unbindKey("tab", "both", handleScoreboard)<br />
end </blockquote>
<br />
In this way server can check player combat state, so this will enable to protect other functions which would be disturb a combat.  <img src="https://g1r-mp.com/forum/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Nameplate Color]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=55</link>
			<pubDate>Sun, 13 Sep 2026 17:14:36 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=11">Xardas0327</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=55</guid>
			<description><![CDATA[It would be useful, if we can change the nameplates' color.<br />
I think it can be useful for deathmatch teams or for guilds.<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>SetPlayerNameplateColor(playerid, r, g, b)</blockquote>
<blockquote class="mycode_quote"><cite>Quote:</cite>local r, g, b =  GetPlayerNameplateColor(playerid)</blockquote>
<br />
I think it is useless if the name and the id can has different color, but who knows. <img src="https://g1r-mp.com/forum/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" />]]></description>
			<content:encoded><![CDATA[It would be useful, if we can change the nameplates' color.<br />
I think it can be useful for deathmatch teams or for guilds.<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>SetPlayerNameplateColor(playerid, r, g, b)</blockquote>
<blockquote class="mycode_quote"><cite>Quote:</cite>local r, g, b =  GetPlayerNameplateColor(playerid)</blockquote>
<br />
I think it is useless if the name and the id can has different color, but who knows. <img src="https://g1r-mp.com/forum/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Random Number]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=54</link>
			<pubDate>Sun, 13 Sep 2026 17:04:38 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=11">Xardas0327</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=54</guid>
			<description><![CDATA[It would be good if we have random number generator.<br />
<br />
For example:<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>getRandomInt(includeMinInt, excludeMaxInt) -- Maybe it also should be fine if the top number is include too. </blockquote>
<br />
and<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>getRandomFloat (includeMinFloat, includeMaxFloat ) -- The top number should be included here.</blockquote>
<br />
Note:<br />
I tried to use this code. But if I use this code, the server drop my character and the server reconnected it. (even on 0.1.3)<br />
Moreover, this is not true random. I should use something similar like this <span style="font-style: italic;" class="mycode_i">math.randomseed(os.time()),</span> but the os is not available from 0.1.3.<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>local startPositions = {<br />
    { x = 1116.75, y = -1007.51, z = -36.66 },<br />
    { x = 1106.01, y = -1049.35, z = -29.86 },<br />
    { x = 1100.28, y = -1050.55, z = -35.44 },<br />
    { x = 1115.40, y = -1049.39, z = -37.10 },<br />
    { x = 1161.29, y = -1050.89, z = -42.04 },<br />
    { x = 1154.55, y = -1011.29, z = -42.16 },<br />
}<br />
<br />
addCommandHandler("castle", function(playerId, commandName)<br />
    local randomIndex = math.random(1, #startPositions)<br />
    setPlayerPosition(<br />
        playerId,<br />
        startPositions[randomIndex].x,<br />
        startPositions[randomIndex].y,<br />
        startPositions[randomIndex].z<br />
    )<br />
end)</blockquote>
]]></description>
			<content:encoded><![CDATA[It would be good if we have random number generator.<br />
<br />
For example:<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>getRandomInt(includeMinInt, excludeMaxInt) -- Maybe it also should be fine if the top number is include too. </blockquote>
<br />
and<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>getRandomFloat (includeMinFloat, includeMaxFloat ) -- The top number should be included here.</blockquote>
<br />
Note:<br />
I tried to use this code. But if I use this code, the server drop my character and the server reconnected it. (even on 0.1.3)<br />
Moreover, this is not true random. I should use something similar like this <span style="font-style: italic;" class="mycode_i">math.randomseed(os.time()),</span> but the os is not available from 0.1.3.<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>local startPositions = {<br />
    { x = 1116.75, y = -1007.51, z = -36.66 },<br />
    { x = 1106.01, y = -1049.35, z = -29.86 },<br />
    { x = 1100.28, y = -1050.55, z = -35.44 },<br />
    { x = 1115.40, y = -1049.39, z = -37.10 },<br />
    { x = 1161.29, y = -1050.89, z = -42.04 },<br />
    { x = 1154.55, y = -1011.29, z = -42.16 },<br />
}<br />
<br />
addCommandHandler("castle", function(playerId, commandName)<br />
    local randomIndex = math.random(1, #startPositions)<br />
    setPlayerPosition(<br />
        playerId,<br />
        startPositions[randomIndex].x,<br />
        startPositions[randomIndex].y,<br />
        startPositions[randomIndex].z<br />
    )<br />
end)</blockquote>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[G1R:MP Update 0.1.3 — Now Available!]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=53</link>
			<pubDate>Sun, 13 Sep 2026 00:34:52 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=1">QCherry</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=53</guid>
			<description><![CDATA[<span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">G1R:MP Update 0.1.3 — Now Available!</span></span><br />
<br />
The Colony keeps growing! Update <span style="font-weight: bold;" class="mycode_b">0.1.3</span> introduces synchronized gates and doors, expanded character customization, scripted cameras, new roleplay tools and more possibilities for Lua gamemodes.<br />
<br />
This release includes the <span style="font-weight: bold;" class="mycode_b">Windows client</span> and matching <span style="font-weight: bold;" class="mycode_b">Windows and Linux dedicated servers</span>.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Synchronized Gates, Doors and Controls</span></span><br />
<br />
Gates and doors are now part of the shared multiplayer world.<br />
<ul class="mycode_list"><li>Opening and closing gates and doors is synchronized between players.<br />
</li>
<li>Gate controls, including winches, participate in synchronization.<br />
</li>
<li>Players joining later receive the current synchronized state.<br />
</li>
<li>Other players can see the character animations used when opening doors, closing doors and operating winches.<br />
</li>
<li>Supported standard doors can be closed again after opening.<br />
</li>
<li>Native key and lock requirements are preserved.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Expanded Character Customization</span></span><br />
<br />
Server creators now have more control over how characters look — useful for character creation, factions, roleplay progression and cosmetic systems.<br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Identity selection:</span> improved compatibility between character heads and equipped armor.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Skin color:</span> apply a custom skin-color override independently of identity selection.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Tattoos:</span> choose from the documented tattoo catalog.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Independent resets:</span> remove a skin-color or tattoo override without having to reset everything else.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Multiplayer appearance:</span> appearance changes are synchronized for other players.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Appearance functions available from 0.1.3:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>setPlayerSkinColor
getPlayerSkinColor
resetPlayerSkinColor

setPlayerTattoo
getPlayerTattoo
resetPlayerTattoo
getPlayerTattooNames</code></div></div><br />
The existing <span style="font-weight: bold;" class="mycode_b">setPlayerIdentity</span> function also benefits from improved head and armor compatibility. Identity changes preserve the player's equipped armor; this is not a replacement of the character with an NPC's complete outfit.<br />
<br />
<a href="https://g1r-mp.com/wiki/index.php?title=Player_customization" target="_blank" rel="noopener" class="mycode_url">Character customization guide</a><br />
<a href="https://g1r-mp.com/wiki/index.php?title=Player_tattoo_catalog" target="_blank" rel="noopener" class="mycode_url">Tattoo catalog</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Scripted Cameras</span></span><br />
<br />
Create moving login backgrounds, character-selection screens, location previews and scripted scenes directly from Lua.<br />
<ul class="mycode_list"><li>Set camera position and rotation.<br />
</li>
<li>Point the camera at a chosen location.<br />
</li>
<li>Adjust the field of view.<br />
</li>
<li>Apply a complete camera pose.<br />
</li>
<li>Move smoothly between camera positions.<br />
</li>
<li>Play camera paths and orbit movements.<br />
</li>
<li>Stop movement or restore the normal gameplay camera.<br />
</li>
<li>Read camera state on the client and handle asynchronous results.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Camera controls available on both the client and server:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>setCameraPos
setCameraRot
setCameraLookAt
setCameraFOV
setCameraPose

moveCameraTo
playCameraPath
orbitCamera
stopCameraMovement
resetCameraPos</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Client-side camera state functions:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>getCameraPos
getCameraRot
getCameraFOV
getCameraState
requestCameraState</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">New client events:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>onClientCameraCommandResult
onClientCameraReset</code></div></div><br />
Client and server signatures differ, and some operations use asynchronous acknowledgements. Check the wiki for the correct arguments, ownership rules and reset behavior.<br />
<br />
<a href="https://g1r-mp.com/wiki/index.php?title=Scripted_camera" target="_blank" rel="noopener" class="mycode_url">Scripted camera guide and examples</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Per-Observer Nameplates and Roleplay Acquaintances</span></span><br />
<br />
The new nameplate API allows the same player to be presented differently to different observers.<br />
<br />
For example, one player can see someone as <span style="font-weight: bold;" class="mycode_b">“Unknown Stranger”</span>, while another already knows their name.<br />
<ul class="mycode_list"><li>Set custom nameplate text for individual observers.<br />
</li>
<li>Control whether a label is visible to a specific observer.<br />
</li>
<li>Control numeric player-ID visibility separately.<br />
</li>
<li>Build directional acquaintance relationships: knowing someone does not automatically mean they know you.<br />
</li>
<li>Store those relationships in your gamemode's database and restore the appropriate presentation when players reconnect.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">12 new server-side functions</span> support observer-specific nameplate text, visibility and ID policy.<br />
<br />
The API supplies the presentation tools; your gamemode decides when characters become acquainted and how that information is saved. Nameplate customization does not automatically hide identities in chat, player lists or other systems.<br />
<br />
<a href="https://g1r-mp.com/wiki/index.php?title=Observer_nameplates" target="_blank" rel="noopener" class="mycode_url">Observer nameplates and database integration</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Custom Chapter-Style Title Cards</span></span><br />
<br />
Display your own chapter-style headings and messages for individual players.<br />
<br />
Use them for story introductions, server events, mission announcements or welcoming a character into your world.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ShowChapterScreen
HideChapterScreen</code></div></div><br />
The lower-camel aliases <span style="font-weight: bold;" class="mycode_b">showChapterScreen</span> and <span style="font-weight: bold;" class="mycode_b">hideChapterScreen</span> are also available.<br />
<br />
These are <span style="font-weight: bold;" class="mycode_b">presentation-only</span> functions. They do not advance the original game's chapter, modify quest progression or start a native cutscene.<br />
<br />
<a href="https://g1r-mp.com/wiki/index.php?title=Chapter_screens" target="_blank" rel="noopener" class="mycode_url">Chapter title cards: syntax and examples</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Expanded Lua Limits</span></span><br />
<br />
Client and server scripting budgets have been increased to provide more room for larger resources and gamemodes, including expanded timer limits.<br />
<br />
The wiki documents the current limits so developers can plan their systems around the actual runtime budgets.<br />
<br />
<a href="https://g1r-mp.com/wiki/index.php?title=Scripting_limits" target="_blank" rel="noopener" class="mycode_url">Current scripting limits</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Example Resources and Test Commands</span></span><br />
<br />
The included Gothic RP resources provide commands for trying the new systems:<br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">/cameratest</span> — test scripted camera features.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">/looktest</span> — test character appearance controls.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">/nametest</span> — test observer-specific nameplates.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">/chaptertest</span> — test custom chapter title cards.<br />
</li>
</ul>
<br />
See the individual guides for command options and prerequisites. Server owners should keep administrative and testing commands restricted to trusted users.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Runtime and Multiplayer Improvements</span></span><br />
<br />
This release also includes updates to equipment synchronization, character appearance handling, interaction handling and the client runtime.<br />
<br />
The Windows release includes the updated AngelScript-compatible UE4SS runtime with the multiplayer project's compatibility and security adaptations.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Downloads and Compatibility</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Release:</span> 0.1.3<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Windows client:</span> BUILD106<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Network protocol:</span> 35<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Dedicated servers:</span> Windows x64 and Linux x86_64<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Important: update both your client and dedicated server.</span><br />
<br />
Protocol 35 requires matching client and server versions. The client update is available through the launcher's automatic updater.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">For server owners:</span><br />
<ul class="mycode_list"><li>Back up your configuration, resources and database before upgrading.<br />
</li>
<li>Stop the dedicated server before replacing its binaries.<br />
</li>
<li>Preserve your custom gamemode and configuration instead of overwriting them with the supplied examples.<br />
</li>
<li>Configure the example database settings before using the included Gothic RP resource.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Updated Documentation</span></span><br />
<br />
The wiki now contains <span style="font-weight: bold;" class="mycode_b">312 function pages and 94 event pages</span>, with version notices identifying APIs available from <span style="font-weight: bold;" class="mycode_b">0.1.3</span>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><a href="https://g1r-mp.com/download/" target="_blank" rel="noopener" class="mycode_url">Download G1R:MP 0.1.3</a></span><br />
<span style="font-weight: bold;" class="mycode_b"><a href="https://g1r-mp.com/wiki/index.php?title=Update_0.1.3" target="_blank" rel="noopener" class="mycode_url">Read the 0.1.3 release guide</a></span><br />
<span style="font-weight: bold;" class="mycode_b"><a href="https://g1r-mp.com/wiki/" target="_blank" rel="noopener" class="mycode_url">Explore the scripting wiki</a></span><br />
<br />
Thank you to everyone testing the multiplayer, reporting issues and building new experiences for the community.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">See you in the Colony!</span>]]></description>
			<content:encoded><![CDATA[<span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">G1R:MP Update 0.1.3 — Now Available!</span></span><br />
<br />
The Colony keeps growing! Update <span style="font-weight: bold;" class="mycode_b">0.1.3</span> introduces synchronized gates and doors, expanded character customization, scripted cameras, new roleplay tools and more possibilities for Lua gamemodes.<br />
<br />
This release includes the <span style="font-weight: bold;" class="mycode_b">Windows client</span> and matching <span style="font-weight: bold;" class="mycode_b">Windows and Linux dedicated servers</span>.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Synchronized Gates, Doors and Controls</span></span><br />
<br />
Gates and doors are now part of the shared multiplayer world.<br />
<ul class="mycode_list"><li>Opening and closing gates and doors is synchronized between players.<br />
</li>
<li>Gate controls, including winches, participate in synchronization.<br />
</li>
<li>Players joining later receive the current synchronized state.<br />
</li>
<li>Other players can see the character animations used when opening doors, closing doors and operating winches.<br />
</li>
<li>Supported standard doors can be closed again after opening.<br />
</li>
<li>Native key and lock requirements are preserved.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Expanded Character Customization</span></span><br />
<br />
Server creators now have more control over how characters look — useful for character creation, factions, roleplay progression and cosmetic systems.<br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Identity selection:</span> improved compatibility between character heads and equipped armor.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Skin color:</span> apply a custom skin-color override independently of identity selection.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Tattoos:</span> choose from the documented tattoo catalog.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Independent resets:</span> remove a skin-color or tattoo override without having to reset everything else.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Multiplayer appearance:</span> appearance changes are synchronized for other players.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Appearance functions available from 0.1.3:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>setPlayerSkinColor
getPlayerSkinColor
resetPlayerSkinColor

setPlayerTattoo
getPlayerTattoo
resetPlayerTattoo
getPlayerTattooNames</code></div></div><br />
The existing <span style="font-weight: bold;" class="mycode_b">setPlayerIdentity</span> function also benefits from improved head and armor compatibility. Identity changes preserve the player's equipped armor; this is not a replacement of the character with an NPC's complete outfit.<br />
<br />
<a href="https://g1r-mp.com/wiki/index.php?title=Player_customization" target="_blank" rel="noopener" class="mycode_url">Character customization guide</a><br />
<a href="https://g1r-mp.com/wiki/index.php?title=Player_tattoo_catalog" target="_blank" rel="noopener" class="mycode_url">Tattoo catalog</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Scripted Cameras</span></span><br />
<br />
Create moving login backgrounds, character-selection screens, location previews and scripted scenes directly from Lua.<br />
<ul class="mycode_list"><li>Set camera position and rotation.<br />
</li>
<li>Point the camera at a chosen location.<br />
</li>
<li>Adjust the field of view.<br />
</li>
<li>Apply a complete camera pose.<br />
</li>
<li>Move smoothly between camera positions.<br />
</li>
<li>Play camera paths and orbit movements.<br />
</li>
<li>Stop movement or restore the normal gameplay camera.<br />
</li>
<li>Read camera state on the client and handle asynchronous results.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Camera controls available on both the client and server:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>setCameraPos
setCameraRot
setCameraLookAt
setCameraFOV
setCameraPose

moveCameraTo
playCameraPath
orbitCamera
stopCameraMovement
resetCameraPos</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Client-side camera state functions:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>getCameraPos
getCameraRot
getCameraFOV
getCameraState
requestCameraState</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">New client events:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>onClientCameraCommandResult
onClientCameraReset</code></div></div><br />
Client and server signatures differ, and some operations use asynchronous acknowledgements. Check the wiki for the correct arguments, ownership rules and reset behavior.<br />
<br />
<a href="https://g1r-mp.com/wiki/index.php?title=Scripted_camera" target="_blank" rel="noopener" class="mycode_url">Scripted camera guide and examples</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Per-Observer Nameplates and Roleplay Acquaintances</span></span><br />
<br />
The new nameplate API allows the same player to be presented differently to different observers.<br />
<br />
For example, one player can see someone as <span style="font-weight: bold;" class="mycode_b">“Unknown Stranger”</span>, while another already knows their name.<br />
<ul class="mycode_list"><li>Set custom nameplate text for individual observers.<br />
</li>
<li>Control whether a label is visible to a specific observer.<br />
</li>
<li>Control numeric player-ID visibility separately.<br />
</li>
<li>Build directional acquaintance relationships: knowing someone does not automatically mean they know you.<br />
</li>
<li>Store those relationships in your gamemode's database and restore the appropriate presentation when players reconnect.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">12 new server-side functions</span> support observer-specific nameplate text, visibility and ID policy.<br />
<br />
The API supplies the presentation tools; your gamemode decides when characters become acquainted and how that information is saved. Nameplate customization does not automatically hide identities in chat, player lists or other systems.<br />
<br />
<a href="https://g1r-mp.com/wiki/index.php?title=Observer_nameplates" target="_blank" rel="noopener" class="mycode_url">Observer nameplates and database integration</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Custom Chapter-Style Title Cards</span></span><br />
<br />
Display your own chapter-style headings and messages for individual players.<br />
<br />
Use them for story introductions, server events, mission announcements or welcoming a character into your world.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ShowChapterScreen
HideChapterScreen</code></div></div><br />
The lower-camel aliases <span style="font-weight: bold;" class="mycode_b">showChapterScreen</span> and <span style="font-weight: bold;" class="mycode_b">hideChapterScreen</span> are also available.<br />
<br />
These are <span style="font-weight: bold;" class="mycode_b">presentation-only</span> functions. They do not advance the original game's chapter, modify quest progression or start a native cutscene.<br />
<br />
<a href="https://g1r-mp.com/wiki/index.php?title=Chapter_screens" target="_blank" rel="noopener" class="mycode_url">Chapter title cards: syntax and examples</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Expanded Lua Limits</span></span><br />
<br />
Client and server scripting budgets have been increased to provide more room for larger resources and gamemodes, including expanded timer limits.<br />
<br />
The wiki documents the current limits so developers can plan their systems around the actual runtime budgets.<br />
<br />
<a href="https://g1r-mp.com/wiki/index.php?title=Scripting_limits" target="_blank" rel="noopener" class="mycode_url">Current scripting limits</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Example Resources and Test Commands</span></span><br />
<br />
The included Gothic RP resources provide commands for trying the new systems:<br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">/cameratest</span> — test scripted camera features.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">/looktest</span> — test character appearance controls.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">/nametest</span> — test observer-specific nameplates.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">/chaptertest</span> — test custom chapter title cards.<br />
</li>
</ul>
<br />
See the individual guides for command options and prerequisites. Server owners should keep administrative and testing commands restricted to trusted users.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Runtime and Multiplayer Improvements</span></span><br />
<br />
This release also includes updates to equipment synchronization, character appearance handling, interaction handling and the client runtime.<br />
<br />
The Windows release includes the updated AngelScript-compatible UE4SS runtime with the multiplayer project's compatibility and security adaptations.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Downloads and Compatibility</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Release:</span> 0.1.3<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Windows client:</span> BUILD106<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Network protocol:</span> 35<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Dedicated servers:</span> Windows x64 and Linux x86_64<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Important: update both your client and dedicated server.</span><br />
<br />
Protocol 35 requires matching client and server versions. The client update is available through the launcher's automatic updater.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">For server owners:</span><br />
<ul class="mycode_list"><li>Back up your configuration, resources and database before upgrading.<br />
</li>
<li>Stop the dedicated server before replacing its binaries.<br />
</li>
<li>Preserve your custom gamemode and configuration instead of overwriting them with the supplied examples.<br />
</li>
<li>Configure the example database settings before using the included Gothic RP resource.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Updated Documentation</span></span><br />
<br />
The wiki now contains <span style="font-weight: bold;" class="mycode_b">312 function pages and 94 event pages</span>, with version notices identifying APIs available from <span style="font-weight: bold;" class="mycode_b">0.1.3</span>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><a href="https://g1r-mp.com/download/" target="_blank" rel="noopener" class="mycode_url">Download G1R:MP 0.1.3</a></span><br />
<span style="font-weight: bold;" class="mycode_b"><a href="https://g1r-mp.com/wiki/index.php?title=Update_0.1.3" target="_blank" rel="noopener" class="mycode_url">Read the 0.1.3 release guide</a></span><br />
<span style="font-weight: bold;" class="mycode_b"><a href="https://g1r-mp.com/wiki/" target="_blank" rel="noopener" class="mycode_url">Explore the scripting wiki</a></span><br />
<br />
Thank you to everyone testing the multiplayer, reporting issues and building new experiences for the community.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">See you in the Colony!</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Webp format]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=52</link>
			<pubDate>Wed, 09 Sep 2026 14:10:10 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=27">JoePL</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=52</guid>
			<description><![CDATA[Would it be possible to add support for the **WebP format to RMLUI**? This would be very useful for textures and UI icons, as WebP allows for significantly smaller file sizes while maintaining good quality. Ideally, it would work similarly to the current support for PNG/JPG.]]></description>
			<content:encoded><![CDATA[Would it be possible to add support for the **WebP format to RMLUI**? This would be very useful for textures and UI icons, as WebP allows for significantly smaller file sizes while maintaining good quality. Ideally, it would work similarly to the current support for PNG/JPG.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[no fall damage script.]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=51</link>
			<pubDate>Mon, 07 Sep 2026 12:34:03 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=62">asvra</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=51</guid>
			<description><![CDATA[NO FALL DAMAGE - G1R:MP (server API 0.1.2 / Protocol 31+)<br />
<br />
<br />
    Works in two layers:<br />
      1. The engine stat "resistance_falling" is set to STAT_VALUE when a player<br />
        spawns, after every revive and refreshed every REFRESH_MS (the engine may<br />
        overwrite the stat when it loads the character).<br />
      2. Fallback: if damage of a DAMAGE_TYPES kind with no attacker still arrives<br />
        (that is how the engine reports a fall), health is restored to the value<br />
        it had before the hit.<br />
<br />
&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;scripts&gt;<br />
    &lt;script src="server.lua" type="server" /&gt;<br />
&lt;/scripts&gt;<br />
<br />
Server Script<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>-- === CONFIG ==============================================================<br />
local ENABLED_BY_DEFAULT = true          -- every player from the moment they join<br />
local STAT_VALUE        = 100000        -- resistance_falling; 0 = normal fall damage<br />
local REFRESH_MS        = 15000        -- stat refresh interval (ms)<br />
local DAMAGE_TYPES      = {environment = true, fall = true, falling = true}  -- damage kinds reported as a fall<br />
local RESTORE_HEALTH    = true          -- fallback: undo fall damage by restoring health<br />
local LOG                = false        -- outputDebugString on every restore<br />
local ADMIN_PERMISSION  = "admin.world" -- /nofall on|off: permission checked through the gothic_rp bridge<br />
-- =========================================================================<br />
<br />
local enabled = {}      -- playerId -&gt; true/false (nil = default)<br />
local previous = {}      -- playerId -&gt; stat value before enabling (restored on disable/stop)<br />
<br />
local function isEnabled(playerId)<br />
    if enabled[playerId] == nil then return ENABLED_BY_DEFAULT end<br />
    return enabled[playerId] == true<br />
end<br />
<br />
local function applyStat(playerId)<br />
    if not isPlayerConnected(playerId) then return false end<br />
    if isEnabled(playerId) then<br />
        if previous[playerId] == nil then<br />
            previous[playerId] = tonumber(getPlayerStat(playerId, "resistance_falling")) or 0<br />
        end<br />
        return setPlayerStat(playerId, "resistance_falling", STAT_VALUE) ~= false<br />
    elseif previous[playerId] ~= nil then<br />
        setPlayerStat(playerId, "resistance_falling", previous[playerId])<br />
        previous[playerId] = nil<br />
    end<br />
    return true<br />
end<br />
<br />
-- 1) the stat: on spawn, on revive, periodic refresh<br />
addEventHandler("onPlayerSpawn", root, function(playerId)<br />
    setTimer(function() applyStat(playerId) end, 500, 1)  -- the engine may still be loading stats right after spawn<br />
end)<br />
addEventHandler("onPlayerRevived", root, function(playerId)<br />
    setTimer(function() applyStat(playerId) end, 500, 1)<br />
end)<br />
setTimer(function()<br />
    for _, playerId in ipairs(getPlayers()) do applyStat(playerId) end<br />
end, REFRESH_MS, 0)<br />
<br />
-- 2) fallback: restore health after fall damage (no attacker)<br />
addEventHandler("onPlayerDamage", root, function(playerId, damage, healthAfter, attackerId, damageType)<br />
    if not RESTORE_HEALTH or not isEnabled(playerId) then return end<br />
    local kind = tostring(damageType or ""):lower()<br />
    if not DAMAGE_TYPES[kind] then return end<br />
    local attacker = tonumber(attackerId)<br />
    if attacker and attacker &gt;= 0 then return end  -- hit by someone or something - not a fall<br />
    damage = tonumber(damage) or 0<br />
    healthAfter = tonumber(healthAfter) or 0<br />
    if damage &lt;= 0 or healthAfter &lt;= 0 then return end  -- death cannot be undone here<br />
    local restored = math.min(healthAfter + damage, tonumber(getPlayerMaxHealth(playerId)) or (healthAfter + damage))<br />
    setPlayerHealth(playerId, restored)<br />
    if LOG then<br />
        outputDebugString(("[nofall] player=%s restored %d fall damage (%s)"):format(tostring(playerId), damage, kind), 3)<br />
    end<br />
end)<br />
<br />
-- API for other resources<br />
addEvent("nofall<img src="https://g1r-mp.com/forum/images/smilies/confused.png" alt="Confused" title="Confused" class="smilie smilie_13" />et", false)<br />
addEventHandler("nofall<img src="https://g1r-mp.com/forum/images/smilies/confused.png" alt="Confused" title="Confused" class="smilie smilie_13" />et", root, function(playerId, state)<br />
    playerId = tonumber(playerId)<br />
    if not playerId then return end<br />
    enabled[playerId] = state ~= false<br />
    applyStat(playerId)<br />
end)<br />
<br />
addEventHandler("onPlayerQuit", root, function(playerId)<br />
    enabled[playerId] = nil<br />
    previous[playerId] = nil<br />
end)<br />
<br />
-- Admin command: permission via gothic_rp's synchronous event bridge (permission_bridge.lua);<br />
-- refused when gothic_rp is not running.<br />
local bridgeGranted = false<br />
addEvent("g1r:permissionSeen", false)<br />
addEvent("g1r:permissionGrant", false)<br />
addEventHandler("g1r:permissionGrant", root, function() bridgeGranted = true end)<br />
local function isWorldAdmin(playerId)<br />
    bridgeGranted = false<br />
    triggerEvent("g1r:permissionQuery", root, playerId, ADMIN_PERMISSION)<br />
    return bridgeGranted<br />
end<br />
addCommandHandler("nofall", function(playerId, commandName, mode)<br />
    if not isWorldAdmin(playerId) then<br />
        outputChatBox("No permission.", playerId, 230, 90, 90, false)<br />
        return<br />
    end<br />
    mode = tostring(mode or ""):lower()<br />
    if mode == "on" then enabled[playerId] = true elseif mode == "off" then enabled[playerId] = false end<br />
    applyStat(playerId)<br />
    outputChatBox(("No fall damage: %s (/nofall on|off)."):format(isEnabled(playerId) and "ENABLED" or "disabled"), playerId, 216, 185, 120, false)<br />
end)<br />
<br />
addEventHandler("onResourceStart", resourceRoot, function()<br />
    for _, playerId in ipairs(getPlayers()) do applyStat(playerId) end<br />
    outputDebugString(("[nofall] start: default %s, resistance_falling=%d, restore health=%s"):format(<br />
        ENABLED_BY_DEFAULT and "enabled" or "disabled", STAT_VALUE, tostring(RESTORE_HEALTH)), 3)<br />
end)<br />
addEventHandler("onResourceStop", resourceRoot, function()<br />
    for _, playerId in ipairs(getPlayers()) do<br />
        if previous[playerId] ~= nil then setPlayerStat(playerId, "resistance_falling", previous[playerId]) end<br />
    end<br />
end)</blockquote>
]]></description>
			<content:encoded><![CDATA[NO FALL DAMAGE - G1R:MP (server API 0.1.2 / Protocol 31+)<br />
<br />
<br />
    Works in two layers:<br />
      1. The engine stat "resistance_falling" is set to STAT_VALUE when a player<br />
        spawns, after every revive and refreshed every REFRESH_MS (the engine may<br />
        overwrite the stat when it loads the character).<br />
      2. Fallback: if damage of a DAMAGE_TYPES kind with no attacker still arrives<br />
        (that is how the engine reports a fall), health is restored to the value<br />
        it had before the hit.<br />
<br />
&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;scripts&gt;<br />
    &lt;script src="server.lua" type="server" /&gt;<br />
&lt;/scripts&gt;<br />
<br />
Server Script<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>-- === CONFIG ==============================================================<br />
local ENABLED_BY_DEFAULT = true          -- every player from the moment they join<br />
local STAT_VALUE        = 100000        -- resistance_falling; 0 = normal fall damage<br />
local REFRESH_MS        = 15000        -- stat refresh interval (ms)<br />
local DAMAGE_TYPES      = {environment = true, fall = true, falling = true}  -- damage kinds reported as a fall<br />
local RESTORE_HEALTH    = true          -- fallback: undo fall damage by restoring health<br />
local LOG                = false        -- outputDebugString on every restore<br />
local ADMIN_PERMISSION  = "admin.world" -- /nofall on|off: permission checked through the gothic_rp bridge<br />
-- =========================================================================<br />
<br />
local enabled = {}      -- playerId -&gt; true/false (nil = default)<br />
local previous = {}      -- playerId -&gt; stat value before enabling (restored on disable/stop)<br />
<br />
local function isEnabled(playerId)<br />
    if enabled[playerId] == nil then return ENABLED_BY_DEFAULT end<br />
    return enabled[playerId] == true<br />
end<br />
<br />
local function applyStat(playerId)<br />
    if not isPlayerConnected(playerId) then return false end<br />
    if isEnabled(playerId) then<br />
        if previous[playerId] == nil then<br />
            previous[playerId] = tonumber(getPlayerStat(playerId, "resistance_falling")) or 0<br />
        end<br />
        return setPlayerStat(playerId, "resistance_falling", STAT_VALUE) ~= false<br />
    elseif previous[playerId] ~= nil then<br />
        setPlayerStat(playerId, "resistance_falling", previous[playerId])<br />
        previous[playerId] = nil<br />
    end<br />
    return true<br />
end<br />
<br />
-- 1) the stat: on spawn, on revive, periodic refresh<br />
addEventHandler("onPlayerSpawn", root, function(playerId)<br />
    setTimer(function() applyStat(playerId) end, 500, 1)  -- the engine may still be loading stats right after spawn<br />
end)<br />
addEventHandler("onPlayerRevived", root, function(playerId)<br />
    setTimer(function() applyStat(playerId) end, 500, 1)<br />
end)<br />
setTimer(function()<br />
    for _, playerId in ipairs(getPlayers()) do applyStat(playerId) end<br />
end, REFRESH_MS, 0)<br />
<br />
-- 2) fallback: restore health after fall damage (no attacker)<br />
addEventHandler("onPlayerDamage", root, function(playerId, damage, healthAfter, attackerId, damageType)<br />
    if not RESTORE_HEALTH or not isEnabled(playerId) then return end<br />
    local kind = tostring(damageType or ""):lower()<br />
    if not DAMAGE_TYPES[kind] then return end<br />
    local attacker = tonumber(attackerId)<br />
    if attacker and attacker &gt;= 0 then return end  -- hit by someone or something - not a fall<br />
    damage = tonumber(damage) or 0<br />
    healthAfter = tonumber(healthAfter) or 0<br />
    if damage &lt;= 0 or healthAfter &lt;= 0 then return end  -- death cannot be undone here<br />
    local restored = math.min(healthAfter + damage, tonumber(getPlayerMaxHealth(playerId)) or (healthAfter + damage))<br />
    setPlayerHealth(playerId, restored)<br />
    if LOG then<br />
        outputDebugString(("[nofall] player=%s restored %d fall damage (%s)"):format(tostring(playerId), damage, kind), 3)<br />
    end<br />
end)<br />
<br />
-- API for other resources<br />
addEvent("nofall<img src="https://g1r-mp.com/forum/images/smilies/confused.png" alt="Confused" title="Confused" class="smilie smilie_13" />et", false)<br />
addEventHandler("nofall<img src="https://g1r-mp.com/forum/images/smilies/confused.png" alt="Confused" title="Confused" class="smilie smilie_13" />et", root, function(playerId, state)<br />
    playerId = tonumber(playerId)<br />
    if not playerId then return end<br />
    enabled[playerId] = state ~= false<br />
    applyStat(playerId)<br />
end)<br />
<br />
addEventHandler("onPlayerQuit", root, function(playerId)<br />
    enabled[playerId] = nil<br />
    previous[playerId] = nil<br />
end)<br />
<br />
-- Admin command: permission via gothic_rp's synchronous event bridge (permission_bridge.lua);<br />
-- refused when gothic_rp is not running.<br />
local bridgeGranted = false<br />
addEvent("g1r:permissionSeen", false)<br />
addEvent("g1r:permissionGrant", false)<br />
addEventHandler("g1r:permissionGrant", root, function() bridgeGranted = true end)<br />
local function isWorldAdmin(playerId)<br />
    bridgeGranted = false<br />
    triggerEvent("g1r:permissionQuery", root, playerId, ADMIN_PERMISSION)<br />
    return bridgeGranted<br />
end<br />
addCommandHandler("nofall", function(playerId, commandName, mode)<br />
    if not isWorldAdmin(playerId) then<br />
        outputChatBox("No permission.", playerId, 230, 90, 90, false)<br />
        return<br />
    end<br />
    mode = tostring(mode or ""):lower()<br />
    if mode == "on" then enabled[playerId] = true elseif mode == "off" then enabled[playerId] = false end<br />
    applyStat(playerId)<br />
    outputChatBox(("No fall damage: %s (/nofall on|off)."):format(isEnabled(playerId) and "ENABLED" or "disabled"), playerId, 216, 185, 120, false)<br />
end)<br />
<br />
addEventHandler("onResourceStart", resourceRoot, function()<br />
    for _, playerId in ipairs(getPlayers()) do applyStat(playerId) end<br />
    outputDebugString(("[nofall] start: default %s, resistance_falling=%d, restore health=%s"):format(<br />
        ENABLED_BY_DEFAULT and "enabled" or "disabled", STAT_VALUE, tostring(RESTORE_HEALTH)), 3)<br />
end)<br />
addEventHandler("onResourceStop", resourceRoot, function()<br />
    for _, playerId in ipairs(getPlayers()) do<br />
        if previous[playerId] ~= nil then setPlayerStat(playerId, "resistance_falling", previous[playerId]) end<br />
    end<br />
end)</blockquote>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Український RolePlay-сервер для G1R]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=50</link>
			<pubDate>Sun, 06 Sep 2026 20:33:19 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=33">gared.</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=50</guid>
			<description><![CDATA[Вітаємо, мешканці Колонії!<br />
Хочемо поділитися з вами новиною: ми розпочали роботу над власним <span style="font-weight: bold;" class="mycode_b">RolePlay-проєктом на базі Gothic 1 Remake Multiplayer</span>.<br />
На даному етапі проєкт перебуває на ранній стадії розробки. Зараз ми активно <span style="font-weight: bold;" class="mycode_b">тестуємо доступний функціонал G1R:MP</span>, вивчаємо можливості мультиплеєра та перевіряємо, що вже можна реалізувати за допомогою наявних інструментів і систем.<br />
Водночас у нас уже є <span style="font-weight: bold;" class="mycode_b">перші напрацювання щодо інтерфейсу та окремих елементів майбутнього сервера</span>. Попереду ще багато роботи, експериментів і пошуку найкращих рішень.<br />
? Що ми робимо зараз?<ul class="mycode_list"><li>тестуємо можливості G1R:MP;<br />
</li>
<li>вивчаємо та перевіряємо доступний функціонал для створення RP-сервера;<br />
</li>
<li>працюємо над концепцією майбутнього проєкту;<br />
</li>
<li>створюємо перші напрацювання щодо інтерфейсу;<br />
</li>
<li>експериментуємо зі скриптами та серверними механіками.<br />
</li>
</ul>
Ми розуміємо, що G1R:MP зараз перебуває на <span style="font-weight: bold;" class="mycode_b">Alpha-стадії</span>, тому багато речей ще можуть змінюватися разом із розвитком самого мультиплеєра. Саме тому наразі наша головна мета — отримати практичний досвід роботи з платформою та поступово закласти фундамент майбутнього сервера.<br />
? Шукаємо людей до команди<br />
Якщо вам цікавий цей проєкт і ви маєте бажання <span style="font-weight: bold;" class="mycode_b">допомогти з його розвитком</span>, будемо раді бачити вас серед однодумців!<br />
Нам особливо цікаві люди, які мають досвід або бажання працювати з:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Lua / серверним скриптингом</span>;<br />
</li>
<li>розробкою ігрових систем;<br />
</li>
<li>UI/UX та створенням інтерфейсів;<br />
</li>
<li>3D-моделюванням і роботою з ігровими ресурсами;<br />
</li>
<li>створенням RP-механік;<br />
</li>
<li>тестуванням;<br />
</li>
<li>наповненням світу та розробкою концепцій.<br />
</li>
</ul>
Втім, навіть якщо ви не маєте великого досвіду, але вам <span style="font-weight: bold;" class="mycode_b">справді цікавий розвиток RP-проєкту у світі Gothic</span> — не соромтеся написати нам. Будемо раді обговорити можливу співпрацю.<br />
Цей тред ми плануємо використовувати для того, щоб <span style="font-weight: bold;" class="mycode_b">ділитися прогресом розробки, показувати нові напрацювання та обговорювати майбутнє проєкту разом із спільнотою</span>.<br />
Попереду ще довгий шлях, але ми вже зробили перші кроки. І хто знає — можливо, саме зараз починається історія нового життя Колонії. ?<br />
<span style="font-weight: bold;" class="mycode_b">Слідкуйте за оновленнями — більше інформації буде згодом!</span>]]></description>
			<content:encoded><![CDATA[Вітаємо, мешканці Колонії!<br />
Хочемо поділитися з вами новиною: ми розпочали роботу над власним <span style="font-weight: bold;" class="mycode_b">RolePlay-проєктом на базі Gothic 1 Remake Multiplayer</span>.<br />
На даному етапі проєкт перебуває на ранній стадії розробки. Зараз ми активно <span style="font-weight: bold;" class="mycode_b">тестуємо доступний функціонал G1R:MP</span>, вивчаємо можливості мультиплеєра та перевіряємо, що вже можна реалізувати за допомогою наявних інструментів і систем.<br />
Водночас у нас уже є <span style="font-weight: bold;" class="mycode_b">перші напрацювання щодо інтерфейсу та окремих елементів майбутнього сервера</span>. Попереду ще багато роботи, експериментів і пошуку найкращих рішень.<br />
? Що ми робимо зараз?<ul class="mycode_list"><li>тестуємо можливості G1R:MP;<br />
</li>
<li>вивчаємо та перевіряємо доступний функціонал для створення RP-сервера;<br />
</li>
<li>працюємо над концепцією майбутнього проєкту;<br />
</li>
<li>створюємо перші напрацювання щодо інтерфейсу;<br />
</li>
<li>експериментуємо зі скриптами та серверними механіками.<br />
</li>
</ul>
Ми розуміємо, що G1R:MP зараз перебуває на <span style="font-weight: bold;" class="mycode_b">Alpha-стадії</span>, тому багато речей ще можуть змінюватися разом із розвитком самого мультиплеєра. Саме тому наразі наша головна мета — отримати практичний досвід роботи з платформою та поступово закласти фундамент майбутнього сервера.<br />
? Шукаємо людей до команди<br />
Якщо вам цікавий цей проєкт і ви маєте бажання <span style="font-weight: bold;" class="mycode_b">допомогти з його розвитком</span>, будемо раді бачити вас серед однодумців!<br />
Нам особливо цікаві люди, які мають досвід або бажання працювати з:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Lua / серверним скриптингом</span>;<br />
</li>
<li>розробкою ігрових систем;<br />
</li>
<li>UI/UX та створенням інтерфейсів;<br />
</li>
<li>3D-моделюванням і роботою з ігровими ресурсами;<br />
</li>
<li>створенням RP-механік;<br />
</li>
<li>тестуванням;<br />
</li>
<li>наповненням світу та розробкою концепцій.<br />
</li>
</ul>
Втім, навіть якщо ви не маєте великого досвіду, але вам <span style="font-weight: bold;" class="mycode_b">справді цікавий розвиток RP-проєкту у світі Gothic</span> — не соромтеся написати нам. Будемо раді обговорити можливу співпрацю.<br />
Цей тред ми плануємо використовувати для того, щоб <span style="font-weight: bold;" class="mycode_b">ділитися прогресом розробки, показувати нові напрацювання та обговорювати майбутнє проєкту разом із спільнотою</span>.<br />
Попереду ще довгий шлях, але ми вже зробили перші кроки. І хто знає — можливо, саме зараз починається історія нового життя Колонії. ?<br />
<span style="font-weight: bold;" class="mycode_b">Слідкуйте за оновленнями — більше інформації буде згодом!</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SpawnItemAt]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=49</link>
			<pubDate>Sun, 06 Sep 2026 19:08:54 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=12">Chenentano</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=49</guid>
			<description><![CDATA[Hey,<br />
<br />
it would be great if we get a new function to randomize the position of the spawned items<br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>spawnItemAt(itemKey, x, y, z)</code></div></div><br />
<br />
Greetings <img src="https://g1r-mp.com/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" />]]></description>
			<content:encoded><![CDATA[Hey,<br />
<br />
it would be great if we get a new function to randomize the position of the spawned items<br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>spawnItemAt(itemKey, x, y, z)</code></div></div><br />
<br />
Greetings <img src="https://g1r-mp.com/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[The server lost the player for a moment, when the game has to load]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=48</link>
			<pubDate>Sun, 06 Sep 2026 15:49:06 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=11">Xardas0327</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=48</guid>
			<description><![CDATA[When the player spawn point is the default position, but I use this teleport. (teleport to old camp castle)<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>addCommandHandler("castle", function(playerId, commandName)<br />
    setPlayerPosition(<br />
        playerId,<br />
        1116.75,<br />
        -1007.51,<br />
        -36.66<br />
    )<br />
end)</blockquote>
<br />
The server lost me after the teleport, but it rejoin me after 1-2s. After this rejoin I see NPCs from the game, but they are hidden after a couple seconds.<br />
<br />
The logs, after the <span style="font-style: italic;" class="mycode_i">/castle</span>:<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>[lua][chat][info] command player=1 name=castle argc=0 args=[]<br />
[authority] movement snapshot held awaiting position acknowledgement player=1 command=1 action=set_position sequence=574<br />
[lifecycle] onPlayerQuit final state player=1 sequence=576 position=(111675.000,-100751.000,-3666.000) yaw=0.000 snapshotAgeMs=2089<br />
CONNECT_PENDING provisional=2 address=192.168.0.1 peer=00000165DF7F5010 event=connect<br />
AUTH player=2 name=Xardas0327 serial=fa61cd5cb66e2a40e68a3ec5ab8ab9de address=192.168.0.1</blockquote>
That's why the onPlayerJoin will run twice and if it has some random generation (for example: select a random position from a list) will run twice too.<br />
<br />
My thought is, that my laptop is weak a bit and when it has to load the old camp castle, the client-server communication is stuck for a couple seconds.]]></description>
			<content:encoded><![CDATA[When the player spawn point is the default position, but I use this teleport. (teleport to old camp castle)<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>addCommandHandler("castle", function(playerId, commandName)<br />
    setPlayerPosition(<br />
        playerId,<br />
        1116.75,<br />
        -1007.51,<br />
        -36.66<br />
    )<br />
end)</blockquote>
<br />
The server lost me after the teleport, but it rejoin me after 1-2s. After this rejoin I see NPCs from the game, but they are hidden after a couple seconds.<br />
<br />
The logs, after the <span style="font-style: italic;" class="mycode_i">/castle</span>:<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>[lua][chat][info] command player=1 name=castle argc=0 args=[]<br />
[authority] movement snapshot held awaiting position acknowledgement player=1 command=1 action=set_position sequence=574<br />
[lifecycle] onPlayerQuit final state player=1 sequence=576 position=(111675.000,-100751.000,-3666.000) yaw=0.000 snapshotAgeMs=2089<br />
CONNECT_PENDING provisional=2 address=192.168.0.1 peer=00000165DF7F5010 event=connect<br />
AUTH player=2 name=Xardas0327 serial=fa61cd5cb66e2a40e68a3ec5ab8ab9de address=192.168.0.1</blockquote>
That's why the onPlayerJoin will run twice and if it has some random generation (for example: select a random position from a list) will run twice too.<br />
<br />
My thought is, that my laptop is weak a bit and when it has to load the old camp castle, the client-server communication is stuck for a couple seconds.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Magic doenst register / Password]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=47</link>
			<pubDate>Sun, 06 Sep 2026 14:13:11 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=12">Chenentano</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=47</guid>
			<description><![CDATA[Hello,<br />
<br />
i tried to hit something/someone with magic and it didnt register/hit.<br />
Did i miss something in the config, or is it not implemented yet? <br />
<br />
Used spells:<br />
fireball/fire arrow/frost arrow<br />
<br />
<br />
config:<br />
<span style="color: #ffffff;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">[magic]<br />
<span style="color: #fd971f;" class="mycode_color"># Protocol v17 native clients and the authoritative server share one catalog.</span><br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">enabled</span></span>=true<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">grantDevelopmentSpells</span></span>=false<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">projectileTickrate</span></span>=30<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">maxCastsPerSecond</span></span>=6<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">maxSnapshotAgeMs</span></span>=1000<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">playerCapsuleRadius</span></span>=45<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">playerCapsuleHalfHeight</span></span>=90</span></span><br />
<br />
<br />
And the server doenst get the "password-tag" anymore when i edit the config to<br />
passworded=true<br />
<span style="color: #ffffff;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Greetings</span></span>]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
i tried to hit something/someone with magic and it didnt register/hit.<br />
Did i miss something in the config, or is it not implemented yet? <br />
<br />
Used spells:<br />
fireball/fire arrow/frost arrow<br />
<br />
<br />
config:<br />
<span style="color: #ffffff;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">[magic]<br />
<span style="color: #fd971f;" class="mycode_color"># Protocol v17 native clients and the authoritative server share one catalog.</span><br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">enabled</span></span>=true<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">grantDevelopmentSpells</span></span>=false<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">projectileTickrate</span></span>=30<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">maxCastsPerSecond</span></span>=6<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">maxSnapshotAgeMs</span></span>=1000<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">playerCapsuleRadius</span></span>=45<br />
<span style="color: #f92672;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">playerCapsuleHalfHeight</span></span>=90</span></span><br />
<br />
<br />
And the server doenst get the "password-tag" anymore when i edit the config to<br />
passworded=true<br />
<span style="color: #ffffff;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Greetings</span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[G1R:MP 0.1.2 Alpha is now available!]]></title>
			<link>https://g1r-mp.com/forum/showthread.php?tid=46</link>
			<pubDate>Sun, 06 Sep 2026 12:05:59 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://g1r-mp.com/forum/member.php?action=profile&uid=1">QCherry</a>]]></dc:creator>
			<guid isPermaLink="false">https://g1r-mp.com/forum/showthread.php?tid=46</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">G1R:MP 0.1.2 Alpha is now available!</span></span></div>
<br />
We are happy to announce the release of <span style="font-weight: bold;" class="mycode_b">G1R:MP 0.1.2 Alpha</span>, introducing <span style="font-weight: bold;" class="mycode_b">Protocol 31</span> and a large collection of multiplayer, synchronization and scripting improvements.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Main highlights:</span><br />
<ul class="mycode_list"><li>Upgraded the client and dedicated servers to Protocol 31.<br />
</li>
<li>Improved weapon, combat and remote-player animation synchronization.<br />
</li>
<li>Improved bow aiming, first-shot replication, projectile synchronization and reload animations.<br />
</li>
<li>Improved item pickup, drop, inventory and consumable synchronization.<br />
</li>
<li>Improved server-authoritative spawning, teleportation and movement handling.<br />
</li>
<li>Expanded NPC and monster navigation and scripting functionality.<br />
</li>
<li>Improved animation controls, including startAnim and stopAnim.<br />
</li>
<li>Added OGG audio support with 2D and positional 3D playback functions.<br />
</li>
<li>Numerous stability fixes and scripting API improvements.<br />
</li>
<li>Updated dedicated server packages for both Windows and Linux.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Important:</span><br />
<br />
This is still an <span style="font-weight: bold;" class="mycode_b">Alpha release</span>. Bugs and unfinished functionality may still be present. Client and server owners must update to Protocol 31. Server owners should back up their configuration and resources before replacing existing files.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Downloads:</span><br />
<br />
Client:<br />
<a href="https://g1r-mp.com/updates/releases/G1RMP-Launcher-0.1.2-alpha-build65.exe" target="_blank" rel="noopener" class="mycode_url">Download G1R:MP 0.1.2 Alpha – Build 65</a><br />
<br />
Windows Dedicated Server:<br />
<a href="https://g1r-mp.com/download/files/G1RMP-Server-Protocol31-Win64.zip" target="_blank" rel="noopener" class="mycode_url">Download Windows Server – Protocol 31</a><br />
<br />
Linux Dedicated Server:<br />
<a href="https://g1r-mp.com/download/files/G1RMP-Server-Protocol31-Linux-x86_64.tar.gz" target="_blank" rel="noopener" class="mycode_url">Download Linux Server – Protocol 31</a><br />
<br />
Website:<br />
<a href="https://g1r-mp.com/" target="_blank" rel="noopener" class="mycode_url">https://g1r-mp.com/</a><br />
<br />
Documentation and scripting reference:<br />
<a href="https://g1r-mp.com/wiki/" target="_blank" rel="noopener" class="mycode_url">https://g1r-mp.com/wiki/</a><br />
<br />
Thank you to everyone testing G1R:MP and reporting problems. Your feedback continues to help us improve the multiplayer experience.]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">G1R:MP 0.1.2 Alpha is now available!</span></span></div>
<br />
We are happy to announce the release of <span style="font-weight: bold;" class="mycode_b">G1R:MP 0.1.2 Alpha</span>, introducing <span style="font-weight: bold;" class="mycode_b">Protocol 31</span> and a large collection of multiplayer, synchronization and scripting improvements.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Main highlights:</span><br />
<ul class="mycode_list"><li>Upgraded the client and dedicated servers to Protocol 31.<br />
</li>
<li>Improved weapon, combat and remote-player animation synchronization.<br />
</li>
<li>Improved bow aiming, first-shot replication, projectile synchronization and reload animations.<br />
</li>
<li>Improved item pickup, drop, inventory and consumable synchronization.<br />
</li>
<li>Improved server-authoritative spawning, teleportation and movement handling.<br />
</li>
<li>Expanded NPC and monster navigation and scripting functionality.<br />
</li>
<li>Improved animation controls, including startAnim and stopAnim.<br />
</li>
<li>Added OGG audio support with 2D and positional 3D playback functions.<br />
</li>
<li>Numerous stability fixes and scripting API improvements.<br />
</li>
<li>Updated dedicated server packages for both Windows and Linux.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Important:</span><br />
<br />
This is still an <span style="font-weight: bold;" class="mycode_b">Alpha release</span>. Bugs and unfinished functionality may still be present. Client and server owners must update to Protocol 31. Server owners should back up their configuration and resources before replacing existing files.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Downloads:</span><br />
<br />
Client:<br />
<a href="https://g1r-mp.com/updates/releases/G1RMP-Launcher-0.1.2-alpha-build65.exe" target="_blank" rel="noopener" class="mycode_url">Download G1R:MP 0.1.2 Alpha – Build 65</a><br />
<br />
Windows Dedicated Server:<br />
<a href="https://g1r-mp.com/download/files/G1RMP-Server-Protocol31-Win64.zip" target="_blank" rel="noopener" class="mycode_url">Download Windows Server – Protocol 31</a><br />
<br />
Linux Dedicated Server:<br />
<a href="https://g1r-mp.com/download/files/G1RMP-Server-Protocol31-Linux-x86_64.tar.gz" target="_blank" rel="noopener" class="mycode_url">Download Linux Server – Protocol 31</a><br />
<br />
Website:<br />
<a href="https://g1r-mp.com/" target="_blank" rel="noopener" class="mycode_url">https://g1r-mp.com/</a><br />
<br />
Documentation and scripting reference:<br />
<a href="https://g1r-mp.com/wiki/" target="_blank" rel="noopener" class="mycode_url">https://g1r-mp.com/wiki/</a><br />
<br />
Thank you to everyone testing G1R:MP and reporting problems. Your feedback continues to help us improve the multiplayer experience.]]></content:encoded>
		</item>
	</channel>
</rss>