Spawning spawn points...

Post your scripting questions / solutions here

Moderator: Moderators

Post Reply
Rookie One.pl
Site Admin
Posts: 2752
Joined: Fri Jan 31, 2003 7:49 pm
Location: Nowa Wies Tworoska, Poland
Contact:

Spawning spawn points...

Post by Rookie One.pl »

Hi,

Has anyone ever tried to spawn spawnpoints (info_player_whatevers) via script? I'm trying to force the allies to spawn at the mosque and the axis at the square:

Code: Select all

makeSpawnpoints:
   removeclass info_player_axis
   removeclass info_player_allied
   local.ent = spawn info_player_axis origin ( 848 -1120 40 ) angle 90
   local.ent = spawn info_player_axis origin ( 1400 -32 24 ) angle 180
   local.ent = spawn info_player_axis origin ( 192 1824 -136 ) angle 315
   local.ent = spawn info_player_axis origin ( 320 1784 -136 ) angle 270
   local.ent = spawn info_player_axis origin ( 464 1832 -136 ) angle 270
   local.ent = spawn info_player_axis origin ( 192 1672 -136 ) angle 0
   local.ent = spawn info_player_axis origin ( 400 1680 -136 ) angle 270
   local.ent = spawn info_player_axis origin ( 552 1632 -136 ) angle 225
   // 8 spawnpoints
   local.ent = spawn info_player_axis origin ( 568 1512 -136 ) angle 180
   local.ent = spawn info_player_axis origin ( 296 1552 -136 ) angle 315
   local.ent = spawn info_player_axis origin ( 1360 -96 24 ) angle 180
   local.ent = spawn info_player_axis origin ( 1384 -176 24 ) angle 180
   local.ent = spawn info_player_axis origin ( 1296 -160 24 ) angle 180
   local.ent = spawn info_player_axis origin ( 752 -1160 40 ) angle 180
   local.ent = spawn info_player_axis origin ( 1344 -1136 24 ) angle 90
   local.ent = spawn info_player_axis origin ( 1424 -1112 24 ) angle 135
   // 16 spawnpoints
   local.ent = spawn info_player_allied origin ( -2936 1632 284 ) angle 45
   local.ent = spawn info_player_allied origin ( -2944 3624 284 ) angle 270
   local.ent = spawn info_player_allied origin ( -3056 2440 64 ) angle 0
   local.ent = spawn info_player_allied origin ( -3064 2896 64 ) angle 315
   local.ent = spawn info_player_allied origin ( -2856 2512 64 ) angle 45
   local.ent = spawn info_player_allied origin ( -3032 2600 64 ) angle 315
   local.ent = spawn info_player_allied origin ( -2856 2872 64 ) angle 0
   local.ent = spawn info_player_allied origin ( -3088 2744 64 ) angle 0
   // 24 spawnpoints
   local.ent = spawn info_player_allied origin ( -2824 2640 64 ) angle 45
   local.ent = spawn info_player_allied origin ( -2824 2640 64 ) angle 315
   local.ent = spawn info_player_allied origin ( -2584 3624 284 ) angle 270
   local.ent = spawn info_player_allied origin ( -3296 3624 284 ) angle 270
   local.ent = spawn info_player_allied origin ( -3560 3296 276 ) angle 315
   local.ent = spawn info_player_allied origin ( -3512 3104 276 ) angle 0
   local.ent = spawn info_player_allied origin ( -3568 2752 276 ) angle 0
   local.ent = spawn info_player_allied origin ( -3304 2168 276 ) angle 45
   // 32 spawnpoints
end
And all I get is 16 lines of "unknown class info_player_axis" and 16 lines of "unknown class info_player_allied". And the original spawn points still work... :?
Admin
Image
Image
Honour guide me.

here's my stuff - inequation.org | here's where I work - thefarm51.com
User avatar
G3mInI
First Lieutenant
Posts: 187
Joined: Sat Jun 29, 2002 3:49 am

Post by G3mInI »

The reason you are getting the errors is from these two lines....
removeclass info_player_axis
removeclass info_player_allied

That is not the actual classname for player entities and I have already tried to block spawns with the removeclass command but it does not work. You must physically block spawn points with a model.

I will post code from my Southern France custom spawns. First you must block the original spawn points. I find using the wooden bucket is great becasue a player can walk right over it without having to jump or walk around. It will place little wooden buckets wherever there was an original spawn. I call these two threads before level waittill prespawn. First the block spawns thread and the new spawns thread.

