View Single Post
  #1  
Old 08-12-2004, 08:42 AM
fathernitwit
Developer
 
Join Date: Jul 2004
Posts: 773
Default Complete Tradeskill Rewrite

Hello all,

I have completely rewritten the tradeskill system.... I would really like some feedback on what I have done... It works on my FreeBSD server with up-to-live client. I consider this 'beta 1', everything is working from my perspective, but is not throughly tested. most of the recipes are obviously untested due to quantity.

I dont know if it is broken for everybody else, but it was completely
broken for me when I started looking at it. a lot of the recipes are obviously untested.

Heres my 'release notes':
Code:
Big picture:
 - gets tradeskills working (they didnt work at all for me)
 - new trade skill interface works
   - searching
   - viewing details
   - auto combining
 - recipes can return unlimited items on success and fail
 - recipes have names on them :)
 - nofail works (not in recipes yet)


API level:
 - added constants invWhere* to represent inventory places
 - added optional argument to HasItem to specify where to search
   this is an OR'd set of invWhere* constants, default=ALL
 - changed prototype and split GetTradeRecipe into two methods
   but this is never used elsewhere
 - added HandleAutoCombine to Object
 - changed HandleCombine to be static for non-world objects
 - added to Client:
   TradeskillSearchResults - search tradeskills and send res
   SendTradeskillDetails - send details about a recipe
   TradeskillExecute - check success on a recipe and send results


Database:
 - added two new tables to replace tradeskillrecipes:
  tradeskill_recipe - info about a specific recipe
  tradeskill_recipe_entry - items involved in tradeskills relation
  - based on suggestions in http://www.eqemulator.net/forums/viewtopic.php?t=12067

Network:
 - new opcodes:
	OP_RecipesFavorite
	OP_RecipesSearch
	OP_RecipeReply
	OP_RecipeDetails
	OP_RecipeAutoCombine
 - and some new structures to go with them

Other:
 - Identified object type for tackle box :)

Recipes:
 - Pulled all recipes from eqtraders.com
 - converted all for which all items existed in the database.
   - includes fishing, research, etc..
   - have a script to do this for future DB updates
   - there are still several thoudand which are missing items
   - 5344 recipes total

Issues:
 - are tradeskill gains supposed to use a different forumal that others?
 - unfired pottery items are not in here since most do not
   exist in the database
 - I have not implemented restrictions based on race/class/etc
   but the script is pulling them from the pages, so it can 
   be done, I just dont have any desire to do it (:
 - if you dont have all the components for a recipe and you
   hit combine, it dosent send you a message saying that...
 - I didnt alter the success or gain forumals... assuming
   that somebody more knowledgable than me made them...
 - the CloseContainer_Struct has changed, but I am not able
   to figure out how... tradeskills still work with it broken
 - I dont know what the second ulong in the new recipe packets
   actually means, I just echo it in my replies...
 - my auto-converted recipes have whatever errors might exist on eqtraders.com
 - My script is not pulling nofail flags from the pages yet.
 - any recipe which needs to return two+ of a non-stackable item
   MUST insert several 'on success return 1 item' tuples with the 
   same item_id to get it to work correctly.
Description of tables and columns:
http://eqemu.psend.com/tradeskill_tables.txt

The patch is here: http://eqemu.psend.com/tradeskill_overhaul_b1.diff
it applies cleanly to 7/31 CVS, with a little fuzz due to my server having a lot of my patches on it.

The sql file with all my converted recipes is here:
http://eqemu.psend.com/new_recipes_all.zip


please give me feedback, positive or negative, whatever...
Reply With Quote