• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Release Tradeskill Construction Set |Quests:GOD,TSS,POK,POR Freebie Assister [Deleted]

Status
Not open for further replies.
jb321 updated Tradeskill Construction Set |Quests:GOD,TSS,POK,POR with a new update entry:

Small fix to calculations for sub-recipes.

Fixed: when re-making items that had a sub-recipe, the count was not working correctly it is now..

The tests that were run included:

Running the quest - Good
Deleting the items and re-running the quest - Good
Keeping the items and deleting the quest and running it - Good

this is very promising!.. buuut there may always be something lurking..

please test:

Toxicology, Mechanist, Research, and all of them EXCEPT Tailoring and Baking.. should be putting out the ini updates for these today...

Read the rest of this update entry...
 
Tryin to figure out why my baking wants to use a spit when oven is listed. Also wouldn't swap out my spit with spell research container.

So just Baking and Tailoring left?
 
Last edited:
Tryin to figure out why my baking wants to use a spit when oven is listed. Also wouldn't swap out my spit with spell research container.

in GOD, or general crafting?

Spit is ID for GOD in this:

/if (${p_con_name.Equal[Baking]}) /return 1
 
Well I put together a half assed por file for bakery he made the first three items but used a spit for the oven items. bakingtrophy.ini
first message no room for spit, had the spell research kit in bottom right. then i moved it manually and he started crafting recipes in the spit.

Just wait for your magic on baking and Tailoring before I get any deeper in it. haha
 
Well I put together a half assed por file for bakery he made the first three items but used a spit for the oven items. bakingtrophy.ini
first message no room for spit, had the spell research kit in bottom right. then i moved it manually and he started crafting recipes in the spit.

Just wait for your magic on baking and Tailoring before I get any deeper in it. haha
Tailoring shouldn't be too long..

Baking a little longer.. this is where the /Call WhatShouldDoHaveToBreakDownFishToMakeTheItemConversion is needed.. or we choose a specific item..
 
Nice, potterytrophy made the two pots I was missing that got turned in on smithing even though the quest showed them made.

Rich (BB code):
Trophy Quests Items Needed To Farm or Forage

Research - /mac tsc beginner research
    All Vendor Bought.
        
Fletching - /mac tsc beginner fletching
    All Vendor Bought.
    
Pottery - /mac tsc beginner pottery
    All Vendor Bought.

Jewelry - /mac tsc beginner jewelry
    Black Pearl - Resupply Agent (Summon Agent AA)
    
Brewing - /mac tsc beginner brewing
    Sylvan Berries - Foraged
    Fruit - Foraged
    Aerated Mineral Water - West Freeport Ping Fuzzlecutter
    Royal Jelly - Kelethin Merchant Weaolanae & Merchant Kanoldar Farmed Kelethin and Lesser Faydark (Various Giant Wasps)
    
Smithing - /mac tsc begginer smithing
    Small Brick of Acrylia Ore - Acrylia Caverns Farmed (Can also Manually Break Down a Large Brick of Acrylia Ore or Block of Acrylia Ore with a smithing chisel)
    
