Implementing: Tradeskills

EQ2Emulator Development forum.

Moderator: Team Members

Post Reply
User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Implementing: Tradeskills

Post by John Adams » Wed Oct 10, 2012 6:15 pm

Updated Tradeskills progress

How about Quest dings for completing tradeskill tasks? Are those just part of the existing Quest system, or something we need to consider in the Tradeskill system effort? I'm almost thinking it'd be the same as "pick up 10 sticks" type quests, when something appears in the player inventory, ding. Yes?

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Implementing: Tradeskills

Post by Jabantiz » Wed Oct 10, 2012 6:40 pm

It should all be handled in the current system. I am almost posotive there is even tradeskill xp stuff in the code for quests but would have to dig through to make sure.

User avatar
xinux
Team Member
Posts: 680
Joined: Wed Mar 10, 2010 11:10 am
Location: Destroyer of Servers

Re: Implementing: Tradeskills

Post by xinux » Mon Oct 15, 2012 4:34 am

I dropped a consignment collect under design which has me doing a collect on two accounts and doing a consignment both ways.
EQ II - Build=1360 (Orig) - Build=1360 (DoF) - Build=2654 (KoS) - Build=3375 (Classic) - Build=3554 (EoF)
EQ II - Build=4412 (RoK) - Build=5122 (TSO) - Build=6118 (SF) - Build=7628 (DoV) - Build=8295 (Aod)

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Implementing: Tradeskills

Post by Jabantiz » Tue Oct 16, 2012 5:24 pm

I commited code to Dev SVN for gaining tradeskill xp and tradeskill levels. Most of the work left to do for leveling tradeskills is now in client::ChangeTSLevel()

User avatar
alfa
Team Member
Posts: 550
Joined: Fri Jul 27, 2007 6:24 pm
Location: France
Contact:

Re: Implementing: Tradeskills

Post by alfa » Tue Oct 16, 2012 5:43 pm

Jabantiz wrote:I commited code to Dev SVN for gaining tradeskill xp and tradeskill levels. Most of the work left to do for leveling tradeskills is now in client::ChangeTSLevel()
Question about this, at start of code you do a check on AdventureXPEnabled.

Code: Select all

if(AdventureXPEnabled() == false)
That mean for now if you disabled Adventure XP you don't get Tradeskill XP too ? On live, you can enabled / disabled all sort of XP independently (Adventure, Tradeskills, AA). But you say you have more work on leveling so maybe you already know that, just in case :)
Fight with me... Or die, like the rest.
J.A. say: "I think Xinux tried to tell me this, but I ignore most things he suggests."

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Implementing: Tradeskills

Post by Jabantiz » Tue Oct 16, 2012 5:51 pm

That would be a result of copy and paste kicking my ass. Thanks for spotting that and already commited a fix. That being said the flag to toggle tradeskill xp hasn't been identified yet (as far as I can tell from the code) so tradeskill xp will always be on.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Implementing: Tradeskills

Post by John Adams » Tue Oct 16, 2012 6:36 pm

Jabantiz wrote:That being said the flag to toggle tradeskill xp hasn't been identified yet (as far as I can tell from the code) so tradeskill xp will always be on.
I implemented the other toggles a while ago, in fact. Trouble is, it seems to keep breaking. I even have default bitwise values set in character_details.flags/flags2 fields, but the code may be overwriting them in some instances (never went back to figure it out)

CF_COMBAT_EXPERIENCE_ENABLED

Code: Select all

void Commands::Command_Toggle_CombatXP(Client* client)
{
	Player* player = client->GetPlayer();

	player->toggle_character_flag(CF_COMBAT_EXPERIENCE_ENABLED);
	player->SetCharSheetChanged(true);
}
CF_QUEST_EXPERIENCE_ENABLED

Code: Select all

void Commands::Command_Toggle_QuestXP(Client* client)
{
	Player* player = client->GetPlayer();

	player->toggle_character_flag(CF_QUEST_EXPERIENCE_ENABLED);
	player->SetCharSheetChanged(true);
}
I saw no option in the UI to disable TS XP.
disablexp.jpg
In fact, the only "toggle" I have yet to finish are the combo boxes on Options. Could never figure out how to flip those.
You do not have the required permissions to view the files attached to this post.

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Implementing: Tradeskills

Post by Jabantiz » Tue Oct 16, 2012 6:47 pm

The options in that right click menu changes based on what xp bar is showing, however checking again there is still no option to disable tradeskill xp, I could have sworn that was an option on live but maybe not. Will check live later tonight to see if that is a post DoV feature.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Implementing: Tradeskills

Post by John Adams » Tue Oct 16, 2012 6:50 pm

Jabantiz wrote:The options in that right click menu changes based on what xp bar is showing, however checking again there is still no option to disable tradeskill xp
Knowing you would break all land speed records to prove me wrong, you don't think I checked that first? :mrgreen:

I have never seen it, but I do not play EQ2 Live. I think alfa's original concern is that disabling AdventureXP (regardless if it works or not) may no longer award TS XP, which is brand new.


fwiw, the ONLY disable XP I see in my client is when the Adventure XP bar is showing.

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Implementing: Tradeskills

