News | Forum | People | FAQ | Links | Search | Register | Log in
Mapping Help
This is the place to ask about mapping problems, techniques, and bug fixing, and pretty much anything else you want to do in the level editor.

For questions about coding, check out the Coding Help thread: https://www.celephais.net/board/view_thread.php?id=60097
First | Previous | Next | Last
Dynamic Light Maphack 
Is there a maphack I can do to turn on a dynamic light (much like the power-up glow or weapon flashing) attached to the player, that gets triggered during play and lasts until triggered again or until the end of the map?

I'm mapping for Quoth btw. I know there's a torch powerup available but I'd prefer a pool of light to a spotlight, and I don't want the player to be able to turn it off himself. 
Prog Hacks 
I found your site while searching for info, Preach. Read most of the map hacks articles. I especially liked sad story of info_notnull that thought it is a real shambler 8)
Great info, even though at least half of it is too advanced for me at the moment. Another thing that makes my life harder is editor behavior.
For example, I tried to recreate activated door from Dynamic Entity Spawning and it didn't work (as I described in 2nd question). Well technically it worked, but not in a way it supposed to - activator-button opened door and activated trigger ignored me.

Today I opened my test map and same setup works as it should without me changing anything.
Few other things happened.
All entities with info_notnull and InitTrigger classnames had their position and size reset. Remember I wrote about suspicious "-64 0 0" origin? Well, now it is correct since entity crawled to the center of the world over the night.

As for what I'm trying to accomplish, I had that weird idea of trigger_push that pushes player only while he is facing specific direction. Realized that movement and view direction both use 'angle'. Got confused and tried to make something simpler.

So far I can recreate trigger_push behavior and trigger_multiple with angle, but not mixed together. 
Some Combo 
I think that might be a difficult combo to create. One of the barriers is that the "movedir" field is used by both type of entities to determine the direction of travel/activation. The bigger one is that the code which decides if you are facing the correct way to activate a trigger doesn't really depend on any other properties of the entity - it's hard-coded to call multi_trigger.

So if my heart was set on it, I'd probably accept I need to just have a conventional "facing trigger" activating some kind of hacked entity which pushes the player, and can be toggled on and off. I've never seen anyone create a trigger which can be switched on and off an arbitrary number of times before, the "spawn a trigger" was a state-of-the-art trick, but only good for one shot. But now I wonder if there might be a way...

The idea would be to create a moving trigger! I think the door functions are the best bet for this. An important detail is that we get actual instant teleportation if we make set the speed high enough, which will probably save us worries about movetype. Then you have a position far outside the map for the trigger to sit idle, and a target position for it to jump to when triggered. Use the door TOGGLE spawnflag value (32) so it doesn't auto-return and it might just work.

This is just a theoretical plan right now, but if it works then it's a really huge hack idea with a wide number of applications. So when I get a chance tomorrow I'll try to see if it can be made to work. 
 
hmm, will a trigger generate a touch if it teleports over an entity? (eg: with setorigin) i think you need force retouch? 
Some Combo 
"movedir". Yeah, that's what confused me too.
Maybe it still possible if we accept that this trick will always push and trigger using same direction?

I tried to activate different variations of pushing entity and failed. Maybe I'm doing something wrong (still a noob), but it looks like push trigger only works directly and does nothing when triggered by anything except for player. 
 
It's good to take a look at QC sources to figure out why something is not working.

For example "counter trigger" won't message "Only 3 more to go..." etc. when the activator is not player...
if (activator.classname == "player" && (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0)

Now I'm looking for some workaround, so monster killing each other can "fire" message in counter. 
Toggleable Trigger_push 
Hey DeeDoubleU, this one's for you.

https://tomeofpreach.wordpress.com/2015/11/19/toggleable-trigger_push/

It gets you a trigger_push hack which can be turned on and off an arbitrary number of times. You'll still have to do a bit of the heavy lifting here, useing a conventional "facing detector" trigger to turn it on. You may have to play around with the best way to make this work, some suggestions to try:

* Get rid of the TOGGLE spawnflag, so the trigger naturally returns to "closed" after a short time, and only constant retriggers from the facing detector will keep it in place

* Keep the TOGGLE, but have a trigger_relay which resets it at the same rate that the facing detector is reactivated

* Keep the TOGGLE, and have a pair of overlapping, opposite facing detectors. One triggers to turn the pusher on, and the other facing turns it back off. 
To Khreathor 
You're next in the queue! I like this hack so much I'm going to use it to fix your problem too! But it's bedtime now so it may take a little while until I get a chance.

TextFish: Have you tried a slient, rapidfire https://tomeofpreach.wordpress.com/quoth/tutorial/info_trap/ targeting the player through the floor? That sounds pretty hacky to me! There's probably a way to create a follow spot in just regular quake using an info_notnull, the effects flags, and the ShalHome function.

It's also interesting that both of you have asked a question which the aside in https://tomeofpreach.wordpress.com/2015/11/18/selective-clipping/ is very relevant to. Who does the spotlight follow if there are no players connected? In coop, which one of the players do you want to give the "3 more to go..." message to? 
Preach 
Thanks for your help! I already tried few combinations with "enemy" key. I finally got it working. Problem was I forgot to set "wait" ;)

