Qcc_pain
#2694 posted by Spike on 2018/11/25 08:26:59
if you just want to silence the warning, you can do:
self.th_pain = (void(entity,float)) foo_notquitepain;
Such casts are generally not recommended as they'll not catch any future changes to your 'foo_notquitepain' function, and you should only ever ADD arguments to the rhs when casting functions (removing/changing args results in the function getting gibberish for the args that were not passed, or passed as the wrong type).
Such explicit casts should always be seen as a claim by the programmer that they know that the result will be safe despite its inconsistencies.
The vanilla qcc just saw function types, and didn't bother to validate the return types nor parameters. whereas fteqcc is somewhat annoying and warns about any inconsistent code that it sees.
Its worth noting that the vanilla qc code is inconsistent but not otherwise buggy. You could fix it purely using casts if you wanted to, but its cleaner to just add the extra args.
And yes, there is some door or trigger or something entity that mixes up touch functions and pain. You can fix that occurrence with a wrapper, but a cast will perform better - not that its significant enough to matter at all.
@Spike
#2695 posted by madfox on 2018/11/25 20:52:41
Thanks for the info, that keeps me going!
New Monster Qc
#2696 posted by madfox on 2018/12/05 01:10:01
I'm trying to make a new monster, that shots nails and launches rockets. When I run the qc the monster shoot nails and launches rockets at a low angle, half from bottom.
Also the two actions bump at the same time and I have no idea where to look.
Where is the statement that give more time between the actions?
Rabbid Fire
#2697 posted by madfox on 2018/12/05 21:48:37
As long as the player is running the relation between missiles and nails is almost even, but when it is tricked into a corner the thing blasts missiles every 0.5 second.
That's no way of surviving, I know it is called Terminator, but unlimited charge is no fight.
#2698 posted by Qmaster on 2018/12/06 18:35:50
...half from bottom... try changing the offset amount from '0 0 10' in TermMissile to higher amount such as missile.origin = self.origin + '0 0 24'; or try copying the value you used for org in LaunchZhaser if you want the missiles to fore from the same place as zhasers do.
missiles every 0.5 seconds you have melee set to fire missiles. If you stay back away then he will only shoot zhasers.
Maybe if you want more delay add more frames or add an attack_finished check.
#2699 posted by Qmaster on 2018/12/06 18:37:41
Or do
self.th_missile = sknt_atk1;
self.th_melee = sknt_atka1;
To switch it.
#2700 posted by Qmaster on 2018/12/06 18:39:04
What do you mean bump?
@-Qmaster
#2701 posted by madfox on 2018/12/07 20:52:48
The Enforcer.qc has a code for setting the laser
org = self.origin + v_forward * 30 + v_right * 8.5 + '0 0 16';
and as far as I can see the v_foreward sets the space that messures the armlength foreward, and v_right is the distance from the entity to the right sideways.
I'm looking for the space upward, as a terminator that launches from under the belt is a bit odd. In game it is not so pronounced as with testing.
I will try your statements in the hope they lead to a better result. For sofar here is the map as far as I have finished it. The scr file is included. I've played the map myself only, and I think the gamepath isn't realy clear.
captains_log0
Vector Upwards
#2702 posted by Preach on 2018/12/07 22:36:24
Hi madfox, have you tried using v_up? That's the "upward" vector I think you're after.
Belt Blaster
#2703 posted by madfox on 2018/12/08 19:06:28
@-Qmaster Changing the self.th_melee = atka1; worked for splitting the attack in two different shapes. Although I don't see the reason why self.th_melee = sknt_melee won't work.
It is defined as sknt_melee = sknt_atka1; (?!)
@-Preach : sure, but I can't find the place for the statement.
Whatever I add or change it seems 7up for the compiler.
missile.origin = self.origin + '0 0 10'; is the place to look I think?
That's The Correct Line
#2704 posted by Preach on 2018/12/08 20:02:35
That's the right line to modify, keep playing with it until you get an effect you like.
Algebra Dabra
#2705 posted by madfox on 2018/12/09 04:10:48
the only way I can make the missile launch higher is when I exclude
//missile.origin = self.origin - normalize(self.velocity);
and
missile.nextthink = flytime + time;.
Then the changes seem to have effect, although I get an eyeheight missile launching and ending on
missile.origin = self.origin + v_forward * 8 + v_right * 1 + v_up * 10;
Changing The Order
#2706 posted by Preach on 2018/12/09 14:45:39
Yeah, that would be the problem. Notice how both lines are setting the value of the same thing - missile.origin. The second line completely overrides the first one, like changing your order in a restaurant - you don't get two meals, you just get the second one.
Right, Uhm Wrong
#2707 posted by madfox on 2018/12/09 23:56:55
missile.origin = self.origin + v_forward * 8 + v_right * -16 + '0 0 24';
returns a launcher that shoots from the launching point left above the player.
missile.origin = self.origin + v_forward * 8 + v_right * -16 + v_up * 16;
returns a missile that explodes left of the player.
I'm thinking I'm changing the end point of the missile hitting the player. It launches from the right point, but it ends up blind. Also the negative parm comes out strange. It's not left handed?
Try
#2708 posted by Qmaster on 2018/12/10 03:56:35
In TermHome,
dir = normalize(vtemp - self.origin);
Maybe.
Well
#2709 posted by madfox on 2018/12/11 00:27:05
I used the enforcer_laser methode to launch the missile.
This way it is the simpelest way to compile for the wanted use.
The code was from the Orb, and I had a hard job on coding the weapon.
Thanks for the hints!
They were helpfull.
@metlslime
Rubicon 2 question:
You have IT_NO_WEAPON replacing IT_EXTRA_WEAPON in the code. However, I'm not sure how to implement this in a map. Not seeing a spawnflag or other way to enable it.
Trace Volume?
#2711 posted by Shanjaq on 2018/12/15 10:58:27
Is there a way to trace a volume similar to traceline? I need to find a volume that is not occupied by players or monsters of any size. maybe something like traceline?
@Shanjaq
#2712 posted by Spike on 2018/12/15 12:07:50
any decent engine will have a tracebox builtin for things like that.
failing that, you can also exploit quirks of droptofloor or walkmove(typically with FL_FLY?), but these are much more limited and may have additional engine-specific quirks that break your mod (at least in DP).
Tracebox
#2713 posted by Preach on 2018/12/16 02:04:27
Something I wrote before on how you might write a tracebox function using the method Spike suggests. His caveats stand
http://www.celephais.net/board/view_thread.php?id=60097&start=245&end=246
Dumptruck:
#2714 posted by metlslime on 2018/12/16 06:57:22
Spawning with no weapons works but was never used in any of the maps so I didn't finish the part where an info player start can opt in to it. Right now it's just hard coded so to only happen if mapmame == test.bsp
So you would have to make some quakec change to complete the feature, or just change the hard coded string it's looking for -- or name your map test.bsp :)
#2716 posted by Tribal on 2019/03/18 18:08:10
Is there any way to attach colored lights to projectiles or explosions via QC?
I would like to make the vore's ball glow with a purple light, make the tarbaby's explosion blue, this sort of thing...
I'm using quakespasm-spiked btw.
Qss
#2717 posted by Spike on 2019/03/18 19:31:37
a trail particle effect with 'lightrgb' and 'lightradius' set should be able to provide coloured dynamic lights, but it might only be with flashblends. I don't think I actually got around to testing it properly.
point effects will additionally need lighttime, and probably want at least one of lightrgbfade+lightradiusfade.
there are additional light properties, but those are specific to rtlights, which are definitely not supported in qss.
@Spike
#2718 posted by Tribal on 2019/03/18 20:11:49
Thanks! I'll try that =D
|