#2635 posted by metlslime on 2018/07/26 01:04:17
I think the "same name texture" crash mentioned on that page is only in GLQuake and derived engines.
@esrael
#2636 posted by therektafire on 2018/07/26 02:04:05
I agree about the item not triggering it's targets if it hasn't been picked up, that is definitely not a bug, it makes total sense for an item to not do anything if the player touches it but can't interact with it for whatever reason, like if their ammo is full or they have full armor or they already have that type of key in their inventory. Not to mention that a vast majority of maps are designed around this mechanic one way or another, like key traps triggering when the player, you know, picks up the key or encounters that get triggered when you pick up a particular weapon or powerup like quad damage
Now if we're talking about keeping the player from picking something up if they already have enough of it that's another story, it would definitely be nice sometimes if some things like ammo or health only gave themselves to you if you actually needed that much, it would definitely help prevent wastefulness by picking them up on accident when you don't really need that much yet
@esrael
#2637 posted by therektafire on 2018/07/26 02:04:06
I agree about the item not triggering it's targets if it hasn't been picked up, that is definitely not a bug, it makes total sense for an item to not do anything if the player touches it but can't interact with it for whatever reason, like if their ammo is full or they have full armor or they already have that type of key in their inventory. Not to mention that a vast majority of maps are designed around this mechanic one way or another, like key traps triggering when the player, you know, picks up the key or encounters that get triggered when you pick up a particular weapon or powerup like quad damage
Now if we're talking about keeping the player from picking something up if they already have enough of it that's another story, it would definitely be nice sometimes if some things like ammo or health only gave themselves to you if you actually needed that much, it would definitely help prevent wastefulness by picking them up on accident when you don't really need that much yet
Cleaned Up Code
#2638 posted by Preach on 2018/07/26 14:30:45
I should mention that the changes in the cleaned up code are only to eliminate compiler warnings, there aren't any bug fixes or behaviour changes. Just wanted to set the right expectations for it.
@Preach
Thanks for the clarification. I am still very much in the copy and paste fingers crossed stage of qc. I believe c0burn wants to release a bug smashed version of the code eventually. That's a great project IMO.
#2630
#2640 posted by madfox on 2018/07/26 23:08:49
Result is that a player in fight with an Axe_ogre will get pissed. If player is shot from distance, the ogre won't walk to the player's body.
@madfox
#2641 posted by Spike on 2018/07/27 03:18:25
the point of doing it in ai_run is that:
a) self is the ogre that should do the widdle. there is absolutely no need to call find (because you can just use self). there is no need to loop etc (each monster will call the function at some point anyway).
however, you really ought to only do that logic if self.classname is actually what you expect. you don't really want scrags trying to widdle.
b) the player that its trying to urinate on is already stored inside self.enemy. This means that you don't need a seperate leakentity field - just use self.enemy! (do note that you'll want to avoid the self.enemy=world line if the ogre is meant to start widdling.)
@Spike
#2642 posted by madfox on 2018/07/28 23:30:09
Thanks for your answer. Sorry I'm such a noob at coding.
If I use the self argument, how do I make it fit in?
As it is an experimental src, so maybe it is better to show an example
of what I am trying to do.
MF_Qtest00
Heh
#2643 posted by spy on 2018/07/29 08:45:22
here's a demo of Qtest
the main problem, the "new" monsters seem too much overpowered (especially vomitus)
noticed a couple of issues, check the demo
http://quaketastic.com/files/demos/spy_MadfoxQtest_demo.rar
Queer Queen
#2644 posted by madfox on 2018/07/29 11:49:57
Just finished a nice trick to change the serpent into a quaddam.
But don't touch it, cause it lives.., a bit husling with the skin file.
Yes, the src has a MISSILE weaponcode for each monster,
wizard is also much too strong. Number code for weapons won't work. Still beta.
Thanks for the demo, I'll look at it!
@Spy
#2645 posted by madfox on 2018/07/30 03:38:13
You made your way quiet advanced on hard skill. Spy.
The missing sounds are qc depended.
I turned a bit strayed with the qtest.qc. adding the monsters,
especially the dragons, caused a lot of changes.
I assume the forced demo end had something to do with crashing,
it is still beta version, already glad it runs.
Thanks for taking your time.
Partial Cross Post
I am just getting started "cutting and pasting" QuakeC. I followed Preach's revised tutorial on monster spawning here:
https://tomeofpreach.wordpress.com/2017/10/08/teleporting-monsters-flag/
I'd like to add a small random delay automatically to each teleporting monster as you can do in Quoth. I am using custents multiple triggers to trigger these delays spawns. Similar to Quoth, it would be nice to have a little variation on the timing if the monsters all share a targetname.
I've tried a few things already, being exceedingly cautious not to mess up this code I can barely comprehend. I'm wondering if anyone would like to give me a hint of how to approach this little addition.
#2647 posted by Qmaster on 2018/07/31 21:53:23
Add a new function:
void monster_teleport_delay () {
self.think = monster_teleport_go;
self.nextthink =time + self.wait; // or self.delay if you prefer that
};
Then in your monster_teleport() function change self.use to be monster_teleport_delay; instead of monster_teleport_go.
DISCLAIMER: Untested.
@qmaster
thank you for the help... I will try this after work this evening!
@qmaster
Newb question: would this mean I need to add a wait or delay key value to the entities? I don't mind setting it manually but wanted to know if this is how this method works.
Alternative
#2650 posted by Preach on 2018/07/31 22:48:50
If you don't want to set a wait value manually, instead of using self.wait in that code you can generate a random number between 0 and 1 using random() instead.
Can you see how to adapt the code to use random to create a delay of between 0 and 1 seconds?
How about a delay between 0 and 2 seconds?
What about between 0.5 and 1 seconds?
...
#2651 posted by Preach on 2018/07/31 22:49:42
Obviously I posted that before reading the other thread.
@Preach
No worries thanks for the great tutorials. I am enjoying messing around with QC finally. Next, I am going to try and figure out a silent spawn without the tfog and audio next. I think I can do it.
//
#2653 posted by Qmaster on 2018/08/01 01:19:52
Decision Made!
After trying to implement random timings I felt it better to go with self.delay. More work but more control for the mapper. Thanks everyone!
Te_lightning, Etc
#2655 posted by c0burn on 2018/08/06 21:53:07
/*==========
te_lightning
==========*/
void(vector v1, vector v2) te_lightning =
{
WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
WriteByte (MSG_BROADCAST, TE_LIGHTNING1);
WriteEntity (MSG_BROADCAST, world);
WriteCoord (MSG_BROADCAST, v1_x);
WriteCoord (MSG_BROADCAST, v1_y);
WriteCoord (MSG_BROADCAST, v1_z);
WriteCoord (MSG_BROADCAST, v2_x);
WriteCoord (MSG_BROADCAST, v2_y);
WriteCoord (MSG_BROADCAST, v2_z);
};
Writing some TE_ helper functions has gotten me curious. WHY is there an entity parameter needed for the lightning, beam, etc? Is it safe to just write world?
#2656 posted by c0burn on 2018/08/06 21:56:14
I figured it out. It uses the entity as the start point regardless of the co-ordinates passed. And this is why the lightning beam starts at the origin of the player, regardless of anything else.
#2657 posted by Spike on 2018/08/06 22:41:15
beams last 0.2 seconds. QC respawns them every 0.1 seconds.
the entity argument is just there to avoid the resulting double-beams issue (trying to depend upon precise timing would be too unreliable with network latency etc, hence why they last longer).
Using world would break when you have two players firing beams, although some engines do understand world to mean 'don't replace any beams'.
tbh 99% of the time that entity arg will be self.
ignoring the startpoint and using the player's position is just to smooth things out so that the player doesn't leave the beam behind when moving sideways etc.
note that there's already an engine extension to provide those as builtins (with that name), so beware of potential conflicts if a modder uses *extensions.qc.
W_FireLightning Start Origin Incorrect On Players?
#2658 posted by R00k on 2018/08/10 19:21:25
original code has
LightningDamage (self.origin, trace_endpos + v_forward*4, self, 30);
(even URQP has it that way)
But i had long changed it to
LightningDamage (org, (trace_endpos + (v_forward * 4)), self, 30);
this is especially obvious when shooting from RL window on DM3 and aiming at someone on the lower bridge.
this is because:
org = self.origin + '0 0 16';
traceline (org, org + v_forward*600, TRUE, self);
#2659 posted by Qmaster on 2018/08/10 22:19:20
The original is "waist lightning". Darkplaces has specific settings to let you pick which style you prefer, waist or gunpoint.
|