#mod_development

1 messages ยท Page 376 of 1

bright fog
#

Remember that these tools are made for people that don't know jackshit about modding too

#

And a lot of them don't even know how to code

#

Idk I haven't looked into that and I don't give a shit about it lol, just the app needs to work with just VSCode

#

Which is definitely doable based on what I have already done

#

The git thing is a bit weird, like for example an extension we used for modding that depends on it is LuaLs

#

Which was previously used for Umbrella

#

It needed you to also install git to install Umbrella

#

I'm personally not a fan, the simpler we make the installation process, the better imo

paper ibex
#

anything is fine for me

#

your work stays within the limits

#

back to the pz-translation-data, can it be /schemas/translation_files.json -> /.schemas/generic/translation_files.json
/.schemas/prefix/Attributes.schema.json ?

#

will the pz-translation-data/data/ be remove in the future?

bright fog
#

The goal is to provide data which can be used in general by any soft or any tools made by anyone

#

They simply import the latest data, and do whatever they want with it

#

So it's best to keep it in a usable format, then transform it into the schemas

bright fog
#

Maybe simply put those in formatted/Attributes.schema.json or some shit like that

paper ibex
#

formatted/Attributes.schema.json

bright fog
#

๐Ÿ‘Œ

pastel wolf
#

oooookay, so I updated my mod's translation file to the standard format but now my game is crashing on loading the translations

#

ahh nevermind troubleshot

#

had a doubled up translation

silent zealot
#

JSON doesn't like duplicate keys. Which is a perfect fit for tranlation files, since I'm sure I'm not the only person who has created duplicate entries and then wondered why things did not update when I changed one of them.

bronze yoke
#

if your editor supports json it should warn you about this long before you get in-game

rich reef
#

I am trying this, but it does not seem to save the state from the modData for that item when I leave the area and return. Ideas?

#

I have modData flag that 'Activates' an item, and it gets reset upon returning to the area.

silent zealot
#

Just to check something obvious: you're on 42.15.2 and not 42.15.1?

#

They just fixed some moddata transmit issues.

bronze yoke
#

they fixed the issue with global mod data, nothing to do with this at all

#

everyone saying 'mod data is broken' was making a big panic out of nothing, it was a very specific flaw that didn't affect the majority of mods

rich reef
#

If you are replying to me, I am referring to B41 modData for worldObjects.

bright fog
#

The amount of duplicated keys in the vanilla files

#

I bet you can't even closely estimate how many there were lmao

silent zealot
bright fog
#

Yea idfk but I wouldn't be surprised ๐Ÿ˜ญ

#

What we all cope for is that they are testing json for translations to finally move to json for scripts lmao

bronze yoke
#

let's be realistic here

bright fog
silent zealot
#

Monkey's paw curls they will move each script type to JSON one by one, breaking every mod with each update until they are all done.

bright fog
#

I wanted to do that with the translation files but there's already so many scripts that do it that I didn't bother doing it

#

Also them moving their own scripts to json will be extremely easy

#

Bcs they already automatically generate those

silent zealot
#

This hotfix changed more than the patch notes suggest... my ignore-container-capacity mod stopped working. I wonder what they snuck in.

bright fog
#

oof

paper ibex
#

json to the web game version of pz lol (hallucination)

fleet bridge
rich reef
# fleet bridge what are you trying to do, precisely?

I have a world item, like a workbench that needs to be 'enabled/activated' before usage. I've got recipes for it, that check this and works fine. But when I use a context menu to toggle it on/off, the modData for the worldObject it uses does not save that data when I leave/re-enter the cell, and I'm assuming other players don't see the changes either, but haven't tested that yet.

#

I can sort of trick this into working, but also altering the InventoryItem modData for the item, and then checking against that for the context menu options, but it's not ideal, and I assume would be error prone trying to sync different modData for different states Item vs worldObject

fleet bridge
#

are you using object:transmitModData()?

#

its a world object?

silent zealot
#

They fixed ModData by adding some BBWs.

#

And good old "one single bit was backwards" issues.

rich reef
#

Here is the basic code I have for it. The context menu and all of that works fine, the recipes work as they are supposed to. Just the modData for the item doesn't save between exit/re-entry of the area.

local function Activate(player, object)

    local modData = object:getModData()

    modData.Activated = true
    object:transmitModData()
end

local function DeActivate(player, object)

    local modData = object:getModData()

    modData.Activated = false
    object:transmitModData()
end

local function CustomContext(player, context, worldObjects, test)

    local objects = worldObjects[1] and worldObjects[1]:getSquare():getObjects()
    for i = 0, objects:size()-1 do

    local object = objects:get(i)
        if instanceof(object, "IsoWorldInventoryObject") and object:getItem():getType() == "CustomWorkbench" then

            local modData = object:getModData()

            -- Admin Activate/Deactivate
            if isAltKeyDown() then
                if modData.Activated == nil then
                    local activate = context:addOptionOnTop("(ADMIN) Activate", nil, Activate, object)
                elseif not modData.Activated then
                    local activate = context:addOptionOnTop("(ADMIN) Activate", nil, Activate, object)
                elseif modData.Activated then
                    local deactivate = context:addOptionOnTop("(ADMIN) De-Activate", nil, DeActivate, object)
                end
            end

            if modData.Activated then
                local activated = context:addOptionOnTop("Activated", nil, nil)
                activated.notAvailable = false
            else
                local activated = context:addOptionOnTop("Deactivated", nil, nil)
                activated.notAvailable = true
            end
        end
    end
end

#

As far as I can tell, this is correct? But it does not save the modData like it's supposed to. It's ran Client side for the context menu and general functionality.

pastel wolf
#

I've mostly been using a mix of notepad and notepad++ but i really should just be doing everything in notepad++ I feel

bright fog
pastel wolf
#

Notepad++ Works fine for me

bright fog
#

Trust us who have experience in helping people and modding, you can't understand what VSCode brings you with Umbrella until you have actually tested it

#

And dear god I need to make that video about typings to showcase all of that to new modders

willow tulip
#

And server side modData is not automatically synced to client

pastel wolf
#

Yeah I think I'll stick with notepad++ for now

willow tulip
#

To properly change modData in MP, you need to send a packet/command to the server, ask it to change its modData, then have it send the modData (technically marking it for sending) back to all clients

rich reef
willow tulip
#

I believe you always need to send objectID's over, not 100% sure though.

rich reef
#

Do you know the command to retreive that off hand?

bright fog
#

If you are not convinced by me, be convinced by others

shy mantle
#

Do it

bright fog
#

Trust the community, and if you have a problem with Microsoft, use Codium, it's the same app but not Microsoft handled

#

Even when it comes to just making items for your mod you have no excuses anymore thanks to ZedScripts

#

Everyone's experience with it is that you just don't realize what you are missing until you actually use it

bronze yoke
#

we use the tools that make modding the easiest

silent zealot
#

Notepad++ -> VS Code is a massive upgrade.

pastel wolf
#

And I'm sure it's really good, I'll probably start using something like that for the next mod I start up to make things quicker and easier

silent zealot
#

100% less time dealing with lua syntax errors killing everything

pastel wolf
#

I mean I used visual studio in college a bit

#

I just didn't touch it because I assumed you'd need a license or something

silent zealot
#

Doesn't fix my logic issues, but at least the syntax loads!

#

VS Code is a free "simple" IDE. Visual Studio Community is also free and great for .Net stuff, but not helpful here.

pastel wolf
#

Well hey that's helpful, I've spent a while just retyping the code for all my stuff, and with a bigger mod like the one I'm working on now any time savers help a bunch

bright fog
silent zealot
#

VS Code + Umbrella plugin is great. Umbrella gives it awareness of most zomboid functions/api calls, it lags a bit with the rate things change in unstable but still very helpful.

#

And ZedScripts for script files.

bright fog
#

That's a whole different thing

silent zealot
#

To be fair, it's terrible branding by MS.

bright fog
#

Yeaaa

silent zealot
#

Like Java and Javascript.

bronze yoke
#

i think that's why it's usually called vscode

nimble badger
#

Does anyone know how to fix nullpointerexception: itemvisual:getholezombie()?

I have an item script with a wearable piece of clothing and somewhere along the line messed up... either on the txt or on the xml