Here is the code for southern france:

Code: Select all

block_original_spawns:

	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 976 -528 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 976 -592 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 896 -584 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 912 -96 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 912 -56 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 992 -48 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 992 -104 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1064 -552 256 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1104 -544 256 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1144 -552 256 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 976 184 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 784 792 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 816 792 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 848 792 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1104 672 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1128 640 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1176 672 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1672 912 222 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1234 1566 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1194 1566 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1178 1334 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 914 1334 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1450 2174 512 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1450 2214 512 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1506 2606 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1514 2678 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1514 2742 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1378 2710 672 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1354 2526 672 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 50 2958 256 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -262 1414 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -214 1430 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -286 1238 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1262 1862 104 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1206 1110 12 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1174 1062 12 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -702 350 -16 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -670 350 -16 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -646 310 328 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -806 374 328 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -774 374 328 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -214 1230 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -262 1230 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -326 1238 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 578 1574 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 610 1526 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -814 -394 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -846 -346 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -926 -290 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -926 94 96 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -966 102 96 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1262 -18 128 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1270 30 128 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1294 86 128 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1502 302 168 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1502 478 168 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1054 662 168 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1022 662 168 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -830 350 -16 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -862 350 -16 )
	
end

new_spawns:

	local.newspawnallied = spawn info_player_allied origin ( 848 2640 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 784 2640 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 880 2544 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 816 2544 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 752 2544 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 880 2448 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 816 2448 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 752 2448 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 848 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 784 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 720 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 656 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 592 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 528 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 464 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 400 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 336 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 272 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 208 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 144 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 80 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 16 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -48 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -112 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -176 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -240 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -304 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -368 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -432 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -496 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -560 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -624 2352 400 ) angle 270
	
	local.newspawnaxis = spawn info_player_axis origin ( 368 -416 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 304 -416 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 240 -416 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 176 -416 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 112 -416 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 976 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 912 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 848 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 784 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 720 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 656 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 592 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 528 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 464 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 400 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 336 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 272 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 208 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 144 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 80 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 16 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -48 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -112 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -176 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -240 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -304 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -368 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -432 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -496 -336 56 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -560 -336 56 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -624 -336 56 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -688 -336 56 ) angle 90

end

If you copied and pasted that into the southern france dm map (mohdm1.scr), it would have allies all spawn on one side of the map and axis all on the other. The reason I do 32 for each is because our server (Area51) is a 40 man server so I make sure to cover the possiblity of 32 players on one side.

Peace out,
G3mInI
*Area51*G3mInI****Gen

http://www.area51moh.com
Rookie One.pl
Site Admin
Posts: 2752
Joined: Fri Jan 31, 2003 7:49 pm
Location: Nowa Wies Tworoska, Poland
Contact:

Post by Rookie One.pl »

That's weird... Wouldn't result in an error or a player stuck in a bucket model? :? Anyway, I'm going to give it a try...
Admin
Image
Image
Honour guide me.

here's my stuff - inequation.org | here's where I work - thefarm51.com
Rindog
Corporal
Posts: 29
Joined: Wed Sep 24, 2003 6:34 pm

Post by Rindog »

Here's how I block spawns. They are invisible and the players can run right through them. I have a mod that's a MAM addon but it is useful without MAM. It's got a lot of the original spots for most of the stock maps for all three games.
http://rindog.com/index.php?module=get_dload&ID=8

Code: Select all

spawn_block_trigger local.origin:
  local.trig = spawn trigger_multiple
  local.trig.origin = local.origin
  local.trig setsize ( -4 -4 -4 ) ( 4 4 4 )
  local.trig wait 0.2
  local.trig delay 0.0
  local.trig setthread global/global_spawn.scr::spawn_block_trigger_thread
  local.trig.dummy = spawn fx/dummy.tik
  local.trig.dummy.origin = local.origin
  local.trig.dummy setsize ( -1 -1 -1 ) ( 1 1 1 )
  local.trig.dummy solid
end

spawn_block_trigger_thread:
  local.player = parm.other
  self.dummy notsolid
  while (local.player istouching self)
    {
      wait .1
    }
  wait 1
  self.dummy solid
end
User avatar
G3mInI
First Lieutenant
Posts: 187
Joined: Sat Jun 29, 2002 3:49 am

