RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

A_Li_N - Completely Custom {Alpha}

A_Li_N

Knight
A_Li_N - Completely Custom {Alpha}

Updates can be found in my Signature. I am discontinuing the Complete Spell System to focus on Spell System 2.0 (also linked in my Sig). Sorry for any inconvenience!


After a long road of lots of set backs and lazyness, I have something worth sending out for anyone that wants to play with what I've been working on. The main premise behind my recent workings is that I am not going to be modifying any distro files, hence the name 'Completely Custom'. I have also worked hard on making it all as dynamic as possible, even with its own save system (Thanks goes to TMS and any sub-cred he may choose to dispers for this addition). This system is completely self contained, meaning it can be added/removed at any point with very little effort. There are no 'control stones' to worry about being deleted, and every system that I will be adding to the ACC will be able to be dis/enabled in-game. Systems are 'registered' to the ACC. The ACC Gump will create itself based on what systems are registerd. The main gump will create buttons for each system. When you click a button, the gump will remake itself (system buttons, etc) and then pass itself along to the system's Gump method, which makes the system specific gump (again, thanks goes to TMS for his help/ideas with this)

Updates:
  • 06-05-28 - 1851:
    Fixed a crash with the Public Gates.
  • 06-02-02 - 0555:
    Found and fixed a bug with the Spell Icons.
    Attachments fixed to allow larger zips. Link at top of page now links to the attachment at the bottom.
  • 06-01-29 - 2006:
    Changed Date stamps on Rars/Releases. yymmdd.
    Update to the Central Memory Admin Gump code.
  • 01-22-06 - 1524:
    Update to hopefully fix any crashes people were recieving with the ACC gump.
  • 01-13-06 - 1945:
    Small update changing the [ACC command (brings up the ACC Admin Gump) so only Admins could use it.
  • 01-12-06 - 0002:
    Public Gates' Admin Gump worked on. Ability to Import and Export the entire system, single Categories and Locations. Added Distro locations export file. Place the folder in your RunUO folder. (See attachments or here)
  • 01-11-06 - 0109:
    Update problems, please read.
    Public Gates' Admin Gump worked on. Ability to add Categories/Locations.
  • 01-05-06 - 1732:
    Public Gates' Admin Gump worked on. Ability to change and remove categories and locations. More work planned :)
  • 01-03-06 - 1624:
    Complete Spell System added to ACC.
  • 01-01-06 - 2329:
    Converted Public Gate System to ACC.
  • 12-23-05 - 1333:
    Some more minor tweaks. Mainly when the systems get registered (Configure instead of Initialize()) Now it's time to get some xmas stuff done :)
  • 12-23-05 - 1240:
    Tiny update to the CentralMemory.cs to eliminate a possible discrepency with 'IEntity'. Not a major change.
  • 12-23-05 - 0219:
    I have completed an update to this alpha. Most of the update has to do with the CM, but there are some small but needed changes to the ACC Core files. Main changes are the save/load methods. I've changed from using a single binary file to using 3 different ones (like World.Save). I should actually say that I have created the possibility to use 3. Simple save schemes can still work just fine with using only the 'writer', but the CM needed access to all 3 (idx, tdb, bin) so it would not break if you took a module type out. I've done some minor testing with different combonations of enabled, in, disabled, etc and have eliminated all errors I've come across. Please post any that you come across, prefereable in debug logs.
    There are slight changes to the Modules for those of you that have decided to get a jump on that aspect. Nothing too major, just take a look at your old and see what's changed with the new.
    I now think the CM is stable enough that I will continue work on the Complete Spell System and get it ready to release. Once I do that and fix any errors that are discovered between now and then, I will delete this thread and create an official beta release thread with more precise info on the systems. Then I'll start work on the rest of my list.

This thread and all scripts in it are very much so in the 'alpha' stage of development. I'm posting what I have finished so far in hopes that some people will take it and try to break it. I'm pretty sure it will not break anything, but since it is not completely tested, it could crash the server. When I get a more finished product, I will be making an official post for all things ACC.

The main gump is accessed with [ACC. It will allow you to control all aspects of all of my systems that will be imported to the ACC. Currently there is only a TestSystem and CentralMemory system. The Central Memory has a very basic TestModule for you to see how things can work.

For an example of what will be using these new systems, I will try to explain the Complete Spell System, which will be my next port to the ACC.
The CSS will have a 'dynamic' spell registry that is not relyant on set SpellID's. How this works is completely too complicated to get into at this time, but it does work. This spell registry will be kept track of using the saving system of the ACC. I will also be keeping track of the versioning with the ACC save system, and will therefore be able to update things behind the scenes if I ever need to. The CSS Spellbooks will have 'dragable' icons, which use a module and the CM to keep track of. Icons are 'stored' to the player in an IconsModule. This module is stored in the CM, like all other modules. When a player that has icons stored logs on, their icons are sent to them (if the system is running anyway).

The CM can be used for many things along those lines. This system pretty much eliminates the need to change the PlayerMobile.cs, or any other item/mobile. It keeps track of things using the Serial and a list of Modules that that Serial has. If you wanted to make a Paintball game that needed to put a player on a team (hint hint, update of my Paintball coming someday), you could use the CM to keep track of such things.

Anyway, if you have any questions, concerns, comments, bugs, etc, please feel free to post here or email them to me (anAlien at gmail) with 'ACC' as the subject. As I get further on making the CM gump code (very basic atm, just enough to display what it can do with the TestModule) and other systems, I will update this post until I'm ready to make the official release.

Also, here's a list of my ideas. This is sorta my 'todo' list (minus the CSS) Any comments on it are welcome as well.
Code:
RunebookGump:
	Module:
		Locations.
		Types of Recall/Gate.
		'Starting' location for gump.
	Gump showing locations:
		Name
		Location?
		Hue?
		Copy Rune
		Remove Rune
		Recall
		Gate

ItemCollection:
	Gump showing items:
		'Owner' and 'Guest' views.
		List and Detail views.
	Module:
		Hashtable? 
			Type - Type of Item.
			Saved - Save what information is different.  Use flags similar to default ser/deser.
		'Starting' location for gump?

Race/Class/Level:
	Information/Choice gump
	Module:
		Class name/title/etc.
		Race name/title/etc.
		Level
		Experience (to level)
		Apply to Mobile?
	Experience Gain
	Artifact Rating
		Can either only use x many artifacts or x amount of ARarity

Evos:
	Dynamic - Able to add/remove 'types' of evos, including how many stages they go through, stats,
		ID's, etc.
	Save types for distribution.
	Evo belongs to the player forever.  
	Evo can be 'changed' to a different kind during first (maybe second) stage only.
	Call/release commands that bring the evo to the player or 'puts them away'.

Paintball

(If anyone is wondering)​
If you are wanting to start a script pack and want to use my system, ask. If you do not ask, I will not support your pack and will probably tell people not to use it, since you are stealing my work. (You as in the general you) If I say yes, it will usually mean that I will simply tell you when I update and help with any conflicts that occur.
 
This looks extremely interesting. I'm going to install it and play with it when I get back from school. I've looked at your test modules and it looks simple enough to program for and it might just be exactly what I was looking for. If this works, you're my hero.
 

A_Li_N

Knight
IndigoParadox said:
This looks extremely interesting. I'm going to install it and play with it when I get back from school. I've looked at your test modules and it looks simple enough to program for and it might just be exactly what I was looking for. If this works, you're my hero.
God I wish they would fix the email notification of replies...
The Central Memory has a ... major bug. I'm working on fixing it, but I have to learn how the World.cs does the entire save/load (the 3 different files).
But play around with it, as the modules will most likely not change and you can get aquanted with how it works. But by all means, don't put it on a public shard :)
 

Llyrwech

Sorceror
Huh... If I understand correctly, this is sort of like a shell system. In simpler terms, Falafel, the system in this script will let you add other scripts from A_Li_N without having to change any scripts in your RunUO installation. The system posted here will keep track of and manipulate its sub-systems in order to avoid potentially difficult modifications to other systems, such as the Ore.cs file such more-complex files.

A_Li_N, I haven't had a chance to check this out yet, but I'm both intrigued and impressed. Do you know whether or not this system will be powerful enough to avoid PlayerMobile changes as well? I know that a lot of what we do in there can be done by other means, but the PlayerMobile method is just more comprehensive. If I understand your plans correctly, it would be possible to give everyone a data holder which could contain any extra variables and values which we usually have to add by hacking the serialization to pieces.

This could be a revolution, and I think I like the sound of it.

I'll be following this closely.

Safe journeys,
Llyrwech
 

A_Li_N

Knight
Llyrwech said:
Huh... If I understand correctly, this is sort of like a shell system. In simpler terms, Falafel, the system in this script will let you add other scripts from A_Li_N without having to change any scripts in your RunUO installation. The system posted here will keep track of and manipulate its sub-systems in order to avoid potentially difficult modifications to other systems, such as the Ore.cs file such more-complex files.

A_Li_N, I haven't had a chance to check this out yet, but I'm both intrigued and impressed. Do you know whether or not this system will be powerful enough to avoid PlayerMobile changes as well? I know that a lot of what we do in there can be done by other means, but the PlayerMobile method is just more comprehensive. If I understand your plans correctly, it would be possible to give everyone a data holder which could contain any extra variables and values which we usually have to add by hacking the serialization to pieces.

This could be a revolution, and I think I like the sound of it.

I'll be following this closely.

Safe journeys,
Llyrwech
You pretty much said it all correctly. The ACC core system keeps track of any of my other systems that I will be adding to it. It has a centralized gump so you can change any settings for any system, etc. It takes care of most of the basic save functions with custom save files, so you will be able to remove all of my systems at a moments notice without too much of a notice in-game. (that's the plan anyway :))

As for the Central Memory (CM), the main function is to take care of any kind of serialize additions you might want. So if you have a race system, which usually requires either a PM de/ser edit or some 'orb' to keep track of the race, you could instead use this system to store the race to that mobile. (lucid I believe is currently working on such a thing, but I will also be doing a race/class/level system of my own down the line). However, override specific methods/variables is not the function...So if you wanted to add an entry to the ObjectPropertyList, you would have to edit the actual item/mobile. This is unless I figure out how to do such a thing as well.
 

Llyrwech

Sorceror
Absolutely fantastic. You know, I fully recognize the desire to hold onto one's work proprietarially, and I would not begrudge you for doing so at all; if only your scripts and systems will be using this, that's fine enough, because it takes a little bit of extra load off the wild need for changes, at least. However, I hope you will or have considered documenting this system clearly enough that future systems by other authors could be tailored to fit. If it works well, you might even get the devs to include it either in the distro or as a recommended addition for scripting.

Not too long back, my hard drive on my main computer died... completely... irreparably. Among the lost data was my heavily-modified and personalized RunUO installation, (including the groundwork for a spell system similar to Sorcery from U8, but that's beside the point.) I've been slowly going through the archives on this site, downloading the scripts I used to have if I can find them, (R.I.P. Arya's Jail System,) and dreading the hours of edits ahead of me. Something like this would be a time saver, if not a life saver.

Molto kudos.

Safe journeys,
Llyrwech
 

Courageous

Wanderer
Not too long back, my hard drive on my main computer died... completely... irreparably. Among the lost data was my heavily-modified and personalized RunUO installation,...

Off site CVS, perhaps? You can often get a great backup system going for code, using a remote shell account somewhere. You only need enough space to hold the code base, some deltas, and the like. It's all pretty easy, if you use a windows client like WinCVS.

Sorry to hear this sort of thing, makes me cringe, have had disasters, too.

C//
 

Jeff

Lord
Llyrwech said:
Not too long back, my hard drive on my main computer died... completely... irreparably. Among the lost data was my heavily-modified and personalized RunUO installation

I recover data for a living, i know exactly how you feel, just like all my customers :)
 

A_Li_N

Knight
Llyrwech said:
Absolutely fantastic. You know, I fully recognize the desire to hold onto one's work proprietarially, and I would not begrudge you for doing so at all; if only your scripts and systems will be using this, that's fine enough, because it takes a little bit of extra load off the wild need for changes, at least. However, I hope you will or have considered documenting this system clearly enough that future systems by other authors could be tailored to fit. If it works well, you might even get the devs to include it either in the distro or as a recommended addition for scripting.
Documentation is very much NOT my strong point, but I will be doing as best I can when I get things working. I don't plan on only supporting my systems for this thing...I will just be making all my systems use it. I don't know about any dev request, as I don't think anything I make is close to being considered profesional or worthy as such. I do this in my spare time as a behind the scenes hobby (which is why it takes so long to do it :))...and to give an example of how good I'm NOT, I'll just say that I can't create a normal, stand alone program (yet). I've tried, probably starting way to big and deep, but it failed pretty miserably. We'll see how things go :p
 

Llyrwech

Sorceror
heh Well, don't let problems with creating independent programs convince you that your talents are lacking. First of all, there's a vast difference between programming and scripting. Second, this is not an environment where one has to "go it alone." You've come up with a fantastic idea and begun implementing it. I haven't set up my server yet, so I'm not sure where the system is at this point, but I know where it can be and where it's headed. If you need assistance making it behave as you'd like, input on additions/modifications, anything like that, this is definitely the place to bring it.

Also, if you're interested in making the system more accessible, I'd be more than glad, once active again, to go through it and document it, as well as writing up a brief on how to fit systems to this core. Of course, if you'd rather keep it proprietary, that's fine as well. You deserve it. This is your brainchild.

Safe journeys,
Llyrwech
 

A_Li_N

Knight
Once completed, I'll write some info on how to add to it and what certain things do. At current, I don't need help...just need to get focused and do the actual code. I'm currently simply doing a full trace/copy of the World.Save and World.Load code to fix the CM.
 

A_Li_N

Knight
Updated. See main post for info.
Pretty much need to replace all files and get rid of the CMItem.cs if you still have that in. I will not be using it unless I figure a way to load the modules saved to them onto the new system. (Probably pretty easy, just didn't take the time to yet)
 
A_Li_N

Updated. See main post for info.
Pretty much need to replace all files and get rid of the CMItem.cs if you still have that in. I will not be using it unless I figure a way to load the modules saved to them onto the new system. (Probably pretty easy, just didn't take the time to yet)
Oh sweet! Thx! I've been waiting months for this moment :)
 

A_Li_N

Knight
Public Gates

Converted Public Gate System to ACC. Minimal testing done so far. Tested upgrading from regular to this and it works fine minus deleting all gates (just the gates, entries are still there) due to changing the namespace. After the first load/save with the new system, you can delete ACC\Public Gates\Items\PGControl.cs. No admin gump made yet. Gen and Rem gate commands still exist (gengates and remgates). These get called when the system is enabled/disabled as well. I've seperated out the Default locations into a seperate list file, so it's easier for people to hard-code locations if they wish. Only problem with this is that I have yet to decide where to call the Default.Generate. Any suggestions? It'll probably be a simple button in the admin gump to add the default locations, IDK for sure yet.

Plans for admin gump:
  • 'Add Defaults List' button
  • List all locations.
  • Edit any location/category.
  • Add location/category.
  • Import/export Categories/location to distributable files.
  • More when I think about it (suggestions?)
Plans in general:
  • Optimize where possible
  • Add 'Cost' to use gate (default to 0 of course)
  • Add support for travel books.
  • More when I think and check the PG thread for suggestions.
 

A_Li_N

Knight
Complete Spell System Added

Finished working out most bugs in the All Spells system, (Now called Complete Spell System).

This system has (or will have) the following features:
  • Completely custom; no distro mods.
  • Enable/disable spells in-game.
  • Code for checking custom skills when they come out.
  • Code for spell restrictions if you choose. (good for Races/Classes/etc)
  • Dynamic registry/books; If you change one of the registries, books that are already in the game will update at next server load. So if you have a Druid book with 16 spells in it (full book) and take one of the druid spells out of the Registry (by modifying the DruidInitializer.cs), the books will not have that spell anymore either.
  • (Soon)Decoration code for spellbook gumps. It's commented out for now untill I make sure it works correctly for everything. Was having problems with it before.
  • Easiest system to add/change/remove spells and schools to. No worrying about conflicting SpellID's and modifying a bunch of files to get that new Spellbook Type in. Add the school to the Schools.cs and create your book/gump/initializer using the current ones as a guide.
  • 'Dragable' Icons. Like my previous AS/FSB systems, this system uses the same Icons. Position them where you want and they will stay there. This feature requires the Central Memory.
  • Turn the system on and off with a click of a button. Don't want people to cast for a little while? Turn it off. All information will be kept in backup and will restore when you enable the system again.
  • Mix schools of magic. Have that perfect collection of spells for your Druid class that contains spells from different schools? Simply add any spell from any system to the initializer and tag it for Druid and you'll have a custom Druid spellbook. More explanation will come when I get around to creating a guide, or if people ask.
  • Suggestions?

Current schools:
  • Avatar
  • Bard
  • Cleric
  • Distro
  • Druid
  • Ranger
  • Rogue
  • Undead

Admin gump will contain:
  • Lists of all schools/spells so you can dis/enable spells in-game.
  • erm, can't think of anything else right now...kinda tired :) Suggestions?
 
I was thinking of an [offensive and [defensive commands that would randomly select those types of spells and cast one randomly within the players spell class.

Would be a good option for noobs that are still learning their spells. Would be for situations that would need a fast reaction and cast timing.
 

A_Li_N

Knight
Interesting concept, although you would need to classify each and every spell as offensive or defensive and keep track of it somehow (not hard, but still have to do it :))

I'll see what I see when I get further into things.
 

A_Li_N

Knight
Added Public Gates' Admin Gump code. You can now manage the system from inside the Adming Gump ([acc)
So far, functionality for changing and removing locations/categories.

To remove, erase the name and hit the update button. (big red one, can't miss it)

You'll see that there are things for Cost for gates. This feature is not yet implemented into the actual system, but I know it will be so I added it into the gump. Currently all code is commented out for this (except the graphics).

More work is planned tomorrow. Probably focused on the rest of the Public Gates admin gump. See list above for what's planned to be put into it.
 
Top