Hornete

Making Custom Skins for Modded Characters! [Tutorial]

Recommended Posts

Hornete    2665
Just now, ILikeHoneyBees said:

[snip]

local assets =
{
    Asset( "ANIM", "anim/zeta.zip" ),
    Asset( "ANIM", "anim/ghost_zeta_build.zip" ),
}

local skins =
{
    normal_skin = "zeta",
    ghost_skin = "ghost_zeta_build",
}

local base_prefab = "zeta"

local tags = {"ZETA", "CHARACTER"}

return CreatePrefabSkin("zeta_none",
{
    base_prefab = base_prefab,
    skins = skins,
    assets = assets,
    tags = tags,

    skip_item_gen = true,
    skip_giftable_gen = true,
})

Remove this part here, it's unnessacary.

Share this post


Link to post
Share on other sites
7 minutes ago, Hornete said:

local assets =
{
    Asset( "ANIM", "anim/zeta.zip" ),
    Asset( "ANIM", "anim/ghost_zeta_build.zip" ),
}

local skins =
{
    normal_skin = "zeta",
    ghost_skin = "ghost_zeta_build",
}

local base_prefab = "zeta"

local tags = {"ZETA", "CHARACTER"}

return CreatePrefabSkin("zeta_none",
{
    base_prefab = base_prefab,
    skins = skins,
    assets = assets,
    tags = tags,

    skip_item_gen = true,
    skip_giftable_gen = true,
})

Remove this part here, it's unnessacary.

Hmm, I did that and now the game just closes with no error, here. I'll check the logs..

image.thumb.png.d2d57e5db3fb7456ecb9eeae2af4068e.png

Looks like the same thing as before. I changed the name of the spriter file and what I think are the animation frames themselves

image.png.75b5f3e013d754f70fc2c633f212b8de.png

Any Idea as to what it could be?

 

  • Like 1

Share this post


Link to post
Share on other sites
Hornete    2665
Just now, ILikeHoneyBees said:

[snip]

Are you sure you recompiled? Try deleting the zeta_rose.zip and then recompiling the animations again.

Share this post


Link to post
Share on other sites
3 minutes ago, Hornete said:

Are you sure you recompiled? Try deleting the zeta_rose.zip and then recompiling the animations again.

okay, the game loaded. but now not even the normal skin shows up. and there isn't a head slot. I'm sorry for taking up so much of your time, but do you have any idea what could be happening?image.thumb.png.11f6219a6d0844f78062fa0d5116b1c3.png

Share this post


Link to post
Share on other sites
Hornete    2665
3 minutes ago, ILikeHoneyBees said:

 

--Hornet: I am currently using wilba as an example, youll want to change all instances of "wilba" to the prefab name of your character!
--Skins
local _G = GLOBAL
local PREFAB_SKINS = _G.PREFAB_SKINS
local PREFAB_SKINS_IDS = _G.PREFAB_SKINS_IDS
local SKIN_AFFINITY_INFO = GLOBAL.require("skin_affinity_info")

modimport("skins_api") --Hornet: We import the file! If you named your file something else other than skins_api then youll want to rename this function to the name of the file

SKIN_AFFINITY_INFO.wilba = {
	"wilba_victorian", --Hornet: These skins will show up for the character when the Survivor filter is enabled
}

--[[ --Hornet: The table of skins youre going to have, You can have as many skins as you want!

PREFAB_SKINS["wilba"] = {
	"wilba_none", 
	"wilba_roseate",
	"wilba_victorian",
} --And So on!

]]

PREFAB_SKINS_IDS = {} --Make sure this is after you  change the PREFAB_SKINS["character"] table
for prefab,skins in pairs(PREFAB_SKINS) do
    PREFAB_SKINS_IDS[prefab] = {}
    for k,v in pairs(skins) do
      	  PREFAB_SKINS_IDS[prefab][v] = k
    end
end



AddSkinnableCharacter("wilba") --Hornet: The character youd like to skin, make sure you use the prefab name. And MAKE sure you run this function AFTER you import the skins_api file

Are you sure you have these lines from the tutorial? 

Share this post


Link to post
Share on other sites
8 minutes ago, Hornete said:

--Hornet: I am currently using wilba as an example, youll want to change all instances of "wilba" to the prefab name of your character!
--Skins
local _G = GLOBAL
local PREFAB_SKINS = _G.PREFAB_SKINS
local PREFAB_SKINS_IDS = _G.PREFAB_SKINS_IDS
local SKIN_AFFINITY_INFO = GLOBAL.require("skin_affinity_info")

