Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
baja blast rd.

*** The "ask a miscellaneous editing question" thread ***

Recommended Posts

illuknisaa said:

I have a sector with fog and the non-fog sector (with higher brightness) and it shows up as near pitch black.


Fog can be done in various ways.
How exactly did you construct the sectors?
A map would be helpful.

Share this post


Link to post

I've got a Boom compatible wad with two maps, and I made custom intermission map names as images, which are currently in .bmp format and work fine in Zandronum. However, they crash in GLBoom+ with an "unknown patch format". I tried converting them to Doom format in SLADE but then the map intermission text disappeared. How do I go about making those images in the proper format? CWILV00 etc.

Share this post


Link to post

Just convert them to Graphic(Doom) format and make sure that their x/y offsets are reasonable as to not make the graphics display offscreen.

Share this post


Link to post

Got it working, thanks! The image height was the issue.

'Nother question though. If I use textures from something like the cc4 pack, how would I go about including the ones I used as part of my wad without needing the player to load the pack? Preferably in a way that doesn't include manually searching through what I used and then dragging them in my wad.

Share this post


Link to post
rileymartin said:

Got it working, thanks! The image height was the issue.

'Nother question though. If I use textures from something like the cc4 pack, how would I go about including the ones I used as part of my wad without needing the player to load the pack? Preferably in a way that doesn't include manually searching through what I used and then dragging them in my wad.


Copy/paste textures and flats into your pwad.
Then let Slade3 handle the unused items



Then, if necessary as with DOOM2 format, rebuild TEXTURE1 and PNAMES

http://slade.mancubus.net/index.php?page=wiki&wikipage=How-to-Import-Textures

Share this post


Link to post
rileymartin said:

Got it working, thanks! The image height was the issue.

'Nother question though. If I use textures from something like the cc4 pack, how would I go about including the ones I used as part of my wad without needing the player to load the pack? Preferably in a way that doesn't include manually searching through what I used and then dragging them in my wad.


You can do it in SLADE3.

Copy-paste CC4-Tex into your wad. Go to Archive -> Maintenance. Remove unused textures, then flats, then patches. (Make sure patches are last.) Then the rebuilding stuff mentioned in that tutorial.

Also remember that saving in one program will not update the wad in the other program, so after you do all that SLADE stuff, don't start making changes in GZDB again until you've closed the wad and then loaded it.

Share this post


Link to post

I'm back with another question / issue.

Since I'm making a 2D platform game, it has been rather difficult to figure out an effective control-system for the player. I've seen modders use inventory items in order to determine which direction the player's actor should face (left or right), but these all seem a little hacky to me, so I thought of a way to simplify this.

This is my idea: http://imgur.com/a/qWsit

It's pretty straight-forward, but the key difference is that the player is always facing north. This way, the controls are always going to be left strafe and right strafe, which is of course how a 2D platform-game should be controlled.

One little issue I see with this however, is the player's weapon placement. The player's action should take place at the side he's currently facing (which should is to the right by default). I'm not too familiar with DECORATE yet, but is there a way to edit this so that the action takes place at the correct side?

I'm not 100% sure of this method yet. If somebody has a more efficient idea of handling player movement, please let me know! I would be very grateful.

Share this post


Link to post

Assuming you're going to redefine the player's weapons in DECORATE, you can use the parameters "spread_horz" in A_FireBullets and "angle" in FireCustomMissile to make the weapons fire to the side.

If you want to be able to fire into both left and right sides, make each weapon have 2 fire states, one for firing to the right and one for firing to the left, and use A_JumpIf to make the weapon jump to the correst fire state, depending on "some condition" that you will probably need to implement as a DECORATE expression.

Share this post


Link to post
scifista42 said:

Assuming you're going to redefine the player's weapons in DECORATE, you can use the parameters "spread_horz" in A_FireBullets and "angle" in FireCustomMissile to make the weapons fire to the side.

If you want to be able to fire into both left and right sides, make each weapon have 2 fire states, one for firing to the right and one for firing to the left, and use A_JumpIf to make the weapon jump to the correst fire state, depending on "some condition" that you will probably need to implement as a DECORATE expression.


