Hi
Make window OnScreenMessageExWnd with 28 textboxes on screen center:
Add it to a new *.uc class with the same name (OnScreenMessageExWnd)
class OnScreenMessageExWnd extends UICommonAPI;
const DAMAGE_MESSAGE_OFFSET = 100;
const MAX_DAMAGE_MESSAGE = 28;
var WindowHandle Me;
var TextBoxHandle DamageText[MAX_DAMAGE_MESSAGE];
function OnLoad()
{
local int i;
Me = GetWindowHandle("OnScreenMessageExWnd");
for (i=0; i<MAX_DAMAGE_MESSAGE; i++)
{
DamageText[i] = GetTextBoxHandle("OnScreenMessageExWnd.DamageText-0-" $ i);
}
}
function OnRegisterEvent()
{
RegisterEvent( EV_SystemMessage );
}
function OnEvent(int Event_ID, string param)
{
switch( Event_ID )
{
case EV_SystemMessage:
HandleSystemMessage(param);
break;
}
}
function HandleSystemMessage (string a_Param)
{
local int SystemMsgIndex, DamageToPlayer, i;
ParseInt(a_Param,"Index",SystemMsgIndex);
switch (SystemMsgIndex)
{
case 2261: //player msg
case 2281: //summoner msg
for(i=0; i<MAX_DAMAGE_MESSAGE; i++)
{
if(DamageText[i].GetText() == "")
{
DamageText[i].SetAlpha(255);
ParseInt( a_Param, "Param3", DamageToPlayer);
DamageText[i].SetText(string(DamageToPlayer));
DamageText[i].SetAnchor( "OnScreenMessageExWnd", "BottomCenter", "BottomCenter", -200 + Rand(150), Rand(60) );
DamageText[i].ClearAnchor();
DamageText[i].Move(0, -1500, 8f);
DamageText[i].SetAlpha( 0, 2.8f );
Me.KillTimer(i + DAMAGE_MESSAGE_OFFSET + 1);
Me.SetTimer(i + DAMAGE_MESSAGE_OFFSET + 1, 2500);
break;
}
}
break;
}
}
function OnTimer (int TimerID)
{
Me.KillTimer(TimerID);
if(TimerID >= 101 && TimerID <= 200)
DamageText[TimerID-DAMAGE_MESSAGE_OFFSET-1].SetText("");
}
Result:
Enjoy