Necros
#239 posted by Mike Woodham on 2011/03/20 21:39:50
I have tidied up the ents.qc so everything is now as it should be within the editor: info_notnull is the point-size entity and info_notnull2 is the brush-size one.
I have also been playing with several 'missiles' and seem to have two distinct scenarios. The boss_missile works as you would expect with the player being bombarded with the lava balls. However, ShalMissile and LaunchLaser both go from the not_null origin to 0 0 0.
What is it that allows the boss_missile do do what we want but stops the other two from doing it. It seems as though boss_missile has the player as its 'enemy' all the time as it reacts as the player moves but the others are fixed. Is this something to do with what the 'activator' is? Are we able to do anything about this from the editor?
Incidentally, the LaunchLaser gives a great effect even like this - if you have the not_null close to 0 0 0 and operate the entity via a trigger_multiple, you have a build-up of an intense orange yellow glow that fades in to maximum and then fades out to nothing when you move out of the trigger's area. Looks neat and I am sure it could be used somehow.
#240 posted by necros on 2011/03/20 23:04:46
LaunchLaser will not work because it requires data to be sent to the function:
LaunchLaser(vector org, vector vec);
so you'd need to send 'org' as the point to spawn the laser at and 'vec' as the direction you want it to fly to, which is why it doesn't work.
ShalMissile SHOULD work.
in the function, the line:
missile.origin = self.origin + '0 0 10';
while incorrect from a qc standpoint, should still work. (or maybe you don't need setorigin when you're spawning an entity in the same frame??).
are you sure use used a point entity when you tried ShalMissile?
#241 posted by necros on 2011/03/20 23:06:21
in case it's not clear, there's no way to send the required data to LaunchLaser.
when you run a function via 'think' or 'use' it's the equivalent of just typing LaunchLaser(); in code, so while it works, it sends, the engine fills in the missing variables with 0. (or '0 0 0' in the case of vectors, 'world' in the case of entity and so on).
Ice
#242 posted by negke on 2011/03/21 16:40:50
Not really a sophisticated hack, but a nice little trick I just came across in an old map.
It's possible to simulate a crude ice sliding effect by putting a flat shootable trigger_multiple with a high wait value on the floor (possibly target it on mapstart to avoid the bleeding) - basically the old invisible wall trick. The player will slide over it like he does when landing on top of a monster; he can change the direction but he won't come to a stop until he reaches solid ground.
There probably aren't many situations where this might come in handy, except maybe in winter-themed maps or for certain traps.
So...
#243 posted by - on 2011/03/22 03:58:45
on the idea of the killable cthon frikac made long ago, is it possible to make, for instance, an enforcer that shoots player rockets? and if not an enforcer or other monster, perhaps a monster that appears like the player model?
#244 posted by jt_ on 2011/03/22 04:32:56
Couldn't you change the skin on the grunt? I thought it had more than one skin, the other being the players. I'm not 100% sure on that though.
Didnt A Negke Map
#245 posted by nitin on 2011/03/22 04:59:01
have monsters shooting non-standard missiles?
#246 posted by necros on 2011/03/22 07:25:33
scampie: yeah, you basically build a monster out of an info_notnull, filling in th_missile and such with whatever attack function you'd like.
as nitin said, neg's map lower forecourt has things like lightning dogs.
jt: nope, only one skin on grunts.
Necros
#247 posted by - on 2011/03/22 07:32:38
thanks for confirming
Monsters With Different Attacks
#248 posted by negke on 2011/03/22 08:34:11
Yes, it's possible but it's really an ugly hack. One has to keep in mind that the qc monster functions are tied to the animations in the mdl, so creating custom monsters will result in "invalid frame #" warnings and, more importantly, the attacks won't be animated.
In Particular
#249 posted by Lardarse on 2011/03/22 10:16:51
Not having any animation for the attack essentially means no warning before the attack happens, which is unfair to the player.
6 Frames Or So
#250 posted by ijed on 2011/03/22 11:55:01
Isn't any warning anyway. It just doesn't look very good.
#251 posted by Spirit on 2011/03/22 12:43:59
It is also more of a gimmick, I prefer the stock monster.
Spirit
#252 posted by - on 2011/03/22 20:05:49
I'm going to release a map entitled 'Made by Spirit' and it will be nothing but spawn that shoot shambler lightning in a tiny box.
Would it be possible, using info_notnull, to create a zombie that doesn't attack the player but just wanders around? :E
I'm assuming not because it'll just try to call an attack function and crash when it doesn't find it but asking anyway :p
?
"th_missile" "plat_hit_bottom"
"noise1" "zombie/z_idle.wav"
No, That's Not Possible.
#255 posted by necros on 2011/08/03 00:43:30
in order to wander around, you need ai_walk (part of the th_walk sequence), unfortunately, ai_walk calls the function that searches for clients which would lead it to wake up and eventually attack you.
Oh
#256 posted by necros on 2011/08/03 00:44:42
well, just thought of this, but if you made the zombie mad at some monster it couldn't reach, it would just wander around and not attack you (unless you fired at it).
the qc hack to do that is a little annoying though as it relies on edict numbers that change when you're making a map.
To Elaborate On That
#257 posted by Preach on 2011/08/10 17:46:07
(I know this is a huge bump, I've been 10 days without internet...)
You could even get the zombie to walk in a path by
1) Making it mad at a func_plat instead of a monster
2) Giving that func_plat a health value so that the zombie stays mad at it
Keeping the platform out of sight is important so that the zombie doesn't try to attack it. Giving it a health value isn't too dangerous as long as you leave .takedamage set to 0 (TAKEDAMAGE_NO).
As necros mentions though, the hack to do this relies on entity numbers which means it lacks and resilience if the position of the relevant entities in the entity list changes for any reason (updated map, change in entity counts over skill levels, different mod).
The best mitigation is to ensure all of the entities involved in the hack are the first things loaded from the map - which usually means they should be the first ones added to the map in the editor. If it's too late for that you may want to edit the entity file by hand to achieve this.
hmm, okay, I might be able to do something with this :)
I take it as soon as the player attacks the effect is lost? Not that that is a major issue.
Yup (NT)
#259 posted by Preach on 2011/08/10 20:27:35
Shootable Buttons No Bleed?
Is it possible to make shootable funcs_ like buttons not bleed on activation (with stock progs.dat)?
#261 posted by necros on 2011/12/03 18:51:12
i don't think so. in order to take damage, an entity needs to have .takedamage set to a non-zero value and blood particles are spawned when .takedamage is non-zero.
Not Entirely
#262 posted by Preach on 2011/12/03 18:52:44
The problem is that spawning blood is a decision taken entirely on the part of the weapon firing code (since explosions spawn none, and lightning burns orange instead). In particular the shotgun and axe code will always spawn blood if they can damage the target, so any hack which prevented the blood appearing will necessarily set .takedamage to zero, and therefore make the entity shootable no more.
There are two interesting alternative though. One would be to make the button shootable only by explosions. For this you wouldn't even have a shootable button, just a func_door to give the illusion of movement. You add a point sized info_notnull next to the button and add the following fields:
"takedamage" "1"
"th_die" "button_killed"
"speed" "1"
"pos1" "self.origin"
"pos2" "self.origin"
"health" "1"
"max_health" "1"
Then make it target the "fake" button and whatever event you want it to fire.
This button can be refired after 2 frames, and you can't add .wait to extend this because the movement functions are intended for a BSP object. So you might need to add a trigger_relay between the info_notnull and the things that it is meant to trigger in order to introduce a delay.
The other alternative would be to make a button that is fired by touch. This would mean a number of compromises need to be made:
1) Anything that touches the button would activate it, like monsters.
2) The activator for the button will be set wrong, which matters if it's meant to wake up monsters or send a message to the player.
3) Hitscan attacks (shotguns, axe and lightning gun) will not activate the button.
If these are all acceptable then start by taking the existing button as a base. Read all the fields which are set in-game using the edicts command. Then change the button's classname to func_wall and add all the fields you read from the edicts command to it manually along with
"touch" "button_fire"
Grenade Shooter
#263 posted by Orl on 2011/12/05 19:41:21
Hopefully this should be a simple hack, but I couldn't find a clear explanation in the thread. I want to do an action similar to post #11, having lightning fire out of a point entity at a certain direction. However instead of lightning, I want it to be a grenade.
I attempted to do this using the keys and values but replacing them with rockets, but it did not work, as I expected.
So I guess to sum things up, can I have something similar to a spike shooter, that instead of spikes, fires grenades, or any other projectile I want it to?
If I can get a solution, I will post a few screenshots of my current map soon :)
|