mellow frigate
paper ibex
#

why compare java vs javascript lmao

#

visual studio and vscode same from MS but java vs js

silent zealot
#

I'm old enough to remember this:

#

Before there were 137 slightly different flavours of java that are mostly but not fully compatible.

paper ibex
#

just here for the memes

pastel wolf
#

Items that were working perfectly yesterday are now throwing errors

silent zealot
#

What sort of errors?

pastel wolf
#

well one I solved was a layering error, a turtleneck hid the neck slot which was were I was attachin the gasmask to, so when not wearing that its fine

#

the other isss

#

one second

#

I'm still not the best at parsing this screen

#

but when attempting to wear the right kneepad I made this came up

silent zealot
#

newVisual is nil

pastel wolf
#

it looks like it must be the clothingextraaction?

silent zealot
#

is the paramater an item or a visual?

pastel wolf
#

Its an item, a clothing item, just the right kneepad to match the left one

#

Left is fine, right breaks with that error

silent zealot
#

Compare them and find out what differences there are, including verifying the model/texture files

pastel wolf
#

gotcha

silent zealot
#

could be something really minor like a misnamed texture or badly placed comma on one... but you have a good target to compare to!

pastel wolf
#

true

#

aha!

#

somehow I managed to lose the entry in the fileguid table

#

must have accidentally cut and not copied

silent zealot
#

I hate the @#$%#@$% fileguid thing.

#

If the game needs to reference guids for performance then generate a hash table on game start, don't make us do it all by hand!

pastel wolf
#

yeah its kind of odd

#

but hey thanks a ton!

silent zealot
#

No probs!

pastel wolf
#

now I need to figure out how toooo make my flashlight turn from its weapon version to its flashlight version with aaaaa submenu

silent zealot
#

right click Context menu?

pastel wolf
#

yeah! I just have never done it before

silent zealot
#

the good news is it's pretty easy

#

the annoying news is if you want to look at the logic for existingg stuff it's all in java now. But that's cool, you just want "if right click on my item add this menu" right?

pastel wolf
#

Yeah just a simple thing to toggle between the two versions, since both work independantly

silent zealot
#

From my notes:

local doDIYContextMenu = function(playerNum, context, items)
    print("##### doDIYContextMenu()")
    local primaryItem = items[1]
    if not instanceof(primaryItem, "InventoryItem") then
        primaryItem = primaryItem.items[1]
    end

    if primaryItem:hasTag("DIYSchematic") then
        print("##### It's a DIY Scematic")
        local playerObj = getSpecificPlayer(playerNum)
        readOption = context:addOption(getText("ContextMenu_ReadDIY"), items, DIYonLiteratureItems, playerObj);
    end
end

Events.OnFillInventoryObjectContextMenu.Add(doDIYContextMenu)
#

basically you add to the OnFillInventoryObjectContextMenu event, check if the item is one you care about, and use context:addOption to add something extra to the bottom of the context menu (or similar functions if you want to get fancy)

#

that then calls the function (DIYonLiteratureItems in this example)

pastel wolf
#

Okay! I Kind of vaguely follow ya here

#

I will.... return to this when I understand a bit more lmao

#

in the meantime I'll just get the last of the clothing items made and implement the weapons

hot void
#

is spongy alive?

#

how can i make my mod work with your customization mod people are complaining tattoos are going under skin?

winter bolt
#

it should work fine if mine is loaded after yours

hot void
#

ill test and see

#

ty<3

rich reef
#

How can I get the Object ID of a IsoWorldInventoryObject?

willow tulip
#

getId() (And sometimes, getID()) however are things on most classes

#

but IIRC there are few 'get by id' functions.

#

Id consider looking at how vanilla references a world object in a right click action that is sent to server (the debug actions in particular often use sendClientCommand)

#

TimedActions use a different serialization system and actually can send a few different object types automatically

rich reef
#

So should I just send the grid square coordinates and then re-check that square for the same item/type and do it that way? Seems clunky.

willow tulip
#

Yea, you might be able to check it for the same getId() or same 'index' into the objects on that tile(?)

#

but I don't think you can just.. get world objects by Id

rich reef
#

Hmm. Do you know if the index in the array is consistent/ordered? getId(), and getID() don't seem to work for IsoWorldInventoryObject at least.

willow tulip
#

I could be wrong, its just what I remember reading here (And finding when trying to send other types of objects via command)

rich reef
#

As far as I remember, the args table can only be standard types, and not objects, so I'd need an ID or a coordinate or someth ing.

willow tulip
#

Yea

hot void
#

did they change timed actions again ?

rich reef
#

I won't have more than one of this item even near others, so I can probably just scan through the worldObject list and hope for the best I suppose that it finds the right item.

willow tulip
#

I mean, the world cords kinda limit it to only that item on that tile

#

oh, isoWorldInventoryObjects, you could get use getItem() on them and getId() on that?

rich reef
#

Yeah, thats true. The context menu pulls from that specific square, so I guess I can do reverse grab the square from it's coordinates and just send that, and then redo all that logic again later.

willow tulip
#

I think the nth item on the tile would be consistent though?

rich reef
#

If the item and it's ID is consistent with the object when it becomes placed/worldObject, then I suppose that would work, yeah.

willow tulip
#

Yea, give it a shot and relog

rich reef
#

Yeah, I'll check real quick and let you know. Thanks for the idea!

willow tulip
#

np

rich reef
#

It seems the itemID changes on restart, but stays the same during the current session. And that carries over well, so I can probably use that for this. Thanks for the suggestion!

Now, I'm trying to send a table within a table in the args of sendClientCommand, and its returning nil, so I got to figure that out now. assigning modData table to a table to send isn't working.

willow tulip
#

Hu, I thought for sure tables in tables worked

rich reef
#

I thought so too, unless I'm doing it wrong.

willow tulip
#

are you sure its a proper table and not some kinda java object?

rich reef
#

I thought modData using getModData() returned a reference to a table?

#

I can print() the variable and it shows the table ID correctly

willow tulip
#

try hardcoding a table in there and see if it sends?

rich reef
#

If I send all the tabel contents as individual items it works, but nested table doesn't I guess.

#

I guess I'll have to validate what comes through instead of expecting all of the modData every time.

hot void
#

everything works but it just keeps gen erros when doing timed action

rich reef
#

This is likely during the perform method of the timed action, because it's constantly ticking.

hot void
#

the transaltion tool somewhat isnt working

#

any ideas ?

rich reef
#

I'm still working with B41 stuff, so I'm not keen on that info, sorry.

rich reef
hot void
#

nvm i found why its complaining about that it has to face the player when adding something

rich reef
hot void
#

on b41? right not b42?

rich reef
#

Yes, B41. Not sure if B42 changed, but it should be the same, sending extra arguments and assigning them. Such as forceFacing = true, and then in the :new constructor assigning that and using it to adjust whether you want it to face the object or not.

willow tulip
rich reef
#

Ahh bummer. I guess it's back to using the coordinates and at least confirming the itemID afterwards.

hot void
#

-- self.character:faceThisObject(self.target) -- this should make the artist face the person they are working on
-- self.character:faceThisObject(self.target); -- face target

rich reef
#

I'm not sure if target is an player object, or a playerID. But make sure it exists before trying to face it, otherwise don't do that action.

hot void
#

just commenting them does the trick at the cost of player exp

polar prairie
#

vss vintorez

polar prairie
hot void
polar prairie
dull moss
#

looks fine to me

#

is scope properly ratio'ed to the gun?

#

i know that soviet scope is not the smallest one

#

but still

polar prairie
#

scope too big you mean?

#

you're right. let me fix it real quick.

polar prairie
dull moss
#

looks nice to me

polar prairie
#

ok then i'm done now. i will test it in SP a bit before uploading.

#

should i make the laser pointer attachable or leave it like that?

#

yea i'm doing it. seems appropiate.

silent zealot
#

Opinions: should this be .357 magnum or .44 magnum?

pastel wolf
#

nice texturing! my mind says 357

#

1, standard cartridge for that sort of gun, 2, 44 ouchie, 3 with no stock 44 and no buttstock means that will not stay in your hands long

silent zealot
#

