Sinclair_76 Posted August 13, 2023 Posted August 13, 2023 (edited) It's been a while. But In a older mission which I upgraded with the latest DML modules, this error popped up. Edited August 13, 2023 by Sinclair_76
cfrag Posted August 13, 2023 Author Posted August 13, 2023 1 minute ago, Sinclair_76 said: this error popped up. Dang!!!! An embarrassingly obvious typo. I'll get it fixed within the hour -ch 1
cfrag Posted August 13, 2023 Author Posted August 13, 2023 Well, I guess this should teach me to close open code windows while working with Git. Yeah, that one crept in after I completed regression testing, I have no idea how. Doesn't matter, below please find updated script and demo mission (the existing demo mission in DML also works, it's part of the regression test set and does not exhibit the bug. The new one is updated to the newest 2.2.1 version of Recon) Thanks, @Sinclair_76 for alerting me, it should now all work fine. demo - recon mode - reloaded.miz cfxReconMode.lua 1 1
tsuyopooh Posted August 13, 2023 Posted August 13, 2023 17 hours ago, cfrag said: おい、@つよプーstopGaps はヘリコプターをサポートしていますが、シングルプレイヤー モード (および stopGapGUI サーバー プラグインを使用しないマルチプレイヤー) では、一部の飛行機やヘリコプターが完全に平らではない地形にひどく反応し、ヘリコプターが最高点から落下するようです。その地形部分が地面に接触すると、非常に悪いことになる可能性があります。これを防ぐには、シングルプレイヤー モードで stop-gap を抑制する stop-gap の機能を使用するか、平らな面 (飛行場など) に stop-gap を配置します。 Hi, cflag san, I see. I get it. I set it on a perfectly flat runway and it worked. 17 hours ago, cfrag said: HTML は公開するには非常に悪い形式だと思います。私はドキュメントを MS Word で書いていますが、(M)HTML へのエクスポートはよく言っても賛否両論あります。PDF へのエクスポートが私にとって最良の妥協策のようです。レイアウトが保持され、出力ファイルが適度に小さく、どのコンピューターでも読み取ることができます。 PDF。PDF からテキストを簡単に抽出できるアプリケーションがあるので、それが役立つかもしれません。 The idea of outputting the complete layout in PDF is understandable. However, in non-English speaking countries, HTML is attractive because it allows alternating display of the original and translated text, even if the layout is slightly corrupted. This is because we feel that translation accuracy is not good in such a specialized field. Also, when text is extracted from a PDF, the layout is broken and it is difficult to see where the explanation is? As a result, we tend to give up and move away. Would the act of allowing optional HTML output as well be too much against will?(Only "DML Documentation.pdf") I can't communicate well in English, but I hope you can give it some thought. I don't know if MS WORD's HTML output is terrible, but if it is, Im sorry.
t349733591 Posted August 16, 2023 Posted August 16, 2023 Hi cfrag: Currently known DML,Is there a way to implement slot password function?This will allow a slot to only be used by a specific person。
cfrag Posted August 16, 2023 Author Posted August 16, 2023 48 minutes ago, t349733591 said: Is there a way to implement slot password function?This will allow a slot to only be used by a specific person。 This is already provided by Mission Editor: you can set a password for any player aircraft. Outside of that, a mission cannot by itself control access of players to slots, you will always need a server plug-in like Simple Slot Block for this. Players who have not slotted in are technically not inside the mission, and therefore cannot be controlled with mission-side scripts. DML is mission-side.
t349733591 Posted August 17, 2023 Posted August 17, 2023 19 hours ago, cfrag said: 任务编辑器已经提供了这个功能:你可以为任何玩家的飞机设置密码。 除此之外,一个任务本身不能控制玩家对老虎机的访问,你总是需要一个服务器插件,比如简单的老虎机。没有加入的玩家从技术上来说不在任务中,因此不能被任务端的脚本控制。DML是任务端的。 Thanks cfrag,I have one more question,Is there a way for DML to control the behavior of AI? For example, on the ground, I wanted AI to wait for a few minutes before takeoff at the end of the runway before takeoff. I tried to use ME to control the next waypoint, but failed. I have also tried several DML functions, but they have not been successful. I think I must have done something wrong. Thank you for your guidance.
t349733591 Posted August 17, 2023 Posted August 17, 2023 (edited) 19 hours ago, cfrag said: 任务编辑器已经提供了这个功能:你可以为任何玩家的飞机设置密码。 除此之外,一个任务本身不能控制玩家对老虎机的访问,你总是需要一个服务器插件,比如简单的老虎机。没有加入的玩家从技术上来说不在任务中,因此不能被任务端的脚本控制。DML是任务端的。 Thank you again for your efforts。 Edited August 17, 2023 by t349733591
cfrag Posted August 17, 2023 Author Posted August 17, 2023 6 hours ago, t349733591 said: Is there a way for DML to control the behavior of AI? Currently, there are no provisions in DCS to control AI behavior outside of their assigned tasks. So DML can't do that, except perhaps by faking it through some carefully orchestrated spawns and substitutions with static objects. But that's not AI, and I'm certain that DCS AI will fight you every inch of the way. 1
Thunder Chicken22 Posted August 19, 2023 Posted August 19, 2023 Is there a way to change the duration of messages such as the mission start messages, player score messages etc?
Sinclair_76 Posted August 20, 2023 Posted August 20, 2023 (edited) @cfrag Regarding stopGap, awesome module btw. When populating a stopgapped plane in a group of 4 the other 3 planes will not reappear as statics but remain empty. Is it possible to have the not client populated planes within a group te appear? Or is there a spelling mistake in the manual... Edited August 20, 2023 by Sinclair_76 1
cfrag Posted August 20, 2023 Author Posted August 20, 2023 8 hours ago, Thunder Chicken22 said: change the duration of messages such as the mission start messages, Well, the startup messages (that tell you which version of the module is loaded) cannot easily be changed - but you can add a "message to all" action after loading all modules that erases all messages immediately or after your preferred delay. 9 hours ago, Thunder Chicken22 said: player score messages etc That rather depends. Messenger has a that ability. If you are looking for this ability in a specific module, let me know, and I'm sure we can work something out
cfrag Posted August 20, 2023 Author Posted August 20, 2023 2 minutes ago, Sinclair_76 said: When populating a stopgapped plane in a group of 4 the other 3 planes will not reappear as statics but remain empty Are these AI planes? If you mix AI and player planes, IIRC stopGap only works with the player planes because an AI's status can be undetermined if a multi-unit group spawns (the scenario is this: you have a 4 ship group consisting of 2 AI, and 2 players. The first player spawns, along with 2 AI and start playing, the second player plane is stopgapped because stopGap knowns when a player enters the game. Not so with AI planes) Stopgapping AI planes will result in undetermined status because they can spawn without warning and will collide with their stand-ins. Hence, I currently designed stopGap to only replace player planes. In multi-ship player groups with AI, those AI planes will (should) never be stopgapped for the simple reason that they would crash on start-up with their stand-ins. So, if your player group consists of 4 player aircraft, they should be stop-gapped, but if the other units are AI they will not show up until the player enters their slot
cfrag Posted August 20, 2023 Author Posted August 20, 2023 (edited) 12 minutes ago, cfrag said: The first player spawns, along with 2 AI and start playing, the second player plane is stopgapped I just checked my code, and it appears that I have coded against what I just blithely wrote above: if stopGap.myGroups[gName] then -- in case there were more than one units in this group, -- also clear out the others. better safe than sorry if stopGap.standInGroups[gName] then stopGap.removeStaticGapGroupNamed(gName) end end So currently, the entire group of stop-gapped player planes will disappear when the first player enters the cockpit, not just the plane that was slotted. I'll see if I can relax this as an option. Edited August 20, 2023 by cfrag 1
cfrag Posted August 20, 2023 Author Posted August 20, 2023 (edited) 4 hours ago, cfrag said: I'll see if I can relax this as an option. I have looked at making stopGap focus on individual aircraft ("unit mode") instead of groups (currently, stopGaps is working on group level). Well, it is possible (I have it running right now), but it creates severe knock-on problems in "unit-mode": stopGap would no longer be compatible with SSB / slotBlock - which makes it unattractive to be used in great missions like Foothold, Pretense, or even my own missions (which are admittedly not as popular as @Dzsekeb's fantastic contributions - not by a long shot ) it requires a new version of the stopGapGUI server plug-in it breaks compatibility with sittingDucks In short, this change mucks up StopGap's code, and breaks compatibility with slot blockers for a very small gain: when a player slots into a group with more than one player aircraft (2-4), those 1-3 (max) remaining player aircraft stand-ins do not disappear. I think it would be better if I create dedicated replacement scripts (mission and server) that work on individual units. It would be (I hope) a much smaller script than SG, and it would break compatibility with SSB and sittingDucks (they work on group level). I'll see if I can get a PoC up and running quickly. And I might even be able to come up with a slot blocker that works on unit and group level, so you would only require one. Developing server plug-ins is singularly unrewarding, so we'll see how far I get. Edited August 20, 2023 by cfrag 1
Thunder Chicken22 Posted August 21, 2023 Posted August 21, 2023 On 8/20/2023 at 4:45 AM, cfrag said: Well, the startup messages (that tell you which version of the module is loaded) cannot easily be changed - but you can add a "message to all" action after loading all modules that erases all messages immediately or after your preferred delay. That rather depends. Messenger has a that ability. If you are looking for this ability in a specific module, let me know, and I'm sure we can work something out Thanks, the reason I am wanting to do this is that these messages can linger for quite a while and be a distraction in some situations. Not a huge deal with player activated messages such as the player score, but I found that the loading DML messages at the start of a mission can actually be a hindrance in selecting a player slot. I followed your suggestion by using a "message all" function of the ME to clear out the DML module loaded block quickly, and just changing slot if I selected the wrong one. A work around but perhaps not ideal. Perhaps you could make these messages player activated or provide the mission designer a choice to enable these messages or not. Just some friendly feedback, nothing super critical. 1
Thunder Chicken22 Posted August 22, 2023 Posted August 22, 2023 I would like the ability to shut off or start AI spawning from airfields that are captured/changed hands. For example, the closest Red airbase in my mission is Sochi. It currently has Red air combat air patrols that launch on a spawner with a timer. I would like to be able to turn on/off these spawners depending on which side is controlling the airbase. I have read through the Changer section in the documentation and see that a Gated Switch may work here but I am not clear on how exactly to implement it. I looked at the mission example but that is cued by a radio command and I assume that a pulsed flag wont work here. Attached is how I set up my spawner with it's associated timer at Sochi. What I am looking to do, is for this spawner to remain active as long as Red owns the airbase. If Blue captures it, this Red spawner shuts off and I can activate a Blue spawner. If Red were to recapture Sochi, this spawner would restart etc. Appreciate any help!
cfrag Posted August 22, 2023 Author Posted August 22, 2023 13 hours ago, Thunder Chicken22 said: I would like to be able to turn on/off these spawners depending on which side is controlling the airbase. I have read through the Changer section in the documentation and see that a Gated Switch may work here but I am not clear on how exactly to implement it. This is indeed a workable approach. Here how it would normally work: Let's assume that you have a module we call "triggerModule" (be it a pulser, radioMenu, whatever) that generates the signal to tell the cloner to start a new clone cycle. You'd run the triggerModule's output into the cloner's 'clone?' input. This is the direct, un-gated setup. We now want to be able to block the signal that is running from the triggerModule's output to the cloner's clone? input. We do this by putting a changer in-between. We run the signal from the triggerModule into the changer's input, and then run changer's output into the cloner's input. Set up this way, we now can control if the trigger signal should pass to cloner (gate is open, the changer is "on") or be blocked (gate closed, changer is turned "off", nothing is processed) - in the latter case the signal never reaches the cloner's clone? input because the changer 'ate' it. So how do we use control the 'gate'? By using it's on? and off? inputs. If you send a signal to the changer's off? signal, it closes the gate, and no signal passes through until it receives a signal on the on? input. So, every time that red loses the airfield, send a signal to off? that blocks the clone? input. When red recaps the airfiled, send a signal to on?. Now, set up a blue cloner, and create the same set-up, except that you cross on? and off?, so that changer turns on when red loses the airfield, and off when red wins it. There's a somewhat simpler method to wire this, but it requires a slightly deeper understanding of this signal logic. We can discuss that when we get this to run
NomadActual Posted August 23, 2023 Posted August 23, 2023 Hi Cfrag! I was curious if it would be possible to use DML to create divertable aircraft? I am trying to create something with air policing/non-lethal intercepts. Thanks!
cfrag Posted August 23, 2023 Author Posted August 23, 2023 11 minutes ago, NomadActual said: use DML to create divertable aircraft? Unfortunately, DML can't mess with AI. So if you want a plane to divert, you'll have to do it the oldschool way: give it a new route and hope that the AI follows it. There currently is no module in DML that does that.
cfrag Posted August 23, 2023 Author Posted August 23, 2023 On 8/20/2023 at 10:43 AM, Sinclair_76 said: When populating a stopgapped plane in a group of 4 the other 3 planes will not reappear as statics but remain empty As promised, I've created a "noGap"/"noGapGUI" script duo to DML that does what you suggest. Since it's now unit- rather than group based, it breaks compatibility with SSB and sittingDucks (who are group-based), but you now have the choice. The scripts are below for your tests (simply replace the stopGap scripts by these versions), and will be part of the next DML update noGap.lua noGapGUI.lua
cfrag Posted August 24, 2023 Author Posted August 24, 2023 (edited) Version 1.4.2 - Update - 20230824 Well, the summer is stretching on, and the heat here is stifling. I did not get around to write a lot of documentation, so that backlog is rising. This update still contains a number of important updates and fixes: Manual Main - NoGap documentation - Changes to modules - No Gap, No Problem demo (stub) Quick Reference - NoGap/noGapGUI Demos - No Gap, No Problem (new) - recon mode - reloaded (update) - Wiper with a double youu (update) Modules - cfxReconMode 2.2.1 Fixed typo - cfxZones 4.0.2 better verbosity for declutter() method - duel 1.0.2 - experimental changed slot blocking mechanics - noGap 1.0.0 stopGap sibling for some edge cases, less powerful - wiper 1.2.0 DML Zones support Categories can now be lists Supports declutter Server Modules - noGapGUI 1.0.0 Initial version Enjoy, -ch Edited August 24, 2023 by cfrag 1
crispy12 Posted August 25, 2023 Posted August 25, 2023 I'm having trouble with getting RND to trigger. I'm using flag 50 from my nested radio menus to trigger it. Syria Playground V4.miz
cfrag Posted August 25, 2023 Author Posted August 25, 2023 4 hours ago, crispy12 said: I'm having trouble with getting RND to trigger. So how do you trigger flag 50? I see a 'local script' that I do not understand fully - that local function setFlag() seems iffy to me. When I trigger flag 50 via debugger or by adding a radioMenu it seems to work fine, no issues with RND. So I changed your script to t={} function t.setFlag(val) trigger.action.setUserFlag(val.flag, true) end local AddMobile= missionCommands.addSubMenu('Add Armor Column') local Mob1= missionCommands.addCommand('Random Armour', AddMobile, t.setFlag, {flag= 50}) local Mob1= missionCommands.addCommand('Armor North BA75', AddMobile, t.setFlag, {flag= 51}) local Mob2= missionCommands.addCommand('Armour East BA81', AddMobile, t.setFlag, {flag= 52}) local Mob3= missionCommands.addCommand('Armour South BA40', AddMobile, t.setFlag, {flag= 53}) local Mob3= missionCommands.addCommand('Despawn Armour', AddMobile, t.setFlag, {flag= 59}) local subR = missionCommands.addSubMenu('Extra options') local subN1 = missionCommands.addSubMenu('Restart Mission Options', subR) local subN12 = missionCommands.addCommand('Cancel', subR, t.setFlag, {flag= 998} ) local subN22 = missionCommands.addCommand('Cancel', subN1, t.setFlag, {flag= 998} ) local subN2 = missionCommands.addSubMenu('Restart for sure?', subN1) local subN3 = missionCommands.addSubMenu('Really sure you want to restart?', subN2) local subN32 = missionCommands.addCommand('Cancel', subN2, t.setFlag, {flag= 998} ) local subN41 = missionCommands.addCommand('Cancel', subN3, t.setFlag, {flag= 998} ) local subN42 = missionCommands.addCommand('Start Day Mission', subN3, t.setFlag, {flag= 991} ) local subN42 = missionCommands.addCommand('Start Night Mission', subN3, t.setFlag, {flag= 992} ) and it seems to work. Do you see the same?
cfrag Posted August 26, 2023 Author Posted August 26, 2023 On 8/22/2023 at 5:31 AM, Thunder Chicken22 said: I would like the ability to shut off or start AI spawning from airfields that are captured/changed hands. That comment of yours gave me an idea for a new module that will be part of the next release. If you have the time and interest, have a look at the demo mission below. 'Airfield' zones can not only detect who owns the airfield (which a cloner can then use to determine the faction that the clones belong to, as seen in the demo), it also takes advantage of the newly released ability to set the ownership of an airfield by force (Lua script): see the radio menus that can set who Senaki belongs to (and then gets the cloner to spawn forces for the new owner). I still have to test and document the module, but I'm hoping that the attributes are simple enough to decipher. demo - airbase mine.miz 1
Recommended Posts