CAG, EST, CLS port/remake?

The place to discuss scripting and game modifications for X4: Foundations.

Moderators: Moderators for English X Forum, Scripting / Modding Moderators

Ship to ship transporter

Poll ended at Mon, 11. Feb 19, 15:03

Lump cost in with CLS software
3
25%
Create a new "Transporter" ware
3
25%
Use transporter research (no additional cost)
6
50%
Other (described in comments)
0
No votes
 
Total votes: 12

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Sat, 9. Feb 19, 22:01

Been working on the menu for CLS MK2, here are some preview images:
[ external image ]
[ external image ]
[ external image ]

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Mon, 11. Feb 19, 07:02

As a bit of a personal challenge, I'm going to try to update this with my progress every day. Let's see if I can keep it up for a week or two.

I added saving and loading to the waypoints, which took a long time due to a couple of hard to find bugs related to variables not being capitalized correctly. Saving allowed me to actually start testing the script. I did some initial testing with some of the simpler tasks. Fly to, stay, unload everything, and load everything works fine with stations, not tested with ships. Also tested load/buy and sell/unload a bit on player stations, founds some bugs and fixed them. Then found an issue with adding ship waypoint wares. Since there were so many wares for ships, everything the ship can carry, I decided to group them into categories shown in the image below. Then add some code to make sure the list stays centered with the top of the menu regardless of which groups you have open. I also moved the check for transporter technology to a MD script that only checks every 10 mins, and added some stuff the MD script to support 'Data storage' planned for phase 2. Finally, I started on the last part of the menu MK 2 needs for phase one, which is the automatic waypoint generation menu. All in all, a lot done.
[ external image ]

NoelSt
Posts: 61
Joined: Tue, 4. Dec 18, 12:42
x4

Re: CAG, EST, CLS port/remake?

Post by NoelSt » Mon, 11. Feb 19, 09:33

Fantastic work! Can't wait for this one :P

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Tue, 12. Feb 19, 04:45

Challenge Day 2: Added a check in paste task and edit waypoint code to ensure that the transfer amount doesn't exceed the maximum cargo space of the new waypoint destination. Continued work on the automatic waypoint generation menu, most of the options are finished now, just have to do the code to actually generate the waypoints. Found a bug which choosing sectors, just some code I had forgotten to finish. Did some preliminary work to allow you to choose build storages as a waypoint destination while I was looking at the choose object code, just adding a button for it so far. Made a new test save with a bunch of stations in different states of construction to test the former. Think that's everything.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Wed, 13. Feb 19, 08:11

Challenge Day 3: Finished adding build storage waypoints, and did a bunch of testing. Continued work on automatic waypoint generation, which was frustrating. There isn't a function in Lua to search for sectors in a given range like there is in aiscripts, so I had to make one. The only way I could see to get the neighboring sectors was to look at the gates, but the getgates function doesn't return highway gates between sectors in the same cluster. After coming up with a workaround for that I found out that the jump distance to sectors in the same cluster is inconsistent. Sometimes it says they are the same, sometimes they are different, even with the same sectors. For instance, if you check the jump distance of Nopileos' Fortune II and VI from Pious Mist II, they are both 1 jump away, according to the FindJumpRoute function. But move 1 jump to Pious Mist XI and now one is 2 jumps and the other is 3 jumps away. It is incredibly frustrating.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Thu, 14. Feb 19, 08:11

Challenge Day 4: Improved the renaming code, just found some better ways to do things that will make it easier to port to the other version. Redid all of the right click menus for CLS, added a CLS section, and reorganized everything to make it more user friendly. Added request signal option to the right click menu, and tested it with CLS mk 1. Found some bugs with the changes I make to the research check earlier, some things that did not work as I expected. And some other bugs with the md scripts that had to be cleared up.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Fri, 15. Feb 19, 06:03

Challenge Day 5: Continued testing the request signal with mk 2, and ship to ship trading in general. Found lots of bugs and squished them. More bugs with the map menu. A major bug with the execute_custom_trade script function, it doesn't exchange credits when trading with wharfs, etc. Finished the auto waypoint generation code.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Sat, 16. Feb 19, 09:16