I got the model and base texture from sketchfab, then cut it down/reworked teh texture to account for not having any metalic or normal map inzomboid, and added the wrapping. So I can't take credit for the texture without violating the CC attribution license.

#

I've got the spin reload animation from Nik (and permission to use it)

pastel wolf
#

ahhhh fair enough, and I kind of enjoy zomboid not having native metallic maps because I enjoy painting metallics

#

hand painted metallics and highlights and shadows always beat generated ones

silent zealot
#

especially in zomboid where there is no 3D world to reflect... the reflection maps on cars can be really out of place

#

My lewis gun is entirely procedural textures in blender baked into a map.

#

That was an interesting thing to work though.

pastel wolf
#

hey for what its worth it looks great

silent zealot
#

I'm happy with the final result, but it took a lot more time than I expected.

pastel wolf
#

well hey hit me up sometime, I love texturing stuff and guns are fun

#

I made these for my police pack but they are going to get pushed back and probably remodelled for the pt.2 because i'm lowering my scope

silent zealot
#

I'm getting better at planning textures... and leaving space for the things I did not plan for.

pastel wolf
#

some problems exist here n there but, hey thats why im pushing em back

silent zealot
#

That's one texture for 8 or 9 crow-bar based weapons... a lot of things at zomboid scale look good when they are just light/mid/dark grey.

pastel wolf
#

I'm gonna have one hell of a time making my "improvised weapons" pack and more guns as I slowly make more and more outfits, I'll have to take some screenshots or rip some of the gun models so I can more closely match the zomboid look

polar prairie
silent zealot
#

Wait no, vintorez.

polar prairie
silent zealot
#

The other "wooden stock with weird skeleton design" gun

polar prairie
#

almost ready to upload this shit.

silent zealot
#

I should finish teh corwbar mod. I just have to do the preview image and some weapon images for teh mod page.

#

But the hard part is doing that without coming up with a new idea for a stupid crowbar-variant

#

Freudian slip, I meant "really clever and lore-friendly crowbar-variant"

pastel wolf
#

Simple, bolt/weld/strap random bullshit to a crowbar

silent zealot
#

Did 4.15 add more security to prevent reflection sneaking into private fields? One of my mods that relies on doing that not fails when not in debug mod, with "Not in Debug" as the reason for rejecting me.

Callframe at: getNumClassFields
function: __index -- file: disable_addexclusion.lua line # 30 | MOD: Nepenthe's Wear anything With Anything
function: disable_addexclusion.lua -- file: disable_addexclusion.lua line # 59 | MOD: Nepenthe's Wear anything With Anything
ERROR: General      f:0, t:1773314755366> ExceptionLogger.logException> Exception thrown
    java.lang.reflect.InvocationTargetException at DirectMethodHandleAccessor.invoke(null:-1).
    Stack trace:
        java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
...
    Caused by: java.lang.IllegalStateException: Not in debug
        zombie.Lua.LuaManager$GlobalObject.getNumClassFields(LuaManager.java:6442)
#

New feature in 42.15. ๐Ÿ™

#

The if (!Core.debug) is new as of 14.15.0. ๐Ÿ˜ญ

polar prairie
#

no matter what i do, i cannot upload anything to the workshop because it always reads that my mod.info is missing. i tried over an hour but without success. cannot find anything more out. also the mod-template structure reads the same error. some suggestions?

silent zealot
polar prairie
silent zealot
#

that won't work - for B42 check out the new structure.

polar prairie
#

i tried but i failed.

silent zealot
#

Short version is make a 42 folder and a common folder under myModName, leave common empty and put everything in 42

polar prairie
#

i have that.

#

the mod works perfect in SP but i cannot upload it due to missing mod.info besides it should be correct.

silent zealot
#

your mod.info needs to be in the 42 folder

polar prairie
#

so only in 42 folder and nowhere else?

silent zealot
#

correct

polar prairie
#

and the poster image is when enabling the mod in the list? and the preview image is the picture on the workshop itself?

#

wow it worked now. thanks a lot.

silent zealot
#

Here's a new low in useless communication: A steam message saying "Unable to launch the game today".

#

In French.

#

No mention of which game.

buoyant violet
#

Railing mount

polar prairie
silent zealot
#

The good news is I have overridden the reload animation for my new gun.

The bad news is now reloading makes you surrender.

#

This feels like a problem for tomorrow

buoyant violet
#

check tha the m_condition is is getting properly replace

#

is the issue happening on reload starting or racking part?

silent zealot
#

the racking.

#

conditional was wrong, I renamed some things and didn't rename it to match - thanks

#

...that lets me put bullets in, but I can't rack or aim. Unless I walk around, then I can aim. So... tomorrow's problem.

buoyant violet
#

FEELS GOOD

bright fog
silent zealot
#

I was copying the structure from the "add lever action to vanilla guns" mod and was happy to note I don't need multiple copies of the animation now

#

I'm sure I'll get there, the fact I have a mod doing exactly what I want to do (replace rack animation) means I just need to figure out what I'm doing different incorrectly

polar prairie
#

the sound radius number is meant in tiles, or?

paper ibex
#

yes

buoyant violet
#

tunning all attachment places will be time consuming but worth Hehe

dull moss
#

I'm slightly confused, why my code runs both on server and on the client ThinkNitro

I got this code in my server folder, right?

