
GPS不再 - 在地图上禁用玩家位置
在主区域地图上禁用玩家位置标记。
查看大图GPS 不再需要
尽管《巫师3》中的任务设计精良且故事情节引人入胜,
但由于大多数情况下你只是盲目地跟随小地图/地图上的任务标记从一个地点到另一个地点,
它们仍然让人感觉缺乏沉浸感。
关闭任务标记进行游戏也不可行,
因为大多数任务的描述不够精确,
在没有外部帮助的情况下无法找到指定区域。
所以我认为在沉浸感方面,下一个最好的办法就是去掉地图上当前位置的指示标记。这个模组正好实现了这一点。
免责声明: 这其实不是我的作品!Steam用户 DNSMorgan1712 在 6 月份应社区用户 m3k 的要求上传了这个模组,遗憾的是那个版本似乎与当前的 1.11 补丁不兼容。
我设法追踪了 DNSMorgan1712 所做的修改,并将其应用到 1.11 原版文件中,
说白了就是我笨拙地比较了两个文件,
然后复制了看起来重要的差异部分,直到成功为止。
正在运行。所以,就我所知,所有的功劳都属于 DNSMorgan1712!
另外,抱歉我的英语不好,请注意我没有足够的知识提供深入的支持,也无法保证这完全没有错误。
安装
使用 NMM 下载并激活。为了避免间接获取方向信息,您应开启 Roach 过滤器以移除其位置显示。由于该模组不影响小地图,建议您将其关闭。
我还建议使用一个可以调整默认地图缩放的模组,比如出色的 Friendly HUD。
在 Friendly HUD 的配置文件(modFriendlyHUDConfig.ws)中,我将 mapZoomMaxCoef 改为 0.25 以缩小默认缩放比例。
同时我通过 compassMarkersEnabled = true 启用了 Friendly HUD 的 3D 指南针功能,
并设置 project3DMarkersOnCompass = false,
还将其添加到了猎魔人感官界面中。
为了让 DNSMorgan1712 的模组兼容 1.11 版本,我所做的修改:
我将以下段落在原版 mapMenu.ws 中替换为:
private function UpdatePlayerPin( out flashArray : CScriptedFlashArray ) : void {
var l_flashObject : CScriptedFlashObject;
var position: Vector;
var playerRotation: EulerAngles;
var playerAngle: float;
var cameraAngle: float;
var commonMapManager : CCommonMapManager = theGame.GetCommonMapManager();
position = thePlayer.GetWorldPosition();
cameraAngle = theCamera.GetCameraHeading();
playerRotation = thePlayer.GetWorldRotation();
playerAngle = -playerRotation.Yaw;
如果 ( 玩家角度 < 0 )
{
玩家角度 += 360.0;
}
l_flashObject = GetMenuFlashValueStorage().CreateTempFlashObject("red.game.witcher3.data.StaticMapPinData");
l_flashObject.SetMemberFlashUInt("id", NameToFlashUInt( '玩家' ) );
l_flashObject.SetMemberFlashInt("areaId", m_shownArea);
l_flashObject.SetMemberFlashInt( "journalAreaId", commonMapManager.GetJournalAreaByPosition( m_shownArea, position ) );
l_flashObject.SetMemberFlashNumber( "posX", position.X );
l_flashObject.SetMemberFlashNumber( "posY", position.Y );
l_flashObject.SetMemberFlashNumber( "posZ", position.Z );
l_flashObject.SetMemberFlashBool("enabled", false ); //#P 无法通过世界地图标记点传送
如果((W3ReplacerCiri)thePlayer)
{
l_flashObject.SetMemberFlashString( "description", GetLocStringByKeyExt( "map_description_player_ciri"));
l_flashObject.SetMemberFlashString( "label", GetLocStringByKeyExt( "map_location_player_ciri"));
}
否则
{
l_flashObject.SetMemberFlashString( "description", GetLocStringByKeyExt( "map_description_player"));
l_flashObject.SetMemberFlashString( "label", GetLocStringByKeyExt( "map_location_player"));
}
l_flashObject.SetMemberFlashString( "type", NameToString( '玩家' ) );
l_flashObject.SetMemberFlashNumber( "radius",0 );
l_flashObject.SetMemberFlashBool("isQuest", false );
l_flashObject.SetMemberFlashBool("isPlayer", true );
l_flashObject.SetMemberFlashNumber( "rotation", playerAngle );
flashArray.PushBackFlashObject(l_flashObject);
}
private function UpdateUserMapPin( out flashArray : CScriptedFlashArray ) : void
{
var manager : CCommonMapManager = theGame.GetCommonMapManager();
var l_flashObject : CScriptedFlashObject;
var area : int;
var position: Vector;
manager.GetUserMapPin(区域, position.X, position.Y);
如果(区域 == AN_序章_村庄_冬季)
{
区域 = AN_Prologue_Village;
}
l_flashObject = GetMenuFlashValueStorage().CreateTempFlashObject("red.game.witcher3.data.StaticMapPinData");
如果 (区域 != (int)m_shownArea)
{
position.X = -10000;
position.Y = -10000;
l_flashObject.SetMemberFlashBool( "hidden", true );
}
position.Z = 0;
l_flashObject.SetMemberFlashUInt("id", NameToFlashUInt( '用户' ) );
l_flashObject.SetMemberFlashNumber( "posX", position.X );
l_flashObject.SetMemberFlashNumber( "posY", position.Y );
l_flashObject.SetMemberFlashNumber( "posZ", position.Z );
l_flashObject.SetMemberFlashBool("enabled", false );
l_flashObject.SetMemberFlashString( "description", GetLocStringByKeyExt( "map_description_user"));
l_flashObject.SetMemberFlashString( "label", GetLocStringByKeyExt( "map_location_user"));
l_flashObject.SetMemberFlashString( "type", NameToString( '用户' ) );
l_flashObject.SetMemberFlashNumber( "radius",0 );
l_flashObject.SetMemberFlashBool("isQuest", false );
l_flashObject.SetMemberFlashBool("isPlayer", false);
l_flashObject.SetMemberFlashNumber( "rotation", 0 );
flashArray.PushBackFlashObject(l_flashObject);
}
用这个:
private function UpdatePlayerPin( out flashArray : CScriptedFlashArray ) : void {
var l_flashObject : CScriptedFlashObject;
var position: Vector;
var playerRotation: EulerAngles;
var playerAngle: float;
var cameraAngle: float;
position = thePlayer.GetWorldPosition();
cameraAngle = theCamera.GetCameraHeading();
playerRotation = thePlayer.GetWorldRotation();
playerAngle = -playerRotation.Yaw;
如果 (玩家角度 < 0)
{
playerAngle += 360.0;
}
l_flashObject = GetMenuFlashValueStorage().CreateTempFlashObject("red.game.witcher3.data.StaticMapPinData");
l_flashObject.SetMemberFlashUInt("id", NameToFlashUInt( '玩家' ) );
l_flashObject.SetMemberFlashNumber( "posX", position.X );
l_flashObject.SetMemberFlashNumber( "posY", position.Y );
l_flashObject.SetMemberFlashNumber( "posZ", position.Z );
l_flashObject.SetMemberFlashBool("enabled", false );
如果 ( (W3ReplacerCiri)玩家 )
{
l_flashObject.SetMemberFlashString( "description", GetLocStringByKeyExt( "map_description_player_ciri"));
l_flashObject.SetMemberFlashString( "label", GetLocStringByKeyExt( "map_location_player_ciri"));
}
否则
{
l_flashObject.SetMemberFlashString( "description", GetLocStringByKeyExt( "map_description_player"));
l_flashObject.SetMemberFlashString( "label", GetLocStringByKeyExt( "map_location_player"));
}
l_flashObject.SetMemberFlashString( "type", NameToString( '玩家' ) );
l_flashObject.SetMemberFlashNumber( "radius",0 );
l_flashObject.SetMemberFlashBool("isQuest", false );
l_flashObject.SetMemberFlashBool("isPlayer", true);
l_flashObject.SetMemberFlashNumber( "rotation", playerAngle );
flashArray.PushBackFlashObject(l_flashObject);
}
private function UpdateUserMapPin( out flashArray : CScriptedFlashArray ) : void
{
var manager : CCommonMapManager = theGame.GetCommonMapManager();
var l_flashObject : CScriptedFlashObject;
var area : int;
var position: Vector;
manager.GetUserMapPin(区域, position.X, position.Y);
如果(区域 == AN_Prologue_Village_Winter)
{
区域 = AN_序章_村庄;
}
如果 ( 区域 != (int)m_shownArea )
{
position.X = -10000;
position.Y = -10000;
}
position.Z = 0;
l_flashObject = GetMenuFlashValueStorage().CreateTempFlashObject("red.game.witcher3.data.StaticMapPinData");
l_flashObject.SetMemberFlashUInt("id", NameToFlashUInt( '用户' ) );
l_flashObject.SetMemberFlashNumber( "posX", position.X );
l_flashObject.SetMemberFlashNumber( "posY", position.Y );
l_flashObject.SetMemberFlashNumber( "posZ", position.Z );
l_flashObject.SetMemberFlashBool("enabled", false );
l_flashObject.SetMemberFlashString( "description", GetLocStringByKeyExt( "map_description_user"));
l_flashObject.SetMemberFlashString( "label", GetLocStringByKeyExt( "map_location_user"));
l_flashObject.SetMemberFlashString( "type", NameToString( '用户' ) );
l_flashObject.SetMemberFlashNumber( "radius",0 );
l_flashObject.SetMemberFlashBool("isQuest", false);
l_flashObject.SetMemberFlashBool("isPlayer", false );
l_flashObject.SetMemberFlashNumber( "rotation", 0 );
flashArray.PushBackFlashObject(l_flashObject);
}
并且还注释掉了这段内容:
if ( IsCurrentAreaShown() ) {
更新玩家密码(l_flashArray);
}
对此:
/*if ( IsCurrentAreaShown() ) {
更新玩家PIN码(l_flashArray);
}*/
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。