Jump to content

LMS - Lrr Modding System


TheDoctor
 Share

Recommended Posts

UPDATE: Version 0.1.2 has been released. I'm an idiot and never noticed the code to add d3drm.dll was broken.


I'm planing on making a unified modding system for LRR. It's going to be an all-purpose launcher, patcher/mod installer, wad manager, etc. It's going to be written in python, frozen with py2exe for usability. The source and download will be on github. Patchman scripts will be supported. CFG mods will be managed with diff and patch (if I can get it working). If people want, I will even make sure you can play custom music with it. I'll start it out as a launcher, then add modules to it as I go. Anyone who knows python is encouraged to help. Links and updates will be posted here.

Current features:

  • Game launching
  • Automatic color depth changing
  • Wad priming
  • Automatic adding of d3drm.dll
  • Telling you off for trying to mod in Program Files
Source: Github

Download: LMS V0.1.2


Currently planned:

  • Launcher
  • Wad management (Priming, manual de/recompiling)
  • Mod management with conflict detection
  • Mod patching (maps, models, animations, etc)
  • CFG patching (if it would quit being stupid)
  • CFG checking
  • Overhaul mode
  • Registry based settings (new)
  • Alternate installer functionality (the disk is obviously required)(new)
Possible future additions:
  • Map making and npl scripting
  • In-game custom music playing
  • ???
Legend:
  • Done
  • Partially done
  • Having issues
  • Not started
Edited by Cyrem
Link to comment
Share on other sites

Patchman scripts will be supported

Excellent! Will this make use of Patchman scripts (in terms of applying them) for most mod installations or are you only supporting them while using your own script system? I just want to know if I should continue building on the scripting format or not bother?

How are you doing the diff patch? Are you storing the byte differences or doing it like Patchman, but instead building one from the differences?

Looking forward to people having no excuses for not playing mods :P

Link to comment
Share on other sites

Patchman scripts will be supported

Excellent! Will this make use of Patchman scripts (in terms of applying them) for most mod installations or are you only supporting them while using your own script system? I just want to know if I should continue building on the scripting format or not bother?

How are you doing the diff patch? Are you storing the byte differences or doing it like Patchman, but instead building one from the differences?

Looking forward to people having no excuses for not playing mods :P

If I don't come up with a better format, Patchman might just become the de facto script format. As for the cfg, i'm literally using diff and patch for it. The unix programs. This one, to be exact. It's also the one that google uses, evidently.
Link to comment
Share on other sites

Will it be GUI or command line? And if GUI, which technology will you be using?

Also, nice name...

I intend to try to use a GUI, and if I do, it will be GTK. If it doesn't work out, it'll be command line, but it will be nice and friendly.
Link to comment
Share on other sites

  • 2 weeks later...

Hows it coming?

Always check the OP for news, updates, etc. I prefer not to clutter this topic with random update posts.

Unfortunately, I never tend to check topics which don't have unread posts in them...

Link to comment
Share on other sites

  • 1 month later...

As I said in the chat once, I downloaded the LMS source and tried to help you out, but with very few comments and contradicting statements, I couldn't do much. What I did do was very small: I changed the menu options from a list to a tuple, since the end user cannot change it (and tupes work here, since they cannot be changed), I added an install option into the menu, (installLRR() which simply prints "Not ready yet.), moved the import install to the top (its good to list it all in one place). I could nothing anywhere else. I have more to say, but I GTG now.

I'll pull link when you have it. e345633.png

-snip-

Link to comment
Share on other sites

As I said in the chat once, I downloaded the LMS source and tried to help you out, but with very few comments and contradicting statements, I couldn't do much. What I did do was very small: I changed the menu options from a list to a tuple, since the end user cannot change it (and tupes work here, since they cannot be changed), I added an install option into the menu, (installLRR() which simply prints "Not ready yet.), moved the import install to the top (its good to list it all in one place). I could nothing anywhere else. I have more to say, but I GTG now.

I'll pull link when you have it. ;)

