Jump to content

Recommended Posts

I believe the fastest way to do that would be adding new "food type" to your character (instead of running through all of the existing foods in the game to set them as "uneatable")
It's pretty simple. Go to your character's prefab file and add this along with your character's other stats:

    inst.components.eater.ablefoods = { "NOMS" }
    inst.components.eater.foodprefs = { "NOMS" } 
    
(You can of course change the "NOMS" to whatever other name you want to give them XD it doesn't really matter.)
Then head to your modmain.lua and add this:

    GetPlayer = GLOBAL.GetPlayer
    
    AddPrefabPostInit("fish", function(inst)
        if GetPlayer().prefab == "YourCharacterHere" then
            inst.components.edible.foodtype = "NOMS"
        end
    end)
    AddPrefabPostInit("fishsticks", function(inst)
        if GetPlayer().prefab == "YourCharacterHere" then
            inst.components.edible.foodtype = "NOMS"
        end
    end)
    
    and so on...
    
I hope this helps. 
And good luck! ^-^

2 hours ago, BraveChicken said:

I believe the fastest way to do that would be adding new "food type" to your character (instead of running through all of the existing foods in the game to set them as "uneatable")
It's pretty simple. Go to your character's prefab file and add this along with your character's other stats:

    inst.components.eater.ablefoods = { "NOMS" }
    inst.components.eater.foodprefs = { "NOMS" } 
    
(You can of course change the "NOMS" to whatever other name you want to give them XD it doesn't really matter.)
Then head to your modmain.lua and add this:

    GetPlayer = GLOBAL.GetPlayer
    
    AddPrefabPostInit("fish", function(inst)
        if GetPlayer().prefab == "YourCharacterHere" then
            inst.components.edible.foodtype = "NOMS"
        end
    end)
    AddPrefabPostInit("fishsticks", function(inst)
        if GetPlayer().prefab == "YourCharacterHere" then
            inst.components.edible.foodtype = "NOMS"
        end
    end)
    
    and so on...
    
I hope this helps. 
And good luck! ^-^

Thank you very much

On 18.03.2018 at 2:19 PM, BraveChicken said:

I believe the fastest way to do that would be adding new "food type" to your character (instead of running through all of the existing foods in the game to set them as "uneatable")
It's pretty simple. Go to your character's prefab file and add this along with your character's other stats:

    inst.components.eater.ablefoods = { "NOMS" }
    inst.components.eater.foodprefs = { "NOMS" } 
    
(You can of course change the "NOMS" to whatever other name you want to give them XD it doesn't really matter.)
Then head to your modmain.lua and add this:

    GetPlayer = GLOBAL.GetPlayer
    
    AddPrefabPostInit("fish", function(inst)
        if GetPlayer().prefab == "YourCharacterHere" then
            inst.components.edible.foodtype = "NOMS"
        end
    end)
    AddPrefabPostInit("fishsticks", function(inst)
        if GetPlayer().prefab == "YourCharacterHere" then
            inst.components.edible.foodtype = "NOMS"
        end
    end)
    
    and so on...
    
I hope this helps. 
And good luck! ^-^

Well i did but i had a few errors i handled some of them but i can't figure this out. I hope that you can help me here is error. If you need more information let me know.

 

 

[string "scripts/mainfunctions.lua"]:147: Error loading file prefabs/alishia

 

      no file '../mods/alishia/scripts/prefabs/alishia.lua' (checked with custom loader)

      no file 'scripts/prefabs/alishia.lua' (checked with custom loader)

      no file 'scriptlibs/prefabs/alishia.lua' (checked with custom loader)

      no file 'scripts/prefabs/alishia.lua' (checked with custom loader)

LUA ERROR stack traceback:

        =[C] in function 'assert'

        scripts/mainfunctions.lua(147,1)

        =(tail call) ?

        =[C] in function 'xpcall'

        scripts/mods.lua(158,1)

        scripts/mods.lua(598,1) in function 'RegisterPrefabs'

        scripts/gamelogic.lua(267,1) in function 'LoadAssets'

        scripts/gamelogic.lua(865,1)

        =[C] in function 'SetPersistentString'

        scripts/saveindex.lua(176,1) in function 'Save'

        scripts/saveindex.lua(366,1)

        =[C] in function 'SerializeWorldSession'

        scripts/networking.lua(280,1) in function 'SerializeWorldSession'

        scripts/saveindex.lua(369,1) in function 'OnGenerateNewWorld'

        scripts/gamelogic.lua(876,1) in function 'cb'

        scripts/screens/worldgenscreen.lua(152,1) in function 'OnUpdate'

        scripts/frontend.lua(654,1) in function 'Update'

        scripts/update.lua(92,1)  

[00:00:35]: Disabling alishia (Alisia FrostFox) because it had an error.   

13 hours ago, AkaiNight said:

Well i did but i had a few errors i handled some of them but i can't figure this out. I hope that you can help me here is error. If you need more information let me know

It looks like your game can't find the prefab file "alishia".
It happens when the file is called in your modmain.lua in the PrefabFiles = { } section but the file either don't exist in your prefabs file folder or has it's name changed.
Check in your modmain.lua  if the right prefab files are called in the PrefabFiles section, and the name of your prefab file and folders.
It's probably just a typo somewhere.

If you'll keep on having that problem with your mod then you can send it over to me and I'll try to fix it. (If you want)

Edited by BraveChicken

Well i handle it but there was too many errors and i'm fixing them somehow. But this one i didin't understand anything. The error says "then" needed near "=" but there is a then near it. So here is the error and the code.

local function critter_SanityAura(inst)
	local x, y, z = inst.Transform:GetWorldPosition()
	local delta = 0
	local ents = TheSim:FindEntities(x, y, z, 20, {"critter_puppy", "player", "critter_kitten"})
	local bonus_sanity = nil
	local distsq = nil
	local totalDelta= nil
	
	for k, v in pairs(ents) do
		if v = inst then (THIS ONE IS 190. LINE)
			if v.prefab =="critter_puppy" then
				bonus_sanity = -TUNING.SANITYAURA_MEDIUM
				distsq = math.max(inst:GetDistanceSqToInst(v), 1)
				delta = delta +bonus sanity / distsq
			
		elseif v.prefab == "critter_kitten" then
			bonus_sanity = TUNING:SANITYAURA_SMALL
			distsq = math.max(inst:GetDistanceSqToInst(v), 1)
			delta = delta + bonus_sanity / distsq
		
		elseif v:HasTag ("player") then
			bonus_sanity = -TUNING.SANITY_SMALL
			distsq = math.max(inst:GetDistanceSqToInst(v), 1)
			delta = delta + bonus_sanity / distsq
		
		else
		end
	end
	totalDelta =totalDelta + delta
	end
	
	if #ents > 0 then
		totalDelta = totalDelta / #ents
	else
	totalDelta = 0
	end
	
	return totalDelta
end
[00:00:24]: [string "scripts/mainfunctions.lua"]:147: Error loading file prefabs/alishia
[string "../mods/alishia/scripts/prefabs/alishia.lua"]:190: 'then' expected near '='
LUA ERROR stack traceback:
        =[C] in function 'assert'
        scripts/mainfunctions.lua(147,1)
        =(tail call) ?
        =[C] in function 'xpcall'
        scripts/mods.lua(158,1)
        scripts/mods.lua(598,1) in function 'RegisterPrefabs'
        scripts/gamelogic.lua(267,1) in function 'LoadAssets'
        scripts/gamelogic.lua(851,1) in function 'cb'
        scripts/saveindex.lua(285,1)
        =[C] in function 'GetPersistentString'
        scripts/saveindex.lua(267,1) in function 'GetSaveDataFile'
	...
        =[C] in function 'GetPersistentString'
        scripts/saveindex.lua(250,1) in function 'Load'
        scripts/gamelogic.lua(1053,1) in function 'callback'
        scripts/playerprofile.lua(977,1) in function 'Set'
        scripts/playerprofile.lua(838,1)
        =[C] in function 'GetPersistentString'
        scripts/playerprofile.lua(836,1) in function 'Load'
        scripts/gamelogic.lua(1052,1) in main chunk
        =[C] in function 'require'
        scripts/mainfunctions.lua(874,1)	

also i find something like this.

[00:00:32]: Warning: GetPlayer() is deprecated. Please use ThePlayer instead. (@../mods/alishia/modmain.lua:224 in ?)	
[00:00:32]: error calling PrefabPostInit: chester_eyebone in mod alishia (Alisia FrostFox): 
[string "../mods/alishia/modmain.lua"]:224: attempt to index a nil value
LUA ERROR stack traceback:
        ../mods/alishia/modmain.lua(224,1)
        =(tail call) ?
        =[C] in function 'xpcall'
        scripts/mods.lua(158,1) in function 'mod'
        scripts/mainfunctions.lua(216,1)
        =[C] in function 'SpawnPrefab'
        scripts/mainfunctions.lua(255,1) in function 'SpawnPrefab'
        scripts/mainfunctions.lua(261,1) in function 'SpawnSaveRecord'
        scripts/gamelogic.lua(482,1) in function 'PopulateWorld'
        scripts/gamelogic.lua(732,1) in function 'DoInitGame'
        scripts/gamelogic.lua(852,1) in function 'cb'
	...
        =[C] in function 'GetPersistentString'
        scripts/saveindex.lua(250,1) in function 'Load'
        scripts/gamelogic.lua(1053,1) in function 'callback'
        scripts/playerprofile.lua(977,1) in function 'Set'
        scripts/playerprofile.lua(838,1)
        =[C] in function 'GetPersistentString'
        scripts/playerprofile.lua(836,1) in function 'Load'
        scripts/gamelogic.lua(1052,1) in main chunk
        =[C] in function 'require'
        scripts/mainfunctions.lua(874,1)

is that some kind of error? Code for this error.

 

AddPrefabPostInit("chester_eyebone", function(inst)
	if GetPlayer().prefab == "alishia" then (THIS ONE IS 224. LINE)
		inst:RemoveComponent("inventoryitem")
		inst.components.talkerSay("I can't touch the 'Cursed bone'")
	end
end)

 

20 hours ago, AkaiNight said:

Well i handle it but there was too many errors and i'm fixing them somehow. But this one i didin't understand anything. The error says "then" needed near "=" but there is a then near it. So here is the error and the code.

Hmm, I haven't really used the "for k, v in pairs" type of coding that much so I also will need to look around to try and solve the problem. And if I'll figure something out I'll let you know.

But from what I managed to understand from the script, it looks like you're trying to add a sanity aura on some prefabs/entities?
If yes, then is there a reason why you are adding it this way instead of adding it directly on the prefabs files?
    (I mean simply adding the lines

        inst:AddComponent("sanityaura")
        inst.components.sanityaura.aura = -TUNING.SANITYAURA_SMALL


    into the critter_kitten and critter_puppy prefab files)

And as for the chester_eyebone, try removing (or turning off) the line
    inst.components.talkerSay("I can't touch the 'Cursed bone'")

Also, just to be sure I need to ask.
You are testing it in Don't starve or Don't starve: Reign of Giants. Right? Because Don't starve together of what I managed to understand uses few different codings so it could cause you errors.
I just want to be sure. (I don't really have Don't starve together to be fully aware of all of the differences there)  :( 

Edited by BraveChicken
22 hours ago, BraveChicken said:

Hmm, I haven't really used the "for k, v in pairs" type of coding that much so I also will need to look around to try and solve the problem. And if I'll figure something out I'll let you know.

But from what I managed to understand from the script, it looks like you're trying to add a sanity aura on some prefabs/entities?
If yes, then is there a reason why you are adding it this way instead of adding it directly on the prefabs files?
    (I mean simply adding the lines

        inst:AddComponent("sanityaura")
        inst.components.sanityaura.aura = -TUNING.SANITYAURA_SMALL


    into the critter_kitten and critter_puppy prefab files)

And as for the chester_eyebone, try removing (or turning off) the line
    inst.components.talkerSay("I can't touch the 'Cursed bone'")

Also, just to be sure I need to ask.
You are testing it in Don't starve or Don't starve: Reign of Giants. Right? Because Don't starve together of what I managed to understand uses few different codings so it could cause you errors.
I just want to be sure. (I don't really have Don't starve together to be fully aware of all of the differences there)  :( 

Well I'm using don't starve together. About the chester bone how can i add custom speech for it?

Sorry again. There's a lots of errors and i'm trying to fix them but english is not my first language and there are many things that i can't understand and thanks again for everything. It's a shame for me to ask someone that much questions but there is one more thing that i can't understand.

[string "../mods/alishia/modmain.lua"]:224: attempt to index a nil value
LUA ERROR stack traceback:
        ../mods/alishia/modmain.lua(224,1)
        =(tail call) ?
        =[C] in function 'xpcall'
        scripts/mods.lua(158,1) in function 'mod'
        scripts/mainfunctions.lua(216,1)
        =[C] in function 'SpawnPrefab'
        scripts/mainfunctions.lua(255,1) in function 'SpawnPrefab'
        scripts/mainfunctions.lua(261,1) in function 'SpawnSaveRecord'
        scripts/gamelogic.lua(482,1) in function 'PopulateWorld'
        scripts/gamelogic.lua(732,1) in function 'DoInitGame'
        scripts/gamelogic.lua(852,1) in function 'cb'
	...        
	  =[C] in function 'GetPersistentString'
        scripts/saveindex.lua(250,1) in function 'Load'
        scripts/gamelogic.lua(1053,1) in function 'callback'
        scripts/playerprofile.lua(977,1) in function 'Set'
        scripts/playerprofile.lua(838,1)
        =[C] in function 'GetPersistentString'
        scripts/playerprofile.lua(836,1) in function 'Load'
        scripts/gamelogic.lua(1052,1) in main chunk
        =[C] in function 'require'
        scripts/mainfunctions.lua(874,1)

here is code

AddPrefabPostInit("chester_eyebone", function(inst)
	if GetPlayer().prefab == "alishia" then (THIS ONE 224.)
		inst:RemoveComponent("inventoryitem")
	end
end)

 

Edited by AkaiNight
3 minutes ago, AkaiNight said:

Well I'm using don't starve together. About the chester bone how can i add custom speech for it?

If you want your mod to be compatible with Don't starve together then I sadly won't be able to help you as much (Because as I mentioned I don't have Don't starve together to know about all of the differences in the script that it would need to be made. But there's a lot of helpful people on the [Don't starve together] Mods and Tools, so I'm sure you'll find help anyways)

and as for the bone, the easiest way would be changing the text in your character's speech.lua so upon examining the eyebone your character would say "I can't touch the 'Cursed bone'". Just look for CHESTER_EYEBONE in the speech.lua of your character and put the same text in the GENERIC and WAITING state. It should work.

3 minutes ago, BraveChicken said:

If you want your mod to be compatible with Don't starve together then I sadly won't be able to help you as much (Because as I mentioned I don't have Don't starve together to know about all of the differences in the script that it would need to be made. But there's a lot of helpful people on the [Don't starve together] Mods and Tools, so I'm sure you'll find help anyways)

Oh forgive me it's my mistake i thought i was writing the together form.

31 minutes ago, AkaiNight said:

Sorry again. There's a lots of errors and i'm trying to fix them but english is not my first language and there are many things that i can't understand and thanks again for everything. It's a shame for me to ask someone that much questions but there is one more thing that i can't understand.


[string "../mods/alishia/modmain.lua"]:224: attempt to index a nil value

I believe the problem might be because of the 
    if GetPlayer()     call.
I think that the Don't starve together might use a different one and that's why it's giving you errors.

 

 

34 minutes ago, AkaiNight said:

thanks again for everything. It's a shame for me to ask someone that much questions

And no worries! I'm always glad if I can help someone ^-^

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
×
  • Create New...