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!

TM Skill System 3.0

TMSTKSBK

Lord
So basically, you need another set of variables to set the cap of skills to. These caps would be applied during skill selection, and would be built into the ticket or stone being used (via a profile).

Methinks this might take some work.

And I've thought of a way to improve profiles :-\...Make the saves smaller and whatnot. Basically would only save "non-default" skills, and include a default value for the rest of them.

Hmmmmmmmmmmmmmmmmmmmm...how to implement.
 

Pyro-Tech

Knight
TMSTKSBK said:
So basically, you need another set of variables to set the cap of skills to. These caps would be applied during skill selection, and would be built into the ticket or stone being used (via a profile).

yess...that is pretty much exactly what it is. like i said, i don't know how to properly explain stuff.

TMSTKSBK said:
And I've thought of a way to improve profiles :-\...Make the saves smaller and whatnot. Basically would only save "non-default" skills, and include a default value for the rest of them.

Hmmmmmmmmmmmmmmmmmmmm...how to implement.

that would be a good way to do it...no need to apply things to skills that are unedited
 

marvin3634

Wanderer
So what was the final answer.

I seen part of where you went back and forth on the issue of the shard crashing when a player clicked the ticket. I have that problem now and here is what im at. Ive got the tickets dropping in packs, with the player name on them , if the player posseses the ticket and uses the stone to redeem it it woks like a charm. But if the player clicks the ticket the shard will crash. just tell me how to make the ticket [Visible = false] and i can live with that or include the char creation file that is modified and ill set my start locations and money items .ect.lol :D
The Reason for this post was I cant seem to find exactly what post this was solved in and have read way too many. Because i missed it somewhere.
 

TMSTKSBK

Lord
I was unaware of that crash. I'll try to fix it. Wouldn't happen to have the crash log, would you?



Edit: I can't reproduce this crash!!! Gahg! PM me your server name and I'll make a house call.
 

Soultaker

Sorceror
How do i put a ticket on each person?

I can't quite understand how to put a ticket on each person. can anybody help me out :)

Thanks Again for the cool script.
 

TMSTKSBK

Lord
You do it like this:

In CharacterCreation.cs, during the adding things to the pack, you want to say something like this:

