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

Plutonium

  1. Home
  2. MW3 Modding Support & Discussion
  3. Trying to change SMAW damage...

Trying to change SMAW damage...

Scheduled Pinned Locked Moved MW3 Modding Support & Discussion
2 Posts 2 Posters 105 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.
  • nefq89wpenvoundefined Offline
    nefq89wpenvoundefined Offline
    nefq89wpenvo
    wrote on last edited by
    #1

    I've got a script that changes the MSR damage, but when I try changing the weapon name to "smaw_" or "iw5_smaw_mp" nothing changes. Don't really know much of anything about GSC so thought I would try and see if someone was willing to help. Any help is appreciated.

    //Damage stuff
    Callback_NewPlayerDamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex ) 
    {
    	self endon( "disconnect" );
    	
    	if ( isSubStr(sWeapon, "msr_") )
    	{
    		switch( sHitLoc )
    		{
    			case "helmet":
    			case "head":
    			case "neck":
    			case "torso_upper":
    			case "torso_lower":
    			case "right_arm_upper":
    			case "left_arm_upper":
    			case "right_arm_lower":
    			case "left_arm_lower":
    			case "right_hand":
    			case "left_hand":
    			case "right_leg_upper":
    			case "left_leg_upper":
    			case "right_leg_lower":
    			case "left_leg_lower":
    			case "right_foot":
    			case "left_foot":
    
    			iDamage = 100000; // Just making sure. ;)
    			break;
    
    			case "gun": // Assuming this is the player's gun?
    			iDamage = 0;
    			break;
    		}
    	}
    	
    	[[level.playerDamageOG]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex );
    }
    
    
    DoDvars()
    {
    	setDvar("scr_spectatefree", 0);
    	self thread maps\mp\gametypes\_hud_message::hintMessage("Welcome ^2"+self.name+"^7!");
    	self thread maps\mp\gametypes\_hud_message::hintMessage("have fun!!!!!!!!!!!");
    
    }
    

    this is the full script 👇

    #include maps\mp\gametypes\_hud_util;
    #include maps\mp\_utility;
    #include common_scripts\utility;
    
    init()
    {
    	level thread onPlayerConnect();
    	
    	//Damage stuff
    	level.playerDamageOG = level.callbackplayerdamage;
    	level.callbackplayerdamage = ::Callback_NewPlayerDamage;
    	
    	level thread doInfo();
    	wait 1.0;
    	level thread doInfo2();
    	setDvar("sv_cheats", 1);
    	setDvar("sv_enableBounces", 0);
    	setDvar("sv_enabledoubletaps", 1);
    	setDvar("jump_slowdownEnable", 0);
    }
    
    onPlayerConnect()
    {
      for(;;)
      {
        level waittill( "connected", player );
        player thread onPlayerSpawned();
    	player thread DoDvars();
      }
    
    }
    
    onPlayerSpawned()
    {
      self endon("disconnect");
      for(;;)
      {
        self waittill("spawned_player");
        //self iprintlnbold("^2Hello gsc");
    	self thread SpawnCrate();
    	self thread PickupCrate();
    	self thread watchMoveBotsCommand();
      }
    
    }
    
    //Damage stuff
    Callback_NewPlayerDamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex ) 
    {
    	self endon( "disconnect" );
    	
    	if ( isSubStr(sWeapon, "msr_") )
    	{
    		switch( sHitLoc )
    		{
    			case "helmet":
    			case "head":
    			case "neck":
    			case "torso_upper":
    			case "torso_lower":
    			case "right_arm_upper":
    			case "left_arm_upper":
    			case "right_arm_lower":
    			case "left_arm_lower":
    			case "right_hand":
    			case "left_hand":
    			case "right_leg_upper":
    			case "left_leg_upper":
    			case "right_leg_lower":
    			case "left_leg_lower":
    			case "right_foot":
    			case "left_foot":
    
    			iDamage = 100000; // Just making sure. ;)
    			break;
    
    			case "gun": // Assuming this is the player's gun?
    			iDamage = 0;
    			break;
    		}
    	}
    	
    	[[level.playerDamageOG]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex );
    }
    
    
    DoDvars()
    {
    	setDvar("scr_spectatefree", 0);
    	self thread maps\mp\gametypes\_hud_message::hintMessage("Welcome ^2"+self.name+"^7!");
    	self thread maps\mp\gametypes\_hud_message::hintMessage("have fun!!!!!!!!!!!");
    
    }
    
    
    doInfo()
    {
            self endon("disconnect");
            displayText = self createServerFontString( "objective", 1.5 );
            i = 0;
            for( ;; )
            {
                    if(i == -1300) 
    		{
                            i = 1300;
                    }
    
                    displayText setPoint( "BOTTOM", undefined, i, 0);
                    displayText setText("^6     ");
                    wait .03;
                    i--;
            }
    }
    
    doInfo2()
    {
            self endon("disconnect");
            displayText = self createServerFontString( "objective", 1.5 );
            i = 0;
            for( ;; )
            {
                    if(i == -1020) 
    		{
                            i = 1020;
                    }
    
                    displayText setPoint( "TOP", undefined, i, 0);
                    displayText setText("^6         ");
                    wait .03;
                    i--;
            }
    }
    
    SpawnCrate()
    {
    	self endon("death");
            self notifyOnPlayerCommand( "4", "+lookup" );
    	for(;;)
    	{
                    self waittill( "4" );
    		{
    			vec = anglestoforward(self getPlayerAngles());
    			end = (vec[0] * 200, vec[1] * 200, vec[2] * 200);
    			Location = BulletTrace( self gettagorigin("tag_eye"), self gettagorigin("tag_eye")+end, 0, self )[ "position" ];
    			crate = spawn("script_model", Location+(0,0,20));
    			crate CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
    			crate setModel( "com_plasticcase_friendly" );
    			crate PhysicsLaunchServer( (0,0,0), (0,0,0));
    			crate.angles = self.angles+(0,90,0);
    		}
    	}
    }
    
    PickupCrate()
    {
    	self endon("death");
    	self notifyOnPlayerCommand( "5", "+mlook" );
    	for(;;)
    	{
    		self waittill( "5" );
    		vec = anglestoforward(self getPlayerAngles());
    		end = (vec[0] * 100, vec[1] * 100, vec[2] * 100);
    		entity = BulletTrace( self gettagorigin("tag_eye"), self gettagorigin("tag_eye")+(vec[0] * 100, vec[1] * 100, vec[2] * 100), 0, self )[ "entity" ];
    
    		if( isdefined(entity.model) )
    		{
    			self thread moveCrate( entity );
    			self waittill( "5" );
    			{
    				self.moveSpeedScaler = 1;
    				self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" );
    			}		
    		}
    	}
    }
    
    moveCrate( entity )
    {
    	self endon("5");
    	for(;;)
    	{
    		entity.angles = self.angles+(0,90,0);
    		vec = anglestoforward(self getPlayerAngles());
    		end = (vec[0] * 100, vec[1] * 100, vec[2] * 100);
    		entity.origin = (self gettagorigin("tag_eye")+end);
    		self.moveSpeedScaler = 0.5;
    		self maps\mp\gametypes\_weapons::updateMoveSpeedScale( "primary" );
    		wait 0.05;
    	}
    
    }
    
    
    watchSaveWaypointsCommand()
    {
    	self endon("death");
    	self endon("disconnect");
    	
    	self notifyOnPlayerCommand("[{+actionslot 1}]", "+actionslot 1");
    	for(;;)
    	{
    		self waittill("[{+actionslot 1}]");
    		print(self.origin);
    	}
    }
    
    isBot()
    {
    	return isSubStr( self.guid, "bot" );
    }
    
    watchMoveBotsCommand()
    {
    	self endon( "death" );
    	self endon( "disconnect" );
    	
    	self notifyOnPlayerCommand( "moveBots", "+lookdown" );
    	for(;;)
    	{
    		self waittill( "moveBots" );
    		
    		forward = anglesToForward( self getPlayerAngles() );
    		scaled = (forward[0] * 100000, forward[1] * 100000, forward[2] * 100000);
    		start = self gettagorigin( "tag_eye" );
    		location = BulletTrace( start, start + scaled, 0, self )[ "position" ];
    	
    		for( i = 0; i < level.players.size; i++ )
    		{
    			if( level.players[i] isBot() )
    			{
    				level.players[i] setOrigin( location );
    			}
    		}
    	}
    }
    
    1 Reply Last reply
    0
    • Resxtundefined Offline
      Resxtundefined Offline
      Resxt Plutonium Staff
      wrote on last edited by Resxt
      #2

      First, unless you need it for specific reasons the switch on sHitLoc is useless
      Second, a SMAW won't always hit the player directly
      Third you should debug (print) the values you're using and you'll find the answer yourself
      Simply add this in your if and you will see useful/relevant values and understand why something isn't working easily

      print(idamage);
      print(sweapon);
      print(smeansofdeath):
      

      Also don't randomly try to guess weapon names, debug them like mentioned above

      This might give you an idea
      https://github.com/Resxt/Plutonium-IW5-Scripts/blob/main/small_scripts/disable_damages.gsc

      I simply added this to modify SMAW's damages. To modify launchers damage in general you would use sMeansOfDeath instead probably. Here I also check if the attacker isn't the victim too so that you can still damage yourself

      if (isDefined(eAttacker.guid) && isDefined(self.guid))
      {
          if (eAttacker.guid == self.guid)
          {
              if (sWeapon == "iw5_smaw_mp")
              {
                  iDamage = 0;
              }
          }
      }
      
      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