modimport("skins_api") --Hornet: We import the file! If you named your file something else other than skins_api then youll want to rename this function to the name of the file

SKIN_AFFINITY_INFO.wilba = {
	"wilba_victorian", --Hornet: These skins will show up for the character when the Survivor filter is enabled
}

--[[ --Hornet: The table of skins youre going to have, You can have as many skins as you want!

PREFAB_SKINS["wilba"] = {
	"wilba_none", 
	"wilba_roseate",
	"wilba_victorian",
} --And So on!

]]

PREFAB_SKINS_IDS = {} --Make sure this is after you  change the PREFAB_SKINS["character"] table
for prefab,skins in pairs(PREFAB_SKINS) do
    PREFAB_SKINS_IDS[prefab] = {}
    for k,v in pairs(skins) do
      	  PREFAB_SKINS_IDS[prefab][v] = k
    end
end



AddSkinnableCharacter("wilba") --Hornet: The character youd like to skin, make sure you use the prefab name. And MAKE sure you run this function AFTER you import the skins_api file

Are you sure you have these lines from the tutorial? 

Oh dear me, I am so sorry. I put them in but I think I was saving them to an old back-uped version. I added it to the files I'm using. and I got another error. and I'm back where I started. the last time this was because I mis-named something. but you mentioned something about type=base. I'll go and take a look at the code and get back to you (in case you hadn't already guessed. I'm not a programmer)

 

image.thumb.png.b2322d18f6949562a618755feb803171.png

Share this post


Link to post
Share on other sites
Hornete    2665
Just now, ILikeHoneyBees said:

 

Back to step one, haha. Are you absolutely positive you have this line for both the zeta_none and zeta_rose skins in the CreatePrefabSkin functions?

type = "base"

If you do, share the mods files so I can take a look

Share this post


Link to post
Share on other sites

Hmmm, the type=base is there, and I'm not seeing any naming issues. do you have any idea what else could be a problem?

wait, gimme a moment I'll go check those

 

Yea they do have the CreatePrefabSkin functions. do you want just the modmain or the whole mod?

Share this post


Link to post
Share on other sites

Well, for now here is the modmain file

 

PrefabFiles = {
  "mutantbeecocoon",
  "mutantbee",
  "mutantbeehive",
  "zeta",
  "zeta_none",
  "armor_honey"
}

Assets = {
  Asset( "IMAGE", "images/saveslot_portraits/zeta.tex" ),
  Asset( "ATLAS", "images/saveslot_portraits/zeta.xml" ),

  Asset( "IMAGE", "images/selectscreen_portraits/zeta.tex" ),
  Asset( "ATLAS", "images/selectscreen_portraits/zeta.xml" ),

  Asset( "IMAGE", "images/selectscreen_portraits/zeta_silho.tex" ),
  Asset( "ATLAS", "images/selectscreen_portraits/zeta_silho.xml" ),

  Asset( "IMAGE", "bigportraits/zeta.tex" ),
  Asset( "ATLAS", "bigportraits/zeta.xml" ),
  
    Asset( "IMAGE", "bigportraits/zeta_rose.tex" ),
  Asset( "ATLAS", "bigportraits/zeta_rose.xml" ),

  Asset( "IMAGE", "images/map_icons/zeta.tex" ),
  Asset( "ATLAS", "images/map_icons/zeta.xml" ),
  Asset( "IMAGE", "images/map_icons/mutantbeecocoon.tex" ),
  Asset( "ATLAS", "images/map_icons/mutantbeecocoon.xml" ),
  Asset( "IMAGE", "images/map_icons/mutantbeehive.tex" ),
  Asset( "ATLAS", "images/map_icons/mutantbeehive.xml" ),

  Asset( "IMAGE", "images/avatars/avatar_zeta.tex" ),
  Asset( "ATLAS", "images/avatars/avatar_zeta.xml" ),

  Asset( "IMAGE", "images/avatars/avatar_ghost_zeta.tex" ),
  Asset( "ATLAS", "images/avatars/avatar_ghost_zeta.xml" ),

  Asset( "IMAGE", "images/avatars/self_inspect_zeta.tex" ),
  Asset( "ATLAS", "images/avatars/self_inspect_zeta.xml" ),

  Asset( "IMAGE", "images/names_zeta.tex" ),
  Asset( "ATLAS", "images/names_zeta.xml" ),

  Asset( "IMAGE", "bigportraits/zeta_none.tex" ),
  Asset( "ATLAS", "bigportraits/zeta_none.xml" ),

  Asset("SOUNDPACKAGE", "sound/zeta.fev"),
  Asset("SOUND", "sound/zeta.fsb"),

  Asset("ANIM", "anim/status_symbiosis.zip"),
  Asset("ANIM", "anim/status_meter_symbiosis.zip"),
}