Post by G3mInI »

Well heck. I am definitely going to give this a whirl. I was trying to figure out how to do invisible blockers but just gave up on it. Guess I should have asked in here a year ago :)
I am assuming the global_spawn.scr is where all the coordinates reside for the stock map spawn points ?

Peace out,
G3mInI
*Area51*G3mInI****Gen

http://www.area51moh.com
Rookie One.pl
Site Admin
Posts: 2752
Joined: Fri Jan 31, 2003 7:49 pm
Location: Nowa Wies Tworoska, Poland
Contact:

Post by Rookie One.pl »

I guess global_spawn.scr is his own script... ;)

<EDIT>There's one thing which bothers me... The local.trig.dummy should be spawned BEFORE calling global/global_spawn.scr::spawn_block_trigger_thread or you may get a 'NIL listener' error if the forementioned thread is called fast enough. :P I think you should just move the line to the bottom of the thread:

Code: Select all

spawn_block_trigger local.origin:
  local.trig = spawn trigger_multiple
  local.trig.origin = local.origin
  local.trig setsize ( -4 -4 -4 ) ( 4 4 4 )
  local.trig wait 0.2
  local.trig delay 0.0
  local.trig.dummy = spawn fx/dummy.tik
  local.trig.dummy.origin = local.origin
  local.trig.dummy setsize ( -1 -1 -1 ) ( 1 1 1 )
  local.trig.dummy solid
  local.trig setthread global/global_spawn.scr::spawn_block_trigger_thread
end

spawn_block_trigger_thread:
  local.player = parm.other
  self.dummy notsolid
  while (local.player istouching self)
    {
      wait .1
    }
  wait 1
  self.dummy solid
end
This is a bit more reliable. ;)</EDIT>
Admin
Image
Image
Honour guide me.

here's my stuff - inequation.org | here's where I work - thefarm51.com
Rindog
Corporal
Posts: 29
Joined: Wed Sep 24, 2003 6:34 pm

Post by Rindog »

Good point on the "nil listener"! Never considered it. Never had a problem. But you are right, the potenial is there.

Actually, each map has a seperate file for the original spawns and ones that I have added. Download my mod and take a look at it. I just copied parts of it to show you my method.
Rookie One.pl
Site Admin
Posts: 2752
Joined: Fri Jan 31, 2003 7:49 pm
Location: Nowa Wies Tworoska, Poland
Contact:

Post by Rookie One.pl »

Thanks a lot, that'll save me a lot of work. ;) Permission to use it? :P
Admin
Image
Image
Honour guide me.

here's my stuff - inequation.org | here's where I work - thefarm51.com
Rindog
Corporal
Posts: 29
Joined: Wed Sep 24, 2003 6:34 pm

Post by Rindog »

If that was a question, then yes. My disclaimer in the mod lets you use it how you want. Credit would be nice, but I'm not really concerned with that either. It's a community mod and without the community, this mod might not have been possible.
Rookie One.pl
Site Admin
Posts: 2752
Joined: Fri Jan 31, 2003 7:49 pm
Location: Nowa Wies Tworoska, Poland
Contact:

Post by Rookie One.pl »

Thanks. ;)

Could you reply to my PM? Which models are for which team? :)
Admin
Image
Image
Honour guide me.

here's my stuff - inequation.org | here's where I work - thefarm51.com
Rindog
Corporal
Posts: 29
Joined: Wed Sep 24, 2003 6:34 pm

Post by Rindog »

Sorry, didn't see the PM. Yes the german_elite_officer is axis and russian_crazy_boris is allied, and the german_scientist represents ffa spawnspots.
Rookie One.pl
Site Admin
Posts: 2752
Joined: Fri Jan 31, 2003 7:49 pm
Location: Nowa Wies Tworoska, Poland
Contact:

Post by Rookie One.pl »

Rindog, have you made this for Spearhead? Because in Allied Assault it just doesn't work. :( I get loads of 'test' in console which is activated when I touch the spawn point, but there are some spawns where it isn't activated at all... I think I'll try spawning the wooden bucket and hiding it. ;)

<EDIT>Oh, hardfishingdammit, my bad!!! I moved the thread call before level waittill prespawn and now I have my own spawns!!! Thanks, Rindog!!! :D:D:D</EDIT>
Admin
Image
Image
Honour guide me.

here's my stuff - inequation.org | here's where I work - thefarm51.com
Post Reply