Search the Community
Searched results for '/tags/forums/perl script' or tags 'forums/perl scriptq=/tags/forums/perl script&'.
-
How you can help depends a lot on what skills you have. I can Record Video Recording "Let's Play" videos or simple walkthroughs of existing missions and posting them to Youtube is great exposure for the mod (see example .) Be sure to let us know so we can link to them. If you have some editing ability, Video tutorials, where you explain how the mod works, or how to use specific tools, would also be great. Video trailers, showcasing interesting places and features, are also great for publicity. An example is . I can Write Writing reviews for missions are always nice, especially if they include good screenshots. Not only does it give us something to post on other forums, but it makes mappers feel good when their mission gets attention (especially if it's positive). We have a collective thread to post reviews in: http://forums.thedar...s-walkthroughs/ Writing reviews of the mod as a whole, targetted an an audience that doesn't know much about TDM, is also very useful. You could also try offering your services to mappers to create interesting readables, or to proofread for their mission. I can Act and Record Audio We are always on the lookout for good quality audio recordings for vocal sets. If interested, you can pick a few different lines from this script: http://wiki.thedarkm...t:_Average_Jack and send the recordings to Springheel, who then writes a script based on the type of voice you have. I can Translate We could always use translations of our menu/hud into more languages. Also, only a few FMs are aavailable in more than one language, so there is a lot of work there, see the I18N Translator's Guide in the Wiki. I can Model Great! Take a look at the model request thread:http://forums.thedar...-requests-here/ and pick something that interests you. Or just post a, "Hey, anybody want a model?" thread in this forum and I'm sure mappers will get back to you. I can Animate Fantastic. We can always use more good animations. Our current character rigs use a Maya skeleton. PM Springheel for more info. I know C++ Have a look at our coding section in the wiki, pick an issue or feature from the bugtracker of the mod or the leveleditor, download the recent sourcecode release (or better ask for an SVN checkout) and get cracking. Make sure nobody is already working on that specific issue and feel free to ask questions. I can Edit Images We can always use completely new textures and/or improved versions of older textures. How to get started and how to import them into the mod. I can Take Photos Good quality photos of useful textures (medieval-ish building facades, dirt, rocks, wood, etc) are always welcome. The fewer directional shadows and higher resolution, the better. I don't have any skills Even if you can't do any of the above, you can still help out. Talk about TDM in other forums; share your (preferably positive) experiences with other gamers you know. Last, but not least, compliment people when you like their work. Saying "thanks", to a developer or, "I really enjoyed your mission" to a mapper will make their day. -------------------- I'll update this further as more things occur to me.
-
So I guess I need to: Replace // with ##. Support and use #empty. Replace the unexpected unicode characters with... something. Add strings added later into POT and try to regenerate POs using poedit. Commit the POT/PO files. Switch to gettext inputs by default. Delete the old strings from core. And the support of core strings in gettext style will be finished. And then the biggest future issues would be: Design full-text replacement feature. Write a new extraction script for FMs (in Python).
-
Author note: It's hard to believe it's already been a year since Act 1 came out! Well during this mission the player will be following Corbin into the Grimwood district to followup on a lead from last night (Act 1) .. the mysterious tablet! This mission is my first time including full EFX support as well as a HD briefing video file, additionally a new script has been added crafted by the talented Obsttorte which has loot flying towards the player when you pick it up. On a level design front I have tried to change things up a bit by really catering towards a number of play styles, this mission can be completely ghosted or you can use the tools at your disposal to wreak havoc on the citizens of Northdale. For the first time I have tried to create more sandbox environments which don't offer clear answers handed directly to you, so if you're having trouble figuring something out try a different method. This mission takes between 1 - 2 hours to finish depending on the difficulty you play on and how thoroughly you explore. I hope you enjoy your night in Northdale! - Goldwell Voice actors Fen Phoenix Goldwell Random_taffer Yandros Beta testers Amadeus Boiler's Hiss Cambridge Spy Chakkman Crowind Epifire Kingsal SquadaFroinx Custom Assets Andreas Rocha DrK Epifire Grayman Kingsal MalachiAD Obsttorte Sotha Springheel SquadaFroinx Purgator With special thanks to Epifire for creating a large collection of custom models, Grayman for helping out with coding, Kingsal for drawing the ingame map and Moonbo for his script revision on the briefing video. Available via in-game downloader MIRROR File Size: 417 mb EDIT: If you are having performance issues please consult this post by Nbohr1more which may address your issue http://forums.thedarkmod.com/topic/19936-fan-mission-shadows-of-northdale-act-ii-by-goldwell-20190320/page-2?do=findComment&comment=436271
-
Fan Mission: Scroll of Remembrance, by MirceaKitsune (03/11/2020)
chakkman replied to MirceaKitsune's topic in Fan Missions
ThiefGuild has some tags: https://www.thiefguild.com/fanmissions/?advanced_search=&series=&collection=&table=&page=&works=&work_lists=&sort_by=newest&search=&games=5&released_from=all&released_to=all&genre=all&original_games=fms Not sure how complete or accurate those are, after all either the author or users add the tags to the missions. -
Welcome to the Snatcher's Workshop. Come on in, we may have something for you today. Feel free to look around. We trade everything here. --------------------------------------------------------------------------- We realize new ideas and take existing ideas for a spin. For fun. Somewhere in this post you will find a download with mods. Good care was put to make all mods as little intrusive as possible to make them compatible with as many missions as possible. This set of mods will never break your game but some features won't be available in a handful of missions (the reasons are known). Feel free to report here what works and what doesn't. TDM Modpack 5.1 Compatible with The Dark Mod 2.13 or later (2.14 or later recommended) A lightweight, stable, non-intrusive, mission-friendly Modpack for The Dark Mod that includes many enhancements and a new set of tools and abilities for our protagonist: peek through doors, blow and ignite candles, whistle to distract enemies, mark your location, an invisibility-speed combo and more. Mods included in the pack do not alter your game or any of the missions in any relevant way. The pack includes enhancements to the core game and additions that can be used in missions but at the same time respects the vision of the mission creators. It is up to you to make use of any of the new tools and abilities or not. Please note that sometimes authors include in their missions their own versions of core files and as a result, some mods are not available in some missions. All missions will play fine regardless. Release posts: v5 series: v5.0 | v5.1 v4 series: v4.0 | v4.2 | v4.5 | v4.6 v3 series: v3.0 | v3.2 | v3.3 | v3.4 | v3.5 | v3.6 | v3.8 v2 series: v2.0 | v2.2 | v2.4 | v2.5 | v2.6 | v2.7 | v2.8 v1 series: v1.0 | v1.2 | v1.4 | v1.6 | v1.8 What's included in the pack? -:- APP: GENERIC MOD ENABLER -:- Credits: JoneSoft License: Free for unlimited time for Home users and non-profit organizations. Description: A portable, freely distributable Mod enabler/disabler. This application is required to run mods safely and it is included in the pack. At the heart of the Modpack resides JSGME (JoneSoft Generic Mod Enabler), an application that allows players to enable and disable mods with one click. JSGME has been around for more than a decade and it is to be fully trusted. Refer to the install instructions section at the bottom for full details. -:- MOD: CORE ESSENTIALS -:- A pack that includes a variety of mods from the best modders of TDM: ~ FAST DOORS Credits: Idea and programming by Obsttorte. Treatment by snatcher. Availability: All missions except Noble Affairs, Seeking Lady Leicester, Shadows of Northdale ACT II, Snowed Inn, The Imperial Sword, Volta 3: Gemcutter and a handful of lesser missions. Description: Being chased? In a rush? No problem: doors open and close faster when running. Topic: Slam doors open while running ~ QUIET DOORS Credits: An idea by SeriousToni (Sneak & Destroy mission). Mod by snatcher. Availability: All missions except Noble Affairs, Seeking Lady Leicester, Shadows of Northdale ACT II, Snowed Inn, The Imperial Sword, Volta 3: Gemcutter and a handful of lesser missions. Description: A vast number of doors play more subtle, sneaky sounds for a quieter, stealthier experience. This applies to doors that come with default sounds but only when manipulated by the player. Topic: Decrease volume of open/close door sounds triggered by player ~ LOOT ANIMATIONS Credits: Original idea by Goldwell (Noble Affairs mission). Programming by Obsttorte. Treatment by snatcher and wesp5. Availability: All missions except You Only Fly Thrice and a bunch of missions that come with their own implementation (tdm_frobactions.script). Description: Moves the loot towards the player before putting it in the inventory, underlining the impression of actually taking it. This mod comes with a subtle new loot sound that goes along nicely with the animation. ~ DYNAMIC INVENTORY Credits: snatcher. Availability: All missions. Description: When picking up loot this mod displays the loot info in the inventory and shortly after reverts back to the last non-loot item selected. The mod in addition, remembers the last item selected when shouldering and unshouldering a body. ~ SMART CONTAINERS Credits: Obsttorte (source code updates), Dragofer (similar attempts), snatcher. Availability: All missions. Description: To facilitate looting, the bottom of many containers (chests, jewellery boxes, etc...) gets automatically disabled at the beginning of the mission and only the lid remains frobable. ~ STEALTH MONITOR Credits: kcghost, Dragofer, snatcher. Availability: All missions. Description: Display some stats (Suspicions / Searches / Sightings) and the Stealth Score during a mission. Just bring up the "Loot" inventory icon and press "Use" (or setup a dedicated key). ~ STEALTH ALERT Credits: snatcher. Availability: All missions. Description: Completing a mission without being seen is something that can be done with some practice and patience. This mod will play an alerting chime whenever you are seen so that you don't have to monitor the Stealth stats all the time. ~ BLINKING ITEMS Credits: snatcher. Availability: All missions. Requisites: Console command r_newFrob must be 0, which is the game default. Description: Items within frob distance that go into the inventory (plus static readables) emit a subtle blink. This pulse can help you identify some valuable items that otherwise are difficult to detect. Topic: New Frob Shader ~ SMART OBJECTS Credits: snatcher, Dragofer. Availability: All missions. Description: Display actor and object names whenever you grab an entity with a name. In addition, objects (except AI entities) do not make or propagate sounds on impact while being manipulated. Topics: No impact sounds while holding an object / Nameless objects... a missed opportunity ~ ALT FOOTSTEPS Credits: SeriousToni. Availability: All missions except Hazard Pay, Noble Affairs, Shadows of Northdale ACT I and ACT II, Snowed Inn, Volta 2: Cauldron and a handful of lesser missions. Description: Alternative sounds of walk/run/land footsteps on water and landing sounds on squeaky wood for our protagonist. Topic: New Footstep sounds ~ MISCELLANEOUS Alternative high mantle sound for our protagonist. Removed two anticlimactic player dying sounds Revamped and extended "Mission Complete" audio theme. Standardization of frob distances for some doors. Decreased brightness of the Objectives, the Inventory and stock newspapers. Player weapons are a tad visually visible in the dark (to player only) -:- MOD: PLAYER SKILLS -:- A new "Skills" category is added to the inventory on mission load and the category includes the below abilities: ~ SKILL: PEEK Credits: Dragofer, snatcher, wesp5 Availability: All missions. Description: When the item is selected the player can peek through any regular door. Select the item in the inventory and "Use" it on a door. Topic: Peek through (almost) every door ~ SKILL: BLOW / IGNITE Credits: Dragofer, wesp5, Obsttorte, snatcher. Availability: All missions. Description: When the item is selected the player can blow out and light up candles and oil lamps. Select the item in the inventory and "Use" it on small flame sources. Topic: Extinguish small lights with a blow ~ SKILL: WHISTLE Credits: snatcher. Availability: All missions. Description: When the item is selected the player can whistle and draw the attention of nearby AI. The more you whistle, the more attention it draws. Select the item in the inventory and just "Use" it. Keep a safe distance. ~ SKILL: ALCHEMY Credits: OrbWeaver, MirceaKitsune, datiswous, wesp5, snatcher. Availability: All missions. Description: When the item is selected the player can alter the properties of broadhead arrows by applying different reagents. Select the item in the inventory and "Use" it repeatedly to cycle through the different arrow types. Topic: Alchemy to alter arrow properties? Arrow types: Shadow arrow compound or "Darkdust": Widely believed to be a myth, little to nothing is known about anti-light matter. Where did our protagonist get his formula from? When this substance is subject to strain the particles implode and the residual component absorbs light until it dissipates completely. Flare arrow compound or "Starlight": A recipe based on luminescent mushrooms and other exotic herbs. The resulting powder produces, for limited time, a dim but steady blue-ish glow when mixed with the right reactive. A high concentration of the active mixture can cause a burning sensation to the eyes. ~ SKILL: LOOP Credits: snatcher. Availability: All missions. Description: When the item is selected the player can teleport between two points. You can activate the loop any time and use it to quickly travel back to a safe location, to explore two different areas in parallel or to ambush AI. If the loop fails keep trying, you should be able to get to your destination eventually. If your path forward is blocked you can break the loop by pressing the "use" key for 10 seconds, just make sure you are on the correct side of the loop... ~ SKILL: PENUMBRA Credits: VanishedOne (speed potion), kingsal (invisibility potion), snatcher (alchemy). Availability: All missions. Description: When the item is selected the player can avoid light sources and run faster than usual for limited time. Health consumed will gradually be restored. Penumbra doesn't muffle the noise you make and it doesn't work when in contact with water. THE PATH TO UMBRA: How to become one with the shadows Did you know? You can set key bindings for the skills by clicking on the Modpack banner in the Main screen: -:- MOD: ADVANCED BOW -:- Credits: snatcher. Availability: Most missions (a few missions do things differently but you should never notice). Description: Nock and draw arrows at a faster rate. Extended radius of gas arrow effect. Chance to retrieve rope arrows when missing a shot. -:- MOD: CLASSIC BLACKJACK -:- Credits: Obsttorte, snatcher. Availability: All missions except A House of Locked Secrets. Description: A straightforward approach to blackjacking with new rules and mechanics inspired by the original Thief games. Never miss a KO again! - No indicator required. "Classic Blackjack" rules: Some AI are KO-immune and cannot be KOed: * Undead, creatures... * Guards wearing heavy helmets (to respect TDM vision) * Other: set by mission authors for the plot, in example The rest of AI can be KOed, just aim for the head: * Civilians: Can always be knocked out from any direction * Combatants: Can always be knocked out (including when fleeing) from any direction except when in high alert state (normally in combat mode) As reference, you can find in the Wiki the set of rules of the non-modded TDM: https://wiki.thedarkmod.com/index.php?title=The_Dark_Mod_Gameplay#Blackjacking -:- MOD: FLASH GRENADE -:- Credits: snatcher, kingsal. Availability: All missions except Displacement, Hazard Pay and Moongate Ruckus. Description: Flashbombs are clumsy and loud but as effective as ever. Instead of throwing Flashbombs like a cannonball we now toss them. Instead of exploding on impact Flashbombs now have a fuse. The chances of blinding have been greatly increased. -:- MOD: FRAGILE BOTTLES -:- Credits: Idea by MirceaKitsune, snatcher. Availability: All missions except Displacement (custom bottles but no custom broken fragments) and few items in A Reputation to Uphold and Shadows of Northdale ACT I & ACT II. Description: No stealth game is complete without some good bottle smashing! There are hundreds and hundreds of bottles in our mission catalogue: head to your nearest tavern or kitchen, grab a bottle and throw it to distract AI, extinguish fires... -:- MOD: HEALING BOOST -:- Credits: snatcher. Availability: Most missions (a few missions do things differently but you should never notice). Description: Food and Health Potions provide an extra recovery boost. Here is a table with the new health points (player max health is 100): 24 -> 50: Health potion 06 -> 20: Cheese Wheel 06 -> 10: Fish Mackerel 03 -> 10: Bluefish 03 -> 10: Bread 03 -> 10: Cake 03 -> 10: Cheese Wedge 03 -> 05: Muffin 01 -> 05: Apple 01 -> 05: Pear 01 -> 05: Carrot 01 -> 05: Turnip -:- MOD: INVENTORY PANELS -:- Credits: snatcher. Availability: All missions. Description: More compact. Items can be sorted. Adjust ambient volume, brightness, gamma and saturation directly from the Inventory grid. -:- MOD: LIGHT STONES -:- Credits: Idea by Zerg Rush, snatcher. Availability: All missions. Requisites: Lightgem enabled in Gameplay > General settings. Description: Splits the Light Gem into smaller stones with unique light detection levels. -:- MOD: PREMIUM LANTERN -:- Credits: snatcher. Availability: All missions except Flakebridge Monastery, Hazard pay, Moongate Ruckus, Snowed Inn, Vota 1, 2 & 3. Description: The mod replaces the light of the player lantern with a less intense, forward facing version. In addition, the lantern icon is always displayed when the lantern is on. Also, on and off sounds have been added. -:- MOD: RING HELPER -:- Credits: snatcher. Availability: All missions but the ring is dimmer when using the x-ray glasses or other overlays. Requisites: Frob Helper enabled in Gameplay > General settings. Description: The mod replaces the white dot pointer (Frob Helper) with an advanced ring-shaped aimer. The main difference is that the helper is now available for all objects you can interact with, large or small. Topic: Frob Helper discussion Options in Gameplay > General > Show Frob Helper: Always: Pointer and Ring Hover: Instant Ring Fade In: Ring delayed by one second Fade In Fast: Ring delayed by half second No: Off -:- MOD: SHADOW MARK -:- Credits: snatcher, Obsttorte. Availability: All missions. Description: Our protagonist's lucky deck! When the item is selected the player can drop and throw playing cards to mark a location. Cards can be retrieved. AI will not normally mind a single card lying around but cards can sometimes be noticed. Topic: Find more details in this post -:- MOD: SHOCK MINE -:- Credits: wesp5, snatcher. Availability: All missions. Description: This mod replaces the Flashmines with portable contraptions originally intended to store energy that have been altered to deliver a non-lethal electric shock to those who step on them. Remember: mines can be disarmed with the lockpicks! -:- MOD: SIMPLE SUBTITLES -:- Credits: Geep, stgatilov, snatcher. Availability: All missions. Description: A minimalist, imperfect approach to subtitles (you can set the scope of the subs in the audio settings). Topics: Subtitles - Possibilities Beyond 2.11 / English Subtitles for AI Barks Go to the audio settings and set the scope you prefer: Story: Story only On: Story and general speech (Give it a try!) Off: Disable subtitles Features of the mod: Background replaced with a font outline. Audio source widget replaced with a text transparency based on distance (volume) to the source. Yellow font color for story subs for best contrast, light grey font color for anything else. Non-story subs limited to a single instance, so that players aren't bothered too much with non-relevant subs (barks). --------------------------------------------------------------------------- DOWNLOADS / INSTALL / UNINSTALL So, how do I install and play with all this? Quite easy, but pay attention. I don't want you to break your game so we will be using a "Mod Enabler". A Mod Enabler allows you to enable and disable mods at will, with a few clicks. Before moving forward you must know a couple of things: The moment you enable a mod, previous saves will not work. If you want to load previous saves then you will have to disable the mod. If you play a mission with mods, the saves will only work when that exact set of mods are enabled. This above is important in case you deem your current saves precious. Consider yourself informed. DOWNLOADS You can download the TDM Modpack from Mod DB: INSTALL INSTRUCTIONS Download the zip, unzip it, and move contents to your TDM root folder: Folder "MODS" File "JSGME.exe" Go to your TDM root folder and double click on JSGME.exe (yellow icon). The first time you launch JSGME, it will ask for the "Mods Folder Name". Leave "MODS" and click OK. Now to your left you will find a list of mods available. To your right you will find a list of mods currently enabled. To enable a mod, select a mod on the left, and click on the arrow pointing to the right. To disable a mod, select a mod on the right, and click on the arrow pointing to the left. Go and enable the mods you want: UNINSTALL INSTRUCTIONS Quit the game (to unblock files) Go to your TDM root folder and double click on JSGME.ese (yellow icon) Disable all mods found on the right Close JSGME Delete the following: Folder "MODS" File "JSGME.exe" File "JSGME.ini" --------------------------------------------------------------------------- I hope you enjoy the mods. No coin? then leave a like for pirate's sake!
-
Agree with this sentiment 100 percent. Just come ask for help on these forums before asking chatgpt there are tons of knowledgeable folks here, especially those who know how materials work
-
For the people eager to play with the latest state of development, two things are provided: regular dev builds source code SVN repository Development builds are created once per a few weeks from the current trunk. They can be obtained via tdm_installer. Just run the installer, check "Get Custom Version" on the first page, then select proper version in "dev" folder on the second page. Name of any dev version looks like devXXXXX-YYYY, where XXXXX and YYYY are SVN revision numbers from which the build was created. The topmost version in the list is usually the most recent one. Note: unless otherwise specified, savegames are incompatible between any two versions of TDM! Programmers can obtain source code from SVN repository. Trunk can be checked out from here: https://svn.thedarkmod.com/publicsvn/darkmod_src/trunk/ SVN root is: https://svn.thedarkmod.com/publicsvn/darkmod_src Build instructions are provided inside repository. Note that while you can build executable from the SVN repository, TDM installation of compatible version is required to run it. Official TDM releases are compatible with source code archives provided on the website, and also with corresponding release tags in SVN. A dev build is compatible with SVN trunk of revision YYYY, where YYYY is the second number in its version (as described above). If you only want to experiment with the latest trunk, using the latest dev build gives you the maximum chance of success. P.S. Needless to say, all of this comes with no support. Although we would be glad if you catch and report bugs before the next beta phase starts
- 35 replies
-
- 15
-
-
-
If mission overrides some base AI scripts, you can't add it without conflicts. Otherwise, what kind of conflicts do you mean? Script data is stored in savegames as raw binary, so any change in scripts may break it. That's why the engine writes checksum of script code: if it is different on load, then savegame refuses to load. It does not matter where you put the code, checksum will be different in any case. In a campaign, it should be okay to replay one mission, or just load the "end mission" save. It does not work right now?
-
I'm not even sure it will work. This is base class, every other class can override "scriptobject" with other field and then your script will be lost. And in general case: how to support this is someone else wants to add yet another feature? The better approach is to have e.g. "banking" as component. And then aggregate it into script classes which may need it. The problem is: D3 scripts don't have structs and aggregation (except for this awful inheritance), so this approach would mean "backing" has to become a separate entity. If this is undesirable, the other way to make it a component / mixin is to abuse preprocessor. List all members and methods in "banking_members.h" and all method implementations in "banking_impl.h". Both headers without include guard. Then include them in appropriate place in a class/entity where you need them. I'm not sure I understand the problem correctly. What do you want to achieve in the end?
-
So with the help of Obsttorte I made holy water throwable as an option in my TDM Unofficial Patch. Then it occured to me that this should become the default action if you have no water arrows so the holy water will not be wasted as it will be right now. The problem is I can't find the right syntax or even console command to get the number of water arrows the player has. I checked the script wiki and even asked Gemini which hallucinated dozends of commands which never worked and finally just gave up. It suggested commands like these: script sys.println($player1.getInventoryItemCount("atdm:ammo_waterarrow")); script sys.println($player1.countItems("atdm:ammo_waterarrow")); script sys.println($player1.getAmountOfAmmo("ammo_waterarrow")); script sys.println($player1.getFloatKey("ammo_waterarrow")); They all fail with either "ammo_waterarrow is unknown" or "atdm is unknown"...
-
Darkmod underutilizes, in my opinion, capabilities for procedural animation. We already do some, like the random head and torso turns that are added on top of existing animations. There's also possibility for separate animation for top and bottom of the character as well as head. There's a missing opportunity for varied facial expressions. I talked about animation blending in this thread. Here's something that for example Thief: Deadly Shadows did. It's swaying side to side while turning. I used Gemini to add code to the tdm_ai_base.script. I don't know if this is the most efficient way of doing it, probably not. Here are the parts added: Gemini came up with the term "banking" which is used in car racing. I don't know if that's what it's called in animation or games. There's a lot of variables that can be tweaked. You can rotate this way any bone you wish. I use 'Origin', 'Spine_Dummy' and 'Neck' bones: You can tweak amount of rotation for each bone. setJointAngle(m_bankingJointHandle, 1, jointRotation * 1); setJointAngle(m_bankingJointHandle1, 1, jointRotation * 0.6); setJointAngle(m_bankingJointHandle2, 1, jointRotation * -1.5); There's also global intensity: (targetBanking = deltaYaw * 1.4;) and attenuation: m_bankingCurrentValue = (m_bankingCurrentValue * 0.95) + (targetBanking * 0.05); modifiers. Gemini also proposed to add an LOD system, which I thought was a great idea. So currently at a distance of 1500 from player the swaying will be disabled. Here are examples, each with slightly different values: And here's comically exaggerated one:
-
I don't know who has what skillset, as I am still pretty green on the forums. However, I do know that shader development does require some voodoo black magic! I understand the fundamentals of shaders, but understanding the basic how and why is very, very different from creating them.
-
So there's no way we can add this code to the game without having to modify any old missions that have custom .script or .def files?
-
Full VR support for The Dark Mod, new bow, climbing mechanics and more!
freyk replied to JAKE's topic in The Dark Mod
Nice work! Is there a build/code that other users can download and try? Please merge back the code with TDM VR, see topic: https://forums.thedarkmod.com/index.php?/topic/20468-the-dark-mod-vr-210-alpha-is-now-available/ === Reddit topic: link Video of JAKE's work: -
For more info, read this topic: https://forums.thedarkmod.com/index.php?/topic/23261-i-made-full-vr-support-for-the-dark-mod-new-bow-climbing-mechanics-and-more/ He based his code of TDM VR, so I referred him to this topic.
-
I get the same crash when trying to load this mission. The Dark Mod 2.15/64, linux-x86_64, code revision 11358 Build date: Aug 16 2026 Initializing event system ...902 event definitions Initializing class hierarchy ...173 classes, 3636864 bytes for event callbacks Initializing scripts --------- Game Map Shutdown ---------- --------- Game Map Shutdown done ----- ERROR:Error: file script/tdm_ai_head_tracking_humanoid.script, line 13: Unknown value "m_trackActive" -------------------------------------- EDIT: If I delete tdm_ai_base.script from the pk4, the mission loads just fine. Does this break the mission then?
-
I agree that we need some annotations which are functionally comments but which are saved properly by all the processing. I wonder how well do the existing programs save these #. comments? In general, we don't have to use the original GNU programs. As far as I understand, the gettext/PO is/was so popular, that there should be many programs that are compatible with it. And many of them are more modern and convenient. At least I hoped to find something more modern as a main recommendation... No, it's better not to add any extensions. On the other hand, the engine does not need to support the whole PO format. E.g. I saw there is some way to provide several translations depending on the context (e.g. singular/plural, or gender), but we can start with some core subset of the features, like a trivial msgid + msgstr replacement. I'm 100% sure the extraction script for missions is on us to make. As for the core strings, I suppose we can edit POT manually (just like we do now). It shouldn't be a problem to convert the current format to POT once. I'm pretty sure I can write a Python script for that relatively quickly. I hope this can be done with some more user-friendly program. Something like: we point it to POT file and to the directory with PO-s, and it allows us to navigate through strings, display several languages at once, enumerate missing strings, etc. Don't you think this convenience should exist in some programs? It should be format B, that's the intended usage of PO. The program passes some string to translation function, which finds this exact string in language-specific PO, and substitutes it with the value. We just need to ensure that preceding comments are visible in most of the programs. Also... can't we have "Holy Water Arrow" both in comment and in msgstr in POT? So that the comment stays in all the local PO-s forever, and so that msgstr becomes the "default value" that goes to English PO automatically. With format B we can also naturally support full-text substitutions in the future for missions. It's exactly the way how gettext is used normally. I am 100% sure this should be done by the automatic extraction script. I.e. when the script finds some string in .map file, it should write path to the file, line number, and preferably name of the entity and spawnarg. The same for .gui files. We probably don't need this for the core strings. Because we have many of them, and the core files will be constantly changing. Most likely all those extra comments with far links will gradually start saying nonsense over time. It is more reliable to simply grep over *.gui, *.def, *.cpp, *.h (and even over the whole assets SVN) than to trust some old comments.
-
So I had a conversation with Gemini and it told me that in order to get rid of the code from tdm_ai_base.script I can use "scriptobject" inside tdm_ai_humanoid.def. The problem is there can only be one script object, so if I want both banking script and head tracking script, then one will have to inherit from another. So banking now inherits from head_tracking. That seems like a hack. But it prevents this crash: But now that I think of it, people probably already use "scriptobject" for other things. So it will cause conflicts.
-
Hello and good evening to everyone reading this. After calling up FM Displaced for the first time on an installation of TDM 2.12/64 that had been working for years, I got an error message, which I have attached as a text file. Can someone please tell me what it means and whether I can expect it to happen again after I uninstalled and reinstalled the game because I no longer had access to it? I have played FM about 30 times and never had a problem with performance. Thank you very much. Translated with DeepL.com (free version) fehler tdm.txt
-
Oh my God, this is where I should pretend like I have never taken part in this conversation. I definitely don't want to implement anything like an editor. If we are talking on this level, then the only viable solution would be to take some common localization format which supports the subset that TDM uses and then use existing editors. For instance, it seems that GNU gettext can be used, it is based on full-text replacements. Then the whole pipeline should be like this: We need to maintain some code that runs through core/FM and finds all strings that are worth translating, then writes them to POT file. It was done in C++ at Doom 3 times, then that code was commented out and Perl code was written in its place. I suppose it is necessary to have something like this anyway if we want people to translate missions... Translators use available software which support gettext/PO format to generate per-language PO files in UTF-8. PO files are put into strings/ (core) or into mission strings/fm (mission). TDM engine parses PO files natively along with .utf8map files and fills its internal 8-bit database. If I'm not mistaken, gettext normally replaces complete English plaintext with local text. I suppose we can just put our #str_omg placeholders as "original English text" into it, and thus support both placeholder replacement as we have now and full-text replacement as I suggested for missions.
-
@Geep, doing massive restructure on old state is not a good idea. Since you are marked as Contributor, don't you have direct SVN access to the assets repo? If no, we should simply give you the access. I can't say I see anything still used in your list to be deleted. Usually the best way to check is to search over guis/ + scripts/ + maybe C++ code. Feel free to delete unused and reorder the lines in the strings file. I don't really like the yaml idea, because you are basically trying to extend the already overly massive strings framework. Now we have tons of old Perl code that nobody wants to mess with, and you'll add some more code which nobody will want to mess with a few years later? And what will yaml give you, really? If you reorder the lines in the existing format, you will get the grouping you want. The current order is messy simply because everyone is lazy to search for similar / related strings every time they want to add a new menu settings. And I'm afraid things will stay this way. Even if you make perfect order, it will slowly rot over time. Finally, here are some of my thoughts regarding strings framework: I would be happy to make all.lang the only file with strings, encoded in UTF-8. The engine should read it directly and use per-language table to convert permitted UTF-8 characters into its weird 8-bit encoding which is uses now (without generic UTF-8 decoding). This way we can finally get rid of the old Perl stuff. The strings file should support full-text replacements in addition to placeholder replacements we have now. That would allow translators to translate a mission without forcing the author to turn it into a total mess which is harder to work with. The full-text replacements should be used for missions, placeholders should be used for core. The p.1 idea will require changes in the engine, but I think they are quite lightweight. Reading UTF8->8-bit character table per language, and convert UTF-8 into native format when strings are loaded. What scares me more is trying to understand how it works now and constructing these new tables.
-
https://www.ttlg.com/forums/showthread.php?t=153454&p=2543356&viewfull=1#post2543356 Great reaction from heywood.
-
Okay, I've coded a solution that lets you update a readable with up to three substitution strings. I'll list the limitations up front, just so you don't get too excited: 1) It supports at most three substitution strings (although this is easy to change). Scripting doesn't support arrays, so I had to pick a fixed number. 2) As @kingsal mentioned, scripting has a problem with strings longer than 127 characters. So this doesn't work well with readables with long strings (see below). To use: Create your readable as you normally do. Presumably you'll edit it using the Readable Editor. In the text, use "%1" (no quotes) to indicate a string that you want to substitute (%2 for a second string, and %3 for a third). So for example, you might have a sheet that his a title of "Hey %1" and a body of "The new combo is %2. Regards, %3" From a script, you make a call like this: adjustReadable($testsheet, "Chris", "375", "Jeff"); Where "$testsheet" is the name of the readable entity. The next three strings are the substitutions for %1, %2, and %3. If you only have one or two substitution strings, just pass "" for the remaining args. In game, the sheet looks like this: Like I said, it's SMOP (simple matter of programming) to support more than 3 substitution strings. But the 127 character limitation is much more difficult. It's a problem/feature with the scripting code: strings are limited to 127 characters in length. The adjustReadable() call will truncate readable strings to 127 characters, so if you have a long page in a book with a substitution string, the page will be truncated. The code is smart enough to limit the damage - if a readable string doesn't have the substitution characters (i.e., "%1") then I won't process it at all, and the text isn't truncated. So with some planning you can get this to work - just make sure all of the pages that have substitutions are short (For example, page 1 is a wall of text, 100s of characters with no substitutions. Page 2 is brief, "And that's why I changed the combination to %1".). Dynamically creating readables with strings longer than 127 characters is possible, but ugly. That's another whole topic, I will discuss separately. Here's the code. Drop it into your <fm>.script file, and call it as in the example above. Suggestions for improvement are welcomed. string substitute(string str, string sub1, string sub2, string sub3) { if (sub1 != "") str = sys.strReplace(str, "%1", sub1); if (sub2 != "") str = sys.strReplace(str, "%2", sub2); if (sub3 != "") str = sys.strReplace(str, "%3", sub3); return str; } // Adjusts all of the contents of the specified readable. In any xdata content for this readable, this method will replace "%1", "%2", and "%3" // with sub1, sub2, sub3, respectively. void adjustReadable(entity readable, string sub1, string sub2, string sub3) { string xd = readable.getKey("xdata_contents"); readable.loadExternalData(xd, "xdx_"); string key = ""; while ((key = readable.getNextKey("xdx_", key)) != "") { string xdName = sys.strSkip(key, 4); string xdValue = readable.getKey(key); if (sys.strFind(xdName, "page", 1, 0, 4) == 0) { if (sys.strFind(xdValue, "%1", 0, 0, -1) >= 0 || sys.strFind(xdValue, "%2", 0, 0, -1) >= 0 || sys.strFind(xdValue, "%3", 0, 0, -1) >= 0) { string newXdValue = substitute(xdValue, sub1, sub2, sub3); readable.setKey(xdName, newXdValue); } } } }
-
Is there a script command to make a screenshot?
I just though it could be interesting to be able to create a screenshot at a certain point in time. Then use that screenshot possibly in a debrief.
I guess the second question is: Can you use a (in-game made) screenshot in a (debrief) gui?