RemapSoundEvent( "dontstarve/characters/zeta/hurt", "zeta/zeta/hurt" )
RemapSoundEvent( "dontstarve/characters/zeta/talk_LP", "zeta/zeta/talk_LP" )
RemapSoundEvent( "dontstarve/characters/zeta/death_voice", "zeta/zeta/death_voice" )
RemapSoundEvent( "dontstarve/characters/zeta/emote", "zeta/zeta/emote" ) --dst
RemapSoundEvent( "dontstarve/characters/zeta/pose", "zeta/zeta/pose" ) --dst
RemapSoundEvent( "dontstarve/characters/zeta/yawn", "zeta/zeta/yawn" ) --dst
RemapSoundEvent( "dontstarve/characters/zeta/ghost_LP", "zeta/zeta/ghost_LP" ) --dst


local require = GLOBAL.require
local STRINGS = GLOBAL.STRINGS
local TUNING = GLOBAL.TUNING
local Ingredient = GLOBAL.Ingredient
local RECIPETABS = GLOBAL.RECIPETABS
local TECH = GLOBAL.TECH

-- Stats
TUNING.OZZY_MAX_HEALTH = 175
TUNING.OZZY_MAX_SANITY = 100
TUNING.OZZY_MAX_HUNGER = 125
TUNING.OZZY_DEFAULT_DAMAGE_MULTIPLIER = 0.75
TUNING.OZZY_HUNGER_SCALE = 1.1
TUNING.OZZY_NUM_PETALS_PER_HONEY = 5
TUNING.OZZY_SHARE_TARGET_DIST = 30
TUNING.OZZY_MAX_SHARE_TARGETS = 20
TUNING.OZZY_DEFAUT_SPEED_MULTIPLIER = 1.0
TUNING.OZZY_SPRING_SPEED_MULTIPLIER = 1.15
TUNING.OZZY_WINTER_SPEED_MULTIPLIER = 0.85
TUNING.OZZY_MAX_SUMMON_BEES = 3
TUNING.OZZY_SUMMON_CHANCE = 0.3
TUNING.OZZY_MAX_BEES_STORE = 7

-- Mutant bee stats
TUNING.MUTANT_BEE_HEALTH = 100
TUNING.MUTANT_BEE_DAMAGE = 10
TUNING.MUTANT_BEE_ATTACK_PERIOD = 1
TUNING.MUTANT_BEE_TARGET_DIST = 8
TUNING.MUTANT_BEE_WATCH_DIST = 20
TUNING.MUTANT_BEE_MAX_POISON_TICKS = 5
TUNING.MUTANT_BEE_POISON_DAMAGE = 5
TUNING.MUTANT_BEE_POISON_PERIOD = 0.75
TUNING.MUTANT_BEE_EXPLOSIVE_DAMAGE_MULTIPLIER = 3.0
TUNING.MUTANT_BEE_EXPLOSIVE_RANGE = 8
TUNING.MUTANT_BEE_FROSTBITE_SPEED_PENALTY = 0.5
TUNING.MUTANT_BEE_FROSTBITE_ATK_PERIOD_PENALTY = 1.65
TUNING.MUTANT_BEE_COLDNESS_ADD = 0.5
TUNING.MUTANT_BEE_WEAPON_ATK_RANGE = 10
TUNING.MUTANT_BEE_RANGED_TARGET_DIST = 10
TUNING.MUTANT_BEE_RANGED_ATK_HEALTH_PENALTY = 1 / 10
TUNING.MUTANT_BEE_RANGED_DAMAGE = 15
TUNING.MUTANT_BEE_RANGED_ATK_PERIOD = 2.5

