#mod_development

1 messages · Page 345 of 1

true nova
#

You made sure your stuff is all in common? and you open the mod tiles in the depth map thing (as in it is open in base by default)? that was what i remember not doing right. ive never seen that error though

#

ah i just looked at your screenshot

ornate otter
#

I'm Jim from Jim's Paradise, 156.236.84.50:16261. I'm looking for a modder to join the team. Short term or long term, we have a good team and a great community. Any resources or information on a better place to seek help would be appreciated also.

rich reef
#

I'm still having an issue with receiveObjectModData index= -1, which I've been told is from transmitModData() being used on a player, or an object not having a correct index.

Does anyone have any more information on what other methods might be ran to cause this issue?

I have tried searching through over 600 mods lua files for transmitModData() calls, and none of them have changed since well before the time the error started occurring, and none of them seem to be called by a player either.

Is it something I am missing? This bug is server crippling, and with the sheer amount of mods I have, binary subtraction and running our test server is going to take forever, especially if it's not always reproducable. Sometimes the error occurs, sometimes it doesn't.

Any help would be appreciated. Pulling my hair out over this one. Thank you!

jolly quest
#

Hello,

I am developing a SaltyChat integration to move voice chat to Teamspeak.
I was wondering if it was possible to open a websocket connection directly from ProjectZomboid to a localhost address ?

mint reef
#

anyone want to make 5x faster washing machine/dryer/combo washer dryer?

bright fog
#

And modify how voice chat works

tulip valve
#

Has anyone added a new item into bags like HikingBag, ALICEpack_Army or SchoolBag? it's a file called Distribution_BagsAndContainers.lua, I can't figure out how to add new items to these bags :/

sour island
#

You posted this twice btw

supple tangle
#

Hey guys, im developing a mod that adds custom 3d hats, when i equip a random of the four that im making, the tooltip and the models doesnt show up and when i hover the cursor over the item a lot of errors occur, here's the script for anyone willing to help:

ancient grail
#

i had no problem with this (b41, not sure if its the same for b42)
i just overwrite the file and it reflects ingame
tho iirc it only does this if local hosted not SP

rich dagger
#

I have to assume its script related though

#

Away from pc so can't help further

rich dagger
# supple tangle

Also try to indent/space the code out a bit. I dont think thats the problem but it could be

supple tangle
#

i have the mod errorMagnifier so i can see the errors but since im not a developer, i cant "decifrate" it, so i put the errors in chatgpt, but, yk, chatgpt isnt really a good buddy to errorsolve with

supple tangle
#

1 sec

rich dagger
#

hmmm maybe include "imports base" at the very top, all of my mods seem to have it

#

imports {
Base
}

supple tangle
#

yea i tried to like copy the script of a mod

#

wait ill send u the screenshot of the error

rich dagger
#

oh yeah also make sure the very last item has 2 } under it

supple tangle
undone elbow
#

Is there a way to mute specific world sound locally (e.g. for one client only in mp)?

supple tangle
#

maybe its the models? im working on em

#

like one worked a few days ago

#

but then after i added some more

#

nope

#

no more

queen oasis
#

this was a nightmare/learning experience but ferk yea

supple tangle
queen oasis
#

and my wife made fresh applesauce so I'm happy too

supple tangle
supple tangle
queen oasis
supple tangle
bronze yoke
bronze yoke
rich dagger
bronze yoke
#

yeah, everyone says that 😅

queen oasis
#

I learned it form you, dad

rich dagger
#

^

bronze yoke
#

there's a bug that causes an error that says 'forgot to import Base' in weird situations where it isn't true so i think it might originate from that

#

imports are mostly only useful for recipes (and even then i recommend against their use)

#

they let you refer to script objects from that module without qualifying it with the module name... except from when they don't, which is quite often

#

for stuff like items it's not really useful

queen oasis
#

I thought the duster / riot thing were you scripts. So the masks, I know vanilla uses all caps for CanHaveHoles like CanHaveHoles = FALSE
idk if that's your problem. everything else ok

bronze yoke
#

case doesn't matter

queen oasis
#

shootin' spitballs

bronze yoke
#

the missing tooltip usually means the bodylocation is bad or the clothingitem is bad, and the bodylocation looks fine to me

supple tangle
#

i dont know what the issue could be..

#

bruh why does modding have to be such a pain in the assunhappy

supple tangle
#

honestly all the 2 script files look fine to me

ancient grail
jade heron
#

I am thinking of trying to mod in a real basic item (cold brew coffee), but honestly I work best by having an example to work from. Does anyone know of an open source PZ mod I can look at?

#

I did ask Gemini, and it looks kind of accurate, but I'd still at the very least be able to fact check the response