Update Day 6: Added tooltips to the waypoint, generate waypoints, and right click menus. Added cancel button for "Quit working at station" option. Updated the MD files of CAG and EST to be consistent with CLS. Updated CAG renaming to include the features introduced in CLS. Added renaming to EST. Removed CAG and CLS from default orders menu.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Sun, 17. Feb 19, 05:48

Update Day 7: Began integrating the libraries into the previous two mods: CAG right click menu: reorganized in the same manner as CLS's menu, added tooltips, added section; EST right click menu, ditto, added start option for right clicking on a sector. Integrated choose object library into CAG and EST menus. Added quit working at station option for EST. Added warning for illegal wares in EST. Added trade with illegal wares option to EST. Added group wares by type option to EST.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Mon, 18. Feb 19, 12:10

Update Day 8: Updated EST and CAG to use move libraries, began updating CAG and EST's trade code. Ran into some elusive bugs which ate most of my time and I still haven't found the cause.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Tue, 19. Feb 19, 11:29

Update Day 9: Finally found the bug from yesterday, I think. Which completes phase one! *golf clap*.

Phase 2 plan:
  • Add trading and logistics skills. Difficulty: Hard?
  • Add "special equipment" allowing you to rearm and resupply. Difficulty: Medium-Hard depending on some things.
  • Dependant upon the above, add support for large freighters. Difficulty: Easy-Hard, depending...
  • Add messages, logs, and relevant settings. Difficulty: Easy, but tedious and time-consuming
  • Add exceptions/blacklisting Difficulty: Moderate
  • Add "Data Storage" allowing you to save settings and load them on another ship. Difficulty: Easy, depending on data conversion
  • Add CLS software, and possibly Trading MK2 software. Difficulty: Easy iff the order requirement check works right, and can be checked in Lua.
The hardest and the most important thing is adding the skills. Truthfully, it doesn't need to be hard; if I do it the same way the original script does it wouldn't be difficult at all. However, that would mean a system separate from the existing skill system, and I think that would be confusing, thus I consider it a last resort. Today I did some initial testing to see what is possible, if all else fails, the last resort my prove the be the only resort. The first attempt at adding skills failed, I didn't have high hopes for that method, full integration, but it was worth a shot. The second method is still being investigated, showing some promise.

In an effort to balance things, I've also looked into how experience is awarded. The original script adds levels based on flight time, but that is with jump drives, so using the same method would be badly skewed if used in X4. In order to keep it consistent, I checked how the game rewards traders (and miners). I set up a loop that simulates giving the pilot experience equivalent to a trader completing a trade with a full cargo hold. The loop ran every 1ms. 2-3 hours later the pilot had only reached level 12, starting from 0... That's ~10 million trades... On second thought, I don't think I'm going to use that method.

The current plan is to release an alpha version at the end of phase two. I won't know for sure until I actually complete phase two and see how it plays, but that is what my goal is atm.

XTC0R
Posts: 401
Joined: Sat, 1. Dec 18, 19:58
x4

Re: CAG, EST, CLS port/remake?

Post by XTC0R » Tue, 19. Feb 19, 12:57

I don't want to interrupt your daily reports.
Just wanted to give you a KUDOS in the name of all the X4 players which are following your thread and progress.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Wed, 20. Feb 19, 09:12

XTC0R wrote:
Tue, 19. Feb 19, 12:57
I don't want to interrupt your daily reports.
Just wanted to give you a KUDOS in the name of all the X4 players which are following your thread and progress.
Thanks for the moral support.

Update Day 10: The 2nd method for adding skills proved to be successful, and I have managed to add 'trading' and 'logistics' skills as you can see below. The skills have been integrated into CAG: added promote pilot option; added pay pilot from homebase account option; added/formated flight time, employment time, and total pilot salary; added libraries for calculating payment, calculating experience, then promoting pilots, initializing custom skills, displaying skill levels. Tested CAG with the skills: Found a bug in renaming code when pilot skill is 0, and a rounding error in renaming code. Adding the skills to EST and CLS should follow without much difficulty. Then I'll have to decide which part of phase two to work on next.

