Rewritten player speeds to be relative unit-less.
Value of 1 means "default speed", 2 means "double the speed", 0.5 means "half the speed". This allows for easier plugins and is more future-proof.
This commit is contained in:
parent
93d4cbb989
commit
64d9390069
@ -1680,11 +1680,11 @@ a_Player:OpenWindow(Window);
|
||||
GetGroups = { Return = "array-table of {{cGroup}}", Notes = "Returns all the groups that this player is member of, as a table. The groups are stored in the array part of the table, beginning with index 1."},
|
||||
GetIP = { Return = "string", Notes = "Returns the IP address of the player, if available. Returns an empty string if there's no IP to report."},
|
||||
GetInventory = { Return = "{{cInventory|Inventory}}", Notes = "Returns the player's inventory"},
|
||||
GetMaxSpeed = { Params = "", Return = "number", Notes = "Returns the player's current maximum speed (as reported by the 1.6.1+ protocols)" },
|
||||
GetMaxSpeed = { Params = "", Return = "number", Notes = "Returns the player's current maximum speed, relative to the game default speed. Takes into account the sprinting / flying status." },
|
||||
GetName = { Return = "string", Notes = "Returns the player's name" },
|
||||
GetNormalMaxSpeed = { Params = "", Return = "number", Notes = "Returns the player's maximum walking speed (as reported by the 1.6.1+ protocols)" },
|
||||
GetNormalMaxSpeed = { Params = "", Return = "number", Notes = "Returns the player's maximum walking speed, relative to the game default speed. Defaults to 1, but plugins may modify it for faster or slower walking." },
|
||||
GetResolvedPermissions = { Return = "array-table of string", Notes = "Returns all the player's permissions, as a table. The permissions are stored in the array part of the table, beginning with index 1." },
|
||||
GetSprintingMaxSpeed = { Params = "", Return = "number", Notes = "Returns the player's maximum sprinting speed (as reported by the 1.6.1+ protocols)" },
|
||||
GetSprintingMaxSpeed = { Params = "", Return = "number", Notes = "Returns the player's maximum sprinting speed, relative to the game default speed. Defaults to 1.3, but plugins may modify it for faster or slower sprinting." },
|
||||
GetStance = { Return = "number", Notes = "Returns the player's stance (Y-pos of player's eyes)" },
|
||||
GetThrowSpeed = { Params = "SpeedCoeff", Return = "{{Vector3d}}", Notes = "Returns the speed vector for an object thrown with the specified speed coeff. Basically returns the normalized look vector multiplied by the coeff, with a slight random variation." },
|
||||
GetThrowStartPos = { Params = "", Return = "{{Vector3d}}", Notes = "Returns the position where the projectiles should start when thrown by this player." },
|
||||
@ -1729,9 +1729,9 @@ a_Player:OpenWindow(Window);
|
||||
SetGameMode = { Params = "{{eGameMode|NewGameMode}}", Return = "", Notes = "Sets the gamemode for the player. The new gamemode overrides the world's default gamemode, unless it is set to gmInherit." },
|
||||
SetIsFishing = { Params = "IsFishing, [FloaterEntityID]", Return = "", Notes = "Sets the 'IsFishing' flag for the player. The floater entity ID is expected for the true variant, it can be omitted when IsFishing is false. FIXME: Undefined behavior when multiple fishing rods are used simultanously" },
|
||||
SetName = { Params = "Name", Return = "", Notes = "Sets the player name. This rename will NOT be visible to any players already in the server who are close enough to see this player." },
|
||||
SetNormalMaxSpeed = { Params = "NormalMaxSpeed", Return = "", Notes = "Sets the normal (walking) maximum speed (as reported by the 1.6.1+ protocols)" },
|
||||
SetNormalMaxSpeed = { Params = "NormalMaxSpeed", Return = "", Notes = "Sets the normal (walking) maximum speed, relative to the game default speed. The default value is 1. Sends the updated speed to the client, if appropriate." },
|
||||
SetSprint = { Params = "IsSprinting", Return = "", Notes = "Sets whether the player is sprinting or not." },
|
||||
SetSprintingMaxSpeed = { Params = "SprintingMaxSpeed", Return = "", Notes = "Sets the sprinting maximum speed (as reported by the 1.6.1+ protocols)" },
|
||||
SetSprintingMaxSpeed = { Params = "SprintingMaxSpeed", Return = "", Notes = "Sets the sprinting maximum speed, relative to the game default speed. The default value is 1.3. Sends the updated speed to the client, if appropriate." },
|
||||
SetVisible = { Params = "IsVisible", Return = "", Notes = "Sets the player visibility to other players" },
|
||||
XpForLevel = { Params = "XPLevel", Return = "number", Notes = "(STATIC) Returns the total amount of XP needed for the specified XP level. Inverse of CalcLevelFromXp()." },
|
||||
},
|
||||
|
@ -43,8 +43,8 @@ cPlayer::cPlayer(cClientHandle* a_Client, const AString & a_PlayerName)
|
||||
, m_GameMode(eGameMode_NotSet)
|
||||
, m_IP("")
|
||||
, m_ClientHandle(a_Client)
|
||||
, m_NormalMaxSpeed(0.1)
|
||||
, m_SprintingMaxSpeed(0.13)
|
||||
, m_NormalMaxSpeed(1.0)
|
||||
, m_SprintingMaxSpeed(1.3)
|
||||
, m_IsCrouched(false)
|
||||
, m_IsSprinting(false)
|
||||
, m_IsFlying(false)
|
||||
|
@ -331,13 +331,13 @@ public:
|
||||
|
||||
// tolua_begin
|
||||
|
||||
/// Returns the current maximum speed, as reported in the 1.6.1+ protocol (takes current sprinting state into account)
|
||||
/// Returns the current relative maximum speed (takes current sprinting state into account)
|
||||
double GetMaxSpeed(void) const;
|
||||
|
||||
/// Gets the normal maximum speed, as reported in the 1.6.1+ protocol, in the protocol units
|
||||
/// Gets the normal relative maximum speed
|
||||
double GetNormalMaxSpeed(void) const { return m_NormalMaxSpeed; }
|
||||
|
||||
/// Gets the sprinting maximum speed, as reported in the 1.6.1+ protocol, in the protocol units
|
||||
/// Gets the sprinting relative maximum speed
|
||||
double GetSprintingMaxSpeed(void) const { return m_SprintingMaxSpeed; }
|
||||
|
||||
/// Sets the normal maximum speed, as reported in the 1.6.1+ protocol. Sends the update to player, if needed.
|
||||
@ -432,10 +432,14 @@ protected:
|
||||
|
||||
cSlotNums m_InventoryPaintSlots;
|
||||
|
||||
/// Max speed, in ENTITY_PROPERTIES packet's units, when the player is walking. 0.1 by default
|
||||
/** Max speed, relative to the game default.
|
||||
1 means regular speed, 2 means twice as fast, 0.5 means half-speed.
|
||||
Default value is 1. */
|
||||
double m_NormalMaxSpeed;
|
||||
|
||||
/// Max speed, in ENTITY_PROPERTIES packet's units, when the player is sprinting. 0.13 by default
|
||||
/** Max speed, relative to the game default max speed.
|
||||
1 means regular speed, 2 means twice as fast, 0.5 means half-speed.
|
||||
Default value is 1.3 */
|
||||
double m_SprintingMaxSpeed;
|
||||
|
||||
bool m_IsCrouched;
|
||||
|
@ -135,7 +135,7 @@ void cProtocol161::SendPlayerMaxSpeed(void)
|
||||
WriteInt(m_Client->GetPlayer()->GetUniqueID());
|
||||
WriteInt(1);
|
||||
WriteString("generic.movementSpeed");
|
||||
WriteDouble(m_Client->GetPlayer()->GetMaxSpeed());
|
||||
WriteDouble(0.1 * m_Client->GetPlayer()->GetMaxSpeed());
|
||||
Flush();
|
||||
}
|
||||
|
||||
@ -267,7 +267,7 @@ void cProtocol162::SendPlayerMaxSpeed(void)
|
||||
WriteInt(m_Client->GetPlayer()->GetUniqueID());
|
||||
WriteInt(1);
|
||||
WriteString("generic.movementSpeed");
|
||||
WriteDouble(m_Client->GetPlayer()->GetMaxSpeed());
|
||||
WriteDouble(0.1 * m_Client->GetPlayer()->GetMaxSpeed());
|
||||
WriteShort(0);
|
||||
Flush();
|
||||
}
|
||||
|
@ -689,7 +689,7 @@ void cProtocol172::SendPlayerAbilities(void)
|
||||
Pkt.WriteByte(Flags);
|
||||
// TODO: Pkt.WriteFloat(m_Client->GetPlayer()->GetMaxFlyingSpeed());
|
||||
Pkt.WriteFloat(0.05f);
|
||||
Pkt.WriteFloat((float)m_Client->GetPlayer()->GetMaxSpeed());
|
||||
Pkt.WriteFloat((float)(0.1 * m_Client->GetPlayer()->GetMaxSpeed()));
|
||||
}
|
||||
|
||||
|
||||
@ -743,13 +743,14 @@ void cProtocol172::SendPlayerMaxSpeed(void)
|
||||
Pkt.WriteInt(m_Client->GetPlayer()->GetUniqueID());
|
||||
Pkt.WriteInt(1); // Count
|
||||
Pkt.WriteString("generic.movementSpeed");
|
||||
Pkt.WriteDouble(0.1);
|
||||
// The default game speed is 0.1, multiply that value by the relative speed:
|
||||
Pkt.WriteDouble(0.1 * m_Client->GetPlayer()->GetNormalMaxSpeed());
|
||||
if (m_Client->GetPlayer()->IsSprinting())
|
||||
{
|
||||
Pkt.WriteShort(1); // Modifier count
|
||||
Pkt.WriteInt64(0x662a6b8dda3e4c1c);
|
||||
Pkt.WriteInt64(0x881396ea6097278d); // UUID of the modifier
|
||||
Pkt.WriteDouble(0.3);
|
||||
Pkt.WriteDouble(m_Client->GetPlayer()->GetSprintingMaxSpeed() - m_Client->GetPlayer()->GetNormalMaxSpeed());
|
||||
Pkt.WriteByte(2);
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user