Oh, it's great to know there's a DECORATE expression for this! Thanks.

Do you personally think this is an elegant system for handling 2D platforming? I'm always open for different and possibly more efficient ideas.

Share this post


Link to post
scifista42 said:

What you're doing seems more than OK to me. :)


Okay, I'll roll with it then!

Does anybody happen to know any good tutorials on how to use DECORATE for creating a player?

I'm currently using this code in DECORATE (written by myself, no copy-pasting):

actor PlayerActor : PlayerPawn
{
	Speed 1
	Health 100
	Radius 16
	Height 56
	Mass 100
	Player.DisplayName "Eric"
	states
	{
		PROT A 5
		PROT B 5
		PROT C 5
		PROT D 5
		loop
	}
}
I have four sprites saved as PNG (named PROTA, PROTB, PROTC and PROTD), which are just zombie-man sprites I'm trying to use as a placeholder. They are located in the Sprites/Player folder of my PK3. I don't know how I can specify the location of the sprites, and my player actor is still invisible when I start the game.

I'm still quite new when it comes to DECORATE, so I appreciate any help I can get!

Share this post


Link to post
Agentbromsnor said:

Does anybody happen to know any good tutorials on how to use DECORATE for creating a player?

Creating new player classes

Agentbromsnor said:

actor PlayerActor : PlayerPawn
{
	states
	{
		PROT A 5
		PROT B 5
		PROT C 5
		PROT D 5
		loop
	}
}

There needs to be a label, for example "See:" within the States block, otherwise these new states won't be part of any animation.

Agentbromsnor said:

I have four sprites saved as PNG (named PROTA, PROTB, PROTC and PROTD),

They need rotation numbers in their filenames. See Sprite#Image_names, Sprite#Angles and Creating new sprite graphics

Share this post


Link to post

I already looked into the "Creating new player classes" wiki page, but it didn't give me a whole lot to go off on in terms of sprites.

EDIT: Disregard this I'm an idiot. Thanks for the help! :D

Share this post


Link to post
illuknisaa said:

http://imgur.com/a/ZFexP

Previous image is taken where the mouse is (upper left corner) looking at right.
Fog is made by setting sectors' fade to 080808 (only sectors with dark blue hue have fog).

Try changing Fog Mode in your GZDoom's OpenGL preferences.

Share this post


Link to post

So... I was looking at this: http://zdoom.org/wiki/Creating_new_sprite_graphics

I'm trying to find out how I can create a walk-cycle for walking left and right (strafe), as well as idle animations for when the player's standing still.
Does anyone happen to know of any DECORATE resources that go over this? I cannot seem to find them, but I'm probably looking in the wrong place.

Share this post


Link to post

There is no predefined "strafe" state that would automatically get selected when the player strafes, so you'll have to implement the mechanism of selecting the state yourself. This would normally be very hard, but since you have the player locked on x axis, therefore he only moves on the y axis, so you can make use the "vely" DECORATE variable in an "A_JumpIf" statement like:

See:
TNT1 A 0 A_JumpIf(vely<0,"MovingLeft")
(here will be animation states of the player moving right)
goto See
MovingLeft:
(here will be animation states of the player moving left)
goto See

Share this post


Link to post

I've been completely roadblocked in making a random actor spawner.
My theoretical thought process for this is:
1. Actor spawns in and transfers to a perpetual "See" state.
2. Every number of tics, it checks the distance from it to the player.
3. If it is closer than 512 units, it proceeds to another state
4. This state checks if the player is closer than 256 units; the intended minimum distance. If so, it skips backs to "See"
5. If the player is out of 256 units, it then checks for LOS (there is supposed to be none). If it does encounter LOS, it again skips back to "See"
6. If none of these abort commands are met, then the actor should spawn another actor. In this case, a dummy actor for debug purposes.

But I'm completely unable to do this. The actor will go to its see state, but not jump when the player is in range.

