Script Name: DrawTextCenter
Script Description: Just like DrawText but automatically centers the text.
Original Author(s): Me
Core Version: 2.6.1
Code:
In order to center the text I used a script to find the width of each character in the default font (Bank Gothic Lt BT) and stored it in a global array called TextWidth.
var
TextWidth : Array[32..127] of Single;
procedure ActivateServer();
begin
TextWidth[32] := 103.20;
TextWidth[33] := 114.67;
TextWidth[34] := 74.53;
TextWidth[35] := 5.73;
TextWidth[36] := 206.40;
TextWidth[37] := 235.07;
TextWidth[38] := 212.13;
TextWidth[39] := 40.13;
TextWidth[40] := 103.20;
TextWidth[41] := 103.20;
TextWidth[42] := 137.60;
TextWidth[43] := 229.33;
TextWidth[44] := 103.20;
TextWidth[45] := 91.73;
TextWidth[46] := 103.20;
TextWidth[47] := 97.47;
TextWidth[48] := 206.40;
TextWidth[49] := 206.40;
TextWidth[50] := 206.40;
TextWidth[51] := 206.40;
TextWidth[52] := 206.40;
TextWidth[53] := 206.40;
TextWidth[54] := 206.40;
TextWidth[55] := 206.40;
TextWidth[56] := 206.40;
TextWidth[57] := 206.40;
TextWidth[58] := 103.20;
TextWidth[59] := 103.20;
TextWidth[60] := 229.33;
TextWidth[61] := 229.33;
TextWidth[62] := 229.33;
TextWidth[63] := 177.73;
TextWidth[64] := 275.20;
TextWidth[65] := 200.67;
TextWidth[66] := 212.13;
TextWidth[67] := 206.40;
TextWidth[68] := 223.60;
TextWidth[69] := 194.93;
TextWidth[70] := 177.73;
TextWidth[71] := 223.60;
TextWidth[72] := 235.07;
TextWidth[73] := 97.47;
TextWidth[74] := 183.47;
TextWidth[75] := 200.67;
TextWidth[76] := 177.73;
TextWidth[77] := 246.53;
TextWidth[78] := 229.33;
TextWidth[79] := 235.07;
TextWidth[80] := 200.67;
TextWidth[81] := 235.07;
TextWidth[82] := 212.13;
TextWidth[83] := 212.13;
TextWidth[84] := 160.53;
TextWidth[85] := 223.60;
TextWidth[86] := 189.20;
TextWidth[87] := 235.07;
TextWidth[88] := 194.93;
TextWidth[89] := 183.47;
TextWidth[90] := 189.20;
TextWidth[91] := 103.20;
TextWidth[92] := 97.47;
TextWidth[93] := 103.20;
TextWidth[94] := 275.20;
TextWidth[95] := 137.60;
TextWidth[96] := 137.60;
TextWidth[97] := 172;
TextWidth[98] := 172;
TextWidth[99] := 172;
TextWidth[100] := 200.67;
TextWidth[101] := 160.53;
TextWidth[102] := 149.07;
TextWidth[103] := 183.47;
TextWidth[104] := 189.20;
TextWidth[105] := 74.53;
TextWidth[106] := 154.80;
TextWidth[107] := 166.27;
TextWidth[108] := 149.07;
TextWidth[109] := 206.40;
TextWidth[110] := 189.20;
TextWidth[111] := 189.20;
TextWidth[112] := 166.27;
TextWidth[113] := 189.20;
TextWidth[114] := 166.27;
TextWidth[115] := 177.73;
TextWidth[116] := 143.33;
TextWidth[117] := 183.47;
TextWidth[118] := 160.53;
TextWidth[119] := 200.67;
TextWidth[120] := 160.53;
TextWidth[121] := 154.80;
TextWidth[122] := 172;
TextWidth[123] := 137.60;
TextWidth[124] := 137.60;
TextWidth[125] := 137.60;
TextWidth[126] := 229.33;
TextWidth[127] := 166.27;
end;
procedure DrawTextCenter(ID : Byte; Text : String; Delay : Integer; Color : Longint; Scale : Single);
var
i, c : Byte;
TotalWidth, Width, Height : Single;
begin
TotalWidth := 0;
Width := 0;
Height := 202;
for i := 1 to length(Text) do
begin
c := ord(Text[i]);
if ((c > 31) and (c < 128)) then
begin
Width := Width + TextWidth[c];
if (Width > TotalWidth) then TotalWidth := Width;
end
else
if (c = 13) then
begin
Height := Height + 202;
Width := 0;
end;
end;
DrawText(ID, Text, Delay, Color, Scale, 320 - Round(TotalWidth*Scale/2), 240 - Round(Height*Scale/2));
end;
Example:
DrawTextCenter(ID, 'nob', 300, $FFFF0000, 1);
Edited into a single script.