1 vs 1 scripting


(Destroy666) #1

Hey,
I’m making new sniper map with 1 vs 1 portal.
It should work like: one person from team can teleport if noone form team is in it.
When two people from each team are in, a script_mover (zaslona) goes down, but when only 1 or 0 script_mover goes up.

I’ve got two trigger_multiple entities and 2x enabler/disabler.
What should i add/change in script?

enabler1
{
	trigger run
	{
		trigger zaslona enable1
	}
}

enabler2
{
	trigger run
	{
		trigger zaslona enable2
	}
}

disabler1
{
	trigger run
	{
		trigger zaslona disable1
	}
}

disabler2
{
	trigger run
	{
		trigger zaslona disable2
	}
}

zaslona
{ 
        spawn
        {
                accum 1 set 0
                accum 2 set 0
        }

        trigger down
        {
                accum 1 abort_if_not_equal 1
                accum 2 abort_if_not_equal 1
                gotomarker markerdown 30 wait
        }

        trigger up
        {
                accum 1 abort_if_equal 1
                accum 2 abort_if_equal 1 
                gotomarker markerup 30 wait
        }
        
        trigger enable1
        {
                accum 1 inc 1
        }

        trigger enable2
        {
                accum 2 inc 1
        }

        trigger disable1
        {
                accum 1 inc -1
        }

        trigger disable2
        {
                accum 2 inc -1
        }
}

How to disable teleporting/pushing button when someone is in trigger_multiple?


(Zer0Cool) #2

http://splashdamage.com/forums/showthread.php?t=20269

this checks if a zone is/was left,
so 1 of this per team to enable/disable teleporter with “setstate <targetname> <invisible|default>” command
and to control yout mover in case of both are not left.


(Destroy666) #3

Thank you.

Is this script OK now?

game_manager 
{
       
     spawn 
     {
     
         wm_axis_respawntime 5
         wm_allied_respawntime 5
         wm_set_round_timelimit 70
         wm_set_defending_team 0
         wm_setwinner 0
          
         globalaccum 1 set 0
     }
}

//////////////////////////////////////////
////////////Portal 1 vs 1 ////////////////
//////////////////////////////////////////

enabler1
{
	spawn 
	{
		accum 7 bitreset 0 //counter
		accum 7 bitreset 1 //counter
		accum 7 bitreset 2 //state of use to block timer
	}
	trigger reset
	{
		accum 7 bitset 0
		accum 7 bitset 1
		accum 7 bitset 2
                setstate alliedteleport invisible
                globalaccum 1 inc 1
	}
	trigger timer 
	{
		accum 7 abort_if_not_bitset 2
		trigger self check_bitreset0
		accum 7 bitreset 1
		accum 7 abort_if_bitset 0
		accum 7 bitreset 2
                setstate alliedteleport default
                globalaccum 1 inc -1
	}
	trigger check_bitreset0 
	{
		accum 7 abort_if_bitset 1
		accum 7 bitreset 0
	}
}

disabler1
{
	trigger timer
	{
	trigger enabler1 timer
	}
}

enabler2
{
	spawn 
	{
		accum 7 bitreset 0 //counter
		accum 7 bitreset 1 //counter
		accum 7 bitreset 2 //state of use to block timer
	}
	trigger reset
	{
		accum 7 bitset 0
		accum 7 bitset 1
		accum 7 bitset 2
                setstate axisteleport invisible
                globalaccum 1 inc 1
	}
	trigger timer 
	{
		accum 7 abort_if_not_bitset 2
		trigger self check_bitreset0
		accum 7 bitreset 1
		accum 7 abort_if_bitset 0
		accum 7 bitreset 2
                setstate axisteleport default
                globalaccum 1 inc -1
	}
	trigger check_bitreset0 
	{
		accum 7 abort_if_bitset 1
		accum 7 bitreset 0
	}
}

disabler2
{
	trigger timer
	{
	trigger enabler2 timer
	}
}

zaslona
{ 
        spawn
        {
                wait 100
                globalaccum 1 trigger_if_equal 2 down
                globalaccum 1 trigger_if_less_than 2 up
        }

        trigger down
        {
                wait 100
                gotomarker markerdown 30 wait
        }

        trigger up
        {
                wait 100
                gotomarker markerup 30 wait
        }
}

(Zer0Cool) #4

Is this script OK now?

… sorry i prefer, “why doesn’t it work?”. Why you don’t even test it?

instead of the globalaccum 1 inc 1/-1 I would use a local accum in zaslona:

zaslona
{

spawn
{
wait 200
accum 0 set 0
trigger self down
}

trigger inc
{
accum 0 inc 1
accum 0 abort_if_not_equal 2
trigger self up
}

trigger dec
{
accum 0 inc -1
accum 0 abort_if_not_equal 0
trigger self down
}
 
}

