Jump to content

Asgarath83

Members
  • Posts

    2,023
  • Joined

  • Last visited

Everything posted by Asgarath83

  1. Nice Model! Kreia is one of the better master i know. Well. your error about uvmapping was mean that... you make something that have erased the uvmapping of the left arm. (these go to the hells the textures coordinates of the meshes >.< ) i hope you have a back up. D:
  2. Hello! I am the author of related tutorial. Maybe i have something that can interess to you. in my mod i deactivated the saber defense reflection of projectiles. saber defense can only parry, but not deflecte. so diving the code casually i founded months ago the part of code related to saber deflecting projectiles. that's because there is a little bug in my code on deflection and because i not know how to fix, i disable the deflecting (also about my mod is fantasy style and swords that deflects magical spheres was very weirds. XD ) for your luckys now i am working about some AOE force power like repulse for reproduce the Glyph spells of Soul Reaver (my mod is about Legacy of Kain ) yesterday i make the Sonic Glyph and the other day i changed force repulse code into Force Glyph. However... oh, i FOUNDED! yes, i found also my edit for disable deflections of projectiles. @FlemoidusMaximus WRONG, man! is not into wp_saber.cpp what you are looking! check the g_missile.cpp code. it contain the answer . many code is about the saber deflections. void G_MissileReflectEffect( gentity_t *ent, vec3_t org, vec3_t dir ) { //FIXME: have an EV_BOUNCE_MISSILE event that checks the s.weapon and does the appropriate effect switch( ent->s.weapon ) { case WP_BOWCASTER: G_PlayEffect( "bowcaster/deflect", ent->currentOrigin, dir ); break; case WP_BLASTER: case WP_BRYAR_PISTOL: case WP_BLASTER_PISTOL: default: G_PlayEffect( "blaster/deflect", ent->currentOrigin, dir ); break; } } //------------------------------------------------------------------------- static void G_MissileStick( gentity_t *missile, gentity_t *other, trace_t *tr ) { if ( other->NPC || !Q_stricmp( other->classname, "misc_model_breakable" )) { // we bounce off of NPC's and misc model breakables because sticking to them requires too much effort vec3_t velocity; int hitTime = level.previousTime + ( level.time - level.previousTime ) * tr->fraction; EvaluateTrajectoryDelta( &missile->s.pos, hitTime, velocity ); float dot = DotProduct( velocity, tr->plane.normal ); G_SetOrigin( missile, tr->endpos ); VectorMA( velocity, -1.6f * dot, tr->plane.normal, missile->s.pos.trDelta ); VectorMA( missile->s.pos.trDelta, 10, tr->plane.normal, missile->s.pos.trDelta ); missile->s.pos.trTime = level.time - 10; // move a bit on the first frame // check for stop if ( tr->entityNum >= 0 && tr->entityNum < ENTITYNUM_WORLD && tr->plane.normal[2] > 0.7 && missile->s.pos.trDelta[2] < 40 ) //this can happen even on very slightly sloped walls, so changed it from > 0 to > 0.7 { missile->nextthink = level.time + 100; } else { // fall till we hit the ground missile->s.pos.trType = TR_GRAVITY; } return; // don't stick yet } if ( missile->e_TouchFunc != touchF_NULL ) { GEntity_TouchFunc( missile, other, tr ); } G_AddEvent( missile, EV_MISSILE_STICK, 0 ); if ( other->s.eType == ET_MOVER || other->e_DieFunc == dieF_funcBBrushDie || other->e_DieFunc == dieF_funcGlassDie) { // movers and breakable brushes need extra info...so sticky missiles can ride lifts and blow up when the thing they are attached to goes away. missile->s.groundEntityNum = tr->entityNum; } } /* ================ G_ReflectMissile Reflect the missile roughly back at it's owner ================ */ extern gentity_t *Jedi_FindEnemyInCone( gentity_t *self, gentity_t *fallback, float minDot ); void G_ReflectMissile( gentity_t *ent, gentity_t *missile, vec3_t forward ) { vec3_t bounce_dir; int i; float speed; qboolean reflected = qfalse; gentity_t *owner = ent; if ( ent->owner ) { owner = ent->owner; } //save the original speed speed = VectorNormalize( missile->s.pos.trDelta ); if ( ent && owner && owner->client && !owner->client->ps.saberInFlight && (owner->client->ps.forcePowerLevel[FP_SABER_DEFENSE] > FORCE_LEVEL_2 || (owner->client->ps.forcePowerLevel[FP_SABER_DEFENSE]>FORCE_LEVEL_1&&!Q_irand( 0, 3 )) ) ) {//if high enough defense skill and saber in-hand (100% at level 3, 25% at level 2, 0% at level 1), reflections are perfectly deflected toward an enemy gentity_t *enemy; if ( owner->enemy && Q_irand( 0, 3 ) ) {//toward current enemy 75% of the time enemy = owner->enemy; } else {//find another enemy enemy = Jedi_FindEnemyInCone( owner, owner->enemy, 0.3f ); } if ( enemy ) { vec3_t bullseye; CalcEntitySpot( enemy, SPOT_HEAD, bullseye ); bullseye[0] += Q_irand( -4, 4 ); bullseye[1] += Q_irand( -4, 4 ); bullseye[2] += Q_irand( -16, 4 ); VectorSubtract( bullseye, missile->currentOrigin, bounce_dir ); VectorNormalize( bounce_dir ); if ( !PM_SaberInParry( owner->client->ps.saberMove ) && !PM_SaberInReflect( owner->client->ps.saberMove ) && !PM_SaberInIdle( owner->client->ps.saberMove ) ) {//a bit more wild if ( PM_SaberInAttack( owner->client->ps.saberMove ) || PM_SaberInTransitionAny( owner->client->ps.saberMove ) || PM_SaberInSpecialAttack( owner->client->ps.torsoAnim ) ) {//moderately more wild for ( i = 0; i < 3; i++ ) { bounce_dir[i] += Q_flrand( -0.2f, 0.2f ); } } else {//mildly more wild for ( i = 0; i < 3; i++ ) { bounce_dir[i] += Q_flrand( -0.1f, 0.1f ); } } } VectorNormalize( bounce_dir ); reflected = qtrue; } } if ( !reflected ) { if ( missile->owner && missile->s.weapon != WP_SABER ) {//bounce back at them if you can VectorSubtract( missile->owner->currentOrigin, missile->currentOrigin, bounce_dir ); VectorNormalize( bounce_dir ); } else { vec3_t missile_dir; VectorSubtract( ent->currentOrigin, missile->currentOrigin, missile_dir ); VectorCopy( missile->s.pos.trDelta, bounce_dir ); VectorScale( bounce_dir, DotProduct( forward, missile_dir ), bounce_dir ); VectorNormalize( bounce_dir ); } if ( owner->s.weapon == WP_SABER && owner->client ) {//saber if ( owner->client->ps.saberInFlight ) {//reflecting off a thrown saber is totally wild for ( i = 0; i < 3; i++ ) { bounce_dir[i] += Q_flrand( -0.8f, 0.8f ); } } else if ( owner->client->ps.forcePowerLevel[FP_SABER_DEFENSE] <= FORCE_LEVEL_1 ) {// at level 1 for ( i = 0; i < 3; i++ ) { bounce_dir[i] += Q_flrand( -0.4f, 0.4f ); } } else {// at level 2 for ( i = 0; i < 3; i++ ) { bounce_dir[i] += Q_flrand( -0.2f, 0.2f ); } } if ( !PM_SaberInParry( owner->client->ps.saberMove ) && !PM_SaberInReflect( owner->client->ps.saberMove ) && !PM_SaberInIdle( owner->client->ps.saberMove ) ) {//a bit more wild if ( PM_SaberInAttack( owner->client->ps.saberMove ) || PM_SaberInTransitionAny( owner->client->ps.saberMove ) || PM_SaberInSpecialAttack( owner->client->ps.torsoAnim ) ) {//really wild for ( i = 0; i < 3; i++ ) { bounce_dir[i] += Q_flrand( -0.3f, 0.3f ); } } else {//mildly more wild for ( i = 0; i < 3; i++ ) { bounce_dir[i] += Q_flrand( -0.1f, 0.1f ); } } } } else {//some other kind of reflection for ( i = 0; i < 3; i++ ) { bounce_dir[i] += Q_flrand( -0.2f, 0.2f ); } } } VectorNormalize( bounce_dir ); VectorScale( bounce_dir, speed, missile->s.pos.trDelta ); #ifdef _DEBUG assert( !Q_isnan(missile->s.pos.trDelta[0])&&!Q_isnan(missile->s.pos.trDelta[1])&&!Q_isnan(missile->s.pos.trDelta[2])); #endif// _DEBUG missile->s.pos.trTime = level.time - 10; // move a bit on the very first frame VectorCopy( missile->currentOrigin, missile->s.pos.trBase ); if ( missile->s.weapon != WP_SABER ) {//you are mine, now! if ( !missile->lastEnemy ) {//remember who originally shot this missile missile->lastEnemy = missile->owner; } missile->owner = owner; } if ( missile->s.weapon == WP_ROCKET_LAUNCHER ) {//stop homing missile->e_ThinkFunc = thinkF_NULL; } } Just a taste of reflection code. I suggest you also to check all code voices related to FP_SABER_DEFENSE and all the function this power calls. sure you will find the amount of reflection skill related to every force power levels.
  3. i Have max 5 and max 10 too, my OS is an XP SP3 32 bit . basically i do rigging and frankensteining, not modelling. (i got seven in past but is imploded >.< ) i have also blender 2.64 but i use only for exporting MD3.
  4. @@Cerez if you want to give a look to the code about that behavours, i see many things are setted into Q3_interface.CPP it define the function of icarus commands. these functions remind to other functions, deepest into the code. is much complicated. :\ Q3_interface.cpp case SET_NAVGOAL: if ( Q3_SetNavGoal( entID, (char *) data ) ) { Q3_TaskIDSet( ent, TID_MOVE_NAV, taskID ); return; //Don't call it back } break; If you get Openjk code (i suppose of yes because you did the facial animations) Search the Q3_SetNavGoal and Q3_TaskIDset function, for see how exactly they works.
  5. If you are using the yoda model used for mod Escape from yavin 4 the lost maps... this not have anykind of facial animation. :\ for edit a model already rigged on blender you need blender 2.64 with the blender plug in suite. you should be able to import a glm model and also, preserving his rigging. so you can add facial rig and re exporting, i think. also 3d max can import a glm with the correct plug in, but for what i know you lose the rigging information and you need to importe the JKA skeleton, scaling model, align to skeleton and remake all rig stuff work >.< then export into XSI format and build the new glm with carcass.
  6. like told the others! D: The arm is weighted to the bones of the other arm!
  7. ... I am thinking about a SP force power not, that allow to the jedi to teleport directly into the face of an opponent for surprise and slay him :
  8. I have max 5! . where i can get your dot Xsi max script importer ? root.XSI file of raven package number 3 + your impoter, understood
  9. There is a werewolf model into the deeps of filefront but is really a model of low quality, so is not a good idea make a frankensteining between this and a jedi robed model. . shoulb be a better idea if someone make a new model of this race.
  10. Ok, thanks for answers.
  11. Yes, also the humanoid skeleton can be used for animate not-humanoid creatures. it allow also to make saber damage by the mouth or other parts, just need simply to move the bolt_l_hand and bolt_r_hand tag on the body part that i wanna it the jedi into the fight. times ago i animated with humanoid skeleton a not humanoid simil-crub monster. the humanoid skeleton works fine also for rig a creature without legs, like an hutt, or an humanoid worm, or a triton. but the rig of tall part is very difficult. XD is possible to use also for a little fish, if the model is rigged just to the pelvis bone is sufficient. what is hard to make with humanoid skeleton is to animate a creature that run on 4 legs, like a wolf or an horse. i tryed and legs have bad deformations. for this i was searching some not humanoid skeleton with more of 2 legs for rig some creature like lizard, beasts etc.
  12. a glm skeleton import should be nice. Thanks, how can i get it? for which version of 3d max it run? Yes, @@mrwonko, i know the XSi suite the non humanoid skeletons are stored into part 3 if i remember fine. but when i see that into there was only the shapes with animation... i am searching not for animation but for the models bones for make rigging of not-humanoid creatures.
  13. Hello to alls. i have a little question. How can i find the original not humanoid skeleton with bones (not shapes like the raven sdk animation package) for 3d max, used for models of rancor, tauntaun, wampa, howler, droids and other not humanoid creatures of JO \ JA? i wanna use to rig some monster models...
  14. Oh man, i get max 5. i understand your empasse. i learn to make a model playable to JKA with these tutorials. http://psyko3d.50webs.com/tuts.html in specific, you need to study this: http://psyko3d.50webs.com/tutorials/jk2_guide.htm and http://psyko3d.50webs.com/tutorials/skin_modifier.htm I learned with that, so you can do too. warning: a mesh CANNOT have more of 1000 vertexes. check it with edit->properties of a mesh selected. if you get a mesh with more of 1000 vertexes, detach into 2 mesh or more, or carcass will refuse to build the GLM. you need however an XSI exporter for 3d max and the SDK kit for JKA modding.
  15. @@eezstreet , thanks. today we post into the same time. i read your post only after the mine LOL
  16. Okay now i paste by my Legacy of Kain mod code. (i did because i need of incapacitate spell of blood omen, lol ) Otherwise... Saber color tutorial!! Enjoy! http://jkhub.org/tutorials/article/205-adding-a-new-saber-color/
  17. Well... thanks. if you want i show you the freeze code... but is not concerned with the thread. XD
  18. Why but i have not any coding knowledge by school or study and i am not an expert of C++ or a programmer. i simply searched into the code all the entries for the tusken rifle (the more easy weapon, also player can use it ) and so i see in which part of code a weapon is encoded, so i addded my custom weapon in these parts. obvious, i printed and studied the related code for understand what i was doing XD. but with force power.... i cannot create a new weapon or force power by zero. i can make new weapons or force power merging the functions of the pre-existing code... and going on try and error, some times. it's not a theoretical scientifical approach, but it's the only way i know for learn something. at the end i obtained also a working force stasys power, obtained merging the force telepathy with force grip. it got also visual particellar efx spawned by the chest of enemies for duration.
  19. I begin to have a serious suspect... emmm... the openJK actual version support the AI of walking NPC , if waypoints are not into the maps, but they're added throught ent modding? D: @@Cerez try to make the same script running in a simply one room testmap when you recreate the same waypoint, NPC \ player, cinematic and script condition. if at parity of condition, into a map-bsp file it works, should be a problem of interface about entmodding, openjk e coded nav system. D: mmm , the eez'script should work. try it before.
  20. If i understood on my ignorance how to add new weapons, force power and sabercolor without university, sure you can do better of me.
  21. it's C++ for single player, and C for multiplayer. the langague is the same of c++ and use parameter like int, float, define, etc. so i guess you with your experience you can work on the code without any trouble. it's not much complicated after a lot of pratique. i am not a programmer, and not a math man, but i learn a lot of thing just with a basic knowledge of the commands and the dedution.
  22. Done. it's not much difficult and as what i see, the ui_saber menu function call the g_saber function and g_saber function depedn by servercomand. consolle comand are, strangely, setted into NPC_stats.cpp LOl. However, tutorial submited yesterday. waiting for approvation. i hope also to get some good feedback.
  23. Useful! Thanks Cerez!
  24. @@Antonis and @@godofcrap42 . tutorial about sabercolors incoming into the tutorials - code section.
×
×
  • Create New...