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

delay in events

Here you can find answered ScriptAPI topics.
Forum rules
By using the forum you agree to the following rules.
Locked
TAW_legitscoper
Meatbag
Posts: 2
Joined: Sat Jan 07, 2017 1:32 pm
SFD Account: TAW_legitscoper

delay in events

Post by TAW_legitscoper » Sat Jan 07, 2017 1:35 pm

Hello, I have a problem in creating my map. I want to make gun burst for let's say, 20 bullets and wait some time. Here is script:

Code: Select all

public void Timer(TriggerArgs args)
{

}

public void turret(TriggerArgs args){
	for(int i = 0; i < 20;i++)
	{
	IObject obj = Game.GetSingleObjectByCustomId("start");
	IObject objDir = Game.GetSingleObjectByCustomId("end");
	Vector2 pos = obj.GetWorldPosition();
	Vector2 dir = objDir.GetWorldPosition();
	Game.SpawnProjectile(ProjectileItem.M60, pos, dir - pos);

	}
	
}
public void turret2(TriggerArgs args){
	IObject obj = Game.GetSingleObjectByCustomId("start");
	IObject objDir = Game.GetSingleObjectByCustomId("end");
	Vector2 pos = obj.GetWorldPosition();
	Vector2 dir = objDir.GetWorldPosition();
	Game.SpawnProjectile(ProjectileItem.BAZOOKA, pos, dir - pos);
	
}
problem is that the gun is firing continous. turret and turrer2 are timers.
0 x

Voven
Meatbag
Posts: 3
Joined: Thu Jan 05, 2017 8:30 pm
SFD Account: Voven
Started SFD: Alpha 1.0.0
Location: Iceland
Gender:

Post by Voven » Sat Jan 07, 2017 3:06 pm

TAW_legitscoper wrote:Hello, I have a problem in creating my map. I want to make gun burst for let's say, 20 bullets and wait some time. Here is script:

Code: Select all

public void Timer(TriggerArgs args)
{

}

public void turret(TriggerArgs args){
	for(int i = 0; i < 20;i++)
	{
	IObject obj = Game.GetSingleObjectByCustomId("start");
	IObject objDir = Game.GetSingleObjectByCustomId("end");
	Vector2 pos = obj.GetWorldPosition();
	Vector2 dir = objDir.GetWorldPosition();
	Game.SpawnProjectile(ProjectileItem.M60, pos, dir - pos);

	}
	
}
public void turret2(TriggerArgs args){
	IObject obj = Game.GetSingleObjectByCustomId("start");
	IObject objDir = Game.GetSingleObjectByCustomId("end");
	Vector2 pos = obj.GetWorldPosition();
	Vector2 dir = objDir.GetWorldPosition();
	Game.SpawnProjectile(ProjectileItem.BAZOOKA, pos, dir - pos);
	
}
problem is that the gun is firing continous. turret and turrer2 are timers.
I guess your timer's interval time is really low. Try to set it with more time, like 5.000-10.000ms.
Hope it works.
0 x
- Voven

TAW_legitscoper
Meatbag
Posts: 2
Joined: Sat Jan 07, 2017 1:32 pm
SFD Account: TAW_legitscoper

Post by TAW_legitscoper » Sat Jan 07, 2017 5:03 pm

OK, but now it fires one bullet and waits that 5 seconds. Or for loop isn't working. Is there any way to delay that loop, like Delay(10); or something that exist

Added in 55 minutes 5 seconds:
I figured it out. It was simpler than I thought. I just placed second timer, gave it 5000ms delay, activate on startup and activate turret timer. For turret timer I set repeat to 20, don't activate on startup and interval to 30ms
0 x

User avatar
gwendalaze
Superfighter
Superfighter
Posts: 84
Joined: Sat Mar 19, 2016 12:55 pm
Title: Jarate Yellow Belt
Started SFD: PreAlpha 1.1.4
Location: France

Post by gwendalaze » Sat Jan 07, 2017 6:52 pm

remove the loop, just make sure the timer trigger repeat every ~200
0 x
- Gwendalaze, failing at being fun, just like this signature

Locked