Jump to content

Tempust85

Members
  • Posts

    4,085
  • Joined

  • Last visited

Everything posted by Tempust85

  1. And also the lowest LOD is used for stencil shadows which makes it very important for every model to have LODs. Side note: If only someone could fix stencil shadows self-shadowing, then they'd look nice.
  2. Bone angles, by that I mean the bone axis and they MUST be matching against the base JKA humanoid. My bad, I suck at explaining things which is why you hardly ever see tuts from me.
  3. Yeah, root pose and proportions can be whatever it's just the bone names and angles that must match up. Wouldn't be an issue if Raven made this coded stuff into an external file. Just use the player humanoid as a reference, just easier and this big guy will have everything a normal player has. Can't wait to fight him as him, best way to test out the animations.
  4. You use CAT the same way you use CS biped - as a shadow rig. No need to be telling any exporter to ignore a shadow rig, just do an export selected - it's what I do for MBII. I just find CAT to be more versatile. Now incase you aren't aware, JKA uses specific bone names and angles so make sure everything matches up to the stock standard humanoid skeleton, just different proportions. It will refuse to load a model if it's missing a few key bones and you need matching bone angles for torso & head pitch and yaw when looking around. I found this out the hard way.
  5. Doubtful. You'd only be able to load save games that have been saved after your code edits.
  6. Why not use CAT? Also how did you bake that?
  7. Honestly I was just going to have players get their Force powers and increased ranks as they progress through the game, like JK2. Requires no additional coding, and everything is set via scripting. I think what needs to be worked on more are the Force powers that aren't already in JKA like destruction, etc before we start on a player choice ranking system.
  8. I've had a go at getting OGM implemented on DF2's OpenJK fork https://github.com/DT85/OpenDF2/tree/OGM Compiles and plays, but it if you skip a previous video (eg the intro roq) it will take the time you've watched that video before skipping it into account and offset the start of the OGM video. The sound is coming through all horrible and the video won't play again once finished (even on map reload).
  9. Just to fix this up a bit in-case someone needs the info: It starts with a silent ROQ that plays the 'STAR WARS' logo. The text crawl music plays from its own MP3, not the ROQ. The ROQ finishes playing and the last frame is shown on-screen until the music stops.The text comes in through a TGA and gets scrolled across the screen.Once the music ends, the game does whatever is scripted next. That could be: play another ROQ, run an in-game cutscene, load a map, etc.
  10. So I'm trying to add specular to my func_static and func_door, but alphaGen lightingSpecular doesn't work. alphaGen wave inversesawtooth 0 1 0 1.65 does so I've ruled out alphaGen itself not working with it. Things to know: - tried a seperate specular texture and specular in the diffuse alpha channel, no luck - tried shaders that work on normal brushwork & MD3 models, no luck Anyone have an idea as to what seems to be blocking a func_ entity from using alphaGen lightingSpecular? @@ensiform @@Xycaleth
  11. Well he's meant to have a slightly crooked nose. After all, hamill broke it.
  12. Lol I really don't like my EPVII Luke, my attempt at being one of the cool kids and use Zbrush for JKA.
  13. Floors are all done, and I've made a test_floors map (found in the the map source zip) so mappers can see/hear what each floor is like.
  14. I'm currently going through each floor texture and adding shaders for specular, env, glow and defining footstep sounds/effects. Once I'm done with them, I'll move onto the walls.
  15. Updated the pk3 on dropbox. Fixed an issue in radiant where shaders where being sorted into "df2" and textures without shaders into "DF2" - they are now all in "df2". @@minilogoguy18, need to make sure you're in "JKA SP mapping mode" and setting "JKA custom mod" as "DF2".
  16. Just need to run that simple script on any level you want to have sith heads. You can add a run script in the base JKA scripts or just add the sith eyes set type to the affect player codeblock that's already present. I was just thinking, every head will now need a sith variant skin file or you'll get a missing skin error.
  17. I've re-sorted all textures into "easier-to-find-the-texture-you-want" folders. Mappers - expect your textures to be broken, but radiant has a feature to find & replace textures. Will upload the changed assets pk3 tomorrow.
  18. @@redsaurus would you kindly add the code to your next JK Enhanced update?
  19. A much better way is to add a sith eyes set type to icarus, like the winter gear: Under case SET_WINTER_GEAR in Q3_interface.cpp, put this: case SET_SITH_EYES: { // If this is a (fake) Player NPC or this IS the Player... if (entID == 0 || (ent->NPC_type && Q_stricmp(ent->NPC_type, "player") == 0)) { char strSkin[MAX_QPATH]; // Set the sith eyes Skin if true, otherwise set back to normal configuration. if (Q_stricmp("true", ((char *)data)) == 0) { //Go through and check what head skin the player has selected, and load the appropriate sith version. if (Q_stricmp(g_char_skin_head->string, "head_a1") == 0) //head_a1.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_a1_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_a2") == 0) //head_a2.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_a2_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_a3") == 0) //head_a3.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_a3_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_a4") == 0) //head_a4.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_a4_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_b1") == 0) //head_b1.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_b1_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_b2") == 0) //head_b2.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_b2_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_b3") == 0) //head_b3.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_b3_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_b4") == 0) //head_b4.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_b4_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_c1") == 0) //head_c1.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_c1_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_c2") == 0) //head_c2.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_c2_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_c3") == 0) //head_c3.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_c3_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_c4") == 0) //head_c4.skin { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_c4_sith", g_char_skin_torso->string, g_char_skin_legs->string); } } else if (Q_stricmp(g_char_skin_head->string, "model_default") == 0 && Q_stricmp(g_char_skin_torso->string, "model_default") == 0 && Q_stricmp(g_char_skin_legs->string, "model_default") == 0) { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/model_default.skin", g_char_model->string); } else { Com_sprintf(strSkin, sizeof(strSkin), "models/players/%s/|%s|%s|%s", g_char_model->string, g_char_skin_head->string, g_char_skin_torso->string, g_char_skin_legs->string); } int iSkinID = gi.RE_RegisterSkin(strSkin); if (iSkinID) { gi.G2API_SetSkin(&ent->ghoul2[ent->playerModel], G_SkinIndex(strSkin), iSkinID); } } break; } Then find SET_WINTER_GEAR again in Q3_interface.cpp and add ENUM2STRING(SET_SITH_EYES) under it like this: ENUM2STRING(SET_FORCE_RAGE), ENUM2STRING(SET_FORCE_PROTECT), ENUM2STRING(SET_FORCE_ABSORB), ENUM2STRING(SET_FORCE_DRAIN), ENUM2STRING(SET_WINTER_GEAR), ENUM2STRING(SET_SITH_EYES), ENUM2STRING(SET_NO_ANGLES), ENUM2STRING(SET_SABER_ORIGIN), ENUM2STRING(SET_SKIN), Then add SET_SITH_EYES under SET_WINTER_GEAR in Q3_interface.h. Then copy the updated Q3_interface.h to your "SourceForBehavEd" directory so BehavED.exe has the update. Do a script like this: //Generated by BehavEd rem ( "comment" ); affect ( "player", /*@AFFECT_TYPE*/ FLUSH ) { set ( /*@SET_TYPES*/ "SET_SITH_EYES", /*@BOOL_TYPES*/ "true" ); } And load it in your map using the scriptrunner ent. You will need to run this simple script everytime the level starts. Download my test that includes a test level (map test in console)with its source, test sith skins and compiled code: https://dl.dropboxusercontent.com/u/16660487/JKA/Sith_Eyes_Test.zip
  20. Can absolutely do it on a fresh copy of OpenJK's code, doesn't need JK enhanced specifically. It also cannot be scripted.
  21. Needs to be put into OpenJK or jk enhanced game code, no Icarus scripting required.
  22. Copy it in and compile, it should work but it's untested. Like I said, can always add more support for additional head files.
  23. How is sof2's fork of OpenJK going these days? Some neat progress was done last I looked.
  24. EDIT: I think I've found a way to do this: else if (Q_stricmp("kor1", level.mapname) == 0 || Q_stricmp("kor2", level.mapname) == 0 && player->client->sess.mission_objectives[LIGHTSIDE_OBJ].status == 2) //pulled this from elsewhere in the game code, so should be legit. { //Go through and check what head skin the player has selected, and load the appropriate sith version. if(Q_stricmp(g_char_skin_head->string, "head_a1") == 0) //head_a1.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_a1_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_a2") == 0) //head_a2.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_a2_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_a3") == 0) //head_a3.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_a3_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_a4") == 0) //head_a4.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_a4_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_b1") == 0) //head_b1.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_b1_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_b2") == 0) //head_b2.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_b2_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_b3") == 0) //head_b3.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_b3_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_b4") == 0) //head_b4.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_b4_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_c1") == 0) //head_c1.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_c1_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_c2") == 0) //head_c2.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_c2_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else if (Q_stricmp(g_char_skin_head->string, "head_c3") == 0) //head_c3.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_c3_sith", g_char_skin_torso->string, g_char_skin_legs->string); } else (Q_stricmp(g_char_skin_head->string, "head_c4") == 0) //head_c4.skin { Com_sprintf(skinName, sizeof(skinName), "models/players/%s/|%s|%s|%s", g_char_model->string, "head_c4_sith", g_char_skin_torso->string, g_char_skin_legs->string); } } Need to do checks to see what head skin we are currently using in order to change to the correct one. This should cover all base heads, but can always add support for more.
×
×
  • Create New...