Page 365 of 396
Re: Ask a simple question, get a simple answer
Posted: Wed Nov 25, 2020 4:57 am
by 7Soul
ratman wrote: ↑Tue Nov 24, 2020 11:59 pm
How would I make a script so it gets all the party's items in their inventory, removes them, then spawns them in a chest?
Updated with the tips in the post below
Code: Select all
function removeItems()
local items = {}
for c = 1, 4 do
local champion = party.party:getChampion(c)
if champion:getEnabled() then
for slot = ItemSlot.BackpackFirst, ItemSlot.BackpackLast do
local item = champion:getItem(slot)
if item then
table.insert(items, item)
champion:removeItem(item)
end
end
end
end
for _,item in pairs(items) do
chest_37.surface:addItem(item)
end
end
If you want to also include the equipped items, replace ItemSlot.BackpackFirst with ItemSlot.Weapon
And replace chest_1 with the id of your chest
Re: Ask a simple question, get a simple answer
Posted: Wed Nov 25, 2020 5:25 pm
by Zo Kath Ra
7Soul wrote: ↑Wed Nov 25, 2020 4:57 am
ratman wrote: ↑Tue Nov 24, 2020 11:59 pm
How would I make a script so it gets all the party's items in their inventory, removes them, then spawns them in a chest?
Code: Select all
function removeItems()
local items = {}
for c = 1, 4 do
local champion = party.party:getChampion(c)
for slot = ItemSlot.BackpackFirst, ItemSlot.BackpackLast do
local item = champion:getItem(slot)
if item then
table.insert(items, item.go.name)
champion:removeItem(item)
end
end
end
for _,id in pairs(items) do
local newItem = spawn(id).item
chest_1.surface:addItem(newItem)
end
end
If you want to also include the equipped items, replace ItemSlot.BackpackFirst with ItemSlot.Weapon
And replace chest_1 with the id of your chest
I'd like to suggest two enhancements:
1) Check the champion with Champion:getEnabled()
2) Instead of spawning new items, add the existing items to the surface.
You can do this before or after removing them from their inventory slot.
Re: Ask a simple question, get a simple answer
Posted: Thu Nov 26, 2020 7:32 am
by IttaBitta
[string "Arch.lua"]:0: undefined object: castle_ceiling_shaft_0000
I've gotten this error multiple times for seemingly random reasons. What gives?
Re: Ask a simple question, get a simple answer
Posted: Thu Nov 26, 2020 7:44 am
by 7Soul
IttaBitta wrote: ↑Thu Nov 26, 2020 7:32 am
[string "Arch.lua"]:0: undefined object: castle_ceiling_shaft_0000
I've gotten this error multiple times for seemingly random reasons. What gives?
I got that before too, but I don't remember why. The solution I found was to copy "castle_ceiling_shaft" and rename it
Code: Select all
defineObject{
name = "castle_ceiling_shaft_0000",
baseObject = "base_ceiling_shaft",
components = {
{
class = "Model",
model = "assets/models/env/castle_ceiling_shaft_01.fbx",
staticShadow = true,
}
},
minimalSaveState = true,
}
Just put this anywhere in your init file or a file with other object definitions
Re: Ask a simple question, get a simple answer
Posted: Thu Nov 26, 2020 9:57 am
by Zo Kath Ra
IttaBitta wrote: ↑Thu Nov 26, 2020 7:32 am
[string "Arch.lua"]:0: undefined object: castle_ceiling_shaft_0000
I've gotten this error multiple times for seemingly random reasons. What gives?
Is that the entire error?
Re: Ask a simple question, get a simple answer
Posted: Thu Nov 26, 2020 10:28 am
by minmay
You've placed a PitComponent above a castle_floor or castle_floor_water tile. These tiles don't have a ceiling shaft that fits with them. You could either make ceiling shaft models for it yourself (see the dungeon tileset ceiling shafts for an example), or switch to using castle_floor_tall tiles, and define a water version of castle_floor_tall if necessary.
Re: Ask a simple question, get a simple answer
Posted: Thu Nov 26, 2020 1:50 pm
by bongobeat
I got an issue while testing my mod:
Is it ok or not recommended to block the party while spawning objects in the level?
The tester didn't have a chest and a wooden box which are spawned in the level. It seems that everything is fine in the editor/and script, but this time he didn't have these objects while playing that level.
These objects are part of a whole external lua script, that spawn every items, chest and possibly alcove with items, monsters, etc.., it is called when the player enter the level, but in the same time I use.
Code: Select all
GameMode.setGameFlag("DisableMovement", true)
GameMode.setGameFlag("DisableMouseLook", true)
GameMode.setGameFlag("DisableKeyboardShortcuts", true)
to block the party, and pop up a dialogue via hudprint, then after a few seconds the party movement is re-enabled.
Edit: it was a mistake, the object weren't spawned for another reason.
Re: Ask a simple question, get a simple answer
Posted: Thu Nov 26, 2020 11:22 pm
by minmay
Those game flags won't affect anything like that.
It sounds like your problem is instead related to saving and loading the game; perhaps you've put minimalSaveState on an object that you shouldn't have, or something like that? Have you tested this outside the editor?
Re: Ask a simple question, get a simple answer
Posted: Thu Nov 26, 2020 11:49 pm
by bongobeat
I have not checked if there is minimal save state on these objects, but I doubt it. It's a chest and a wooden box, I certainly didn't put minimalsavestate = true on these one. <<- will check it. In a moment of distraction, maybe I have copied something in the wrong area.
Also these objects have been tested, many times since i published many version, and I or the testers didn't notice something like that.
Edit:
I just try a new game, and I didn't notice anything wrong. Don't know what caused that.
Re: Ask a simple question, get a simple answer
Posted: Fri Nov 27, 2020 8:37 am
by Zo Kath Ra
bongobeat wrote: ↑Thu Nov 26, 2020 11:49 pm
Also these objects have been tested, many times since i published many version, and I or the testers didn't notice something like that.
How many objects does your mod have in total?
Maybe there are so many that the game decides to just drop some of them...