actor AmbientDaemon 16001
{	
	-SOLID
	-Shootable
	-NoPain
	-NoBlood
	+LOOKALLAROUND
	+Float
	radius 16
	height 40
	States
	{
		Spawn:
			EGGY A 1 Thing_Hate(0, 0, 0)
			EGGY A 1 A_NoBlocking
			EGGY A 5
			Goto See
		See:
			EGGY A 1
			EGGY A 1 A_JumpifCloser(512, "Check") // Checks if the player is within 512
			//  Ignore me // EGGY A 5 A_JumpifInTargetLOS("Daemon", 0, JLOSF_DEADNOJUMP | JLOSF_CLOSENOJUMP | JLOSF_NOSIGHT, 512, 256) //
			Loop
		Check:
			EGGY A 1 
			EGGY A 1 A_SpawnItem("Xenohunter", 0, 1, 0) // Debug script to check if line 19 was triggered
			EGGY A 1 A_JumpifCloser(256, "See") //Aborts if player is in the minimum range, 256
			EGGY A 1 A_JumpIfInTargetLOS("See", 0, JLOSF_DEADNOJUMP, 512) // Aborts if player is in eyeshot
			goto Spawner
		Spawner:
			EGGY A 1 A_SpawnItem("Facehugger", 0, 1, 0) // Debug script to check if lines 25 and 26 were NOT triggered.
			EGGY A 400
			Goto see
		Pain:
			EGGY A 1 A_Pain
			Goto Spawn
		Death:
			TNT1 A 0 A_SpawnItemEx("XenSplatter",random(-16,16),random(-16,16),random(-16,16),random(0,0.1),random(0,0.1),random(-1,1),random(0,359))
			TNT1 A 0 A_SpawnItemEx("XenSplatter",random(-16,16),random(-16,16),random(-16,16),random(0,0.1),random(0,0.1),random(-1,1),random(0,359))
			TNT1 A 0 A_SpawnItemEx("XenSplatter",random(-16,16),random(-16,16),random(-16,16),random(0,0.1),random(0,0.1),random(-1,1),random(0,359))
			TNT1 A 0 A_SpawnItemEx("XenSplatter",random(-16,16),random(-16,16),random(-16,16),random(0,0.1),random(0,0.1),random(-1,1),random(0,359))
			TNT1 A 0 A_Scream
			EGGD ABC 6 A_NoBlocking
			EGGD C -1
			Stop
	}
}
Fruitless in debugging it, I turned to ACS, but I can't even get a simple distance script to work.
script "DistanceChecker" (void)
{
	int selfx = GetActorX(0);
	int selfy = GetActorY(0);
	int selfz = GetActorZ(0);
	int plaX = GetActorX(AAPTR_PLAYER1);
	int plaY = GetActorY(AAPTR_PLAYER1);
	int plaZ = GetActorZ(AAPTR_PLAYER1);
	int distance = sqrt((selfx - plax)^2 + (selfy - play)^2 + (selfz - plaZ)^2);
	Log(i:"distance");
}
Always outputs a log of "0" when called by the spawner.

What way would be the best means of accomplishing my task, and how would I go about overcoming its respective roadblock?

Share this post


Link to post
scifista42 said:

There is no predefined "strafe" state that would automatically get selected when the player strafes, so you'll have to implement the mechanism of selecting the state yourself. This would normally be very hard, but since you have the player locked on x axis, therefore he only moves on the y axis, so you can make use the "vely" DECORATE variable in an "A_JumpIf" statement like:

See:
TNT1 A 0 A_JumpIf(vely<0,"MovingLeft")
(here will be animation states of the player moving right)
goto See
MovingLeft:
(here will be animation states of the player moving left)
goto See


The player will only move along the X axis, since he is locked down on it. When I said the player is "locked down" on the X axis, I meant that he cannot move in the Y direction. Sorry about the confusion!

I take it the principle is still the same though? :O

Share this post


Link to post
Burktross said:

The actor will go to its see state, but not jump when the player is in range.

