Damage per second

Search, find and discuss about Mutators!

Damage per second

Postby dot » Thu Nov 01, 2018 5:22 am

Small mutator for show amount of last damage, and average damage per second for last 4 seconds.

It can be useful for MH server because players must know damage of each shot for select best weapon. It especially actually if on map can be custom weapons.
Average necessary, because need know speed of damage, not always damage for one shot give this info. Now you can compare sniper and pulse gun.
Algorithm is far from the best. It is very simple - count damage in ring buffer, exclude last second and calc average. For MH this will be enough.

Usually can be at any place in mutator chain. But if you get problem - place it first.

in action:
scr_1541046110.jpg
scr_1541046110.jpg (3.47 KiB) Viewed 739 times


Code: Select all
class DmgPerSecond extends Mutator;

const AVG_SECONDS = 5;
var int history[5];

var int curr;
var int pos;
var int last;
var PlayerPawn MyPlayer;
var bool Initialized;
var Font FirstFont;

function PostBeginPlay() {
   if (Initialized) return;
   Initialized = True;
   
   Level.Game.RegisterDamageMutator( Self );
}

simulated function Tick(float DeltaTime) {
    if ( !bHUDMutator && Level.NetMode != NM_DedicatedServer )
        RegisterHUDMutator();
       
    nextPos();
}

function nextPos() {
   if (curr != Level.Second) {
      curr = Level.Second;
      pos = pos + 1;
      if (pos >= AVG_SECONDS) pos = 0;
      history[pos] = 0;
   }
}

simulated function PostRender(canvas C) {
   local int avg;
   local int i;
   
    if ( NextHUDMutator != None )
        NextHUDMutator.PostRender(C);
       
    MyPlayer = C.Viewport.Actor;
       
    avg = 0;
    for (i = 0; i < AVG_SECONDS; i++) {
       if (i != pos) avg = avg + history[i];
    }
    avg = 1.0 * avg / (1.0 * AVG_SECONDS - 1);
       
   C.SetPos( 0, C.ClipY/2 );
   if (FirstFont == None) {
      FirstFont = C.Font;
   } else if (FirstFont != C.Font) {
      C.Font = FirstFont;
   }
   C.DrawColor.R = 255;
   C.DrawColor.G = 255;
   C.DrawColor.B = 255;
   C.DrawText("[Dmg] avg: " $ avg $ " last: " $ last);
}

function MutatorTakeDamage( out int ActualDamage, Pawn Victim, Pawn InstigatedBy, out Vector HitLocation,
                  out Vector Momentum, name DamageType) {      
   if ( NextDamageMutator != None )
      NextDamageMutator.MutatorTakeDamage( ActualDamage, Victim, InstigatedBy, HitLocation, Momentum, DamageType );
      
   if (MyPlayer == InstigatedBy && ActualDamage != 0) {
      nextPos();
      history[pos] = history[pos] + ActualDamage;
      last = ActualDamage;
   }
}


Download: viewtopic.php?p=109439#p109439

old
DmgPerSecond.zip
(2.44 KiB) Downloaded 24 times
Last edited by dot on Tue Dec 04, 2018 9:54 am, edited 2 times in total.
dot
Average
 
Posts: 53
Joined: Tue Oct 30, 2018 3:41 am

Re: Damage per second

Postby papercoffee » Thu Nov 01, 2018 12:28 pm

Oh that's neat.
Does it work with other game types as well?
User avatar
papercoffee
Site Staff
 
Posts: 9085
Joined: Wed Jul 15, 2009 11:36 am
Location: Cologne, the city with the big cathedral.
Personal rank: coffee addicted !!!

Re: Damage per second

Postby dot » Thu Nov 01, 2018 12:53 pm

Yes of course. You can use it with any game type. I tested with DM, for example.
But for other type games it can not so helpful, because your enemies die very fast usually. only in MH you can fire in monster few minutes.
dot
Average
 
Posts: 53
Joined: Tue Oct 30, 2018 3:41 am

Re: Damage per second

Postby papercoffee » Thu Nov 01, 2018 1:07 pm

Who knows, for debugging or simple testing can it be interesting.
User avatar
papercoffee
Site Staff
 
Posts: 9085
Joined: Wed Jul 15, 2009 11:36 am
Location: Cologne, the city with the big cathedral.
Personal rank: coffee addicted !!!

Re: Damage per second

Postby dot » Thu Nov 01, 2018 1:41 pm

Little improvement - skip zero damage, use float for calc, use constant for avg seconds.
dot
Average
 
