Merge pull request 'feature/update-ui' (#355) from feature/update-ui into develop

Reviewed-on: https://git.pthub.vn/Unity/perfect-world-unity/pulls/355
This commit is contained in:
hainh
2026-04-16 10:22:02 +00:00
4 changed files with 511 additions and 20 deletions
+397 -1
View File
@@ -2096,6 +2096,7 @@ MonoBehaviour:
_btnClose: {fileID: 0}
_btnNoCooldown: {fileID: 0}
_btnToggleAutoWrath: {fileID: 0}
_btnToggleTaskNpcTeleport: {fileID: 2466779418874058309}
--- !u!1 &943341969059273230
GameObject:
m_ObjectHideFlags: 0
@@ -5436,7 +5437,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -104.1, y: -685.9}
m_AnchoredPosition: {x: -104.1001, y: -685.9}
m_SizeDelta: {x: 69, y: 69}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4294505687272824498
@@ -5990,6 +5991,261 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &3231882094027968510
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3469534032284707812}
- component: {fileID: 707876435034938214}
- component: {fileID: 9012405003078926484}
- component: {fileID: 2466779418874058309}
m_Layer: 5
m_Name: BtnTele
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3469534032284707812
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3231882094027968510}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4569915078755199387}
m_Father: {fileID: 3633379407764286561}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: -96, y: -101}
m_SizeDelta: {x: 152.04822, y: 59.8188}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &707876435034938214
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3231882094027968510}
m_CullTransparentMesh: 1
--- !u!114 &9012405003078926484
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3231882094027968510}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &2466779418874058309
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3231882094027968510}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 9012405003078926484}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &3242805225000699467
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9064572811459095367}
- component: {fileID: 582200769324215060}
- component: {fileID: 8703303941752381535}
- component: {fileID: 536835647756582172}
- component: {fileID: 6771434646467845783}
m_Layer: 5
m_Name: ChangeSkillBtn (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &9064572811459095367
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3242805225000699467}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 9056141770234008732}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0}
m_AnchorMax: {x: 1, y: 0}
m_AnchoredPosition: {x: -59.0547, y: 427}
m_SizeDelta: {x: 65.4356, y: 65.436}
m_Pivot: {x: 0.5, y: 0}
--- !u!222 &582200769324215060
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3242805225000699467}
m_CullTransparentMesh: 1
--- !u!114 &8703303941752381535
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3242805225000699467}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: ba96945b6a1b743579931a87e98041fe, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &536835647756582172
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3242805225000699467}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 8703303941752381535}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &6771434646467845783
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3242805225000699467}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 10cef83c908cb734eaa7fe6c336aa621, type: 3}
m_Name:
m_EditorClassIdentifier:
lockToggleButton: {fileID: 536835647756582172}
--- !u!1 &3324826761926245672
GameObject:
m_ObjectHideFlags: 0
@@ -6341,6 +6597,8 @@ MonoBehaviour:
chatSystem: {fileID: 0}
_spriteMap: {fileID: 0}
channelButtons: []
recentWhisperDropdown: {fileID: 0}
maxRecentWhisperTargets: 5
--- !u!1 &3544484534608324905
GameObject:
m_ObjectHideFlags: 0
@@ -7595,6 +7853,142 @@ MonoBehaviour:
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &4013795018983216783
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4569915078755199387}
- component: {fileID: 1411669846563365036}
- component: {fileID: 7155787430931636290}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4569915078755199387
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4013795018983216783}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3469534032284707812}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1411669846563365036
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4013795018983216783}
m_CullTransparentMesh: 1
--- !u!114 &7155787430931636290
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4013795018983216783}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: TeleTask
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &4159319322562488724
GameObject:
m_ObjectHideFlags: 0
@@ -8015,6 +8409,7 @@ RectTransform:
- {fileID: 343384919288357048}
- {fileID: 8535117300230498247}
- {fileID: 7774691228867102137}
- {fileID: 3469534032284707812}
- {fileID: 7565862659053596910}
- {fileID: 2644777854458514988}
- {fileID: 8325409248639061524}
@@ -8748,6 +9143,7 @@ RectTransform:
- {fileID: 9190831209898129191}
- {fileID: 6550142832931870620}
- {fileID: 7592287337898200118}
- {fileID: 9064572811459095367}
m_Father: {fileID: 3233441867675090637}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -6,6 +6,7 @@ using EditorAttributes;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using BrewMonster.Scripts.UI;
namespace BrewMonster.Scripts
{
@@ -33,7 +34,9 @@ namespace BrewMonster.Scripts
[Header("Command Buttons")]
[SerializeField] Button _btnNoCooldown;
[SerializeField] Button _btnToggleAutoWrath;
[SerializeField] Button _btnToggleTaskNpcTeleport;
private bool _isAutoAddWrathEnabled = false;
private Coroutine _autoAddWrathCoroutine;
@@ -53,10 +56,18 @@ namespace BrewMonster.Scripts
//_btnClose?.onClick.AddListener(OnBtnCloseClicked);
_btnNoCooldown?.onClick.AddListener(OnBtnNoCooldownClicked);
_btnToggleAutoWrath?.onClick.AddListener(OnBtnToggleAutoWrathClicked);
_btnToggleTaskNpcTeleport?.onClick.AddListener(OnBtnToggleTaskNpcTeleportClicked);
DontDestroyOnLoad(this);
}
public void OnBtnToggleTaskNpcTeleportClicked()
{
bool next = !CECUIHelper.DebugInstantTeleportToTaskNpc;
CECUIHelper.SetDebugInstantTeleportToTaskNpc(next);
Debug.Log($"[DlgConsole] Task NPC teleport cheat: {(next ? "ON" : "OFF")}");
}
private void OnDestroy()
{
CancelAllLoopCommands();
@@ -194,30 +194,31 @@ namespace BrewMonster.UI
public override LinkCommand Clone() => new MoveToLinkCommand(this);
public override bool Execute(TMP_Text pLink){
if (pLink)
public override bool Execute(TMP_Text pLink)
{
if (pLink)
{
// Prefer task+npc route first so FollowCoord(int id, int taskId) can apply debug teleport.
if (m_TargetId > 0 && m_TaskId > 0)
{
DlgTask.SetTraceNpc(m_TargetId, m_TaskId);
return true;
}
if (!m_TargetPos.IsZero())
{
// show the flag on worldmap
DlgTask.SetTracePosition(m_Targets, m_TargetName);
return true;
}
else if (m_TargetId > 0 && m_TaskId > 0)
{
DlgTask.SetTraceNpc(m_TargetId, m_TaskId);
return true;
}
else
{
//EC_Game.GetGameRun().AddFixedMessage(FIXMSG_ERR_FC_INVALID_OPERATION);
return false;
}
//EC_Game.GetGameRun().AddFixedMessage(FIXMSG_ERR_FC_INVALID_OPERATION);
return false;
}
return false;
return false;
}
}
}
//////////////////////////////////////////////////////////////////////////
// TaskNameHoverCommand
//////////////////////////////////////////////////////////////////////////
@@ -271,4 +272,4 @@ namespace BrewMonster.UI
return true;
}
}
}
}
+85 -2
View File
@@ -10,6 +10,8 @@ using BrewMonster.Scripts;
using BrewMonster.Scripts.Chat;
using CSNetwork.GPDataType;
using CSNetwork;
using System.Numerics;
using UnityEngine;
namespace BrewMonster.Scripts.UI
{
@@ -17,6 +19,34 @@ namespace BrewMonster.Scripts.UI
{
public static string DlgTaskName = "Win_Quest";
public static bool DebugInstantTeleportToTaskNpc { get; private set; }
public static void SetDebugInstantTeleportToTaskNpc(bool enabled)
{
DebugInstantTeleportToTaskNpc = enabled;
UnityEngine.Debug.Log($"[CECUIHelper] DebugInstantTeleportToTaskNpc={(enabled ? "ON" : "OFF")}");
}
private static bool IsNpcTeleportTarget(int id)
{
if (id <= 0)
return false;
ATaskTemplMan pMan = EC_Game.GetTaskTemplateMan();
if (pMan != null && pMan.TryGetTaskNPCInfo((uint)id, out _))
return true;
elementdataman edm = ElementDataManProvider.GetElementDataMan();
if (edm != null)
{
DATA_TYPE dt = DATA_TYPE.DT_INVALID;
edm.get_data_ptr((uint)id, ID_SPACE.ID_SPACE_ESSENCE, ref dt);
return dt == DATA_TYPE.DT_NPC_ESSENCE;
}
return false;
}
public static A3DVECTOR3 GetTaskObjectCoordinates(int id, ref bool in_table)
{
in_table = false;
@@ -268,6 +298,60 @@ namespace BrewMonster.Scripts.UI
return false;
}
if (DebugInstantTeleportToTaskNpc && taskId > 0 && IsNpcTeleportTarget(id))
{
wm.FinishAllWork(true);
wm.ClearDelayedWork();
bool canUseServerGoto =
UnityGameSession.Instance != null &&
UnityGameSession.Instance.GameSession != null &&
UnityGameSession.Instance.GameSession.IsConnected;
if (canUseServerGoto)
{
// Online: use server-authoritative relocation to avoid snap-back by MSG_HST_CORRECTPOS.
UnityGameSession.c2s_CmdGoto(vPos.x, vPos.y, vPos.z);
var npcManOnline = EC_ManMessageMono.Instance != null ? EC_ManMessageMono.Instance.CECNPCMan : null;
var npcOnline = npcManOnline != null ? npcManOnline.FindNPCByTemplateID(id) : null;
if (npcOnline != null)
{
host.SelectTarget(npcOnline.GetNPCID());
}
UnityEngine.Debug.Log(
$"[CECUIHelper] Debug teleport requested via server goto to ({vPos.x},{vPos.y},{vPos.z}), templateId={id}, taskId={taskId}");
return true;
}
// Offline/local fallback: keep old behavior.
UnityEngine.Vector3 newPos = new UnityEngine.Vector3(vPos.x, vPos.y, vPos.z);
A3DVECTOR3 newPosA3D = new A3DVECTOR3(vPos.x, vPos.y, vPos.z);
host.SetPos(newPos);
// Sync move baseline to avoid "old server pos -> new pos" speed spike on next move packet.
if (host.m_MoveCtrl != null)
{
host.m_MoveCtrl.SetLastSevPos(newPosA3D);
host.m_MoveCtrl.SetHostLastPos(newPosA3D);
host.m_MoveCtrl.SendStopMoveCmd(newPos, 0f, (int)GPMoveMode.GP_MOVE_RUN);
}
var npcMan = EC_ManMessageMono.Instance != null ? EC_ManMessageMono.Instance.CECNPCMan : null;
var npc = npcMan != null ? npcMan.FindNPCByTemplateID(id) : null;
if (npc != null && host.SelectTarget(npc.GetNPCID()))
{
CECHPWorkTrace traceWork = wm.CreateNPCTraceWork(npc, taskId);
if (traceWork != null)
wm.StartWork_p2(traceWork, true);
}
UnityEngine.Debug.Log($"[CECUIHelper] Teleported locally to task NPC templateId={id}, taskId={taskId}");
return true;
}
CECHPWorkMove work = wm.CreateWork(CECHPWork.Host_work_ID.WORK_MOVETOPOS) as CECHPWorkMove;
if (work == null)
{
@@ -287,7 +371,6 @@ namespace BrewMonster.Scripts.UI
}
wm.StartWork_p2(work);
return true;
}
@@ -542,4 +625,4 @@ namespace BrewMonster.Scripts.UI
conv = chat.Replace("&", "");
}
}
}
}