|
Post by pelinalcrusader on Aug 19, 2022 21:50:18 GMT -5
KMQ2 already supports Q3's ROQ video format. It should also work with non-power-of-2 sized roqs like 1920x1080, but I don't have any to test with. The end pic (which isn't even hardcoded as victory.pcx, it's specified by a target_changelevel) can be any image format that KMQ2 supports (tga, png, or jpg). besides the fact that it is possible to reverse engineer oblivion source code off your method, and there is even compilers on the internet that can even translate and rebuild(the file has even info in it) though is paid and even found some stuiff there but idk how to code. i was thinking here of not only for now updating the victory screen with a proper placeholder, but also do the same to the main game and MP's with higher res renders of it. xatrix never got a proper victory.pcx and rogue looks loo low res even if it is on the max pcx size for it, maybe something which can be used by the game by detecting the right image aspect ratio and resolution for it, like 4:3 and so on.
|
|
|
Post by Guggenheim on Sept 7, 2022 7:58:44 GMT -5
Hi Knightmare! I had some free time and tryed some new stuff with code. Now I'm working on emeny with disruptor. I found out that that monster_fire_tracker function is pretty weird: it have "enemy" parameter and disruptor aims directly to it's target with 100% accuracy. The weapon_tracker_fire acts different, it calculates trace at first so I borrowed that stuff:
if ((!strcmp(self->classname, "monster_soldier_dist"))) { tr = gi.trace (start, vec3_origin, vec3_origin, end, self, MASK_SHOT); if (tr.ent != world) { if (tr.ent->svflags & SVF_MONSTER || tr.ent->client || tr.ent->svflags & SVF_DAMAGEABLE || tr.ent->takedamage == DAMAGE_YES) { if (tr.ent->health > 0) { monster_fire_tracker(self, start, aim, 25, 500, tr.ent, MZ2_WIDOW_DISRUPTOR); return; } } } monster_fire_tracker(self, start, aim, 25, 500, NULL, MZ2_WIDOW_DISRUPTOR); } Quite ugly, but it works however. How it looks:
Tracker detects target only if attacker aimed accurately, like it must be.
But actor have auto-aim too, and he won't even attack if enemy is null:
if (!self->enemy || !self->enemy->inuse) return;
I don't plan to use actors with disruptors in my project yet, but that monster_fire_tracker is practically auto-aim.
The widow's behaviour is more weird, I can't understand that:
if (len < 30) { // if ((g_showlogic) && (g_showlogic->value)) // gi.dprintf ("target locked - dist %2.2f\n", len); // calc direction to where we targeted
// Lazarus fog reduction of accuracy if (self->monsterinfo.visibility < FOG_CANSEEGOOD) { self->pos1[0] += crandom() * 640 * (FOG_CANSEEGOOD - self->monsterinfo.visibility); self->pos1[1] += crandom() * 640 * (FOG_CANSEEGOOD - self->monsterinfo.visibility); self->pos1[2] += crandom() * 320 * (FOG_CANSEEGOOD - self->monsterinfo.visibility); }
VectorSubtract (self->pos1, start, dir); VectorNormalize (dir);
monster_fire_tracker(self, start, dir, 20, 500, self->enemy, MZ2_WIDOW_DISRUPTOR); } else { // if ((g_showlogic) && (g_showlogic->value)) // gi.dprintf ("target missed - dist %2.2f\n", len);
PredictAim (self->enemy, start, 1200, true, 0, dir, NULL);
// VectorSubtract (self->enemy->s.origin, start, dir); // VectorNormalize (dir); monster_fire_tracker(self, start, dir, 20, 1200, NULL, MZ2_WIDOW_DISRUPTOR); }
If tracker have NULL "enemy", it would fly directly as ordinary projectile, but if not-null it would auto-aim. If I'm correct, disintegrator is supposed to fire semi-homing projectile. What would you advise to solve that? Maybe rewrite monster_fire_tracker func? It's the only monster fire function that requires "enemy" param, except homming missiles. I just want enemies' disruptor act like player's one.
|
|
|
Post by Guggenheim on Sept 7, 2022 8:03:45 GMT -5
BTW, what about copyright? Is missionpacks' code free to use?
|
|
|
Post by knightmare on Sept 8, 2022 14:55:47 GMT -5
The missionpacks' source is still under the original proprietary license, so you can't combine it with GPLed code. Other than that, you can use it in any non-GPL Q2 mod you want. If you just have to have it in a GPLed mod, you'll need to rewrite all the disruptor weapon code.
BTW, I already have plasma soldiers from LM Escape in my missionpack DLL. If you want to incorporate this new soldier variant to that codebase, I suggest adding the skins to the Xatrix soldierh model, as the regular soldier model reaches MAX_SKINS (32) when patched for custom skins.
|
|
|
Post by Guggenheim on Sept 8, 2022 20:26:32 GMT -5
The missionpacks' source is still under the original proprietary license, so you can't combine it with GPLed code. Other than that, you can use it in any non-GPL Q2 mod you want. If you just have to have it in a GPLed mod, you'll need to rewrite all the disruptor weapon code. BTW, I already have plasma soldiers from LM Escape in my missionpack DLL. If you want to incorporate this new soldier variant to that codebase, I suggest adding the skins to the Xatrix soldierh model, as the regular soldier model reaches MAX_SKINS (32) when patched for custom skins. I am gonna to rewrite, cause that Rogue's monster_fire_tracker is really ugly. BTW, what about actors? They still use Rogue's fire_tracker func, but AFAIK it wasn't written by Rogue (actors appear to auto-aim too). That license stuff is really hard to understand, but that's a collaborative project, so it's important. For example, there's some func under GPL. May I use it in my code without modifying it or not?
|
|
|
Post by knightmare on Sept 8, 2022 21:48:26 GMT -5
What license is your source under? That's the important question.
BTW, I wrote those implementations of the missionpack weapons for the actor (which came from Lazarus, as the original misc_actor in the Q2 game source was unfinished). If you rewrite the Rogue weapon functions (not modify, you would need to re-implement them entirely), you may use my actor weapons code.
|
|
|
Post by Guggenheim on Sept 9, 2022 5:37:18 GMT -5
What license is your source under? That's the important question. BTW, I wrote those implementations of the missionpack weapons for the actor (which came from Lazarus, as the original misc_actor in the Q2 game source was unfinished). If you rewrite the Rogue weapon functions (not modify, you would need to re-implement them entirely), you may use my actor weapons code. That's our anniversary collaborative project with Quakeulf and others. I'm not aware of that legal stuff, but it shouldn't violate any license, as I understand.
Here's the only code I added by now (and of course spawn function):
//Guggenheim tracker if ((!strcmp(self->classname, "monster_soldier_dist"))) { tr = gi.trace (start, vec3_origin, vec3_origin, end, self, MASK_SHOT); if (tr.ent != world) { if (tr.ent->svflags & SVF_MONSTER || tr.ent->client || tr.ent->svflags & SVF_DAMAGEABLE || tr.ent->takedamage == DAMAGE_YES) { if (tr.ent->health > 0) { monster_fire_tracker(self, start, aim, 25, 500, tr.ent, MZ2_WIDOW_DISRUPTOR); return; } } } monster_fire_tracker(self, start, aim, 25, 500, NULL, MZ2_WIDOW_DISRUPTOR); }
I've just used Rogue's monster_fire_tracker and haven't modified it. Cause tracker projectile aims directly to "enemy" param I used such ugly hack to prevent auto-aiming (there's similar code in weapon_tracker_fire).
|
|
|
Post by Guggenheim on Sept 9, 2022 6:06:22 GMT -5
Actors use the similar logic, wherever he's aiming, disruptor sticks on "enemy". Here's a recording: at first my monster_soldier_dist attacks misc_insane (I've used target_anger), but he can miss sometimes and projectile's "enemy" would be NULL. And then there was a fight with misc_actor, I even slowed down the timescale and disruptor speed. We can see the traces, but disruptors auto-aims. Maybe add there trace check like in weapon_tracker_fire? That seems really unfair, it's nearly impossible to dodge disruptor.
|
|