-- Mutant beehive stats
TUNING.MUTANT_BEEHIVE_DEFAULT_EMERGENCY_BEES = 2
TUNING.MUTANT_BEEHIVE_EMERGENCY_BEES_PER_PLAYER = 100
TUNING.MUTANT_BEEHIVE_EMERGENCY_RADIUS = 30
TUNING.MUTANT_BEEHIVE_BEES = 4
TUNING.MUTANT_BEEHIVE_DEFAULT_RELEASE_TIME = 30
TUNING.MUTANT_BEEHIVE_DEFAULT_REGEN_TIME = 30
TUNING.MUTANT_BEEHIVE_DELTA_BEES = 1
TUNING.MUTANT_BEEHIVE_DELTA_RELEASE_TIME = 10
TUNING.MUTANT_BEEHIVE_DELTA_REGEN_TIME = 5
TUNING.MUTANT_BEEHIVE_UPGRADES_PER_STAGE = 3
TUNING.MUTANT_BEEHIVE_WATCH_DIST = 30
TUNING.MUTANT_BEEHIVE_RECOVER_PER_CHILD = 0.75
TUNING.MUTANT_BEEHIVE_GROW_TIME = {TUNING.TOTAL_DAY_TIME * 10, TUNING.TOTAL_DAY_TIME * 10}

-- Armor honey
TUNING.ARMORHONEY_MAX_ABSORPTION = 0.65
TUNING.ARMORHONEY_MIN_ABSORPTION = 0.35
TUNING.ARMORHONEY_HEAL_TICKS = 5
TUNING.ARMORHONEY_HEAL_INTERVAL = 1
TUNING.ARMORHONEY_MIN_HEAL_PERCENT = 0.01
TUNING.ARMORHONEY_MAX_HEAL_PERCENT = 0.03
TUNING.ARMORHONEY_MIN_HEAL_EXTRA = 1
TUNING.ARMORHONEY_MAX_HEAL_EXTRA = 3
TUNING.ARMORHONEY_ADD_STORE = 1
TUNING.ARMORHONEY_MULT_REGEN_TICK = 2 / 3

-- Parasite
TUNING.METAPIS_PARASITE_HEALTH_DIV = 200
TUNING.METAPIS_MAX_PARASITES_PER_VICTIM = 4
TUNING.METAPIS_PARASITE_NEAR_OWNER_SPAWN_RANGE = 20
TUNING.METAPIS_PARASITE_HEALTH_RATE = 0.5
TUNING.METAPIS_PARASITE_DAMAGE_RATE = 0.5
TUNING.METAPIS_PARASITE_LIFE_SPAN = 30

-- Mod config
local num_bees = GetModConfigData("NUM_BEES_IN_HIVE")
TUNING.MUTANT_BEEHIVE_DEFAULT_EMERGENCY_BEES = TUNING.MUTANT_BEEHIVE_DEFAULT_EMERGENCY_BEES + num_bees * 2
TUNING.MUTANT_BEEHIVE_DEFAULT_REGEN_TIME = TUNING.MUTANT_BEEHIVE_DEFAULT_REGEN_TIME - num_bees * 10

local bee_damage = GetModConfigData("BEE_DAMAGE")
TUNING.MUTANT_BEE_DAMAGE = TUNING.MUTANT_BEE_DAMAGE + bee_damage * 5
TUNING.MUTANT_BEE_ATTACK_PERIOD = TUNING.MUTANT_BEE_ATTACK_PERIOD - bee_damage * 0.5
TUNING.MUTANT_BEE_POISON_DAMAGE = TUNING.MUTANT_BEE_POISON_DAMAGE - bee_damage * 2
TUNING.MUTANT_BEE_RANGED_DAMAGE = TUNING.MUTANT_BEE_RANGED_DAMAGE + bee_damage * 5
TUNING.MUTANT_BEE_RANGED_ATK_PERIOD = TUNING.MUTANT_BEE_RANGED_ATK_PERIOD - bee_damage * 1


-- The character select screen lines
STRINGS.CHARACTER_TITLES.zeta = "The Buzzy"
STRINGS.CHARACTER_NAMES.zeta = "Wuzzy"
STRINGS.CHARACTER_DESCRIPTIONS.zeta = "*Has his own hive\n*Produces honey by eating petals\n*Summons bees by chance on attack"
STRINGS.CHARACTER_QUOTES.zeta = "\"Let's beefriend!\""

-- Custom speech strings
STRINGS.CHARACTERS.ZETA = require "speech_zeta"

-- The character's name as appears in-game
STRINGS.NAMES.ZETA = "Wuzzy"

AddMinimapAtlas("images/map_icons/zeta.xml")
AddMinimapAtlas("images/map_icons/mutantbeecocoon.xml")
AddMinimapAtlas("images/map_icons/mutantbeehive.xml")

