v1.2.2.b2
## GENERAL - Updated CSS to version 1.0.369. - Upgraded the project from .NET 8.0 to .NET 10.0. - Updated Turkish language translation by @ByDexterTR. - Added Russian language translation by @213sdfsdgf. - Fixed an issue with incorrect display of Arabic nicknames. - Used ForceFullUpdate to resolve the "FATAL ERROR: CopyExistingEntity" crash. - Disabled stale HandleCommandDrop hook to avoid crashes when a player joins a team (thanks to @vladimir214sd). - Added new signatures to gamedata. - Added the ability to configure the number of grenades for every skill that uses grenades as part of its ability (e.g., Miner, AntyFlash, MagneticDecoy, etc.). ## SKILL IMPROVEMENTS - Re-Zombie: -- Fixed weapon switching issues when a player is holding a Zeus and a knife. -- Weapons are now removed for bots in zombie mode. - Ghost: -- Blocked the ability to use the Zeus. - Thorns: -- Added a configurable maximum health limit (37 HP) for the damage that can be reflected. - Second Life / Phoenix / Re-Zombie: -- Fixed an issue where players would occasionally fail to respawn if they took too much damage too quickly. - Ghost / Chicken: -- Blocked the ability to use the SG556 (`weapon_sg556`). - Wallhack: -- Fixed a bug that caused temporary enemy highlighting right after death. - Cypher: -- Added camera position persistence. - God Mode: -- Fixed an issue with permanent immortality triggering after reaching exactly 0 HP. - Weapons Swap: -- The ammo count is now also transferred when weapons are swapped. - Muhammed: -- Renamed the skill to "DeathBomb". - Spectator: -- Fixed a bug where a player with the Chicken skill would still display as a ragdoll after death when spectated. - Friendly Fire: -- The skill now works even when the server's mp_friendlyfire setting is set to 0. - Baseball: -- Disabled teammate killing.
This commit is contained in:
parent
cba834e8f0
commit
91761f7376
84 changed files with 6894 additions and 1689 deletions
|
|
@ -162,32 +162,67 @@ public class WasdMenuPlayer
|
|||
color = parts[0].StartsWith("#") && parts[0].Length == 7 ? parts[0] : string.Empty;
|
||||
text = parts.Length > 1 ? parts[1] : "";
|
||||
}
|
||||
|
||||
|
||||
string cleanText = text.Replace("\u200B", "")
|
||||
.Replace("\u200C", "")
|
||||
.Replace("\u202A", "")
|
||||
.Replace("\u202C", "");
|
||||
|
||||
int sepIndex = cleanText.IndexOf(" : ");
|
||||
string namePart = sepIndex != -1 ? cleanText.Substring(0, sepIndex) : cleanText;
|
||||
string statsPart = sepIndex != -1 ? cleanText.Substring(sepIndex) : "";
|
||||
|
||||
int start = 0;
|
||||
int length = cleanText.Length;
|
||||
|
||||
if (option == CurrentChoice)
|
||||
{
|
||||
if (text.Length > maxLength)
|
||||
if (cleanText.Length > maxLength)
|
||||
{
|
||||
int remaining = text.Length - scrollIndex;
|
||||
int remaining = cleanText.Length - scrollIndex;
|
||||
if (remaining <= maxLength)
|
||||
{
|
||||
text = SafeSubstring(text, scrollIndex, remaining);
|
||||
if (Server.TickCount % 32 == 0)
|
||||
scrollIndex = 0;
|
||||
start = scrollIndex;
|
||||
length = remaining;
|
||||
if (Server.TickCount % 32 == 0) scrollIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
text = SafeSubstring(text, scrollIndex, maxLength);
|
||||
if (Server.TickCount % 32 == 0)
|
||||
scrollIndex += scrollJump;
|
||||
start = scrollIndex;
|
||||
length = maxLength;
|
||||
if (Server.TickCount % 32 == 0) scrollIndex += scrollJump;
|
||||
}
|
||||
}
|
||||
else
|
||||
text = SafeSubstring(text, 0, maxLength);
|
||||
|
||||
builder.AppendLine(string.Format(itemHoverText, text));
|
||||
{
|
||||
start = 0;
|
||||
length = Math.Min(cleanText.Length, maxLength);
|
||||
}
|
||||
}
|
||||
else
|
||||
builder.AppendLine(string.Format(itemText, $"<font {(string.IsNullOrEmpty(color) ? "" : $"color='{color}'")}'>{SafeSubstring(text, 0, maxLength)}</font>"));
|
||||
{
|
||||
start = 0;
|
||||
length = Math.Min(cleanText.Length, maxLength);
|
||||
}
|
||||
|
||||
int nameLength = namePart.Length;
|
||||
|
||||
int nameSliceStart = Math.Max(start, 0);
|
||||
int nameSliceEnd = Math.Min(start + length, nameLength);
|
||||
int nameSliceLength = Math.Max(0, nameSliceEnd - nameSliceStart);
|
||||
string visibleName = nameSliceLength > 0 ? cleanText.Substring(nameSliceStart, nameSliceLength) : "";
|
||||
|
||||
int statsSliceStart = Math.Max(start, nameLength);
|
||||
int statsSliceEnd = Math.Min(start + length, cleanText.Length);
|
||||
int statsSliceLength = Math.Max(0, statsSliceEnd - statsSliceStart);
|
||||
|
||||
string visibleStats = statsSliceLength > 0 ? cleanText.Substring(statsSliceStart, statsSliceLength) : "";
|
||||
string finalOptionText = (visibleName.Length > 0 ? $"\u202A{visibleName}\u202C" : "") + visibleStats;
|
||||
|
||||
if (option == CurrentChoice)
|
||||
builder.AppendLine(string.Format(itemHoverText, finalOptionText));
|
||||
else
|
||||
builder.AppendLine(string.Format(itemText, $"<font {(string.IsNullOrEmpty(color) ? "" : $"color='{color}'")}'>{finalOptionText}</font>"));
|
||||
|
||||
option = option.Next;
|
||||
shown++;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue