Override player's spawn point

Ask about ACS, DECORATE, ZScript, or any other scripting questions here!

Moderator: GZDoom Developers

Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.

Please bear in mind that the people helping you do not automatically know how much you know. You may be asked to upload your project file to look at. Don't be afraid to ask questions about what things mean, but also please be patient with the people trying to help you. (And helpers, please be patient with the person you're trying to help!)
Post Reply
User avatar
TDRR
Posts: 829
Joined: Sun Mar 11, 2018 4:15 pm
Location: Venezuela

Override player's spawn point

Post by TDRR »

Could it be somehow possible (With ZScript) to make the player spawn on some other thing number on map startup, avoiding use of Player starts or Deathmatch starts? Or placing player starts dynamically on the map?

If it helps, modifying internal ZScript files to achieve this is allowed. (The ones in gzdoom.pk3)

I'm trying to add CTF support to GZDoom, and i want to see if it's doable in ZScript to avoid editing the source code.
gramps
Posts: 300
Joined: Thu Oct 18, 2018 2:16 pm

Re: Override player's spawn point

Post by gramps »

I'm guessing LevelCompatibility will need more support for modifying Things in order for this to happen (something like the same level of support it has for modifying other level data). This is something that feels like it should happen anyway at some point; no reason Things shouldn't be invited to the LevelCompatibility party.
User avatar
TDRR
Posts: 829
Joined: Sun Mar 11, 2018 4:15 pm
Location: Venezuela

Re: Override player's spawn point

Post by TDRR »

gramps wrote:I'm guessing LevelCompatibility will need more support for modifying Things in order for this to happen (something like the same level of support it has for modifying other level data). This is something that feels like it should happen anyway at some point; no reason Things shouldn't be invited to the LevelCompatibility party.
Player starts aren't things per-se, but they are sort of markers for the game to know where to spawn the player. Even then i still thought there was at least some way to manipulate it with ZScript, apparently not. So that pretty much means that even if levelcompatibility did get thing adding support, it would be nigh useless in the context of adding/changing player starts.

And anyways such a thing doesn't have any use for me, GZD 4.x plays like trash on this laptop so i'm just stuck to QZDoom and LZDoom and GZD 3.x.

I'm still open for answers though, because right now i really don't want to mess with the source for this.
gramps
Posts: 300
Joined: Thu Oct 18, 2018 2:16 pm

Re: Override player's spawn point

Post by gramps »

They are "things" in the context of level data, they just aren't "actors."

Here's what a player start looks like in UDMF:

Code: Select all

thing//#0
{
x=-32.000;
y=32.000;
type=1;
coop=true;
dm=true;
single=true;
skill1=true;
skill2=true;
skill3=true;
skill4=true;
skill5=true;
}
LevelCompatibility should work fine for this if/when it gets Thing support, but I don't think there's much chance of doing anything with them anywhere else.
User avatar
Empyre
Posts: 68
Joined: Thu Apr 05, 2007 10:39 pm
Location: Garland, TX, USA

Re: Override player's spawn point

Post by Empyre »

If you want to play CTF in Doom, try Zandronum. Multiplayer is where Zandronum shines.
User avatar
Matt
Posts: 9696
Joined: Sun Jan 04, 2004 5:37 pm
Preferred Pronouns: They/Them
Operating System Version (Optional): Debian Bullseye
Location: Gotham City SAR, Wyld-Lands of the Lotus People, Dominionist PetroConfederacy of Saudi Canadia
Contact:

Re: Override player's spawn point

Post by Matt »

I had to hack around this with:

1. PlayerEntered and PlayerRespawned events that would check for the game mode and call SetOrigin on the playerpawn as necessary

2. Making the playerpawn have a null telefog and -TELESTOMP by default

3. Setting +TELESTOMP to true and spawning a telefog after the SetOrigin call in 1


If there's a proper way to actually set the starting spawn point I'd like to know.
User avatar
TDRR
Posts: 829
Joined: Sun Mar 11, 2018 4:15 pm
Location: Venezuela

Re: Override player's spawn point

Post by TDRR »

Empyre wrote:If you want to play CTF in Doom, try Zandronum. Multiplayer is where Zandronum shines.
Well, that's obvious, but if you don't know, Zandronum is not GPL-compliant, doesn't have ZScript and requires you to edit the source code to make modifications to CTF. So unfortunately it doesn't quite fit the bill in this case :(
Matt wrote:I had to hack around this with:

1. PlayerEntered and PlayerRespawned events that would check for the game mode and call SetOrigin on the playerpawn as necessary

2. Making the playerpawn have a null telefog and -TELESTOMP by default

3. Setting +TELESTOMP to true and spawning a telefog after the SetOrigin call in 1

If there's a proper way to actually set the starting spawn point I'd like to know.
Thanks for the advice Matt, but i have done just that a while ago. But it's so cumbersome having to manually place a room full of deathmatch starts to make it work. Maybe if i knew how to code i could make a DBX script, but even then i'm not sure if that would help much.
Post Reply

Return to “Scripting”