-- Add mod character to mod character list. Also specify a gender. Possible genders are MALE, FEMALE, ROBOT, NEUTRAL, and PLURAL.
AddModCharacter("zeta", "MALE")

local function MakeHoneycombUpgrader(prefab)
  if not prefab.components.upgrader then
    prefab:AddComponent("upgrader")
  end
end

AddPrefabPostInit("honeycomb", MakeHoneycombUpgrader)

local function HandleHoneyPerishingInMetapisHive(prefab)
  if prefab.components.perishable and prefab.components.inventoryitem then
    local OldOnPutInInventory = prefab.components.inventoryitem.onputininventoryfn or function() return end
    prefab.components.inventoryitem:SetOnPutInInventoryFn(function(inst, owner)
      if owner.prefab == "mutantbeehive" then
        inst.components.perishable:StopPerishing()
      end

      OldOnPutInInventory(inst, owner)
    end)


    local inventoryitem = prefab.components.inventoryitem
    local OldOnRemoved = inventoryitem.OnRemoved
    local onremovedfn = function(inst, owner)
      if owner.prefab == "mutantbeehive" then
        inst.components.perishable:StartPerishing()
      end
    end

    inventoryitem.OnRemoved = function(comp)
      if comp.owner then
        onremovedfn(comp.inst, comp.owner)
      end
      OldOnRemoved(comp)
    end
  end
end

AddPrefabPostInit("honey", HandleHoneyPerishingInMetapisHive)

local containers = GLOBAL.require("containers")
local oldwidgetsetup = containers.widgetsetup
local MyChests = {
  mutantbeehive = "treasurechest",
}

containers.widgetsetup = function(container, prefab, data)
  prefab = MyChests[prefab or container.inst.prefab] or prefab
  oldwidgetsetup(container, prefab, data)
end

AddRecipe("mutantbeecocoon",
  {
    Ingredient("honeycomb", 1),
    Ingredient("cutgrass", 4),
    Ingredient("honey", 1)
  },
  RECIPETABS.SURVIVAL,
  TECH.NONE,
  nil, nil, nil, nil,
  "beemaster",
  "images/inventoryimages/mutantbeecocoon.xml",
  "mutantbeecocoon.tex"
)

AddRecipe("armorhoney",
  {
    Ingredient("log", 10),
    Ingredient("rope", 1),
    Ingredient("honey", 3)
  },
  RECIPETABS.WAR,
  TECH.NONE,
  nil, nil, nil, nil,
  "beemaster",
  "images/inventoryimages/armor_honey.xml",
  "armor_honey.tex"
)

GLOBAL.ACTIONS.UPGRADE.priority = 1 -- To show over ACTIONS.STORE

local Badge = require("widgets/badge")

local function OnRegenTick(inst, data)
  local percent = inst.components.beesummoner:GetRegenTickPercent()
  inst.symbiosis_percent:set(math.floor(percent * 100 + 0.5))
  inst.symbiosis_maxval:set(inst.components.beesummoner.maxticks)
  inst.symbiosis_numstore:set(inst.components.beesummoner.numstore)

  if data.currenttick > 0 then
    inst.symbiosis_pulse:set(true)
  else
    inst.symbiosis_pulse:set(false)
  end
end

local function OnNumStoreChange(inst, data)
  inst.symbiosis_numstore:set(inst.components.beesummoner.numstore)
end

local function CalcSymbiosisPosition(status)
  -- Assume that brain always stays in the middle, stomach on the left and heart on the right
  local brainPos = status.brain:GetPosition()
  local stomachPos = status.stomach:GetPosition()
  local heartPos = status.heart:GetPosition()

  local pos = GLOBAL.Vector3(2 * stomachPos.x - brainPos.x, brainPos.y, stomachPos.z)
  return pos
end