Baking - /mac tsc beginner baking
    Rat Ears - Katha Firespinner - Commonlands Farmed from various rats
    Wolf Meat - Farmed various wolfs (The Jaggedpine Forest) Great place to farm many of these items for baking
    Spider Legs - Farmed various spiders (Most any starting zone with spiders)
    Saltwater Crab (For Saltwater Crab Meat) - Abysmal Sea Crab Trap (Fished in many zones in the GOD expansion)
    Saltwater Tuna (For Tuna Meat) - Fished in most zones in the GOD expansion
    Anaconda Meat - Farmed The Jagged Pine Forest a giant anaconda (also Nedaria's Landing a ancient anaconda)
        
Brewing - /mac tsc beginner brewing
    Fruit - Foraged in just about any zone (Even Guild Hall)
    Sylvan Fruit - Foraged and Mobs in Lesser Faydark
    
Tinkering - /mac tsc beginner tinkering (GNOME ONLY)
    Raw Dark Matter Farmed - Natimbi, the Broken Shores Farmed (Breaks down to Dark Matter that breaks down to Grain of Dark Matter)

Alchemy - /mac tsc beginner alchemy (SHAMAN ONLY)
    All Vendor Bought.
    
Toxicology - /mac tsc begginner toxicologist (ROGUE ONLY)
    Spider Venom Sac - Farmed from various spiders
    Froglok Poison Gland - Farmed Lower and Upper Guk Various Frogloks
    Uticating Hairs - Farmed Dreadlands a drachnid recluse
    Asp Poison Sac - Farmed Commonlands an asp and Southern Desert of Ro a cistern asp
    Basilisk Eye Stalk - Farmed Butcherblock Mountains, Lavastorm Mountains (also farm Putrid Bile), Rathe Mountains, The Jaggedpine Forest Various Basilisk (also farm Sname Venom Sac))
    Grave Mold - Farmed Estate of Unrest various undead
    Crystallized Marrow - Everfrost Peaks Ice Bone Skeleton (When farming kill everything or you will run out of skeleton spawns)(Also Farm Cyclamine Corm and Snake Venom Sac)
    Cyclamine Corm - Farmed Everfrost Peaks a snow orc shaman various orcs (When farming kill everything for more spawns)
    Snake Venom Sac - Farmed East Karana, Goru`kar Mesa, The Steppes, Toxxulia Forest, The Jaggedpine Forest Various snakes and mamba
    Putrid Bile - Farmed Lavastorm Mountains a fire drake and a magma war drake (also farm Basilisk for Basilisk Eye Stalk)
 
delving into sqlite.. I haven't DB'd in a while..

but can you do this?


Recipes Table​
ID​
Item​
Count​
13679​
Taco​
2​
Lettuce​
3​
Tomatoes​
44​
13639​
Burro​
2​
Lettuce​
3​
Tomatoes​
44​


And just reference the ID and pull individual records under that ID?

The goal is to say.. I want info about ID 13639.. and I want to grab one by one everything under that id that is an item.. are blank spaces in the first field OK?
 
Last edited:
Not sure how that will work if you have items with the same names.

Tailoring test went great . 😂

Gave the toon some spiderling silks, he made a silk thread and went into a loop trying to make a silk bandage
 

Attachments

  • Untitled.png
    Untitled.png
    44.3 KB · Views: 4
Last edited:
Not sure how that will work if you have items with the same names.

Tailoring test went great . 😂

already there.. I changed it to use the main recipe instead of the sub..

So before if it saw a sub recipe twice it would stop.. now it will wait to see the same main recipe again..


under :no_buy heading in tsc_por.inc

|set it once
/if (${r_switch} == 0) {
/varset last_rec_tick ${org_recipe}
/varset r_switch 1
}

|sees the main recipe again.. means no can do..
/if (${l_switch} == 1 && ${org_recipe} == ${last_rec_tick}) {
/goto :partial_inv
}
 

Attachments

Best would be itemtomake sub1 sub2 sub3 and so on and have merchant on same row and could but in the zone also the merchant is located in
 
Yes, you actually need 6 total of the first recipe to support the rest of the recipes.

/mac tsc make tailortrophy works great. haha
 
Last edited:
So by sheer luck, everything else worked, we are now presented with an interesting scenario.

Everything was bought/made based on the buy count of the main recipe.

Now we have a scenario were one recipe needs 3 and another needs 2 of something and the make/buy count is 1..

so we need a way to 3 x 1 and 2 x1.. simple eh?

which means we have to still use the make/buy count...buuuut.. add a multiplier for farm crafted items.. and whatever else..

So.. we need 1 of an item, but that item needs 2 silk threads, 2 silk threads = 4 spiderling silks.. So we use a make count of 2 and it makes 2.. YEAH!..

but what about the one that needs 3.. augh!.

So these are conversions.. so we need to find the amount of silk thread needed in the main recipe and multiply that buy the main recipe make count.. which will tell us if he have enough to make it.. that is part 1..

part 2 is making enough of the sub item to satisfy the main recipe.. and I type this out cuz it helps me think about it and start coding in my head.
 
Or we could go back to 2.9 and just fix the bag swap issue. bahahaha!

What does the Recipe1BuyTotal=1 represent? How much to buy, what items to buy, how many of this item we need?

What if a recipe is dependent on more than one other recipe? |Create Task Dependencies
Do you list the most immediate or the first recipe that creates the next recipe that you need?

|Step to Recipe - Is this the steps according to the quest or just in general to get the final recipes made?

Still trying to figure out how this is all working together, is it an option to use itemid for recipeitem and then call call that itemid from the recipeid?

Where are items labeled as farmed or bought? Is this set as farmed if they are not found in the vendor file?


Once I combined the 6 silk threads by hand, it ran through to the end without a loop. turning in a partial.

Would it be an option to delete the shopping list after shopping and then redo the list after failing combines to only buy what you need that way? (not sure how this works when you have multiple toons and you run it already on one toon, then run again on another, wouldn't the list be different if the second toon already had the supplies?
 
Last edited:
delving into sqlite.. I haven't DB'd in a while..

but can you do this?


Recipes Table​
ID​
Item​
Count​
13679​
Taco​
2​
Lettuce​
3​
Tomatoes​
44​
13639​
Burro​
2​
Lettuce​
3​
Tomatoes​
44​


And just reference the ID and pull individual records under that ID?

The goal is to say.. I want info about ID 13639.. and I want to grab one by one everything under that id that is an item.. are blank spaces in the first field OK?

From a pure data normalization perspective, you'd want to have separate tables. One for Recipes, another for Components (or Ingredients, Materials/Mats, etc.), and a third for RecipeComponents (combining the two). The insures you have all the recipes and components defined before you start trying to put the two together. You can get away with just two tables if you don't care about the integrity of the combinations (i.e., both a taco and a salad use lettuce and referencing "lettuce" in both places is not relevant to putting it together).

[CODE lang="sql" title="Recipes"]CREATE TABLE IF NOT EXISTS "Recipes"
(
[RecipeId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Name] NVARCHAR(255) NOT NULL,
[ResultAmount] INTEGER NOT NULL
);
CREATE INDEX [IFK_RecipeId] ON "Recipes" ([RecipeId]);
[/CODE]

[CODE lang="sql" title="Components"]CREATE TABLE IF NOT EXISTS "Components"
(
[ComponentId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Name] NVARCHAR(255) NOT NULL
);
CREATE INDEX [IFK_ComponentId] ON "Components" ([ComponentId]);
[/CODE]

[CODE lang="sql" title="RecipeComponents"]CREATE TABLE IF NOT EXISTS "RecipeComponents"
(
[RecipeId] INTEGER NOT NULL,
[ComponentId] INTEGER NOT NULL,
[Name] NVARCHAR(255) NOT NULL,
[Count] INTEGER NOT NULL,
FOREIGN KEY ([RecipeId]) REFERENCES "Recipes" ([RecipeId])
ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY ([ComponentId]) REFERENCES "Components" ([ComponentId])
ON DELETE NO ACTION ON UPDATE NO ACTION,
PRIMARY KEY(RecipeId,ComponentId)
);
[/CODE]

I don't know that you really care how many are the result of a success or what you may get back on success or failure (i.e., using planing tool in fletching would always be returned). I'm not sure I'd recommend having an autoincrement on your tables either depending on the source for your recipes. If you're pulling them from EQ Traders or ZAM, you might be better of using their numbers to maintain consistency. If you're pulling from multiple sources and mixing them together, stick to your own numbering. You'll have to figure out how to disambiguate those recipes/components with the same name that aren't the exact same result, though.
 
From a pure data normalization perspective, you'd want to have separate tables. One for Recipes, another for Components (or Ingredients, Materials/Mats, etc.), and a third for RecipeComponents (combining the two). The insures you have all the recipes and components defined before you start trying to put the two together. You can get away with just two tables if you don't care about the integrity of the combinations (i.e., both a taco and a salad use lettuce and referencing "lettuce" in both places is not relevant to putting it together).

[CODE lang="sql" title="Recipes"]CREATE TABLE IF NOT EXISTS "Recipes"
(
[RecipeId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Name] NVARCHAR(255) NOT NULL,
[ResultAmount] INTEGER NOT NULL
);
CREATE INDEX [IFK_RecipeId] ON "Recipes" ([RecipeId]);
[/CODE]

[CODE lang="sql" title="Components"]CREATE TABLE IF NOT EXISTS "Components"
(
[ComponentId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Name] NVARCHAR(255) NOT NULL
);
CREATE INDEX [IFK_ComponentId] ON "Components" ([ComponentId]);
[/CODE]

[CODE lang="sql" title="RecipeComponents"]CREATE TABLE IF NOT EXISTS "RecipeComponents"
(
[RecipeId] INTEGER NOT NULL,
[ComponentId] INTEGER NOT NULL,
[Name] NVARCHAR(255) NOT NULL,
[Count] INTEGER NOT NULL,
FOREIGN KEY ([RecipeId]) REFERENCES "Recipes" ([RecipeId])
ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY ([ComponentId]) REFERENCES "Components" ([ComponentId])
ON DELETE NO ACTION ON UPDATE NO ACTION,
PRIMARY KEY(RecipeId,ComponentId)
);
[/CODE]

I don't know that you really care how many are the result of a success or what you may get back on success or failure (i.e., using planing tool in fletching would always be returned). I'm not sure I'd recommend having an autoincrement on your tables either depending on the source for your recipes. If you're pulling them from EQ Traders or ZAM, you might be better of using their numbers to maintain consistency. If you're pulling from multiple sources and mixing them together, stick to your own numbering. You'll have to figure out how to disambiguate those recipes/components with the same name that aren't the exact same result, though.
So EQTC has a back end DB I can connect to online.. Wicked!??

Ok let me see if I got this..

1) Table 1 .. field1 = Recipe ID ,field 2 = recipe name
|holds a list of all recipes..
2) Table 2.. field1 = Component ID, field 2 = component name field 3 = component type (farm, fish, forage, vendor) field 4 = vendor name field 5 = vendor zone
|holds a list of all recipe components.
3) Table 3.. field 1 Recipe ID, field 2 Component ID


a little fuzzy on Table 3.... Recipe ID will provide a list of all component ID needed for that recipe

fields? recipe id, component id,, how do we link the two together to say this recipe id has all these components..?

.. for table 3 it would need both recipe id and component id.. so each entry needs both for table 3?

Table 3 entry example?

field 1 = 12345 field 2 = 22
field 1 = 12345 field 2 = 3333


using DB browser,, btw
 
Last edited:
Or we could go back to 2.9 and just fix the bag swap issue. bahahaha!

What does the Recipe1BuyTotal=1 represent? How much to buy, what items to buy, how many of this item we need?

Answer: this is used to calculate the yield by dividing by the make total. It is also used for shopping to represent the total amount to buy for a recipe to achieve the make total.

What if a recipe is dependent on more than one other recipe? |Create Task Dependencies

Answer: I made a sub called recipe_missing_recipe.. so if we know it has multiple dependencies for a single recipe.. it finds the first one and determines
if we have enough.. if not we try to make that recipe.. once done it starts over, then it has another sub recipe, it tries to make it,. and so on..

for that situation we set CTD to 0 and put an entry in the answer file ex. R6=1 recipe 6 has 2 or more sub recipes in recipe 6...


|Step to Recipe - Is this the steps according to the quest or just in general to get the final recipes made?

Answer: each step is associated with the MAIN recipe needed to satisfy that step.. so step 1 typically would match to recipe 1.

buuut, when the delivery is different,, and let's say step 10 would normally be recipe 1, but it is taking an unfired and making into fired.. then the recipe matched would be the final product that is to be turned in (delivered)


Still trying to figure out how this is all working together, is it an option to use itemid for recipeitem and then call call that itemid from the recipeid?

Where are items labeled as farmed or bought? Is this set as farmed if they are not found in the vendor file?
Short Answer: Magic
Longer Answer: Recipes that are not vendor bought (Call Storebought) means they need something, either they need another recipe to be made, or they need some farmin. The check eliminates all vendor bought items from the calculation, then it checks to see if that recipe is made in another recipe..
if none of these conditions apply.. well then it checks what is left over and that is what is missing..

another way to determine if it is farmed is the CTD=0 and SB=0 if both conditions apply it means it has no sub recipes and it is not vendor bought..
so whatever left has to be farmed.. or summoned vendor.. so there is a count check,, if it passes we are good, if not we are missing that item..


Once I combined the 6 silk threads by hand, it ran through to the end without a loop. turning in a partial.



Would it be an option to delete the shopping list after shopping and then redo the list after failing combines to only buy what you need that way? (not sure how this works when you have multiple toons and you run it already on one toon, then run again on another, wouldn't the list be different if the second toon already had the supplies?

Diatribe: shopping list was a great idea for non-quest or non-task crafting.. it would allow the mass purchase of the WHOLE set of recipes and make them..
mass shopping is limited by how much we can stuff in memory.. and then write to disk.
Features:

not running from vendor to vendor and then back to the same vendor to get what you shoulda already bought..
It would write the complete list, and then it would write the individual recipes. but it would sort the items by vendor so you are not
once again running all over the place for either mass shopping or one recipe at a time..

Mass shopping looked at every recipe and added up the total amount for everything.. and was a one stop shop..


The new buy routine would have to look at the recipe, match all the items to vendors, then sort it, and then have an in-memory recipe to use
and do it for every recipe, which is not an issue.. and would make solo buying palatable..

The overall reason for writing is so that we could shop for some stuff again and not go through the processing part of doing it over and over..

other options could be write lists to ZEK_scoobypop_SL.ini so it is based on toon and server..

but deleting and re-making adds the processing time that I was trying to avoid to begin with..
 
So EQTC has a back end DB I can connect to online.. Wicked!??

Ok let me see if I got this..

1) Table 1 .. field1 = Recipe ID ,field 2 = recipe name
|holds a list of all recipes..
2) Table 2.. field1 = Component ID, field 2 = component name field 3 = component type (farm, fish, forage, vendor) field 4 = vendor name field 5 = vendor zone
|holds a list of all recipe components.
3) Table 3.. field 1 Recipe ID, field 2 Component ID


a little fuzzy on Table 3.... Recipe ID will provide a list of all component ID needed for that recipe

fields? recipe id, component id,, how do we link the two together to say this recipe id has all these components..?

.. for table 3 it would need both recipe id and component id.. so each entry needs both for table 3?


using DB browser,, btw

I'd make a separate table for vendor related info on the components. Particularly because a component can come from multiple vendors. You can always mark one of the vendors the "preferred" vendor.

The third table does the combining of the two. If you have Recipe entries like so

RecipeIdName
1Taco
2Salad

and Components

ComponentIdName
1Meat
2Shell
3Lettuce
4Cheese
5Tomato
6Cucumber
7Dressing

the third table puts them together (where RecipeId and ComponentId form a combined key for the table)

RecipeIdComponentIdCount
111
121
131
141
152
234
253
261
271

You can eliminate one table if you don't care about maintaining a list of your components separately. It's not best practice, but it does work. You lose a lot of detail particularly with regard to your vendor info. And needlessly replicate the name (can lead to accidental component mismatch for recipes).

CombineIdRecipeIdComponentNameCount
11Meat1
21Shell1
31Lettuce1
41Cheese1
51Tomato2
62Lettuce4
72Tomato3
82Cucumber1
92Dressing1
 
I'd make a separate table for vendor related info on the components. Particularly because a component can come from multiple vendors. You can always mark one of the vendors the "preferred" vendor.

The third table does the combining of the two. If you have Recipe entries like so

RecipeIdName
1Taco
2Salad

and Components

ComponentIdName
1Meat
2Shell
3Lettuce
4Cheese
5Tomato
6Cucumber
7Dressing

the third table puts them together (where RecipeId and ComponentId form a combined key for the table)

RecipeIdComponentIdCount
111
121
131
141
152
234
253
261
271

You can eliminate one table if you don't care about maintaining a list of your components separately. It's not best practice, but it does work. You lose a lot of detail particularly with regard to your vendor info. And needlessly replicate the name (can lead to accidental component mismatch for recipes).

CombineIdRecipeIdComponentNameCount
11Meat1
21Shell1
31Lettuce1
41Cheese1
51Tomato2
62Lettuce4
72Tomato3
82Cucumber1
92Dressing1

If the item is in pok , I would like to choose a singular vendor so we always run to that guy..
if we didn't do that.. we would have to do a closest distance vendor check and run to that guy.. which is doable..
 
May as well go all out :)

ID | RecipeID | ItemID

ITEMID | ITEMNAME | BUYABLE | FARMED| ITEMPRICE | ITEMSTACKSIZE

RECIPEID | RECIPENAME | SKILL | CONTAINER | BUYABLECOUNT | FARMCOUNT | TRIVIAL | DEPENDENCY
 
Last edited:
Performing open heart surgery on TCS..
UH OH... LOL

I've been messing with 2.9 learning.

Got 2.9 to purchase all the kits needed using kits.inc and swaps out containers :) It was strange, thought I remember having an issue in 3.0 with the baking where it was trying to swap out the spit instead of using the Oven. I went back to 2.9 and it did the same thing. That's when I was like ok new lesson, going to get these containers to swap out. haha Ran a toon through the whole thing and got five trophies, only setback was what 3.0 is trying to accomplish. I had to keep running shop/make for failed combines and ended up with extra made items from the totals. hehe

Played more with 3.0 only thing missing is the tailoring and baking.
 
UH OH... LOL

I've been messing with 2.9 learning.

Got 2.9 to purchase all the kits needed using kits.inc and swaps out containers :) It was strange, thought I remember having an issue in 3.0 with the baking where it was trying to swap out the spit instead of using the Oven. I went back to 2.9 and it did the same thing. That's when I was like ok new lesson, going to get these containers to swap out. haha Ran a toon through the whole thing and got five trophies, only setback was what 3.0 is trying to accomplish. I had to keep running shop/make for failed combines and ended up with extra made items from the totals. hehe

Played more with 3.0 only thing missing is the tailoring and baking.

Yeah, I never released a 2.9,, but that is ok.. :)
 
Removing spaghetti code, removing redundant routines, ,making the maths work better..
 
Release Tradeskill Construction Set |Quests:GOD,TSS,POK,POR Freebie Assister [Deleted]
Status
Not open for further replies.

Users who are viewing this thread

Back
Top
Cart