xs = максимальное_значение_жизни - dg\live
Когда dg\live =
максимальное_значение_жизни, будет рисоваться прямоугольник с нулевой шириной, то есть не будет прямоугольника. Если dg\live =
0, прямоугольник полностью закроет собой полоску жизни. Промежуточные значения соответственно будут отображать текущее состояние жизни.
В твоем коде я внес одно изменение:
вместо
xs=Float(TextureWidth(dg\texture))/dg\max_count*(dg\max_count-dg\live);
написал
xs = 300 - dg\live
Может, у тебя max_count - это максимальное значение жизни, но я не увидел его инициализации в коде.