local function StatusPostConstruct(self)
  if self.owner.prefab == 'zeta' then
    self.symbiosis = self:AddChild(Badge(nil, self.owner, { 48 / 255, 169 / 255, 169 / 255, 1 }, "status_symbiosis"))
    self.symbiosis.backing:GetAnimState():SetBuild("status_meter_symbiosis")

    self.symbiosis:Hide()
    self.symbiosis.num:Show()
    local OldOnLoseFocus = self.symbiosis.OnLoseFocus
    self.symbiosis.OnLoseFocus = function(badge)
      OldOnLoseFocus(badge)
      badge.num:Show()
    end

    self.owner.UpdateSymbiosisBadge = function()
      local percent = self.owner.symbiosis_percent and (self.owner.symbiosis_percent:value() / 100) or 0
      local maxval = self.owner.symbiosis_maxval and self.owner.symbiosis_maxval:value() or 0
      local numstore = self.owner.symbiosis_numstore and self.owner.symbiosis_numstore:value() or 0
      local pulse = self.owner.symbiosis_pulse and self.owner.symbiosis_pulse:value() or false
      local pos = CalcSymbiosisPosition(self)
      self.symbiosis:Show()
      self.symbiosis:SetPosition(pos:Get())
      self.symbiosis:SetScale(self.brain:GetScale():Get())
      self.symbiosis:SetPercent(percent, maxval)
      self.symbiosis.num:SetString(GLOBAL.tostring(numstore))
      if pulse then
        self.symbiosis:PulseGreen()
      end
    end
  end
end

AddClassPostConstruct("widgets/statusdisplays", StatusPostConstruct)

local function onsymbiosisdirty(inst)
  if GLOBAL.ThePlayer and GLOBAL.ThePlayer.UpdateSymbiosisBadge then
    GLOBAL.ThePlayer.UpdateSymbiosisBadge()
  end
end

local function PlayerPostConstruct(inst)
  if inst.prefab ~= 'zeta' then
    return
  end

  inst.symbiosis_percent = GLOBAL.net_byte(inst.GUID, "symbiosis.percent", "symbiosisdirty")
  inst.symbiosis_maxval = GLOBAL.net_byte(inst.GUID, "symbiosis.maxval", "symbiosisdirty")
  inst.symbiosis_numstore = GLOBAL.net_byte(inst.GUID, "symbiosis.numstore", "symbiosisdirty")
  inst.symbiosis_pulse = GLOBAL.net_bool(inst.GUID, "symbiosis.pulse", "symbiosisdirty")

  if GLOBAL.TheWorld.ismastersim then
    inst:ListenForEvent("onregentick", OnRegenTick)
    inst:ListenForEvent("onnumstorechange", OnNumStoreChange)

    -- kick off badge
    inst:DoTaskInTime(0, function() inst:PushEvent("onregentick", {currenttick = 0}) end)
  end

  if not GLOBAL.TheNet:IsDedicated() then
    inst:ListenForEvent("symbiosisdirty", onsymbiosisdirty)
  end
end

AddPlayerPostInit(PlayerPostConstruct)

--Skin Stuff Below
--Hornet: I am currently using wilba as an example, youll want to change all instances of "wilba" to the prefab name of your character!
--Skins
local _G = GLOBAL
local PREFAB_SKINS = _G.PREFAB_SKINS
local PREFAB_SKINS_IDS = _G.PREFAB_SKINS_IDS
local SKIN_AFFINITY_INFO = GLOBAL.require("skin_affinity_info")

modimport("skins_api") --Hornet: We import the file! If you named your file something else other than skins_api then youll want to rename this function to the name of the file

SKIN_AFFINITY_INFO.zeta = {
    "zeta_rose", --Hornet: These skins will show up for the character when the Survivor filter is enabled
}

--[[ --Hornet: The table of skins youre going to have, You can have as many skins as you want!

PREFAB_SKINS["zeta"] = {
    "zeta_none", 
    "zeta_rose",
} --And So on!

]]

PREFAB_SKINS_IDS = {} --Make sure this is after you  change the PREFAB_SKINS["character"] table
for prefab,skins in pairs(PREFAB_SKINS) do
    PREFAB_SKINS_IDS[prefab] = {}
    for k,v in pairs(skins) do
            PREFAB_SKINS_IDS[prefab][v] = k
    end
end

AddSkinnableCharacter("zeta") --Hornet: The character youd like to skin, make sure you use the prefab name. And MAKE sure you run this function AFTER you import the skins_api file

--Skin STRINGS

STRINGS.SKIN_NAMES.zeta_none = "Wuzzy"
STRINGS.SKIN_QUOTES.zeta_none = "\"Bees Together Strong\""
STRINGS.SKIN_DESCRIPTIONS.zeta_none = "Placeholder."

STRINGS.SKIN_NAMES.zeta_rose = "The Roseate"
STRINGS.SKIN_QUOTES.zeta_rose = "\"I think I got more on me than in the hive!\""
STRINGS.SKIN_DESCRIPTIONS.zeta_rose = "Wuzzy loves pollinating flowers at dawn with his fuzzy flying compainions."

