Jump to content
This Topic

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


Recommended Posts

  On 7/26/2016 at 7:57 PM, illuknisaa said:

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

Expand  


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
  On 7/28/2016 at 2:21 AM, 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.

Expand  


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
  On 7/28/2016 at 2:21 AM, 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.

Expand  


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
  On 7/30/2016 at 10:09 PM, 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.

Expand  


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
  On 7/30/2016 at 11:49 PM, scifista42 said:

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

Expand  


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
  On 7/31/2016 at 1:53 AM, Agentbromsnor said:

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

Expand  

Creating new player classes

  On 7/31/2016 at 1:53 AM, Agentbromsnor said:

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

Expand  

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

  On 7/31/2016 at 1:53 AM, Agentbromsnor said:

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

Expand  

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

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
  On 8/1/2016 at 1:19 AM, 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

Expand  


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
  On 8/1/2016 at 1:45 AM, Burktross said:

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

Expand  

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.

  On 8/1/2016 at 1:45 AM, 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.

Expand  

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).

  On 8/1/2016 at 2:50 AM, Agentbromsnor said:

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

Expand  

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
  On 8/1/2016 at 7:09 AM, rileymartin said:

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

Expand  


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
  On 8/1/2016 at 6:21 AM, 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?

Expand  

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

Share this post


Link to post
  On 8/1/2016 at 7:42 AM, 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.

Expand  

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.

  On 8/1/2016 at 7:09 AM, rileymartin said:

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

Expand  

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

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...