So I have connected enemies to info_notnull, which triggers counter every time enemy dies with "enemy" key set to 1, so it always blames player ;D

Here is an example:
{
"classname" "info_notnull"
"angles" "-0 0 -0"
"target" "counter"
"targetname" "count_enemies"
"use" "multi_trigger"
"enemy" "1"
"wait" "0.01"
"origin" "400 472 0"
}
 
Thanks Preach. 
My idea isn't worth abandoning Quoth for and it sounds like the info_trap would be very reliant on the player remaining as low as possible in the map (limiting the use of bridges and multi-story buildings etc.), so I think I'll need to put it on the back-burner until I can think of another solution! 
@Preach And Others 
I feel like I'm missing some fundamentals. Some details that no one ever mentions because it's basic stuff.

Finally figured out that I need to add keys in text editor and compile with .bat file, since editor "fixes" non-standard entities on map save/open and build.

Is there easier way to do this - some set of handy utils or hack-friendly editor?

Preach, maaaan they should teach about you in school.
Togglable push trigger works, though I can't implement your suggestions properly.
I can't make push-door go down on its own. It's either constantly going on and off dropping player a bit during each 'off' phasse or never goes down. 
If We Talk About Basics 
http://quakewiki.org/wiki/Map_based_hacks

But you must remember those are hacks, so you just exploit existing functions. That means: if you want to make some complex stuff, you need to write your own scripts in QC. 
 
some editors don't "fix" entities like that, so you might try other editors -- or talk to the developers here if it's trenchbroom or jackhammer. 
What Do You Mean, Fix 
You mean that the editor clears out any properties that weren't in the .def or .fgd file? I don't think TrenchBroom does that, and if it does, it shouldn't and I will fix it. 
It Doesn't As Far As I Know... 
I tend to prototype stuff without adding it to my fgd.

But I'm still on the last TB1 and only put stuff in TB2 to test.

If/when I map again I'll update to all the latest tech. 
It's GtkRadiant. 
It doesn't remove any keys or values, but if I create trigger that has actual volume and then change it's class to info_notnull - load/save/build would clear brush info from that entity and add origin instead.

Was wondering how you guys do it and hoped someone knows another way except making all hack related stuff last [in notepad] and never modify and save map in editor again. 
 
oh yeah, there is the problem of trying to use info_notnull as a brush entity and a point entity in the same map. If you only want brush entities you can just change it in the .def file, but if you want both you can't.

Probably the best solution with the tools we have is to create a info_notnull2 which allows brushes, then add to your batch file some kind of step that does a search and replace with info_notnull2 to info_notnull. 
 
Radiant only supports an entity classname to be either point- or brush-based. By default the definitions make info_notnull a point entity, so the editor converts it once you rename it.

There's no solution, only a workaround: I changed the def file so that info_notnull defaults to being a brush-based entity which then works for trigger volumes and such. It's still possible to make point-based info_notnulls by creating some point entity and renaming the classname afterwards; however, it will not show up in the editor views and can only be accessed/edited from the entity list ("L"). Pretty awkward. 
Too Slow 
 
TrenchBroom Allows You To Do It 
 
Monster Doors 
Is there a way to make a door operable by monsters only? I thought it could be cool to have a bit of my map where the player has to sneak through the door just after a monster to get through. 
 
I was using Netradiant and having no problems at all with info_notnull spawnable triggers, until I downloaded a newer version - then it went all stupid. Not only did I have to switch back to the older Netradiant, I had to revert to an earlier version of the map that had never been saved in the newer version. I probably could have eventually figured out what was wrong, but reverting to an older map was quicker. 
Monster Doors And Info_notnull Defeated, Almost 
Trigger opens real door and another invisible one that blocks only player.
https://dl.dropboxusercontent.com/u/58150516/monstersonly.zip

Thanks for suggestion guys. I changed my quake.def entry for info_notnull to:

/*QUAKED info_notnull (0.8 0.6 0.2)
Invisible entity. Used as a positional target for lightning.

*/

Works like a charm. Only problem is... not even a problem really, minor issue - editor treats every word of description as a flag now 8)
https://i.gyazo.com/826e8d43aaccbbd2295bf16e20fb45f0.png 
 
point entities are defined like this:
/*QUAKED air_bubbles (0 .5 .8) (-8 -8 -8) (8 8 8)
Air bubbles. They disappear in Deathmatch.
*/

where the last 2 sets of numbers refer to the minimum point and maximum point of the bounding box. 
 
You're missing a question mark. Here's a correct example:

/*QUAKED trigger_ladder (.5 .5 .5) ?
invisible ladder entity. when player is touching this entity, he can climb by pushing 'jump'

Keys:

"angle" the direction player must be facing to climb ladder
*/
 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.