Share this post


Link to post
Share on other sites
Hornete    2665
1 hour ago, ILikeHoneyBees said:

 

Sorry for being a bit late, can you share the entire mod? 

Share this post


Link to post
Share on other sites
46 minutes ago, Hornete said:

Sorry for being a bit late, can you share the entire mod? 

Hmmm, I've tried twice now and klei can't handle the post. I'm going to try and break it up. and it's only 25MB total 

anim folder

 

armor_honey.zip

bee_anim.zip

esctemplate.zip

ghost_zeta_build.zip

melissa.zip

mutantassassinbee.zip

mutantassassinhive.zip

mutantbee_angry_build.zip

mutantbee_build.zip

mutantbeecocoon.zip

mutantbeehive.zip

mutantdefenderbee.zip

mutantdefenderhive.zip

mutantrangerbee.zip

mutantrangerhive.zip

mutantsoldierbee.zip

mutantworkerbee.zip

pollen_fx.zip

status_meter_symbiosis.zip

status_symbiosis.zip

swap_melissa.zip

symbiosis.zip

zeta.zip

zeta_none.zip

zeta_rose.zip

zetapollen.zip

zeta_rose.xmlzeta_rose.texbigportraitzeta_none.xmlzeta_none.texzeta.xmlzeta.texs folder

bigportraits folder..

zeta_rose.xml

zeta_rose.tex

zeta_none.xm

zeta_none.tex

zeta.xml

zeta.tex

lower arm

arm_lower-0.png

arm_lower-1.png

arm_lower-2.png

arm_lower-3.png

arm_lower-4.png

arm_lower-5.png

arm_lower-6.png

arm_upper-6.png.ff7db6320df506cbb325b6a1fa3ff0d6.pngarm_upper-5.png.c78712ad565a9fdb8c6272822e8c1a04.pngarm_upper-4.png.74cab18c55d0e7bf425cf7c2c0ed95da.pngupper armarm_upper-3.png.36491bc7719fd191c2ad418985a08606.pngarm_upper-2.png.e4a8f47348f544d26592c7197a8f604c.pngarm_upper-1.png.22607d2878bcac7fa59d643c7f356f41.pngarm_upper-0.png.ac8b498cf20e160e1eb699b567877527.png

upper arm skinarm_upper_skin-2.png.d4f8a292d11ed28e58c17bea0abba037.pngarm_upper_skin-1.png.233c66a7e69974b4ea2b0bea06b8755d.pngarm_upper_skin-0.png.e784b08ff829dd0114f5b93950982f8e.png

cheeks 

cheeks-0.png

cheeks-1.png

face-32.png.2ad51be2a9ef3bb447a4d2f53d2b7f22.pngface-31.png.587daccf4350b7c06cbc9add32a3d27e.pngface-30.png.dca7e0a6f35abdad504cfd6d16e6a4ac.pngface-29.png.c6e637cb13d892d514393941ffbf017b.pngface-28.png.ff369a9ec63cd31d7f927568e752bc2e.pngface-27.png.9f588b335a2077ed3bf2a3ad4d90f6a8.pngface-26.png.af9ab4939bad4037b28bdb4736547c44.pngface-25.png.3728dde7ca2eb260a504868c6585e1d7.pngface-24.png.5c282ff380d777516af4bfffd8a8ba42.pngface-23.png.d83af110fd411c8fad8f7aba6cdae523.pngface-22.png.7fd48be6940fe143293454548e4708a8.pngface-21.png.4698e18c4f44656b0324075819880044.pngface-20.png.5a12a744c7a0a571e49d042bf54cb849.pngface-19.png.65b89c0b767f8c9637142a9f05e6103b.pngface-18.png.a3188cad7f2ca5befdec33f50e9f67db.pngface-17.png.553793d146da189683852fe42d8ba2d8.pngface-16.png.8538445a31dac01374565d6af0ed36b7.pngface-15.png.62fbc3afa9e70935c3939d74a34360bc.pngface-14.png.469cdfdb2ad35919d21bb957a4f529fc.pngface-13.png.33855f6fa2efd78d87af291ef60db438.pngface-12.png.a5e46bba45a1e82f94f26510bb1b613d.pngface-11.png.0eaedba5401ee15a7b799754ed856800.pngface-10.png.3fa1ca40e245ceb0f674bf8fced2053e.pngface-9.png.b597a59c468f76713600c88df03dff2f.pngface-8.png.b6d1da86dce002b73c3a8727f2e7bc3d.pngface-7.png.49727534254491bf6e4c2eb6de3d1a0e.pngface-6.png.4568813976316b66532854d0b49dc80d.pngface-5.png.a41ade8be0679e7262cc5adf80291f1b.pngface-4.png.325f1138316e2fe22934cdd6f7f24d1b.pngface-3.png.47c0631f79fcd367fce8d07906030ec6.pngface-2.png.8e670f05f0238ee67907db552419f8b7.pngfaceface-1.png.26b161fc57dedc47ff2e3f366cf45920.pngface-0.png.534bf7c6a3f8a4eed4291d5bce992e2d.png