Posts: 53
Joined: Tue Oct 30, 2018 3:41 am

Re: Damage per second

Postby papercoffee » Thu Nov 01, 2018 2:05 pm

To avoid mismatch should you name your new .u file with a prefix.
We already have enough different files with the same name floating around the UT community.
User avatar
papercoffee
Site Staff
 
Posts: 9085
Joined: Wed Jul 15, 2009 11:36 am
Location: Cologne, the city with the big cathedral.
Personal rank: coffee addicted !!!

Re: Damage per second

Postby dot » Thu Nov 01, 2018 2:35 pm

Only two downloads. So I decide simple replace it.
But in general you right.
dot
Average
 
Posts: 53
Joined: Tue Oct 30, 2018 3:41 am

Re: Damage per second

Postby sektor2111 » Sun Dec 02, 2018 3:23 pm

Can anybody answer at the question: Does this thing works On-Line ? I see it loaded but nothing shows up in client-side...
User avatar
sektor2111
Godlike
 
Posts: 3831
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Damage per second

Postby JackGriffin » Sun Dec 02, 2018 3:51 pm

There's no replication of the new vars from server to client. Also isn't this
Code: Select all
    if ( NextHUDMutator != None )
        NextHUDMutator.PostRender(C);

supposed to be at the end of the function?
"You damn kids, back in my time we made the items, maps and games ourselves with an unwieldy engine using counter-intuitive crash-prone tools and we liked it so much we built communities around this which nowadays look like cults because they're quasi-parallel societies based on the same old games." -Hellkeeper
User avatar
JackGriffin
Godlike
 
Posts: 3722
Joined: Fri Jan 14, 2011 1:53 pm
Personal rank: Hack coder

Re: Damage per second

Postby Chamberly » Sun Dec 02, 2018 6:49 pm

Wow I'm so totally gonna use this, I'd like to implement this into online play so I can see if my shot goes through or not. :thuup:
Image
Image
Image
User avatar
Chamberly
Godlike
 
Posts: 1649
Joined: Sat Sep 17, 2011 4:32 pm
Location: TN, USA
Personal rank: Dame. Vandora

Re: Damage per second

Postby iSenSe » Sun Dec 02, 2018 7:28 pm

Indeed real convenient with MH!
Thanks!
User avatar
iSenSe
Skilled
 
Posts: 203
Joined: Mon Aug 31, 2015 12:58 pm

Re: Damage per second

Postby sektor2111 » Sun Dec 02, 2018 9:16 pm

JackGriffin wrote:There's no replication of the new vars from server to client.
That's why I've asked. For first stage I've tested it in a simple network LAN environment, I did not see anything in client, I could not even smell it. For such cases I might recommend a description in a read_me about ZERO net compatibility rather than wasting people's time for setting up things in servers with no results. Okay, perhaps I'll look into net options later, so far I have to check well another small toy which I did, and then this one can wait...
papercoffee wrote:To avoid mismatch should you name your new .u file with a prefix.
We already have enough different files with the same name floating around the UT community.
Actually this is not a problem since this mutator is pointless in a server and for playing OFF-Line I don't think a mismatch will occur, just saying...
User avatar
sektor2111
Godlike
 
Posts: 3831
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Damage per second

Postby dot » Sun Dec 02, 2018 11:08 pm

JackGriffin wrote:Also isn't this
Code: Select all
    if ( NextHUDMutator != None )
        NextHUDMutator.PostRender(C);

supposed to be at the end of the function?

No.
sektor2111 wrote:Does this thing works On-Line ? I see it loaded but nothing shows up in client-side...

I do not test it.
In general it is proof of concept.
dot
Average
 
Posts: 53
Joined: Tue Oct 30, 2018 3:41 am

Re: Damage per second

Postby iSenSe » Mon Dec 03, 2018 10:31 am

i've noticed indeed.
Automaticly assumed it would.

According to the log the mutator is loaded through mapvote.
Only not visible for client indeed.

It would be great if it would Dot!
If you need to know which config i use, let me know.
User avatar
iSenSe
Skilled
 
Posts: 203
Joined: Mon Aug 31, 2015 12:58 pm

Re: Damage per second

Postby dot » Mon Dec 03, 2018 1:56 pm

Network mutators is not easy things. I try fix it later maybe.
dot
Average
 
Posts: 53
Joined: Tue Oct 30, 2018 3:41 am

Next

Return to Mutators

Who is online

Users browsing this forum: No registered users and 3 guests