Jump to content
The Dark Mod Forums

Geep

Member
  • Posts

    1062
  • Joined

  • Last visited

  • Days Won

    57

Everything posted by Geep

  1. When I started the Air Pocket FM, I also looked at the wiki and forum posts about posing ragdolls. I got the impression that it took a lot of careful effort to do a pose and then you could easily accidentally overwrite it. I decided instead to concentrate on floating a ragdoll on water (finicky enough), and not sweat the pose. That pose was originally the usual-as-created-in-DR one, and then for some reason - as I was playing around - became an import-style T-pose, arguably an improvement for my purposes. (Similarly, my sitting captive was originally going to be implemented as a ragdoll, but given the pose issues, I went with a sleeping, sitting, zero-acuity AI instead.) Update of the wiki about this would be good.
  2. BTW, there is - in parallel - a recently-revived discussion about this topic, but focused more narrowly on currently-available moorish AI characters: http://forums.thedarkmod.com/index.php?/topic/15738-when-is-someone-gonna-make-an-egyptian-based-mission/page/3/
  3. Just a heads-up to anyone who might be interested in beta testing of a watery mission, "Away 1: Air Pocket". This, my first full-fledged FM, re-deploys Dragofer's ship models, familiar from "Down by the Riverside". By next weekend, I'll create a new Air Pocket thread in the Beta Forum, with the link to the download.
  4. Sounds like the approach someone with the right mad skillz would use.
  5. Regarding SEED problem... same data, different interpretation: Further playing around leads me to think that the system, when creating the 2D distribution of generated objects with "floor 1", does so within a horizontal plain passing through the (unmarked) centroid of the SEED volume, instead of at the top. It then drops objects down from that plane. So any landscape above that plane will not get objects... those objects instead fall to any lower surface or are culled. By this interpretation, the problem is not that a SEED volume is too tall, but rather its centroid is too low compared to the landscape.
  6. Just tried signing up for an account at the bugtracker, and got a "504 gateway timeout" error when I hit "Sign Up". So email verification didn't happen. Can't be good.
  7. From now on, I'll be keeping my SEED volumes under 512 units tall (just a hunch), and hoping that avoids this problem. Based on what you said, maybe it only affects undulating situations, that is, where SEED's "floor 1" is in effect.
  8. Reporting "Barren SEED Bug" if SEED volume is 'too tall' I've been trying for some time to get SEED to work for me. It never seemed to generate any replicants. Finally found the problem... my SEED volume was 'too tall', or actually too deep into the water. Attached is a simple map file (once you remove the ".txt") that demonstrates the problem. There's a room with 2 identical SEED volumes, except for their overall heights (seen as depths below the floor). Each is asked to generate a dozen grass plants. The "fertile" one does, the higher/deeper "barren" one does not. This demo uses a within-SEED template for its target, but I had the same problem with an external target. In many cases the target entity itself would vanish. Sometimes but not always there would be a console warning at game start: "SEED: Feeling lonely with zero entities to care for". I'll leave it to others to refine what 'too tall' precisely means (i.e., absolute or relative or dependent on settings), and what the underlying cause might be. Thanks to dragofer for suggesting diagnostic procedures that helped find the workaround. barrenseedbug.map.txt
  9. Ah, I mis-remembered. Yup, DR does show it correctly. Under 'Commoners, Armed/Foreigner' there are two bodies available, but only one visage (with or without helmet). Also a moor sorcerer body under 'Mages'. This is limited, because in most cases you have an obvious mismatch of skin tone between face and hands (plus exposed skin). I only found 3 sufficiently gloved/covered ai bodies that might work (but didn't try them to see if physiques match well enough with head-offset tweaks): Commoners, unarmed/ai_townsfolk_engineer Commoners, armed/ai_guard_elite Builders/ai_builder_forger I suppose you could also put a human head (moor or otherwise) on a reverent body [heh] The problem of an obvious mismatch of skin tone between head and body is a wider problem. For instance, the limited selection of female characters are further constrained from head-swaps due to commoner=tanned, noble=pale differentiation (with prostitutes in-between).
  10. RE the moor AI characters being underutilized, I recall when I was doing a casual look-see of AI character in DR, the moor had "Shader Not Found", which discouraged further consideration... probably contributes to under-utilization.
  11. I was just reviewing warnings in my build to find ones I could fix. The following are instead due to duplicate definitions in the stock 2.07 distribution and might be fixable in a future distro: [In tdm_textures_base01/:] WARNING:file materials/tdm_epi_shader_2.mtr, line 462: material 'wizard_cloth_001' previously defined at materials/tdm_epi_shader_2.mtr:366 WARNING:file materials/tdm_water.mtr, line 1189: material 'textures/particles/ripple_1' previously defined at materials/tdm_particles_ripple.mtr:1 [In tdm_models_decls01/:] WARNING:file skins/tdm_epi_skins.skin, line 86: skin 'steam_engine_003_off' previously defined at skins/steam_engine_003.skin:1 WARNING:file skins/tdm_epi_skins.skin, line 97: skin 'steam_engine_003_on' previously defined at skins/steam_engine_003.skin:18 Forgive me if these have already been reported and/or fixed. Where exactly is the TDM bugtracker, anyway?
  12. Looked at CoO: Behind Closed Doors. For the loader screen background, 2048x2048 jpg was used; presumably 16:9 horizontally compressed to 1:1 (not 4:3). The title and associated text was burnt in there, but there was still text specified in the .gui file, namely that associated with the Mission Loading bar. The specs still used "0,0,640,480" throughout. I was surprised that .gui file continued to reference a ".tga" file as background, even tho it was now a .jpg (but otherwise the same path and filename) .... whatever works. My screenshots were at 1960x1080, so I chose one at full height and compressed the width to 1080 (i.e., 1:1) as well. Looked much better than before, tho still banding (some from the original screen image) and color shifts in gradients. I can live with that. For lazyness, I overlaid the title and associated text using the .gui method, rather than burn-in. If run on a machine with 4:3 ratio, the strings will not be in optimal locations, but on the other hand, the font characters will be normal size, not squeezed. All good
  13. Thanks. I'll play around with this. If I use a larger loader image, but still want to use the guis/map/<fm>.gui text overlay, should I leave all the windowDef rect settings contained therein at "0,0,640,480"? Or give up on the overlay and just burn text in with (for me) Photoshop? In your "Also" comment, you mention "splash screens". Are we still talking about the loader image, or instead the traditionally 256x256 install_splash.tga?
  14. This might not be the place to ask this, but... In http://wiki.thedarkmod.com/index.php?title=Mission_Title_Screen_while_Loading It is requested that the mission title screen be created in 1024x768 tga format, then stretched to 1024x1024 tga to "support older graphics cards" This wiki page was created by Fidcal circa 2007. At the edge of 2020, is it still necessary to do this stretching for support old graphics cards? (And in my mind, there's the larger question about whether, for new FMs, something nicer than the ratty-looking 1024x768 tga format could be handled.)
  15. BTW, in the "All But Loot" filter code above, the 2nd criterion match should have a trailing underscore, i.e., match="^atdm:loot_.*|^atdm:moveable_loot_.*" as the comments indicate. But this doesn't affect the results in practice. As to the failing "All But Loot Goods", removing the unwanted trailing space in the key value did not fix anything. Also tried a match of "^3". No luck. Could it be that the problem is that the "3" value is represented by a float, not a string, and that matching can't handle that?
  16. You are correct, except that there are actually around 100 loot entity classes. But on further consideration, given their naming convention, I can use regex. So the following is now working for me as a custom filter, to hide everything except loot: <?xml version="1.0"?> <filters> <filter name="All But Loot"> <filterCriterion type="entityclass" match=".*" action="hide"/> <filterCriterion type="entityclass" match="^atdm:loot_.*|^atdm:moveable_loot.*" action="show"/> </filter> ... </filters> The first criterion hides everything. The second criterion overrules the first one by showing “atdm:moveable_loot_...” and “atdm:loot_…” entities. This solves my immediate needs. But noticing that there was in "DR/Filters/Edit Filters..." an undocumented (in the wiki page) filter type EntityKeyValue, I tried to use it to restrict visibility to Type 3 Loot (Goods), using this filter: ... <filter name="All But Loot Goods"> <filterCriterion type="entityclass" match=".*" action="hide"/> <filterCriterion key="inv_loot_type " type="entitykeyvalue" match="3" action="show"/> </filter> ... This failed, that is, did not show anything. I see other forum posts in the past that claimed to use this filter type EntityKeyValue OK, so I don't know. If I had permission to edit the wiki (perhaps some day), and assuming EntityKeyValue is working and the problem is just me, here’s what I would add as a bullet point to "What filter types do exist?": entitykeyvalue: With this type, you can specify an “entitykey” (i.e., spawnarg name) and “match” (spawnarg value). Other possible wiki page improvements follow. Following the mention of "filters.xml": Following the mention of Regex, include a reference to the particular flavor/syntax being used. Perhaps https://www.w3schools.com/python/python_regex.asp
  17. I did review that earlier, but the filter granularity as reported didn't seem to me to extend down to the spawnarg level, which is what I would need to filter for loot. DR custom Python scripting looked like it could do it, but then you'd have to work with an intricate DOM-like model... maybe an elephant gun to kill a flea. Just hoping someone had already killed that flea.
  18. Does anyone have a DR Python script that selects all loot items? Or a particular type (particularly interested in type 3, LOOT GOODS)? Either type of script would be more useful to me than the tdm_show_loot command.
  19. Among my problems with disableWeapon() is that it disables ALL weapons, not just the current one, by essentially freezing the weapons part of the user interface. This may work for grayman's use case (the player put in jail) but not mine... I want to be more selective. (Not shown: my filtering of weapon type so that DisarmWeaponThread gets called only for blackjack and shortsword). [SOLVED] I finally have a solution for my needs. Instead of using "disableWeapon()" in the above function, I use: selectWeapon("unarmed"); Note carefully the argument here. It is not either of these: selectWeapon("atdm:weapon_unarmed"); selectWeapon("player1_weapon"); // Name returned by weapon.GetName() when player unarmed. FYI, grayman gives the otherwise-undocumented list of selectWeapons strings here as: "unarmed" "blackjack" "shortsword" "broadhead" "waterarrow" "firearrow" "ropearrow" "gasarrow" "noisemaker" "mossarrow" "vinearrow"
  20. HMart - I followed your helpful outline, though my thread function was somewhat simplified: void player::DiscardWeaponThread(entity weapon) { sys.trigger($atdm_gui_message_no_art_my_weapon_message); sys.wait(4); disableWeapon(); sys.waitFor(weapon); sys.wait(3); // possibly redundant discardthreadNumber = 0; // Tell caller we're done } My version of DiscardWeaponThread() has these differences: I added the ...Thread suffix - that's just me. It's a void function, since the "thread" keyword on the call takes care of returning the thread ID. Wrapping the body in "eachFrame" didn't seem to buy anything other than making my head hurt. By not having an endless loop, I can end the thread just by ending the function, so don't need a sys.terminate Instead of your gui method, I used an atdm_gui_message... element in the map to put a message up for 4 seconds. This works fine. weapon.weaponHolstered() is a void function, so was not meaningful to test by an "if". And its presence or absence didn't seem to make a difference. I don't know if waitFor(weapon) works (I added "sys." before it), so I did sys.wait(3) too to be safe. This is an OK if imperfect solution. A problem with using disableWeapon is that, while it puts the weapon down, it leaves it selected in the GUI, and you can't unselect with TAB. Nor can the user raise it (and see my message) again. I tried putting an enableWeapon() at the end of the thread, but that undesirably raises the weapon again. I also tried, in place of the disableWeapon() call, these functions - LowerWeapon(); // w or w/o "self." selectWeapon("atdm:weapon_unarmed"); Neither exhibited the necessary lowering response (although getting rid of disableWeapon did mean you could lower the weapon with the normal keystroke, and when you re-raised it with the normal keystroke, the gui message would re-appear). Finally, I considered trying .Lower(), that is available for certain weapons, e.g.: #include "script/tdm_weapon_blackjack.script" ... // replace "disableWeapon()" with code that checks if weapon is blackjack (not shown) and if so: weapon_blackjack jack = weapon; // cast so "Lower" is available. BAD SYNTAX jack.Lower(); But I don't know how to do the required cast/conversion in this scripting language.
  21. nbohr1more posted elsewhere: "...you can override scripts ... and an number of things that are global by packing them in the corresponding sub-folders in your mission package." So I guess I could copy the entire tdm_player.script file and alter that. (Not as surgical as just over-riding particular functions, tho. Future checked-in updates to other functions in the file would be overriden by the old stuff in my copy too). It's a direction!
  22. Thanks, HMart. I understand what you propose. What you are suggesting is an extension of the code in tdm_base01\script\tdm_player.script A concern: as a noob fan mission dev, not an engine dev, I'm reluctant to alter that code directly. Because, for example, even if I could package & distribute the change properly, wouldn't it be lost on the next TDM update from 2.07 to 2.08 ? I wonder if it's possible to override a base-script function body with a custom function of the same name (either in the <fm>.script file or a separate script in the "script" folder, referenced by tdm_custom_scripts.script) ? It would have to part of the player object, that is, with a fully qualified signature like void player::RaiseWeapon() If so, then I wouldn't have to alter the base script, and I'd be a much happier camper trying out your method.
  23. BTW, I realize that what grayman sought was the disabling of a weapon NOT initiated by the player (i.e., an exterior script), so my use case is somewhat different. I did post a request about this topic to the Newbie thread a while ago, with code of what I had tried unsuccessfully. Crickets.
  24. In a July 26, 2017 post, @grayman indicated achieving this effect: "getCurrentWeapon() reports the current weapon once it's fully raised, so what I see is the weapon raising, then being lowered after it's done raising. " That's exactly the effect I need, assuming that - the player initiates the raising the lowering is automatic (and ideally there's an opportunity in the script to show a gui message in-between) But I don't understand from the surrounding discussion with @Obsttorte exactly what that script fragment looks like and how it's invoked. Similarly with the alternative (and for me somewhat less desirable in terms of behavior) method using $player1.disableWeapon(); since in my case I would need the weapon-raise event to trigger a script function. Any help, e.g., sample script fragment, would be great. Or point me to a pertinent FM
×
×
  • Create New...