feetfoot-7.png.0d82ae2ee243f0ce3650061a6503ad92.pngfoot-6.png.16f82682d35a9d2beb8d74e45add7209.pngfoot-5.png.7dd501f96dbe02961d4faa85dd2cad51.pngfoot-4.png.15398e35960901ebd0ffe05e074446d0.pngfoot-3.png.2abf4d06371974ec083ba6ba5eafbca4.pngfoot-2.png.5fc07ed49ee2c883c04efcd95ca1e147.pngfoot-1.png.2f5c47d1be548d8e7e48208cd6524f3b.pngfoot-0.png.45b3e1f92c04c4c12ff3f1414c3ee07d.png

Oh dear this really isn't working. I need to get some sleep now. so I'll check this in the morning. but how do I do his without this discussion crashing?

Share this post


Link to post
Share on other sites
Hornete    2665
12 hours ago, ILikeHoneyBees said:

Oh dear this really isn't working. I need to get some sleep now. so I'll check this in the morning. but how do I do his without this discussion crashing?

Try zipping up the entire mod folder and sending it here.

Share this post


Link to post
Share on other sites
Hornete    2665
1 hour ago, ILikeHoneyBees said:

Hmm, okay I'll do that now

here ya go! again, thanks so much for helping me with this :D

Wuzzy Mod.zip

Ah so the issue was in the modmain, sorry for wasting your time on uploading the mod. Anyways
 

--[[ --Hornet: The table of skins youre going to have, You can have as many skins as you want!

PREFAB_SKINS["zeta"] = {
    "zeta_none", 
    "zeta_rose",
} --And So on!

]]

For some reason this is commented out, but it shouldn't be. So change it to this
 

--Hornet: The table of skins youre going to have, You can have as many skins as you want!

PREFAB_SKINS["zeta"] = {
    "zeta_none", 
    "zeta_rose",
} --And So on!

 

Share this post


Link to post
Share on other sites
1 hour ago, Hornete said:

Ah so the issue was in the modmain, sorry for wasting your time on uploading the mod. Anyways
 


--[[ --Hornet: The table of skins youre going to have, You can have as many skins as you want!

PREFAB_SKINS["zeta"] = {
    "zeta_none", 
    "zeta_rose",
} --And So on!

]]

For some reason this is commented out, but it shouldn't be. So change it to this
 


--Hornet: The table of skins youre going to have, You can have as many skins as you want!

PREFAB_SKINS["zeta"] = {
    "zeta_none", 
    "zeta_rose",
} --And So on!

 

OH YES!!!! it works! It WORKS! Oooooo thank you so much. this means so much to me!!!!! YES! 
image.thumb.png.007b952f932cbd1ec749f47f1ef23535.png

I still get an error on my modded world, but hey. I'll fix that myself. quick question though. any idea why the portrait frame is not showing up? TBH I don't care at this point. I'm just so happy it works.

Here's the error by the way if you have any idea what it could be. to me it seems like an issue with the character files themselves (I sure hope that's not the case! I've been on this world for a while and I'd hate to give it up) but I hope it lies within the some 30 mods I run


image.thumb.png.99bd34ecb6b5c97e93dc4bbb5e359046.png

 

If you don't know. that's fine. I'll fix it myself. just, thank you! thank you! thank you!

Share this post


Link to post
Share on other sites
cosmisora    0

Hello, I've been following this tutorial and have ran into similar issues as ILikeHoneyBees, and was able to resolve most of the errors. Only problem now is that the game seems to ignore the skin(s).

 

As-in; the game compiles the mod, and runs without crashes but doesn't "see" the skin whenever starting a new world or opening the wardrobe.

 

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now