Jump to content
c0verfire

Total Modder Newb - Getting Started Questions

Recommended Posts

Hey all,

I am really new to modding, and trying to get started. I decided to take a simple mod that is broken on the workshop, and repack it (with the original owners permission) as a learning experience. Basically the mod allows you to craft a sea chest with planks and nails.

In scripts\4_world\classes\recipes\recipes I put CraftCrateMod.c

class CraftCrateMod extends RecipeBase
{
	override void Init()
	{
		m_Name = "Craft Sea Chest";
		m_IsInstaRecipe = false;//should this recipe be performed instantly without animation
		m_AnimationLength = 2;//animation length in relative time units
		m_Specialty = 0.01;// value > 0 for roughness, value < 0 for precision
		
		
		//conditions
		m_MinDamageIngredient[0] = -1;//-1 = disable check
		m_MaxDamageIngredient[0] = 3;//-1 = disable check
		
		m_MinQuantityIngredient[0] = 28;//-1 = disable check
		m_MaxQuantityIngredient[0] = -1;//-1 = disable check
		
		m_MinDamageIngredient[1] = -1;//-1 = disable check
		m_MaxDamageIngredient[1] = 3;//-1 = disable check
		
		m_MinQuantityIngredient[1] = 10;//-1 = disable check
		m_MaxQuantityIngredient[1] = -1;//-1 = disable check
		//----------------------------------------------------------------------------------------------------------------------
		
		//INGREDIENTS
		//ingredient 1
		InsertIngredient(0,"Nail");//you can insert multiple ingredients this way
		
		m_IngredientAddHealth[0] = 0;// 0 = do nothing
		m_IngredientSetHealth[0] = -1; // -1 = do nothing
		m_IngredientAddQuantity[0] = -28;// 0 = do nothing
		m_IngredientDestroy[0] = false;//true = destroy, false = do nothing
		m_IngredientUseSoftSkills[0] = false;// set 'true' to allow modification of the values by softskills on this ingredient
		
		//ingredient 2
		InsertIngredient(1,"WoodenPlank");//you can insert multiple ingredients this way
		
		m_IngredientAddHealth[1] = 0;// 0 = do nothing
		m_IngredientSetHealth[1] = -1; // -1 = do nothing
		m_IngredientAddQuantity[1] = -10;// 0 = do nothing
		m_IngredientDestroy[1] = false;// false = do nothing
		m_IngredientUseSoftSkills[1] = false;// set 'true' to allow modification of the values by softskills on this ingredient
		//----------------------------------------------------------------------------------------------------------------------
		
		//result1
		AddResult("SeaChest");//add results here

		m_ResultSetFullQuantity[0] = false;//true = set full quantity, false = do nothing
		m_ResultSetQuantity[0] = -1;//-1 = do nothing
		m_ResultSetHealth[0] = -1;//-1 = do nothing
		m_ResultInheritsHealth[0] = 1;// (value) == -1 means do nothing; a (value) >= 0 means this result will inherit health from ingredient number (value);(value) == -2 means this result will inherit health from all ingredients averaged(result_health = combined_health_of_ingredients / number_of_ingredients)
		m_ResultInheritsColor[0] = -1;// (value) == -1 means do nothing; a (value) >= 0 means this result classname will be a composite of the name provided in AddResult method and config value "color" of ingredient (value)
		m_ResultToInventory[0] = 1;//(value) == -2 spawn result on the ground;(value) == -1 place anywhere in the players inventory, (value) >= 0 means switch position with ingredient number(value)
		m_ResultUseSoftSkills[0] = false;// set 'true' to allow modification of the values by softskills on this result
		m_ResultReplacesIngredient[0] = -1;// value == -1 means do nothing; a value >= 0 means this result will transfer item propertiesvariables, attachments etc.. from an ingredient value
	}
};


In scripts\4_world\plugins\pluginbase I put the code to add the recipe
 

modded class PluginRecipesManager
{
	override void ReadCacheFromFile(string filename)
	{
		m_CacheItemMap.Clear();
		m_CachedItems = new array<string>;
		GenerateRecipeCache(m_CachedItems);
		m_CachedItems.Clear();
	}

	override void RegisterRecipies()
	{
		super.RegisterRecipies();
		RegisterRecipe(new CraftCrateMod);
	}
}

 

In my config.cpp I have
 

class CfgPatches
{
	class FirstMod
	{
		requiredAddons[]={};
	};
};

class CfgMods
{
  class FirstMod
  {
    type = "mod";

    dependencies[] = {"World"};
    class defs
    {
      class worldScriptModule
      {
        value = "";
        files[] = {"FirstMod/scripts/4_world/"};


      };
    };
  };
};

I have packed the PBO, and am loading it into CommunityOfflineMode and get the following error.

When I load CommunityOfflineMode I am getting the following error

Annotation-2019-09-21-080652.jpg

My guess is that I have my allowrecipe.c in the wrong path location, so it cannot find the function it is trying to call, but maybe I am wrong. Would love a friendly push in the right direction....

 

Thanks!!!

Share this post


Link to post
Share on other sites

In PluginRecipesManager, you override the method ReadCacheFromFile, however, there is no ReadCacheFromFile in that class or any inherited classes apparently.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×