Post by Jabantiz » Tue Oct 16, 2012 8:22 pm

And you are right, no way to disable tradeskill xp on live, no clue where I got that from but will remove that code next time I work on tradeskills, unless we want to support that on the emu but no clue why any one would want to stop tradeskill xp.

User avatar
alfa
Team Member
Posts: 550
Joined: Fri Jul 27, 2007 6:24 pm
Location: France
Contact:

Re: Implementing: Tradeskills

Post by alfa » Wed Oct 17, 2012 4:40 am

Jabantiz wrote:I could have sworn that was an option on live but maybe not.
Me too, sorry, my bad so :p (Ok ok on live I'm a lvl 3 craftman or other thing like that)
Fight with me... Or die, like the rest.
J.A. say: "I think Xinux tried to tell me this, but I ignore most things he suggests."

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Implementing: Tradeskills

Post by John Adams » Wed Oct 17, 2012 6:17 am

Jabantiz wrote:And you are right
I think there needs to be a parade or something.

User avatar
alfa
Team Member
Posts: 550
Joined: Fri Jul 27, 2007 6:24 pm
Location: France
Contact:

Re: Implementing: Tradeskills

Post by alfa » Wed Oct 17, 2012 10:44 am

John Adams wrote:
Jabantiz wrote:And you are right
I think there needs to be a parade or something.
Clap Clap !the only parade I can do :p
Fight with me... Or die, like the rest.
J.A. say: "I think Xinux tried to tell me this, but I ignore most things he suggests."

User avatar
Zcoretri
Team Member
Posts: 1642
Joined: Fri Jul 27, 2007 12:55 pm
Location: SoCal

Re: Implementing: Tradeskills

Post by Zcoretri » Thu Oct 18, 2012 8:21 pm

New Tradeskill packet was found tonight...

I created a struct based off the opcode of 623 in data version 955, log file tradeskill_level_10.log

Code: Select all

<Struct Name="WS_SelectTradeskill" ClientVersion="955" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_SelectTradeskillCmd">
<Data ElementName="unknown1" Type="int32" Size="1" />
<Data ElementName="title_text" Type="EQ2_16Bit_String" />
<Data ElementName="num_selections" Type="int8" Size="1" />
<Data ElementName="selections" Type="Array" ArrayVariableSize="num_selections">
  <Data ElementName="tradeskill_name" Type="EQ2_16Bit_String" />
  <Data ElementName="tradeskill_description" Type="EQ2_16Bit_String" />
  <Data ElementName="icon_id" Type="int16" Size="1" />
  <Data ElementName="unknown2" Type="int16" Size="1" />
  <Data ElementName="unknown3" Type="int32" Size="1" />
  <Data ElementName="command_text" Type="EQ2_16Bit_String" />
  <Data ElementName="unknown4" Type="int8" Size="6" />
</Data>
<Data ElementName="command_text_cancel" Type="EQ2_16Bit_String" />
<Data ElementName="unknown5" Type="int8" Size="1" />
</Struct>

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Implementing: Tradeskills

Post by Jabantiz » Thu Oct 18, 2012 9:51 pm

First of all HUGE thanks to Zcoretri for making the initial struct, was going nuts after looking at hex for so long.

Here is an updated struct for 1096

Code: Select all

<Struct Name="WS_SelectTradeskill" ClientVersion="1096" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_TradeskillList">
<Data ElementName="unknown1" Type="int32" Size="1" />
<Data ElementName="title_text" Type="EQ2_16Bit_String" />
<Data ElementName="num_selections" Type="int8" Size="1" />
<Data ElementName="selections" Type="Array" ArrayVariableSize="num_selections">
  <Data ElementName="tradeskill_name" Type="EQ2_16Bit_String" />
  <Data ElementName="tradeskill_description" Type="EQ2_16Bit_String" />
  <Data ElementName="icon_id" Type="int16" Size="1" />
  <Data ElementName="unknown3" Type="int16" Size="1" />
  <Data ElementName="icon_sheet" Type="int32" Size="1" />
  <Data ElementName="command_text" Type="EQ2_16Bit_String" />
  <Data ElementName="confirm_window_title" Type="EQ2_16Bit_String" />
  <Data ElementName="unknown4" Type="int8" Size="12" />
</Data>
<Data ElementName="command_text_cancel" Type="EQ2_16Bit_String" />
<Data ElementName="unknown5a" Type="int16" Size="1" />
<Data ElementName="unknown5" Type="int8" Size="1" />
</Struct>
I changed the opcode to OP_TradeskillList as that is what we have in the DB for the 1096 value, lower versions don't have an entry for this opcode however. This window looks like it is designed to be reusable as you can change the icon sheets it uses to display icons. The values are as follows.

Code: Select all

0 - item icons     icon_is#.dds
1 - spell icons    icon_ss#.dds
2 - menu icons     icon_ms#.dds
3 - HO icons       icon_os#.dds
4 - map icons      icon_map#.dds
5 - AA icons       icon_as#.dds
6 - ???            icon_sw.dds
Both of these structs are on dev svn now.

Also if any one knows if this window is used for anything else please let me know, might help figure out some of the unknowns in the struct.

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests