Показать сообщение отдельно
Старый 21.09.2021, 03:05   #650
roman5
Новичок
 
Регистрация: 25.06.2017
Сообщений: 114
Вы сказали Спасибо: 35
Поблагодарили 71 раз(а) в 34 сообщениях
roman5 стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от vicente Посмотреть сообщение
скрипты всех девяти Signal_Head в этом шейпе- в студию.
Скрытый текст:
Код:
SignalShape (
		"APK_4AB_YR_GY_I_Kv.s"
		"APK_4AB_YR_GY_I_Kv"
		SignalSubObjs ( 15
			SignalSubObj ( 0
			"SIGNAL" "Nastrojki predidusego signala:"
			SigSubType ( SIGNAL_HEAD )
			SigSubSType ( "APK_3AB_YGR_YW_DISTANCE" )
			)
			SignalSubObj ( 1
			"SIGNAL" " - Datj zelenij (inace 2 zeltih)"
			SigSubType ( USER1 )
			SignalFlags ( OPTIONAL )
			)
			SignalSubObj ( 2
			"SIGNAL" "Dlja drugix ukazanij ispolzujte marker!"
			SigSubType ( SIGNAL_HEAD )
			SigSubSType ( "APK_INFO_CLEAR_2" )
			)
				SignalSubObj ( 3
				"SIGNAL" "Nastrojki etogo signala:"
				SigSubType ( SIGNAL_HEAD )
				SigSubSType ( "APK_ALSN_KZ_0_B_0" )
				)
			SignalSubObj ( 4
			"SIGNAL" " - Videlitj, esli ALSN kodiruetsa"
			SigSubType ( USER2 )
			SignalFlags ( OPTIONAL DEFAULT )
			)
			SignalSubObj ( 5
			"SIGNAL" " - Verhnij zeltij iz dvuh mozet migatj"
			SigSubType ( USER3 )
			SignalFlags ( OPTIONAL DEFAULT )
			)
			SignalSubObj ( 6
			"SIGNAL" " - Zeltij ALSN na odin zeltij migajusij"
			SigSubType ( USER4 )
			SignalFlags ( OPTIONAL )
			)
				SignalSubObj ( 7
				"SIGNAL" "Odnostoronnij propusk poezda:"
				SigSubType ( SIGNAL_HEAD )
				SigSubSType ( "APK_ALSN_KZ_20_B_20" )
				)
				SignalSubObj ( 8
				"SIGNAL" " - Vhodnoj svetofor"
				SigSubType ( GRADIENT_PLATE )
				SignalFlags ( OPTIONAL )
				)
				SignalSubObj ( 9
				"SIGNAL" " - Prohodnoj svetofor"
				SigSubType ( NUMBER_PLATE )
				SignalFlags ( OPTIONAL )
				)
				SignalSubObj ( 10
				"SIGNAL" " "
				SigSubType ( SIGNAL_HEAD )
				SigSubSType ( "APK_Priglasitelnij2" )
				)
			SignalSubObj ( 11
			"SIGNAL" " "
			SigSubType ( SIGNAL_HEAD )
			SigSubSType ( "APK_3AB_YGR_YW_ALSN_Z_40_B_40" )
			)
			SignalSubObj ( 12
			"SIGNAL" " "
			SigSubType ( SIGNAL_HEAD )
			SigSubSType ( "APK_3AB_YGR_YW_ALSN_Z_60_B_60" )
			)
			SignalSubObj ( 13
			"SIGNAL" " "
			SigSubType ( SIGNAL_HEAD )
			SigSubSType ( "APK_4AB_YRG_YW_ALSN_Zel_B_Z" )
			)
			SignalSubObj ( 14
			"SIGNAL" " "
			SigSubType ( SIGNAL_HEAD )
			SigSubSType ( "APK_4AB_YR_GY_Kv" )
			)
		)
	)