#
{
    imports
    {
        Base,
    }
    item MyCustomDrink
    {
        // The item's display name as it appears in-game
        DisplayName = Zomboid Cola,

        // Defines the item as a food/drink type
        Type = Food,

        // The item's category in the inventory menu
        DisplayCategory = Food,

        // What happens when you eat/drink it
        EatType = popcan,

        // This is the icon file name. The full path would be `media/ui/MyCustomDrink.png`
        Icon = MyCustomDrink,

        // How much thirst it quenches. Negative values reduce thirst.
        ThirstChange = -20,

        // How many calories it provides
        Calories = 50,

        // How much hunger it fills. Negative values reduce hunger.
        HungerChange = -15,

        // Reduces boredom and unhappiness.
        BoredomChange = -20,
        UnhappyChange = -10,

        // How much the item weighs in-game
        Weight = 0.6,

        // If the item can hold liquid
        CanStoreWater = TRUE,

        // Can be used to collect water from a source
        IsWaterSource = FALSE,

        // The item that replaces this one when it's finished
        ReplaceOnUse = Base.EmptyPop,

        // Sound played when the item is used
        CustomEatSound = DrinkingFromBottle,
    }
}```
small topaz
#

Hi! About the PZ modding policy: Is it allowed to publish your own mods on GitHub, even if the mod files contain asstes from the vanilla game (in my case, some textures and icons)?

bronze yoke
#

i don't think that's clear from the policy but it seems like everyone gets away with it

small topaz
#

just checked the moddiing policy again and did not find any restrictions on the platforms where you can publish it.

#

to be a bit more on the safe side of things, I always add a custom license text to my mods and also to my GitHub pages:
License: Project Zomboid is owned by The Indie Stone. Except for any restrictions imposed by The Indie Stone's modding policy, I consider all my mods to be open source in the sense that as long as you do not publish a plain copy of them on Steam, you are free to use any element of them, modify to your liking and share the results with the public. Note that some of my mods may contain third-party assets. These are either CC0, CC-BY or owned by The Indie Stone. In the latter case, they can only be used in accordance with The Indie Stone's property rights. In case of CC-BY, my mods contain a file listing the sources. Make sure to comply with the CC-BY license in case you want to re-use them.

willow tulip
#

(ie your mod should be able to use the vanilla versions just like vanilla code does, so you don't need them as part of your mod to use them)

shy mantle
#

So... does anyone know why this exists other than the very vague comment

-- we duplicate copies of business to weight the ratio of EMS to business vehicles to as was in b41 VehicleZoneDistribution.business2 = VehicleZoneDistribution.business VehicleZoneDistribution.business3 = VehicleZoneDistribution.business VehicleZoneDistribution.business4 = VehicleZoneDistribution.business VehicleZoneDistribution.business5 = VehicleZoneDistribution.business VehicleZoneDistribution.business6 = VehicleZoneDistribution.business VehicleZoneDistribution.business7 = VehicleZoneDistribution.business VehicleZoneDistribution.business8 = VehicleZoneDistribution.business VehicleZoneDistribution.business9 = VehicleZoneDistribution.business VehicleZoneDistribution.business10 = VehicleZoneDistribution.business VehicleZoneDistribution.business11 = VehicleZoneDistribution.business VehicleZoneDistribution.business12 = VehicleZoneDistribution.business

willow tulip
shy mantle
#

I feel like there were multiple other ways of doing that lol

willow tulip
#

Absolutely. But lazyness.

#

The proper way is to write a whole chances variable to each distribution table entry, code to loop through all the elements, add up a chance, pick what element based on a random roll based on the total chance.. etc.

#

the lazy way is vehicletospawn = VehicleZoneDistribution[ZombRand(#VehicleZoneDistribution)]

#

(or some horrible java equivilent of that after parsing the LUA table)

#

(Yes I get the code doesn't work because its not actually an array its a table but you get the idea)

shy mantle
#

For some reason the business vehicles don't have any sort of definitions for them (in the normal lua file at least), just vehicle spawns, so I'm guessing there's a lot going on behind the scenes like the stupid traffic jams

willow tulip
#

Of course, considering hoooowwwww many 'pick a random element from this table based on chance % of each element' zomboid does, the fact it doesn't have a universal 'pick random thing from table' function is kinda sad.

shy mantle
#

OH IT JUST CLICKED IN MY HEAD

willow tulip
#

(or maybe it does. I dunno)

shy mantle
#

VehicleZoneDistribution.business.specialCar = true; now the ems part makes sense, chance to spawn in parking lots, and they didn't feel like reworking how special cars spawn in normal lots

#

wait

#

does this mean...

#

I can steal vehicle zones from vanilla?

#

What's stopping me from just.... VehicleZoneDistribution.business12.specialCar = false; and giving it a new definition

willow tulip
willow tulip
#

or anything else you wanted to do.

shy mantle
#

I couldn't figure out how to make my own vehicle zones so...

small topaz
copper cove
#

Anyone can help me how i can send data from Client to Server in B41 ?

#

Code Snip from Client.lua:

local function AWLR_reportChunk(player)
[...]
    local data = {x=chunkX, y=chunkY}
    local success, err = pcall(sendServerCommand, "AutoWeaponLootRespawn", "ReportChunk", data)
end

 -- 1 in-game minute = 2.5 seconds at default game speed
Events.EveryOneMinute.Add(function() AWLR_reportChunk(getPlayer()) end)

Server.lua:

Events.OnClientCommand.Add(function(module, command, player, dataTable)
    if module ~= "AutoWeaponLootRespawn" then return end
    if command == "ReportChunk" then AWLR_playerReportedChunk(player, dataTable) end
end)

but i dont receive anything on server-side

true nova
copper cove
#

yes, its an internal function to catch lua-errors

#

just ignore it, it wont work without it anyway.

copper cove
#

yea i dont want to use ModData because at some point thats too much traffic

small topaz
#

not sure whether there is another way of doing this...

copper cove
#

i just want o receive a message on server-side which the client sends 😉

true nova
#

i see the function to receive the client command but i only see send server command

#

and also you need a function to recieve server command

#

sendClientCommand is what the client uses to send, sendServerCommand is sent from the server to the client

copper cove
#

well i didnt post the complete code but sure there is a function for receiving 😉

guess my misunderstanding is that the client needs to use sendServerCommand as of "send to server" 🤔

#

So then this is correct?

sendClientCommand - to send a message to the server
sendServerCommand - to send a message to the client
 
OnClientCommand - is triggered on server side when a client command is sent
OnServerCommand - is triggered on client side when a server command is sent
small topaz
#

Using ModData.transmit(String key) and the event OnReceiveGlobalModData is definitely a standard way of doing this. I don't think it creates or is vulnerable to "too much traffic" more than any other construction which might work. Just make sure to use a unique key.

copper cove
#

i dont think that this is a intended way to use ModData.

true nova
bright fog
#

In fact that's why using commands is sometimes better

#

I remember Burryaga banging his head on it bcs it wouldn't transmit properly, or maybe it was someone else

bronze yoke
#

mod data transmits the entire table at once no matter what

#

for larger tables it's completely unviable and you can even hit the packet size limit

#

personally i do not use the mod data networking methods whatsoever and always use commands instead

bright fog
#

You know, maybe making a networking lib for default stuff like that could serve less experienced modders

#

Would reduce risks of copy pasting stuff for example and creating code clashes with other modders

bronze yoke
#

what would it do? i stay pretty raw with commands personally

small topaz
#

oh... I thought it would just transmit a reference, say some hashmap key or smth...

#

but I have no clear reason for this. just thought this would be the most intuitive way of realizing such a system lol 😅

true nova
#

i thought that would be the case. i just didnt actually know. its good i learned the right way the first time!

bright fog
#

Wrong one I wanted to link but you see the idea, the whole process of intercepting commands handled for them

bronze yoke
#

i don't know, do what you want but it seems excessive, networking is already extremely simple

#

starlit originally had a networking framework but halfway through writing it i realised it was just a bunch of boilerplate for the sake of it

#

when it comes to mod data transmission it's more of a conceptual issue that is difficult for a library to take care of, you can work around the issue by sending the mod data in chunks but the actual problem is that you're trying to send insanely heavy data when you really shouldn't

#

typically you'd work around it by sending only the changes to the table rather than retransmitting the whole table every time

#

but when possible the best workaround is to not synchronise data at all

bronze yoke
true nova
#

yeah it takes no time to write a client/server command setup that updates parts of moddata. it does sound like overkill

copper cove
#

when i have local wx, wy = player:getX(), player:getY() what do i have to do to calculate the chunk? wx / 32 ?

queen oasis
#

test results of lua calls in craft recipes:

OnTest - basically isValid. Fires about 20 times and then a couple more times after starting to craft
OnStart - fires after you've completed crafting *sadface*
OnUpdate - never fires
OnCreate - fires after you've completed crafting
OnFailed - nothing, but it's hard to test every way it could fail
queen oasis
copper cove
#

oh i need z? damnit 🥴

queen oasis
#

getChunkForGridSquare ignores z

bright fog
#

Of course it's not hard for us to do

#

But networking best practices seem to be an issue for new modders

bright fog
#

Do they ?

queen oasis
#

not that I'm aware of

#

it just ignores it

bronze yoke
#

chunks don't have z levels

#

they contain every z level at that coordinate

bronze yoke
#

the documentation that exists is okay but a little difficult to find and i think the concepts are a little difficult for newer modders to grasp

#

a lot of new modders think that stuff in the shared folder is literally shared between the server and the client over the internet 😅

queen oasis
#

I spent some time a while ago looking for a way to spin up a coop player just long enough to grab the chunk and then kill it - but no luck

#

the folder structure was 100% confusing when I started

bronze yoke
#

documentation can only do so much there because it is objectively confusing from a design standpoint

copper cove
#

well i want that the client sends its new entered chunk to server which then checks for objects in that chunk.. But the server throws an error when i run ```lua
getWorld():getCell():getChunk( math.floor(player:getX() / 10), math.floor(player:getY() / 10) )

queen oasis
#

getPlayer():getSquare():getChunk() would return the current player chunk

bright fog
bright fog
fair frost
#

i got a question

#

could someone direct me as to which file controls what sort of clothing XYZ type of zombie will wear?

bronze yoke
#

<@&671452400221159444>

fair frost
#

like say i want to add extra piece of clothing to army zed- also hi albion

bronze yoke
#

hey jan, feels weird seeing you here 😅

fair frost
#

yup im rarely here

#

but today is one of those rare moments when i gotta seek extra know how

#

because i cannot find it on my own lol

bronze yoke
#

that would be the outfits in media/clothing/clothing.xml

fair frost
bronze yoke
#

yeah, the character creator thing is just a debug thing to check outfits i think, it's not normally visible

fair frost
#

huh, i thought zeds might use seperate file or something but thats cool with me, helps me learn when i eventually create zed type altogether

#

thanks for the help

floral kernel
#

Hey guys, I've been trying to get a custom cell into the vanilla map, and I have it enabled in the mods list, but when I try to load the map in game, it crashes to desktop. Related errors that I found are on lines 2733 and 2939. Any ideas how to fix this? The cell im trying to replace is 53,22 if it matters.

#

my mod is "BetterCabin" if you're curious...

small topaz
#

In B42, is the contruction

if modInfo and isModActive(modInfo) then
   -- do smth if mod with id modID is enabled
end```
still valid?
bronze yoke
#

yes, but remember that mod ids are prefixed with \ now

#

also usually the idiom```lua
if getActivatedMods():contains("\modID") then
-- do something
end

small topaz
#

many thanks!

so did they change this in one of the recent updates (that you have to use \modID instead of modID)???

bronze yoke
#

it's been this way since build 42's first release

small topaz
#

wow. ok. somehow didn't notice this but it silently broke a lot of compatibility patches I included in one of my mods. 😭

forest herald
#

Hi guys, what is the B42 equivalent (if any) of ISCharacterCreation ?

copper cove
#

i still have problems using getChunk() serverside of playerdata
I'll use

function AWLR_getPlayerChunk(player)
    local px, py, pz = player:getX(), player:getY(), player:getZ()
    local cx = math.floor(px / 10)
    local cy = math.floor(py / 10)
    local cz = pz or 0
    return cx, cy, cz
end

which returns imho correct values. but when i run

    local cx, cy, cz = AWLR_getPlayerChunk(player)
    print("DEBUG: cx:".. cx .." cy:".. cy .." cz:".. cz)
    local cell = getWorld():getCell()
    print("DEBUG: cell ".. tostring(cell))
    local chunk = cell:getChunk(cx, cy)
    print("DEBUG: chunk ".. tostring(chunk))

the output is:

LOG  : General     , 1756373582965> 7,829,952,937> DEBUG: cx:1086 cy:986 cz:0
LOG  : General     , 1756373582965> 7,829,952,938> DEBUG: cell zombie.iso.IsoCell@1c72189f
LOG  : General     , 1756373582965> 7,829,952,938> DEBUG: chunk nil

i need the chunk to run getObjects() etc.

hidden compass
#

How can I synchronize the display on the client side when container operations like container:AddItem or container:Remove are performed on the server side? The Add/Remove functions work correctly, but from the client's perspective, the items inside the container do not change. However, restarting the server correctly shows the updated state (with items added or removed).

silent zealot
#

does container.requestSync() sync things?

hidden compass
#

I tried executing container:requestSync on the server side, but it didn't change anything. 🙁

willow tulip
#
        local item = character:getInventory():AddItem("Base.LightBulbGreen");
        sendAddItemToContainer(character:getInventory(), item);
#

in B42, your milage may vary if your using B41, that or look in the lua\server\ dir for AddItem and see what shows up if thats not valid for B41

fleet bridge
#

this probably only applies to b42 where adding items is server authoritive

hidden compass
#

Thank you. In B41, sendAddItemToContainer exists on the Java side but isn't registered with LuaManager, so it seems it can't be called. I also checked the vanilla Lua on the server side, but I couldn't find any useful commands and am stuck. 🙁

willow tulip
#

Or just try to move the process client side?

fleet bridge
#

this will sync server and client

#

line 1190 to 1195 of ISInventoryPage.lua

hidden compass
#

Thank you all for your advice. I'll give up on B41 for now and try again with B42.

fleet bridge
#

i add items to containers using OnFillContainer serverside code and don't have any issues with the items showing up on different clients

#

your issue is probably that the item is added while the character has the container opened

#

if that's the case, the client will need to update

bronze yoke
#

