Jump to content

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


Recommended Posts

You need a small sector with F_SKY1 and normal height around it, like this:



If my knowledge of software mode is correct, that will technically cause a HOM, but the HOM will contain only the sky, so it will be exactly what you want.

That sector in the middle with F_SKY1 can be as small as 1 unit, but it must be there and both the floor and the ceiling must be visible at all times.

Share this post


Link to post
Albertoni said:

You need a small sector with F_SKY1 and normal height around it, like this:

http://i.imgur.com/hrB5xgR.png

If my knowledge of software mode is correct, that will technically cause a HOM, but the HOM will contain only the sky, so it will be exactly what you want.

That sector in the middle with F_SKY1 can be as small as 1 unit, but it must be there and both the floor and the ceiling must be visible at all times.

Your method worked perfectly. I`ll change ceiling textures a bit later,when I don't feel so tired. Thanks a lot.

Spoiler

Share this post


Link to post

And I was just writing up the same thing heh.
I was going to say to add a transparent texture also however, but I'm not sure if that would have worked out.

Cheers

Share this post


Link to post
Albertoni said:

If my knowledge of software mode is correct, that will technically cause a HOM, but the HOM will contain only the sky, so it will be exactly what you want.

No, it's the sky hack, not a HOM. A HOM is when nothing is drawn, so whatever was drawn in the previous frame is kept; typically some pixels from nearby elements but sometimes you can get transient objects (like a fireball) leaving a trace, or even parts of the menu. In ZDoom with the menu dim effect (background is tinted with a color, yellow by default in Doom games, to give greater contrast to menu items) they end up becoming solid yellow blocks as during every frame the area of the HOM gets made more yellower without ever being redrawn from scratch, accumulating the dimming effect until becoming a solid block of coior.

Share this post


Link to post

It`s me again with another editing question. Which linedef actions lets me lower platforms and floors only pressing "use" in boom format without making any switch. For the newbish reasons I can`t get them work,flipping lines sometimes lowers parts that shouldn`t be lowered in game. I don`t remember if tags can help solve this random problem.

Share this post


Link to post
MysteriousHaruko said:

It`s me again with another editing question. Which linedef actions lets me lower platforms and floors only pressing "use" in boom format without making any switch. For the newbish reasons I can`t get them work,flipping lines sometimes lowers parts that shouldn`t be lowered in game. I don`t remember if tags can help solve this random problem.

There are four kinds of linedef trigger: Switch (S), Push (P a.k.a. Door, D), Walk (W), and Gun (G). It sounds like you want the "Push" type, which operates on the sector referred to by the linedef's rear sidedef. The other three types operate on all the sectors whose tag matches the linedef's tag.

To get Push on anything other than doors, I think you have to use the Generalized linedef system.

Share this post


Link to post

@MysteriousHaruko

You're probably wanting to have the lift move when the player presses use?
For this use action 62 SR lift lower wait raise.
It should be the same for both doom and boom.

SW = switch repeatable.
It is a switch, just don't apply a switch texture.
Usually a lift has a basic support texture.

Depending on which way the linedef is facing, you might need to flip the linedef so it is facing the player, for example where the center line of the linedef is facing outward towards the player.

Make sure to give the linedef and sector (which it's no doubt attached to) the same tag number.

Share this post


Link to post

I've looked everywhere and can't find any tutorial that explains how to save/export your map wads with all the custom textures. What am I supposed to be doing?

Share this post


Link to post

@Spocks_Beard, it sounds like you'll need to add the textures to your map?
Use something like Slade or XWE.

Make a backup of your map before doing things like this of course.

Either that or include the texture wad or a link to it, if you use a separate texture resource wad while creating your map?

And above all give credit where credit is do! :)

------------------

@DMGUYDZ64,
hmm, Iv never tried this at home but, you might be better off adding user input key binding instead of removing them. I'm guessing it would be something like:

addmenukey "noturn1" PlayerControl
alias PlayerControl "pukename "PlayerStatus_noturn""
defaultbind X PlayerControl
Otherwise, you'd never know what key bindings a player might have so it would be better to add them specifically for what you plan to do.


Good luck

Share this post


Link to post
DMGUYDZ64 said:

What i'm looking for is some kind of script that stores player current angle and applies it on player :/.


Like to record the facing angle of a player, then when called upon rotate the player to face said angle, more or less?

Share this post


Link to post
Spocks_Beard said:

I've looked everywhere and can't find any tutorial that explains how to save/export your map wads with all the custom textures. What am I supposed to be doing?

How exactly are you using the custom textures?

If you have integrated them into your pwad, then you could try Slade3's Maintence feature



If you use an addon texture pack, then you could either copy all textures into your pwad and then use the above process, or load the pwad into Deepsea and have it create a list of all used textures and flats and then add the custom textures/flats manually

Share this post


Link to post
DMGUYDZ64 said:

What i'm looking for is some kind of script that stores player current angle and applies it on player :/.

Make a map scope variable, one script to call GetActorAngle and store the result into this variable, and another script to call SetActorAngle with this variable as a parameter. Whenever the second script will be executed, it will set the angle to the value that was stored the last time when the first script was executed.

Share this post


Link to post

@DMGUYDZ64

Script 1 ENTER {
	// This assigns the player with a unique TID upon entering the map
	Thing_ChangeTID(0, 1000 + PlayerNumber()); 
}



int actorForcedAngle;

script 2 (void) {
    // Take note of the activating player's Angle
    actorForcedAngle = GetActorAngle(1000 + PlayerNumber());
    
    // Use a while loop to check if a condition has been met, this part's up to you based on your map.
    while(scriptActive == 1) {
    	SetActorAngle(1000 + PlayerNumber(), actorForcedAngle);
    	Delay(1);
    }
}

Above is an untested ACS solution for you. I have commented what everything does for your learning benefit.

Share this post


Link to post

@scifista42 : Thanks, haven't dealt with Map scopes very much, should learn more about those, ZDoom wiki probably got some infos.
@Dragonfly : Great, all I have to do is call a script to change actorforcedangle to 1, Thank you :).

Share this post


Link to post
Dragonfly said:

@DMGUYDZ64

int playerID;

script 1 ENTER {
	// This assigns the player with a unique TID upon entering the map
	playerID = UniqueTID();
	//playerID[PlayerNumber()] = UniqueTID(); // You'd need to use something like this to support multiplayer.
	Thing_ChangeTID(0, playerID); 
}



int actorForcedAngle;

script 2 (void) {
    // Take note of the activating player's Angle
    actorForcedAngle = GetActorAngle(playerID);
    
    // Use a while loop to check if a condition has been met, this part's up to you based on your map.
    while(scriptActive == 1) {
    	SetActorAngle(playerID, actorForcedAngle);
    	Delay(1);
    }
}


This modified version fixes a potential bug in case some gameplay mod decides to add more than 1000 thing IDs before the player enters the map. The ENTER function also has a small example of how to convert things to an array in case the map is intended for coop.

Share this post


Link to post

Oh I see I misunderstood.
Sorry about that, for some reason I was thinking that you wanted the player to not have any control for a given time.

Its been awhile since I've done any sort of scripting like this since that quake3 remake map I did years ago with all the jump pads.
That particular map you had control after being thrusted however.

Share this post


Link to post
scifista42 said:

Make the second parameter lesser or equal 30, or set the third parameter to 1.

Oh I see, thanks, that solves alot of problems.

Share this post


Link to post
Albertoni said:

This modified version fixes a potential bug in case some gameplay mod decides to add more than 1000 thing IDs before the player enters the map. The ENTER function also has a small example of how to convert things to an array in case the map is intended for coop.


Albertoni, thanks for the lesson! I wasn't aware of the UniqueTID function, and (through lack of need) I've never made arrays in that way, but it's impressive :)

Share this post


Link to post

I love this thread, I've read it halfway already and it's helpful, but I'm stumped so here's a pile of unanswered things, sorry.

GZDB throws an error about a missing semicolon in line 5 ["script 1 (void)"] when I try to compile my first code, which is supposed to make a down-stay/up-stay lift activated by buttons around the level. What's wrong here?

Spoiler

#include "zcommon.acs"

int BigLift = 0

script 1 (void)
{
if(BigLift == 0)
{
print(s:"This lift is under construction!");
Floor_LowerByValue (4, 4, 232);
Delay (116);
int BigLift = 1;
}
else
{
print(s:"What? Is it working?");
Floor_RaiseByValue (4, 4, 232);
Delay (116);
int BigLift = 0;
}
}

After the players go down the lift and into the next area, I'm going to send the lift back up, spawn hellspawn on it and Thing_Hate on them, and send it back down to flank them, which I hope will be surprisingly outside their knowledge of the lift's abilities, and should allow them time and warning to make strategic adjustments. I think I want to make more heavily scripted events too, but I've read ACS tutorials and found them too brief and general for my experience. Is there a long ACS tutorial or guide anywhere that I missed? A slow beginner's guide to ACS? And will the delays prevent the lift from breaking as we spam it with scripts and switch uses? I'm hoping that the delay function stops the script in its tracks and makes it ignore other things that try to call it while it's procrastinating, but I'm very new to all this. Just let me know if I ramble across anything I'm dead wrong about or if my compiler needs troubleshooting.

I can't find a lot of resources I want, especially ambient sound effects like crickets and creeks or even machine noises, and night skies. Is it alright if I make sound packs from freesound.org CC0-type licensed sounds, get them properly Doomified, and upload them to the Doom repositories with proper accreditation? It seems like it would be easy to bulk up mappers' resources like this, so if I'm not missing anything about that situation, then can I pick anything up for anyone while I'm there? And does anyone want to help lazily play with such a sound project over the next few months, maybe trade ideas and playtest the sounds?

Lastly, since all this stuff is going to take me a long time, can I map for Zandronum 3.0? I'd like to use vertex slopes since it's one of the few things I feel I'm already versatile with. And why does GZDoom Builder ask me if I want to use Zandronum ACS format or GZDoom ACS format, what's the difference?

Share this post


Link to post
Lz_erk said:

I love this thread, I've read it halfway already and it's helpful, but I'm stumped so here's a pile of unanswered things, sorry.

GZDB throws an error about a missing semicolon in line 5 ["script 1 (void)"] when I try to compile my first code, which is supposed to make a down-stay/up-stay lift activated by buttons around the level. What's wrong here?


It's very simple: you are missing a semicolon. And it reports the error on line 5 because that's where it notices that a semicolon should have been there somewhere; but it's actually missing earlier. On line 3:

#include "zcommon.acs"

int BigLift = 0

Whitespace has no special value so technically this would be correct:
#include "zcommon.acs"

int BigLift = 0












;
That's why it doesn't notice that the semicolon is missing from line 3, and only notice the problem when it arrives at line 5 and a script declaration starts. When you have an error message about a problem on line X, and you don't see anything wrong with line X, you should always check the previous lines because it's often actually an error carried over from a previous line.

Share this post


Link to post
Lz_erk said:

Lastly, since all this stuff is going to take me a long time, can I map for Zandronum 3.0? I'd like to use vertex slopes since it's one of the few things I feel I'm already versatile with.


Vortex slopes are probably one of my favourite new-school features for sure. Now, I will be one of the few to say 'yes, go ahead and use Zandronum 3.0 beta' but beware that is may never get released or changes may be made to it. I released Skulldash for Zandronum 3 all the way back in 2015 - it's still not been marked as a stable build yet, so I wouldn't hold your breath for a release. To combat that issue I packaged the Zandronum Build I felt was most applicable as an optional alternative download on my website. :)

Share this post


Link to post

It works! It looks so simple now that I'm figuring out the syntax, and it makes a good sturdy lift! Thanks for the help!

Spoiler

#include "zcommon.acs"

int BigLift = 0;

script 1 (void)
{
if(BigLift == 0)
{
Floor_LowerByValue (4, 4, 232);
Delay (500);
BigLift = 1;
}
else
{
Floor_RaiseByValue (4, 4, 232);
Delay (500);
BigLift = 0;
}
}

Edit: Dragonfly, thanks for the advice, that sounds good. I'll use 3.0 features sparingly during design and then do compatibility stuff after.

Another overexcited edit: I'll answer my own question now about the "slow beginner's guide to ACS". This link was in my notes all along and I forgot to revisit it.

https://zdoom.org/wiki/ACS

Also to anyone else looking to get into ACS, Xaser's stuff has some very readable scripts [Dead.Air has been helpful]. And I must remember to look at ZPack too.

Share this post


Link to post

Is it possible to design a wall that the player can see through, but not shoot, while creatures cannot get through, but can shoot and see the player through? I want to build a map around a puzzle idea involving this.

If it helps, think of a turret behind an invisible wall where you can see it, but only it can shoot you.

Share this post


Link to post

Yes is possible, just give the wall action: translucent line and enable block players,monsters, floating monsters and impassable.

Share this post


Link to post

Mr. Trotl I think you misunderstood the request - They want the walls to be one-way, so the monsters CAN SHOOT through, but the players CANNOT SHOOT through.

For this, you will likely need the UDMF format, and to set the linedef flags to block hitscan weapons, but allow projectiles. Then, ensure all monsters you use are projectile based such as the imp and do not give the player the rocket launcher, plasma rifle, or BFG9000.

EDIT: Another solution is to use ACS to make the monster(s) in these areas invulnerable:

Script 1 (void) {
    SetActorProperty(1, APROP_Invulnerable, 1);
}

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