local function getPlayerList()
    if gameMode() == "SP" then
        return { getPlayer() }
    end

    local players = {}
    local onlinePlayers = getOnlinePlayers()

    for i = 0, onlinePlayers:size() - 1 do
        players[#players + 1] = onlinePlayers:get(i)
    end

    return players
end

--- Function that recomputes the carry weight for players, applying all modifiers in the correct ordering
function UnifiedCarryWeightFramework.recomputeAll()
    for _, player in ipairs(getPlayerList()) do
        log("Recomputing carry weight for player " .. tostring(player:getUsername()))
        -- some code
    end
end

but I can see prints both in console and coop console? I'm hosting a server from main menu. I do know that if you play SP server code effectively runs on client, but if its MP why do i get prints in console? eh?

#

shouldnt it only be in coop-console?

bronze yoke
#

the client runs files in the server folder

dull moss
#

but I thought that's only in SP?

bronze yoke
#

no it's not

dull moss
#

hmmm

bronze yoke
#

you can avoid this by starting your file with```lua
if isClient() then
return
end

dull moss
#

but won't it prevent the mod from working in SP then?

    --                             | isClient() | isServer() |
    -- Singleplayer                | false      | false      |
    -- Multiplayer Client          | true       | false      |
    -- Co-op Host (client process) | true       | false      |
    -- Co-op Host (server process) | false      | true       |
    -- Dedicated Server            | false      | true       |
#

oh wait nevermind

#

misread the table

paper ibex
#

You forgot to include isMultiplayer()

#

SP runs both the client and the server in a single runtime.

bronze yoke
#

singleplayer is considered neither a client or server

#

not both

paper ibex
#
--                             | isClient() | isServer() | isMultiplayer()
-- Singleplayer                | false      | false      | false

what do you mean not both, when SP runs all the code

#

in a single runtime

dull moss
#

does OnCreatePlayer not fire on server? My assumption was that it fires every time player is created?

bronze yoke
#

it is not considered either

#

so if isClient() then return end returns if it's a multiplayer client, but not if it's a multiplayer server or singleplayer

dull moss
#

^

local function gameMode()
    if not isClient() and not isServer() then
        return "SP"
    elseif isClient() then
        return "MP_Client"
    end
    return "MP_Server"
end
ornate spade
#

Is Full-Auto Fire already in the base game and usable?

#

Like can I make full-auto guns using only vanilla resources?

paper ibex
# bronze yoke you don't need to check `isMultiplayer()` in any case, because singleplayer does...

Okay, so when people say server/ files should always start with if isClient() then return end, that is generally good advice for MP only mods.
However, it's not always true for vanilla filesโ€”and TIS might stop loading them entirely on the client or in SP if that check is there.

Since vanilla supports both modes, some 'server' files must run in both SP and MP.

I agree that isMultiplayer() is often redundant and should mainly be checked within shared/ files for consistency.
But telling people to always start with if isClient() then return end is misleading if they want their mod to work in both SP and MP, using MP logic first with SP as a fallback.

dull moss
#

dash gave you away my friend

#

โ€”

paper ibex
#

i must not ask fast like chitchat for advanced text ๐Ÿ™‚

bronze yoke
#

it's not true for vanilla files because the vanilla files aren't organised in any coherent way and plenty of the files in the server folder are actually exclusively client code

#

please reread this conversation because i did not say 'all server/ files should start with this' so i don't really see what your point is, i literally just said that it would avoid the behaviour that they were experiencing

dull moss
#

I mean I did this

local function gameMode()
    if not isClient() and not isServer() then
        return "SP"
    elseif isClient() then
        return "MP_Client"
    end
    return "MP_Server"
end

-- This should be ran only if it's SP or if it's a server process
if gameMode() == "MP_Client" then
    print("UCWF | UnifiedCarryWeightFramework | Detected MP client environment, skipping the file")
    return
end

which is exactly what I needed

paper ibex
#

Just do whatever works for your case. Guarding inside functions is usually better unless every function in that file is server-side only. So.

bronze yoke
#

if the functions aren't server-side only, why are they in the server folder?

dull moss
#

shared folder runs on both, no?

bronze yoke
#

yeah

#

it just seems like common sense to me that client code is in client, server code is in server, and shared code is in shared

#

the folders themselves have no real difference beyond their names (and the client folder not loading on multiplayer servers) so it's strictly organisational

#

there can be some weird cases where you might need a file in server/ for load order reasons though

#

but i don't making sweeping statements like 'all files in server/ should always have these guards' because i don't expect other people's code to be organised the way mine is (or organised at all to be quite honest)

dull moss
#

I'm trying my best sadeg

paper ibex
#

But hey, TIS has many files in server/ without the isClient() or isServer() guard on top, so why?

dull moss
#

kinda weird that sendClientCommand and OnClientCommand receieve args in different order

ornate spade
#

mb

dull moss
#

nah its fine, its just you prob will get answer there faster

ornate spade
#

oh ok, lemme post it again rq

#

Whats the reccomended poly count for firearms?

dull moss
#

can someone remind me folders load order? it's shared -> server -> client?

paper ibex
mellow frigate
bronze yoke
dull moss
bronze yoke
#

it can be worth noting that while shared/client usually load immediately after each other, server can be significantly delayed in singleplayer

buoyant violet
#

Ain't no way I read a chatgpt reply๐Ÿ˜ญ

buoyant violet
#

Now jacking up the cyclicrate multiplayer will act up in different refresh rate settings

#

Now if you want to implement full auto with rpm control for your weapons check out my mod RAF

#

(Shameless self plug)

paper ibex
#

Why you fear of it? Ever thing about that 60% internet new contents is now eyy-azz-generated

dull moss
#

I'm AI enjoyer

paper ibex
#

English as a language to communicate, when i cant, i use google, this is my respect for anyone i wanted to talk to

buoyant violet
dull moss
#

tbh I also use chatgpt for spellchecks in my 4th language

ornate spade
dull moss
paper ibex
dull moss
#

considering it's literally a language model not the worst use KekW

buoyant violet
dull moss
#

my msg jsut got silently delted, thanks automod

#

this fking automod

#

I've been putting prints into every corner trying to figure why this is not working, can sm1 help please? xd
client.lua

local function recomputeCarryWeight_OnCreatePlayer(playerIndex, player)
    local gameMode = gameMode()
    if gameMode == "SP" then
        print(
            "UCWF | UnitedCarryWeightFramework_Client | recomputeCarryWeight_OnCreatePlayer | Detected SP environment, recomputing carry weight directly"
        )
        require("UnifiedCarryWeightFramework")
        UnifiedCarryWeightFramework.recomputeAll(player)
    elseif gameMode == "MP_Client" then
        print(
            "UCWF | UnitedCarryWeightFramework_Client | recomputeCarryWeight_OnCreatePlayer | Detected MP client environment, sending command to server to recalculate carry weight"
        )
        sendClientCommand(player, "UCWF", "update_weight", {})
    else
        print(
            "UCWF | UnitedCarryWeightFramework_Client | recomputeCarryWeight_OnCreatePlayer | Detected unknown environment, skipping carry weight recalculation"
        )
    end
end

-- OnCreatePlayer are client events so if we're SP or MP client we need to send command to the server
Events.OnCreatePlayer.Remove(recomputeCarryWeight_OnCreatePlayer)
Events.OnCreatePlayer.Add(recomputeCarryWeight_OnCreatePlayer)
#

it just wont send

#

i swear

#

imma tilt

#

I double checked vanilla implementation

#

and this should work

bronze yoke
#

commands aren't ready as early as OnCreatePlayer

#

you need to wait until the second tick

dull moss
#

ooooh

#

omg i spent 30 min putting prints into every corner of the code trying to figure out whats wrong

#

look at this KekW

#

Haven't really tried waiting for ticks before, my assumption is that usual way of doing this is

  • on client side instead of onCreateCharacter i do onTick or whatever
  • wait few of them (maybe check until getPlayer() returns a player? idk)
  • send a command to server
  • unregister myself?
dull moss
trim yacht
#

This is my standard pattern:

local function setup()
    Events.OnTick.Remove(setup)
    Core:ini()
    sendClientCommand(Core.name, Core.commands.playerSetup, {})
end

Events.OnTick.Add(setup)
dull moss
#

even one is enough?

#

ty

paper ibex
#

you fighting with client server for that? use OnGameStart and OnGameBoot

#

or OnTick Add Remove with debounce

dull moss
#

well I'm about to load into server to see if now thing works so if it is I'll just leave it be as it is now

paper ibex
#

how about always sendClientCommand on both SP MP, but server run on SP will trigger by itself

#

so when server (run on SP) will triggerEvent OnServerCommand

https://github.com/escapepz/pz_lua_commons/blob/master/pz_lua_commons/common/media/lua/shared/pz_utils/konijima/utilities.lua

--- [SERVER]
--- Send a command from the server to a specific client
---@param _targetPlayerObj IsoPlayer
---@param _module string
---@param _command string
---@param _data table
function Utilities.SendServerCommandTo(_targetPlayerObj, _module, _command, _data)
    if not Utilities.IsServerOrSinglePlayer() then
        return
    end
    if Utilities.IsSinglePlayer() then
        triggerEvent("OnServerCommand", _module, _command, _data)
    else
        sendServerCommand(_targetPlayerObj, _module, _command, _data)
    end
end
#

no trauma about game mode

#

now you care about will that Events.OnCreatePlayer load on both SP and MP

dull moss
#

well thats enough PZ for today DESPAIR

thanks for the help

#

at least its working now

#

imma delete that to not clutter the channel xd

trim yacht
#

Are there any good image/icon resources for skills so I can use more than just a book to differntiate?

elfin cairn
#

Can any mod developer help?
Where can I find the names of the radio and TV stations in Lua?
For example: Life Timeโ€ฆ build 42

prisma arch
#

Hey everyone, new to modding and would like to create a car mod, are there any up to date guides/tutorials on how to create a car mod?

pliant pewter
#

hello everyone! i am interested in modding project Zomboid. is there a mode to spawn zombies on an empty map to test out stuff i wanna make

paper ibex
#

actually \media\radio\RadioData.xml

#

correct me if I'm wrong

dull moss
pliant pewter
#

ohh oke! will try thanks

pastel wolf
#

Can an item equipped in the secondary slot add protection values? Like If I were to make a shield, or should I just make it a thing you equip on your forearm that protects your upper body?

bright fog
#

@paper ibex ok so I pulled your schemas and I also updated the formatter script to automatically generate these automatically from the dataset

#

Tho the patterns you have made need to be verifed

also I realized you are not in the modding Discord ?

silent zealot
#

Gasmask & Novelty Glasses == CURSED

bright fog
#

@paper ibex wait, but the json schemas can't work from GitHub ?

silent zealot
#

I'm not sure that just adding protection values would feel satisfying as a shield though.

pastel wolf
#

yeah it would have to have some special behaviors

#

i was brainstorming like

#

a two handed riot shield explicitly just for knocking zomboids or charging through crowds would be a useful niche but would require some heavyweight scripting and lots of balancing

#

and then a light one handed one that yknow, provides some protection and has a custom pushing animation or something? but Idk its tough

#

I'm gonna go get some groceries and mull these things over

#

you are right though, just adding some protection values feels a bit lame,

silent zealot
#

I don't think there is any event or way to get code in when a zombie attacks/hits a player, because if there was you could have attacks from the front 90ยฐ stagger they player and zombie a bit instead of causing an injury.

#

Also, you want to think of what you can do without any new animations. Unless you want to make animations, but that's a whole pile of extra work.

pastel wolf
#

i CAN animate

#

but i really want to avoid it if at all possible yknow

bright fog
jolly thorn
# bright fog

emmy extension gets the schema from their github repo, though I had to enable the download schema option for json in my vscode settings

vast pier
#

do guns use a different shooting animation when they're empty as opposed to loaded ?

silent zealot
#

They must - on full auto/continuous the barrel stays still and level, when you click on empty the gun lifts up a bit

#

Unless I'm mis-remembering that

vast pier
#

asking because some people are requesting the terminator spin animation for the lever action mod

#

And I was thinking of 2 options for adding it in

silent zealot
#

I'm working on getting Nik's spin animation working

vast pier
#
  1. Specifically plays when trying to shoot the levergun on empty
  2. Alt mod
silent zealot
#

Ideally it would spin on rack if it's the first rack after reloading

vast pier
#

ideally yeah

#

idk how you would go about differentiating something like that without touching the reload timed action

silent zealot
#

No idea if there is a "reloading" flag that will persist through that

#

I'm not even sure how complicated the animation conditionals can be.

#

I'm just trying to copy your mod to get a different rack animation, and so far I've broken everything ๐Ÿ˜›

vast pier
#

lmao

vast pier
#

There's a special value inside the fbx files that determines their "animation" name

#

and if it doesn't match your files properly, it will not load it

#

I don't remember what the string name identifier thingy is called though

#

All I know is it's tied to the animation itself that plays, not the file name

silent zealot
#

thanks

pastel wolf
#

Is anyone here anything of a civil war buff? And now anything about Kentucky, Tennessee, Indiana in the civil war?

polar prairie
#

which one do you like more?

bright fog
vast pier
#

How do you go about adding new items to MountOn for weaponparts without overwriting the content?

jolly thorn
#

maybe it's something specific to your configuration. Or, well, mine

paper ibex
#

oh wait you're still online

paper ibex
bright fog
paper ibex
silent zealot
paper ibex
polar prairie
polar prairie
#

people seem to like my mod so i want to have a proper texture.

silent zealot
#

That's good... Once it's in the game it's much harder to see than in blender, so more contrast is usually the way to go.

pastel wolf
#

round two of texturing the cop implements

#

scratched up from previous peacekeeping operations! or more recent failed ones

buoyant violet
#

.223 its back and better than ever grind

pastel wolf
#

The rumours of .223's demise were greatly exaggerated

buoyant violet
#

yeah I like keeping .223 but rather than being a different ammotype altogehter it will be a more accesible common civilian variant but doing less damage

pastel wolf
#

would it do any less damage? like .223 and 5.56 are so close as to barely matter

buoyant violet
#

its more balancing purposes

pastel wolf
#

Ayo ammo types?!?!?!

#

I need this in my life

buoyant violet
#

Yeap, its part of a framework we are working on. and my mod will personally feature a selection of ammo types

#

hence why .223 will be civilian variant

pastel wolf
#

Hell yes! That rocks

buoyant violet
#

blue is 223
green is 556

pastel wolf
#

all the time I find myself thinking how much Id want new, weirdo wackadoo ammo types

#

reloaded or manufactured

buoyant violet
#

you can also change how the weapon performs based on ammo type

#

I will make subsonics versions

pastel wolf
#

slugs and birdshot come to mind for 12 gauge, but theres a lot of potential for all kinds of different calibres

#

yeah like subsonics, armor piercing and jhps, etc etc etc

buoyant violet
#

they will make you rack after shoot, but will make less damage

pastel wolf
#

I will die happy if I can finally load shotgun shells with coins in lieu of lead

buoyant violet
#

well when we release the framework we hope it gets adoption by other gun modders

#

so we can finally have a layer of compatibility between weapon mods

pastel wolf
#

I will absolutely jump on such things, I haven't tried modding guns quite yet since I want to save that for part 2 of my police gear, but that will be awesome to implement!

buoyant violet
#

nice! the systems are design to be easy to use. and made with compatibility in mind so exited to keep on working on this

#

and I feel its important to have a mod be an "exampl" hence why im putting almost all systems in my mod

pastel wolf
#

See one of the things I was wanting to make eventually would be grenade launchers, of the break action police variety, the six shot riot variety, and potentially as an under barrel for a grenadier variant of the m16a2 I was modelling, Any plans to support that sort of thing or are you mostly going to aim for conventional ammo calibers?

buoyant violet
#

so, you want an underbarrel?

pastel wolf
#

I did some math, while the famous one the KAC masterkey was exceedingly rare... whats stopping some random kentuckian from sawing up grandpa's old js-2000 into one

#

oh hell yeah

silent zealot
pastel wolf
#

meth is the cause, and solution to all problems in rural kentucky

karmic coyote
buoyant violet
#

Altho explosives are not out of the question. It's just that it need thinking before how we implement them

buoyant violet
#

had to bring it back

dull moss
#

if i have player object and I try to do player:getBodyDamage():Update() on the server does it not work? ThinkNitro

#

From testing it looks like it works in SP but doesn't work in MP

bright fog
#

You don't get banned for no reasons there

#

Unless you took the scammer role by yourself which is your own fault

dull moss
#

he did say english is not his 1st language

bright fog
bronze yoke
#

you do need to do that, it seems to be a recent change to vscode's json extension

#

i've been getting the same thing with .emmyrc

bright fog
#

Interesting, I didn't have any issues with emmyrc ?

bronze yoke
bright fog
#

Oh recent change, how recent ?

bronze yoke
#

it was sometime during my break over the last few weeks

bright fog
#

Oh yea, was there really a security risk with that ?

paper ibex
dull moss
bronze yoke
#

why do you need to update it?

#

it is not a great idea to call that

dull moss
#

hmm

paper ibex
dull moss
#

I update player base carry weight, and I need to know what would be a final carry weight after my base carry weight update

#

so i can apply delta to it

bronze yoke
#

update() applies all over-time changes for that tick, if you call it it's going to double that

dull moss
#

oh

#

ye ok I really shouldn't do that KekW

paper ibex
dull moss
#

well then I am stuck with wating a tick or two I guess?

#

ugh

bronze yoke
#

might be yeah

dull moss
#

I hate putting stuff on ticks

#

I assume its not very expensive to add and remove events?

bronze yoke
#

it's basically free

dull moss
#

k

#

back into the rabbit hole I go Cx

bronze yoke
#

you're really just adding/removing one element to/from a list

dull moss
#

ok

#

question regarding concurency. How does it work in PZ? Not at all? Game will finish all jobs for current tick before proceeding to next one?

bronze yoke
#

not at all yeah

dull moss
#

ok cool

paper ibex
dull moss
#

I am banned from official Dead By Daylight discord czu I live in student house and some pepega got banned in there

#

(due to how our network acess is set up)

bright fog
dull moss
bright fog
#

So you aren't blocked from the modding Discord

dull moss
paper ibex
dull moss
#

nah

#

well yea

#

its restriction on discord side to prevent bans bypasses

#

like when you are banned there's no option "to ban by IP", you are simply banned and then discord adds a layer on top of that to prevent bypasses

#

as far as I know, I might be mistaken

#

but that's my understanding

paper ibex
#

per server ban is mostly by bot

dull moss
#

its very simple to check, ask that server admin to check bans, if you are on the list - you are banned intentionally. if you are not on the list - your IP is flagged by sm1 else being banned

dull moss
paper ibex
#

just checked with the web discord version, the http post say i got banned so

bronze yoke
#

we don't automatically ban anyone, i think you probably clicked the 'i am a scammer please ban me' button

dull moss
#

ngl that button do be pretty funny

bronze yoke
#

it filters a lot of bots

dull moss
#

ye, figures

bronze yoke
#

most of them are set up to pick every role so they can see as many channels as possible

dull moss
#

when discord bot AI agents

#

if I add event onTick, it only starts triggering during next tick, right?

bronze yoke
#

yeah

#

it depends on when you added it, it's literally just if the event has triggered for that tick yet or not, but OnTick is quite early in the tick iirc

paper ibex
#

๐Ÿ˜‚

bright fog
#

I already pinged Chuck so when he's available he'll look into it

paper ibex
#

but really if i was fuck up the rule just let me know so i can remember this year

bright fog
#

@paper ibex apparently you aren't even banned bruh

dull moss
#

then it's IP thing

#

unluck

#

do you share network in any capacity?

paper ibex
#

its home network

dull moss
#

then idk KekW

dull moss
quick mountain
#

yo did anyone know why my mod don't showing up in game

bright fog
#

You need to give more detail of what the fuck you're showing us lol

#

Also which game version ?

#

Anyway, I suggest checking out the wiki page

bleak remnant
#

Goat, i need your opinion in something

#

So, let me explain

#

this is going to be different from all the other mods you have ever encounter

#

I don't know if you have ever played DCS (probably not) but the thing is, it's comunity have created something called DCC. it is like an external software that makes dynamic missions for the game. I am planning in doing something very similar in Zomboid

#

What i intend for the Necroa Outbreak, is to be a Simulator at this point, and for that, i want to create the metaverse in a separated software

#

that will handle all the information about the actual apocalypse setting

#

But i am quite confused in how to make this bridge between the Game and the software.

#

What do you think about it?

bright fog
bleak remnant
#

it would be a pain in the ass to run all that in game. So it will be handled in the software in a lighter way and then the information would be transfered to the game

#

it will be a managment with 2d maps with all the houses and cities mapped in the software

#

like the interactive map but different

#

Imagine week one but organized and with zombies and people not spawning out of nowhere

#

So, to fully run the mod, you would need the software to be the brain of the mod and the mod to run in the game

#

Got it?

#

And it would simulate faction fights

#

coordinated hordes

#

supply chains

#

Stuff like that

#

you wouldn't live in the post apocalyptic scenario of zomboid, but in a society that is slowly dying

#

since you can live your life normally in the beginning on week one for an example, it is more than enough to prove me that it is possible to simulate society inside zomboid in some degree

#

I just need to understand how to make this bridge from zomboid with the outside world

mellow frigate
#

Is there a way to make Item templates like there are vehicle templates ?

bronze yoke
#

no

paper ibex
bleak remnant
#

My fear is, how much of the java i would have to modify

#

and if people would be able to install the mod, not if this is possible or not

bleak remnant
dull moss
#

Need opinion on something from more advanced ppl in here.

I used to have a lot of printouts that are toggable in mod options (so they can be easily toggled mid-play and can be individual on per-player basis in case its multiplayer. Nothing that triggers extra fast (like onTick), the fastest one (refresh-rate-wise) is every minute (but i got a bunch of every minute events so it ends up printing like 5-10 lines every minutute due to different systems). Now since I gotta move my logic to server, I was thinking that in case its server I could send the prints into client via send command and passing the string in args. Question is, is that viable option flow/architecture-wise? Because if I do prints for 10 man server every minute in server console, that file will get big quick.

So tldr: what you think about sending commands from server to client to print stuff into individual consoles instead of server console

bleak remnant
paper ibex
dull moss
#

I don't wanna print stuff just cuz i can

bleak remnant
#

But it basically connects the software and the game and that is it

#

i am quite relutant because this game is in constant updates and something like this feels a bit easy to be broken by a simple patch

paper ibex
bleak remnant
#

i wanted to see if i could print the in game time to a json

#

and make a software read it in real time

#

lot of errors

#

then i tought it would only be possible by coding java to do it

#

but before i start i came here first

#

to ask for that information

dull moss
#

I know its possible to generate files from in-game, is that what u asking about?

paper ibex
dull moss
dull moss
bleak remnant
#

but where? in world data?

dull moss
#

that's all i know, you can go dig around in it

bleak remnant
dull moss
#

or at least its supposed to, I never really used that function KekW

paper ibex
dull moss
#

Tchernobill here, its his mod

mellow frigate
dull moss
#

He can tell :D

bleak remnant
bleak remnant
#

so, it is possible to use a software to run stuff in game after all

mellow frigate
#

writing files allows to communicate with thrid party programs. I think that's how twitch & OBS plugins work.

#

that kills performances though ๐Ÿ˜‰

dull moss
paper ibex
bleak remnant
dull moss
#

because putting 10 lines for each client into server console is gonna be shit, no? on any server with half-decent pop you'll dump so mych shit in 1 console

paper ibex
#

for simple spawn , you can use RCON

bleak remnant
paper ibex
#

yes

bleak remnant
#

that is the problem bud

paper ibex
#

your mod SP only ?

bleak remnant
#

yes

#

i have no balls to code this for mp

#

i would rather kill myself

dull moss
paper ibex
#

can try

your mod : write states to game_state.json
read only from 3rd_command.json

your 3rd: read only from game_state.json
write commands to 3rd_command.json

bleak remnant
#

it is going to be hell to tie a json to a in game command

#

but not a problem i guess

paper ibex
paper ibex
bleak remnant
#

yes i know

paper ibex
bleak remnant
#

thanks for the help, i will try to assemble this

paper ibex
#

use zul. lol, or simple writeLog

bleak remnant
#

by the way, what is zul?

paper ibex
bronze yoke
bleak remnant
dull moss
bronze yoke
#

i would say that in general you only really want to log things if something has gone wrong, nobody really cares about your generic info/'everything is ok :)' prints, even if they help with debugging

dull moss
#

I mean yea, its not on by default and not suppsoed to be on unless I ask ppl to give me logs with it on

bronze yoke
#

it might be worth considering writing your logs to a separate file, it would be easier for you to go through and leaves little reason to complain about spam

dull moss
#

oh that's a great one, I haven't considered that

#

ok imma go dig in KillCouint to see how writing stuff in my own files works

paper ibex
#

like if you want to log on server, at least, please, that log should help server admin to manage their server, not just for debug

dull moss
#

its supposed to be on for debug

#

I have close to 0 prints that are always on

paper ibex
#

writeLog is just for log

#

zul can enable/disable log via sandbox options

#

it help server admin to control the logs, too

paper ibex
sour island
dull moss
#

that checks out

#
  • take sm1 else mod
  • feed it to LLM asking to make changes
  • profit
buoyant violet
#

Insane if you ask me

dull moss
#

true and real

buoyant violet
#

Use a tool to posible learn? Nah

Use it to take someone else work to make money?
Yeeeah

tired

sour island
#

Vibes check usually never fail

dull moss
#

Am I passing the vibe check?

sour island
#

Yes, most people do though

#

It's also easier to tell when someone doesn't pass

dull moss
vast pier
#

With Braven being MiA for a little over a year now, would it be unethical to attempt a B42 port of one of their mods ?

I went through the process of seeking them out for permission, only to find that they haven't been active since march of 2025

#

I don't want to step on any toes in that regard, just wanting infection zones in B42 (Cordyceps Spore Zones)

bronze yoke
#

were you unable to find a way to contact them or did you just see they were inactive and not bother trying

vast pier
#

they haven't updated any mods in a year

#

profile is private, comments are off

bronze yoke
#

are their discord dms open?

vast pier
sour island
#

They have been MIA

#

The modding policy asks you exhaust all options though

#

So I'd wait a few days for their response and maybe put up a disclaimer

vast pier
sour island
#

But I can tell you they most likely don't wish their stuff is continued

vast pier
#

Darn

#

I will likely poke around their code to learn a bit how it was done, how stuff like the house zones n' stuff were determined, and try to write up my own version.

I don't plan to just repack their mod by any means, if I do it then it would be written myself

#

I just know at one point I wanted a sort of vaccine/cure oriented mod that would involve researching how the infection works, and attempting to make meds yourself

dull moss
#

I love antibodies mod

#

for cure process

vast pier
#

I know there's cure mods, but I feel like most of them are cheaty in the sense that it doesn't make sense for a cure to be developed, but not distributed in any meaningful way

dull moss
#

hope its ported to b42 by the time i decide to play PZ again

#

I mean antibodies kinda does make sense

vast pier
paper ibex
dull moss
#

!tap

dull moss
#

xd

paper ibex
#

And ill not join that server for sure

#

we are in different vibe

vast pier
sour island
#

Cause the game isn't realistic, it's grounded in realism

#

And I really hate this conflation and circular argument

vast pier
#

I think it's more so the wording

sour island
#

Yes

buoyant violet
vast pier
#

The idea that you CAN'T apply scientific principles instead of it not NEEDING to apply all scientific principles

#

Like yeah you absolutely could if you wanted to

#

there's nothing stopping you

#

it's fiction

#

It doesn't stop working just because it's an imaginary monster

buoyant violet
#

Maybe will be your own version

sour island
#

Just use "grounded in reality" ๐Ÿ˜ฉ spread that term

vast pier
buoyant violet
#

Dont even look at this code

#

Start with small steps

buoyant violet
sour island
#

Zomboid is a game grounded in reality, not a realistic simulator

buoyant violet
#

Real

sour island
#

As such expectations exist and when they deviate too far it breaks immersion

#

So no zombies aren't magical

bronze yoke
#

any mod that makes the game easier in any way is a 'cheat' mod to somebody, and making infection curable objectively is making the game easier

#

it's up to you where you want to draw that line in your own gameplay

buoyant violet
#

Even RE is zombies are not magical

buoyant violet
vast pier
# vast pier I just know at one point I wanted a sort of vaccine/cure oriented mod that would...

I want you to have to research multiple sample types.
Tainted water, zombie skin, survivor skin, whatever thingy I decided to put in the building nests.
Researching them using the medicine skill, crafting a vaccine/cure having a chance to fail and waste resources based on skill.
Stuff like that.
Actual effort into saving your 3 year characters instead of stockpiling 30 million capsules from "They Knew" from horde clearing

bronze yoke
#

i've learned to hate no word more than 'QoL'

vast pier
#

It just is related to like, server modpack stuff I was working on in b41 and am thinking of rebuilding in b42

#

a lot of the mods I was using for the experience don't work anymore

buoyant violet
vast pier
#

I plan to make a server experience that's zomboid adjacent instead of 1:1 zomboid.

buoyant violet
vast pier
sour island
buoyant violet
#

And thats normal haha

sour island
#

I mean it's useful for story telling if there's limitations

#

I feel like high fantasy stories kind of feel wishy washy sometimes

dull moss
#

and so they flew the ring into the mordor on giant eagles

sour island
#

Yeah basically, LoTR but not for that reason lol

vast pier
#

A big gripe I have about a lot of fantasy stories with magic is just

#

There should be way more mechanical things

buoyant violet
#

Def like universes with their own limit rules or concepts

sour island
#

Yes, you have to lean into one side or the other

vast pier
sour island
#

I like one anime recently that treated magic as a power source, light source, heat source and the MC was just an inventor

#

I can't recall the name, but it was somewhat of a slice of life kind of thing

#

It wasn't that one btw

quick mountain
#

yoo can anyone help me make that bodilyfunctions_fix works my game version b42.15.2 (the latest one) its not showing up in mods

#

i can give nedded screenshot just tell me i'm new in modding community

winter bolt
# sour island <:pain:1235670210321580124>

i remember this lmao apparently theres a big twist where its revealed that his sister was actually like a clone and was created specifically to be his perfect wife or something

#

crazy work

buoyant violet
sour island
#

Isn't that something in evangelion? (I actively avoid watching any of them)

winter bolt
#

no ||rei is like a clone of shinjis mother or something||

sour island
#

I just meant clone of family member

#

Like bro (author) just write incest, stop rigamarolling it

#

Also I'm reminded of another anime Ive only heard about - where a boys brain is placed in his sister's body and their friend "falls in love" with them?

#

Anyway, to summarize - zombies arent magic

winter bolt
#

its meant to be fucked up not a fetish thing though

sour island
#

Well that's something at least

#

So like body horror kind of thing?

winter bolt
#

i only saw the first few episodes so i didnt get to that stuff but i saw people talking about it

ivory plume
#

If you think itโ€™s the vibe then no

#

If you think itโ€™s anything impossible in the real world then yes zombies and a lot of sci-fi is magic

bronze yoke
#

that nuance is what that conversation was about ๐Ÿ˜ญ

ivory plume
#

I didnโ€™t read it

silent zealot
silent zealot
#

The fancy twirl is (and he gave permission) but I'm not sure if teh lever action anim is too.

sonic needle
#

i would assume so

silent zealot
#

I think you may be right... but I don't want to assume that because one animation is OK to use I can use all of Nik's.

sonic needle
#

always best to be careful these days

silent zealot
#

@tranquil kindle Can I use your lever antion animation in my mod? I figured how to use sensible lever action when aiming, the twirl for when not aiming (so normally only reloading when empty)

cunning rune
#

Unrelated question for you folks. Have been working on a mod specifically on the LUA side of things where my intention is to store data in rows that is persistent with the server. I have a large amount of experience writing handlers and APIs that communicate between server and client and was curious if PZ gives us a way to establish a connection to the local DB that exists? I see in some documentation we have a player.db file that stores local player values in a SQLite format (I believe?). Trying to find a way to gain access to the local DB system so I can create and interact with my own tables. Not sure if possible thus why Im asking :). Anyways thanks in advance if anyone can help.

silent zealot
silent zealot
cunning rune
#

grrr ok

#

might be worth spinning up a postgres db on the system thatll be running with it and just write a handler system that can communicate between terminals

#

or go through http idk. anyway thank you

silent zealot
#

PZSQLUtils is the java class that handles SQL, but it's not exposed.

#

How much data are you dealing with?

cunning rune
#

yeah and tbh i've toyed with the idea of storing everything in moddata but once that gets too big itll become impossible to manage

#

multiple rows per user

#

or per account id

silent zealot
#

Is Multiple 3 or 3000?

bright fog
cunning rune
#

so you have 50 people and moddata gets pretty bloated

#

not sure if its meant to handle that or what

#

hope was multiple tables but

silent zealot
#

I'm not sure how well that will work, but it would also depend how often it's getting accessed/how intensive the queries are.

bronze yoke
#

if you want to communicate with an external db you'll need either an external program (which you communicate with by writing to files) or a java mod

silent zealot
#

Definitely would be a nice task for SQLite if possible.

cunning rune
#

would all have to be same machine

#

but i could run it through 127.0 that way

bronze yoke
#

you can't make http requests from lua

cunning rune
#

small oversight on that one on my end

#

used to rust sorry lol

vast pier
silent zealot
#

hahah well I'll wait to get confirmation from Nik.

vast pier
#

I didnโ€™t make any of it, just happened to be the first person to ask Nik

silent zealot
#

And work on the preview images and fixing the "it's upside down in the holster because rifle and pistol are 180ยฐ rotated from each other" problem

vast pier
#

I set up the animsets, nothing else

sonic needle
silent zealot
#

I think I'll need to make a new attachment type and add it to holsters... this guns "unfilled niche" is a rifle-type weapon that fits in a holster instead of using a long weapon slot.

red tiger
#

@bright fog Good job on that.

#

I came back around this place to post a thread (funeral) for my shelved ShadeHammer project because it so deeply reflected to work on many technicalities and that uhhh won't work now.

#

This change may have ended any future interests to jump back on that project. Really bummed out now.

willow tulip
#

Iv vaugely considered that if TIS is going to add stuff for mods, we could have a java mod for the people who can't wait, then hopefully in a PZ verison or two mods using it can transission to vanilla code

#

1 java mod to support a bunch of Lua mods

silent zealot
#

Black Moons you killed me!

#

Using your cooking mod I cut my hands multiple times making a salad.

#

And then did not realize that was going to slow me down so much swinging my Hammerbar when I later encountered zombies.

#

...but it was a really nice salad.

#

Is there a way to use the attachment editor to work on attachments for the player model? Whenever I select the male or female player model it starts throwing thousands of errors.

#

So I have resorted to this...

paper ibex
#

my docs repo and Umbrella repo were cloned into the pzstudio new project by default, but i plan to move them into pzstudio-template-project in the future

willow tulip
#

also amazed it did since it only ever cuts left hand atm

#

so only would affect 2 handed weapons

willow tulip
#

as all mod authors should!

#

Death... by.. SALAD.. DUN DUN

#

Also again, Id love it if TIS could think more about 'death by a thousand cuts'

#

In this case literally.

#

Don't kill the player for eating some burnt food. Just make his life painful enough he dies of zombies.

paper ibex
#

anyway i can private that repo if you want, just tell me, i dont want to annoy wiki contributors by jut copy paste the content to anywhere then use as a standard for others, for real.

silent zealot
#

Just look at the lua file directly?

tranquil kindle
silent zealot
#

Thanks!

lucid elm
#

Someone make a window-clearing animation that uses your gun/two-handed melee to clear out the window instead of the normal animation please

shy mantle
pastel wolf
#

yeah crap, my game is crashing on loading the scripts after changing something in my mod, and I have no idea whats causing it

bright fog
bright fog
bright fog
bright fog
paper ibex
#

Copying wiki was an old way of working to fit my workflow.

#

I've been looking for a better way of workflow to mod. And i think i've finally found it.

trim yacht
#

Does anyone know how to achieve the lighting on the vending machines? I have added light properties to the tiles, I've also tried in item definitions. I just can't get it to work?

silent zealot
#

There are two seperate parts

#
  1. there is an "lit up object" overlay for everything that can be lit up, light pasting the glowing bits over a 2D image.
#
  1. to light up the tiles you need to make an... something like IsoWorldLight or similar.
#

And some stuff is coded in java to manage lighting up when powered.

#

So you'd have to reproduce that in lua if teh java stuff does not do what you want

#

that's the similar idea for a TV, there's a tile for teh TV and a seperate "it' on" overlay tile

trim yacht
#

Interesting. Thanks for that. Oddly enough, I can't find any overlay for the snack vending machine and none of the TV ones have any particularly special property for lights. Ill try playing about with the IsoLightSource. Thanks again!

silent zealot
bright fog
bright fog
silent zealot
#

I use the same workflow used for most small-team commercial software projects: Come up with an idea, work on it from random angles with no overall plan until you either give up or end up with a mostly working product.

dull moss
#

Bro there are so many problems with porting my mod to MP if I want to use good anti-cheat practices and follow how client-server authority shifted in PZ...

Ok, so they are giving more authority to the server, right? Obviously its to restrict some ways players can cheat. Now, lets take a primitive example: say I have a mod that checks how many dark tiles have player seen and when value reaches specific counter he gets Cat Eyes trait. I wasn't thinking much about security and integrity before so I just store progress in player mod data and run everything on the client. This was before b42 MP.

I can't just leave the logic on the client and delegate giving traits to server, because then server blindly trusts command that client send without much validation. So you can cheat by forging the command (I assume)

So then, I need to make server the decision maker, not the executor, so ideally I move this whole thing to the server and ON the server every minute I check that for all players. But here's the kick, how do I store progress then? Do I have to make my per-player modData into global modData? This also really sucks ass because I have UI that updates based on those values, so I'd also have to figure how to make that work...

Cuz people can cheat by modifying their player mod data, no?

#

this whole MP cheating thing is a nightmare

paper ibex
#

i know the reason and my guess was right, just stop talking like random guy in the anonymous chat

#

When i shared my work for others, only one person actually gave me feedback that helped me improve. I spent all night fixing that shit

#

Meanwhile, the other guy just judged me and acted superior. That is not helpful, that is kind of you-know-what-i-mean for me, or whatever you imagine with.

#

P/S just stop playing dota2 (like i was)

dull moss
#

How expensive is transmitModData()? Say if I wanna run my calculations on server side and then, for example, every minute send the players modData back to them ThinkNitro

silent zealot
#

Me: Releases new mod.

User: This mod crashes my game! Also I'm playing 42.14.

warm briar
silent zealot
#

Time to make your crowbars nice and fancy!

dull moss
#

Honestly I'm very close to just ignoring it and just letting server to be executor

#

instead of decision-maker

warm briar
#

ok time to learn zomboid modding so i can make an actual umamusume mod that aren't just the uma models as shoes
(zomboid styled uma zombies would be peak, especially if ultra sprinter)
gonna have to learn lua i guess

silent zealot
#

Yeah, the alternative is a huge amount of stuff needs to get moved to the server in a way the game does not support - like your example, the server needs to count the dark tiles the player has seen without trusting anything from the client.

silent zealot
#

30 seconds of google says it's just cat girls, but horses. ๐Ÿ˜›

dull moss
#

cat girls YEP

silent zealot
#

Look, I'm basing this off skimming the first page of google search results... I'm sure there is a lot more stuff happening

dull moss
# silent zealot Yeah, the alternative is a huge amount of stuff needs to get moved to the server...

not really, I already have the function that does that, all I'd have to change is instead of doing it for 1 player I'd loop through all players. Moving is not a problem, the problem is modData thing, since I store progress in it, and I do need it to be present on client since I have UI that displays it. So my only concern is transmittingModData to player. It's extra traffic and idk how much moving this to server will affect performance

warm briar
# silent zealot What would that mod do? This channel can help point you in teh rightt direction...

ok so my current idea is:
conditionally replace female model trait with an umamusume model (basically same model but without human ears and with horse ears and tail) with either some umamusume trait (very fast and high endurance but will die incredibly easily to anything and get sick very easily just like a real race horse lol) or just like an option in character creation
and then my other idea is uma zombies which would always act as sprinters with extremely fast speed but basically just crash into you instead of biting (still will break a bone or two)

#

oh my god i just made a wall of text sorry BakushinFacepalm

silent zealot
#

Some of that is very do-able, some is buried deep in the java.

silent zealot
#

I think you can change a zombie into a sprinter after they spawn, but you need to attach to the zombie spawn event and wait a few ticks for it to settle before doing anything. There may also be issues if the player can not see the zombie, or that may only batter for outfits.

dull moss
warm briar
#

i see, my main goal right now though is just a simple (toggleable? some way to change) model change for the base model to be an umamusume (unlike the current uma mod on the workshop which are shoes that replace the whole model and are incompatible with any clothing)

#

uma zombies are kind of an afterthought so i can put that aside

warm briar
silent zealot
#

is this a change for the player or for zombies?

dull moss
#

MCQUEEEEN

warm briar
#

i can probably make something in blender

dull moss
#

I have never even played the game, just know the memes and saw some gameplay KekW

silent zealot
#

Instead of changing the entire model, why not ears/tail clothing items and hairstyles that hide the ears?

warm briar
#

probably a good idea

silent zealot
#

Does the source material always cover up where human ears would be?

dull moss
#

probably, would be weird if they had 2 pairs of ears

warm briar
dull moss
silent zealot
#

I know, but in general anime-style always covers up where the human ears would be be to avoid them looking really weird... and you can take advantage of that to hide human ears in Zomboid.

dull moss
#

embedd fail

silent zealot
warm briar
pastel wolf
#

final item of my mod, A little memento from me!

silent zealot
#

I don't think you have any way to make an animated/flexible tail, just a static mesh you attach to the tail location.

warm briar
silent zealot
#

there is a "tail" location in vanilla, used for bunny tails. It's the obvious attachment point for any other tail too

warm briar
silent zealot
#

Idea: let players set a random sprinter amount using sandbox settings as normal. When a zomie spawn if it is a sprinter add the ear/tails clothes to it.

#

That will need some tricky lua, but I think it's possible... at least if the api call to find out a zombies speed-type works.

pastel wolf
#

Now im wondering, Do people prefer standard clothing spawning parameters? ie finding a few pieces of any set at random in fitting places like cop clothing in a police department, or premade bundled "clothing packs" as like an entire outfit folded up and you can uncraft it into the clothing components?

#

the latter might be a thing I try for future clothing packs maybe

silent zealot
#

Depends on the clothing

#

The Frockin' series has the idea of "gift boxes" - you find a box with a number of items from the mod.

red tiger
bright fog
red tiger
#

But yes this update is somewhat devastating

#

I work with Java professionally and wish that I could NDA and volunteer a API interface for Lua so I can continue working on my project

mellow frigate
#

Is there a known interace to enforce the Target (Player) of an IsoZombie and to make them chase that Target ?

paper ibex
#

__IsoZombie:setTarget(IsoMovingObject) ?

mellow frigate
paper ibex
paper ibex
#

I was testing how to disable a zed

vast pier