Skip to content
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Donate
Collapse

Plutonium

  1. Home
  2. MW3 Modding Releases & Resources
  3. HUD killstreak Player

HUD killstreak Player

Scheduled Pinned Locked Moved MW3 Modding Releases & Resources
11 Posts 7 Posters 3.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Kalitosundefined Offline
    Kalitosundefined Offline
    Kalitos
    wrote on last edited by Kalitos
    #1

    I have been looking for this for a long time and I think I could do it, so I share with you I know that I am not the only one who needed it.
    I have relied on coding found in this same forum and the guides given.

    Credits: https://forum.plutonium.pw/topic/2113/storing-players-data-with-chaiscript/3

    :: CODE UPDATE :: 23-05-2021 ::
    Now correctly registers the kills that the player gets when he has a hard line pro and gets 2 assists counting as kill

    /*
    *	 Black Ops 2 - GSC Studio by iMCSx
    *
    *	 Creator : Kalitos
    *	 Project : killstreakHUD
    *    Mode : Multiplayer
    *	 Date : 2021/05/15 - 11:22:19	
    *
    */	
    
    #include maps\mp\gametypes\_hud_util;
    
    
    init()
    {
        level thread onPlayerConnect();
    }
    
    onPlayerConnect()
    {
        for(;;)
        {
            level waittill("connected", player);        
            player thread killstreakPlayer();      
        }
    }	
    
    
    killstreakPlayer ()
    {
    	self endon ("disconnect");
    	level endon("game_ended");
    	self.hudkillstreak = createFontString ("Objective", 1);
    	self.hudkillstreak setPoint ("CENTER", "TOP", "CENTER", 10);
    	self.hudkillstreak.label = &"^2 KILLSTREAK: ^7";
    	
    	while(true)
    	{
    		self.hudkillstreak setValue(self.pers["cur_kill_streak"]);
    		wait 0.5;
    	}
    	
    	
    }
    

    To implement it they must create a .GSC file and paste the code in it, then follow the guide on how to load a scripthere

    HUDkillstreak.png

    alejandrodarzundefined 1 Reply Last reply
    6
    • Sorexundefined Offline
      Sorexundefined Offline
      Sorex Contributor
      wrote on last edited by Sorex
      #2

      Kalitos This code can be improved, self.killstreaks in onPlayerConnected does not make any sense. It is also completely useless since it is a value you take from a function. Just use that function and you're done.
      Also, as far as anything goes, if you can avoid non-stop loops, that's better. In this case you just need to see when an enemy is killed to update the value.

      /*
      *	 Black Ops 2 - GSC Studio by iMCSx
      *
      *	 Creator : Kalitos
      *	 Project : killstreakHUD
      *      Mode : Multiplayer
      *	 Date : 2021/05/15 - 11:22:19	
      *
      */	
      
      #include maps\mp\gametypes\_hud_util;
      
      init()
      {
          level thread onPlayerConnect();
      }
      
      onPlayerConnect()
      {
          for(;;)
          {
              level waittill("connected", player);
              player thread killstreakPlayer();	
          }
      }
      
      
      
      killstreakPlayer ()
      {
      	self endon ("disconnect");
      	level endon("game_ended");
      	hudkillstreak = createFontString ("Objective", 1);
      	hudkillstreak setPoint ("CENTER", "TOP", "CENTER", 10);
      	hudkillstreak.label = &"^2 KILLSTREAK: ^7";
      	
      	while (true)
      	{
                      self waittill_any("killed_enemy", "spawned_player"); 
      		hudkillstreak setValue(self getPlayerData("killstreaksState","count"));
      	}
      }
      
      birchyundefined 1 Reply Last reply
      1
      • birchyundefined Offline
        birchyundefined Offline
        birchy
        replied to Sorex on last edited by
        #3

        Sorex you'd want to wait for player spawn also, so the value is updated if they die or switch teams

        1 Reply Last reply
        0
        • Sorexundefined Offline
          Sorexundefined Offline
          Sorex Contributor
          wrote on last edited by
          #4

          birchy I do not remeber if killstreaks on iw5 keep going also if player die. idk so if not happen its needed another system to reset the value

          birchyundefined 1 Reply Last reply
          0
          • birchyundefined Offline
            birchyundefined Offline
            birchy
            replied to Sorex on last edited by
            #5

            Sorex what i'm saying is you only get the new value on player_killed, so the HUD won't be updated if the player switches team or dies

            1 Reply Last reply
            0
            • mrpsychoundefined Offline
              mrpsychoundefined Offline
              mrpsycho
              wrote on last edited by
              #6

              Sorex said in HUD killstreak Player:

              self getPlayerData("killstreaksState","count")

              this will only get killstreak toward killstreaks as in UAV and all that stuff, so if ur highest selected killstreak is let's say a osprey gunner which is a 18 killstreak, once u get to that, this will reset back to 0, so i'd just use self.pers["cur_kill_streak"]

              1 Reply Last reply
              1
              • Sorexundefined Offline
                Sorexundefined Offline
                Sorex Contributor
                wrote on last edited by
                #7

                Thanks for the info, good to know 🙂

                1 Reply Last reply
                0
                • alejandrodarzundefined Offline
                  alejandrodarzundefined Offline
                  alejandrodarz
                  replied to Kalitos on last edited by
                  #8

                  Kalitos You should do it like this, this way it does not update all the time 😉

                  KillstreakPlayer()
                  {
                  self endon ("disconnect");
                  level endon("game_ended");
                  self.hudkillstreak = createFontString( "Objective", 1 );
                  self.hudkillstreak setPoint( "CENTER", "TOP", "CENTER", 10 );
                  self.hudkillstreak.label = &"^2 KILLSTREAK: ^7";
                  while(true)
                  {
                  if(self.playerstreak != self.pers["cur_kill_streak"])
                  {
                  self.playerstreak = self.pers["cur_kill_streak"];
                  self.hudkillstreak setValue(self.pers["cur_kill_streak"]);
                  }
                  wait 0.01;
                  }
                  }

                  1 Reply Last reply
                  0
                  • Resxtundefined Offline
                    Resxtundefined Offline
                    Resxt Plutonium Staff
                    wrote on last edited by Resxt
                    #9

                    I fixed the warnings in the console, I included the explanations at the bottom for those who are curious about it.
                    I also made it not unnecessarily thread on bots, just a small performance "fix"
                    Kalitos Maybe this will interest you or maybe you wanna update your script on the OP

                    #include maps\mp\gametypes\_hud_util;
                    
                    Init()
                    {
                        level thread OnPlayerConnected();
                    }
                    
                    OnPlayerConnected()
                    {
                        for(;;)
                        {
                            level waittill("connected", player);
                            
                            // Don't thread DisplayPlayerKillstreak() on bots
                            if (isDefined(player.pers["isBot"]))
                            {
                                if (player.pers["isBot"])
                                {
                                    continue; // skip
                                }
                            }
                    
                            player thread DisplayPlayerKillstreak();
                        }
                    }
                    
                    
                    DisplayPlayerKillstreak()
                    {
                        self endon ("disconnect");
                        level endon("game_ended");
                    
                        self.killstreak_text = createFontString( "Objective", 0.65 );
                        self.killstreak_text setPoint( 0, "TOP", 0, 7.5 );
                        self.killstreak_text.label = &"^1KILLSTREAK: ";
                    
                        while(true)
                        {
                            if(!IsDefined(self.playerstreak) || self.playerstreak != self.pers["cur_kill_streak"])
                            {
                                self.playerstreak = self.pers["cur_kill_streak"];
                                self.killstreak_text setValue(self.pers["cur_kill_streak"]);
                            }
                    
                            wait 0.01;
                        }
                    }
                    

                    a4ceda64-034c-4d0e-9cdf-4e19d642f79b-image.png
                    For some reason the game seems to throw a warning when you pass "CENTER" in the setPoint function so I replaced it with 0.


                    f351ea10-85f0-4ed5-a7e3-411d0d042070-image.png
                    This was happening because when doing this

                    if(self.playerstreak != self.pers["cur_kill_streak"])
                    {
                        self.playerstreak = self.pers["cur_kill_streak"];
                        self.killstreak_text setValue(self.pers["cur_kill_streak"]);
                    }
                    

                    the first time the playerstreak variable isn't defined yet because it's a variable created by the script in that if condition.
                    So to make sure the script works normally I added another case !IsDefined(self.playerstreak) || so that it will work both when our HUD needs to be updated and also when our variable isn't defined yet (first iteration)


                    b0c22f71-7c72-41a4-8826-e48601349c21-image.png
                    Same than above, when comparing undefined to a variable the result isn't true or false but undefined (to my understanding)

                    EternalHabitundefined 1 Reply Last reply
                    2
                    • EternalHabitundefined Offline
                      EternalHabitundefined Offline
                      EternalHabit
                      replied to Resxt on last edited by EternalHabit
                      #10
                      This post is deleted!
                      1 Reply Last reply
                      0
                      • EternalHabitundefined Offline
                        EternalHabitundefined Offline
                        EternalHabit
                        wrote on last edited by
                        #11
                        #include maps\mp\gametypes\_hud_util;
                        
                        init()
                        {
                            level thread onPlayerConnect();
                        }
                        
                        onPlayerConnect()
                        {
                            for(;;)
                            {
                                level waittill("connected", player);
                        
                                player thread onPlayerSpawned();
                            }
                        }
                        
                        onPlayerSpawned()
                        {
                        	self endon("disconnect");
                        	level endon("game_ended");
                        
                        	for(;;)
                        	{
                        	     self waittill("spawned_player");
                        
                                     if(!issubstr(self getguid() + "", "bot"))
                                     {
                                         self thread killstreakCounter();
                                         self thread destroyCounterOnGameEnd();
                                     }
                                
                                     break;
                        	}
                        }
                        
                        killstreakCounter()
                        {
                            self endon ("disconnect");
                            level endon("game_ended");
                        
                            self.counter = createFontString("Objective", 1);
                            self.counter setPoint("CENTER", "TOP", 0, 8);
                            self.counter.label = &"^2KILLSTREAK: ^7";
                            self.counter.sort = -3;
                            self.counter.alpha = 0.9;
                            self.counter.hideWhenInMenu = true;
                            self.counter setValue(self.pers["cur_kill_streak"]);
                        
                            playerStreak = 0;
                        
                            for(;;)
                            {
                                if(playerStreak != self.pers["cur_kill_streak"])
                                {
                                    playerStreak = self.pers["cur_kill_streak"];
                                    self.counter setValue(self.pers["cur_kill_streak"]);
                                }
                                wait 0.25;
                            }
                        }
                        
                        destroyCounterOnGameEnd()
                        {
                        	self endon("disconnect");
                        
                        	level waittill("game_ended");
                        
                            if(isDefined(self.counter))
                        	    self.counter hudFadenDestroy(0, .1);
                        }
                        
                        hudFadenDestroy(alpha,time)
                        {
                        	self fadeOverTime(time);
                        	self.alpha = alpha;
                        	wait time;
                                self destroy();
                        }
                        
                        1 Reply Last reply
                        0

                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Donate