if( SkillProfileHelper.ProfileExists("Default Profile") )
{
PackItem( new SkillTicket(m, SkillProfileHelper.GetProfile(m, "Default Profile");
}
 

TMSTKSBK

Lord
Blah.

I have figured out how I am going to do TMSS 4.

"Features" removed:

Props on most skill items. Profiles are the only thing you can do.
Skill Settings will have all skill-setting related info removed.

Improvements:
-More distributed profiles.
-Settings made one-dimensional.
-Improved reports.
--Skill Set Report (for each use of a skill item)
--Better trouble report.
-Skins.
-External profile authoring app? <-- feedback.
-Profiles have "default to:" values, so you don't have to specify EVERY item. You can specify only the ones you need, and the rest default to whatever you want.
-Profiles control EVERYTHING.

Basically, the concept behind TMSS 4 is this:
Get the core in one of three flavors:
--!CORE Light!-- (no skins, super basic)
--!CORE Basic!--
--!CORE Pro!-- (with parallel skills)

Add the major plugin(s) of your choice:
--Pick as many as you like:
-Stone/Ticket
-Stone
-Ticket
-Balls
-Gates w/ Tick (be cool to have like a doorway that is a "gate", wouldn't it?) <--feedback
-Gates w/out Tick

Core Basic includes:
Gumps
Skins
Save/Load Objects logic
Plugin Interface Code

Yes, ParallelSkills will only be released with TMSS 4 Core Pro.
Saves in TMSS 4 will be coded to the shard itself, and will not be transferable shard-to-shard (unless you reverse-engineer my serialization [not hard]). TMSS 4 will also address any compatibility issues with RunUO 2.0, if a previous hotfix of TMSS 3 does not. Let me know if you'd like an external profile editing application to ease creation.

Time Frame: 9 months.
Overall Complexity of use: 1/5
Digging deeper: 3/5

Project complexity: 3/5
 

Iomega0318

Sorceror
This took forever!

Ok well I got the main scripts running the first time around but when I tried adding skill tickets to charactercreation.cs I had a ton of probs.. I tired every which way there was and looked at this entire topic but could never figure it out.. I finally got it to load once but then it carshed.. Anyways what I'm posting about is that I fixed it a bit more got it up and running and this is what it shows...

Code:
RunUO - [www.runuo.com] Version 1.0.0, Build 36918
Scripts: Compiling C# scripts...done (0 errors, 0 warnings)
Scripts: Compiling VB.net scripts...no files found.
Scripts: Verifying...done (3215 items, 1283 mobiles)
[COLOR="Red"]World: Loading...DON'T BREAK YOUR OWN SHARD!!!![/COLOR]
done (143588 items, 14779 mobiles) (19.3 seconds)
Reports: Loading...done
SkillSettings: Loading...done (0.0 seconds)
 - TMSS|3 Skill Settings loaded successfully.


UO Architect Server Beta 2.2 is listening on port 2594

Sorious' Ingame Forums
---------
Loading...done
---------
Regions: Loading...done
Address: 127.0.0.1:2595
Address: 192.168.0.107:2595
Client: 127.0.0.1: Connected. [1 Online]
Login: 127.0.0.1: Valid credentials for 'test'
Login: 127.0.0.1: Account 'test' at character list
Login: 127.0.0.1: New character being created (account=test)
 - Character: test (serial=0x00000028)
 - Started: Jail (5280, 1185, 0) in Felucca

My questions is.. should I be worried about that world loading part? cause last time I got it working that came up and then the shard crashed.. But so far all is good.. I am also going to post my charactercreation.cs so that anyone else thats having problems like me can just do what I did..

Code:
		private static void AddBackpack( Mobile m )
		{
			Container pack = m.Backpack;

			if ( pack == null )
			{
				pack = new Backpack();
				pack.Movable = false;

				m.AddItem( pack );
				m.StatCap = 900;
			}

			//PackItem( new RedBook( "a book", m.Name, 20, true ) );
			//PackItem( new Dagger() );
			//PackItem( new Candle() );
[COLOR="Red"]/////////////////////////Skill Ticket////////////////////////

			SkillTicket st = new SkillTicket();
		
			st.Movable = true;
			st.ItemID = 0x14F0;
			st.Owner = m;
			st.Hue = 1161;
			st.Name = "A Skill Ticket Belonging to: "+m.Name;
			st.LootType = LootType.Blessed;

			PackItem( st );

/////////////////////////Skill Ticket////////////////////////[/COLOR]
			PackItem( new Gold( 1000 ) ); // Starting gold can be customized here
			PackItem( new Daat99Tokens( 1000 ) ); // Starting tokens can be customized here
			PackItem( new TokenLedger() );


Nevermind bad idea lol.. Server just crashed again.. It did last longer than before though the first time I edited CC It crashed on making a char.. Now it crashed when I d-clicked the stone.. Maybe I should just give up on this I am never going to finish it.. not today anyways..
 

TMSTKSBK

Lord
The DON'T BREAK YOUR OWN SHARD!!! isn't a message I remember putting in TMSS 3. So...meh. It shouldn't be TMSS. If you could give me the crash report, I could tell you definitively.

I NEED THE CRASH REPORT! You can tell me it crashes until you're blue in the face, but until I get the crash report, I can't fix it.

And pertaining to your SkillTicket call, don't set hue, that's handled internally. Movable is superfluous, along with ItemID, and Name is handled internally, if you pass it a mobile or a profile in the constructor.
 

uofmownz1

Wanderer
Great System, good ideas. Is there a way I can set up the settings so that other skills besides the one learned are not set to zero.

Basically I want to use the tickets as a reward, get a ticket, set one skill to GM level. (Without going over caps of course.) This idea won't work with the other skills being set down to zero, so is there any way to change the settings to allow what I'm trying to do to work. Thanks for any input on this. Great script.
 

TMSTKSBK

Lord
I thought there was a built-in way...aha!

The method of making this thing "special" is to flip the "Special" boolean in the props. Buuuut after reading the code, that wouldn't really do you much good >_<. However...

The answer is that yes, there is a way. You simply need to read the SkillGumpEngine file, and edit the several DoFinal methods. There's a comment and a bit of code that looks like this:

Code:
//resets the skill values.
			for (int i = 0; i < from.Skills.Length; i++)
			{
				from.Skills[i].Base = 0;
			}

The from.Skills.Base = 0; is the offending bit. Remove that and you should be fine. Thanks for bringing this up. I'll fix it in TMSS 4.

(In unmodified form, these bits can be found at lines: 340, 366, 395, 420, 454 [surely I don't need at least one of these...])
 

Iomega0318

Sorceror
Sorry lol well here is the crash report but for now I have given up on it and will try it again later once Ive had my rest lol and I dont have to strain my eyes to read the scripts
Code:
Server Crash Report
===================

RunUO Version 1.0.0, Build 36918
Operating System: Microsoft Windows NT 5.1.2600.0
.NET Framework: 1.1.4322.573
Time: 4/13/2006 5:29:57 AM
Mobiles: 14780
Items: 143643
Clients:
- Count: 2
+ Deleted IP: (account = test) (mobile = 0x28 'test')
+ Deleted IP: (account = LordOda) (mobile = 0x92F 'Lichking')

Exception:
System.NullReferenceException: Object reference not set to an instance of an object.
   at Server.TMSS.SkillProfileSelectGump.MakeGump()
   at Server.TMSS.SkillProfilePropHelper.OnResponse(NetState sender, RelayInfo info)
   at Server.TMSS.TMControlPage.OnResponse(NetState sender, RelayInfo info)
   at Server.Network.PacketHandlers.DisplayGumpResponse(NetState state, PacketReader pvSrc)
   at Server.Network.MessagePump.HandleReceive(NetState ns)
   at Server.Network.MessagePump.Slice()
   at Server.Core.Main(String[] args)
 

TMSTKSBK

Lord
eeeeh...

After reading the code, the only thing I can think of is that somehow you're referencing a profile that isn't correctly loaded. And I don't know how you're doing that. You've got talent :p. How were you attempting to access the selector gump (from a SkillStone/Ticket, from the Main Menu, from ....)?

Another possibility is that there are no profiles, leading to an empty (unassigned) ProfileNames array... Were you actively using Profiles, or did you have it in the non-profile based mode?

The only variable that *can* be null is the SkillProfileHelper.ProfileNames[x]. When the server starts, do you see something like: " - TMSS|3 Loading Skill Profile: Default Profile.skp"? There may be multiple lines like this, but that one should DEFINITELY show up. If it doesn't...well...that's not good.

If you could run it in debug mode, I'd greatly appreciate it (gives line numbers). If you dunno how to run in debug, see the "Stuff to Try and Know..." sticky in the Script Support forum here: http://www.runuo.com/forums/showthread.php?t=60709
Section 1.

So, to boil it down:
*How were you getting to the gump?
*Can you run this in debug, using instructions here: http://www.runuo.com/forums/showthread.php?t=60709
* Do you get a line like: " - TMSS|3 Loading Skill Profile: Default Profile.skp" in the console when you start the server?
 

uofmownz1

Wanderer
Should I take out just the
from.Skills.Base = 0;
or the entire section of code that you showed me? I took out just the
from.Skills.Base = 0;
in all the lines you mentioned and it still sets the other skills to zero.



One more thing, How do I make it so that the tickets do not require an owner when using a stone as well. I used the option in the control center to make the tickets "No Owner Required" and that works if the tickets are standalone, but not if using a stone as well.

Thanks for the quick response by the way, a lot faster than I expected :).
 

TMSTKSBK

Lord
A. Reeaaallly.... Maybe I made a booboo in saying that was the solution...

B. There probably is. Check the CallNormal() method in the same file.
 

TMSTKSBK

Lord
Schoolwork has priority 0 at the moment. TMSS is priority 1, but there's a lot of work in the priority 0 sector. It could be a while :(
 

Padriac

Wanderer
Problem with profiles on ver 3

It seems any profile with skills from the last page in the profile editor will set those skills to zero.

It's easy to duplicate. Createa a new profile and go to the last skills page. Select any 7 skills and set them to a number greater than zero. Save the profile and go back into TMSS profile assistant and look at the newly created profile. All skills are zero. The 7 skills that you selected are still selected, but skill value is zero. I've looked at the code, but I can't begin to see where this is done.
 
Top