rott/kf_sources/KFPatcher/Classes/o_Helper.uc
2026-07-14 20:27:09 +07:00

166 lines
12 KiB
Ucode
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class o_Helper extends object;
// colors and tags, maybe later I will convert this to a config array
struct ColorStruct
{
var string Name; // color name, for comfort
var string Tag; // color tag
var Color Color; // RGBA values
};
var array<ColorStruct> ColorList; // color list
// converts color tags to colors
final static function string ParseTags(out string input)
{
local int i;
local array<ColorStruct> Temp;
local string strTemp;
Temp = default.ColorList;
for (i=0; i<Temp.Length; i++)
{
strTemp = class'GameInfo'.static.MakeColorCode(Temp[i].Color);
ReplaceText(input, Temp[i].Tag, strTemp);
}
return input;
}
// removes color tags
final static function string StripTags(out string input)
{
local int i;
for (i=0; i<default.ColorList.Length; i++)
{
ReplaceText(input, default.ColorList[i].Tag, "");
}
return input;
}
// removes colors from a string
final static function string StripColor(out string s)
{
local int p;
p = InStr(s,chr(27));
while ( p>=0 )
{
s = left(s,p)$mid(S,p+4);
p = InStr(s,Chr(27));
}
return s;
}
final static function string ParsePlayerName(PlayerController pc)
{
if (pc != none || pc.playerReplicationInfo != none)
return "^b" $ StripTags(pc.playerReplicationInfo.PlayerName) $ "^w";
}
final static function SendMessage(PlayerController pc, coerce string msg, bool bAlreadyColored)
{
if (pc == none || msg == "")
return;
if (!bAlreadyColored)
msg = ParseTags(msg);
pc.teamMessage(none, msg, 'KFPatcher');
}
// broadcasts a global message
final static function BroadcastText(levelInfo level, string message, optional bool bBroadcastToCenter)
{
local Controller C;
local PlayerController PC;
for(C = Level.ControllerList; C != none; C = C.NextController)
{
// only proceed on PlayerControllers, but skip bots.
PC = PlayerController(C);
if (PC == none || KFFriendlyAI(C) != none)
continue;
// Remove color tags for WebAdmin and Log.
if (MessagingSpectator(C) != none)
{
message = StripColor(message);
// log(message, Class.Outer.Name);
}
else
message = ParseTags(message);
// broadcast text to the center like admin say. WebAdmin ignores this so make it use the usual TeamMessage.
if (bBroadcastToCenter && MessagingSpectator(C) == none)
{
PC.ClearProgressMessages();
PC.SetProgressTime(4);
PC.SetProgressMessage(0, message, class'Canvas'.static.MakeColor(255,255,255));
}
else
PC.TeamMessage(none, message, 'Say');
}
}
final static function ShowPatHP(PlayerController pc, ZombieBoss pat)
{
SendMessage(pc, "^wThe ^b" $ pat.MenuName $ "^w's health is ^r" $ pat.health $ " ^w/ ^r" $ pat.HealthMax $ "^w. Syringes used - ^r " $ pat.SyringeCount $ "^w.", false);
}
defaultproperties
{
ColorList(00)=(Name="Red",tag="^r",Color=(B=0,G=0,R=255,A=0))
ColorList(01)=(Name="Orange",tag="^o",Color=(B=0,G=77,R=200,A=0))
ColorList(02)=(Name="Yellow",tag="^y",Color=(B=0,G=255,R=255,A=0))
ColorList(03)=(Name="Green",tag="^g",Color=(B=0,G=255,R=0,A=0))
ColorList(04)=(Name="Blue",tag="^b",Color=(B=200,G=100,R=0,A=0))
ColorList(05)=(Name="Neon Blue",tag="^nb",Color=(B=200,G=150,R=0,A=0))
ColorList(06)=(Name="Cyan",tag="^c",Color=(B=255,G=255,R=0,A=0))
ColorList(07)=(Name="Violet",tag="^v",Color=(B=139,G=0,R=255,A=0))
ColorList(08)=(Name="Pink",tag="^p",Color=(B=203,G=192,R=255,A=0))
ColorList(09)=(Name="Purple",tag="^p",Color=(B=128,G=0,R=128,A=0))
ColorList(10)=(Name="White",tag="^w",Color=(B=255,G=255,R=255,A=0))
ColorList(11)=(Name="Gray",tag="$g",Color=(B=96,G=96,R=96,A=0))
ColorList(12)=(Name="ScrN 1",tag="^0",Color=(B=1,G=1,R=1,A=0))
ColorList(13)=(Name="ScrN 2",tag="^1",Color=(B=1,G=1,R=200,A=0))
ColorList(14)=(Name="ScrN 3",tag="^2",Color=(B=1,G=200,R=1,A=0))
ColorList(15)=(Name="ScrN 4",tag="^3",Color=(B=1,G=200,R=200,A=0))
ColorList(16)=(Name="ScrN 5",tag="^4",Color=(B=1,G=1,R=255,A=0))
ColorList(17)=(Name="ScrN 6",tag="^5",Color=(B=255,G=255,R=1,A=0))
ColorList(18)=(Name="ScrN 7",tag="^6",Color=(B=200,G=1,R=200,A=0))
ColorList(19)=(Name="ScrN 8",tag="^7",Color=(B=200,G=200,R=200,A=0))
ColorList(20)=(Name="ScrN 9",tag="^8",Color=(B=0,G=127,R=255,A=0))
ColorList(21)=(Name="ScrN 10",tag="^9",Color=(B=128,G=128,R=128,A=0))
// ColorList=(Name="ScrN 11",tag="^w$",Color=(B=,G=,R=,A=0)"255,255,255")
// ColorList=(Name="ScrN 12",tag="^r$",Color=(B=,G=,R=,A=0)"255,1,1")
// ColorList=(Name="ScrN 13",tag="^g$",Color=(B=,G=,R=,A=0)"1,255,1")
// ColorList=(Name="ScrN 14",tag="^b$",Color=(B=,G=,R=,A=0)"1,1,255")
// ColorList=(Name="ScrN 15",tag="^y$",Color=(B=,G=,R=,A=0)"255,255,1")
// ColorList=(Name="ScrN 16",tag="^c$",Color=(B=,G=,R=,A=0)"1,255,255")
// ColorList=(Name="ScrN 17",tag="^o$",Color=(B=,G=,R=,A=0)"255,140,1")
// ColorList=(Name="ScrN 18",tag="^u$",Color=(B=,G=,R=,A=0)"255,20,147")
// ColorList=(Name="ScrN 19",tag="^s$",Color=(B=,G=,R=,A=0)"1,192,255")
// ColorList=(Name="ScrN 20",tag="^n$",Color=(B=,G=,R=,A=0)"139,69,19")
// ColorList=(Name="ScrN 21",tag="^w$",Color=(B=,G=,R=,A=0)"112,138,144")
// ColorList=(Name="ScrN 22",tag="^R$",Color=(B=,G=,R=,A=0)"132,1,1")
// ColorList=(Name="ScrN 23",tag="^G$",Color=(B=,G=,R=,A=0)"1,132,1")
// ColorList=(Name="ScrN 24",tag="^B$",Color=(B=,G=,R=,A=0)"1,1,132")
// ColorList=(Name="ScrN 25",tag="^y$",Color=(B=,G=,R=,A=0)"255,192,1")
// ColorList=(Name="ScrN 26",tag="^c$",Color=(B=,G=,R=,A=0)"1,160,192")
// ColorList=(Name="ScrN 27",tag="^O$",Color=(B=,G=,R=,A=0)"255,69,1")
// ColorList=(Name="ScrN 28",tag="^U$",Color=(B=,G=,R=,A=0)"160,32,240")
// ColorList=(Name="ScrN 29",tag="^s$",Color=(B=,G=,R=,A=0)"65,105,225")
// ColorList=(Name="ScrN 30",tag="^n$",Color=(B=,G=,R=,A=0)"80,40,20")
// ColorList=(Name="Misc 1",tag="%1$",Color=(B=,G=,R=,A=0)"109,64,255")
// ColorList=(Name="Misc 2",tag="%2$",Color=(B=,G=,R=,A=0)"204,64,255")
// ColorList=(Name="Misc 3",tag="%3$",Color=(B=,G=,R=,A=0)"64,166,25)
}