http://dl.dropbox.com/u/58490278/LMS%20Minor%20Changes.zip

Sadly all of those changes are irrelevant. I don't care about your tuples because no one will change that list without me intending on it, I still have to work on the install portion, and I only accept merges through github. :P
Link to comment
Share on other sites

  • 1 month later...

So, how exactly does the CFG checking system work?

Sorry it took so long to notice this post. I've already got a crude system in place. Right now it only checks for proper RGB values and broken file paths. When I work on it more it should check more things.
Link to comment
Share on other sites

So, how exactly does the CFG checking system work?

Sorry it took so long to notice this post. I've already got a crude system in place. Right now it only checks for proper RGB values and broken file paths. When I work on it more it should check more things.

That's a lot better than I could do. Looking forward to a release whenever that is, since I'm always typo'ing my work.

Link to comment
Share on other sites

[blarg]  Is that intentionally a 1x1 square?

No, the thing broke.  Check now.

Quite impressed, and very excited.

Link to comment
Share on other sites

If people want, I will even make sure you can play custom music with it

 

Cyrem has already done that with Cafeteria 0.6, but it is all random for now.

 

 

Registry based settings (new)

 

Do you know what kind of settings you want? I would assume LRR installation path and Data Method check. I can write some registry-writing code for you (I need to get reading it back working still) if I know what to make.

Link to comment
Share on other sites

Registry based settings (new)

Do you know what kind of settings you want? I would assume LRR installation path and Data Method check. I can write some registry-writing code for you (I need to get reading it back working still) if I know what to make.

If I can check something on the fly, I will. As for persistent settings, I need to figure out how I'm going to format the registry data storage system first.
Link to comment
Share on other sites

Why use the registry at all? Just store them in a settings file.

For as many times as I've done that its always a pain in the ass to work with. If I'm going to store information about what mods are installed, etc then I need something that's not likely to get deleted either.
Link to comment
Share on other sites

Why use the registry at all? Just store them in a settings file.

For as many times as I've done that its always a pain to work with.

 

For Python 3:

 

import os.path
import linecache
 
gamepath = "C:/Users/MyUser/Desktop/LRR"
datamethod = "True"
 
with open('LMSSettings.txt', 'wt', encoding='utf-8') as settings:
    print(gamepath, file=settings)
    print(datamethod, file=settings, end='') # Use end='' for the last line of the file only
 
readgamepath = linecache.getline('LMSSettings.txt', 1)
readatamethod = linecache.getline('LMSSettings.txt', 2)
readgamepath = readgamepath.strip() # To remove n, t, and the like
readatamethod = readatamethod.strip()
if os.path.exists(readgamepath):
    # Do whatever
else:
    print("Cannot find LRR installation at {0}!".format(readgamepath)
if readatamethod == "True":
    print("WADs are primed")
else:
    print("WADs are not primed!")
    # Call function to prime WADs

linecache.clearcache() # Always, always dump cache after reading

 

For Python 2.7.3, you'll need to use

from __future__ import print_function

to use the code above. Or you can go the hard way and use settings.seek(), settings.write(), settings.read/readline/readlines, which is no fun at all.

 

Nobody is forcing you to use a file for the settings. Use the registry if you want. However, this code shows that files can be pretty easy to deal with.

Link to comment
Share on other sites

If you use registry we won't be able to use LMS in multiple LRR installs. And if I delete LMS, it will leave the registry entries.

Link to comment
Share on other sites

If you use registry we won't be able to use LMS in multiple LRR installs. And if I delete LMS, it will leave the registry entries.

 

That is where a good installer comes in to clean everything up, but since Doc is writing LMS to run off and mod LRR in a folder on your Desktop, no matter how good a installer you have, it will get deleted, it will get moved, and something will break. Again, another point for a settings file.

Link to comment
Share on other sites

You fail to realize that I know this. I don't intend on limiting users to one set of settings. I'll have one area in the registry and make branches off of that when LMS is launched from a different path.

Edit: I'll add an option to delete all settings once I start on that code, just for you Cyrem.

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.