Trigger & Models

Have a question about modding, modelling or skinning? Have a tutorial to post? Post here!

Moderator: Core Staff

Post Reply
User avatar
Opel
CJ Fan
CJ Fan
Posts: 188
Joined: September 15th, 2008, 12:28 pm
Location: Scotland

Trigger & Models

Post by Opel » March 21st, 2011, 8:14 pm

Hey guys.

What i am trying to do is spawn a group of models at various different positions of the map, which i have done.
Then i went to spawn a trigger radius on each of these models so i can detect if a player is touching them. I have came up with something and i have got no errors in console, but only the first flag model spawns ( the one at strikePosition[0] )

This is the code for my gametype.

I have tryed various things but as soon as i put code in for spawning trigger radiuses at the positions they all disappear except the first flag spawned. I also put a for loop around the trigger section to see if it made any difference but nope none.

Code: Select all

for( x = 0; x < flag[i].size; x++)
Any help is appreciated thanks.

Code: Select all

flagPositions()
{
	strikePositions 		= [];	
	strikePositions[0]		= (110, -1132, 370);
	strikePositions[1]		= (716, -1320, 524);
	strikePositions[2]		= (1259, -636, 532);
	strikePositions[3]		= (1005, 274, 624);
	strikePositions[4]		= (1839, 730, 516);
	strikePositions[5] 		= (1446, 1516, 636);
	strikePositions[6]		= (24, 548, 464);
	strikePositions[7]		= (-643, 795, 704);
	strikePositions[8]		= (270, -2016, 341);
	strikePositions[9]		= (-1054, -1687, 438);
	strikePositions[10]	 	= (-805, -715, 516);
	strikePositions[11]		= (-445, 1344, 283);
	strikePositions[12]		= (895, 160, 256);
	strikePositions[13]		= (682, 965, 354);
	strikePositions[14]		= (501, 1423, 396);
	strikePositions[15]		= (2851, 2707, 144);
	strikePositions[16]		= (-2113, 820, 166);
	strikePositions[17]		= (-1826, -417, 634);
	strikePositions[18]		= (1197, 1403, 220);
	strikePositions[19]		= (1150, -35, 212);
	
	for( i = 0; i < strikePositions.size; i++ )
	{
		flag[i] = spawn( "script_model", ( 0, 0, 0 ) );
		flag[i] setModel("prop_flag_neutral");
		flag[i].origin = strikePositions[i];
		
		for( x = 0; x < flag[i].size; x++)
		{
			trigger[x] = spawn("trigger_radius", flag[i].origin, 0, 32, 32 );
		
			for(;;)
			{
				trigger[x] waittill("trigger", player );
			
				player iPrintLnBold("You have collected a flag.");
				break;
		
			}
		}
	}
}
		

User avatar
waywaaaard
Core Staff
Core Staff
Posts: 2214
Joined: February 6th, 2006, 3:18 pm
Location: Germany/Bayern

Re: Trigger & Models

Post by waywaaaard » March 21st, 2011, 8:33 pm

Well there are some problems with your script. You need to think about what you want to do.

1. Spawn the model
2. Spawn the trigger
3. Start a new thread with the trigger to detect user interaction
THAT HANDS WERE NOT TRACED!
visit my blog: Link
Soviet wrote:Yeah, watch out, Peds will hit you with his +5 D-Battleaxe of homosexuality :roll:

User avatar
waywaaaard
Core Staff
Core Staff
Posts: 2214
Joined: February 6th, 2006, 3:18 pm
Location: Germany/Bayern

Re: Trigger & Models

Post by waywaaaard » March 21st, 2011, 8:38 pm

here try this but you maybe should adjust the radius of the trigger according to the sizes of the props.

Code: Select all