About the skills: I did end up going with time-based level for the moment. It takes about a couple of game days to go from level 0 to level 15, rough estimate as I haven't sat down and calculated it. I included the vanilla exp rewards when adding exp for the custom skills, so you will still gain piloting, moral, and management skills while running EST, CAG, or CLS. Right now the new skills all start at 0. The original script allowed you to get a pilot with an initial skill level of 1-3 if you started while docked at certain stations. However, X4 does that annoying 'undock before running a new order' thing. I don't know if there is a way around that; too much effort to fool with right now anyway.

[ external image ]

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Thu, 21. Feb 19, 11:28

Update Day 11: Added skills to EST and CLS. Updated the trader settings menu for both to add the features I added to CAG yesterday. Adjusted the experience calculation for the new skills to be less linear. It now takes slightly less time to get the first levels, but longer for the latter ones. All told, it takes 37.4 hours (game time) to reach level 15 from 0, but only ~20 mins for level 1 from 0. I think that is a good balance, needs more testing though. Adjusted the level based max jump range for EST to start at 1, at level 0, instead of 0, as it was too hard to level up since all the vanilla traders focus on in sector trades.

I've decided the next thing I'm going to work on is going to be messaging/logging, in the hopes that it will make debugging slightly easier. Towards that end, I've started planning out how I am going to do it. I'll go into details in another update.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Fri, 22. Feb 19, 15:36

Update Day 12: Added menus for message settings. Added a bunch of text for messages to the language files, and started working on the aiscripts side.

X4 has 4 ways to deliver messages to the player, the logbook, the ticker, subtitles, and coms. Unfortunately, everything but the coms is hidden by the map menu; something that is frequently kept open. Coms forces the map menu to close, but it also breaks seta and is rather intrusive. There isn't really a good way to deliver important info to the player and make sure they see it without being annoying. X3 has a little mail icon that would flash when you had an unread message. This makes it easy to send messages to the player in such a way they could read them at their leisure. The logbook should fulfill that function, but right now, it is set up quite poorly.

The logbook, in general, is a spammy mess that swallows any important messages. Also, it is not convenient to access. If you have more than a handful of ships the logbook quickly fills with minutia. What it needs is some way to filter things, the categories don't do the job. Something like filtering by the sender, group messages by commander, and most importantly a way to TURN MESSAGES OFF. Do I really need to know every single time a ship gets scanned by the police? Maybe if they had something illegal, but not every single time. That quickly fills the logbook with all kinds of meaningless spam. And then there is the spam from miners. Why would I want to know every time a miner delivered cargo to my factory? I only have half a dozen miners in my test save and it is still way too annoying.

But, I'm not planning on rewriting the logbook, I'm just venting. As for how I have set up messages, I've divided things into 3 categories: Notifications (i.e. pilot promoted), Trade messages, and Critical message (things that stop the script from running, i.e. no money). Each setting has options for the four ways to message the player, as appropriate for the category, i.e. only critical messages have an option to com the player, as well as an option to play a sound on receiving the message, in the hopes that, that will allow people to find the messages they want to look at.

One of the difficulties I've encountered is trying to figure out the subtitles, which use the <speak> command. For spoken text, you cannot use the normal way of inserting information into a string, no 'Blah blah %s blah blah'.[$varible]. The <speak> command only accepts the line and pageID as separate arguments, not a string that can be formatted. There is the option to add <name> and <description>, but the information about those two says, "Requires that a name has been defined in the correct format." without any hint of what the 'correct format' is. This is making it a bit difficult to display the messages as I want. I don't even want it to try to speak the text, just display it. I wish there was a dedicated subtitle command, but there doesn't seem to be.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Sat, 23. Feb 19, 15:21

Update Day 13: Added and tested trade messages to CAG (log file, logbook, ticker, and sound). Added Notification messages to CAG (logbook, ticker, subtitle, and sound), untested. In progress of adding critical messages to CAG (logbook done, ticker done, subtitle done, sound done), untested. Coms for critical messages is all that remains; that, and I'm still fiddling with the formatting here and there.

o-papaya-o
Posts: 42
Joined: Sun, 29. Mar 09, 11:53
x4