you don't need to synchronise changes to containers during that event because it is triggered before the server sends the contents to any clients

fleet bridge
#

ahh

bronze yoke
#

unfortunately b41's client centric design means that changing containers from the serverside is actually quite annoying

#

you can use sendItemsInContainer to send added items but iirc there is no way to send removed items

#

on the client you would just do add/removeItemOnServer instead of the regular add/remove methods

hidden compass
#

Yes, for B41 multiplayer, I've implemented a temporary fix using add/removeItemOnServer on the client side. This approach may cause several other issues, so we plan to properly address it in B42. Thank you!

queen oasis
#

and I'm back to getting distracted to the point I never finish anything

#

because now I need to retexture the log stacks and the camping logs

queen oasis
forest herald
#

Made a nice little UI hook Kreygasm

forest herald
#

Is there no Events.OnGameExit.Add?

bronze yoke
#

no

hollow girder
shy mantle
#

Since it's modding related and probably won't show up often enough for anyone to care, there's an exploit to duplicate vehicles that are floating under the map, like the shadow cars? If you get into them by using the radial menu (spam clicking) and exit, the vehicle duplicates and you can use the same key for both vehicles. The containers inside do not duplicate unfortunately, but the vehicles themself are exact copies.

#

Anywas, is there anyway to flip a vehicle over WITHOUT it spawning under the map? Because when you change the vehicle angle without increasing the height, all it does is flip under the ground... and I don't know how to increase the height.

hollow girder
shy mantle
hollow girder
shy mantle
#

vehicle:setAngles(180, 0, 0)

flips it facing north, but the entire car rotates around a central point that is the bottom of the vehicle, so now it's underground

#

Maybe I could change some properties of the vehicle itself? That feels like I'm doing too much.

#

it also seems like getWorld():registerZone() doesn't seem to care about vz.z, so that doesn't help

hollow girder
shy mantle
# hollow girder have you tried using the built-in debug functions?

Yeah, I was trying that a while ago. The vehicle would never respond to anything I threw at it. I even made my own button to flip it, tried calling the button (which worked MANUALLY) and it didn't work. So I managed to get the vehicle, it would throw up vehicle angles (which I could hide), but it would NOT set the angles afterwards and I never got any errors to troubleshoot with. So when I teleported to the region with the vehicle I wanted to flip, it would pop open vehicle angles, but I had to manually hit flip for it to flip it. I'm not sure what I'm missing there.

hollow girder
# shy mantle Yeah, I was trying that a while ago. The vehicle would never respond to anything...

It's possible. Most likely, the vehicle's state simply isn't syncing with the server. For example, using the vanilla "flip/rotate" tool for vehicles, it will change its position only visually on the client side for the person who is using it. In order for these changes to take effect, there needs to be interaction with the vehicle— for instance, the player must be inside it— only then will the server process the vehicle's state.
But this relates to the vanilla tool. Your issue might be something entirely different.

#

Or are we just thinking about different things drunk

ancient grail
drifting ore
#

commission

shy mantle
#

OKAY nevermind everything from what I said, apparently it's called setDebugZ which does not sound like something related height, angles, vehizles, zones, objects, or anything specific and is only used ONCE, I've been completely thrown off all day just from that

#

Better vehicle + player interaction update when? Climbing on vehicles is a noob trap for unprepared survivors, very funny

empty gate
#

Hey guys, I’m new to PZ modding. What’s the simplest thing I could try modifying, so I have a small problem to solve and get some practice?

bright fog
#

They are almost 100% implemented in Lua and so you can modify a looooooot of things regarding thing

#

Try changing the background color of a UI

#

Try chabging its border color

#

I think that'll teach you well how Lua classes work, and how to modify simple elements of existing objects

muted garnet
#

I pulled out the vanilla animation using "ZomboidAssetConverter" and changed its Z position so that the animation was visually higher. Please tell me how to save it back correctly now? Now when I try to start the animation, the character just freezes in place, I think the problem is that I am saving the animation incorrectly

bright fog
#

As for exporting properly the animation from imported assets idk I haven't seen anyone do it

bright fog
#

But they will throw messages in the console when present

ancient grail
muted garnet
blazing charm
#

Guys I'm really tired

#

I got everything right. File structure is right, lua script is fine, and the mod is loading, but nothing prints in console.txt at all.

#

I'd really appreciate if some VC with me to help me.

bronze yoke
#

you might just have that bug where prints don't work

blazing charm
bronze yoke
#

it happens sometimes when you switch from b41 to b42, you can fix it by deleting your cache directory

#

i think there's only one specific file you actually have to delete but i don't remember which one

#

that will reset all of your settings and be sure to copy any mods and stuff out of there first

blazing charm
#

The enitre folder should be nuked?

bronze yoke
#

yeah, unless anyone knows the specific file you need to delete

#

the game recreates any files that are missing from there, including the whole directory if necessary

#

the issue is something to do with old files from b41 messing up b42

blazing charm
bronze yoke
#

yeah, backup the entire cache folder if you're worried honestly

#

omg i forgot your fucking saves are in there

#

i use a separate one for modding so that doesn't come to mind 😅

blazing charm
queen oasis
bronze yoke
#

reflection ignores visibility modifiers 🤫

queen oasis
#

trying to find a way to nuke a craft recipe since the enabled and debugOnly flags will nuke your game

#

why it kills the game instead of throwing an error and ignoring the recipe

muted garnet
#

how to visually raise the player by Z coordinate during animation?

true nova
queen oasis
#
Events.OnGameStart.Add(function()

    local SI = getScriptManager()
    local newRecipe = SI:getCraftRecipe("JBLogging.JBSawLogs")
    _ALLTHEDAMNRECIPES = SI:getAllCraftRecipes()
    _ALLTHEDAMNRECIPES:remove(newRecipe)
    print("Papa, can you hear me?")
    print(_ALLTHEDAMNRECIPES:contains(newRecipe))

end)```
ugh
queen oasis
#

trying to find what's reloading craftRecipes inside the beast named ISInventoryPaneContextMenu.createMenu. maybe it's just a debug thing.

true nova
#

isnt that just one massive function? i hate directly modifying the inventory/world context cause of that

bronze yoke
queen oasis
#

guess I won't worry about fixing that part in my max capacity override

#

I should procrastinate more

#

it's getting serious now. Even stuffing prints in the beast.

Events.OnGameStart.Add(function()
    local OnTick
    _JBSAWRECIPE = getScriptManager():getCraftRecipe("JBLogging.JBSawLogs")
    _ALLTHEDAMNRECIPES = getScriptManager():getAllCraftRecipes()
    _ALLTHEDAMNRECIPES:remove(_JBSAWRECIPE)
    print("Papa, can you hear me?")
    print(_ALLTHEDAMNRECIPES:contains(_JBSAWRECIPE))
    OnTick = function()
        if _ALLTHEDAMNRECIPES and _ALLTHEDAMNRECIPES:contains(_JBSAWRECIPE) then
            print("Papa can hear you now, son")
            Events.OnTick.Remove(OnTick)
        end
    end
    Events.OnTick.Add(OnTick)
end)```
true nova
queen oasis
#

that didn't help at all. guess I'm back to following the many threads of craftRecipe javas

#

so it's a me problem

#

making assumptions without testing again

forest herald
#

Why is Feeble, Weak and Weak, Puny NotLikeThis KEKW

queen oasis
#

in today's How Stupid Is He? My log item script has no tags at all. I open the crafting menu, and there's still a bunch of recipes that hinge on tag=Log - like most kiln recipes.
idk why this is. I've restarted, reloaded, etc, and the recipes are still there.

bronze yoke
#

if you're overriding the vanilla script, in b42 tags and other things can linger

#

scripts work really strangely in b42

queen oasis
#

hmm, ok. I'll keep poking at the keyboard then

queen oasis
#

no Log, no game

#

it didn't like that at all

#

I'll assume(because that's what I do) that the Log tag is a remnant of the OG item script that persists even if you 'overwrite' the item

queen oasis
#

If I wanted to catch an item when it spawns, I can get it from OnFillContainer and change the item from there? Or is there a better way?

bronze yoke
#

you could do that or use the item's oncreate function

queen oasis
#

ooh, forgot about that, thanks!

oak python
#