flagPositions()
{
   strikePositions       = [];   
   strikePositions[0]      = (110, -1132, 370);
   strikePositions[1]      = (716, -1320, 524);
   strikePositions[2]      = (1259, -636, 532);
   strikePositions[3]      = (1005, 274, 624);
   strikePositions[4]      = (1839, 730, 516);
   strikePositions[5]       = (1446, 1516, 636);
   strikePositions[6]      = (24, 548, 464);
   strikePositions[7]      = (-643, 795, 704);
   strikePositions[8]      = (270, -2016, 341);
   strikePositions[9]      = (-1054, -1687, 438);
   strikePositions[10]       = (-805, -715, 516);
   strikePositions[11]      = (-445, 1344, 283);
   strikePositions[12]      = (895, 160, 256);
   strikePositions[13]      = (682, 965, 354);
   strikePositions[14]      = (501, 1423, 396);
   strikePositions[15]      = (2851, 2707, 144);
   strikePositions[16]      = (-2113, 820, 166);
   strikePositions[17]      = (-1826, -417, 634);
   strikePositions[18]      = (1197, 1403, 220);
   strikePositions[19]      = (1150, -35, 212);
   
   for( i = 0; i < strikePositions.size; i++ )
   {
      flag[i] = spawn( "script_model", ( 0, 0, 0 ) );
      flag[i] setModel("prop_flag_neutral");
      flag[i].origin = strikePositions[i];
      
	  trigger[x] = spawn("trigger_radius", flag[i].origin, 0, 32, 32 );
	  trigger[x] thread collect_flag();
   }
}

collect_flag()
{
	
	for(;;)
	{
		self waittill("trigger", player)
		
		if(!IsDefined(player.flags))
			player.flags = 1;
		else
			player.flags++;
		
		player iPrintLnBold("You have collected a flag.\nYou have now " + player.flags + " collected.");
		wait 0.5;
	}
}
THAT HANDS WERE NOT TRACED!
visit my blog: Link
Soviet wrote:Yeah, watch out, Peds will hit you with his +5 D-Battleaxe of homosexuality :roll:

megazor
CJ Worshipper
CJ Worshipper
Posts: 414
Joined: July 22nd, 2009, 3:02 am
Location: Russia, Vladivostok

Re: Trigger & Models

Post by megazor » March 22nd, 2011, 4:06 pm

ignore that post, use mine :)

Code: Select all

flagPositions()
{
   	strikePositions       = [];   
   	strikePositions[0]      = (110, -1132, 370);
   	strikePositions[1]      = (716, -1320, 524);
  	strikePositions[2]      = (1259, -636, 532);
   	strikePositions[3]      = (1005, 274, 624);
   	strikePositions[4]      = (1839, 730, 516);
   	strikePositions[5]       = (1446, 1516, 636);
   	strikePositions[6]      = (24, 548, 464);
   	strikePositions[7]      = (-643, 795, 704);
   	strikePositions[8]      = (270, -2016, 341);
   	strikePositions[9]      = (-1054, -1687, 438);
   	strikePositions[10]       = (-805, -715, 516);
   	strikePositions[11]      = (-445, 1344, 283);
   	strikePositions[12]      = (895, 160, 256);
   	strikePositions[13]      = (682, 965, 354);
   	strikePositions[14]      = (501, 1423, 396);
   	strikePositions[15]      = (2851, 2707, 144);
   	strikePositions[16]      = (-2113, 820, 166);
   	strikePositions[17]      = (-1826, -417, 634);
   	strikePositions[18]      = (1197, 1403, 220);
  	strikePositions[19]      = (1150, -35, 212);
   
   	for( i = 0; i < strikePositions.size; i++ )
   	{
      		flag = spawn( "script_model", strikePositions[i] );
     		flag setModel("prop_flag_neutral");

     		trigger = spawn("trigger_radius", flag.origin, 0, 32, 32 );
     		trigger thread collect_flag(i);
   	}
}

collect_flag(number)
{ 
   	for(;;)
   	{
      		self waittill("trigger", player);

		if (!isDefined(player.flags_collected))
			player.flags_collected = [];

		if (!isDefined(player.flags_collected[number]))
		{	
      			if(!isDefined(player.flags))
         				player.flags = 1;
      			else
         				player.flags++;
      
      			player iPrintLnBold("You have collected a flag. You have now " + player.flags + " collected.");

			player.flags_collected[number] = 1;
		}
   	}
}

User avatar
Opel
CJ Fan
CJ Fan
Posts: 188
Joined: September 15th, 2008, 12:28 pm
Location: Scotland

Re: Trigger & Models

Post by Opel » March 22nd, 2011, 5:51 pm

Thanks for the help, works great now.

Post Reply

Who is online

Users browsing this forum: No registered users and 20 guests