script suddenly stops


(sQynor) #1

My script suddenly stops o.o

When i press button it says O then 1 and then moves my script mover…
but then it stops O.o

game_manager
{
  spawn
	{
		wm_axis_respawntime 1
		wm_allied_respawntime 1
		wm_set_round_timelimit 30
	}
}

counter_01
{
	trigger move_on
	{
		gotomarker counter_01_forward 5000
		trigger self number_0
	}

	trigger move_off
	{
		gotomarker counterBack_1 5000
	}

	trigger number_0
	{
		faceangles 0 0 0 1
		wm_announce "0"
		wait 1
	}

	trigger number_9
	{
		faceangles 0 0 36 1
		wm_announce "9"
		wait 1
	}

	trigger number_8
	{
		faceangles 0 0 72 1
		wm_announce "8"
		wait 1
	}

	trigger number_7
	{
		faceangles 0 0 108 1
		wm_announce "7"
		wait 1
	}

	trigger number_6
	{
		faceangles 0 0 144 1
		wm_announce "6"
		wait 1
	}

	trigger number_5
	{
		faceangles 0 0 180 1
		wm_announce "5"
		wait 1
	}

	trigger number_4
	{
		faceangles 0 0 216 1
		wm_announce "4"
		wait 1
	}

	trigger number_3
	{
		faceangles 0 0 252 1
		wm_announce "3"
		wait 1
	}

	trigger number_2
	{
		faceangles 0 0 288 1
		wm_announce "2"
		wait 1
	}

	trigger number_1
	{
		faceangles 0 0 324 1
		wm_announce "1" // HE SAYS THIS
		wait 1
	}

	trigger timer_on
	{
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_1
		wm_announce "do u get this far?" // NO IT DOESNT GET HERE
		globalaccum 0 abort_if_not_equal 1
		wm_announce "what about here?" // NEITHER HE GETS HERE
		trigger counter_01 number_2
		wait 99
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_3
		wait 99
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_4
		wait 99
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_5
		wait 99
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_6
		wait 99
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_7
		wait 99
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_8
		wait 99
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_9
		wait 99
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_0
		wait 99
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 timer_on //REPEAT
	}
}

trigga //Scriptname of my Target_Script_trigger
{
	trigger script_3 //Target of my target_Script_trigger
	{
		trigger global move_on
		globalaccum 0 set 1
		wait 1000
		trigger global timer_on
	}
	trigger script_4 //Same .. lol
	{
		globalaccum 0 set 0
		wait 1000
		trigger global move_off
	}
}


I’ve looked this over like 10 times now… but i don’t see any mistake…


(kamikazee) #2

Ah, maybe you fell into the same trap as I once did: when you call a trigger, it does not return to the caller when the mentioned trigger contains any statements which “wait” or if there is an “resetscript” statement.

So basically, you call the “timer_on” trigger which calls trigger “number_1” in turn. Seeing how the latter contains a wait statement, the script stops.

You’ll have to rewrite your script. I don’t know in which context this script will be used, so I cannot give any advice yet.


(sQynor) #3

can u highlite the WAIT u mean? or underline is ?