Скрытый текст:
Код:
SCRIPT APK_3AB_YGR_YW_DISTANCE

	extern float	block_state ();
	extern float	def_draw_state ();
	extern float	state;
	extern float	draw_state;
	extern float	next_sig_lr ();
	extern float	next_sig_mr ();
	extern float	opp_sig_lr ();
	extern float	opp_sig_mr ();
	extern float	sig_feature ();
	float WORK1; float ONE_WAY; float SVET; float POEZD; float next_INFO; float opp_ONE_WAY; float opp_POEZD;

	ONE_WAY = 0; SVET = 0; POEZD = 0; next_INFO = 8; opp_POEZD = 0; opp_ONE_WAY = 0;
	if ( block_state() !=# BLOCK_JN_OBSTRUCTED ) {
		WORK1 = next_sig_mr ( SIGFN_NORMAL ); if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { ONE_WAY = 1; }
		WORK1 = next_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_CLEAR_2 ) { SVET = 5; } if ( WORK1 ==# SIGASP_CLEAR_1 ) { SVET = 4; }
		if ( WORK1 ==# SIGASP_APPROACH_3 ) { SVET = 3; } if ( WORK1 ==# SIGASP_APPROACH_2 ) { SVET = 2; }
		if ( WORK1 ==# SIGASP_APPROACH_1 ) { SVET = 1; }
		if ( WORK1 ==# SIGASP_RESTRICTING ) { POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { POEZD = 1; }
		WORK1 = next_sig_mr ( SIGFN_INFO );
		if ( WORK1 ==# SIGASP_CLEAR_1 ) { next_INFO = 7; } if ( WORK1 ==# SIGASP_APPROACH_3 ) { next_INFO = 6; }
		if ( WORK1 ==# SIGASP_APPROACH_2 ) { next_INFO = 5; } if ( WORK1 ==# SIGASP_APPROACH_1 ) { next_INFO = 4; }
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { next_INFO = 2; } if ( WORK1 ==# SIGASP_RESTRICTING )
		{ next_INFO = 3; } if ( WORK1 ==# SIGASP_STOP ) { next_INFO = 0; }
	}
	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
		WORK1 = opp_sig_mr ( SIGFN_NORMAL );
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_ONE_WAY = 1; }
		WORK1 = opp_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_RESTRICTING ) { opp_POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_POEZD = 1; }
	}

	if ( next_INFO ==# 4 ) { next_INFO = 8; }
	if ( next_INFO ==# 5 ) { next_INFO = 8; }
	if ( next_INFO ==# 6 ) { next_INFO = 8; }
	if ( next_INFO ==# 3 && sig_feature( SIGFEAT_NUMBER_PLATE ) )
	{ next_INFO = 8; }

	state = SIGASP_STOP;
	if ( next_INFO ==# 8 && POEZD ==# 0 && block_state() ==# BLOCK_CLEAR ) {
		if ( SVET ==# 0 ) { state = SIGASP_CLEAR_1; }
		if ( SVET ==# 1 ) { state = SIGASP_APPROACH_3; }
		if ( SVET ==# 2 ) { state = SIGASP_CLEAR_2; }
		if ( SVET ==# 3 ) { state = SIGASP_CLEAR_2; }
		if ( SVET ==# 4 ) { state = SIGASP_CLEAR_2; }
		if ( SVET ==# 5 ) { state = SIGASP_CLEAR_2; }
	}
	if ( next_INFO ==# 0 && POEZD ==# 0 && block_state() ==# BLOCK_CLEAR ) { state = SIGASP_APPROACH_1; }

	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
		if ( ( block_state() ==# BLOCK_OCCUPIED || POEZD !=# 0 ) && opp_POEZD !=# 1 ) { state = SIGASP_STOP_AND_PROCEED; }
		if ( opp_ONE_WAY ==# 1 || opp_POEZD ==# 2 ) { state = SIGASP_STOP_AND_PROCEED; }
	}
	if ( sig_feature( SIGFEAT_NUMBER_PLATE ) && POEZD ==# 1 ) {
		state = SIGASP_STOP_AND_PROCEED;
	}
	draw_state = def_draw_state (state);


Скрытый текст:
Код:
SCRIPT APK_INFO_CLEAR_2

	extern float	sig_feature ();
	extern float	def_draw_state ();
	extern float	state;
	extern float	draw_state;

	state = SIGASP_STOP;
	if ( sig_feature( SIGFEAT_USER1 ) ) { state = SIGASP_CLEAR_2; }
	draw_state = def_draw_state (state);




Скрытый текст:
Код:
SCRIPT APK_ALSN_KZ_0_B_0

	extern float	block_state ();
	extern float	def_draw_state ();
	extern float	state;
	extern float	draw_state;
	extern float	next_sig_lr ();
	extern float	next_sig_mr ();
	extern float	opp_sig_lr ();
	extern float	opp_sig_mr ();
	extern float	sig_feature ();
	float WORK1; float ONE_WAY; float SVET; float POEZD; float next_INFO; float opp_ONE_WAY; float opp_POEZD;

	ONE_WAY = 0; SVET = 0; POEZD = 0; next_INFO = 8; opp_POEZD = 0; opp_ONE_WAY = 0;
	if ( block_state() !=# BLOCK_JN_OBSTRUCTED ) {
		WORK1 = next_sig_mr ( SIGFN_NORMAL ); if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { ONE_WAY = 1; }
		WORK1 = next_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_CLEAR_2 ) { SVET = 5; } if ( WORK1 ==# SIGASP_CLEAR_1 ) { SVET = 4; }
		if ( WORK1 ==# SIGASP_APPROACH_3 ) { SVET = 3; } if ( WORK1 ==# SIGASP_APPROACH_2 ) { SVET = 2; }
		if ( WORK1 ==# SIGASP_APPROACH_1 ) { SVET = 1; }
		if ( WORK1 ==# SIGASP_RESTRICTING ) { POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { POEZD = 1; }
		WORK1 = next_sig_mr ( SIGFN_INFO );
		if ( WORK1 ==# SIGASP_CLEAR_1 ) { next_INFO = 7; } if ( WORK1 ==# SIGASP_APPROACH_3 ) { next_INFO = 6; }
		if ( WORK1 ==# SIGASP_APPROACH_2 ) { next_INFO = 5; } if ( WORK1 ==# SIGASP_APPROACH_1 ) { next_INFO = 4; }
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { next_INFO = 2; } if ( WORK1 ==# SIGASP_RESTRICTING )
		{ next_INFO = 3; } if ( WORK1 ==# SIGASP_STOP ) { next_INFO = 0; }
	}
	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
		WORK1 = opp_sig_mr ( SIGFN_NORMAL );
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_ONE_WAY = 1; }
		WORK1 = opp_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_RESTRICTING ) { opp_POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_POEZD = 1; }
	}
	if ( next_INFO ==# 3 && sig_feature( SIGFEAT_NUMBER_PLATE ) ) { next_INFO = 8; }


	state = SIGASP_STOP;
	if ( sig_feature( SIGFEAT_NUMBER_PLATE ) && POEZD !=# 1 ) {
		if ( block_state() !=# BLOCK_CLEAR || POEZD ==# 2 || ONE_WAY ==# 1 ) { state = SIGASP_STOP_AND_PROCEED; }
	}
	if ( block_state() ==# BLOCK_CLEAR ) {
		if ( POEZD !=# 0 || next_INFO ==# 7 ) {
			state = SIGASP_STOP_AND_PROCEED;
			if ( !sig_feature( SIGFEAT_USER2 ) ) { state = SIGASP_RESTRICTING; }
			if ( sig_feature( SIGFEAT_NUMBER_PLATE ) && POEZD ==# 1 && next_INFO ==# 7 ) { state = SIGASP_RESTRICTING; }
			if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
				if ( opp_POEZD ==# 2 || opp_ONE_WAY ==# 1 ) { state = SIGASP_RESTRICTING; }
			}
		}
	} else {
		state = SIGASP_STOP_AND_PROCEED;
		if ( !sig_feature( SIGFEAT_USER2 ) ) { state = SIGASP_RESTRICTING; }
		if ( sig_feature( SIGFEAT_NUMBER_PLATE ) && POEZD ==# 1 ) { state = SIGASP_RESTRICTING; }
		if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
			if ( opp_POEZD ==# 2 || opp_ONE_WAY ==# 1 ) { state = SIGASP_RESTRICTING; }
		}
	}
	if ( next_INFO ==# 3 ) { state = SIGASP_STOP; }
	draw_state = def_draw_state (state);


Скрытый текст:
Код:
SCRIPT APK_ALSN_KZ_20_B_20

	extern float	block_state ();
	extern float	def_draw_state ();
	extern float	state;
	extern float	draw_state;
	extern float	next_sig_lr ();
	extern float	next_sig_mr ();
	extern float	opp_sig_lr ();
	extern float	opp_sig_mr ();
	extern float	sig_feature ();
	float WORK1; float ONE_WAY; float SVET; float POEZD; float next_INFO; float opp_ONE_WAY; float opp_POEZD;

	ONE_WAY = 0; SVET = 0; POEZD = 0; next_INFO = 8; opp_POEZD = 0; opp_ONE_WAY = 0;
	if ( block_state() !=# BLOCK_JN_OBSTRUCTED ) {
		WORK1 = next_sig_mr ( SIGFN_NORMAL ); if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { ONE_WAY = 1; }
		WORK1 = next_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_CLEAR_2 ) { SVET = 5; } if ( WORK1 ==# SIGASP_CLEAR_1 ) { SVET = 4; }
		if ( WORK1 ==# SIGASP_APPROACH_3 ) { SVET = 3; } if ( WORK1 ==# SIGASP_APPROACH_2 ) { SVET = 2; }
		if ( WORK1 ==# SIGASP_APPROACH_1 ) { SVET = 1; }
		if ( WORK1 ==# SIGASP_RESTRICTING ) { POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { POEZD = 1; }
		WORK1 = next_sig_mr ( SIGFN_INFO );
		if ( WORK1 ==# SIGASP_CLEAR_1 ) { next_INFO = 7; } if ( WORK1 ==# SIGASP_APPROACH_3 ) { next_INFO = 6; }
		if ( WORK1 ==# SIGASP_APPROACH_2 ) { next_INFO = 5; } if ( WORK1 ==# SIGASP_APPROACH_1 ) { next_INFO = 4; }
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { next_INFO = 2; } if ( WORK1 ==# SIGASP_RESTRICTING )
		{ next_INFO = 3; } if ( WORK1 ==# SIGASP_STOP ) { next_INFO = 0; }
	}
	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
		WORK1 = opp_sig_mr ( SIGFN_NORMAL );
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_ONE_WAY = 1; }
		WORK1 = opp_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_RESTRICTING ) { opp_POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_POEZD = 1; }
	}

	if ( next_INFO ==# 3 && sig_feature( SIGFEAT_NUMBER_PLATE ) ) { next_INFO = 8; }

	state = SIGASP_STOP;
	if ( sig_feature( SIGFEAT_NUMBER_PLATE ) && POEZD !=# 1 ) {
		if ( block_state() !=# BLOCK_CLEAR || POEZD ==# 2 || ONE_WAY ==# 1 ) { state = SIGASP_STOP_AND_PROCEED; }
	}
	if ( block_state() ==# BLOCK_CLEAR ) {
		if ( next_INFO ==# 2 && POEZD ==# 0 ) {
			state = SIGASP_STOP_AND_PROCEED;
			if ( !sig_feature( SIGFEAT_USER2 ) ) { state = SIGASP_RESTRICTING; }
			if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
				if ( opp_POEZD ==# 2 || opp_ONE_WAY ==# 1 ) { state = SIGASP_RESTRICTING; }
			}
		}
		if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) && next_INFO !=# 7 && POEZD ==# 0 ) {
			if ( opp_POEZD ==# 2 || opp_ONE_WAY ==# 1 ) { state = SIGASP_RESTRICTING; }
		}
	}
	if ( next_INFO ==# 3 ) {
		state = SIGASP_STOP_AND_PROCEED;
		if ( !sig_feature( SIGFEAT_USER2 ) ) { state = SIGASP_RESTRICTING; }
		if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
			if ( opp_POEZD ==# 2 || opp_ONE_WAY ==# 1 ) { state = SIGASP_RESTRICTING; }
		}
	}
	draw_state = def_draw_state (state);


Скрытый текст:
Код:
SCRIPT APK_Priglasitelnij2

	extern float	block_state ();
	extern float	def_draw_state ();
	extern float	state;
	extern float	draw_state;
	extern float	next_sig_lr ();
	extern float	next_sig_mr ();
	extern float	sig_feature ();
	float WORK1; float POEZD; float next_INFO;

	POEZD = 0; next_INFO = 8;
	if ( block_state() !=# BLOCK_JN_OBSTRUCTED ) {
		WORK1 = next_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_RESTRICTING ) { POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { POEZD = 1; }
		WORK1 = next_sig_mr ( SIGFN_INFO );
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { next_INFO = 2; } if ( WORK1 ==# SIGASP_RESTRICTING ) { next_INFO = 3; }
	}

	state = SIGASP_CLEAR_2;
	if ( next_INFO ==# 2 && block_state() ==# BLOCK_CLEAR && POEZD ==# 0 ) { state = SIGASP_STOP; }
	if ( next_INFO ==# 3 ) { state = SIGASP_STOP; }
	draw_state = def_draw_state (state);


Скрытый текст:
Код:
SCRIPT APK_3AB_YGR_YW_ALSN_Z_40_B_40

	extern float	block_state ();
	extern float	def_draw_state ();
	extern float	state;
	extern float	draw_state;
	extern float	next_sig_lr ();
	extern float	next_sig_mr ();
	extern float	opp_sig_lr ();
	extern float	opp_sig_mr ();
	extern float	sig_feature ();
	float WORK1; float ONE_WAY; float SVET; float POEZD; float next_INFO; float opp_ONE_WAY; float opp_POEZD;

	ONE_WAY = 0; SVET = 0; POEZD = 0; next_INFO = 8; opp_POEZD = 0; opp_ONE_WAY = 0;
	if ( block_state() !=# BLOCK_JN_OBSTRUCTED ) {
		WORK1 = next_sig_mr ( SIGFN_NORMAL ); if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { ONE_WAY = 1; }
		WORK1 = next_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_CLEAR_2 ) { SVET = 5; } if ( WORK1 ==# SIGASP_CLEAR_1 ) { SVET = 4; }
		if ( WORK1 ==# SIGASP_APPROACH_3 ) { SVET = 3; } if ( WORK1 ==# SIGASP_APPROACH_2 ) { SVET = 2; }
		if ( WORK1 ==# SIGASP_APPROACH_1 ) { SVET = 1; }
		if ( WORK1 ==# SIGASP_RESTRICTING ) { POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { POEZD = 1; }
		WORK1 = next_sig_mr ( SIGFN_INFO );
		if ( WORK1 ==# SIGASP_CLEAR_1 ) { next_INFO = 7; } if ( WORK1 ==# SIGASP_APPROACH_3 ) { next_INFO = 6; }
		if ( WORK1 ==# SIGASP_APPROACH_2 ) { next_INFO = 5; } if ( WORK1 ==# SIGASP_APPROACH_1 ) { next_INFO = 4; }
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { next_INFO = 2; } if ( WORK1 ==# SIGASP_RESTRICTING )
		{ next_INFO = 3; } if ( WORK1 ==# SIGASP_STOP ) { next_INFO = 0; }
	}
	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
		WORK1 = opp_sig_mr ( SIGFN_NORMAL );
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_ONE_WAY = 1; }
		WORK1 = opp_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_RESTRICTING ) { opp_POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_POEZD = 1; }
	}

	if ( next_INFO ==# 4 ) { next_INFO = 8; }
	if ( next_INFO ==# 5 ) { next_INFO = 8; }
	if ( next_INFO ==# 6 ) { next_INFO = 8; }
	if ( next_INFO ==# 3 && sig_feature( SIGFEAT_NUMBER_PLATE ) ) { next_INFO = 8; }

	state = SIGASP_STOP;
	if ( sig_feature( SIGFEAT_NUMBER_PLATE ) && POEZD !=# 1 ) {
		if ( block_state() !=# BLOCK_CLEAR || POEZD ==# 2 || ONE_WAY ==# 1 ) { state = SIGASP_STOP_AND_PROCEED; }
	}
	if ( block_state() ==# BLOCK_CLEAR ) {
		if ( next_INFO ==# 0 && POEZD ==# 0 ) {
			state = SIGASP_APPROACH_1;
			if ( !sig_feature( SIGFEAT_USER2 ) ) { state = SIGASP_RESTRICTING; }
		}
	}
	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
		if ( opp_POEZD ==# 2 || opp_ONE_WAY ==# 1 ) { state = SIGASP_STOP; }
	}
	draw_state = def_draw_state (state);


Скрытый текст:
Код:
SCRIPT APK_3AB_YGR_YW_ALSN_Z_60_B_60

	extern float	block_state ();
	extern float	def_draw_state ();
	extern float	state;
	extern float	draw_state;
	extern float	next_sig_lr ();
	extern float	next_sig_mr ();
	extern float	opp_sig_lr ();
	extern float	opp_sig_mr ();
	extern float	sig_feature ();
	float WORK1; float ONE_WAY; float SVET; float POEZD; float next_INFO; float opp_ONE_WAY; float opp_POEZD;

	ONE_WAY = 0; SVET = 0; POEZD = 0; next_INFO = 8; opp_POEZD = 0; opp_ONE_WAY = 0;
	if ( block_state() !=# BLOCK_JN_OBSTRUCTED ) {
		WORK1 = next_sig_mr ( SIGFN_NORMAL ); if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { ONE_WAY = 1; }
		WORK1 = next_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_CLEAR_2 ) { SVET = 5; } if ( WORK1 ==# SIGASP_CLEAR_1 ) { SVET = 4; }
		if ( WORK1 ==# SIGASP_APPROACH_3 ) { SVET = 3; } if ( WORK1 ==# SIGASP_APPROACH_2 ) { SVET = 2; }
		if ( WORK1 ==# SIGASP_APPROACH_1 ) { SVET = 1; }
		if ( WORK1 ==# SIGASP_RESTRICTING ) { POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { POEZD = 1; }
		WORK1 = next_sig_mr ( SIGFN_INFO );
		if ( WORK1 ==# SIGASP_CLEAR_1 ) { next_INFO = 7; } if ( WORK1 ==# SIGASP_APPROACH_3 ) { next_INFO = 6; }
		if ( WORK1 ==# SIGASP_APPROACH_2 ) { next_INFO = 5; } if ( WORK1 ==# SIGASP_APPROACH_1 ) { next_INFO = 4; }
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { next_INFO = 2; } if ( WORK1 ==# SIGASP_RESTRICTING )
		{ next_INFO = 3; } if ( WORK1 ==# SIGASP_STOP ) { next_INFO = 0; }
	}
	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
		WORK1 = opp_sig_mr ( SIGFN_NORMAL );
		if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_ONE_WAY = 1; }
		WORK1 = opp_sig_lr ( SIGFN_DISTANCE );
		if ( WORK1 ==# SIGASP_RESTRICTING ) { opp_POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_POEZD = 1; }
	}

	if ( next_INFO ==# 4 ) { next_INFO = 8; }
	if ( next_INFO ==# 5 ) { next_INFO = 8; }
	if ( next_INFO ==# 6 ) { next_INFO = 8; }
	if ( next_INFO ==# 3 && sig_feature( SIGFEAT_NUMBER_PLATE ) ) { next_INFO = 8; }

	state = SIGASP_STOP;
	if ( sig_feature( SIGFEAT_NUMBER_PLATE ) && POEZD !=# 1 ) {
		if ( block_state() !=# BLOCK_CLEAR || POEZD ==# 2 || ONE_WAY ==# 1 ) { state = SIGASP_STOP_AND_PROCEED; }
	}
	if ( block_state() ==# BLOCK_CLEAR ) {
		if ( SVET ==# 0 && next_INFO ==# 8 && POEZD ==# 0 ) {
			state = SIGASP_APPROACH_1;
			if ( !sig_feature( SIGFEAT_USER2 ) ) { state = SIGASP_RESTRICTING; }
		}
	}
	if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) {
		if ( opp_POEZD ==# 2 || opp_ONE_WAY ==# 1 ) { state = SIGASP_STOP; }
	}
	draw_state = def_draw_state (state);
roman5 вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо roman5 за это полезное сообщение:
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА