Justn Posted September 9, 2012 Author Share Posted September 9, 2012 **Also I will label Everything with comments so if your dont want a certain addon you dont have to add it =)its so easy to see but i will show you anyways!(if someone requests it)** **Not Tested on EO 3.0 yet(almost), works great on 2.0 and 2.3**Please note that you will have to delete you player accounts, your items, and even your maps to use this(sorry guys I dont have a converter or able to make one)Well this is something DJMaxus created for me after I ran into trouble doing it myself..Basically Its a "dynamic" Crafting system that supports up to 5 items( you can add and remove more easily)..Also It has different crafting stations if you will.. For example if your making a sword you must be at an avil..or if your making a potion you must be at a alchemy table and it wont work if your at the wrong station or not at a station at all.Also I have added a Level up system based on DJMaxus' other tutorial.. Means if you suck at blacksmithing you cant make good weapons..This System reminds me a bit of skyrim yet it still uses the recipe item type for making stuff.. All credits go to DJMAXUS!!**How it Works:**Make a Recipe and set it up to make an item.. Next check a box for what type of item it is (smithy, alchemy, or enchant)You must select one of the boxes even if it doesnt have a level requirement.Next set what lv for the crafting skill they must have to make the item.Then in the map editor you can place multiple crafting tiles.. Place an anvil at the balcksmiths shop or an Alchemy lab at the spell shop ect..**The Code:****Server Side****In modTypes**Find : **Private Type PlayerRec**Add this to the bottom before **End Type**:```Smith As ByteSmithExp As LongAlchemy As ByteAlchemyExp As LongEnchants As LongEnchantsExp As Long```Find : **Private Type ItemRec**Add this to the bottom of **Private Type ItemRec** (before End Type)```'craftingTool As LongToolReq As LongRecipe(1 To MAX_RECIPE_ITEMS) As LongSmithy As LongSmithReq As LongAlchemist As LongAlchemyReq As LongEnchanter As LongEnchantReq As Long```**In modConstants**Find:```Public Const ITEM_TYPE_SPELL As Byte = 8```Add this below:```Public Const ITEM_TYPE_RECIPE As Byte = 9```Add this to the bottom of the tile constants also( note your number might be different from mine)```Public Const TILE_TYPE_CRAFT As Byte = 15```Also Add this under the rest of the general constants:```' max number of crafting itemsPublic Const MAX_RECIPE_ITEMS As Long = 5```**In modDatabase in Sub AddChar**Find:```Player(Index).Level = 1```Under it add this```Player(Index).Smith = 1Player(Index).Alchemy = 1Player(Index).Enchants = 1```**In modServerTCP**find :**Function PlayerData(ByVal Index As Long) As Byte()**Under this :**Buffer.WriteLong GetPlayerPK(Index)**Add this:```Buffer.WriteLong GetPlayerSmith(Index)Buffer.WriteLong GetPlayerAlchemy(Index)Buffer.WriteLong GetPlayerEnchants(Index)```**In modServerTCP** find: **Sub SendEXP(ByVal Index As Long)**In that sub under : **Buffer.WriteLong GetPlayerNextLevel(Index)**Add this:```Buffer.WriteLong GetPlayerSmithExp(Index)Buffer.WriteLong GetPlayerNextSmithLevel(Index)Buffer.WriteLong GetPlayerAlchemyExp(Index)Buffer.WriteLong GetPlayerNextAlchemyLevel(Index)Buffer.WriteLong GetPlayerEnchantsExp(Index)Buffer.WriteLong GetPlayerNextEnchantsLevel(Index)```**In modPlayer find this sub:**```Function GetPlayerNextLevel(ByVal Index As Long) As LongGetPlayerNextLevel = (50 / 3) * ((GetPlayerLevel(Index) + 1) ^ 3 - (6 * (GetPlayerLevel(Index) + 1) ^ 2) + 17 * (GetPlayerLevel(Index) + 1) - 12)End Function```under it add this:```' Proficeicies'***************************************' BlackSmith Skill Level'***************************************Function GetPlayerSmith(ByVal Index As Long) As LongIf Index > MAX_PLAYERS Then Exit FunctionGetPlayerSmith = Player(Index).SmithEnd FunctionFunction SetPlayerSmith(ByVal Index As Long, ByVal Smith As Long)SetPlayerSmith = FalseIf Smith > MAX_SKILL_LEVEL Then Exit FunctionPlayer(Index).Smith = SmithSetPlayerSmith = TrueEnd FunctionFunction GetPlayerSmithExp(ByVal Index As Long) As LongGetPlayerSmithExp = Player(Index).SmithExpEnd FunctionSub SetPlayerSmithExp(ByVal Index As Long, ByVal SmithExp As Long)Player(Index).SmithExp = SmithExpSendEXP IndexIf GetPlayerSmithExp(Index) >= GetPlayerNextSmithLevel(Index) Then SmithLevelUp IndexEnd SubPublic Function GetPlayerNextSmithLevel(ByVal Index As Long) As LongGetPlayerNextSmithLevel = (50 / 3) * ((GetPlayerSmith(Index) + 1) ^ 3 - (6 * (GetPlayerSmith(Index) + 1) ^ 2) + 17 * (GetPlayerSmith(Index) + 1) - 12)End Function' Proficeicies'***************************************' Alchemy Skill Level'***************************************Function GetPlayerAlchemy(ByVal Index As Long) As LongIf Index > MAX_PLAYERS Then Exit FunctionGetPlayerAlchemy = Player(Index).AlchemyEnd FunctionFunction SetPlayerAlchemy(ByVal Index As Long, ByVal Alchemy As Long)SetPlayerAlchemy = FalseIf Alchemy > MAX_SKILL_LEVEL Then Exit FunctionPlayer(Index).Alchemy = AlchemySetPlayerAlchemy = TrueEnd FunctionFunction GetPlayerAlchemyExp(ByVal Index As Long) As LongGetPlayerAlchemyExp = Player(Index).AlchemyExpEnd FunctionSub SetPlayerAlchemyExp(ByVal Index As Long, ByVal AlchemyExp As Long)Player(Index).AlchemyExp = AlchemyExpSendEXP IndexIf GetPlayerAlchemyExp(Index) >= GetPlayerNextAlchemyLevel(Index) Then AlchemyLevelUp IndexEnd SubPublic Function GetPlayerNextAlchemyLevel(ByVal Index As Long) As LongGetPlayerNextAlchemyLevel = (50 / 3) * ((GetPlayerAlchemy(Index) + 1) ^ 3 - (6 * (GetPlayerAlchemy(Index) + 1) ^ 2) + 17 * (GetPlayerAlchemy(Index) + 1) - 12)End Function' Proficeicies'***************************************' Enchanting Skill Level'***************************************Function GetPlayerEnchants(ByVal Index As Long) As LongIf Index > MAX_PLAYERS Then Exit FunctionGetPlayerEnchants = Player(Index).EnchantsEnd FunctionFunction SetPlayerEnchants(ByVal Index As Long, ByVal Enchants As Long)SetPlayerEnchants = FalseIf Enchants > MAX_SKILL_LEVEL Then Exit FunctionPlayer(Index).Enchants = EnchantsSetPlayerEnchants = TrueEnd FunctionFunction GetPlayerEnchantsExp(ByVal Index As Long) As LongGetPlayerEnchantsExp = Player(Index).EnchantsExpEnd FunctionSub SetPlayerEnchantsExp(ByVal Index As Long, ByVal EnchantsExp As Long)Player(Index).EnchantsExp = EnchantsExpSendEXP IndexIf GetPlayerEnchantsExp(Index) >= GetPlayerNextEnchantsLevel(Index) Then EnchantsLevelUp IndexEnd SubPublic Function GetPlayerNextEnchantsLevel(ByVal Index As Long) As LongGetPlayerNextEnchantsLevel = (50 / 3) * ((GetPlayerEnchants(Index) + 1) ^ 3 - (6 * (GetPlayerEnchants(Index) + 1) ^ 2) + 17 * (GetPlayerEnchants(Index) + 1) - 12)End Function```**In modPlayer**Find the **UseItem** sub.Near the top of the sub, find:```Dim n As Long, i As Long, tempItem As Long, x As Long, y As Long, itemnum As Long```Add this below:```Dim MaxItems As LongDim Result As Long```And add the following before the last End Select (Still in the same sub)```Case ITEM_TYPE_RECIPE' Check if on crafting tileIf Map(GetPlayerMap(Index)).Tile(GetPlayerX(Index), GetPlayerY(Index)).Type <> TILE_TYPE_CRAFT ThenPlayerMsg Index, "You cannot craft this item here.", BrightRedExit SubEnd If' AlchemyIf Map(GetPlayerMap(Index)).Tile(GetPlayerX(Index), GetPlayerY(Index)).Data1 = 1 ThenIf Item(ItemNum).Alchemist <> 1 ThenPlayerMsg Index, "You cannot craft this item here, find a place to cook the ingredents.", BrightRedExit SubEnd IfEnd If' SmithingIf Map(GetPlayerMap(Index)).Tile(GetPlayerX(Index), GetPlayerY(Index)).Data1 = 2 ThenIf Item(ItemNum).Smithy <> 1 ThenPlayerMsg Index, "You cannot craft this item here, find a toolbench or generator.", BrightRedExit SubEnd IfEnd If' EnchantmentIf Map(GetPlayerMap(Index)).Tile(GetPlayerX(Index), GetPlayerY(Index)).Data1 = 3 ThenIf Item(ItemNum).Enchanter <> 1 ThenPlayerMsg Index, "You cannot craft this item here, find a workbench.", BrightRedExit SubEnd IfEnd If' Get the recipe informationResult = Item(GetPlayerInvItemNum(Index, invNum)).Data3' Perform Recipe checksIf Result <= 0 Then Exit SubIf GetPlayerEquipment(Index, Weapon) <= 0 ThenCall PlayerMsg(Index, "You don't have the proper tool equipped!", White)Exit SubEnd If' Make sure proper weapon is equippedIf Item(GetPlayerEquipment(Index, Weapon)).Tool <> Item(GetPlayerInvItemNum(Index, invNum)).ToolReq ThenPlayerMsg Index, "This isn't the tool used in the recipe.", BrightRedExit SubEnd IfIf GetPlayerEquipment(Index, Weapon) <= 0 ThenCall PlayerMsg(Index, "You don't have the proper tool equipped!", White)Exit SubEnd If' Proficiency Requirements' SmithIf Item(ItemNum).SmithReq > 0 ThenIf GetPlayerSmith(Index) < Item(ItemNum).SmithReq ThenPlayerMsg Index, "You are not skilled enough as a blacksmith to produce this item.", BrightRedExit SubEnd IfEnd If' AlchemyIf Item(ItemNum).AlchemyReq > 0 ThenIf GetPlayerAlchemy(Index) < Item(ItemNum).AlchemyReq ThenPlayerMsg Index, "You are not skilled enough in alchemy to craft this item.", BrightRedExit SubEnd IfEnd If' EnchantIf Item(ItemNum).EnchantReq > 0 ThenIf GetPlayerEnchants(Index) < Item(ItemNum).EnchantReq ThenPlayerMsg Index, "You are not skilled enough in enchantments to use this.", BrightRedExit SubEnd IfEnd IfFor i = 1 To MAX_RECIPE_ITEMSIf Item(ItemNum).Recipe(i) > 0 ThenMaxItems = iEnd IfNext' Make sure there are at least two ingredients, and prevent subscript out of rangeIf MaxItems < 2 Or MaxItems > MAX_RECIPE_ITEMS ThenPlayerMsg Index, "This is an incomplete recipe.", BrightRedExit SubEnd If' Proceed to craft the itemCraftItem Index, ItemNum, MaxItems, ResultEnd SelectEnd IfEnd Sub```At the bottom of **modPlayer** add this:```Sub CraftItem(ByVal Index As Long, ByVal ItemNum As Long, ByVal MaxItems As Long, ByVal Result As Long)Dim i As LongDim SM As LongDim AL As LongDim EN As Long' See what items are needed, and how many' If requirements are met, craft the item, if not, show failure messageSelect Case MaxItemsCase 1PlayerMsg Index, "This is an incomplete recipe.", BrightRedExit SubCase 2If HasItem(Index, Item(ItemNum).Recipe(1)) And HasItem(Index, Item(ItemNum).Recipe(2)) ThenTakeInvItem Index, Item(ItemNum).Recipe(1), 1TakeInvItem Index, Item(ItemNum).Recipe(2), 1GoTo MakeItemElsePlayerMsg Index, "You do not have all of the ingredients needed in this recipe.", BrightRedExit SubEnd IfCase 3If HasItem(Index, Item(ItemNum).Recipe(1)) And HasItem(Index, Item(ItemNum).Recipe(2)) And HasItem(Index, Item(ItemNum).Recipe(3)) ThenTakeInvItem Index, Item(ItemNum).Recipe(1), 1TakeInvItem Index, Item(ItemNum).Recipe(2), 1TakeInvItem Index, Item(ItemNum).Recipe(3), 1GoTo MakeItemElsePlayerMsg Index, "You do not have all of the ingredients needed in this recipe.", BrightRedExit SubEnd IfCase 4If HasItem(Index, Item(ItemNum).Recipe(1)) And HasItem(Index, Item(ItemNum).Recipe(2)) And HasItem(Index, Item(ItemNum).Recipe(3)) And HasItem(Index, Item(ItemNum).Recipe(4)) ThenTakeInvItem Index, Item(ItemNum).Recipe(1), 1TakeInvItem Index, Item(ItemNum).Recipe(2), 1TakeInvItem Index, Item(ItemNum).Recipe(3), 1TakeInvItem Index, Item(ItemNum).Recipe(4), 1GoTo MakeItemElsePlayerMsg Index, "You do not have all of the ingredients needed in this recipe.", BrightRedExit SubEnd IfCase 5If HasItem(Index, Item(ItemNum).Recipe(1)) And HasItem(Index, Item(ItemNum).Recipe(2)) And HasItem(Index, Item(ItemNum).Recipe(3)) And HasItem(Index, Item(ItemNum).Recipe(4)) And HasItem(Index, Item(ItemNum).Recipe(5)) ThenTakeInvItem Index, Item(ItemNum).Recipe(1), 1TakeInvItem Index, Item(ItemNum).Recipe(2), 1TakeInvItem Index, Item(ItemNum).Recipe(3), 1TakeInvItem Index, Item(ItemNum).Recipe(4), 1TakeInvItem Index, Item(ItemNum).Recipe(5), 1PlayerMsg Index, "You do not have all of the ingredients needed in this recipe.", BrightRedExit SubElsePlayerMsg Index, "You do not have all of the ingredients needed in this recipe.", BrightRedExit SubEnd IfEnd SelectMakeItem:GiveInvItem Index, Result, 1TakeInvItem Index, ItemNum, 0PlayerMsg Index, "You have successfully created a " & Trim(Item(Result).Name) & ".", White' Give the Exp' If the player has a recipe, determine what type it is...SM = Item(ItemNum).SmithyIf SM > 0 ThenSetPlayerSmithExp (Index), GetPlayerSmithExp(Index) + GetPlayerSmith(Index) * 2 + 5SendEXP IndexExit SubEnd IfAL = Item(ItemNum).AlchemistIf AL > 0 ThenSetPlayerAlchemyExp (Index), GetPlayerAlchemyExp(Index) + GetPlayerAlchemy(Index) * 2 + 5SendEXP IndexExit SubEnd IfEN = Item(ItemNum).EnchanterIf EN > 0 ThenSetPlayerEnchantsExp (Index), GetPlayerEnchantsExp(Index) + GetPlayerEnchants(Index) * 2 + 5SendEXP IndexExit SubEnd IfEnd Sub' Check Proficiency Level Up - BlackSmithSub SmithLevelUp(ByVal Index As Long)Dim i As LongDim expRollover As LongexpRollover = GetPlayerSmithExp(Index) - GetPlayerNextSmithLevel(Index)If GetPlayerSmith(Index) >= MAX_SKILL_LEVEL Then Exit Sub' Level upSetPlayerSmith Index, GetPlayerSmith(Index) + 1Call SetPlayerSmithExp(Index, expRollover)SendPlayerData IndexSendEXP Index' Send messagesPlayerMsg Index, "Your skill as a smith has increased!", BrightGreenEnd Sub' Check Proficiency Level Up - AlchemySub AlchemyLevelUp(ByVal Index As Long)Dim i As LongDim expRollover As LongexpRollover = GetPlayerAlchemyExp(Index) - GetPlayerNextAlchemyLevel(Index)If GetPlayerAlchemy(Index) >= MAX_SKILL_LEVEL Then Exit Sub' Level upSetPlayerAlchemy Index, GetPlayerAlchemy(Index) + 1Call SetPlayerAlchemyExp(Index, expRollover)SendPlayerData IndexSendEXP Index' Send messagesPlayerMsg Index, "Your skill in alchemy has increased!", BrightGreenEnd Sub' Check Proficiency Level Up - EnchantorSub EnchantsLevelUp(ByVal Index As Long)Dim i As LongDim expRollover As LongexpRollover = GetPlayerEnchantsExp(Index) - GetPlayerNextEnchantsLevel(Index)If GetPlayerEnchants(Index) >= MAX_SKILL_LEVEL Then Exit Sub' Level upSetPlayerEnchants Index, GetPlayerEnchants(Index) + 1Call SetPlayerEnchantsExp(Index, expRollover)SendPlayerData IndexSendEXP Index' Send messagesPlayerMsg Index, "Your Enchanting skill has increased!", BrightGreenEnd Sub```**Client Side****In modGlobals add this to the bottom:**```Public SkillType As Long```**In modTypes**Find : **Private Type PlayerRec**Add this to the bottom before End Type:```Smith As ByteSmithExp As LongAlchemy As ByteAlchemyExp As LongEnchants As LongEnchantsExp As Long```Find : **Private Type ItemRec**Add this to the bottom of Private Type ItemRec (before End Type)```'craftingTool As LongToolReq As LongRecipe(1 To MAX_RECIPE_ITEMS) As LongSmithy As LongSmithReq As LongAlchemist As LongAlchemyReq As LongEnchanter As LongEnchantReq As Long```**In modConstants**Find:```Public Const ITEM_TYPE_SPELL As Byte = 8```Add this below:```Public Const ITEM_TYPE_RECIPE As Byte = 9```Add this to the bottom of the tile constants also( note your number might be different from mine)```Public Const TILE_TYPE_CRAFT As Byte = 15```Also Add this under the rest of the general constants:```' max number of crafting itemsPublic Const MAX_RECIPE_ITEMS As Long = 5```In **modGameEditors**Find: **Public Sub ItemEditorInit()**Under it add this:```Dim RecipeIndex As Long```under that **find** this:```If frmEditor_Item.Visible = False Then Exit SubEditorIndex = frmEditor_Item.lstIndex.ListIndex + 1```under that **add this:**```RecipeIndex = frmEditor_Item.scrlItemNum.Value```In the same sub **find** this:```If (frmEditor_Item.cmbType.ListIndex = ITEM_TYPE_SPELL) ThenfrmEditor_Item.fraSpell.Visible = TruefrmEditor_Item.scrlSpell.Value = .Data1ElsefrmEditor_Item.fraSpell.Visible = FalseEnd If```Under it **add** this:```If (frmEditor_Item.cmbType.ListIndex = ITEM_TYPE_RECIPE) ThenfrmEditor_Item.fraRecipe.Visible = TruefrmEditor_Item.scrlItemNum.Max = MAX_RECIPE_ITEMSfrmEditor_Item.scrlItemNum.Value = 1frmEditor_Item.scrlResult.Value = .Data3frmEditor_Item.cmbCToolReq.ListIndex = .ToolReqElsefrmEditor_Item.fraRecipe.Visible = FalseEnd If```Under that you will see this :```' Basic requirementsfrmEditor_Item.scrlAccessReq.Value = .AccessReqfrmEditor_Item.scrlLevelReq.Value = .LevelReq```Add this below it:``` ' ProficienciesfrmEditor_Item.scrlSmithReq.Value = .SmithReqfrmEditor_Item.chkSM = .Smithy' ProficienciesfrmEditor_Item.scrlAlchemyReq.Value = .AlchemyReqfrmEditor_Item.chkAL = .Alchemist' ProficienciesfrmEditor_Item.scrlEnchantReq.Value = .EnchantReqfrmEditor_Item.chkEN = .Enchanter```**Still in modGameEditors find**:```' slideIf frmEditor_Map.optSlide.Value Then.Type = TILE_TYPE_SLIDE.Data1 = MapEditorSlideDir.Data2 = 0.Data3 = 0End If```under this add:```' craftingIf frmEditor_Map.optCraft.Value Then.Type = TILE_TYPE_CRAFT.Data1 = SkillType.Data2 = 0.Data3 = 0End If```**In modText** **find this**:```Case TILE_TYPE_SLIDEDrawText TexthDC, tX, tY, "S", QBColor(BrightCyan)```Under it add this:``` Case TILE_TYPE_CRAFTDrawText TexthDC, tX, tY, "CR", QBColor(White)```**In modDatabase** Find this Sub: **Sub SetPlayerExp**under the whole sub add this:```'prof smithyFunction GetPlayerSmith(ByVal Index As Long) As Long' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit FunctionGetPlayerSmith = Player(Index).Smith' Error handlerExit Functionerrorhandler:HandleError "GetPlayerSmith", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit FunctionEnd FunctionSub SetPlayerSmith(ByVal Index As Long, ByVal Smith As Long)' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit SubPlayer(Index).Smith = Smith' Error handlerExit Suberrorhandler:HandleError "SetPlayerSmith", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit SubEnd SubFunction GetPlayerSmithExp(ByVal Index As Long) As Long' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit FunctionGetPlayerSmithExp = Player(Index).SmithExp' Error handlerExit Functionerrorhandler:HandleError "GetPlayerSmithExp", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit FunctionEnd FunctionSub SetPlayerSmithExp(ByVal Index As Long, ByVal SmithExp As Long)' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit SubPlayer(Index).SmithExp = SmithExp' Error handlerExit Suberrorhandler:HandleError "SetPlayerSmithExp", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit SubEnd Sub'prof alachemyFunction GetPlayerAlchemy(ByVal Index As Long) As Long' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit FunctionGetPlayerAlchemy = Player(Index).Alchemy' Error handlerExit Functionerrorhandler:HandleError "GetPlayerAlchemy", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit FunctionEnd FunctionSub SetPlayerAlchemy(ByVal Index As Long, ByVal Alchemy As Long)' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit SubPlayer(Index).Alchemy = Alchemy' Error handlerExit Suberrorhandler:HandleError "SetPlayerAlchemy", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit SubEnd SubFunction GetPlayerAlchemyExp(ByVal Index As Long) As Long' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit FunctionGetPlayerAlchemyExp = Player(Index).AlchemyExp' Error handlerExit Functionerrorhandler:HandleError "GetPlayerAlchemyExp", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit FunctionEnd FunctionSub SetPlayerAlchemyExp(ByVal Index As Long, ByVal AlchemyExp As Long)' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit SubPlayer(Index).AlchemyExp = AlchemyExp' Error handlerExit Suberrorhandler:HandleError "SetPlayerAlchemyExp", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit SubEnd Sub'prof enchantorFunction GetPlayerEnchants(ByVal Index As Long) As Long' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit FunctionGetPlayerEnchants = Player(Index).Enchants' Error handlerExit Functionerrorhandler:HandleError "GetPlayerEnchants", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit FunctionEnd FunctionSub SetPlayerEnchants(ByVal Index As Long, ByVal Enchants As Long)' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit SubPlayer(Index).Enchants = Enchants' Error handlerExit Suberrorhandler:HandleError "SetPlayerEnchants", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit SubEnd SubFunction GetPlayerEnchantsExp(ByVal Index As Long) As Long' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit FunctionGetPlayerEnchantsExp = Player(Index).EnchantsExp' Error handlerExit Functionerrorhandler:HandleError "GetPlayerEnchantsExp", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit FunctionEnd FunctionSub SetPlayerEnchantsExp(ByVal Index As Long, ByVal EnchantsExp As Long)' If debug mode, handle error then exit outIf Options.Debug = 1 Then On Error GoTo errorhandlerIf Index > MAX_PLAYERS Then Exit SubPlayer(Index).EnchantsExp = EnchantsExp' Error handlerExit Suberrorhandler:HandleError "SetPlayerEnchantsExp", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContextErr.ClearExit SubEnd Sub'/prof```**In modHandleData** Find this: **Private Sub HandlePlayerExp**Under: **Dim i As Long**Add this:```Dim TNSM As LongDim TNAL As LongDim TNEN As Long```Still in sub **HandlePlayerExp** before the **Error Handler** add:``` ' Proficiencies smithySetPlayerSmithExp Index, Buffer.ReadLongTNSM = Buffer.ReadLongfrmMain.lblSmithExp.Caption = GetPlayerSmithExp(Index) & "/" & TNSM' Proficiencies alchemySetPlayerAlchemyExp Index, Buffer.ReadLongTNAL = Buffer.ReadLongfrmMain.lblAlchemyExp.Caption = GetPlayerAlchemyExp(Index) & "/" & TNAL' Proficiencies enchantSetPlayerEnchantsExp Index, Buffer.ReadLongTNEN = Buffer.ReadLongfrmMain.lblEnchantsExp.Caption = GetPlayerEnchantsExp(Index) & "/" & TNEN```Still in **modHandleData** Find the sub: **HandlePlayerData**Under : Call SetPlayerPK(i, Buffer.ReadLong) Add this:```Call SetPlayerSmith(i, Buffer.ReadLong)Call SetPlayerAlchemy(i, Buffer.ReadLong)Call SetPlayerEnchants(i, Buffer.ReadLong)```Still in the same sub find this :```' Set the character windowsfrmMain.lblCharName = GetPlayerName(MyIndex) & " - Level " & GetPlayerLevel(MyIndex)```Under it add this:```frmMain.lblSmith = GetPlayerSmith(MyIndex)frmMain.lblAlchemy = GetPlayerAlchemy(MyIndex)frmMain.lblEnchants = GetPlayerEnchants(MyIndex)```**In frmEditor_Item** :Under: **Option Explicit**Add this:```Private RecipeIndex As Long```Next find this:```If (cmbType.ListIndex = ITEM_TYPE_SPELL) ThenfraSpell.Visible = TrueElsefraSpell.Visible = FalseEnd If```Under it add this:```If (cmbType.ListIndex = ITEM_TYPE_RECIPE) ThenfraRecipe.Visible = TrueElsefraRecipe.Visible = FalseEnd If```**FORM WORK- Ok I included frm Examples of the item editor and the map editor at the bottom of the post.. I left frmMain out cause its only 6 labels and no code =)**FORM WORK->! frmeditor_item>! 1\. First create a frame and name it : **fraRecipe**>! **All of this goes inside of the new frame!**>! 2.Make a new label named>! :**Label7**>! Set the Caption to: **1.**>! 3.>! Next create a label and place it right next to the first one and name>! it : **lblItem1**>! Set the caption to : **Item:>! None**>! 4\. Under that new label make a Scroll bar named:>! **scrlItem1**>! Set the Min to 0>! 5\. Under that scrollbar>! make another label and name it : **lblItemNum**>! Set the caption>! to : **Item: None**>! 6\. Under **lblItemNum**>! Make another scroll bar and name it :>! **scrlItemNum**>! Set the Min to 1>! 7\. Next somewhere in the>! new frame (**fraRecipe**) make a **label** and give it>! the caption : **Tool:**>! 8\. Under that make a>! **combobox** and name it: **cmbCToolReq**>! In>! the **list** add the following (Doesnt matter just giving you some>! ideas) : **None>! Hammer>! Mortar & Pestle>! Cooking>! Pot>! Enchanting Stone>! Dwarf Hammer**>! 9.Somewhere still in>! fraRecipe add a label named: **lblResult**>! Set the caption to:>! **Result: None**>! 10\. Under that make yet another scrollbar>! and name it : **scrlResult**>! 11.Now under all that bum candy>! still on fraRecipe make a check box named :**chkSM**>! Set caption>! as: **Smith**>! 12\. beside that new checkbox make a label>! named:**lblSmith**>! caption set as :>! **1**>! 13\. Under that checkbox make a new scrollbar named:>! **scrlSmithReq**>! 14\. Beside that new checkbox make another>! one named:**chkAL**>! Set caption as:>! **Alchemy**>! 15\. beside that new checkbox make a label>! named:**lblAlchemy**>! caption set as :>! **1**>! 16\. Under that checkbox make a new scrollbar named:>! **scrlAlchemyReq**>! 17\. Beside that new checkbox make another>! one named:**chkEN**>! Set caption as:>! **Enchant**>! 18\. beside that new checkbox make a label>! named:**lblEnchants**>! caption set as : 1>! 19\. Under that>! checkbox make a new scrollbar named: **scrlEnchantReq**>! Damn>! seems like alot but its not so you should have:>! 1 new frame>! 6 scrollbars>! 1 combobox>! 3 check boxes>! 8 Labels>! Ok now Still frmEditor _Item in the "Equipment Data" frame>! 1\. Make a new **label** and set the caption to : **Crafting Tool:**>! 2\. Next to it make a **combobox** and name it: **cmbCTool**>! In the List of the new combobox add the same tools as you did with the other combobox(cmbCToolreq)>! Now for the code..>! Add this to the bottom of **frmEditor_item**>! ```Private Sub scrlItem1_Change()>! If scrlItem1.Value > 0 Then>! lblItem1.Caption = "Item: " & Trim$(Item(scrlItem1.Value).Name)>! Else>! lblItem1.Caption = "Item: None">! End If>! Item(EditorIndex).Recipe(RecipeIndex) = scrlItem1.Value>! End Sub>! Private Sub scrlItemNum_Change()>! RecipeIndex = scrlItemNum.Value>! lblItemNum.Caption = "Item: " & RecipeIndex>! scrlItem1.Value = Item(EditorIndex).Recipe(RecipeIndex)>! End Sub>! Private Sub scrlResult_Change()>! If scrlResult.Value > 0 Then>! lblResult.Caption = "Result: " & Trim$(Item(scrlResult.Value).Name)>! Else>! lblResult.Caption = "Result: None">! End If>! Item(EditorIndex).Data3 = scrlResult.Value>! End Sub>! Private Sub scrlSmithReq_Change()>! ' If debug mode, handle error then exit out>! If Options.Debug = 1 Then On Error GoTo errorhandler>! If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub>! lblSmith.Caption = "SM: " & scrlSmithReq>! Item(EditorIndex).SmithReq = scrlSmithReq.Value>! ' Error handler>! Exit Sub>! errorhandler:>! HandleError "scrlSmithReq_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext>! Err.Clear>! Exit Sub>! End Sub>! Private Sub scrlEnchantReq_Change()>! ' If debug mode, handle error then exit out>! If Options.Debug = 1 Then On Error GoTo errorhandler>! If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub>! lblEnchants.Caption = "EN: " & scrlEnchantReq>! Item(EditorIndex).EnchantReq = scrlEnchantReq.Value>! ' Error handler>! Exit Sub>! errorhandler:>! HandleError "scrlSwordReq_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext>! Err.Clear>! Exit Sub>! End Sub>! Private Sub scrlAlchemyReq_Change()>! ' If debug mode, handle error then exit out>! If Options.Debug = 1 Then On Error GoTo errorhandler>! If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub>! lblAlchemy.Caption = "Cook: " & scrlAlchemyReq>! Item(EditorIndex).AlchemyReq = scrlAlchemyReq.Value>! ' Error handler>! Exit Sub>! errorhandler:>! HandleError "scrlAlchemyReq_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext>! Err.Clear>! Exit Sub>! End Sub>! Private Sub chkAL_Click()>! ' If debug mode, handle error then exit out>! If Options.Debug = 1 Then On Error GoTo errorhandler>! If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub>! Item(EditorIndex).Alchemist = chkAL.Value>! ' Error handler>! Exit Sub>! errorhandler:>! HandleError "chkAL_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext>! Err.Clear>! Exit Sub>! End Sub>! Private Sub chkEN_Click()>! ' If debug mode, handle error then exit out>! If Options.Debug = 1 Then On Error GoTo errorhandler>! If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub>! Item(EditorIndex).Enchanter = chkEN.Value>! ' Error handler>! Exit Sub>! errorhandler:>! HandleError "chkEN_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext>! Err.Clear>! Exit Sub>! End Sub>! Private Sub chkSM_Click()>! ' If debug mode, handle error then exit out>! If Options.Debug = 1 Then On Error GoTo errorhandler>! If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub>! Item(EditorIndex).Smithy = chkSM.Value>! ' Error handler>! Exit Sub>! errorhandler:>! HandleError "chkSM_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext>! Err.Clear>! Exit Sub>! End Sub>! Private Sub cmbCTool_Click()>! If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub>! Item(EditorIndex).Tool = cmbCTool.ListIndex>! End Sub>! ```Ok i think thats it for the item editor if i forgot something let>! me know please…>! **Now form work for the Map editor**>! **frmEditor_Map**>! 1\. Under the>! other map Attributes make a new radio button named :>! **optCraft**>! Set caption to: **Crafting**>! 2.>! Next in picAttributes (to the right side of map editor) make a new frame called:>! **fraCraft**>! Set Caption to: **Crafting**>! 3.>! Inside this new frame make a scroll bar named:>! **scrlCraft**>! 4\. Under the scroll bar make a label named:>! **lblCType**>! Set Caption as :>! **Type:**>! 5.Under that make a command button named:>! **cmdCOk**>! Set caption as: Ok>! Now add this code to the>! bottom of frmEditor_Map>! ```' crafting>! Private Sub scrlCraft_Change()>! With lblCType>! Select Case scrlCraft.Value>! Case 0>! .Caption = "None">! Case 1>! .Caption = "Alchemy">! Case 2>! .Caption = "Crafting">! Case 3>! .Caption = "Enchanting">! End Select>! End With>! End Sub>! Private Sub optCraft_Click()>! ClearAttributeDialogue>! picAttributes.Visible = True>! fraCraft.Visible = True>! scrlCraft.Max = 3>! lblCType.Caption = "Type :" & scrlCraft.Value>! End Sub>! '/crafting>! ' crafting>! Private Sub cmdCOk_Click()>! SkillType = scrlCraft.Value>! fraCraft.Visible = False>! picAttributes.Visible = False>! End Sub>! ```>! Ok now move>! to **frmMain**…>! This next part is up to you as you can>! make this however you want.. It just displays your skill lvs and progress to the>! next level. I made a new button and picture box to display them but you can do>! whatever you want..>! Make 3 Labels somewhere on **frmMain**.>! Can be in the options, character window, ect..>! 1\. Name the first label:>! **lblSmith**>! 2\. Name the second :>! **lblAlchemy**>! 3\. And name the third:>! **lblEnchants**>! Beside each of those make 3 more labels and>! name>! them>! 1.**lblSmithExp**>! 2.**lblAlchemyExp**>! 3.**lblEnchantsExp**>! The first 3 labels will show the current level your skills are at and the next 3 show your exp and exp to next level… That shoould be it and now you have a dynamic crafting system with skill levels and seperate crafting stations… Im sure i missed something as im very high so just let me know it all works on my end so no worries...**EDIT:: Under this in modConstants (Client and Server):**```' max number of crafting itemsPublic Const MAX_RECIPE_ITEMS As Long = 5```**Add this:**```' ProficiencyPublic Const MAX_SKILL_LEVEL As Long = 100``` Link to comment Share on other sites More sharing options...
or3o Posted September 9, 2012 Share Posted September 9, 2012 You just blew my mind! now i have to rework my crafting system to implement some of these features! Link to comment Share on other sites More sharing options...
Zzbrandon Posted September 9, 2012 Share Posted September 9, 2012 Very long but I like it but you can just use Events to smith >_> Link to comment Share on other sites More sharing options...
or3o Posted September 9, 2012 Share Posted September 9, 2012 This is a million times better than smithing with the even system lol. it includes a smithing skills and everything, saying you can use the even system to smith is like saying you can walk 10 miles instead of driving a car. I mean its kinda true but who the hell wants to do it? Link to comment Share on other sites More sharing options...
Justn Posted September 9, 2012 Author Share Posted September 9, 2012 This is 100% compatible with the older crafting system.. i just reposted the whole tutorial to make things easier for new people.. i will post the changes made from the old one to this version.. so if u already have the old one ur only adding a couple things and deleting one line ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/smile.png)Also I think it only seems long cause of the way I did the form work part once I get it.looking nicer i think it will.seem short… Also u dont have to add the skill level stuff if u dont want it it works fine without it just wanted to release the whole thing as is in my project incase people needed it Link to comment Share on other sites More sharing options...
Scott Posted September 9, 2012 Share Posted September 9, 2012 Thanks for releasing it glad to see you posting somethings from your personal game for everyone to use. Link to comment Share on other sites More sharing options...
Ne-o-x Posted September 9, 2012 Share Posted September 9, 2012 Very impresive work. Link to comment Share on other sites More sharing options...
Guest Posted September 9, 2012 Share Posted September 9, 2012 > Very long but I like it but you can just use Events to smith >_>You're dummy, if you don't know what ure talking about then dont say anything, event system is very limited, try it yourself, and you will see there is no way to have a good crafting shiet Link to comment Share on other sites More sharing options...
Vus Posted September 9, 2012 Share Posted September 9, 2012 Nice tutorial. Link to comment Share on other sites More sharing options...
or3o Posted September 9, 2012 Share Posted September 9, 2012 The only issue ive ran into so far is Skilltype is getting a variable not defined error, im trying to figure out where it goes still.it goes in mod globals ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/smile.png)Tested and it works perfectly. thanks a ton justin! Link to comment Share on other sites More sharing options...
Justn Posted September 9, 2012 Author Share Posted September 9, 2012 Yes sorry I forgot that.. modglobals client side add this to the bottom```Public Skilltype As Long``` Link to comment Share on other sites More sharing options...
Shasokais Posted September 16, 2012 Share Posted September 16, 2012 Invalid property value O_O```frmEditor_Item.scrlSmithReq.value = .SmithReq``` Link to comment Share on other sites More sharing options...
Justn Posted September 16, 2012 Author Share Posted September 16, 2012 Hmm what's ur scroll bars min and max?EDIT:: Under this in modConstants (Client and Server):```' max number of crafting itemsPublic Const MAX_RECIPE_ITEMS As Long = 5```Add this:```' ProficiencyPublic Const MAX_SKILL_LEVEL As Long = 100``` Link to comment Share on other sites More sharing options...
Shasokais Posted September 16, 2012 Share Posted September 16, 2012 > Hmm what's ur scroll bars min and max?min = 1max = 100nothing, again this eror((( Link to comment Share on other sites More sharing options...
Ganjika Posted September 16, 2012 Share Posted September 16, 2012 > **I WILL POST PREMADE FORM WORK AND POST PICS SOMETIME TOMORROW..**Did you ever do this? Its been like almot a month. =P, Would be cool to see a visual on the forum work,If ANYONE has screenshots i would appreciate it. =P Link to comment Share on other sites More sharing options...
Guest Posted September 16, 2012 Share Posted September 16, 2012 > Did you ever do this? Its been like almot a month. =P, Would be cool to see a visual on the forum work,> > If ANYONE has screenshots i would appreciate it. =Pya know at the bottom of the tut is the form work, he even tells you how to do it. its a picbox and some labels… lets get it together folks. Link to comment Share on other sites More sharing options...
Ganjika Posted September 16, 2012 Share Posted September 16, 2012 (on the client side when trying to compile.)_Dragon Eclipse_ - [[b]Eclipse Origins 3.0 Nightly Dx8 -_Note: I know you said not tested with EO 3.0 but the server starts up and runsjust fine, its only the client that is giving me this error._![](http://i1127.photobucket.com/albums/l632/EsoGuildPB/errorcraft.png)(BELOW: My Step-Into Debug Result:)![](http://i1127.photobucket.com/albums/l632/EsoGuildPB/stepintodebugresults.png)> ya know at the bottom of the tut is the form work, he even tells you how to do it. its a picbox and some labels… lets get it together folks.I was thinking screenshots :shrug: my bad, I think I did okay - I myself will post screenshots of it working on Eclipse Origins 3.0 Nightly Dx8 as well as how the menu looks when all set up and working -_if_- I manage to get it running in said environment. =P> [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:34 pm] : ModText or ModGraphics should have a call on how to render text [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:34 pm] : look into that [Ganjika](http://www.touchofdeathforums.com/community/index.php?/user/78057-ganjika/) [01:35 pm] : are they references or is it int he code itself? [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:35 pm] : Look at how player names are rendered [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:35 pm] : it might help [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:40 pm] : … I'll just download it real quick [Ganjika](http://www.touchofdeathforums.com/community/index.php?/user/78057-ganjika/) [01:40 pm] : ' Draw name 'Call DrawText(TexthDC, TextX, TextY, Name, color) Dim I As Long RenderText Font_Default, name, TextX, TextY, color, 0 If Not Player(Index).GuildName = vbNullString Then 'Call DrawText(TexthDC, Text2X, Text2Y, GuildString, color) RenderText Font_Default, GuildString, Text2X, Text2Y, color, 0 End If [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:41 pm] : Ah [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:41 pm] : rendertext [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:41 pm] : that call [Ganjika](http://www.touchofdeathforums.com/community/index.php?/user/78057-ganjika/) [01:41 pm] : which part is the call? [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:41 pm] : That entire line [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:41 pm] : RenderText Font_Default, GuildString, Text2X, Text2Y, color, 0 god why doesnt it work!!?!?!?!?!?!?!?! [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:42 pm] : RenderText Font_Default, "Text Goes Here", LocationX, LocationY, Color, idfkwhathtislastthingdoes> > [Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:52 pm]:Replace the old DrawText calls with one similar to that[Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:52 pm]:do replace the variables correctly though[Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:53 pm]:or it'll just crash[Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:53 pm]:badly[Stein](http://www.touchofdeathforums.com/community/index.php?/user/76335-stein/) [01:53 pm]:xD Link to comment Share on other sites More sharing options...
Justn Posted September 17, 2012 Author Share Posted September 17, 2012 Yea ill help everyone when I get home tonight I think i missed a damn step in the skill lv subs anyways cause I added this and got a stupid error with the tool for smithing… I'll post screenshot and frm work and show u how to upgrade from the old crafting system... Link to comment Share on other sites More sharing options...
Ganjika Posted September 17, 2012 Share Posted September 17, 2012 Got the client to compile by changing Drawtext to Rendertext and TextTHdc to font_default, testing it now - will report back with results.I'm actually in game - will try new features now - btw ; I'm using Eclipse Origins 3.0 Nightly (a Direct x 8 Version) - Dragon Ecipse.None of the in game menu items added for crafting are visable, the selection for "crafting" is visible but when i click it its all blank and theres no way out of the menu at that point, in item editor the space or the frame is there as is the the label that reads "1" but everything else is not visible.![](http://i1127.photobucket.com/albums/l632/EsoGuildPB/in-game1error.png) Link to comment Share on other sites More sharing options...
Iscn Posted September 17, 2012 Share Posted September 17, 2012 This is pretty cool. You put alot of work into this nice! Link to comment Share on other sites More sharing options...
DJMaxus Posted September 17, 2012 Share Posted September 17, 2012 Looks like you beat me to releasing this. XDI copied it directly into Godborn's source afterwards, but coding it into your project was the original. Didn't even have it in my game. Link to comment Share on other sites More sharing options...
Justn Posted September 20, 2012 Author Share Posted September 20, 2012 Ok I uploaded the form work examples.. I only included the new frame and code for item editor and the whole map editor with code so pull out what u need from it.. You Will Still Have to do the frmMain form work which is easy. I didnt include it cause im sure you would rather put your labels in other places or not at all…Also made a correction in the tutorial so if you already have it make sure to change this:**Server****Find this:**```' Make sure proper weapon is equipped If Item(GetPlayerEquipment(Index, Weapon)).Tool <> Item(GetPlayerInvItemNum(Index, invNum)).ToolReq Then PlayerMsg Index, "This isn't the tool used in the recipe.", BrightRed Exit Sub End If If GetPlayerEquipment(Index, Weapon) <= 0 Then Call PlayerMsg(Index, "You don't have the proper tool equipped!", White) Exit Sub End If```And change it to this:```If GetPlayerEquipment(Index, Weapon) <= 0 Then Call PlayerMsg(Index, "You don't have the proper tool equipped!", White) Exit Sub End If ' Make sure proper weapon is equipped If Item(GetPlayerEquipment(Index, Weapon)).Tool <> Item(GetPlayerInvItemNum(Index, invNum)).ToolReq Then PlayerMsg Index, "This isn't the tool used in the recipe.", BrightRed Exit Sub End If```Basically ur just flip-flopping the two if statements to prevent an error if u have no item equipped…Now if anyone is having issues upgrading from the old system please let me know and ill show you how.. I am planning on posting hotfixes to upgrade it but I find it to be a problem to do anything code wise while posting on the new site and jugding by the lack of responses I dont see them ever fixing it... I couldnt even post the frm work it made me zip it up =/ Anyways just let me know what I can do to help.. Link to comment Share on other sites More sharing options...
Justn Posted September 20, 2012 Author Share Posted September 20, 2012 > Got the client to compile by changing Drawtext to Rendertext and TextTHdc to font_default, testing it now - will report back with results.> > I'm actually in game - will try new features now - btw ; I'm using Eclipse Origins 3.0 Nightly (a Direct x 8 Version) - Dragon Ecipse.> > None of the in game menu items added for crafting are visable, the selection for "crafting" is visible but when i click it its all blank and theres no way out of the menu at that point, in item editor the space or the frame is there as is the the label that reads "1" but everything else is not visible.Please refer to the downloads and make sure yours looks like that in the map editor with the right code added and make sure in the item editor you did the form work correctly like make sure the new frame is on the form itself not pasted somewhere else.. And make sure you did the steps right before the form work starts or else it wont work.. Seems like a simple fix for you If you still have issues let me know and ill jump on teamviewer or something..> This is pretty cool. You put alot of work into this nice!Thanks but keep in mind that DjMaxus is the one who did 99% of the work here, I just gave alittle money and posted the tut ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/smile.png) Link to comment Share on other sites More sharing options...
Justn Posted September 22, 2012 Author Share Posted September 22, 2012 Lol I guess nobody has tried to use this… While helping ganjika I realized I left out the tool requirement part of the form work making the tut useless.. will post it when I get home in a few Link to comment Share on other sites More sharing options...
Ganjika Posted September 23, 2012 Share Posted September 23, 2012 > Lol I guess nobody has tried to use this… While helping ganjika I realized I left out the tool requirement part of the form work making the tut useless.. will post it when I get home in a fewHope you get around to this - will be epic ; also, shoot me the project I sent you as soon as can. =] Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now