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

Plutonium

  1. Home
  2. BO2 Modding Support & Discussion
  3. [ZM-SCIPT] Help Restore lava script

[ZM-SCIPT] Help Restore lava script

Scheduled Pinned Locked Moved BO2 Modding Support & Discussion
1 Posts 1 Posters 34 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.
  • AndreTOQU3undefined Offline
    AndreTOQU3undefined Offline
    AndreTOQU3
    wrote last edited by
    #1

    Hi everyone, I'm trying to make this script work but I can't. Could someone who understands help me?

    #include maps\mp\animscripts\zm_death;
    #include maps\mp\_visionset_mgr;
    #include maps\mp\zombies\_zm_utility;
    #include maps\mp\_utility;
    #include common_scripts\utility;
    
    init()
    {
        level thread lava_restore_fix();
        thread lava_damage_init();
        thread restore_lava_damage();
    }
    
    lava_restore_fix()
    {
        wait 1; // da tempo de carregar mapa
    
        level.lava = getentarray("lava_damage", "targetname");
    
        if (isdefined(level.lava) && level.lava.size > 0)
        {
            iprintlnbold(" Lava restaurada!");
            array_thread(level.lava, ::lava_damage_think);
        }
        else
        {
            iprintlnbold(" nothing");
        }
    }
    
    lava_damage_init()
    {
        level.lava = getentarray("lava_damage", "targetname");
        if (!isdefined(level.lava) || level.lava.size < 1)
            return;
    
        array_thread(level.lava, ::lava_damage_think);
    }
    
    // ----------------------
    // LAVA DAMAGE THINK
    // ----------------------
    lava_damage_think(ent)
    {
        self._trap_type = "";
        if (isdefined(self.script_noteworthy))
            self._trap_type = self.script_noteworthy;
    
        if (isdefined(self.target))
            self.volume = getent(self.target, "targetname");
    
        while (1)
        {
            self waittill("trigger", ent);
    
            if (isdefined(ent.ignore_lava_damage) && ent.ignore_lava_damage)
                continue;
    
            if (isdefined(ent.is_burning))
                continue;
    
            if (isdefined(self.target) && !ent istouching(self.volume))
                continue;
    
            if (isplayer(ent))
            {
                ent thread player_lava_damage(self);
            }
            else if (isdefined(ent.marked_for_death)) // zumbi
            {
                ent thread zombie_lava_damage(self);
            }
        }
    }
    
    // ----------------------
    // PLAYER DAMAGE
    // ----------------------
    player_lava_damage(trig)
    {
        self endon("zombified");
        self endon("death");
        self endon("disconnect");
    
        max_dmg = 15;
        min_dmg = 15;
        burn_time = 15;
    
        if (isdefined(trig.script_float))
        {
            max_dmg *= trig.script_float;
            min_dmg *= trig.script_float;
            burn_time *= trig.script_float;
            if (burn_time >= 1.5)
                burn_time = 1.5;
        }
    
        if (!isdefined(self.is_burning) && is_player_valid(self))
        {
            self.is_burning = 1;
    
            maps\mp\_visionset_mgr::vsmgr_activate("overlay", "zm_transit_burn", self, burn_time, level.zm_transit_burn_max_duration);
            self notify("burned");
    
            self thread player_burning_fx();
    
            if (!self hasperk("specialty_armorvest") || self.health - 100 < 1)
            {
                radiusdamage(self.origin, 10, max_dmg, min_dmg);
            }
            else if (self hasperk("specialty_armorvest"))
            {
                self dodamage(15, self.origin);
            }
            else
            {
                self dodamage(1, self.origin);
            }
    
            wait(0.5);
            self.is_burning = undefined;
        }
    }
    
    player_burning_fx()
    {
        self endon("death");
        if (isdefined(self.is_on_fire) && self.is_on_fire)
            return;
    
        self.is_on_fire = 1;
        self thread maps\mp\animscripts\zm_death::on_fire_timeout();
    
        if (isdefined(level._effect) && isdefined(level._effect["character_fire_death_sm"]))
            playfxontag(level._effect["character_fire_death_sm"], self, "J_SpineLower");
    }
    
    // ----------------------
    // ZOMBIE DAMAGE
    // ----------------------
    zombie_lava_damage(trap)
    {
        self endon("death");
    
        zombie_dmg = 15;
        if (isdefined(trap.script_float))
            zombie_dmg *= trap.script_float;
    
        if (isdefined(self.animname) && (!isdefined(self.is_on_fire) || !self.is_on_fire))
        {
            if (level.burning_zombies.size < 6 && zombie_dmg >= 1)
            {
                level.burning_zombies[level.burning_zombies.size] = self;
                self playsound("ignite");
                self thread zombie_burning_fx();
                self thread zombie_burning_watch();
                self thread zombie_burning_dmg();
                self thread zombie_exploding_death(zombie_dmg, trap);
            }
        }
    
        if (self.health > level.zombie_health / 2 && self.health > zombie_dmg)
            self dodamage(zombie_dmg, self.origin, trap);
    }
    
    zombie_burning_fx()
    {
        self endon("death");
        if (isdefined(self.is_on_fire) && self.is_on_fire)
            return;
    
        self.is_on_fire = 1;
        self thread maps\mp\animscripts\zm_death::on_fire_timeout();
    
        if (isdefined(level._effect) && isdefined(level._effect["lava_burning"]))
            playfxontag(level._effect["lava_burning"], self, "J_SpineLower");
    
        if (isdefined(level._effect) && isdefined(level._effect["character_fire_death_sm"]))
        {
            wait(1);
            tagarray = [];
            tagarray[0] = "J_Elbow_LE";
            tagarray[1] = "J_Elbow_RI";
            tagarray[2] = "J_Knee_RI";
            tagarray[3] = "J_Knee_LE";
            tagarray = randomize_array(tagarray);
            playfxontag(level._effect["character_fire_death_sm"], self, tagarray[0]);
        }
    }
    
    zombie_burning_watch()
    {
        self waittill_any("stop_flame_damage", "death");
        arrayremovevalue(level.burning_zombies, self);
    }
    
    zombie_exploding_death(zombie_dmg, trap)
    {
        self endon("stop_flame_damage");
    
        while (isdefined(self) && self.health >= zombie_dmg && isdefined(self.is_on_fire) && self.is_on_fire)
            wait(0.5);
    
        tag = "J_SpineLower";
    
        if (isdefined(level._effect["zomb_gib"]))
            playfx(level._effect["zomb_gib"], self gettagorigin(tag));
    
        self radiusdamage(self.origin, 128, 30, 15, undefined, "MOD_EXPLOSIVE");
        self ghost();
        self hide();
        self delay_thread(1, ::self_delete);
    }
    
    zombie_burning_dmg()
    {
        self endon("death");
        damageradius = 25;
        damage = 2;
    
        while (isdefined(self.is_on_fire) && self.is_on_fire)
        {
            eyeorigin = self geteye();
            players = get_players();
    
            for (i = 0; i < players.size; i++)
            {
                if (is_player_valid(players[i]))
                {
                    playereye = players[i] geteye();
                    if (distancesquared(eyeorigin, playereye) < damageradius * damageradius)
                    {
                        players[i] dodamage(damage, self.origin, self);
                        players[i] notify("burned");
                    }
                }
            }
            wait(1);
        }
    }
    
    restore_lava_damage()
    {
        level thread force_lava_damage();
    }
    
    force_lava_damage()
    {
        for(;;)
        {
            wait 1;
            level.player foreach(player)
            {
                if (!isDefined(player.lastlavafix))
                    player thread restore_damage_logic();
            }
        }
    }
    
    restore_damage_logic()
    {
        self.lastlavafix = true;
        for(;;)
        {
            wait 0.05;
            if (isTouchingLava(self.origin)) 
                self DoDamage(15, self.origin, self, "lava");
        }
    }
    
    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