Firstly, the very first tic that an actor executes right after being spawned, never executes its action even if it has one, therefore "Thing_Hate(0,0,0)" doesn't get called. Secondly, both the first "0" and the second "0" refer to the actor itself (who is the activator), not to the player. So it would not make the actor target the player even if it was called - unless you gave a specific TID to the player (in an ENTER script) and used that TID in this Thing_Hate.

Burktross said:

I can't even get a simple distance script to work.

	int plaX = GetActorX(AAPTR_PLAYER1);
	int plaY = GetActorY(AAPTR_PLAYER1);
	int plaZ = GetActorZ(AAPTR_PLAYER1);
Always outputs a log of "0" when called by the spawner.

That's because AAPTR_PLAYER1 is not player1's TID, it's a pointer. GetActorX doesn't accept pointers, just TIDs. Either give a specific TID to the player in an ENTER script, or use "SetActivator" with "AAPTR_PLAYER1" as the second parameter and only then use "GetActorX(0)" to get the player's coordinate (after you've already got the actor's coordinates).

Agentbromsnor said:

I take it the principle is still the same though? :O

Of course it is the same, you'll just use "velx" instead of "vely". :)

Share this post


Link to post

I'm working on a pistol replacement mod that makes it a little bit stronger but it keeps gibbing the zombie man and the shotgun guys. Is there a way to prevent an attack from gibbing?

Share this post


Link to post

Can I make a silent teleport line that only works for Doomguy and not monsters without making it a monster blocking line? Also, there's an amusing situation happening. I have a move things river + waterfall that carries the player and a Cyberdemon in front of him as a sort of "cinematic" opening where the Cyber teleports away before reaching the falls. There's also a "Pile of skulls and candles" thing carried by the river behind the Cyber. Now, if the player manages to alert the Cyber, the pile of stuff can cross the W1 monster line and teleports instead of the Cyber. First of all, why is triggering a monster teleport? I fixed the issue by making a gap in the teleport line narrow enough for the pile of crap to float past and teleport the Cyber, but what if I want to have a bunch of floating junk and not have it teleport?

Share this post


Link to post
rileymartin said:

Can I make a silent teleport line that only works for Doomguy and not monsters without making it a monster blocking line?


I'm not sure why there is an "also monsters" silent teleport line if the other one warps monsters too.

Share this post


Link to post

I think he wants to make a teleporter that only works for the player and not monsters but the associated line doesn't block monsters.

I can think of one way to do it, but it only functions one time: Monsters can't telefrag one another except on MAP30, so place a deaf lost soul on the teleport destination and the player will just telefrag it when he goes there. If the lost soul would be somewhere where it could potentially see the player you can offset it a bit from the spot of the teleport destination and lower it into an illusio-pit to disallow it from seeing the player. If you need it to be multiple use but retain player only teleporting, you probably would need to switch to UDMF and make the line only usable by the player.

Share this post


Link to post
Uni said:

I'm working on a pistol replacement mod that makes it a little bit stronger but it keeps gibbing the zombie man and the shotgun guys. Is there a way to prevent an attack from gibbing?

Change the pistol's bullet puff to a custom one with +NOEXTREMEDEATH flag set on it.

Share this post


Link to post
scifista42 said:

Change the pistol's bullet puff to a custom one with +NOEXTREMEDEATH flag set on it.


Thank you!

Share this post


Link to post
Rayzik said:

I can think of one way to do it, but it only functions one time: Monsters can't telefrag one another except on MAP30, so place a deaf lost soul on the teleport destination and the player will just telefrag it when he goes there.

I can think of another way to do it, that functions as many times as you want: Monsters have larger radii than the player, so place a decorative thing near the teleport destination, just far enough from it to not block the player, but close enough to block the monster, preventing it from teleporting there. The only monster which has a lesser-or-equal radius to the player is the Lost Soul, so this solution will not prevent Lost Souls from teleporting, unless you use a custom DEHACKED to increase their radius.

rileymartin said:

why is [Pile of skulls] triggering a monster teleport?

Because the so-called "monster-only" teleport action is actually "anything-other-than-the-player" teleport action.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×