Jump to content

How to make a character level up?


Recommended Posts

@Crestonia
Check out wx78's prefab. (...Steam\steamapps\common\Don't Starve Together Beta\data\scripts\prefabs\wx78.lua)
To detect if the eaten food is petals you can do something like this:

local function oneat(inst, food)    if food and food.prefab == "petals" then	inst.level = inst.level + 1	applyupgrades(inst)		    endend
Link to comment
Share on other sites

@SenL

Nvm it does crash. e.e

Here is the prefab

local assets = {
 
        Asset( "ANIM", "anim/player_basic.zip" ),
        Asset( "ANIM", "anim/player_idles_shiver.zip" ),
        Asset( "ANIM", "anim/player_actions.zip" ),
        Asset( "ANIM", "anim/player_actions_axe.zip" ),
        Asset( "ANIM", "anim/player_actions_pickaxe.zip" ),
        Asset( "ANIM", "anim/player_actions_shovel.zip" ),
        Asset( "ANIM", "anim/player_actions_blowdart.zip" ),
        Asset( "ANIM", "anim/player_actions_eat.zip" ),
        Asset( "ANIM", "anim/player_actions_item.zip" ),
        Asset( "ANIM", "anim/player_actions_uniqueitem.zip" ),
        Asset( "ANIM", "anim/player_actions_bugnet.zip" ),
        Asset( "ANIM", "anim/player_actions_fishing.zip" ),
        Asset( "ANIM", "anim/player_actions_boomerang.zip" ),
        Asset( "ANIM", "anim/player_bush_hat.zip" ),
        Asset( "ANIM", "anim/player_attacks.zip" ),
        Asset( "ANIM", "anim/player_idles.zip" ),
        Asset( "ANIM", "anim/player_rebirth.zip" ),
        Asset( "ANIM", "anim/player_jump.zip" ),
        Asset( "ANIM", "anim/player_amulet_resurrect.zip" ),
        Asset( "ANIM", "anim/player_teleport.zip" ),
        Asset( "ANIM", "anim/wilson_fx.zip" ),
        Asset( "ANIM", "anim/player_one_man_band.zip" ),
        Asset( "ANIM", "anim/shadow_hands.zip" ),
        Asset( "SOUND", "sound/sfx.fsb" ),
        Asset( "SOUND", "sound/wilson.fsb" ),
        Asset( "ANIM", "anim/beard.zip" ),
 
        Asset( "ANIM", "anim/esctemplate.zip" ),
        Asset( "ANIM", "anim/ghost_esctemplate_build.zip" ),
}
local prefabs = {}
local start_inv = {
-- Custom starting items
}
local function applyupgrades(inst)
 
local max_upgrades = 30
local upgrades = math.min(inst.level, max_upgrades)
 
local hunger_percent = inst.components.hunger:GetPercent()
local health_percent = inst.components.health:GetPercent()
local sanity_percent = inst.components.sanity:GetPercent()
 
inst.components.hunger.max = math.ceil (70 + upgrades * 1) --100
inst.components.health.maxhealth = math.ceil (70 + upgrades * 1) --100
inst.components.sanity.max = math.ceil (70 + upgrades * 3) --160
 
 
 
 
inst.components.talker:Say("Level : ".. (inst.level))
 
if inst.level >29 then
inst.components.talker:Say("Level : Max!")
end
 
inst.components.hunger:SetPercent(hunger_percent)
inst.components.health:SetPercent(health_percent)
inst.components.sanity:SetPercent(sanity_percent)
 
end
 
local function oneat(inst, food)
 
--if food and food.components.edible and food.components.edible.foodtype == "HELLO" then
if food and food.components.edible and food.prefab == "corn" or food.prefab == "carrot" then
--give an upgrade!
inst.level = inst.level + 1
applyupgrades(inst)
inst.SoundEmitter:PlaySound("dontstarve/characters/wx78/levelup")
 
end
-- This initializes for both clients and the host
local common_postinit = function(inst) 
-- Minimap icon
inst.MiniMapEntity:SetIcon( "esctemplate.tex" )
end
 
-- This initializes for the host only
local master_postinit = function(inst)
-- choose which sounds this character will play
inst.soundsname = "willow"
-- Stats
inst.components.health:SetMaxHealth(70)
inst.components.hunger:SetMax(70)
inst.components.sanity:SetMax(70)
end
 
return MakePlayerCharacter("esctemplate", prefabs, assets, common_postinit, master_postinit, start_inv)
 
Edited by Crestonia
Link to comment
Share on other sites

That's because there is no foodtype of "PETALS"

If you open petals.lua (inside SteamApps\common\Don't Starve Together Beta\data\scripts\prefabs\) you'll see that petals is foodtype of "VEGGIE"

So you could set it to foodtype="VEGGIE" or you could do below

 

(inside mycharacter.lua)

local function oneat(inst, food)  if food and food.components.edible then    if food.prefab == "petals" then      inst.level = inst.level + 1      applyupgrades(inst)    elseif food.prefab == "mandrake" then      inst.level = inst.level + 10      applyupgrades(inst)    end  endend

I don't know how to get full list of foodtypes (anyone help?)

 

Link to comment
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
 Share

×
  • Create New...