From c56065f6a0bc4b8972c24e722068f204d1223adf Mon Sep 17 00:00:00 2001 From: RallyBlock Date: Mon, 9 Nov 2026 20:24:48 -0500 Subject: [PATCH] WASD uses stock moveMap; pitch + HUD placement --- client.cs | 171 +++++++++++++++++++++++++----------------------------- 1 file changed, 80 insertions(+), 91 deletions(-) diff --git a/client.cs b/client.cs index 3f3906a..ef71a8f 100644 --- a/client.cs +++ b/client.cs @@ -6,7 +6,9 @@ $RPGClient::Version = 2; $RPGClient::Active = 0; $RPGClient::Yaw = 0; $RPGClient::Dist = 14; -$RPGClient::TopDownPitch = 0.95; +$RPGClient::TopDownPitch = 1.22; +$RPGClient::OrbitInit = 0; +$RPGClient::HudPlaced = 0; $RPGClient::PanX = 0; $RPGClient::PanY = 0; $RPGClient::PanMax = 48; @@ -182,23 +184,48 @@ function RPGClient_CameraTick() } %spin = $RPGClient::YawSpeed; %zoom = $RPGClient::ZoomSpeed; - if ($RPGClient::MvL) + %changed = 0; + if ($mvLeftAction > 0) + { + $RPGClient::Yaw = $RPGClient::Yaw - %spin * $mvLeftAction; + %changed = 1; + } + if ($mvRightAction > 0) + { + $RPGClient::Yaw = $RPGClient::Yaw + %spin * $mvRightAction; + %changed = 1; + } + if ($mvForwardAction > 0) + { + $RPGClient::Dist = getMax(6, $RPGClient::Dist - %zoom * $mvForwardAction); + %changed = 1; + } + if ($mvBackwardAction > 0) + { + $RPGClient::Dist = getMin(32, $RPGClient::Dist + %zoom * $mvBackwardAction); + %changed = 1; + } + if ($RPGClient::MvL > 0) { $RPGClient::Yaw = $RPGClient::Yaw - %spin * $RPGClient::MvL; + %changed = 1; } - if ($RPGClient::MvR) + if ($RPGClient::MvR > 0) { $RPGClient::Yaw = $RPGClient::Yaw + %spin * $RPGClient::MvR; + %changed = 1; } - if ($RPGClient::MvF) + if ($RPGClient::MvF > 0) { $RPGClient::Dist = getMax(6, $RPGClient::Dist - %zoom * $RPGClient::MvF); + %changed = 1; } - if ($RPGClient::MvB) + if ($RPGClient::MvB > 0) { $RPGClient::Dist = getMin(32, $RPGClient::Dist + %zoom * $RPGClient::MvB); + %changed = 1; } - RPGClient_ApplyCamera(0); + RPGClient_ApplyCamera(%changed); $RPGClient::CamTickSched = schedule(32, 0, RPGClient_CameraTick); } @@ -287,14 +314,6 @@ function RPGClient_EnableOverlay() RPGClient_KeyMap.delete(); } new ActionMap(RPGClient_KeyMap); - RPGClient_KeyMap.bind(keyboard, w, RPGClient_KeyMvForward); - RPGClient_KeyMap.bind(keyboard, s, RPGClient_KeyMvBackward); - RPGClient_KeyMap.bind(keyboard, a, RPGClient_KeyMvLeft); - RPGClient_KeyMap.bind(keyboard, d, RPGClient_KeyMvRight); - RPGClient_KeyMap.bind(keyboard0, w, RPGClient_KeyMvForward); - RPGClient_KeyMap.bind(keyboard0, s, RPGClient_KeyMvBackward); - RPGClient_KeyMap.bind(keyboard0, a, RPGClient_KeyMvLeft); - RPGClient_KeyMap.bind(keyboard0, d, RPGClient_KeyMvRight); RPGClient_KeyMap.bind(keyboard, left, RPGClient_YawLeft); RPGClient_KeyMap.bind(keyboard, right, RPGClient_YawRight); RPGClient_KeyMap.bind(keyboard0, left, RPGClient_YawLeft); @@ -347,6 +366,32 @@ function RPGClient_DisableOverlay() RPGClient_Mouse.delete(); } $RPGClient::Active = 0; + $RPGClient::OrbitInit = 0; + $RPGClient::HudPlaced = 0; +} + +function RPGClient_Hud_Place() +{ + if (!isObject(RPGClient_Hud) || !isObject(Canvas)) + { + return; + } + %ext = Canvas.getExtent(); + %w = getWord(%ext, 0); + %h = getWord(%ext, 1); + if (%h < 1) + { + return; + } + %pw = %w > 520 ? 520 : %w - 16; + %px = mFloor((%w - %pw) * 0.5); + %py = %h - 108; + if (%py < 8) + { + %py = 8; + } + RPGClient_Hud.resize(%px, %py, %pw, 20); + $RPGClient::HudPlaced = 1; } function RPGClient_ApplyCamera(%forceSync) @@ -381,19 +426,18 @@ function RPGClient_ApplyCamera(%forceSync) %conn.setControlObject(%cam); $mvFreeLook = 0; $firstPerson = 0; - $mvForwardAction = 0; - $mvBackwardAction = 0; - $mvLeftAction = 0; - $mvRightAction = 0; - $RPGClient::PanX = 0; - $RPGClient::PanY = 0; %xfm = RPGClient_ViewTransform(%body, $RPGClient::Yaw, $RPGClient::Dist, 0, 0); %cam.unmountImage(0); + if (!$RPGClient::OrbitInit) + { + %cam.setMode("Corpse", %body); + %cam.setOrbitMode(%body, %xfm, 0, 32, $RPGClient::Dist); + %cam.mode = "Corpse"; + %cam.thirdPersonOnly = 1; + $RPGClient::OrbitInit = 1; + } %cam.setTransform(%xfm); - %cam.setMode("Corpse", %body); - %cam.setOrbitMode(%body, %xfm, 0, 32, $RPGClient::Dist); - %cam.mode = "Corpse"; - %cam.thirdPersonOnly = 1; + %cam.setOrbitDist($RPGClient::Dist); %now = getSimTime(); if (%forceSync || %now - $RPGClient::LastCamSync > 120) { @@ -550,8 +594,8 @@ function clientCmdRPG_TopDown(%on, %yaw, %dist) $RPGClient::Active = 1; $RPGClient::Yaw = %yaw; $RPGClient::Dist = %dist > 0 ? %dist : 14; - $RPGClient::PanX = 0; - $RPGClient::PanY = 0; + $RPGClient::OrbitInit = 0; + $RPGClient::HudPlaced = 0; RPGClient_EnableOverlay(); RPGClient_BindKeys(); RPGClient_StartCameraTick(); @@ -613,14 +657,15 @@ function RPGClient_Hud_Ensure() } new GuiTextCtrl(RPGClient_Hud) { - horizSizing = "center"; - vertSizing = "bottom"; - position = "0 88"; + horizSizing = "absolute"; + vertSizing = "absolute"; + position = "8 400"; extent = "520 20"; profile = "ChatHudMessageProfile"; text = ""; }; PlayGui.add(RPGClient_Hud); + RPGClient_Hud_Place(); } function RPGClient_Hud_Update(%hp, %maxHp, %silver, %load, %cap, %skillId, %skillValue, %tHp, %tMax) @@ -630,6 +675,10 @@ function RPGClient_Hud_Update(%hp, %maxHp, %silver, %load, %cap, %skillId, %skil return; } RPGClient_Hud_Ensure(); + if (!$RPGClient::HudPlaced) + { + RPGClient_Hud_Place(); + } %t = ""; if (%tMax > 0) { @@ -710,68 +759,8 @@ package RPGClient_BlockMouseFire }; activatePackage(RPGClient_BlockMouseFire); -package RPGClient_MoveMap +package RPGClient_PageKeys { - function moveforward(%val) - { - if ($RPGClient::Active) - { - $RPGClient::MvF = %val; - if (%val && $RunMultiplier > 1) - { - $RPGClient::MvF = %val * $RunMultiplier; - } - $mvForwardAction = 0; - return; - } - Parent::moveforward(%val); - } - - function movebackward(%val) - { - if ($RPGClient::Active) - { - $RPGClient::MvB = %val; - if (%val && $RunMultiplier > 1) - { - $RPGClient::MvB = %val * $RunMultiplier; - } - $mvBackwardAction = 0; - return; - } - Parent::movebackward(%val); - } - - function moveleft(%val) - { - if ($RPGClient::Active) - { - $RPGClient::MvL = %val; - if (%val && $RunMultiplier > 1) - { - $RPGClient::MvL = %val * $RunMultiplier; - } - $mvLeftAction = 0; - return; - } - Parent::moveleft(%val); - } - - function moveright(%val) - { - if ($RPGClient::Active) - { - $RPGClient::MvR = %val; - if (%val && $RunMultiplier > 1) - { - $RPGClient::MvR = %val * $RunMultiplier; - } - $mvRightAction = 0; - return; - } - Parent::moveright(%val); - } - function PageUpNewChatHud(%val) { if ($RPGClient::Active && %val) @@ -792,7 +781,7 @@ package RPGClient_MoveMap Parent::PageDownNewChatHud(%val); } }; -activatePackage(RPGClient_MoveMap); +activatePackage(RPGClient_PageKeys); package RPGClient_Cursor {