Page 2 of 8 FirstFirst 1234 ... LastLast
Results 11 to 20 of 73

Thread: GAS Grenade For COD2 MP

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Private First Class G-Stuff002's Avatar
    Join Date
    Jan 2018
    Posts
    212
    Thanks
    42
    Thanked 109 Times in 107 Posts
    I deleted from iwd _callbacksetup.gsc because i checked, and gas grenade work without this gsc. I deleted superfluous files in hope that I will find the necessary..otherwise I do not know how

    in callback file unclear what does grenade use

    If this mod not have another class structure (HUD Elemets)for teams and I would have found differences and would have guessed what it is necessary to cut and add to usual Cod2
    Last edited by G-Stuff002; 21st February 2018 at 09:39.

  2. #2
    Private First Class G-Stuff002's Avatar
    Join Date
    Jan 2018
    Posts
    212
    Thanks
    42
    Thanked 109 Times in 107 Posts
    Way: merc2v3_4pb_svr_.iwd/

    1 folder. /character (nothing here)
    2 folder. /codescripts (nothing here)
    3 folder. /mptype (nothing here)

    4 folder. /_mc2/
    Copy of _mc2_special.gsc (maybe)
    >.....upload later

    pb.gsc (nothing)
    _ammobox_allied.gsc (nothing)
    _ammobox_axis.gsc (nothing)
    _artillery.gsc (nothing) WOW, Tally took a part in the development this script..

    _callbacksetup.gsc (maybe)
    >.....upload later

    _healthpacks.gsc (nothing)
    _mc2_classes.gsc (nothing)

    _mc2_gore.gsc (maybe)
    >.....upload later

    Spoiler:
    case "axisfire_mp":
    case "fire_mp":
    case "alliedgas_mp":
    case "axisgas_mp":
    return "specialnades";

    //die extrawurst


    _mc2_hud.gsc (nothing)

    _mc2_init.gsc (maybe)
    >.....upload later

    _mc2_mcFX.gsc (maybe find) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    >.....upload later

    }
    }

    //Begin split
    /* -----------------------------------------------------
    CREATE THE AREA EFFECT
    AND DAMAGE FOR THE MUSTARD GAS
    eAttacker = owner of damage
    vPoint = mustard gas grenade coords
    ---------------------------------------------------- */
    AlliedMonitorMustardGas(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime)
    {
    self endon("TimeToDie");
    self endon("disconnect");
    //PLAY EFFECT FOR 15 SECONDS
    gastime = 10;
    for(j = 0;j <= gastime;j++)
    {
    //LOOP THROUGH PLAYERS AND DETERMINE WHO IS IN RANGE
    players = getentarray("player", "classname");
    for(i=0;i<players.size;i++)
    {
    dst = distance(vPoint, players[i].origin);

    //AREA WHICH PLAYER WILL BE AFFECTED EXPANDS
    //ALONG WITH THE GAS/SMOKE (~2ft per sec)

    if( dst > 200 + (j * 20) || players[i].sessionstate != "playing" || !isAlive(players[i]) )
    continue;
    //DAMAGE THE PLAYER

    pcnt = 200 + (j * 20);
    if(dst > pcnt * .75 ) // 0-25% dmg
    iDamage = randomint(5);
    else if(dst > pcnt * .5 && dst < pcnt * .75) // 25-50 % dmg
    iDamage = 15 + randomint(5);
    else if(dst > pcnt *.25 && dst < pcnt * .5) // 59-75% dmg
    iDamage = 30 + randomint(5);
    else if(dst < pcnt * .25) // 100% dmg
    iDamage = 45 + randomint(5);

    //vDir = undefined;
    //SET THE MOD
    sMeansOfDeath = "MOD_UNKNOWN";
    // SET THE WEAPON TO "NONE" SO THE DAMAGE CALLBACK
    // DOESNT PICK IT BACK UP AND RESTART THE THREAD
    sWeapon = "alliedgas_mp";
    iDFlags = 1;

    players[i] thread AlliedGasPlayer(eAttacker, eAttacker, iDamage, iDFlags , sMeansOfDeath , sWeapon, vPoint , undefined,"none",psOffsetTime);
    }
    wait(1);
    }
    }

    and other script...


    _mc2_models.gsc (nothing)
    _mc2_payload.gsc (nothing)

    _mc2_player.gsc (maybe)

    Spoiler:
    }
    if(level.scr_extragore && sMeansOfDeath != "MOD_GRENADE" && sMeansOfDeath != "MOD_GRENADE_SPLASH")
    {
    if(level.bloodfx==0)return;
    else if(level.bloodfx==1)
    {
    switch (randomint(3))
    {
    case 0: playfx(level._effect["hit_extra1_mc"],vPoint,vDir);break;
    case 1: playfx(level._effect["hit_extra2_mc"],vPoint,vDir);break;
    case 2: playfx(level._effect["hit_extra3_mc"],vPoint,vDir);break;
    }



    _mc2_special.gsc (nothing)

    _mc2_util.gsc (maybe)

    Spoiler:
    /*-------------------------------------------
    CLEAN UP THE HUD ELEMENTS WHEN A PLAYER DIES
    -------------------------------------------*/
    resetHUD()
    {
    if (isDefined(self.Painscreen))
    self.Painscreen destroy();
    if (isDefined(self.Painscreen2))
    self.Painscreen2 destroy();
    if (isDefined(self.bloodyscreen))
    self.bloodyscreen destroy();
    if (isDefined(self.bloodyscreen1))
    self.bloodyscreen1 destroy();
    if (isDefined(self.bloodyscreen2))
    self.bloodyscreen2 destroy();
    }

    and other...

    _mc2_vars.gsc (maybe) (Initialize the cvars )

    _medkit_allied.gsc (nothing)
    _medkit_axis.gsc (nothing)
    _mortars.gsc (nothing)
    _sprinting.gsc (nothing)



    5 folder. /maps/mp/

    mp_rhine.gsc (nothing)
    _load.gsc (nothing)


    /maps/mp/gametypes

    it's i need gametypes
    tdm.gsc (maybe)
    dm.gsc (maybe)

    Spoiler:
    //[Merciless2]///////////////////////////////
    if(isdefined(self.protected))return;
    if(isDefined(sWeapon) && sWeapon == "axisgas_mp"||sWeapon == "alliedgas_mp")
    {
    if(sWeapon == "alliedgas_mp" && sMeansOfDeath != "MOD_MELEE")
    {
    if (!isDefined(vPoint))
    vPoint = self.origin + (0,0,11);
    if(isDefined(level.mustardgas) && level.mustardgas == vPoint)
    return;
    level.mustardgas = vPoint;
    level thread _mc2\_mc2_mcFX::AlliedMonitorMustardGas(eInflictor , eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, level.mustardgas, vDir, sHitLoc, psOffsetTime);
    return;
    }
    else if(sWeapon == "axisgas_mp" && sMeansOfDeath != "MOD_MELEE")
    {
    if (!isDefined(vPoint))
    vPoint = self.origin + (0,0,11);
    if(isDefined(level.mustardgas) && level.mustardgas == vPoint)
    return;
    level.mustardgas = vPoint;
    level thread _mc2\_mc2_mcFX::AlliedMonitorMustardGas(eInflictor , eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, level.mustardgas, vDir, sHitLoc, psOffsetTime);
    return;

    }
    }

    AND

    //[Merciless2]///////////////////////////////
    if(isdefined(self.protected))return;
    if(isDefined(sWeapon) && sWeapon == "axisgas_mp"||sWeapon == "alliedgas_mp")
    {
    if(sWeapon == "alliedgas_mp" && sMeansOfDeath != "MOD_MELEE")
    {
    if (!isDefined(vPoint))
    vPoint = self.origin + (0,0,11);
    if(isDefined(level.mustardgas) && level.mustardgas == vPoint)
    return;
    level.mustardgas = vPoint;
    level thread _mc2\_mc2_mcFX::AlliedMonitorMustardGas(eInflictor , eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, level.mustardgas, vDir, sHitLoc, psOffsetTime);
    return;
    }
    else if(sWeapon == "axisgas_mp" && sMeansOfDeath != "MOD_MELEE")
    {
    if (!isDefined(vPoint))
    vPoint = self.origin + (0,0,11);
    if(isDefined(level.mustardgas) && level.mustardgas == vPoint)
    return;
    level.mustardgas = vPoint;
    level thread _mc2\_mc2_mcFX::AlliedMonitorMustardGas(eInflictor , eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, level.mustardgas, vDir, sHitLoc, psOffsetTime);
    return;

    }



    _callbacksetup.gsc (maybe)
    >.....upload later

    Spoiler:
    /*---------------------------------------
    SCREAMS WHEN WEAPON IS A FLAME WEAPON
    ----------------------------------------*/
    if(!isDefined(self.scr) && sMeansOfDeath == "MOD_FLAME")
    {
    self thread _mc2\_mc2_util::scream("m");
    }


    if(!isDefined(level.scr_tkpunish))
    level.scr_tkpunish = 0;

    if(!isDefined(iDamage))
    iDamage = 1;

    if(sWeapon != "fire_mp" && sWeapon != "axisgas_mp" && sWeapon != "axisfire_mp" && sWeapon !="alliedgas_mp" && sMeansOfDeath != "MOD_UNKNOWN")
    {


    _grenadeindicators.gsc (nothing)
    _healthoverlay.gsc (nothing)
    _hud_playerscore.gsc (nothing)
    _hud_teamscore.gsc (nothing)
    _menus.gsc (nothing)
    _quickmessages.gsc (nothing)
    _teams.gsc (nothing)
    _weapons.gsc (maybe need "Class special weapons balanced")
    Last edited by G-Stuff002; 21st February 2018 at 11:31.

  3. #3
    ... connecting Schenk's Avatar
    Join Date
    Apr 2020
    Posts
    7
    Thanks
    1
    Thanked 0 Times in 0 Posts
    I have a question to mustardgas

    How can I set the gas grenade damage to a higher level. I want the gas grenade if it explodes on the player he is dead immediately. Since it is too weak now, he runs away and does not die.

    Which setting do I have to change?

    thx

  4. #4
    Private First Class G-Stuff002's Avatar
    Join Date
    Jan 2018
    Posts
    212
    Thanks
    42
    Thanked 109 Times in 107 Posts
    I'll will spend the whole day today and i will write out all the scripts related to grenade from all folders and files. Maybe someone fast a look after, when i finish and prompt the line where the script is responsible for "slowdeath" as said kung foo man. Ok, I'm starting...

  5. #5
    Private First Class G-Stuff002's Avatar
    Join Date
    Jan 2018
    Posts
    212
    Thanks
    42
    Thanked 109 Times in 107 Posts
    Thank you Tally!

    ..omg, now it need to understand how to put everything together for one iwd to cut/collect/combine all files and scripts in one mod (gasgrenade)


    continue to think.. and work
    Last edited by G-Stuff002; 21st February 2018 at 11:56.

  6. #6
    Private First Class G-Stuff002's Avatar
    Join Date
    Jan 2018
    Posts
    212
    Thanks
    42
    Thanked 109 Times in 107 Posts
    Maybe they have four functions handling the damage because they have a different range/distances of damage i think...or timing of damage
    Last edited by G-Stuff002; 21st February 2018 at 12:31.

  7. #7
    Private First Class G-Stuff002's Avatar
    Join Date
    Jan 2018
    Posts
    212
    Thanks
    42
    Thanked 109 Times in 107 Posts
    add to new.iwd/_mc2/_mc2_util.gsc (maybe need edit)

    because have find in code in _mc2_mcFX.gsc, this:
    }

    if(!isDefined(self.puked) && randomint(100) > 70) //30% chance to puke
    {
    playfxontag (level._effect["puke"], self, "j_Head");
    _mc2\_mc2_util::forceto("crouch");
    if(!isDefined(self.scr))
    {
    Last edited by G-Stuff002; 21st February 2018 at 14:26.

  8. #8
    Private First Class G-Stuff002's Avatar
    Join Date
    Jan 2018
    Posts
    212
    Thanks
    42
    Thanked 109 Times in 107 Posts
    now, what i do. Look all script in _mc2_mcFX.gsc and change

    in script
    alliedgas_mp to smoke_grenade_german_mp, beacouse i will be use usual/original smoke grenade for change

    In weapons/mp
    alliedgas_mp file rename to smoke_grenade_german_mp and cut/past to new.iwd

    and will see if _mc2_mcFX Redirect to loading other GSCs
    Last edited by G-Stuff002; 21st February 2018 at 13:08.

  9. #9
    Brigadier General
    Join Date
    Oct 2012
    Posts
    994
    Thanks
    20
    Thanked 588 Times in 388 Posts
    Quote Originally Posted by G-Stuff002 View Post
    now, what i do. Look all script in _mc2_mcFX.gsc and change

    in script
    alliedgas_mp to smoke_grenade_german_mp, beacouse i will be use usual/original smoke grenade for change

    In weapons/mp
    alliedgas_mp file rename to smoke_grenade_german_mp and cut/past to new.iwd

    and will see if _mc2_mcFX Redirect to loading other GSCs
    To start everything off, you need to edit each gametype file, and modify the callback_playerdamage() function:

    Code:
    Callback_PlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime)
    {
    	if(self.sessionteam == "spectator")
    		return;
    		
    	if( isDefined(sWeapon) && sWeapon == "axisgas_mp"|| sWeapon == "alliedgas_mp" )
    	{
    			if(sWeapon == "alliedgas_mp" && sMeansOfDeath != "MOD_MELEE")
    			{
    				if (!isDefined(vPoint))
    					vPoint = self.origin + (0,0,11);
    				if(isDefined(level.mustardgas) && level.mustardgas == vPoint)
    					return;
    				level.mustardgas = vPoint;
    				level thread _mc2\_mc2_mcFX::AlliedMonitorMustardGas(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, level.mustardgas, vDir, sHitLoc, psOffsetTime);
    				return;
    			}
    			else if(sWeapon == "axisgas_mp" && sMeansOfDeath != "MOD_MELEE")
    			{
    				if (!isDefined(vPoint))
    				vPoint = self.origin + (0,0,11);
    				if(isDefined(level.mustardgas) && level.mustardgas == vPoint)
    				return;
    				level.mustardgas = vPoint;
    				level thread _mc2\_mc2_mcFX::AlliedMonitorMustardGas(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, level.mustardgas, vDir, sHitLoc, psOffsetTime);
    				return;
    
    			}
    	}
    
    	// Don't do knockback if the damage direction was not specified
    	if(!isDefined(vDir))
    		iDFlags |= level.iDFLAGS_NO_KNOCKBACK;
    
    	friendly = undefined;
    
    	// check for completely getting out of the damage
    	if(!(iDFlags & level.iDFLAGS_NO_PROTECTION))
    	{
    		if(isPlayer(eAttacker) && (self != eAttacker) && (self.pers["team"] == eAttacker.pers["team"]))
    		{
    			if(level.friendlyfire == "0")
    			{
    				return;
    			}
    			else if(level.friendlyfire == "1")
    			{
    				// Make sure at least one point of damage is done
    				if(iDamage < 1)
    					iDamage = 1;
    
    				self finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
    
    				// Shellshock/Rumble
    				self thread maps\mp\gametypes\_shellshock::shellshockOnDamage(sMeansOfDeath, iDamage);
    				self playrumble("damage_heavy");
    			}
    			else if(level.friendlyfire == "2")
    			{
    				eAttacker.friendlydamage = true;
    
    				iDamage = int(iDamage * .5);
    
    				// Make sure at least one point of damage is done
    				if(iDamage < 1)
    					iDamage = 1;
    
    				eAttacker finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
    				eAttacker.friendlydamage = undefined;
    
    				friendly = true;
    			}
    			else if(level.friendlyfire == "3")
    			{
    				eAttacker.friendlydamage = true;
    
    				iDamage = int(iDamage * .5);
    
    				// Make sure at least one point of damage is done
    				if(iDamage < 1)
    					iDamage = 1;
    
    				self finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
    				eAttacker finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
    				eAttacker.friendlydamage = undefined;
    
    				friendly = true;
    
    				// Shellshock/Rumble
    				self thread maps\mp\gametypes\_shellshock::shellshockOnDamage(sMeansOfDeath, iDamage);
    				self playrumble("damage_heavy");
    			}
    		}
    		else
    		{
    			// Make sure at least one point of damage is done
    			if(iDamage < 1)
    				iDamage = 1;
    
    			self finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
    
    			// Shellshock/Rumble
    			self thread maps\mp\gametypes\_shellshock::shellshockOnDamage(sMeansOfDeath, iDamage);
    			self playrumble("damage_heavy");
    		}
    
    		if(isdefined(eAttacker) && eAttacker != self)
    			eAttacker thread maps\mp\gametypes\_damagefeedback::updateDamageFeedback();
    	}
    	
    
    	// Do debug print if it's enabled
    	if(getCvarInt("g_debugDamage"))
    	{
    		println("client:" + self getEntityNumber() + " health:" + self.health +
    			" damage:" + iDamage + " hitLoc:" + sHitLoc);
    	}
    
    	if(self.sessionstate != "dead")
    	{
    		lpselfnum = self getEntityNumber();
    		lpselfname = self.name;
    		lpselfteam = self.pers["team"];
    		lpselfGuid = self getGuid();
    		lpattackerteam = "";
    
    		if(isPlayer(eAttacker))
    		{
    			lpattacknum = eAttacker getEntityNumber();
    			lpattackGuid = eAttacker getGuid();
    			lpattackname = eAttacker.name;
    			lpattackerteam = eAttacker.pers["team"];
    		}
    		else
    		{
    			lpattacknum = -1;
    			lpattackGuid = "";
    			lpattackname = "";
    			lpattackerteam = "world";
    		}
    
    		if(isDefined(friendly))
    		{
    			lpattacknum = lpselfnum;
    			lpattackname = lpselfname;
    			lpattackGuid = lpselfGuid;
    		}
    
    		logPrint("D;" + lpselfGuid + ";" + lpselfnum + ";" + lpselfteam + ";" + lpselfname + ";" + lpattackGuid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n");
    	}
    }
    As you can see from this, the code looks for either alliedgas_mp or axisgas_mp weapon files, and starts threading to your mustardgas functions.

  10. #10
    Private First Class G-Stuff002's Avatar
    Join Date
    Jan 2018
    Posts
    212
    Thanks
    42
    Thanked 109 Times in 107 Posts
    ok,

    Olmost finish but now need copy from original cod2: dm.gsc and tdm.gsc
    beacouse in merc2V3_4pb this files configured to run unnecessary threads

    and insert the callback_playerdamage() scripts and modify

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •