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

Plutonium

  1. Home
  2. MW3 Modding Releases & Resources
  3. Plutonium MW3: Killstreak, Gunstreak and Moab Counter

Plutonium MW3: Killstreak, Gunstreak and Moab Counter

Scheduled Pinned Locked Moved MW3 Modding Releases & Resources
3 Posts 1 Posters 262 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.
  • JMDundefined Offline
    JMDundefined Offline
    JMD
    wrote last edited by
    #1

    I found another thread about a killstreak counter for MW3 and tried to adjust it to my needs. So I added a Gunstreak and a Moab Counter.
    Maybe someone else wants this as well. So I thought I share it in case someone wants it.

    Just create a file "counter.gsc" in "AppData\Local\Plutonium\storage\iw5\scripts" (create scripts folder if it does not exist) and paste this code inside:

    #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 gunstreakCounter();
          self thread moabCounter();
          self thread destroyCounterOnGameEnd();
          self thread resetOnDeath();
        }
    
        break;
      }
    }
    
    killstreakCounter() {
      self endon("disconnect");
      level endon("game_ended");
    
      self.killStreak = createFontString("Objective", 1);
      self.killStreak setPoint("TOPRIGHT", "TOPERIGHT", -10, 305);
      self.killStreak.label = &"^2K-STREAK: ^7";
      self.killStreak.sort = -3;
      self.killStreak.alpha = 0.9;
      self.killStreak.hideWhenInMenu = true;
      self.killStreak setValue(self.pers["cur_kill_streak"]);
    
      killStreak = 0;
    
      for (;;) {
        self waittill("killed_enemy");
    
        if (killStreak != self.pers["cur_kill_streak"]) {
          killStreak = self.pers["cur_kill_streak"];
          self.killStreak setValue(killStreak);
        }
      }
    }
    
    gunstreakCounter() {
      self endon("disconnect");
      level endon("game_ended");
    
      self.gunStreak = createFontString("Objective", 1);
      self.gunStreak setPoint("TOPRIGHT", "TOPRIGHT", -10, 315);
      self.gunStreak.label = &"^5G-STREAK: ^7";
      self.gunStreak.sort = -3;
      self.gunStreak.alpha = 0.9;
      self.gunStreak.hideWhenInMenu = true;
      self.gunStreak setValue(self.pers["cur_kill_streak_for_nuke"]);
    
      gunStreak = 0;
    
      for (;;) {
        self waittill("killed_enemy");
    
        if (gunStreak != self.pers["cur_kill_streak_for_nuke"]) {
          gunStreak = self.pers["cur_kill_streak_for_nuke"];
          self.gunStreak setValue(gunStreak);
        }
      }
    }
    
    moabCounter() {
      self endon("disconnect");
      level endon("game_ended");
    
      self.moabcounter = createFontString("Objective", 1);
      self.moabcounter setPoint("TOPRIGHT", "TOPERIGHT", -10, 325);
      self.moabcounter.label = &"^1MOABs: ^7";
      self.moabcounter.sort = -3;
      self.moabcounter.alpha = 0.9;
      self.moabcounter.hideWhenInMenu = true;
      self.moabcounter setValue(0);
    
      moabs = 0;
      self.moabAdded = false;
    
      for (;;) {
        self waittill("killed_enemy");
    
        if (self.pers["cur_kill_streak_for_nuke"] >= 24 && !self.moabAdded) {
          moabs += 1;
          self.moabAdded = true;
          self.moabcounter setValue(moabs);
        }
      }
    }
    
    destroyCounterOnGameEnd() {
      self endon("disconnect");
      level waittill("game_ended");
    
      if (isDefined(self.killStreak)) self.killStreak hudFadenDestroy(0, .1);
      if (isDefined(self.gunStreakDisplay))
        self.gunStreakDisplay hudFadenDestroy(0, .1);
      if (isDefined(self.moabcounter)) self.moabcounter hudFadenDestroy(0, .1);
    }
    
    hudFadenDestroy(alpha, time) {
      self fadeOverTime(time);
      self.alpha = alpha;
      wait time;
      self destroy();
    }
    
    resetOnDeath() {
      self endon("disconnect");
    
      for (;;) {
        self waittill("death");
        self.moabAdded = false;
      }
    }
    

    Had to search for hours for the gunstreak information, even ChatGPT didn't knew. In the end I downloaded the plutoniummod/iw5-scripts project from github and found the information I was looking for: "cur_kill_streak_for_nuke"

    Have Fun with the script

    1 Reply Last reply
    0
    • JMDundefined Offline
      JMDundefined Offline
      JMD
      wrote last edited by
      #2

      fix for the resetOnDeath method. I'm not allowed to edit my post for some reason.

      resetOnDeath() {
        self endon("disconnect");
      
        for (;;) {
          self waittill("death");
          		
          wait 2;
          		
          self.killStreak setValue(0);
          self.gunStreak setValue(0);
          self.moabAdded = false;
        }
      }
      
      1 Reply Last reply
      1
      • JMDundefined Offline
        JMDundefined Offline
        JMD
        wrote last edited by JMD
        #3

        Update:

        • moab counter reacts on hardline
        • reworked the whole killstreak counter - noticed that instead of counting all kills since the last death it just counts killstreakkills for next killstreaks but not the kills after the reset to get them again, also included the hardline pro where 2 assists count as kill, but only after you get hardline
        • removed the update on killed event, this allows the moab counter to work properly but at the same time it removes the ability to have a look at the streak you were on when you died
        #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 gunstreakCounter();
              self thread moabCounter();
              self thread destroyCounterOnGameEnd();
              self thread resetOnDeath();
            }
        
            break;
          }
        }
        
        killstreakCounter() {
          self endon("disconnect");
          level endon("game_ended");
        
          self.killStreak = createFontString("Objective", 1);
          self.killStreak setPoint("TOPRIGHT", "TOPERIGHT", -10, 305);
          self.killStreak.label = &"^2K-STREAK: ^7";
          self.killStreak.sort = -3;
          self.killStreak.alpha = 0.9;
          self.killStreak.hideWhenInMenu = true;
          self.killStreak setValue(0);
        
          killStreak = 0;
          self.savedAssists = 0;
          self.savedKills = 0;
        
          for (;;) {
            if (maps\mp\_utility::_hasperk("specialty_hardline")) {
              if (killStreak !=
                  maps\mp\_utility::getpersstat("kills") - self.savedKills +
                      floor((self.pers["assistsToKill"] - self.savedAssists) / 2)) {
                killStreak =
                    maps\mp\_utility::getpersstat("kills") - self.savedKills +
                    floor((self.pers["assistsToKill"] - self.savedAssists) / 2);
                self.killStreak setValue(killStreak);
              }
            } else {
              if (killStreak !=
                  maps\mp\_utility::getpersstat("kills") - self.savedKills) {
                killStreak = maps\mp\_utility::getpersstat("kills") - self.savedKills;
                self.killStreak setValue(killStreak);
              }
            }
        
            wait 0.25;
          }
        }
        
        gunstreakCounter() {
          self endon("disconnect");
          level endon("game_ended");
        
          self.gunStreak = createFontString("Objective", 1);
          self.gunStreak setPoint("TOPRIGHT", "TOPRIGHT", -10, 315);
          self.gunStreak.label = &"^5G-STREAK: ^7";
          self.gunStreak.sort = -3;
          self.gunStreak.alpha = 0.9;
          self.gunStreak.hideWhenInMenu = true;
          self.gunStreak setValue(0);
        
          gunStreak = 0;
        
          for (;;) {
            if (gunStreak != self.pers["cur_kill_streak_for_nuke"]) {
              gunStreak = self.pers["cur_kill_streak_for_nuke"];
              self.gunStreak setValue(gunStreak);
            }
        
            wait 0.25;
          }
        }
        
        moabCounter() {
          self endon("disconnect");
          level endon("game_ended");
        
          self.moabcounter = createFontString("Objective", 1);
          self.moabcounter setPoint("TOPRIGHT", "TOPERIGHT", -10, 325);
          self.moabcounter.label = &"^1MOABs: ^7";
          self.moabcounter.sort = -3;
          self.moabcounter.alpha = 0.9;
          self.moabcounter.hideWhenInMenu = true;
          self.moabcounter setValue(0);
        
          moabs = 0;
          self.moabAdded = false;
        
          for (;;) {
            moabWith = 25;
        
            if (maps\mp\_utility::_hasperk("specialty_hardline")) {
              moabWith--;
            }
        
            if (self.pers["cur_kill_streak_for_nuke"] >= moabWith && !self.moabAdded) {
              moabs += 1;
              self.moabAdded = true;
              self.moabcounter setValue(moabs);
            }
        
            wait 0.25;
          }
        }
        
        destroyCounterOnGameEnd() {
          self endon("disconnect");
          level waittill("game_ended");
        
          if (isDefined(self.killStreak)) self.killStreak hudFadenDestroy(0, .1);
          if (isDefined(self.gunStreakDisplay)) self.gunStreak hudFadenDestroy(0, .1);
          if (isDefined(self.moabcounter)) self.moabcounter hudFadenDestroy(0, .1);
        }
        
        hudFadenDestroy(alpha, time) {
          self fadeOverTime(time);
          self.alpha = alpha;
          wait time;
          self destroy();
        }
        
        resetOnDeath() {
          self endon("disconnect");
        
          for (;;) {
            self waittill("death");
            self.savedKills = maps\mp\_utility::getpersstat("kills");
            self.moabAdded = false;
            self.savedAssists = self.pers["assistsToKill"];
            if (self.pers["assistsToKill"] % 2 == 1) {
              self.savedAssists -= 1;
            }
          }
        }
        
        
        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