Re: CAG, EST, CLS port/remake?

Post by o-papaya-o » Sat, 23. Feb 19, 16:14

Hello,
I am really impressed by the work to be done, I am looking forward to testing the mod, I think your work deserves a reward.
C’est en voyant un moustique se poser sur ses coui**** que l’on s’aperçoit qu’on ne peut pas régler tous les problèmes par la violence.

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Sun, 24. Feb 19, 16:15

o-papaya-o wrote:
Sat, 23. Feb 19, 16:14
Hello,
I am really impressed by the work to be done, I am looking forward to testing the mod, I think your work deserves a reward.
Thanks for the kind thoughts.

Update Day 14: Finished the Coms for CAG, and tested both notifications and coms. Coms worked out pretty well: when you interact with the pilot your given the option to go right to whatever the problem is, i.e. no wares selected? open the add ware submenu, no money at a station? open the manage funds menu, etc. Added all messaging stuff to EST and CLS and tested them. Tweaked the formatting of some of the messages a bit, still not 100% happy with them in every situation. Added a sound entry to the sound_libary, as the one I wanted to use wasn't already listed. Added an override to the vanilla trade messages for CAG, CLS, and EST. It's my way or nothing. Adjusted the timeout of ticker messages based on whether or not you have SETA active, so you can actually read them if you have SETA active. I don't know why it doesn't do that automatically. Can't seem to find an option to adjust the timeout for subtitles. They also use game time instead of real time. Which you have probably noticed if you have flown near a fight with SETA active as the guys will not shut up. That's because the delay between background speech is in game time.

Guy really wants paid...
[ external image ]

morbideth
Posts: 391
Joined: Sun, 9. Nov 08, 03:07
x3tc

Re: CAG, EST, CLS port/remake?

Post by morbideth » Mon, 25. Feb 19, 14:42

Update Day 15: Added pilot level to the text in logbook entries for promotions. Tweaked the formatting more. The header for the logbook entries had a place to put the homebase and sector of homebase, but if the ship didn't have a homebase it ended up being -(), which was bugging me, so I tweaked it so there is no line if there isn't a homebase. Fixed a few bugs that I came across, more from chaging the formatting than anything. Odd thing... <play_cutscene sound=" " requires an entry from the sound library. <show_notification sound=" " requires an entry from the sound library. <play_sound sound=" " requires an entry from the sound library, as a string. Why?! What did I do to deserve this kind of abuse? Consistency is important people!

Next step is equipment. I've started working on the menu, and made decent progress. I can't decide what I am going to about populating the list though. I can either load the info from the library, and run the risk of loading something that can't be built, or I can try to search for a random shipyard and load it from that; finding a station is not an easy thing to do in Lua.

Did you know that you cannot output tables to the debug log from Lua via DebugError? Given that Lua is basically built around tables this seems like an odd choice. I've made a little debugging md script to work around it:

Code: Select all

<cue name="Debug_to_file_from_Lua" instantiate="true" version="1">
      <conditions>
        <event_object_signalled object="player.ship" param="'debugToFile'"/>
      </conditions>
      <actions>
        <debug_to_file directory="'CLS'" name="player.ship.idcode" output="true" append="true"
                        text="'Debug from Lua: %s'.[event.param2]"/>
      </actions>
    </cue>
And to use it in Lua:

Code: Select all

SignalObject(ConvertStringToLuaID(tostring(C.GetPlayerControlledShipID())), 'debugToFile', someTable)
This has been incredibly useful for debugging Lua stuff. Of course, you don't have to pass a table, anything that can be sent to an aiscript can be used.

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Re: CAG, EST, CLS port/remake?

Post by UniTrader » Mon, 25. Feb 19, 15:51

just a hint: your event will probably fail when you change the ship because the event object is on!y set up once (when the event is set up/starts listening), but you send the signal to the current player ship rather than the one which used to be it. Either use a better suited event object like the player.entity or re-register the event whenever the player changes the ship. Former way is imo better because it doesn't have edge cases (player riding a ship without control!ling it, player walking on station with possibly no player ship docked)
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

Post Reply

Return to “X4: Foundations - Scripts and Modding”