This forum is locked and will eventually go offline. If you have feedback to share you can find us in our Discord channel "MythoLogic Interactive" https://discord.gg/nECKnbT7gk

Forum rules

Scripting 10 - Listening on explosions

A smaller forum with a few tutorials how to get started with the ScriptAPI.
Forum rules
By using the forum you agree to the following rules.
Locked
User avatar
Gurt
Lead Programmer
Lead Programmer
Posts: 1887
Joined: Sun Feb 28, 2016 3:22 pm
Title: Lead programmer
Started SFD: Made it!
Location: Sweden
Gender:
Age: 36

Scripting 10 - Listening on explosions

Post by Gurt » Sat Jul 27, 2019 2:06 pm

Scripting 10 - Listening on explosions

Scripting in SFD assumes you have a fair knowledge of C#.

The following code demonstrates how to listen on triggered explosions in v.1.3.0.

Code: Select all

Events.ExplosionHitCallback m_explosionHitEvent = null;
         
 public void OnStartup() {
	m_explosionHitEvent = Events.ExplosionHitCallback.Start(OnExplosionHit);
 }
 public void OnExplosionHit(ExplosionData explosion, ExplosionHitArg[] args) {
	// explosion triggered
	for(int i = 0; i < args.Length; i ++) {
	   switch (args[i].HitType) {
		case ExplosionHitType.Damage:
			Game.WriteToConsole(string.Format("Explosion {0} hit {1} {2} for {3} damage", explosion.InstanceID, (args[i].IsPlayer ? "player" : "object"), args[i].ObjectID, args[i].Damage));
			break;
		case ExplosionHitType.Shockwave:
			Game.WriteToConsole(string.Format("Explosion {0} pushed {1} {2}", explosion.InstanceID, (args[i].IsPlayer ? "player" : "object"), args[i].ObjectID));
			break;
		case ExplosionHitType.None:
			Game.WriteToConsole(string.Format("Explosion {0} overlapped {1} {2}", explosion.InstanceID, (args[i].IsPlayer ? "player" : "object"), args[i].ObjectID));
			break;
	   }
	}
 }
 

Note: If you only want to listen on player damage you could use the PlayerDamageCallback event instead. See viewtopic.php?f=22&t=3771

ScriptAPI Implementation
► Show Spoiler
Last edited by Gurt on Sun Jul 28, 2019 1:04 pm, edited 1 time in total.
Reason: Updated implementation details
4 x
Gurt

Locked