Page 1 of 1

Script working in map editor, but not when loaded externaly

Posted: Sat Jun 30, 2018 3:37 pm
by android7
I was making a script in map editor, so I could easily test it. When it was done and fully working in editor, I copied it into text file in Scripts folder. But when I ran that, it promted me with "Boom method couldn't be found" message. The rest worked as intended.

Code: Select all

Random N = new Random();
public void OnStartup(){
	IObjectTimerTrigger timer = (IObjectTimerTrigger)Game.CreateObject("TimerTrigger");
   	timer.SetIntervalTime(1000);
   	timer.SetRepeatCount(0);
   	timer.SetScriptMethod("SpawnBomb");
		timer.Trigger();

}

public void Boom(TriggerArgs args){
if(N.Next(0,10) >= 9){
	IObject ToKill =(IObject)args.Sender;
	ToKill.Destroy();	
}

}

public void SpawnBomb(TriggerArgs args){
	Vector2 Pos = new Vector2(N.Next(-550,550) , 300);	

	IObject Can = Game.CreateObject("Metal03A");
	Can.SetWorldPosition(Pos);
	Can.SetBodyType(BodyType.Dynamic);

	IObjectDestroyTrigger Delete = (IObjectDestroyTrigger)Game.CreateObject("DestroyTrigger");

	IObjectExplosionTrigger Exp = (IObjectExplosionTrigger)Game.CreateObject("ExplosionTrigger");
	Exp.SetBodyType(BodyType.Dynamic);
	Exp.SetWorldPosition(Pos);

	IObjectSpawnFireCircleTrigger Fire = (IObjectSpawnFireCircleTrigger)Game.CreateObject("SpawnFireCircleTrigger");
	Fire.SetBodyType(BodyType.Dynamic);
	Fire.SetWorldPosition(Pos);
	
	IObjectAreaTrigger Detect = (IObjectAreaTrigger )Game.CreateObject("AreaTrigger");
	Detect.SetBodyType(BodyType.Dynamic);
	Detect.SetSizeFactor(new Point(1,1));
	Detect.SetWorldPosition(Pos+new Vector2(0,-10));
	Detect.AddActivateTriggerOnEnter(Exp);	
	Detect.AddActivateTriggerOnEnter(Fire);	
	Detect.AddActivateTriggerOnEnter(Delete);
	Detect.SetOnEnterMethod("Boom");		//Boom method is being triggered by area trigger

	IObjectWeldJoint Weld = (IObjectWeldJoint)Game.CreateObject("WeldJoint");
	Weld.SetWorldPosition(Pos);
	Weld.AddTargetObject(Detect);
	Weld.AddTargetObject(Exp);
	Weld.AddTargetObject(Fire);
	Weld.AddTargetObject(Can);
	
	
	Delete.AddObjectToDestroy(Detect);
	Delete.AddObjectToDestroy(Can);


}
I shloud add that I can run other scripts in my Scripts folder without problem

Re: Script working in map editor, but not when loaded externaly

Posted: Sat Jun 30, 2018 5:57 pm
by Gurt
Already fixed in https://mythologicinteractiveforums.com ... 125#p16125
Use the Events.UpdateCallback instead of using a timer as a workaround:

Events.UpdateCallback.Start(SpawnBomb, 1000);
public void SpawnBomb(float elapsed) {
// Spawn bomby
}