Jump to content

Langerd

Members
  • Posts

    2,046
  • Joined

  • Last visited

Posts posted by Langerd

  1.  are you talking about the Praetorians or the clones in this sentence?

     

    For the Phase 1 clones it's mostly the helemts and some very, very, very minor differences in the rest of the armor. Some of the hard creases on the surface of the armor follow a different path, the Troso armor has rounder pecs and the shoulder pads are a little different aswell.

     

    For the Praetorians it's just the helmet that varies between them

    I meant a praetorian guards here. Sry for confusing post but thanks for both ansers btw ;)

    The lower part connecting the main chestplate to the hips part seem to have more vertical details than the Phase 2 version, at least according to this image. The straps connecting the front and back parts of the chest armor are also a bit different, they look more "flexible" than just hard pieces. The armor parts covering the arms also seem longer, giving more cover. Overall, minor details.

    I see .. i didnt catched that . Interesting that Star Wars has always pay attention on details.

  2. I'll be honest with you guys - I'm not sure that that is ever going to happen.

     

    anyway, I did manage to do some mdoeling between rewriting portions of my map exporter code to accomodate the a better brush format.

     

    49ciNJfl.png

    Amazing! Their armors were different or they had different helmets only? 

     

     

     

    I seem to remember that there were also minor differences in the armor.

    I looked on the pics on google and .. i only see difference in their helmets. Maybe shoulders are little changed but nothinh much.

  3. Still don't understand how such detailed model, specifically with the armor of his arms is low poly that will work for both vanilla and OpenJK

    It works like that - you make a very detauled model first you even make a folds on the clothes and wrinkles scars on the face skin etc. To latere make a overlay model with simpler shape - the shape that will be optimalized for the game. And after that you bake these detailed elemnts of the first model ON the second model - that is secret of the magic. You put detail on the simple shaped model. Later with some techniques you add normal maps - this allows textures to catch lights and shadows on the realistic way so in the end resaults - you have simple model for jk3 with the textures that simulates shadow and lightning on the texture's details.

     

    Watch AshuraDX clone trooper on this site

    https://sketchfab.com/models/7a6eadecc3cd49a2ae39154c42b5a68f

    And look closely on the models details. At first they were like sculpture but later - they were changed to be more a texture of the model. - check the wireframe for better looking

    Noodle and dark_apprentice like this
  4. Like he said, this model has really only been done once, and isn't quite as accurate as it could be. This new one looks to be spot on. Not sure where the notion came from that there are dozens of this model.

    It is weird for me too.. we Havent seen a scout trooper in a long loong time.. and as far as i know there are more speeder bikes models (These from Endor) than their riders

     

    Ironic

    z3filus, Wasa and Jolly like this
  5. Well, that doesn't make any sense.  MAX_SABER_VICTIMS is 16 in the vanilla code, it's not 100.  I don't know what codebase you're using.  It that OpenJK or something?

     

    The victimEntityNum array exists just to prevent a single saber damage check from hitting more than 16 entities in a single frame.  It gets reset at the start of every call to saber damage checking (so for each blade, it's reset each frame, basically).  There's no way you should be hitting that limit - if you need to raise it over 16, something is going very wrong in your code.  100 is insane, much less 600!

     

    Do you still have this bit that clears the victimEntityNum array at the top of WP_SaberDamageTrace()?

    void WP_SaberDamageTrace( gentity_t *ent, int saberNum, int bladeNum )
    {
    	vec3_t		mp1, mp2, md1, md2, baseOld, baseNew, baseDiff, endOld, endNew, bladePointOld, bladePointNew;
    	float		tipDmgMod = 1.0f;
    	float		baseDamage;
    	int			baseDFlags = 0;
    	qboolean	hit_wall = qfalse;
    	qboolean	brokenParry = qfalse;
    
    	for ( int ven = 0; ven < MAX_SABER_VICTIMS; ven++ )
    	{
    		victimEntityNum[ven] = ENTITYNUM_NONE;
    	}
    

    If not, then the victimEntityNum array could start getting filled up and it will think you already hit that ent that frame - when you really hit it some previous frame.  But even that seems unlikely.

     

    Have you tried actually debug-stepping through the saber damage routine (starting at the top of WP_SaberDamageTrace) and seeing where your bad trace returns before the damage?  That would be the one sure way to know what's going wrong.

     

    Also, turn on the visual saber trace lines, they can be helpful when debugging what's going on with saber traces.

     

    d_saberCombat 2

     

    Should turn them on. I think you will need to compile a debug build for those to work though?

     

    timescale 0.1 

     

    Will slow things down enough to see the saber traces in action as you swing.

    Hmm sorry fo bad info - maybe i changed it and thought that it is set to 100 by default but i changed this value. ... Well sorry to tell You but i am not 100% exactly sure what You mean . The thing i have done worked .. But i will keep it on mind and try to understand what i need to change to fix this. If increasing this value may cause problems - i will try to what You showed me or find something new.

     

    Many Thanks for answer!

  6. So does this only happen if you set the corpses to never remove? I had asked that earlier...

    No. It only happend after multiple enemies on the map - already spawned - around 20 but it acted kinda weird. When 30 npc's were spawning in the begining of my map (so instantly when i play the map) it is random which npc will be like kebab and which not. (but not exactly.. as i said before - every enemy i killed on my map i remembered which will lose arm and which will not)

     

    The game is removing this likely to optimimalize itself... And it happens only with the lightsaber.

  7. I FOUND THE ANSWER!!! The change of the code is simple 

    In the beginning of the wp_saber.cpp we have line like this - 
     

    #define JK2_RAGDOLL_GRIPNOHEALTH
     
    #define MAX_SABER_VICTIMS 100
    static int victimEntityNum[MAX_SABER_VICTIMS];
    static float totalDmg[MAX_SABER_VICTIMS];
    static vec3_t dmgDir[MAX_SABER_VICTIMS];
    static vec3_t dmgNormal[MAX_SABER_VICTIMS];
    static vec3_t dmgBladeVec[MAX_SABER_VICTIMS];
    static vec3_t dmgSpot[MAX_SABER_VICTIMS];
    static float dmgFraction[MAX_SABER_VICTIMS];
    static int hitLoc[MAX_SABER_VICTIMS];
    static qboolean hitDismember[MAX_SABER_VICTIMS];
    static int hitDismemberLoc[MAX_SABER_VICTIMS];
    static vec3_t saberHitLocation, saberHitNormal={0,0,1.0};
    static float saberHitFraction;
    static float sabersCrossed;
    static int saberHitEntity;
    static int numVictims = 0;


    We must change : #define MAX_SABER_VICTIMS 100

    i change to 600 and it works fine. No issues so far - And for bonus i played entire cloud city map with corpseremoval time set to 0. Every enemy is dismemberable with the saber! 

    Many thanks :) (i will check the second thing - what will happen if i will set this value to 1 or 0) .
    Noodle likes this
  8. Ok, I have a few questions. For starters: How do you set up the parm1 command stuff? lol

    Parm is as far as i know - it enables to make script much much more - universal. With one script we can parent it to the multiple entities. Or we can make script like this 

     

    script that makes

     

    parm1 - give a 20armor 

    parm2 - this guy(s) die

    parm3 - they freeze

     

    later in gtkradiant

     

    - select the npc_spawner and in the key type - parm1 value- firstguy and select the other npc_spawner and make another key - key type - parm2 value- secondguy

    - select the scriptrunner and from what i remember - in the script runner you also need to type parm's. For this scriptrunner parm1's will be targeting enities with the name - firstguy and parm2's - secondguy

     

    it is hard for me to ... emmm describe.. maybe because i feel weird and my language is weak sorry

     

    EDIT: it doesnt need to be script_runner - in the npc_spawner you can add deathscript,spawnscript 

  9. Would make a super cool detail in the archives room if you added busts of few known sith lords infront of the pillars, similar to the jedi archives seen in episode two. There are plenty of good player models available here, so you would basically only need to take the head from one of those and make a few simple shapes with blender, and you're almost done. 

    jedi_archives03.jpg

    Cool idea here! (also i rly like this deleted scene. Normaly lively scenes is something i  miss in prequals.)

     

     

  10. I'll have to look at the code to see if I see any issues, but I can tell you that changing the HL_NONE above to HL_MAX is not a good idea. Those lines are declaring and initializing arrays of data - basically creating an array of size MAX_G2_COLLISIONS and filling it in with blank data. By setting them to HL_MAX instead of HL_NONE, all you're doing is initializing those arrays to something other than 0, which would make the code think that every part of the array has already been filled in with a hit location, which would make it think it's out of collisions.

     

    Without looking at your code, all I can imagine is that whatever you're doing to cause hit location/dismemberment with guns is filling up this array (is MAX_G2_COLLISIONS == 20?) and somehow your code is not clearing that array for the next frame as it should. I'd look and see where those arrays are referenced and find where they are getting cleared/reset back to their default values (0, HL_NONE, HL_NONE and qfalse, respectively). That should be happening at the end or start of each frame somewhere. If those global arrays are never cleared, they will fill up and you will no longer get any more valid hitlocs or dismemberments.

    The point is i always had this issue in jk3 - but not in jk2.

     

    Check it by yourself - spawn 20-30 enemies and just try kill them all. I bet that some guys wont dismember. I rly hope to find a way to remove this code fence.

    It mostly happens on the large maps too.

  11. You can just simply make everyone undying. It will make them to 1hp BUT it will load deathscript. I suggest two things - One thing is adding the effect to the animation.cfg  some explosion or something) and make deathscript that teleports everykilled person to the box somewhere in the map where is simple trigger_multiply that removes entity that it uses.. but it is something weird. It might work (because body cant disapear). I had a problem with scripts with kill or remove because i had to always type a name of the target entity.. i wanted overall effect - not just to one enitity only.

    The second thing which i less recommend is - give them undying on and deathscript to every enemy to just remove. 


    about the effect.. i remember that Szico made barrels in his moonbase lab map that used the effects on the map. He made a script that was very comlicated - after the the death of the barrel the effect of explosion was taking origins of the barrel and showed up where barrel was. It was a little buggy in SP and it wasnt working everytime. 

    Droidy365 likes this
  12. @MrGummelt

    Ok! I Am 100% sure that this is code issue. And i may found the issue:

    In the wp_saber.cpp i found this lines and most importantly i found one line that i will select here with red font (I am not coder but maybe We will found a solution to fix this)

     

     

    qboolean WP_SaberDamageEffects( trace_t *tr, const vec3_t start, float length, float dmg, vec3_t dmgDir, vec3_t bladeVec, int enemyTeam, saberType_t saberType, saberInfo_t *saber, int bladeNum )

    {
     
    int hitEntNum[MAX_G2_COLLISIONS];
    for ( int hen = 0; hen < MAX_G2_COLLISIONS; hen++ )
    {
    hitEntNum[hen] = ENTITYNUM_NONE;
    }
    //NOTE: = {0} does NOT work on anything but bytes?
    float hitEntDmgAdd[MAX_G2_COLLISIONS] = {0};
    float hitEntDmgSub[MAX_G2_COLLISIONS] = {0};
    vec3_t hitEntPoint[MAX_G2_COLLISIONS];
    vec3_t hitEntNormal[MAX_G2_COLLISIONS];
    vec3_t bladeDir;
    float hitEntStartFrac[MAX_G2_COLLISIONS] = {0};
    int trHitLoc[MAX_G2_COLLISIONS] = {HL_NONE};//same as 0
    int trDismemberLoc[MAX_G2_COLLISIONS] = {HL_NONE};//same as 0
    qboolean trDismember[MAX_G2_COLLISIONS] = {qfalse};//same as 0
    int i,z;
    int numHitEnts = 0;
    float distFromStart,doDmg;
    int hitEffect = 0;
    const char *trSurfName;
    gentity_t *hitEnt;
     
    VectorNormalize2( bladeVec, bladeDir );
     
    for (z=0; z < MAX_G2_COLLISIONS; z++)
    {
    if ( tr->G2CollisionMap[z].mEntityNum == -1 )
    {//actually, completely break out of this for loop since nothing after this in the aray should ever be valid either
    continue;//break;//
    }
     
    CCollisionRecord &coll = tr->G2CollisionMap[z];
    //distFromStart = Distance( start, coll.mCollisionPosition );
    distFromStart = coll.mDistance;
     
    /*
    //FIXME: (distFromStart/length) is not guaranteed to be from 0 to 1... *sigh*...
    if ( length && saberHitFraction < 1.0f && (distFromStart/length) < 1.0f && (distFromStart/length) > saberHitFraction )
    {//a saber was hit before this point, don't count it
    #ifndef FINAL_BUILD
    if ( d_saberCombat->integer )
    {
    gi.Printf( S_COLOR_MAGENTA"rejecting G2 collision- %4.2f farther than saberHitFraction %4.2f\n", (distFromStart/length), saberHitFraction  );
    }
    #endif
    continue;
    }
    */
     
    for ( i = 0; i < numHitEnts; i++ )
    {
    if ( hitEntNum == coll.mEntityNum )
    {//we hit this ent before
    //we'll want to add this dist
    hitEntDmgAdd = distFromStart;
    break;
    }
    }
    if ( i == numHitEnts )
    {//first time we hit this ent
    if ( numHitEnts == MAX_G2_COLLISIONS )
    {//hit too many damn ents!
    continue;
    }
    hitEntNum[numHitEnts] = coll.mEntityNum;
    if ( !coll.mFlags )
    {//hmm, we came out first, so we must have started inside
    //we'll want to subtract this dist
    hitEntDmgAdd[numHitEnts] = distFromStart;
    }
    else
    {//we're entering the model
    //we'll want to subtract this dist
    hitEntDmgSub[numHitEnts] = distFromStart;
    }
    //keep track of how far in the damage was done
    hitEntStartFrac[numHitEnts] = hitEntDmgSub[numHitEnts]/length;
    //remember the entrance point
    VectorCopy( coll.mCollisionPosition, hitEntPoint[numHitEnts] );
    //remember the normal of the face we hit
    VectorCopy( coll.mCollisionNormal, hitEntNormal[numHitEnts] );
    VectorNormalize( hitEntNormal[numHitEnts] );
     
    //do the effect
     
    //FIXME: check material rather than team?
    hitEnt = &g_entities[hitEntNum[numHitEnts]];
    if ( hitEnt
    && hitEnt->client
    && coll.mModelIndex > 0 )
    {//hit a submodel on the enemy, not their actual body!
    if ( !WP_SaberBladeUseSecondBladeStyle( saber, bladeNum )
    && saber->hitOtherEffect )
    {
    hitEffect = saber->hitOtherEffect;
    }
    else if ( WP_SaberBladeUseSecondBladeStyle( saber, bladeNum )
    && saber->hitOtherEffect2 )
    {
    hitEffect = saber->hitOtherEffect2;
    }
    else
    {
    hitEffect = G_EffectIndex( hit_sparks );
    }
    }
    else
    {
    if ( !WP_SaberBladeUseSecondBladeStyle( saber, bladeNum )
    && saber->hitPersonEffect )
    {
    hitEffect = saber->hitPersonEffect;
    }
    else if ( WP_SaberBladeUseSecondBladeStyle( saber, bladeNum )
    && saber->hitPersonEffect2 )
    {
    hitEffect = saber->hitPersonEffect2;
    }
    else
    {
    hitEffect = G_EffectIndex( hit_blood_sparks );
    }
    }
    if ( hitEnt != NULL )
    {
    if ( hitEnt->client )
    {
    class_t npc_class = hitEnt->client->NPC_class;
    if ( npc_class == CLASS_SEEKER || npc_class == CLASS_PROBE || npc_class == CLASS_MOUSE || npc_class == CLASS_REMOTE ||
         npc_class == CLASS_GONK || npc_class == CLASS_R2D2 || npc_class == CLASS_R5D2 ||
         npc_class == CLASS_PROTOCOL || npc_class == CLASS_MARK1 || npc_class == CLASS_MARK2 ||
         npc_class == CLASS_INTERROGATOR || npc_class == CLASS_ATST || npc_class == CLASS_SENTRY )
    {
    if ( !WP_SaberBladeUseSecondBladeStyle( saber, bladeNum )
    && saber->hitOtherEffect )
    {
    hitEffect = saber->hitOtherEffect;
    }
    else if ( WP_SaberBladeUseSecondBladeStyle( saber, bladeNum )
    && saber->hitOtherEffect2 )
    {
    hitEffect = saber->hitOtherEffect2;
    }
    else
    {
    hitEffect = G_EffectIndex( hit_sparks );
    }
    }
    }
    else
    {
    // So sue me, this is the easiest way to check to see if this is the turbo laser from t2_wedge,
    // in which case I don't want the saber effects goin off on it.
    if ( (hitEnt->flags&FL_DMG_BY_HEAVY_WEAP_ONLY)
    && hitEnt->takedamage == qfalse
    && Q_stricmp( hitEnt->classname, "misc_turret" ) == 0 )
    {
    continue;
    }
    else
    {
    if ( dmg )
    {//only do these effects if actually trying to damage the thing...
    if ( (hitEnt->svFlags&SVF_BBRUSH)//a breakable brush
    && ( (hitEnt->spawnflags&1)//INVINCIBLE
    ||(hitEnt->flags&FL_DMG_BY_HEAVY_WEAP_ONLY) )//HEAVY weapon damage only
    )
    {//no hit effect (besides regular client-side one)
    hitEffect = 0;
    }
    else
    {
    if ( !WP_SaberBladeUseSecondBladeStyle( saber, bladeNum )
    && saber->hitOtherEffect )
    {
    hitEffect = saber->hitOtherEffect;
    }
    else if ( WP_SaberBladeUseSecondBladeStyle( saber, bladeNum )
    && saber->hitOtherEffect2 )
    {
    hitEffect = saber->hitOtherEffect2;
    }
    else
    {
    hitEffect = G_EffectIndex( hit_sparks );
    }
    }
    }
    }
    }
    }
     
    //FIXME: play less if damage is less?
    if ( !g_saberNoEffects )
    {
    if ( hitEffect != 0 )
    {
    //FIXME: when you have multiple blades hitting someone for many sequential server frames, this can get a bit chuggy!
    G_PlayEffect( hitEffect, coll.mCollisionPosition, coll.mCollisionNormal );
    }
    }
     
    //Get the hit location based on surface name
    if ( (hitLoc[hitEntNum[numHitEnts]] == HL_NONE && trHitLoc[numHitEnts] == HL_NONE)
    || (hitDismemberLoc[hitEntNum[numHitEnts]] == HL_NONE && trDismemberLoc[numHitEnts] == HL_NONE)
    || (!hitDismember[hitEntNum[numHitEnts]] && !trDismember[numHitEnts]) )
    {//no hit loc set for this ent this damage cycle yet
    //FIXME: find closest impact surf *first* (per ent), then call G_GetHitLocFromSurfName?
    //FIXED: if hit multiple ents in this collision record, these trSurfName, trDismember and trDismemberLoc will get stomped/confused over the multiple ents I hit
    trSurfName = gi.G2API_GetSurfaceName( &g_entities[coll.mEntityNum].ghoul2[coll.mModelIndex], coll.mSurfaceIndex );
    trDismember[numHitEnts] = G_GetHitLocFromSurfName( &g_entities[coll.mEntityNum], trSurfName, &trHitLoc[numHitEnts], coll.mCollisionPosition, dmgDir, bladeDir, MOD_SABER, saberType );
    if ( trDismember[numHitEnts] )
    {
    trDismemberLoc[numHitEnts] = trHitLoc[numHitEnts];
    }
    /*
    if ( trDismember[numHitEnts] )
    {
    Com_Printf( S_COLOR_RED"Okay to dismember %s on ent %d\n", hitLocName[trDismemberLoc[numHitEnts]], hitEntNum[numHitEnts] );
    }
    else
    {
    Com_Printf( "Hit (no dismember) %s on ent %d\n", hitLocName[trHitLoc[numHitEnts]], hitEntNum[numHitEnts] );
    }
    */
    }
    numHitEnts++;
    }
    }

     



    Ok now the observations - THIS Line is (i am 100% sure) for the entities (Mostly for npc's because they have hitloc system) that are one of the 20th - 40th etc. loaded glm model on the map. I dont know if this for optimalization purpose but for some reason game turns off the dismember for npc's completely. It hit limit but i dont know what is this limit and where i can increase it. The best solution would be to remove this system COMPLETELY. And now some weird stuff..  i was checking some things and see how they works in the game and i end up confused... When i removed these lines from the code - wp_saber.cpp

    2275 to 2299 something weird... happend. The enemies are now completely not dismember able... ALL of them. So it screwed up the npc's that were working. I turned on the g_debugdamage code  and i see this 

    UT3BdHI.jpg

    Hitloc shows -none- so game doesnt reconize the saber hit as the dismember hit. .. and the this is not the weirdest part...

    in the begining of the code i changed the 
     

    float hitEntStartFrac[MAX_G2_COLLISIONS] = {0};
    int trHitLoc[MAX_G2_COLLISIONS] = {HL_NONE};//same as 0  HL_MAX
    int trDismemberLoc[MAX_G2_COLLISIONS] = {HL_NONE};//same as 0 to HL_MAX
    qboolean trDismember[MAX_G2_COLLISIONS] = {qfalse};//same as 0

     

     

    Aaaaaandddd... this is the part i am 100% SURE that these lines in this code optimalize the game to turn of the dismember for reaching the limit or bytes that game is using. Blocks only for saber.. of course.

    The enemies after this change.... are completely invincible because the hitloc on the saber .. shows (null). I created a bug (for observation purpose of course) and i cant kill the enemies... THIS IS NOT TRUE because ENEMIES with working dismemberment (as i said in one of the threads .. i played my cloud city map so often that i remember which enemy i can dismember and which not) ARE DYING WITH THE SABER *Mindblow* Soooo the enemies with not working dismember are not dying with the lightsaber hit but the guys with the dismember working - are dying.. with dismember. 

    Here are screens to prove it to all of you.

    ySt0Qvu.jpg
    pYs6jEV.jpg
    stPUPjC.jpg
    apQFNrs.jpg
    8ApVfjE.jpg
    VRN8TJi.jpg

    AAAAAA how to fix this!!!! Grrryyyyrrrrrwwrwrw

    Smoo likes this
  13. I dont know if this thread is no longer active but i have a small question about dismember the enemies with the saber. If I will spawn 20 enemies on my map not all of them have working dismember - not like the Jedi Outcast .. this game has no limit with that. 

    But i found out that Jk3 has this weird issue only with the lightsaber. When i dismember someone with the guns (I coded weapons to dismember enemies) and when i use script - everyone dismember. Lightsaber has this weird issue - when i kill 20 enemies the hitloc for lightsaber turns off. How to fix this or how to increase the limit of the entities that has wroking hitloc system to make saber work fine every time?

  14. Ok i just checked the Jedi outcast ... and after i turned on the dismember g_saberrealisticcombat 3 which no longer works in the Jk3 i ... spawned 30 imperial officers... Everyone of them were .. lost limbs. 

    So i am 100% sure that Jedi Academy has some code block for the lightsaber ONLY. I can dismember every enemy with my guns - i can dismember them with scripts .. but i cant do that with saber. 

    Anyone knows how to fix this annoying shit?



    EDIT:

    In Wp_saber  line 2276 i found this
     

    //Get the hit location based on surface name
    if ( (hitLoc[hitEntNum[numHitEnts]] == HL_NONE && trHitLoc[numHitEnts] == HL_NONE)
    || (hitDismemberLoc[hitEntNum[numHitEnts]] == HL_NONE && trDismemberLoc[numHitEnts] == HL_NONE)
    || (!hitDismember[hitEntNum[numHitEnts]] && !trDismember[numHitEnts]) )
    {//no hit loc set for this ent this damage cycle yet
    //FIXME: find closest impact surf *first* (per ent), then call G_GetHitLocFromSurfName?
    //FIXED: if hit multiple ents in this collision record, these trSurfName, trDismember and trDismemberLoc will get stomped/confused over the multiple ents I hit
    trSurfName = gi.G2API_GetSurfaceName( &g_entities[coll.mEntityNum].ghoul2[coll.mModelIndex], coll.mSurfaceIndex );
    trDismember[numHitEnts] = G_GetHitLocFromSurfName( &g_entities[coll.mEntityNum], trSurfName, &trHitLoc[numHitEnts], coll.mCollisionPosition, dmgDir, bladeDir, MOD_SABER, saberType );
    if ( trDismember[numHitEnts] )

    It is annoying ..  i believe not only for me.
  15. @@Langerd @ Here, try these settings in your "autoexec" (or whichever you use) and please tell me the results!

     

    set cg_dismember 2

    set com_blood 1

    set g_dismember 100

    set g_dismemberment 3

    set g_DismemberProbabilities 0

    set g_SaberMoreRealistic 3

    set saberdamagescale 1000

     

    Setting the probabilities to 100 only works if the NPC's probabilities are also set to 100 or higher... otherwise it gets overridden and won't always work. BUT setting it to 0 negates all of it, and completely ignores probabilities altogether meaning anyone can be dismembered no matter what. After tons of trial and error, this is what I came up with that ensures it works. (and also looking at lots of tutorials and doing experiments lol)

     

    The only other reason why it wouldn't work is due to dismembering limits within maps. After a certain point, spawned NPCs no longer have dismembering due to an in-game limit that's built in or something like that. You'd need a custom install of OpenJK that increases this limit I believe. (although I can't help with that as it involves coding, someone else will have to help with that sadly)

    That would be a good thing to change.. it is annoying.. stupid and i rly dont like it... And it is weird - there is nothing new happening on the screen than caps showing up when we cut someone. 

     

    Anyone knows how to fix this with some code work? 

     

    EDIT: From the observation - this happens with the saber only because i made weapons to dismember .. and.. guess what... - They dismember everytime with guns not with saber so there must be some block in the code.

  16. Dude stop with this spamming. This is not a messenger and also it is not like every jkhub member need instantly know about new changes to this model. 

    AshuraDX told You that in the last comment:

     

    @ This is not an instant messenger. Please avoid such message spam in the future.

     

    Anyway - it looksl ike you realsie, that you can't simply copy texture files over to change the appearence of a model everytime.

    If you want to put that ehad onto my rorschachs body, you should look into Frankensteining/Frankenstein Modeling with Blender.

    AshuraDX, Lancelot and Droidy365 like this
  17. Yes that is completely doable. You have to use a hex editor to make the animations and player model reference each other. There's a tutorial on the site to do that.

    The downside is that the modded character will not work in cut scenes. Cut scenes reference specific animations that the newly hexed character can not.

    I used this with my backhand animations, Link animations, and Toshi did this with his Yoda model. I learned by opening Yoda and seeing how he did it.

    To fix this i recommend making the same player model using the normal _humanoid and later when making cutscenes - make new _humanoid_cutscenemap just to make cutscene animations. With this method we can use the new playermodel with diffrent animations and make him play animations in the cutscene

×
×
  • Create New...