(Destroy666) #5

I tested it and got unkown command script error - I asked because I though commands are good.
I found later that accums only have one trigger command (trigger_if_equal).

Now, I did like you wrote (only changed positions) and it goes down when playing alone, never goes up.

game_manager 
{
       
     spawn 
     {
     
         wm_axis_respawntime 5
         wm_allied_respawntime 5
         wm_set_round_timelimit 70
         wm_set_defending_team 0
         wm_setwinner 0
     }
}

//////////////////////////////////////////
////////////Portal 1 vs 1 ////////////////
//////////////////////////////////////////

enabler1
{
	spawn 
	{
		accum 7 bitreset 0 //counter
		accum 7 bitreset 1 //counter
		accum 7 bitreset 2 //state of use to block timer
	}
	trigger reset
	{
		accum 7 bitset 0
		accum 7 bitset 1
		accum 7 bitset 2
                setstate alliedteleport invisible
                trigger zaslona inc
	}
	trigger timer 
	{
		accum 7 abort_if_not_bitset 2
		trigger self check_bitreset0
		accum 7 bitreset 1
		accum 7 abort_if_bitset 0
		accum 7 bitreset 2
                setstate alliedteleport default
                trigger zaslona dec
	}
	trigger check_bitreset0 
	{
		accum 7 abort_if_bitset 1
		accum 7 bitreset 0
	}
}

disabler1
{
	trigger timer
	{
	trigger enabler1 timer
	}
}

enabler2
{
	spawn 
	{
		accum 7 bitreset 0 //counter
		accum 7 bitreset 1 //counter
		accum 7 bitreset 2 //state of use to block timer
	}
	trigger reset
	{
		accum 7 bitset 0
		accum 7 bitset 1
		accum 7 bitset 2
                setstate axisteleport invisible
                trigger zaslona inc
	}
	trigger timer 
	{
		accum 7 abort_if_not_bitset 2
		trigger self check_bitreset0
		accum 7 bitreset 1
		accum 7 abort_if_bitset 0
		accum 7 bitreset 2
                setstate axisteleport default
                trigger zaslona dec
	}
	trigger check_bitreset0 
	{
		accum 7 abort_if_bitset 1
		accum 7 bitreset 0
	}
}

disabler2
{
	trigger timer
	{
	trigger enabler2 timer
	}
}

zaslona
{ 
        spawn
        {
                wait 100
                accum 0 set 0
                trigger self up
        }
        
        trigger inc
        {
                accum 0 inc 1
                accum 0 abort_if_not_equal 2
                trigger self down
        }

        trigger dec
        {
                accum 0 inc -1
                accum 0 abort_if_equal 2
                trigger self up
        }

        trigger down
        {
                wait 100
                gotomarker markerdown 30 wait
        }

        trigger up
        {
                wait 100
                gotomarker markerup 30 wait
        }
}

“Why doesn’t it work?”


(Zer0Cool) #6

hmm ok ^^

so, i restarted this post for 3rd time now, you are editing to fast haha :smiley:

Edit: wtf this is kinda strange, i got now 2 versions of your script:

shown atm:

zaslona
{ 
        spawn
        {
                wait 100
                accum 0 set 0
                trigger self up
        }
        
        trigger inc
        {
                accum 0 inc 1
                accum 0 abort_if_not_equal 2
                trigger self down
        }

        trigger dec
        {
                accum 0 inc -1
                accum 0 abort_if_equal 2
                trigger self up
        }

        trigger down
        {
                wait 100
                gotomarker markerdown 30 wait
        }

        trigger up
        {
                wait 100
                gotomarker markerup 30 wait
        }
}

10 seconds before and seemed to be right:

zaslona
{ 
        spawn
        {
                accum 1 set 0
                accum 2 set 0
        }

        trigger down
        {
                accum 1 abort_if_not_equal 1
                accum 2 abort_if_not_equal 1
                gotomarker markerdown 30 wait
        }

        trigger up
        {
                accum 1 abort_if_equal 1
                accum 2 abort_if_equal 1 
                gotomarker markerup 30 wait
        }
        
        trigger enable1
        {
                accum 1 inc 1
        }

        trigger enable2
        {
                accum 2 inc 1
        }

        trigger disable1
        {
                accum 1 inc -1
        }

        trigger disable2
        {
                accum 2 inc -1
        }
}

And as it seems you don’t edit it at all at the moment… this forum scares me.
with the second script it should work, well done!
Edit:
Ah i just recognized you should change the “inc” into “set”
1 for ready and 0 for not ready