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

Plutonium

  1. Home
  2. BO2 Modding Releases & Resources
  3. [RELEASE] Clone Defender

[RELEASE] Clone Defender

Scheduled Pinned Locked Moved BO2 Modding Releases & Resources
1 Posts 1 Posters 131 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • m7574zundefined Offline
    m7574zundefined Offline
    m7574z
    wrote last edited by
    #1

    t6zmclonedefender.png

    mzDefenderToggle()
    {
        if(!isDefined(self.mzdefender_on))
        {
            self.mzdefender_on = 1;
            self thread mzDefenderMain();
            self iprintln("Clone Defender: ^2Spawned");
        }
        else
        {
            self.mzdefender_on = undefined;
            self notify("mz_defender_end");
            if(isDefined(self.mzdefender))
            {
                self.mzdefender notify("mz_defender_end");
                self.mzdefender delete();
                self.mzdefender = undefined;
            }
    
            self iprintln("Clone Defender: ^1Deleted");
        }
    }
    
    mzDefenderMain()
    {
        self endon("mz_defender_end");
        self endon("disconnect");
        level endon("game_ended");
    
        if(isDefined(self.mzdefender))
        {
            self.mzdefender notify("mz_defender_end");
            self.mzdefender delete();
            self.mzdefender = undefined;
        }
    
        pos = self.origin;
        self.mzdefender = maps/mp/zombies/_zm_clone::spawn_player_clone(self, pos, "raygun_mark2_upgraded_zm", self.model);
        self.mzdefender.mzdefender = 1;
        self.mzdefender.mz_owner = self;
        self.mzdefender thread maps/mp/zombies/_zm_clone::clone_animate("idle");
        self.mzdefender thread mzDefenderBrain(self, self.angles[1]);
        self waittill("mz_defender_end");
    }
    
    mzDefenderBrain(owner, baseYaw)
    {
        self endon("mz_defender_end");
        owner endon("mz_defender_end");
        self endon("disconnect");
        level endon("game_ended");
    
        minYaw = baseYaw - 90;
        maxYaw = baseYaw + 90;
        curYaw = baseYaw;
        dir = 1;
        
        for(;;)
        {
            target = self mzDefenderTarget();
            
            if(isDefined(target))
            {
                aimAt = target.origin + (0,0,30);
                ang = vectorToAngles(aimAt - self.origin);
                self rotateTo((0, ang[1], 0), 0.35);
                self waittill("rotatedone");
                dy = ang[1] - self.angles[1];
    
                if(dy < 0)
                {
                    dy = 0 - dy;
                }
                if(dy > 180)
                {
                    dy = 360 - dy;
                }
                if(dy <= 12)
                {
                    for(s = 0; s < 3; s++)
                    {
                        if(!isDefined(target) || !isAlive(target))
                        {
                            break;
                        }
                        aimAt = target.origin + (0,0,30);
                        start = self getTagOrigin("tag_weapon_right");
                        start = start + anglesToForward((0, self.angles[1], 0)) * 12;
                        magicBullet("raygun_mark2_upgraded_zm", start, aimAt, owner);
                        wait 0.12;
                    }
                    wait 0.35;
                }
                else
                {
                    wait 0.05;
                }
            }
            else
            {
                if(dir)
                {
                    curYaw += 60;
                }
                else
                {
                    curYaw -= 60;
                }
                if(curYaw >= maxYaw)
                {
                    curYaw = maxYaw;
                    dir = 0;
                }
                else if(curYaw <= minYaw)
                {
                    curYaw = minYaw;
                    dir = 1;
                }
                self rotateTo((0, curYaw, 0), 1.5, 0.5, 0.5);
                self waittill("rotatedone");
                wait 0.05;
            }
            wait 0.05;
        }
    }
    
    mzDefenderTarget()
    {
        arr = [];
        start = self.origin + (0,0,55);
    
        foreach(z in getAiArray(level.zombie_team))
        {
            if(!isDefined(z) || !isAlive(z))
            {
                continue;
            }
            if(bulletTracePassed(start, z getTagOrigin("j_spine4"), false, self))
            {
                arr[arr.size] = z;
            }
        }
        return getClosest(start, arr);
    }
    
    

    Video clip link

    1 Reply Last reply
    0
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    • Login

    • Don't have an account? Register

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