how do i play custom animations? i followed the guide here (https://steamcommunity.com/sharedfiles/filedetails/?id=3035712003) and made it for b42, i added print statements on numpad press. I see print statements but dont see my player play the animation, how do i solve this?

had a spelling error when i moved things to b42

Welcome to this guide, where you will finally make your own animations and you will learn basic concepts about animations on Project Zomboid.
(Original Author: Dislaik)...

queen oasis
#

test worked, very nice

#

and no, I don't leave everything global - in case you were wondering

shy orbit
#

is there somekind of mod for events or something

#

game gets little boring once you have everything setup

bright fog
mental urchin
#

Last time playing PZ it works fine. It seems like some update change something and I can't figure it out. Send some help please🙏

bright fog
mental urchin
#

If empty the same effect

bright fog
#

Hard to say

#

Drop the bag on the floor

#

Try emptying both containers

mental urchin
#

There is no such problem with other mod items.

bright fog
#

No idea here

#

It might be a feature of inventory tetris for some reasons ?

#

I think try asking the IT dev

#

They should know way better than anyone what could be the cause

#

Because it can be either:

  • the bag function that defines what items it accepts (which you don't seem to have)
  • the IT UI blocking the item transfer for some reasons
mental urchin
#

Yep, it's tetris... now need to figure out what calls it

#

Tnx!💚

ancient grail
#

extended anims ui is broken on b42
im guessing its the old code but the anims trigger changed

bright fog
atomic hare
#

Is anyone working on a ammo crafting mod for b42? Because the only one that is working atm is ammo maker and it has a awfully complex ammo making system.

atomic hare
#

Dang it. Thats sad, my modding knowledge is way too small to make my own (and i dont have patience to keep updating 🤣 ).

queen oasis
#

idk why I can't figure out how to get the container of an inventory item / ComboItem. I thought I knew but it returns nil.
I've tried getContainer, getOutermostContainer, getItem():getContainer, etc. It's not a table and it's not an array. I'm lost.

true nova
true nova
#

:getItems() will give you the item array

#

from the itemcontainer

queen oasis
#

getItemContainer is a no go

#

maybe it's the way I'm getting the item

function JBLogging.OnCreate.GardenSaw(comboItem)
  local container = comboItem:getItemContainer()
  print(container)
end

Events.OnGameStart.Add(function()
    instanceItem("Base.GardenSaw"):getScriptItem():setLuaCreate("JBLogging.OnCreate.GardenSaw")
end)```
ancient grail
#
local itemCont = bag:getItemContainer()
        if itemCont then
            local spawned = itemCont:AddItem(toSpawn)
#

this is from a recent code

ancient grail
#

afaik

queen oasis
#

as long as I don't try to get the container, the rest of the code works ok

ancient grail
#

what do you want to do with the container?

bronze yoke
queen oasis
#

remove the item, and add a different item

queen oasis
bronze yoke
#

you assumed about your assumption...

ancient grail
#

then

getItemContainer():Remove()
getItemContainer():AddItem()
queen oasis
#

yep, if I could get the container

ancient grail
#

try it using lua console

#

cuz you tried it before the bag item existed

#

you can use

getPlayer():getInventory():getItemsFromCategory("Container")
queen oasis
#

I was trying to catch the item when it spawned as loot. like albion said, the item doesn't have a container when it's created, so I'll have to catch it the old fashioned way

ancient grail
#

i didnt know that. when do they gain container then?

vivid linden
#

Anyone able to help me with adding a moodle? I've got a blank one to show up so far but it isn't displaying the picture. The moodle is just supposed to be an indication there aren't any levels to it. It should either be shown if the condition is correct and not shown if it isn't.

queen oasis
#

heavy on the 1 tick, 2 ticks not so much

#

Maybe I'll just wait a tick or 2 and then switch my items

queen oasis
#

my stupid way of doing things. reusable now. I might add weighting to it, idk

local function swapItemOnTick(item, replacements)
  local function OnTick()
    Events.OnTick.Remove(OnTick)
    if not item:getContainer() then
      Events.OnTick.Add(OnTick)
      return
    end
    local container = item:getContainer()
    container:Remove(item)
    --print("Removed " .. item:getType())
    local rand = randy:random(#replacements)
    local newItem = replacements[rand]
    --print("Adding " .. newItem)
    container:AddItem(newItem)
  end

  Events.OnTick.Add(OnTick)
end

function JBLogging.OnCreate.GardenSaw(item)
  swapItemOnTick(item, {
    "JBLogging.CrossCutSaw",
    "JBLogging.RipSaw"
  })
end

Events.OnGameStart.Add(function()
    instanceItem("Base.GardenSaw"):getScriptItem():setLuaCreate("JBLogging.OnCreate.GardenSaw")
end)```
ancient grail
#

you can use the item property OnCreate maybe.. (not the recipe)

bronze yoke
#

that is what he is doing

queen oasis
#

doing it the stupid way

bronze yoke
#

<@&671452400221159444>

sour island
#

But onCreate should cover most cases I would imagine

queen oasis
#

it's not mid-game friendly but I don't think a lot of this mod is - it changes so much. I do need to add a fallback in case the on tick fails for whatever reason.
I think the 'stupid' way is less heavy.

#

and if I could figure out how to call a function with only the string name, it could be injected in to any item script. which I know is kind of pointless.

queen oasis
#

sifting through the lua like, where is it calling these ISWorldObjectContextMenu functions from? when it hit me - it's in the javas now

bronze yoke
#

yeah 😭

queen oasis
#

I think it was you who told me, and I immediately blocked it from my memory

ancient grail
#

ouch,

bronze yoke
#

they're left in because there's a boolean to turn the lua context menus back on but i suspect they won't actually update the lua side so it'll break soon enough if it hasn't already

#

that was probably just there for testing while the java conversion wasn't complete

red tiger
#

this video is a fun take on programming
follow form more programming content specially in javascript , python , c++ , java and become skillful coder and developer

Don't forget to LIKE, COMMENT, and SUBSCRIBE for more tech comedy and insightful developer content!

#programming #coding #DeveloperLife#WebDevelopment #UIUXDesign #JavaScript #Pyth...

▶ Play video
queen oasis
#

I did find LuaManager.getFunctionObject(string) so my 'stupid way' of injecting an OnCreate into an item might get 'stupider'

gleaming haven
#

hey, im trying to change Trunk Storage, i found

ProjectZomboid\media\scripts\vehicles\template_trunk.txt

and they contain a

Capacity = XXX

but changing these does nothing?
vehicle_trailer_cover.txt has no Storage in it

any generic vehicle has this
``` part TruckBed
{
itemType = Base.BigTrunk,

        container
        {
            capacity = 130,
        }
    }```

you can easely change this, but Trunk vehicles sadly dont have this

gleaming haven
#

latest

gleaming haven
#

wow thanks.

queen oasis
#

it's not perfect but it can overcome the games hard set max capacities

willow tulip
#

@queen oasis Or is it cause I applied those changes in a client\ lua and not a server?

#

(b42)

queen oasis
#

capacity is capped in java

willow tulip
#

Oh, the 1000 cap?

queen oasis
willow tulip
#

Oh, me and Morlog where talking about the regular capacity

#

stuff changed by

#
    test:setContainerCapacity(test:getContainerCapacity() + 50) ```
#

that works till you hit something or save/reload.. at least, on the \client lua it does.

#

ie, trying to increased a 150 trunk to 200

#

(or trailer)

#

(Morlog was trying for trailers, so slightly different ID)

queen oasis
#

trailers just use TruckBedOpen I think

willow tulip
#

Yea he figured out 'TrailerTrunk'

queen oasis
#

maybe TruckBed

#

hmm, might have to look in to that

willow tulip
#

Truckbed is what cars use, for reasons

#

and even has a comment to say 'should be changed to trunk because truckbed is dumb'

#

(paraphrasing)

queen oasis
#

yea, TrailerTrunk1, 2, 3 can't believe I missed that

willow tulip
#

yea, but the ID is TrailerTrunk with no postfix

queen oasis
#

can't believe no one has said anything on the mod

willow tulip
#

@gleaming haven Im thinking at this point you'd have to like, save your new capacity in modData and then just setup a function, like one of the part.update() functions that runs every 1 second on parts of active vehicles.. or.. something, and just constantly set the setContainerCapacity

#

of your trailer.. Unless doing it on the server properly sets it.

#

I dunno how your going to selectively get the vehicle you want, on the server side 😛

queen oasis
#

I see what I did. I made it future proof already. nice

willow tulip
queen oasis
#

if you're staying under 1000 you should be good to go

willow tulip
#

(you'd change the setContainerCapacity for.. whatever moddata set that his mod instructions say to use)

willow tulip
queen oasis
#

for modData, it's all client but the main bits, I hook in to the meta tables to tell lua to use my capacity functions

willow tulip
#

Niceeee

#

PS: I lost like at least 4 hours of my life trying to change the capacity for gas tanks in vehicles.

queen oasis
#

I think you have to getItemContainer on the vehicle part to set the capacity

willow tulip
#

god damn im an idiot I could have just faked it with moddata on the gas tank and screwing with the guage and/or fueltank.update()

queen oasis
#

the only mod data I use is to override for "special" containers

willow tulip
#

but I realize now, with all the modding iv done, my engines could run off moddata just as well as they can real fuel!

#

Pretty much the only real thing would be hook the mechanic menu to display the new faked value

#

NOT THAT I CARE ENOUGH now that I finally figured it out.... espeically since I guess that still wouldn't work with gas pumps properly... meh.

queen oasis
#

VehiclePart:getItemContainer() will give you the container, then you can setCapacity() on that

willow tulip
#

For gas tanks? Im sure I tried that but will try to remember it, thanks 🙂

queen oasis
#

gas tanks can eat me

willow tulip
#

SAME

#

again, they ate 4+ hours of my life

queen oasis
#

someone else was messing with them

willow tulip
#

trunks,. easy! gas tanks? GO TO HELL PUT A JERRY CAN IN YOUR TRUNK!

#

just add like 40L jerry cans or something I dunno.

#

add a vehicle context menu to refill from inventory while driving, I dunno. anything but try to alter gas tank size again.

#

and just download a gas tank trailer mod for taking large amounts of fuel home

gleaming haven
#

it worked btw. just added TrailerTrunk

willow tulip
#

or useful barrels or something.

willow tulip
#

By our powers combined, a fully functional mod emerges!

#

holds up his gentle encouragement ring as his apparent contribution

shy mantle
#

Add a second gas tank, problem solved

willow tulip
shy mantle
#

problem solved x2

willow tulip
#

cursed I tell you. Realistic but CURSED

shy mantle
#

Someone should mod in gas tank addons that replace car seats

#

remove an entire section of your car for more fuel lol

willow tulip
#

that was literally what my trunk expansion mod did

shy mantle
#

u fr

#

where

#

send

willow tulip
#

and then I was like.. oh hey, I bet fuel could be done too!~

#

butNOOOOOOOOOOO

#

not fuel

shy mantle
#

:(

willow tulip
# shy mantle send

ok but as @gleaming haven found out, it doesn't survive past damaging or save/load without using @queen oasis 's mod lol

shy mantle
#

Today is a sad day

#

more mod limitations

willow tulip
#

Im sure i could refine it some someday.

#

maybe using jimbeandiablo based TECHNOLOGY.

#

if there is demand for trunk based expansion with seat removal...

#

the main issue I found with it though, was, lets say you have a van right, 2 seater, cargo. 150

gleaming haven
willow tulip
#

but then you have one of those stupid station wagons.. 6 seats, maybe more, 90 capacity.

shy mantle
#

What's the issue specifically for that?

willow tulip
#

20 capacity per seat you remove.. it ends up as more capacity then the stupid cargo van!

#

I need a way to upgrade the cargo van.. to be.. cargoyer then the stupid multiseat SUV

#

that got its seats ripped out..

#

lacking seats shouldn't be a disadvantage in cargo capacity.

shy mantle
#

True

willow tulip
#

Hmm, may be I shouldn't be looking at seats removed, but seats remaining instead.

queen oasis
#

I remembered how to add a context menu option without looking at an example. That's a win.
tomorrow, I got to get this tree mod out of my ~~logging ~~deforestation mod. it's getting too big.

shy mantle
queen oasis
#

that's how my screen looks without my glasses

queen oasis
#

bout to get fuzzier cuz it's almost uh, high time to turn this ish off

shy mantle
queen oasis
#

some low hanging fruit for capacity mods using the override mod. jus sayin

#

the biggest issue is the "heavy load" moodle. if someone could lua that away...

bronze yoke
#

<@&671452400221159444>

left plank
#

Thanks

subtle cypress
#

saves and spawns properly, up to 48 custom items, needs some general cleaning up, but almost done.

  • give weapons efficiency to reduce action speed
  • designate a skill to give a 20% bonus to when item is held
  • default numbers automatically set in ui when base item is changed
  • alter drop rate and choose any spawn location categorized or uncategorized
    X ignore damage over time, doesnt work, yet atleast, might be dropped
open drum
#

guys?

#

why is these zeds

#

not at where i changed their X and Y?

#
local player = getPlayer()
local playerX = player:getX()
local playerY = player:getY()
local playerZ = player:getZ()


local currentCell = getCell() 
local radius = 10
local radiusSq = radius * radius
-- getWorldMarkers():addGridSquareMarker(sq, 0.8, 0.8, 0.0, true, radius)
local squaresInRadius = {}

local startX = math.floor(playerX - radius)
local endX = math.ceil(playerX + radius)
local startY = math.floor(playerY - radius)
local endY = math.ceil(playerY + radius)

for x = startX, endX do
    for y = startY, endY do
        -- 플레이어 위치와 현재 순회 중인 (x, y) 좌표 간의 거리를 계산합니다.
        local dx = x - playerX
        local dy = y - playerY
        local distSq = (dx * dx) + (dy * dy) -- 두 지점 사이의 제곱 거리

        -- 현재 GridSquare가 반경 내에 있는지 확인합니다.
        -- 제곱 거리가 반경의 제곱보다 작거나 같으면 반경 내에 있는 것입니다.
        if distSq <= radiusSq then
            -- 해당 좌표의 GridSquare 객체를 가져옵니다.
            local sq = currentCell:getGridSquare(x, y, playerZ)
            if sq then -- 유효한 GridSquare인지 확인합니다 (맵 경계를 벗어나는 경우 등).
                -- 테이블에 추가합니다.
                
                if sq:getDeadBody() then
                local deadbody = sq:getDeadBody()
                print(deadbody)
                -- deadbody:removeFromSquare()
                deadbody:setX(playerX)
                deadbody:setY(playerY)
                deadbody:setZ(playerZ)
                table.insert(squaresInRadius, sq)
                else

                end
                
            end
        end
    end
end

print("Around Player's " .. radius .. " Radius " .. #squaresInRadius .. "squares were found.")```
#

this is the code i did

#

i made the deadbodies teleport it's X and Y to where player X and Y is at

#

but as you can see in the pic. their sprite is there.. but not their inventory

shy mantle
#

Oh yeah... this is definitely gonna be a muliplayer issue with ragdolls lol

true nova
# open drum ```lua local player = getPlayer() local playerX = player:getX() local playerY =...

I have this issue too. I've tried all of the ways to make it work but its always broken in some way. like if you get the sprite and the container then you drag it is invisible in your hands but still on the ground, or it duplicates visual in your hands while being visible on the ground. The solution i've been told is to "refresh it" by putting it in the player inventory, i still had the same issues though

#

if you have any luck with this let me know. i want to move dead bodies in my elevators 😭

mellow frigate
open drum
#

like take the mod off?

ancient grail
open drum
ancient grail
#

ISInventoryPage.dirtyUI();

open drum
#

belong to world inventory?

#

and could you explain what does dirty inventory function really do ?

deep cedar
#

I heard adding the petrol tag to propane tanks makes them refillable with gasoline. Will this still work in b42 with the fluids update and what not?

bright fog
#

I actually don't think they consider propane a fluid either

#

Gasoline uses the fluid components now

open drum
#

should i just include that dirty ui in the code after setX()?

#

is there a way to sync the objecet information

#

once the object is moved from 1 place to another?

#

i think that's the problem...

deep cedar
silent zealot
#

The fluid code can barely handle fluids that are always liquid, I don't think it's ready for gas stored under enough pressure to become liquid.

regal umbra
#

So I'm trying to create a custom pill. It essentially works like Sleeping Tablets, however I want my custom function for it to apply well my stats and whatnot. However in the vanilla code I can't find where in the items_medical.txt, tells it to act a certain way.

Essentially what im asking is: Do pills also use OnEat?

bright fog
#

And I believe it's still the same thing in B42 if you're modding on that version

regal umbra
#

Yeah modding in B42

bright fog
#

Yea pills are annoying to mod, essentially what you want to do is basically reprogram the pill behavior in Lua 🙄

#

Or

#

I believe pills are recognized by a certain method

#

Can you set the pill offset value in its scripts ?

#

If so then you need to find how the game identifies the pill to add the context menu option to use it

#

But yea meds are a bit weird in how they are implemented

regal umbra
#

At least when I did that, it added the context menu option

#

to take pill

#

Now where tf it's pointing to, I have no idea

#

I assume its probably in the Java side

bright fog
#

Yea

thin swan
# true nova I have this issue too. I've tried all of the ways to make it work but its always...

To teleport containers you basically have to remove and re-add the world objects. Here's how I was first selecting a backpack on the player square using G, and then walking away pressing H to teleport it:

local currentItem = nil

function RC_RoomLogic.CustomKey(key)
    local player = getSpecificPlayer(0)

    if key == Keyboard.KEY_G then
        local sq = player:getCurrentSquare()
        local objects = sq:getWorldObjects()
        for i = 0, objects:size() - 1 do
            currentItem = objects:get(i)
            print("Selected:", currentItem:getItem():getFullType())
        end

    elseif key == Keyboard.KEY_H then
        if currentItem then
            local sq = player:getCurrentSquare()
            local item = currentItem:getItem()

            -- remove the existing world object
            currentItem:removeFromSquare()
            currentItem:removeFromWorld()

            -- re-add the inventory item at the new square (creates a new world object)
            sq:AddWorldInventoryItem(item, 0, 0, 0)
            currentItem = item:getWorldItem()

            -- some inventory refresh stuff because you never know
            triggerEvent("OnContainerUpdate")
            local pdata = getPlayerData(0)
            pdata.playerInventory:refreshBackpacks()
            pdata.lootInventory:refreshBackpacks()
        end
    end
end

This would teleport the visual object and the container object to the new square.
I would assume something very similar would work for bodies as well

thin swan
#

Yeah just tried, it works. Just use the dead body as the currentItem

#

@open drum Try the method I use in the code above, just replace the currentItem with deadbody

open drum
#

can u direct me to ur code?

thin swan
open drum
#

oh sorry, i ddint' see that, im dumb

thin swan
#

hahaha all good 😂

open drum
#

looks like it deletes the deadbody and make a new one in the new position

#

i wonder whether it would have the same ID or have diff. one

thin swan
#

I think same one, because you're only removing and re-adding the visual representation of the object, not the logical part of it

open drum
#

right? interesting

#

thank you Alex

#

finally can sleep peacefully

thin swan
#

Glad I could help! It was a headscratcher for me too, but with help from Albion and Doggy I found out how to do it

true nova
#

Only part I think i didn't try before is the refresh at the end. Thanks ill see how this works in my case

empty gate
#

Hello!
I want to create a mod for a visual fatigue effect. Can I dynamically change variables in screen.frag by accessing them through a separate Lua script?

true nova
willow tulip
#
local oldComplete = ISEatFoodAction.complete
function ISEatFoodAction:complete()
    self:BFcompleteEating()
    return oldComplete(self)
end
``` copy of my hook for eating
#

oh, also hook stop:

#
local oldServerStop = ISEatFoodAction.serverStop 
function ISEatFoodAction:serverStop()
    self:BFcompleteEating()
    oldServerStop(self)
end
regal umbra
#

Yeah but the question is what the context option "Take Pills" points to

#

I.e when you click Take Pills, is it considered ISEatFoodAction

willow tulip
#

Yea im saying, push comes to shove you can try making them regular food instead. Or maybe just hook the right click context menu generation and add your own take pills

regal umbra
#

Ig yeah

willow tulip
true nova
#

it does not duplicate it this way though' i think its a step forward compared to how i was doing it before

#

its about where i was last time really, im not wasting another weekend trying to make this work tired

queen oasis
#

I'm confused. I get comments like this all the time on a mod:
Yeah there was an typo or something in the mod.info file requirement \StarlitLibrary I changed it to StarlitLibrary and now I can activate the mod
My mod.info has require=\StarlitLibrary which I'm 99.9% sure is correct for 42. Am I missing something?

bronze yoke
#

i don't really get it, i've heard the same thing once or twice but it's simply not true

#

i wonder if nosteam changes it? i haven't had to use nosteam since b42 doesn't have multiplayer anyway

queen oasis
#

oooh, I never thought of that

bronze yoke
#

since the reason for the \ is technically that the workshop id is supposed to be on the other side of it

queen oasis
#

I don't have any desire to test it with -nosteam but at least I have a question I can ask them

empty gate
ancient grail
ancient grail
#

oh then idk

queen oasis
#

I'm hoping it's like albion pondered, that way I at least have an answer

true nova
halcyon cedar
#

So hey all, I’m new to project zomboid, I have tinkered with programming for years, I’ve had some luck modifying the lua files in the base game to get mod-like functions but I’m interested in packaging up thinks to distribute in future. What are some guides/resources/tips people can provide to this end?

broken briar
#

I wonder if it's possible to make a submod to Furry Apocalypse..

#

like make a reskin

#

I have this idea of adding the Rage infected

bright fog
#

Wdym a submod to Furry Apocalypse to add rage infected lol ?

#

What's the link between both here ?

#

Oooh reskin the furries into looking like rage infected ?

unreal pewter
#

Does anyone know where in the game's files traits are handled? I wanna add a trait to my mod that affects reading speed but I have no reference on how to do that so I'm looking for how the game does it

gleaming haven
#

jimbeam are u there?

queen oasis
gleaming haven
#

i have a question, i use this JB_MaxCapacityOverride.addContainer("TrailerTrunk", 600, false) JB_MaxCapacityOverride.addContainer("Bag_MedicalBag", 100, false) JB_MaxCapacityOverride.addContainer("Bag_Military", 100, false) JB_MaxCapacityOverride.addContainer("Cooler_Seafood", 100, false) JB_MaxCapacityOverride.addContainer("Mov_ClothesStand", 500, false) JB_MaxCapacityOverride.addContainer("Mov_GreenWallLocker", 500, false) JB_MaxCapacityOverride.addContainer("furniture_shelving_01_27", 500, false)

the first 4 seem to work but not the later 3?

queen oasis
#

the last three are moveables

gleaming haven
#

oh they wont work then?

queen oasis
#

like the last one, it's container is metal_shelves

#

the other two I would have to look at

gleaming haven
#

aahh is there a way i can look up what the containers are? 🙂

queen oasis
#

if you search for the tile definition in the game lua, it could turn up

gleaming haven
#

sure ill search the files thx 🙂

queen oasis
#

the last two probably use a generic type

#

Someone on poedgirl's Infinite Carryable Containers made a list of most/all container names

gleaming haven
#

thx found it

nocturne swift
#

hi, which client event is guaranteed to fire after the player is fully created and ready, so that I can safely send a client command to the server? I tried using OnGameStart, OnCreatePlayer, and OnPlayerUpdate, but they didn’t seem to work. The only one that fired was OnPlayerMove, but only when the player starts moving (b41)
I only needed it to fire once, so I unsubscribed right after it triggered

queen oasis
#

bro is gonna be there all day

bronze yoke
#
local commandsReady = false

local function onTick()
    if commandsReady then
        Events.OnTick.Remove(onTick)
        sendClientCommand(...)
    else
        commandsReady = true
    end
end

Events.OnTick.Add(onTick)
ancient grail
queen oasis
bronze yoke
#

distro is before mod data, and players much later

queen oasis
#

and this is where I leave it tonight. lots to fix but better than where I started

#

if I had known "TreeDamage" was only for HandWeapons, I would have done it all way different.

queen oasis
#

can I grab RenderEffectType from java so i can stuff it in to lua? I swear I've grabbed enums before.

public enum RenderEffectType {
    Hit_Tree_Shudder,
    Vegetation_Rustle,
    Hit_Door;
}
shy mantle
#

TIL you cannot put certain key words into vehicle zone names (even when combined with other words), or else they just don't work for whatever reason...

willow tulip
merry fjord
#

Is there anywhere we can set profession requirement for a recipe (B41)? I looked over the pz modding site, but I don't see anything that sets it.

The only close one I see is to learn the recipe when you're declaring the trait, or under CanPerform

I'm hoping to see the actual profession required under Craft helper

bronze yoke
#

that won't be possible

#

you can check profession in the CanPerform function or only give the recipe to that profession but there isn't any system to recognise that you are doing this

#

so it won't be possible for a tooltip or something to represent it, without hacking a custom ui element in or something

merry fjord
#

thanks albion, yeah i'm afraid so. I do see this
setFreeRecipes(List<String> freeRecipes) from Profession Factory but I haven't seen an implementation so I dont have reference haha

coral blade
#

Hey! sorry, been busy and haven't noticed I already released Project Zomboid Mod Updater/Downloader v1.1.5 for the game! zombie 👑
Update 1.1.5:

  • updated SteamCMD executable.
  • new feature - resuming downloads, now when there is a problem, the program can resume downloading missed mods.
  • code refactoring and adjustments.
  • fixed issue when you start fresh and program crashes.
    Instructions:
  • download and extract the archive preferably into your PZ installation folder.
  • if "mods" folder doesn't exist (weird...) in your PZ installation, do create it.
  • if C:\Users\yourusername\Zomboid\Mods folder doesn't exist, please run the game once just to create the settings environment.
  • run with PZModUpdater.exe
  • minimum screen resolution required 1600x900
    If you have any feedback/bug reports/good vibes, do tell and share...
    https://drive.google.com/file/d/1_yCDaG3yRhWBo6Vdz6LH6rz8PJCUjs4S/view?usp=sharing
ancient grail
coral blade
#

😉 thanks!

mint reef
#

Hi... my backpack is not loading(invisible) when in game but I have it weighted paint(full red), parent to bip, even rotated it .. also the texture is not appearing even when I have it in xml and texture folder

muted garnet
willow tulip
#

Anyone know where to look to render sprites with depth?

ancient grail
willow tulip
#

(textures)

muted garnet
ancient grail
#

you have to learn animations
its not something that can be explained really
learn blender iguess

#

i use fragmotion for animation
and blender for modelling
tho using fragmo is frowned upon
so its not really recommended

muted garnet
#

Thanks, I’ll give it a try.

agile socket
#

Are images required for adding an item for a mod to function? I keep getting CTDs. I've added Grits, Pot of Grits (Uncooked), Pot of Grits (Cooked), Bowl of Grits (Uncooked), and Bowl of Grits (Cooked). It was pretty much a copy and paste of Stew/Soup to get working, so it feels like it should work even without an image.

#

Or wait, did I not need to make different items for Cooked and not cooked?

#

Nevermind, I figured it out.

true nova
willow tulip
#

Particles that don't just draw overtop everything

#

so, geometry depth

willow tulip
#

(they are flat but actually do clip behind players and such that walk in front of them)

true nova
willow tulip
#

Rendering a model would also be acceptable if I could do it without like creating a whole inventory item per model rendered..

true nova
#

would need an item per different model but if its all the same model i think you can use one item over and over

willow tulip
#

Hu its LUA side too

#

Hu, CleanUI uses it

#

Oh, I think its being used for the 'place item' codepath

bright fog
#

And see the Animation wiki page

muted garnet
bright fog
#

The less you use fragmotion, the better it'll be, trust me

#

Glytcher is one of the extremely rare cases where he uses this absolutely dogshit software

#

DirectX is NOT up to date, it's old and there's a reason barely any software support it by default, bcs the whole industry moved to fbx

#

At the very least

#

There's literally rigs that were made specifically for pz animating

willow tulip
muted garnet
#

Yes, I tried to use ZomboidAssetConverter to import a vanilla animation, but I couldn’t figure out how to properly export it back. Could you please tell me exactly what needs to be done to export a modified animation?

muted garnet
willow tulip
#

Dunno, I don't do animations

willow tulip
#

Anddd technically these smoke effects where for a java mod.. anywayy.

#

Ah renderTextureWithDepth...

bright fog
#

But it's quite an old ass format

forest herald
#

I posted this in bug reports but now I’m unsure if I did it in the right place

https://theindiestone.com/forums/index.php?/topic/86461-42110-rev30715-combo-box-tooltip-in-modoptionslua

Is there somewhere specific to post mod dev related issues?

queen oasis
#

I've given up on RenderEffectType because I'm a quitter. But, I can saw trees like a boss now.

bright fog
#

In this case, you're sawing the tree with a fixed time no ?

bright fog
queen oasis
#

it's doing tree damage like an axe

bright fog
bright fog
queen oasis
bright fog
queen oasis
#

no. Just. For. Me. 🙂

queen oasis
#

before I get crazy(er) with this code, is there a way to put the outputs from a craft recipe on the 'floor' that I might not be finding?

#

I can't find a good way to do that. it looks like ISHandCraftActions calls Actions.addOrDropItem to put the outputs in player inventory

hollow sage
#

Is there a way to get radios and TV to play endlessly, maybe loop back to the beginning or at a certain point

#

That way they never turn off

forest herald
shy mantle
#

You guys know what he means right? drunk

Least dramatic reddit crash out lol

#

This should be a copypasta actually

bronze yoke
#

these gatekeeprs that run the company

queen oasis
#

ok, so I don't think player:Move(Vector) and MoveUnmodded is what I wanted. Trying to nudge the player a few pixels forward before starting an action

#

Move looks like the player jumps to the location

#

say the "c" word one time and the DM's don't stop

shy mantle
#

Do you think it's possible to teleport the player up 1 level to stand on an invisible floating tile if they walk onto a tile occupied by a vehicle?

#

I know when you press F2 and move your curser around a vehicle, it doesn't detect the vehicle until it is the center tile, so I think there's some potential there (it would be janky but cool)

bronze yoke
#

sure

#

it won't look like they're standing on the car if that's what you want though

bronze yoke
#

they'll be way too high up

shy mantle
#

How do stairs work?

#

Like, their height

bronze yoke
#

in a hardcoded manner 😅

shy mantle
#

Shit yeah of course

bronze yoke
#

i'm not 100% but i don't think there's much potential for custom height levels

shy mantle
#

Another sad day

#

Maybe if it was just for truck mods?

bronze yoke
#

yeah could look okay

shy mantle
#

I just don't know how the player would reach the tile the car takes up if it's in the middle...

#

It works fine when falling on a car because it just pushes you out, but getting to that tile is impossible without no clipping

#

Maybe if it was in the radial menu and it just straight up teleports you

#

This is basically just the RV mod but for roofs lol

open drum
#

is it just me or

#

right clicking the Trees don't function as the way they suppose to?

#

like... simple right click over trees don't take you to isoTree class

#

they are just considered as isoObject

#

until you press the Cut Trees context menu with an Axe

ancient grail
ancient grail
willow tulip
willow tulip
open drum
#

before 42.11

#

when u right click .. worldcontextmenu event passed

#

worldobject of a tree as isoTree class

#

but now it passes as isobject

#

thus causing error to some of the mods

#

not sure if this is a bug or indiestone decided to change the way tree class works

#

i wanted to make sure so i can adapt my mod to it

#

if it's a bug then i can just wait till the next patch

#

if it's intended then ill have to fix the code

willow tulip
#

Yea im not sure exactly how java/lua classes/derived classes all work out when accessed via LUA since LUA doesn't entirely have that concept?

#

whats IsoObjectType getType() return?

#

though even if it is still technically a tree, Id have no clue how you'd go from java passing you an isoObject to getting the isoTree part again...

willow tulip
open drum
#

getType() causes error too

willow tulip
#

lol

open drum
#

bringing up Nil

#

xD

willow tulip
#

they.. broke.. getType?!?

open drum
#

seems like it...

willow tulip
#

Does IsoObject just return nil on getType()?

open drum
#

yeap

willow tulip
#

like, they managed to pass you the IsoObject instead of.. the actual tree object

#

yeaaa...

open drum
#

unless i messed something up

willow tulip
#

I can only assume that when you pass the baseclass in java to LUA, LUA has no clue about the derived interface.. or ability to access it.

open drum
willow tulip
#

Unless they added like a 'GetAsType' sorta function to IsoObject that I can't find.

open drum
#

i guess its more like

#

tree object is not getting passed to worldobject parameter

#

but when after i press the "cut tree" with axe

#

it shows up correctly

willow tulip
#

Ermm, what controls 'cut tree'?

#

Id go see what its doing now..

open drum
#

having any item that has "axe" tag in ur inventory i think

willow tulip
#

no I mean, look at the code the cut-tree context menu calls and how'd it get a tree instance

open drum
#

ah

#

but isn't it weird that worldobject parameters

#

the worldobject table

willow tulip
#

Or how the menu that even creates the cut-tree context menu knows a tree exists. (since its axe in inventory AND right clicking on a tree)

open drum
#

don't have tree in it?

#

look at that, it only contains 1 obj.

willow tulip
#

Maybe they moved trees somewhere else because theres so damn many of them and they do so little processing?

open drum
#

which is the grass layer

#

hmmm

#

yea so that's what i want to make sure

willow tulip
#

Again, Id look into how 'cut tree' context menu knows a tree is on the tile your right clicking

open drum
#

whether this is inteded

#

or just a bug

#

XD

#

yea, i guess ill take a look

willow tulip
#

clearly it can figure out a tree exists, because it doesn't show up from just clicking grass

#

And generally the context stuff is LUA unless they put in some nasty java patch for that explicit thing 😛

willow tulip
#

Now I just fix them myself and release mods

copper cove
#

anyone know a working json methode to use for a B41 mod? rxi-json doesnt work

bright fog
#

I believe @red tiger had something for that ?

copper cove
#

json.encode doesnt work

#

function: encode_table -- file: rxi-json.lua line # 68
function: encode -- file: rxi-json.lua line # 135

Exception thrown java.lang.RuntimeException: Object tried to call nil in encode_table at KahluaUtil.fail line:82.

#
    local tbl = {
      animals = { "dog", "cat", "aardvark" },
      instruments = { "violin", "trombone", "theremin" }
    }
    local encoded = json.encode(tbl)
shy mantle
#

last last updated sept 2022, ok understandable lol

bright fog
#

Do you mean as a framework for other modders to use ?

queen oasis
#

also, the cut tree menu calls ISChopTreeCursor which in turn calls ISWorldObjectContextMenu.doChopTree, which then calls ISChopTreeAction

bright fog
#

Some stuff just can't be made into frameworks

#

Sometimes at best templates

lofty frigate
small topaz
#

In B42, is there any way of printing the content of an item? Something like print("Item: ", item) even when item is a hash value or nil? That used to work in B41 but I have problems with it in B42. DebugLog.log does not work either for me.

bronze yoke
#

that should work

#

there is currently a bug where everything before the first : in a print is dropped

#

so that may be confusing you

small topaz
#

what is the first : ??

willow tulip
#

item: <- that part

small topaz
#

so it is the double dot ":" within the string???

willow tulip
#

print("Item : hello : foo") echos Item : hello : foo to the console and hello : foo to the console.txt log

#

yes

#

DebugLog.log prints just to the console.txt log, (that is also echoed to the ingame console because reasons)

#

if nothing is displaying, chances are your code isn't executing.

small topaz
#

The code runs fine. It is related to this weird ":" bug.

queen oasis
#

overriding craftRecipe inputs is the same as outputs. I figured but you know, PZ...

local scriptManager = getScriptManager()

local function overrideDrillPlankInputs()
    local originalRecipe = scriptManager:getCraftRecipe("Base.DrillPlank")
    local overrideRecipe = scriptManager:getCraftRecipe("JB_Big_Wood.JBDrillPlank")
    if not originalRecipe or not overrideRecipe then return end

    local originalInputs = originalRecipe:getInputs()
    local overrideInputs = overrideRecipe:getInputs()
    if not originalInputs or not overrideInputs then return end

    originalInputs:clear()

    for i = 0, overrideInputs:size() - 1 do
        originalInputs:add(overrideInputs:get(i))
    end
end

overrideDrillPlankInputs()
#

I'll still keep checking for ways to just get the recipe out of the craft recipe list

warm moon
#

It sadly turns out there is no easy way to fix the butcher animal size

If the devs use modData["originalSize"], it is wrong, since this does not exist for ground corpse.
If the devs use getData().getSize(), it is wrong for hook corpse
If the devs use getData().getOriginalSize(), it is wrong for ground corpse

.... and modData["animalSize"] is ALWAYS wrong RSad

#

i.e. we can’t make a bug report and point to a specific bug, the whole architecture (or rather data structure) needs a rework

bright fog
warm moon
#

That is what happens if someone says go here to talk about it :D the context was in the other chat. Basically I looked at the animal size used for the meat quantity etc. in butchering

#

In the vanilla code

bright fog
#

What butcher animal size bug are you talking about ?

bright fog
warm moon
#

yeah

bright fog
#

I used the butchering debug to butcher the first sheep on the ground, and due to the debug keeping the sheep I then hooked it and butchered it a second time from there

warm moon
#

It is not my testing

bright fog
#

Did you test it out again ?

warm moon
#

I read the code

bright fog
warm moon
#

True, the bug report is still correct sadly

bright fog
#

Does the carcass lose size when butchering ?

warm moon
#

I hope the devs can use that info

dapper pier
#

hi

#

Can someone help me? I'm creating a food mod. It seems easy. I did everything, the items, the distributions, but the mod doesn't appear in the list of mods for me to choose from. Can any professional or someone who knows what's going on help me? Please send me a DM.

silent zealot
#

More specific: If your mod does not show then it's an issue with the folder structure and/or mod.info so check the pinned messages especially "mod structure"

#

Unless you've done something rather exotic to create a different problem, but that is very unlikely.

dapper pier
silent zealot
#

that comment is pinned in this channel because it answers a lot of questions.

dapper pier
#

fuck can't anyone help me?

silent zealot
#

We did?

raven timber
#

Has anyone made a AIO menu? Making one now, will be adding some QOL options to it. The usual admin options, and various other things.

dapper pier
silent zealot
#

What have you done to validate your mod structure and mod.info since being told they were the likely causes and given links to information on these things?

dapper pier
#

can i show the mod info

silent zealot
#

No.

#

Because that suggests you have not put any effort in yourself, and if this is not worth your time I'm not going to spend my time on it.

dapper pier
#

Bro, I've been trying to make this work for 2 weeks

silent zealot
#

But you can't spend a few minutes to investigate now you've been given specific things to look at?

dapper pier
#

and you couldn't be a good girl and help someone with the knowledge you have

#

?

silent zealot
#

Remember we're not paid support here, it's a bunch of modders hanging out and happy to point people in the right direction but not on standby to do the work

dapper pier
#

damn brother, you are rotten and colorful, improve yourself, or life will punish you

#

thanks

silent zealot
#

If you are not willing to put some basic effort in to work with the help you've been given why would you expect other people to help you?

queen oasis
#

ain't having none of it tonight

silent zealot
#

good girl

damn brother

I'm not genderfluid enough to switch genders in a minute. 😂

shy mantle
#

Guys... how does the void appear again? I definitely did something wrong lol

true nova
#

youre making it so player can walk on top of vehicles? should just need +1 to player Z level and do getOrCreateSquare() . set square isSolidFloor(true) before moving player.

shy mantle
#

Now it's even weirder because I'm not deleting anything...

#

Now, I do have to mention that I have to go 2 floors up (I know, weird) because some vehicles are a little taller

true nova
#

iirc vision is weird when doing this

shy mantle
#

I still see the black tile when exiting the vehicle

#

non-clickable void

#

I'm literally leaving a trail of void every time I move and go up again ha

#

It has to be something else... surely

true nova
#

Idk i've done this and not made void before, i only ever got void when i deleted floors

bright fog
# dapper pier damn brother, you are rotten and colorful, improve yourself, or life will punish...

What an horrible person you are
You are not welcome here if that's the attitude you have
The pinned message we sent you has all the main major guides to getting your mod recognized again:
https://pzwiki.net/wiki/Mod_structure
And you didn't take a single minute to read this page which has every informations nor have you even given us a single information to actually help you

And like Stalker said, we're not paid to help you and if you're such a little bitch about it you can kindle fuck off from here

bright fog
drifting ore
#

Please fix it for me oh please please please NO? THEN FUCK YOU

warm moon
# dapper pier can i show the mod info

Since you say you basically done the whole mod already you probably worked off the wiki before, maybe send your mod info and if there’s a mistake maybe someone will see it or you see it yourself while copying it

tall lotus
#

Hey all! I tried to find a way to debug the current player mod data in-game but I couldn't find how.
IS there any way to see it in-game? (using debug)

silent zealot
silent zealot
tall lotus
silent zealot
#

And of course it's a lua table so you use the lua console to look at specific stuff, or dump the entire thing if you want

#

B41 or B42? A lot of the debug tools are new in B42 but I forget which ones.

tall lotus
#

b42

tall lotus
silent zealot
#

I stick in in a variable: x=getPlayer:getModData()

#

just to make it easier

#

for k,v in pairs(x) do print(string.format("%s = %s",k,tostring(v))) end

then you can drill down into more specific tables inside x

#

Is hate a valid motivation for making a mod? I'm so sick of seeing this shotgun axe show up on Reddit with a post about how amazing it would be.

#

So I'm thinking of making a mod for it, having it utterly obliterate whatever zombie it hits... then you need to reload, then you have to deal with all the noise you caused...

tall lotus
#

Does anyone know why the text fields are so close to each other? I tried to add a separator, but didn't work

silent zealot
#

Is that a custom UI, or the default mod info display?

#

Wait, it's not the screen I thought it was.. but still, is that a custom UI screen or one of the default ones misbehaving?

tall lotus
#

That's the default Mod Options UI

#

But I applied an empty description between them, now they have space hehe

shy mantle
silent zealot
#

Better yet, eating burnt food makes you explode.

regal umbra
silent zealot
#

Hahaha

shy mantle
#

Pipe bomb type, of course

shy mantle
#

I fixed it, been dealing with black out because I'm technically inside the vehicle now lol

#

It only happens at certain angles as well...

blazing yacht
shy mantle
#

I'm gonna go back and see if all the patches I did make it compatible with the tile version of this so I can place lawn chairs on top lol

(it did not work)

gleaming haven
main pasture
#

Is it just me, or is the OnMechanicActionDone event never triggered? (B42)

lofty frigate
lofty frigate
#

Well, now that I think about it, you can’t place sprites on those floors, only 3D objects.

drifting ore
frozen venture
#

Hey probably a dumb question but i want to add a soap item to the "soaplist" mentioned in the "ProjectZomboid\media\lua\shared\TimedActions\ISBaseTimedAction" What would be the best way to do that and where can i find the Soap list?

left valley
#

Hi guys, I'm new to modding, I tried to create an idle animation, I read the wiki and use Mystery Rig to create it, but I have a bug with my legs. When I move jerkily, my legs behave strangely, does anyone know how to fix this or what is the reason for this?

regal umbra
queen oasis
#

you did way better than I managed

#

anyway, I think it's perfect

regal umbra
#

It's

#

it totally should be included as an easter egg or something

#

lmfao

queen oasis
#

irish river dance

queen oasis
#

I've watched it like 10 times now and it's still awesome

regal umbra
#

Bro managed to make the character skedaddle, it's just that great

regal umbra
#

They deal with the models and animations

left valley
#

hahaha the idle animation itself works fine)) but when you spam the movement, this hell happens)) and idk how to fix this and why this happen

true nova
karmic cobalt
#

Hey guys! I'm working on a custom zombie mod, and I want to make it extremely tough. I know tough zombies have 300 HP, so is there a way to have a zombie have 3000 HP or even more? Is there a limit?

I know The Last of Us zombies use an Armor code, but that's not what I'm looking for. I just want it ti have a lot of HP.

shy mantle
#

Didn't capture audio, but that doesn't really matter

#

You can't walk off the edge accidentally until you do a shove, that allows you to jump off freely, otherwise you cannot fall off.

#

I feel like I should put that in showcase, but I think things get lost in there

left valley
bright fog
#

Also maybe make sure the player can't build there no lol ?

shy mantle
#

Nah they can't

#

They could only do it when I was using tiles, but since it's just for the collision it hasn't worked like that

#

The final issue is making sure all these invisible collisions are getting deleted, it's not that big of a deal, but I wanna clean it up

true nova
shy mantle
#

THEY CAN PATH FIND UP HERE I GUESS

#

bro's tryna catch a ride

tranquil kindle
#

How does that even work? Does it create invisible tiles above vehicle? What if you turn it straight to the top of screen and not sideways?

distant solstice
#

Could anyone please help me find a mod that adds mines which work in online multiplayer against other players?

shy mantle
willow tulip
shy mantle
#

And yes, even with it turn sideways/diagonal, the invisible wall your run into on the sides of the top of the vehicle are not jagged.

shy mantle
#

It's only good for KI5's military, school, and prison buses so far, but I'd just need to adjust some numbers to fit on other vehicles. Now I could make it into little sub mods... oooooooor I'd just shove it into my already misc car mod for general things like spawn rate, spawn zones, flipping vehicles, corpses in cars, etc. It'd be a good addition!

#

I should probably do it for vanilla cars, but they're so short it might look weird without custom heights

snow hatch
neat bronze
#

How can I add a property to an item definition? Example adding "AnimalFeedType = rock" to stone so my chickens can eat rocks

burnt quartz
shy mantle
#

That's why I only started with the buses, they have the emergency exit hatches

shy mantle
#

Actually, I don't know how much harder since I hadn't tried, but I will soon

icy night
#

Basically does what Custom Consumption did but with tons of the new items, and many broken items removed

bright fog
pearl prism
shy mantle
#

It would be cool, but as of right now I can't figure out a way to delete it if the car is moved away in all circumstances

#

I'm sure there is A way, but that's not really my focus right now

pearl prism
shy mantle
pearl prism
#

I can't wait for you to publish this; I really want to read the codes.

pearl prism
shy mantle
#

I'll try to do it again after I finish this first vanilla car

distant solstice
#

Yo!
I need a mod for explosive traps like mines: you place them — and if a zombie or player steps on it, boom 💥!
We’ll sort out the payment details later.

tight elm
distant solstice
warm moon
#

pipe bomb neither? or specifically the bombs with motion sensor (I never played multiplayer)

distant solstice
#

All of them are non-functional

bright fog
tribal garden
#

are you a pz modder? can i pitch my mod idea for you snd youll write it if you find it interesting enough? its quite simple

distant solstice
cinder storm
#

if anyone has the time, could this b41 item stats be converted to b42's current system? mainly as a reference for myself to go off of.

item MethPipe { DisplayName = Pipe With Crystal Meth, DisplayCategory = Drugs, Type = Food, Weight = 0.3, Icon = DrugPipe, Packaged = FALSE, BoredomChange = -50, UnhappyChange = -80, StressChange = -60, HungerChange = -50, FatigueChange = -300, RequireInHandOrInventory = Lighter/Matches, ReplaceOnUse = DrugPipe, CustomContextMenu = Smoke, CustomEatSound = LighUpMeth, WorldStaticModel = DrugPipe, Tooltip = Tooltip_MethPipe, }

cinder storm
#

ive been looking at that after i did not get an answer

#

thankies

regal umbra
cinder storm
#

i noticed comparing it between one of my working b42 mods and the unconverted mod files

#

im not publishing this project until i get the permission from the original creator

#

or otherwise until i get greenlit by the pz steam staff

regal umbra
#

Fair

cinder storm
#

primarily the swtich from recipe to craftrecipe

#

which is confusing to some but i find it pretty easy to use

cinder storm
#

i set the placeholder model to be a cigarette; but its clipping through the group like this. what should i do to fix it?

supple briar
#

how would you go about overwriting certain base game text? I want to change the dates on newspapers and certain radio broadcasts and vhs tapes.

silent zealot
#

Newpapers/magazines use an OnCreate function

#

Track that down and you can change it... and theres' probably extra hassle to make the newpaper display the correct image when you read it

silent zealot
bright fog
#

Override it

silent zealot
#

it's more complicated than that:

bright fog
#

Just override the translation key

#

That's it

bronze yoke
#

it's just a bunch of getTexts appended at the end of the day