DarthParametric

Modders
  • Content Count

    4,568
  • Joined

  • Last visited

  • Days Won

    514

Everything posted by DarthParametric

  1. I'm assuming these are all the debug functions? PrintString, AurPostString and the like? I was playing with those only yesterday and noticed that despite removing if (!ShipBuild()) checks, they still didn't appear to function. I assume they gutted them from the retail release altogether? While they are unnecessary for the code to run, I would argue they should remain in any decompiled scripts since, in the absence of commented source for the module scripts, the debug functions are the only thing remaining that can indicate developer intent. Additionally, the user can manually change them to SendMessageToPC for their own debugging purposes if needed.
  2. Anticipation building for the announcement of the winners in 2021.
  3. Deleting geometry is actually ok. It's only adding new geometry that destroys the weights. This was something I was going to come back and add after re-reading what Malkior said. Namely that you could select the appropriate block of polys around the neck region all weighted 1 to torsoUpr_g, then duplicate the mesh, on the original delete the selected polys, on the duplicate invert and delete everything else. Now on the split out neck piece you can add new geometry with impunity, as long as you don't reposition/alter the bottom ring of verts that mate to the rest of the body. Reskinning it manually once modelling is complete is trivial, since all the verts will be weighted 100% to one bone.
  4. Since only walkmeshes support multi-materials, you'll either have to split the leaves out to separate meshes to assign a different texture, or create a new double width texture with both branch and leaf textures side-by-side. The latter approach may be the easier route if you have to completely remap them anyway. Max's UV tools are pretty clunky. I assume GMax's are even more limited, but the basics should be mostly the same. I'd suggest a search on Youtube. Some basic Max tutorials should be broadly applicable if you can't find anything GMax-specific. Just keep in mind that the lightmap UVs are stored in channel 2, so be careful you don't destroy those. Your problem with collars is going to be that you'll need more geometry to make anything half-decent, which will destroy the skin weights. There are ways around that, but GMax is not particularly ideal for it since it lacks some of the tools Max has.
  5. The problem with the trees (or any other level geometry) is that new additions will need to be lightmapped. Given that we don't have the light positions used for the original bakes, you have to completely guess and do a lot of fiddling with settings/rebaking. Probably not what I would suggest for someone just starting out. Armour/clothes/robes are all skinned meshes, the same as heads, etc. Adding geometry or welding verts will destroy the skin weights, since weights are assigned per vertex and thus rely on unique vert ID numbers, so this is not something to be done haphazardly. You can shuffle vert positions around without affecting the weights, but there's only so much you can do with that. Especially since moving a vert too far from its starting point will likely introduce undesirable deformation during animation. You might want to describe in more detail what it is you want to achieve. Also, regarding Max, if you have an EDU email address you can get free educational versions of Autodesk products. Licenses should be valid for 2 years.
  6. TSLPatcher doesn't support changing existing StrRefs in a TLK, only adding new ones. So there is no practical way to merge modified TLKs other than manually.
  7. Yeah, I'm sure we've discussed it before, but I don't recall ever testing it. I guess I should bust out a baseitems edit and see what happens.
  8. There are only two races in KOTOR, Human and Droid. Wookiees and Zabrak are a Human sub-race. So the User limitation property only tells the game whether it is for Droids or Humans. In K1, Wookiees are restricted from using robes and such via baseitems.2da. I thought that the Sub-race property added in TSL could be used to do the same directly in the UTI, but it seems selecting Human as the sub-race just acts the same as the User Limitation. You can limit and item only to Bao-Dur or Wookiees, but not restrict them. That would still have to be done in baseitems.2da. @JCarter426 might have to weigh in on that. I have vague memories of discussing the denysubrace column in the past, whether or not it can be tallied to cover more than one sub-race. Armour and robes are divided into body types for different armour classes. What model is assigned for each is defined in appearance.2da. Revan's robes uses its own unique body type, body J. Hence the model name is PxBJ. You'll want to read up on how that all works before going further.
  9. By default, companions don't have a body model assigned for the J slot (Revan's robes). It will required editing appearance.2da to add it in. Adding a Sub-race: Human restriction should prevent Bao-Dur from using it, since he is the Zabrak sub-race.
  10. I think @bead-v just reused NWMax's snooper, and it's pretty barebones. There are alternatives around. The Dragon Age I/O script used one called YAGG, which IIRC did pop up a save dialogue. It's possible that the existing one can too, but maybe it's just not being fed the command to do so (the script outputs instructions to the Listener that tells it what to do). Since you input the export location in the base's modifier panel right above the export button, I imagine it was determined there was little need for it.
  11. I'm not even sure what you mean by that. You shouldn't need to manually run it if the script is set up to launch automatically with GMax. Click the little up arrow in the taskbar to reveal hidden icons.
  12. GMax is crippleware, being a cut-down version of Max 4 made for demo purposes. Thus it has no native export function. To get around that, scripts like KMax output to the Listener, then rely on a "snooper" to grab that and save it out to a file. Sounds like it isn't running in your case. You should see a green icon in the taskbar if it is. Do you have a "kotormax.exe" in the root of your GMax folder?
  13. Nah, I was too quick to jump to conclusions rather than reading the post properly. Always start with the principle of parsimony.
  14. Normally you play movies outside a conversation. You could try adding a delay, like so: void main() { ActionPauseConversation(); PlayMovie("MiraRomance", FALSE); ActionResumeConversation(); } You could also try setting a specific amount of pause, either in the script or in the DLG itself. If that doesn't work you'll probably have to break out of the convo, play the movie, then re-initiate the convo, which would require new dialogue nodes, new scripts, and possibly an invisible helper placeable.
  15. You're trying to compile a TSL version of the function in K1 mode. There is no second argument for the K1 version of PlayMovie, so the compiler throws an error ("too many arguments"). You have to switch the game you're compiling for in the options.
  16. To compile, export with animations and the layout position option enabled. Grab the latest beta of MDLEdit, set the game to TSL by hitting the big button for game version, File -> Load to load the ASCII, File -> Export -> Binary to compile. You can delete the WOK, since you want to use the vanilla walkmesh. Copy and paste the MDL/MDX to your Override. To have KMax automatically load in textures, in GMax go to Customize -> Configure Paths -> Bitmaps then click the Add button and browse to the directory containing your textures. I would advise extracting all the textures for both games into separate directories (they'll need to be converted to TGAs) and adding both to the list. KMax will check directories for textures in the order they are listed in GMax, so for texture names that are shared between both games but differ in content (for example, PxBI robe textures) you will have to manually reassign the correct game-version texture in the material editor. Trying to explain how GMax's Material Navigator (three coloured balls icon on the toolbar) and Material Editor (single shiny red ball icon) work (and how they differ from Max) is an extensive subject of its own, so I'd suggest you try Googling that.
  17. Correct, they are just alpha-masked planes - i.e. 2D images. Try repainting Mission's underwear model if you want a good starting point.
  18. You're not using the latest MDLOps by the looks. That's a non-compliant ASCII. If you had to decompile the binary this is not your original model presumably. Decompile it with MDLEdit. Grab the latest beta version from this post.
  19. One of your blade planes likely has its scale value set to 1.0 instead of 0.0. Open the ASCII in a text editor and correct it, then recompile.
  20. It's a common problem when selecting the option in the terminal that you accidentally cancel the cinematic. I tried to fix this in K1CP but didn't have much luck. The DS credits is a known issue due to it being hard-coded in the exe. When you use a widescreen hack, it doesn't apply to the DS credits because Bioware used an extremely clunky brute force hack to get them to play immediately after the pre-rendered fleet cutscene. A solution would require an exe hack, so unless @ndix UR wants to tackle it you'll probably just have to live with it.
  21. The first thing you want to do is turn on Edged Faces in the viewport so you can see all the polys outlined. Right click on "Perspective" in the top left corner of the viewport and click on "Edged Faces". In that same menu you also want to go to "Configure" and then in the new menu that pops up under the "Viewport Rendering Options" section enable "Shade Selected Faces" and hit ok. Now you should be able to easily identify the polys you need to cut to get the vertex you want: Before going any further, you'll need to expand the Editable Mesh modifer, select the Vertex sub-mode, select the surrounding verts of these polys, like so: Then in the "Weld" section in the value box for "Selected" put in 0.1mm and hit the "Selected" button. Any mesh you import will typically have most of its faces detached, which will screw up attempts to perform many modelling operations, so unifying a mesh (or sections of a mesh) is usually the first thing you need to do. You can weld the entire mesh, but you need to be careful doing this, since in some cases you may accidentally destroy needed geometry (like two overlapping faces that have their normals pointed in opposite directions for backface culling reasons, common in character models) or run into shading issues if you don't manually reassign all the smoothing groups afterwards. Go to Customize -> Grid and Snap Settings and tick "Vertex" on the Snaps tab. You can press the S hotkey to enable and disable snapping, so now you will be able to snap to vertices (in some cases you may want to also temporarily enable Edge and Midpoint). Now in Polygon sub-mode, under the "Edit Geometry" section enable the "Cut" tool: Then with snaps enabled, click on the starting vert of your cut line, then snap to the end vert: Click on the end vert and you should have a set of new polys and verts: Right click a couple of times or manually hit the button to turn off the Cut tool. Note that Max is a bit flaky about this sort of thing, refusing to cut across polys that aren't coplanar, so sometimes doing it from the Top viewport is more reliable. Now you should have the vert/s you need to match the walkmesh. Note that you'll probably want to load in the textures to make sure that you are not getting too much distortion. In some cases creating new polys like this will necessitate adjusting the UVs to fix such distortion. In this case it should be fine, but given the propensity for terrible unwraps in KOTOR you're bound to get some distortion eventually when doing this.
  22. Ah, of course. In that case then you could always do the initial hit to take them to the point required for the wounded anim (below 50%?), then divvy up the remainder equally per tick.
  23. I'd split that as well. If it's max 60 seconds and you are ticking every 6 seconds, just hit them with a 10% loss every tick.
  24. I'd say if you are going that route, you should hit them with a choke every tick.