this doesn’t work either =(

game_manager
{
  spawn
	{
		wm_axis_respawntime 1
		wm_allied_respawntime 1
		wm_set_round_timelimit 30
	}
}

counter_01
{
	trigger move_on
	{
		gotomarker counter_01_forward 5000
		trigger self number_0
	}

	trigger move_off
	{
		gotomarker counterBack_1 5000
	}

	trigger number_0
	{
		faceangles 0 0 0 1
		wm_announce "0"
	}

	trigger number_9
	{
		faceangles 0 0 36 1
		wm_announce "9"
	}

	trigger number_8
	{
		faceangles 0 0 72 1
		wm_announce "8"
	}

	trigger number_7
	{
		faceangles 0 0 108 1
		wm_announce "7"
	}

	trigger number_6
	{
		faceangles 0 0 144 1
		wm_announce "6"
	}

	trigger number_5
	{
		faceangles 0 0 180 1
		wm_announce "5"
	}

	trigger number_4
	{
		faceangles 0 0 216 1
		wm_announce "4"
	}

	trigger number_3
	{
		faceangles 0 0 252 1
		wm_announce "3"
	}

	trigger number_2
	{
		faceangles 0 0 288 1
		wm_announce "2"
	}

	trigger number_1
	{
		faceangles 0 0 324 1
		wm_announce "1" // HE SAYS THIS
	}

	trigger timer_on
	{
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_1
		wm_announce "do u get this far?" // NO IT DOESNT GET HERE
		globalaccum 0 abort_if_not_equal 1
		wm_announce "what about here?" // NEITHER HE GETS HERE
		trigger counter_01 number_2
		wait 100
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_3
		wait 100
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_4
		wait 100
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_5
		wait 100
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_6
		wait 100
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_7
		wait 100
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_8
		wait 100
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_9
		wait 100
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 number_0
		wait 100
		globalaccum 0 abort_if_not_equal 1
		trigger counter_01 timer_on //REPEAT
	}
}

trigga //Scriptname of my Target_Script_trigger
{
	trigger script_3 //Target of my target_Script_trigger
	{
		trigger global move_on
		globalaccum 0 set 1
		wait 1000
		trigger global timer_on
	}
	trigger script_4 //Same .. lol
	{
		globalaccum 0 set 0
		wait 1000
		trigger global move_off
	}
}


Hmmm, it’s not that i’m a noob at scripting… but everything should be alright… but isn’t… and i can’t find any mistakes…

I want to make a counter that counts fomr 0 to 9 and then over and over… so i can make it count to 100… i made it before with 30! func_static… each containing a number 0 - 9 … so it could count to 999 atm.

Now i’m trying this… it’s more fps friendly because u only have 1 brush instead of 10… ( if it works i make 2 new timers )


(kamikazee) #4

Not just the “wait” statements are the culprit - also the “faceangles” commands incur waits (gotmarker by default doesn’t, unless you add the “wait” parameter)!

Here’s one way to keep it counting:

game_manager
{
	spawn
	{
		wm_axis_respawntime 1
		wm_allied_respawntime 1
		wm_set_round_timelimit 30
	}
}

counter_01
{
	spawn {
		// Current number = "0"
		accum 0 set 0
		facenagles 0 0 0 1
	}
	trigger move_on
	{
		gotomarker counter_01_forward 5000
		faceangles 0 0 0 1
	}

	trigger move_off
	{
		gotomarker counterBack_1 5000
	}

	trigger number_0
	{
		faceangles 0 0 0 1
		wm_announce "0"
		accum 0 set 0
		trigger self timer_on
	}

	trigger number_9
	{
		faceangles 0 0 36 1
		wm_announce "9"
		trigger self timer_on
	}

	trigger number_8
	{
		faceangles 0 0 72 1
		wm_announce "8"
		trigger self timer_on
	}

	trigger number_7
	{
		faceangles 0 0 108 1
		wm_announce "7"
		trigger self timer_on
	}

	trigger number_6
	{
		faceangles 0 0 144 1
		wm_announce "6"
		trigger self timer_on
	}

	trigger number_5
	{
		faceangles 0 0 180 1
		wm_announce "5"
		trigger self timer_on
	}

	trigger number_4
	{
		faceangles 0 0 216 1
		wm_announce "4"
		trigger self timer_on
	}

	trigger number_3
	{
		faceangles 0 0 252 1
		wm_announce "3"
		trigger self timer_on
	}

	trigger number_2
	{
		faceangles 0 0 288 1
		wm_announce "2"
		trigger self timer_on
	}

	trigger number_1
	{
		faceangles 0 0 324 1
		wm_announce "1"
		trigger self timer_on
	}

	trigger timer_on
	{
		globalaccum 0 abort_if_not_equal 1
		accum 0 inc 1
		wait 100
		
		// Can't use "self" in "accum x trigger_if_equal" statement. What a pitty.
		accum 0 trigger_if_equal 1 counter_01 number_1
		accum 0 trigger_if_equal 2 counter_01 number_2
		accum 0 trigger_if_equal 3 counter_01 number_3
		accum 0 trigger_if_equal 4 counter_01 number_4
		accum 0 trigger_if_equal 5 counter_01 number_5
		accum 0 trigger_if_equal 6 counter_01 number_6
		accum 0 trigger_if_equal 7 counter_01 number_7
		accum 0 trigger_if_equal 8 counter_01 number_8
		accum 0 trigger_if_equal 9 counter_01 number_9
		accum 0 trigger_if_equal 10 counter_01 number_0
	}
}

trigga //Scriptname of my Target_Script_trigger
{
	trigger script_3 //Target of my target_Script_trigger
	{
		trigger global move_on
		globalaccum 0 set 1
		wait 1000
		trigger global timer_on
	}
	trigger script_4 //Same .. lol
	{
		globalaccum 0 set 0
		wait 1000
		trigger global move_off
	}
}

(Note I stripped of all the “move_on”/“move_off” things as I was confused about their purpose.)


(sQynor) #5

[QUOTE=kamikazee;177257]Not just the “wait” statements are the culprit - also the “faceangles” commands incur waits (gotmarker by default doesn’t, unless you add the “wait” parameter)!

Here’s one way to keep it counting:

game_manager
{
	spawn
	{
		wm_axis_respawntime 1
		wm_allied_respawntime 1
		wm_set_round_timelimit 30
	}
}

counter_01
{
	spawn {
		// Current number = "0"
		accum 0 set 0
		facenagles 0 0 0 1
	}
	trigger move_on
	{
		gotomarker counter_01_forward 5000
		faceangles 0 0 0 1
	}

	trigger move_off
	{
		gotomarker counterBack_1 5000
	}

	trigger number_0
	{
		faceangles 0 0 0 1
		wm_announce "0"
		accum 0 set 0
		trigger self timer_on
	}

	trigger number_9
	{
		faceangles 0 0 36 1
		wm_announce "9"
		trigger self timer_on
	}

	trigger number_8
	{
		faceangles 0 0 72 1
		wm_announce "8"
		trigger self timer_on
	}

	trigger number_7
	{
		faceangles 0 0 108 1
		wm_announce "7"
		trigger self timer_on
	}

	trigger number_6
	{
		faceangles 0 0 144 1
		wm_announce "6"
		trigger self timer_on
	}

	trigger number_5
	{
		faceangles 0 0 180 1
		wm_announce "5"
		trigger self timer_on
	}

	trigger number_4
	{
		faceangles 0 0 216 1
		wm_announce "4"
		trigger self timer_on
	}

	trigger number_3
	{
		faceangles 0 0 252 1
		wm_announce "3"
		trigger self timer_on
	}

	trigger number_2
	{
		faceangles 0 0 288 1
		wm_announce "2"
		trigger self timer_on
	}

	trigger number_1
	{
		faceangles 0 0 324 1
		wm_announce "1"
		trigger self timer_on
	}

	trigger timer_on
	{
		globalaccum 0 abort_if_not_equal 1
		accum 0 inc 1
		wait 100
		
		// Can't use "self" in "accum x trigger_if_equal" statement. What a pitty.
		accum 0 trigger_if_equal 1 counter_01 number_1
		accum 0 trigger_if_equal 2 counter_01 number_2
		accum 0 trigger_if_equal 3 counter_01 number_3
		accum 0 trigger_if_equal 4 counter_01 number_4
		accum 0 trigger_if_equal 5 counter_01 number_5
		accum 0 trigger_if_equal 6 counter_01 number_6
		accum 0 trigger_if_equal 7 counter_01 number_7
		accum 0 trigger_if_equal 8 counter_01 number_8
		accum 0 trigger_if_equal 9 counter_01 number_9
		accum 0 trigger_if_equal 10 counter_01 number_0
	}
}

trigga //Scriptname of my Target_Script_trigger
{
	trigger script_3 //Target of my target_Script_trigger
	{
		trigger global move_on
		globalaccum 0 set 1
		wait 1000
		trigger global timer_on
	}
	trigger script_4 //Same .. lol
	{
		globalaccum 0 set 0
		wait 1000
		trigger global move_off
	}
}

(Note I stripped of all the “move_on”/“move_off” things as I was confused about their purpose.)[/QUOTE]

Thanks i got it working :> but now the problem is… what was the exact fault why it didn’t went going… ?


(kamikazee) #6

As I said: any statement causing the script to wait for just one moment will stop the script from returning to its caller. The script engine is made that way.

Statements to look out for are faceangles, gotomarker (with a wait parameter), wait, resetscript, followspline (with a wait parameter) and followpath (with a wait parameter).
Just try some simple script with any of these commands and you’ll see the script will stop unless it has chained trigger calls.


(sQynor) #7

[QUOTE=kamikazee;177278]As I said: any statement causing the script to wait for just one moment will stop the script from returning to its caller. The script engine is made that way.

Statements to look out for are faceangles, gotomarker (with a wait parameter), wait, resetscript, followspline (with a wait parameter) and followpath (with a wait parameter).
Just try some simple script with any of these commands and you’ll see the script will stop unless it has chained trigger calls.[/QUOTE]

That’s explained alot easier thanks =D