#mod_development
1 messages · Page 249 of 1
Negative! In previous tests you could see the slider moving, similar to hunger, fatigue, and thirst
I see
Dang, I guess I'll need to rewrite stuff... Or maybe wait until B42 drops and do it then LOL!
i meant where do i get started? is there an option inside pz or do i need to do something to the folders?
I'll ping you into resources
I need a help , I need an item called "Maquina" can only be removed from the floor if the person is an admin , but I'm not getting someone can help me ?
ca[a232196827577974784
bxxdwqi81292023010?
Woops. Was seraching for some information. Must've had it in the wrong bar.
I don't understand. Can you say that in Zorbalonian?
⟟ ⍙⏃⌇ ⌇⟒⏃⍀☊⊑⟟⋏☌ ⟟⋏ ⏁⊑⟒ ⏚⍜⌖ ⍜⋏ ⊑⍜⍙ ⏁⍜ ⏃⎅⎅ ⏚⏃☊☍⌿⏃☊☍⌇ ⏁⍜ ⋏⍜⟟⍀⌇ ⏃⏁⏁⏃☊⊑⋔⟒⋏⏁⌇.
⎎⍜⍀☌⟒⏁ ⟟⌇⍜⋔⟒⏁⍀⟟☊ ⏚⏃☊☍⌿⏃☊☍⌇! ⟟⌇ ⏁⊑⟒ ⌿⌰⏃⋏ ⟟⋏ ⋔⍜⏁⟟⍜⋏? ⊬⍜⎍ ☍⋏⍜⍙ ⏁⊑⟒ ⌇⎍⌿⍀⟒⋔⟒ ☌⊑⍀⎍⟟⋉⟒ ⊑⏃⌇ ⋏⍜ ⏁⍜⌰⟒⍀⏃⋏☊⟒ ⎎⍜⍀ ⎎⏃⟟⌰⎍⍀⟒!
.
⏚⏃☊☍⌿⏃☊☍⌇ ⏃⍀⟒ ⋔⏃⎅⟒. ⟊⎍⌇⏁ ⍀⟒⎅⌇☍⟟⋏⌇ ⍜⎎ ⎐⏃⋏⟟⌰⌰⏃ ⎎⍜⍀ ⏃ ⌇⏁⍜☊☍/⌰⍜⏁⟒ ⎎⍀⟟⟒⋏⎅⌰⊬ ⎎⟒⟒⌰.
⌰⍜⍀⎅ ⍜⊑⏁⎍⋉⏃ ☌⏃⎐⟒ ⋔⟒ ⏁⊑⟒ ⍜☍
first thanks everyone for the help earlier this week. First time doing any modding for Zomboid and got some quite helpful tips here. Just wanted to share my attempt to add custom commands via RCON to Zomboid without touching the java files. This was more like a fun challenge for myself, obviously not ideal to handle via client events but it works and don't need to touch on the java stuff.
Appreciate if you could share any feedback on how I could improve the code https://github.com/caiocezart/zomboid-rcon-custom-commands
Would this be abusable by players sending commands through the chat?
Guess not if it's through servermsg? Does this disable server messages entirely?
the servermsg command needs admin priviledge to use
no, it only look for the custom ones, otherwise let it go the vanilla way
Neat.
Smart too
So if you have 20 players online all 20 would trigger the rcon command then?
all 20 players will send the request to the "server side" of the mod and the mod will handle that to only run the command once. That's basically why you need to put an ID on the command itself and the mod server register that on a variable/table. If there are more interest on this project I can put more time to improve the code
If you need a working example with a java mod, I made one.
Mine works both singleplayer and multiplayer rcon.
@red tiger yeah I saw yours man, nice work there just wanted to try to get something working without touching the java
Alright. Sounds like a lot of file-tossing between separate processes. If you need a json library that works in PZ's specific Lua environment let me know.
And unless you absolutely cannot touch the Java side, there's no issue doing so.
not really, I just separated the custom commands on multiple files to be easier for people to create their owns. It's actually fairly simple workflow, client receives the servermsg, sends the trigger to server and the mod suppress the message itself so the client wont even see it
Sounds neat. I took some time to look at writing a solid command callback API.
I also need to get back to my lua encryption library for PZ's network Lua stuff.
thank you, it means a lot coming from you
Anyone know if there's a way to rotate the player without any animation?
The animation moves the character slightly, jittering the camera position every so slightly. Not a huge problem, but makes my freecam feel bad when changing the view direction.
What is the best java decompiler that can be used for project zomboid?
Just use intelliJ built in decompiler.
I mean some other decompilers might be able to reconstruct the source more intelligently, so it looks more like something a human would write, rather than just straight up whatever Java code compiles to identical jars as the original. But it's not like any of them can retreive comments or original variable names, because those are not in the jar. So I don't think it matters and you can just use the default option.
Yea that's what I figured. You did a great job. Would you mind if I shared your code to other servers?
I am going to publish to steam workshop later today
yay first workshop submitted haha https://steamcommunity.com/sharedfiles/filedetails/?id=3287483192
how to make custom model for item?
I have converted my mesh to x but I don't know how to properly reference it in item script
you don't need to use an .x, .fbx is fine
Do I just do model_X/myMesh?
you need to create a model script and reference that in your item, look at models_items.txt from vanilla for examples
yeah, only models_X is searched
Alright ty for info
the models folder is from an older system the game doesn't use anymore
I would also ask about custom callbacks on item use but maybe for later
is it a food item?
Kind of?
food items have a property for the name of a lua function to call when they're eaten
yeah!
Is there like OnCooked?
yeah, you got the name right too
i don't think so
where can I search custom callbacks?
i documented all the callbacks the game uses here, there aren't many unfortunately: https://github.com/demiurgeQuantified/PZEventDoc/blob/develop/docs/Events.md#callbacks
I think a really neat function to see all variables that project zomboid lua has is to use getfenv(1) which returns a table with all of them
I think it's the way you found all the events
you can also access that table as _G
I prefer getfenv() for readability since it also allows to get function enviroment
i try not to rely on it since later versions of lua removed it
it can be a very cool hack i haven't seen any mods take advantage of though
Hello everyone,
I'm creating a small mod that adds new cooking recipes using a campfire. In my mod, I'm using a radial menu for cooking with the campfire. So far, I've managed to get the radial menu to open when I'm near a campfire and display the functions I need.
Now, I'm wondering if there's a way to call the specific recipe I need using a local function. If you know of any mods with similar mechanics, please share a link.
Thank you!
Quick shout-out for my mod, a fully customizable trait. Set the individual values for the skills it gives you from -10 to +10. Can change the cost too from -48 to +999 trait points.
https://steamcommunity.com/sharedfiles/filedetails/?id=3061017102
If you'd like a place to shout-out your mod check out #1125248330595848192
We have a weekly event on Saturday - starts at <t:1720828800:t> due to using UTC.
oh hey how are you?)) maybe u can help me one more time ?)))
Hello (I don't remember helping 😅 )
well, it was like 2 months ago)) I was working on another mod)))
the main thing is that I remember you))
Well, I'm glad I was able to help. 🙂
I'm in that discord now, thanks Chuckleberry!
By the way, in simpler terms, here's what I mean.
Regarding my issue, I'm able to call my function through the radial menu. However, I'm unsure if I can use it to execute my recipe from the scripts folder, or if I need to handle everything through the global playerObj (e.g., animations, finished product, etc.).
You're trying to make available recipes appear on the radial?
You could look at the crafting menu to see how it handles that
The radial menu would be full/over filled though
hi! i'm new to modding (although i know how to program), and i was interested in doing an electrical or electronics overhaul for the game since i feel like it's a non explored portion of the game. I am an electronics technician with a couple years of experience, so after a couple years with PZ feel like there's really a lot of things that could be added making the long play last a lot more.
I wanted to ask for a couple things: fistly if there's a known mod that takes part in the same topic that i have overlooked, secondly where would you recommend me to start? going all out with such big project seems unrealistic so i was thinking to start just with some tooling and materails adittion to the game. And last but not least what do you think of the idea? it's intended to work with the time frame electronics
Thank you so much for reminding me! As for the radial menu, it won't be overcrowded. I use classes for all the calls and have a method to create child menus, which allows me to easily group recipes and eliminate the chance of overflow.
search function on the workshop gives that result: https://steamcommunity.com/workshop/browse/?appid=108600&searchtext=elec&childpublishedfileid=0&browsesort=textsearch§ion=
And in my mod, I don't plan to transfer all recipes to the radial menu; only new ones will be there, like rat on a stick, chocolate-covered cockroach, cricket with tomato, etc. And with their own 3D models))) XD))
yeah the ones that appear only creates some extra craftable options, i intend to do a rework to the electrical or electronics side of the game, as of todays development is kind of boring and doesn't generate any real reason to level it up
and i think it would be a great adition for the long runs where the game tends to get boring
Closest I see to what you're saying is https://steamcommunity.com/sharedfiles/filedetails/?id=2999183635
shrug
Maybe reach out and join forces?
Seem like-minded
I have seen that one
Used it in my play
Maybe I'll talk to him
Thanks for the help, I'll keep you updated on the progress 
Would it be simple to make a mod that allows you to place a stick or something on a car horn to keep it on? To lure zombies
Mm it would be better to hot wire the horn so you can undo it later
I don't know, I figured the stick would be jammed between the seat and the horn to keep it pressed down.
Hot wiring could work too.
There’s a GTA gun pack on the workshop. I have the methods and the means to directly rip the gun sounds used in San Andreas from my copy of the game. My question is, I wish it were possible for me to translate those sounds over to Project Zomboid.
i want to make a mod an i have no experience besides some bad sprites(YOMI hustle). I can go in more detail about it if anyone’s interested
Question... I'm trying to upload a mod to the workshop and I have it successfully posted but when I subscribe and enable the mod traits aren't showing up in the character creation screen (i've tested the mod locally so I know it works) also the sandbox settings are displaying correctly as well, but when I enter the debug mode (F11) and try and search for the lua files I can't find them... is there something else I need to be doing. Here is the workshop link if that helps https://steamcommunity.com/sharedfiles/filedetails/?id=3285160052
Shotgun Firing:
Shotgun Cocking
If project zomboid's sound modding only requires switching sound banks then I'm golden. Then again, I'm taking sounds from an entirely different game so the code's not there. I don't know what I'm doing.
Come to thibk of it there's a LOT of sounds I could change...
so id like to make a mod that changes what happens when you get the knox infection, such as causing a lot of pain, and maybe increasing hugner drain, im not really sure yet, but basically I don't know of any mods that do that kind of thing, does anyone have any mods that do a similar thing that they could send?
i just need something to reference because i have no idea how to go about doing this
New Trait: “Search Warrant!”
- Exclusive to Police Officer occupation
- “You’ve executed a lot of warrants within your time on the force. Kicking in doors has become second nature to you”
- Allows the player to kick in a locked door
- Success depends on strength level, between 1-3 kicks.
- Any zombie(s) on the other side of the door will be pinned beneath it when it falls/swings open.
- Con: Lock is destroyed, so the door cannot be locked.
- Successfully kicking in a door briefly restores happiness.
also planning to make some system for a cure where its a syringe you have to inject into the site of the wound that gave you the infection, and again i have no idea how i would start that, so any mods that have any similar functions i could reference would be nice
you're able to look at the code from any workshop mod. I'd find a mod that does something similar and see what they did
right
im asking if anyone knows any mods that are at all similar
so i can look at their code
because i cant find any mods that have any similar thing going on
I know more traits does alot of different things, so I'd start there
check superimmune code
gradient bar in base game doesnt support tooltip
just yoink tooltip code from label
local gradientPreRender = ISGradientBar.prerender
function ISGradientBar:prerender()
self:updateTooltip()
gradientPreRender(self);
end
function ISGradientBar:updateTooltip()
if self.disabled then return; end
if self:isMouseOver() and self.tooltip then
local text = self.tooltip
if not self.tooltipUI then
self.tooltipUI = ISToolTip:new()
self.tooltipUI:setOwner(self)
self.tooltipUI:setVisible(false)
self.tooltipUI:setAlwaysOnTop(true)
end
if not self.tooltipUI:getIsVisible() then
if string.contains(self.tooltip, "\n") then
self.tooltipUI.maxLineWidth = 1000 -- don't wrap the lines
else
self.tooltipUI.maxLineWidth = 300
end
self.tooltipUI:addToUIManager()
self.tooltipUI:setVisible(true)
end
self.tooltipUI.description = text
self.tooltipUI:setX(self:getAbsoluteX())
self.tooltipUI:setY(self:getAbsoluteY() + self:getHeight())
else
if self.tooltipUI and self.tooltipUI:getIsVisible() then
self.tooltipUI:setVisible(false)
self.tooltipUI:removeFromUIManager()
end
end
end
function ISGradientBar:setTooltip(tooltip)
self.tooltip = tooltip;
end


wait so what is this supposed to do?
have a tooltip
gradient bar class or its parents dont have tooltip
therefore it doesn't have tooltip
im confused why you sent that ?
sharing code?
no like im not sure how its related
its not related to you
its fairly simple tbh and tinkering with traits is good way to learn
- you need to catch when player is infected, check higher mentioned code for that
- you create event ( https://pzwiki.net/wiki/Lua_Events ) to edit character stats every tick/minute/hour/etc
- you can search API for how to set panic or stress or whatever you want ( https://zomboid-javadoc.com/41.78/ )
i see
im trying to make it so if you get infected it makes you a lot more physically disabled but you can cure it with a new medical item, but when you do it gives you some new trait thats a bit of a handicap, kinda like prone to illness but also just makes you a bit weaker
i know how to do the second part of that
as a starter project that's a bit overhead imo, i'd simply start by handicapping player with infection
and go from there
yeah
my end goal for what im working on is a kind of overhaul for zomboid based on a series i like so im kinda just working on random little bits and pieces occasionally
i got bored and decided to look into this though i probably wont be able to get it done well for quite a while
and on catching when the player is infected, i dont really understand this code, but im gonna scroll through it and ask a couple questions for help, is that alright?
alright, so, is there some event thats runs when the player gets infected?
trying to figure out how this code figures out that the player is infected and when to run the superimmune code
i think what he does is that he makes an event when player gets damaged and checks if it gave the infection
if i remember correctly, havent looked at MT code in a long while
i can only find two instances of SuperImmuneRecoveryProcess
the first one is stating what the function does, the second is this
local player = getPlayer();
local playerdata = player:getModData();
ToadTraitParanoia(player, playerdata);
ToadTraitButter(player);
UnHighlightScrounger(player, playerdata);
LeadFoot(player);
GymGoerUpdate(player);
HungerCheck(player);
RestfulSleeperWakeUp(player, playerdata);
AlbinoTimer(player, playerdata);
TerminatorGun(player, playerdata);
BurnWardPatient(player, playerdata)
SuperImmuneRecoveryProcess();```
not sure what this is saying though
every minute run SuperImmuneRecoveryProcess?
Events.OnPlayerUpdate.Add(MainPlayerUpdate);
SuperImmune(player, playerdata);
Immunocompromised(player, playerdata);
end```
and then look at superimmune from there
i guess he doesnt check he just runs it
I would like to implement a store box that allows transactions using text boxes. Is there a source I can refer to? I am a beginner coder. plz help me sir.
Wasteland's new Mass Transit Mod - Bus Demo (sound on for full experience)
That looks neato
So does the shops. I was just looking at that. Does it have to use "Money" or could we define our own currency?
We have our own currency on Wasteland, called "Guilders" which we have single, 10 stacks, and 50 stacks of already.
I used Base.Money and assign it a stack held in ModData
if I were to allow different items to act as currency it'd create situations where you could duplicate the item.
Ahh. I see. Bummer.
You could disable the use of wallet or cash, and make shops 'sell' guilders.
There's options to control change/store credit etc
Yeah, I looked through everything. It's pretty slick. Better than the store system I am working on
but if its not a fluid experience with our established post-apoc currency, players will cry
and I already wipe enough tears up everyday with my 4 year old 🤣
Enough people ask about it- I just really don't like currencies using items in vanilla stacks
as they're not really stacked
I just made all our stuff use individual items
the stacks are just for the players to organize with
they have to unstack to buy
The item merges?
its separate items, with crafting recipes
so 10 "Guilders" crafts into a "Ten Stack of Guilders"
and 5 "Ten Stack of Guilders" crafts into a "Fifty Stack of Guilders"
and then back again
Like so
this was basically what i wanted to do. i wanted to do a tackle and barge mod. let’s you charge through some enemies and barge through doors. there’s more to the concept but that’s basically what i wanted to do
Ah for my money item you can just split or stack using functions- no recipes
Dragging the money on other piles of cash merges it
Same principle as game night's cards
so, after some testing, i got some results off my test code, being that the print at the end of the following code actually shows up in the console correctly:
local infectionLevel = player:getBodyDamage():getInfectionLevel()
-- Apply handicaps based on infection level
if infectionLevel > 0 then
-- Minor infection (1-24)
if infectionLevel <= 24 then
-- Apply minor handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.9)
player:getBodyDamage():setPain(player:getBodyDamage():getPain() + 10)
end
-- Mild infection (25-49)
if infectionLevel >= 25 and infectionLevel <= 49 then
-- Apply mild handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.75)
player:getBodyDamage():setPain(player:getBodyDamage():getPain() + 20)
end
-- Moderate infection (50-74)
if infectionLevel >= 50 and infectionLevel <= 74 then
-- Apply moderate handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.5)
player:getStats():setFatigue(player:getStats():getFatigue() * 1.5)
player:getBodyDamage():setPain(player:getBodyDamage():getPain() + 30)
end
-- Severe infection (75-99)
if infectionLevel >= 75 and infectionLevel <= 99 then
-- Apply severe handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.25)
player:getStats():setFatigue(player:getStats():getFatigue() * 2)
player:getBodyDamage():setPain(player:getBodyDamage():getPain() + 40)
end
-- Full infection (100)
if infectionLevel == 100 then
-- Apply critical handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.1)
player:getStats():setFatigue(player:getStats():getFatigue() * 3)
player:getBodyDamage():setPain(player:getBodyDamage():getPain() + 50)
player:getTraits():add("ZombieInfected")
end
-- Print a message to the console for testing purposes
print("Player infection level: " .. infectionLevel)
end
end```
```Events.EveryTenMinutes.Add(checkPlayerInfection)```
but i got this error shortly after being infected, and i cant read code so i have no idea what the issue might be
the line 12 in question is this:
player:getBodyDamage():setPain(player:getBodyDamage():getPain() + 10)
@dull moss any thoughts?
the line #66 thing is some debug stuff i have in here to print stuff to the console ill just comment it out for the time being, but the main issue is the line 12 stuff
Something in here isn't a thing - the error is saying as much
My guess would be a lowercase letter that should be upper
theres a chance the functions im referencing just dont exist
at first when i tried this i did a similar thing for strength and got the same thing
i deleted it and now its this, so i guess its that
ooh i see
Pain is under stats
i wonder how continualpainincrease would work
You'd have to skim the java
what files would these be in??
Don't assume anything - as the codebase is so old, something could have retained a name but work differently
I use an old decompiled source - you should check out Umbrella
Having trouble finding a link
found it on github
this, right?
Umbrella is a collection of LuaCAT typings for Project Zomboid's API.
- Types are exposed to IntelliSense through EmmyLua, showing what goes where and what's returned.
- No time spent decompiling the game and running tools to get typings. (They are provided already)
https://github.com/asledgehammer/Umbrella
Yeah, this lol
I use a predecessor so to speak - same typings lookup, but I also have access to decompiled java
Helps to see whats going on under the hood with some stuff, alot of modding API isn't really used due to no one else doing anything with a feature.
As people usually start modding by digging around other mods + trial and error
okay what does it mean "create new project" in vscode
so trying to do this:
Create new project.
Press Ctrl-Shift-P and search for Lua: Open Addon Manager in the context menu that opens.
Search for Umbrella, and click enable.
I used intelliJ so I can't help you with details, but creating a new project is usually done at the top left of most IDE menus
when i search on the second step i cant find anything like that
would uhh
zomboid support the Ω character, by the way
just cant figure out how to get this to work
A new project can be just a workspace or folder in vscode
so if you just File > Open Folder and select your mod folder that counts as a project, and also File > Add Folder to Workspace (add your mod folder) and then saving that workspace also counts as a project
do you have the lua extension installed?
for 'create new project' we basically just mean 'have the thing you're working on open'
does setting table mode to "kv" work with Java objects? I.e. would this prevent memory leakage?
no, kahlua doesn't support mode at all
god dammit
well I need to track zombies. OnlineID always returns -1 for singleplayer games and ZombieID is a random number between 0 and 1000, so that makes neither of them suitable. What other options are there?
it wouldn't be any good for zombies anyway, the objects are recycled
yeah I know
their persistent outfit id is the closest thing to a unique id
it's not actually guaranteed to be unique though... clashes are pretty unlikely though
the persistent outfit id is really a gender flag, an outfit id, a 'hat fallen' flag, and then a random number between 0 and 500
which does mean that zombies that spawn with a hat will change id when it falls off 
On that note. How reliable are ObjectIDs for stuff on the ground? It seem to have worked for me, but my setup is calibrated for quick tests specifically.
I also needed to do this in one of my mods and I am also stuck lol, it's at a standstill because I am unsore of how to do that
Well in my scenario it's OK if a zombieID is recycled on a different zombie so it's not really an issue by default. I just need that active zombies don't have ID collisions.
funnily enough my case is similar, though I mainly needed an ID for corpses. Like checking if a IsoZombie's ID is the same as the corpse's id (to see if it were the same zombie that died) but I don't think there's a workaround for my case unless I add moddata to a zombie or something so when it dies it carries it over
I only use zombieID on a "outgoing" event to retreive and erase payload. On the "incoming" event the zombie overwrites the payload with its new ID
i don't think moddata carries over unless it's a player zombie
non-player zombie mod data has a few bugs and doesn't seem intended to be used
My case is also simpler in this regard since I don't need to track which corpse belonged to which zombie.
that SUCKS why cant everything be doable
unless something really bad will happen if there's a collision, the chance is low enough that it's probably fine to ignore it (this *does* cause weirdness in vanilla and nobody notices anyway)
something something if only we had vanilla integrated java modding something something steam workshop
I wonder how mod loading is done for steam workshop mods
like does the game handle most if not all of the detecting and loading files or does steam have some part in this
steam may or may not provide the list of mods and folder paths
I think modding would be better like if you just had to install 1 java mod that supports loading other java mods from the steam workshop
it's not that hard to do, no
so what's the PZ java modloader called?
there's a couple but i don't remember their names because nobody cares about them
sounds like the devs ended up worse off in implementing Lua interface and discouraging java modding, than if they were to just let java modders loose
less work and more functionality
i think it was an easy way to sandbox things for them
wait does the game do crc for server files too?
I agree but I also agree with what they did
there are no java mod users because there are no java mods because there are no java mod users etc
if someone makes a new mod loader they need to launch it with a killer app
like lua is a lot easier for other people like animators to make small UI for than java
something like multiplayer npcs
this implies that sandboxing was a necessary feature. Minecraft proves for a fact that it's not.
wasn't there a malware scare with minecraft mods a few months ago?
may not be relevant but call of duty franchise uses lua for their UI and their own script language for gameplay stuff so that proves it can be done with efficiency in mind
IDK, i don't download "totally not a crypto miner.jar" mods
ya
sure, but when a trusted community member does it?
tbf the mods listed on modrinth that were malware looked pretty legit
that's the whole reason why it wasn't really picked up sooner
but obviously the binary wasn't legit
i don't remember the full story but basically this malware also messed with your java compiler or something to embed itself into your mods too
so developers who had run an infected mod were unknowingly distributing infected mods too
that's your garden variety trojan virus
yeah, but it really disproves your point doesn't it?
you didn't have to download shady mods, you just had to download the most popular mods everyone used
I guess you get to pick your poison like tomato, carrot and onion 😭
no? it's the same as arguing that Windows users shouldn't be allowed to run any exe's other than those that come from Microsoft.
And everything else must be written in Microsoft Visual Basic, for sandboxing.
The closest reasonable real life implementation is Apple App Store. And even then it's not a smooth experience.
I think there's blame on both parties, the people who download the mod without looking are technically at fault because they should've "known better" and while that is true (people should know how to look for shady malware stuff), not everyone should need to be able to decompile java and or read asm for each mod they install just to "be safe" from mods
No, viruses are illegal, there's no "users are to blame".
well I guess, but that wont stop people from making them
I'm just saying that the fact that there exist malicious people doesn't mean the whole venue should be cut at the stem.
also true, but im just saying that the people who download the mods (the users of the mod) are a little at fault, the developer of the malware definitely, the developer of the mod (assuming they didn't intentionally distribute the mod with the malware) too
A real life equivalent would be cutting everyone's hands off because hands is what you steal and kill people with.
LOL
Technically that logic is true. But it's so asinine the only reasonable reaction is laugh.
rediculous analogies are fun
Well it's the same thing here. Except being just a mod for just a game, the stakes are virtually nil.
but the pricinple still stands
The prinicple is presumption of guilt. Assume that everyone is guilty of making viruses.
thats why I hate when people say "well that analogy is incorrect because it's so out of line with what would actually happen in the real world"
like that's why it's an analogy
see you all in 5 years again
that almost reads like an ominous warning that the overton window is always sliding and the things unthinkable today are the norm tomorrow
it's sad to think that it is mostly true
Imagine you time travel 100 years in the past and said to a car owner that in year 2024 you will not be able to open your sunroof because the manufacturer went bankrupt and their servers shut down.
GM cars tattling on you to the insurance companies so they can jack up the rates doesn't sound so bad now, does it? Hahaha.
Born too late to explore the seas. Born too early to explore the stars. Born just in time to explore the man-made horrors beyond my comprehension.
all in the name of inflation, corruption and slightly extra profit
When you're beholden to people who buy and sell your shares on open market willy-nilly, it was guaranteed to happen, and sooner than later.
Anyway I think I'll just shove zombie Java object into the table instead of using any sort of ID.
I only need the ID when the zombie stops eating a corpse, so I can update the amount of flesh left. When a zombie starts eating a corpse, it will overwrite the data, so it doesn't matter if there was a collision.
I think I'll have to use ObjectID for the corpses - it seems to be persistent, whereas java objects are not.
well good luck, I can't be of much help in this situation because I myself have no idea how zombies work and I even tried reading the java on how IsoZombie gets converted to IsoDeadCorpse but I have no idea and I think it's just a typecast lol I have no idea
ya objectid iirc is like a world object objectid and it is unique
solution: make everything exposed, everything public. just dont think about the consequences
exactly
Modding in zomboid uses Java?
No. But I kinda wish it did, with how half-baked Lua modding API is
unrelated- does HTTP GET work on the Lua side at all? I believe I read that POST isnt supported but just food for thought
Java mods exist but are not offically supported
game made in java, has lua as scripting (and ^)
there are no consequences
the computer doesn't cares
I'm kind of interested in trying out making a mod, but tbf I'm not even sure where to start
God I wish shaders were exposed to Lua. You could do so much cool stuff with it
I have some knowledge of Lua apart from other languages, and I can create 3D models though no clue how to put it together
3d models and Lua are generally unrelated
what type of mods are you looking to make?
you put your data in these custom PZ script txt files and XMLs
and then they apear in the game
The idea was just trying out something with advanced medicine and such
Theoretically it wouldn't even need much
Because I'd most likely only change in game values
Which I hope are easy to access
Edit: No you can't. This sucks because you can't do texture streaming over network 😦 or audio streaming
Well changing stats of your chatacter as an example
you'd probably need to make a crafting callback with some Lua code in it
onUse or whatchacallit
Are there any decent guides on modding for pz, even a list of steps could work?
Well then the coding part itself sounds pretty straightforward
obsolete
Oh nice
and in the script you just do the onUse = mymod.luacallback or something like this, i'm not positive
Thanks
Ah so basically once a mod is done, it is located in the necessary locations, and then I simply call for it and then whatever the logic is it happens? In a perfect case ofc
Not sure what you mean but recipes can have callbacks attached that run Lua code.
By recipes you literally mean crafting recipes?
Yeah, those.
Okay I should just check out the guide
I think items can have those too.
See what's what
never mind. I'll inspire from occupation save input modal option. sorry for the noise
oh I now see what you mean, that is a good reference
theres a function to open the steam browser ingame
but i dont think zomboid can recieve any data from within that browser. but you can try and check. and if you find out that its possible pls share
store string where? file or global moddata?
GET is available via getUrlInputStream, and it does work. POST is not supported as of now, to my knowledge
& re. audio streaming: this would be difficult anyhow since we don't really have a way to "construct" new audio on the fly, due to how it's all set up with scripts. No way yet, anyway. With Java mods it'd be feasible
What happens exactly when you drop more than 65k items on the floor? Does the game crash?
yeah
allright cool, I don't need to worry about integer rollover because the game takes care of it by crashing
the game becomes unplayably slow a long time before that too
surely not if you drop 1k items in 65 different spots
right?
there's no way unloaded items impact performance
not if they're unloaded no
If i remember correctly even having high amount of bullets in main inventory causes fps loss the more bullets you have
so specifically the game reuses IDs when possible but when all of them are taken it crashes, is that correct?
a server i helped out with had an issue with people trolling by dropping huge amounts of items on the ground which made the entire area around that unplayable
as long as you were close enough to load that chunk your game pretty much froze
when you can drop individual bullets it's very easy to generate large amount of items
1k bullets is pretty much chump change
Yeah, but you didnt even had to drop them
If they're in backpack, its fine, but once you move them to main inventory its starts
yeah i've heard something about it, as if main inventory is part of the world or something whereas containers exist in a separate warp pocket space
kinda bizarre tbh that main inventory is not also just a container
i mean the same as every other container
Well anyway for my purposes I just need that items in the world have persistent IDs. I..e that they don't change between getting unloaded and then reloaded.
i need some help making a map in project zomboid, i have made the map already and its in my mod menu, but when i click the map as where i wanna spawn, the menu just disappears.
if I have a vehicle in a square and want to get access to the trunk is it along the lines of getVehicle():getItemContainer()?
seems like there is a step I am missing, maybe with vehicle parts?
yeah, you probably want to check all parts of the car to see which are containers
anybody know how to fix my map thing?
yeahh i did yhat
nothing showed up when i searched it
but “addon manager” does it mean extension manager?
no, the addon manager is part of the lua extension
it's specifically for lua typings projects like umbrella
how am i supposed to navigate to that?
should be ctrl-shift-p and then open addon manager
weird...
i've never heard of someone having this problem, i have no idea what it could be
oh i think i know what it is
the page said to install lua language server
i think it meant just the extension called "lua"
yeah, that's the one
let me check that out, that seems weird
did you use this?
oh huh
i'll have to change the text, it's kind of annoying that the good lua extension doesn't really have a consistent name
mention the developer of the extension
luacats is the most common name for it now but the issue originates that the guy who made it never really came up with a name and it just became more and more popular without that changing
do you have git installed?
doing that now
fuuck i thought i added that to the readme
my god tyheres like 700 pages of options for the install
we didn't know it was a requirement since we all have git anyway 😅
maybe i just didnt see it? but it wasnt on the install steps
nah, it's not there
i updated the readme to be a little clearer about those two things, sorry for the confusion!
Guys I want to set modded maps as escape zones for "wolf extraction quest mod", such a code was sent by the creator, but I don't know how to do it. Is there anyone who can help?
Hi all, I'm trying to decompile zomboid for modding with capsid following this github readme https://github.com/Konijima/PZ-Libraries?tab=readme-ov-file but am getting a gradle error when trying to run setupWorkspace could anyone be able to give me a hand?
[toshi@ArchLinux Zomboid]$ gradle setupWorkspace
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'Zomboid'.
> Could not create task ':updateZomboidLua'.
> Could not create task ':zomboidVersion'.
> 'org.gradle.api.tasks.JavaExec io.pzstorm.capsid.zomboid.task.ZomboidVersionTask.setMain(java.lang.String)'
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/8.9/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
this guide is really really old
if you want to decompile the game you can just use a normal java decompiler, or beautiful java is a nice tool for it https://github.com/quarantin/beautiful-java
if you want the libraries that guide generates, umbrella is a lot better and doesn't require you to generate them yourselves
speaking of umbrella how am i supposed to know if its working or not
like its saying this is an issue, but its just not
do i need to also open zomboid's game files in vsc?
hmm, sounds like it might not be working, what does it say when you mouse over?
undefined global
which is why i was saying idk if i also need to reference zomboid's files in my workspace
you shouldn't need to, that stuff is included in umbrella
are you getting any autocomplete? if you start typing getPlayer() does it give you suggestions and stuff?
weirrddd
but it also says this is wrong in the objects file for my map
that's just a style complaint, not an error
unfortunately pz does not tend to follow what's considered good lua style
mine doesn't seem to recognise suburbsdistributions either...
it might be because it's not assigned in a straightforward way in the original file, maybe our lua generator doesn't catch it
jab's been working on a new one that's much much more comprehensive but i'll see if something can be done about that in the meantime
it feels strange i wouldn't've noticed this before
so whats this addon supposed to do?
the autocomplete and type inference
because i have this code i know spits out errors in-game and it says its fine
or rather doesnt say theres issues
it won't be able to catch every problem, it'll just catch typos, wrong function arguments, syntax errors etc
yeah im mainly looking to get the LSP working to make life easier jdtls needs the jars i think
what problem are you having?
yea this looks like a linter error
i dont know what that means
the lua lsp automatically gives diagnostics like this
https://github.com/LuaLS/lua-language-server/wiki/Diagnostics
you can either disable them, modify it, or follow the convention
its not however a bug more so a style error
in this case that name is hardcoded so you'll just have to ignore it
(apparently tis didn't know about Functions Returning Things when they wrote that system)
im sure you can probably use smth like what eslint does to ignore a lien or smth
yuea
so im trying to figure out how to make some code that adds more handicaps for if the player has the zombie infection, so what i have is something that checks the infection level every 10 in-game minutes, then gets endurance and fatigue and modifies it, and adds pain, but im getting an error relating to line 12, so ill just send some of the code and reference that line
---@diagnostic disable-next-line: lowercase-global
on the line above
if you right click it i think it'll give you a context menu for adding these
to tell it to ignore that line
heres a small bit of it
local infectionLevel = player:getBodyDamage():getInfectionLevel()
-- Apply handicaps based on infection level
if infectionLevel > 0 then
-- Minor infection (1-24)
if infectionLevel <= 24 then
-- Apply minor handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.9)
player:getBodyDamage():setPain(player:getBodyDamage():getPain() + 10)
end```
the line it has a problem with is
player:getBodyDamage():setPain(player:getBodyDamage():getPain() + 10)
this isnt a final thing bc im trying to figure out how the ContinualPainIncrease thing works before messing with that
bodydamage doesn't have a setPain or getPain
if i'm remembering right pain is a huge hassle to work with
this is actually something umbrella can catch but it doesn't know the type of player in this function, if you add on the line before your function ---@param player IsoPlayer that'll give it that hint
i see
seems that worked
and ill try player:getBodyDamage():setContinualPainIncrease(70)
is umbrella essentially just LSP typings for PZ? how would i go about compiling and running the edited version?
yeah, it's a sort of spiritual successor to the ones you were trying to generate with that guide https://github.com/asledgehammer/Umbrella
the ones from that guide had a lot of issues and were getting older and older, as you've seen it doesn't even work properly for most people anymore
ye the rest did decompile for me just not lua bit
is there some way i can make it so actions just drain more endurance? and endurance recovers slower?
searching around with the autofill i cant see anything thatd help me with that
because the system i have now would just continually drain endurance and fatigue
dynamic traits mod has a bunch of functionality relating to that, so you can check out its code
i'd give a specific example but i don't have the folder pinned and digging through filesystem causes explorer.exe to crash so i can't be arsed to do it
yeahh its fine
ill search
hh nevermind theres like 10x more files here than i thought thered be and i dont wanna dig through all of them
ill figure something out
I'm having a bit of a weird issue with a clothing mod that I'm working on. I've created a backpack, skinned it to the armature and it shows up all fine ingame.
But when the backpack is worn, the character's animations change to walking as if they're wounded, dragging a leg along and all that, or encumbered maybe, without being encumbered. Anyone have an idea what could be causing that?
does anyone know if there is a vehicle equivalent of this from containers? getContainer():getCapacityWeight()
I found the capacity getContainerCapacity()
and whatever this is was not it from what I can tell
getContainerContentAmount()
most of it is a giant stack of if-else relating to switching out dynamic traits. The real code is pretty small and is contained mostly within just 2 files.
But we have developed a trueID using this 👉👈
@grizzled fulcrum
I made it for zombie zones to work
Basically you calculate the persistentID with hat falling
And you get a trueID you can rely on
If you're just trying to do something in general - it's more than unique. If your idea is a very specific zombie, and you for example only have 1 of these, id just recommend using modData and setting it as a reanimatedPlayer.
so i have this now
---@param player IsoPlayer
local function onPlayerInfected(player)
local infectionLevel = player:getBodyDamage():getInfectionLevel()
-- Apply handicaps based on infection level
if infectionLevel > 0 then
-- Minor infection (1-24)
if infectionLevel <= 24 then
-- Apply minor handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.9)
player:getStats():setPain(player:getStats():getPain() + 1)
end
-- Mild infection (25-49)
if infectionLevel >= 25 and infectionLevel <= 49 then
-- Apply mild handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.9)
player:getStats():setBoredom(player:getStats():getBoredom() - 10)
player:getStats():setPain(player:getStats():getPain() + 5)
player:getStats():setPanic(player:getStats():getPanic() + 3)
end
-- Moderate infection (50-74)
if infectionLevel >= 50 and infectionLevel <= 74 then
-- Apply moderate handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.8)
player:getStats():setFatigue(player:getStats():getFatigue() * 1.3)
player:getStats():setPain(player:getStats():getPain() + 8)
player:getStats():setBoredom(player:getStats():getBoredom() - 10)
player:getStats():setPanic(player:getStats():getPanic() + 8)
end
-- Severe infection (75-99)
if infectionLevel >= 75 and infectionLevel <= 99 then
-- Apply severe handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.7)
player:getStats():setFatigue(player:getStats():getFatigue() * 1.8)
player:getStats():setPain(player:getStats():getPain() + 10)
player:getStats():setBoredom(player:getStats():getBoredom() - 10)
player:getStats():setPanic(player:getStats():getPanic() + 15)
end
-- Full infection (100)
if infectionLevel == 100 then
-- Apply critical handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.6)
player:getStats():setFatigue(player:getStats():getFatigue() * 2)
player:getStats():setPain(player:getStats():getPain() + 15)
player:getStats():setPanic(player:getStats():getPanic() + 30)
end
-- Print a message to the console for testing purposes
print("Player infection level: " .. infectionLevel)
end
end
-- Register the function to run every 10 in-game minutes
Events.EveryTenMinutes.Add(onPlayerInfected)```
but im getting this error
EveryTenMinutes doesn't pass any parameters but your function expects an IsoPlayer argument
?
Get player fetches player 0 locally
Simplest way to just get the player in any scenario.
well what does this mean? would it not work in multiplayer?
Under your function name, the first line inside, put
player = player or GetPlayer()
Co-op is local 4 players
I know some people play that way, but it's a chore to distinguish between players.
you should probably run this on server side in any case
Alternatively, you could use OnPlayerUpdate
well i have it in lua/server
And add a ten minute check
That still runs for clients
I don't think this is something that should run on a server tbh
so for example where i have player:getStats() blah blah id do getPlayer():getStats():
At the top just put
oh im blind
But after consideration, you can probably put this in OnPlayerUpdate
how come? anything that can in any way be noticeable to other people should be running on a server, no? client stuff is limited exclusively to whatever only pertains to a specific client (as in UI stuff) and has no bearing on anything else.
If you want it to be less frequent than every tick - which is advisable you can use a time stamp check
well i like the system i have with every 10 minutes
ive based the numbers off that
id like to be able to just make endurance drain more by actions but i could only figure out how to set endurance
The OnPlayerUpdate suggestion was more to deal with co-op - if you wanted. They're virtually the same event.
i see
The timing is different obviously, but you can mimic that using timestamps
The upside is that it will impact all players present on that client
so i should just do player = player or GetPlayer()?
For cases where there is no player sure
No player argument provided to the function
X = X or Y, means use X if there is a X, otherwise use Y
In your case the EveryTenMinutes doesn't provide an IsoPlayer for your player argument
It doesn't matter
alright
You're still learning, so the code can be messy for now.
It would depend on how it's used though - having functions fill in missing arguments can be useful if you're calling on it in different scenarios.
It won't work in splitscreen
It will likely work in most multiplayer situations
Coop is potentially misleading since coop is the internal nickname of HOST mode.
HOST mode will work, but splitscreen play will require player indexes to be considered
(As opposed to treating them all as 0)
Multiplayer that is not splitscreen, coop or otherwise, will likely be fine if you use getPlayer()
@unreal pewter
-- Infection rework
---@param player IsoPlayer
local function onPlayerInfected(player)
local infectionLevel = player:getBodyDamage():getInfectionLevel()
-- Print a message to the console for testing purposes
print("Player infection level: " .. infectionLevel)
-- Apply handicaps based on infection level
if infectionLevel == 0 then return end
-- Minor infection (1-24)
if infectionLevel <= 24 then
-- Apply minor handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.9)
player:getStats():setPain(player:getStats():getPain() + 1)
-- Mild infection (25-49)
elseif infectionLevel <= 49 then
-- Apply mild handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.9)
player:getStats():setBoredom(player:getStats():getBoredom() - 10)
player:getStats():setPain(player:getStats():getPain() + 5)
player:getStats():setPanic(player:getStats():getPanic() + 3)
-- Moderate infection (50-74)
elseif infectionLevel <= 74 then
-- Apply moderate handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.8)
player:getStats():setFatigue(player:getStats():getFatigue() * 1.3)
player:getStats():setPain(player:getStats():getPain() + 8)
player:getStats():setBoredom(player:getStats():getBoredom() - 10)
player:getStats():setPanic(player:getStats():getPanic() + 8)
-- Severe infection (75-99)
elseif infectionLevel <= 99 then
-- Apply severe handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.7)
player:getStats():setFatigue(player:getStats():getFatigue() * 1.8)
player:getStats():setPain(player:getStats():getPain() + 10)
player:getStats():setBoredom(player:getStats():getBoredom() - 10)
player:getStats():setPanic(player:getStats():getPanic() + 15)
-- Full infection (100)
elseif infectionLevel == 100 then
-- Apply critical handicaps
player:getStats():setEndurance(player:getStats():getEndurance() * 0.6)
player:getStats():setFatigue(player:getStats():getFatigue() * 2)
player:getStats():setPain(player:getStats():getPain() + 15)
player:getStats():setPanic(player:getStats():getPanic() + 30)
end
end
-- Register the function to run every 10 in-game minutes
Events.OnPlayerUpdate.Add(onPlayerInfected)
this example uses OnPlayerUpdate but the catch is that it'll no longer fire every 10 in-game minutes. You would need to manually track time change in game for that.
This would be how you would make your goal splitscreen compatible while also solving your player does not exist issue
Also notice you can use elseif instead to simplify the appearance of the branching logic.
So it's if < 24 then do this, elseif < 49 then do that (in which case we know it's also >= 24 and do not need to check), etc.
well the issue with it not running every 10 minutes is just
this is already a bandaid solution
Well if you want it to fire every 10 minutes you could do something like this...
manageInfectionHandicaps would loop through all [potentially splitscreen] players on client PC and call the function on each player object.
If only 1 player, loop only happens once for index 0 and just works as though you said local player = getPlayer()
`item Ricin
{
DisplayName = Ricin,
DisplayCategory = Food,
Type = Food,
Weight = 0.2,
Icon = Pepper,
CantBeFrozen = TRUE,
EvolvedRecipe = Pizza:1;Soup:1;Stew:1;Pie:1;Stir fry Griddle Pan:1;Stir fry:1;Burger:1;Salad:1;Roasted Vegetables:1;RicePot:1;RicePan:1;PastaPot:1;PastaPan:1;Sandwich:1;Sandwich Baguette:1;Taco:1;Burrito:1;Beverage:1;Beverage2:1;Beer:1;Beer2:1,
Spice = true,
HungerChange = -10,
ThirstChange = 20,
UnhappyChange = 20,
Poison = true,
PoisonPower = 300,
PoisonDetectionLevel = 0,
UseForPoison = 300,
WorldStaticModel = Pepper,
FoodType = NoExplicit,
Tags = MinorIngredient,
}
}`
im trying to make a poison that you can put in food. How come when I put it in food the poison effect dissapears and it wont let me put anything else in the stew
I guess I don't understand what "UseForPoison" really does
Lua is case sensitive so shouldn't that be getPlayer?
I did something similar in my Susceptible Overhaul mod
I just make my mods without regard for 15 coop players that PZ has

also @unreal pewter make sure to limit max and min values for your thing so you dont launch your stats into the stratosphere.
local function onZombieKill(zombie)
local player = getPlayer();
if player:HasTrait("Bloodlust") and player:DistTo(zombie) <= 4 then
local bodydamage = player:getBodyDamage();
local stats = player:getStats();
local stressFromCigarettes = stats:getStressFromCigarettes(); -- 0-1
local unhappiness = bodydamage:getUnhappynessLevel(); -- 0-100
local stress = math.max(0, stats:getStress() - stressFromCigarettes); -- 0-1, may be higher with stress from cigarettes
local panic = stats:getPanic(); -- 0-100
bodydamage:setUnhappynessLevel(math.max(0, unhappiness - 4 * SBvars.BloodlustMultiplier));
stats:setStress(math.max(0, stress - 0.04 * SBvars.BloodlustMultiplier));
stats:setPanic(math.max(0, panic - 4 * SBvars.BloodlustMultiplier));
if detailedDebug() then print("ETW Logger | onZombieKill(): Bloodlust kill. Unhappiness:"..unhappiness.."->"..bodydamage:getUnhappynessLevel()..", stress: "..math.min(1, stress + stressFromCigarettes).."->"..stats:getStress()..", panic: "..panic.."->"..stats:getPanic()) end
end
end
as example one of functions I've written
use math.min and math.max
can someone explain to me how distribution lua works, I want my item to shop up in game
I just want a drinnk that i made to show up in fridges
look up any mod that adds food
check how they do it, one of them 100% will have fridge distribution
that's as much info as i can give, never done items
i see! thank you
alright so
i can help you out because i just had to learn this
So how it works is that, every items in a distribution list has a chance linked to it. The game goes through every items and determines with the chance of the item if it should spawn and it does that with every item entries in the distribution
the game has a bunch of lists of items that go into various containers and it rolls for what items go in what containers by random chance'
to get your items to show up in-game you have to make a function that puts your items into one of those lists
basically thatll look like
table.insert(ProceduralDistributions.list["(Distribution list you want your item to be in)"].items, SpawnWeight)```
the spawn weight is just a number, bigger number means higher chance, just experiment around with it
so as an example, heres one of my items
table.insert(ProceduralDistributions.list["ClassroomDesk"].items, "ProjectGurashi.Bentou")
table.insert(ProceduralDistributions.list["ClassroomDesk"].items, 15)
ItemPickerJava.Parse()
end```
you need to run the table.insert code twice, the first time you state the item, the second time you give the spawn weight
so it might end up looking something like this
to find the distribution lists, i recommend just going to ProceduralDistributions.lua in the game's files
to be pedantic, it actually gets the most recently added player
oh, also, this should go in something like BlahBlahDistributions.lua in media/lua/server
If youre trying to add a drink id just control + F find any similar items and what distribution lists theyre included in
if you dont wanna do that, theres also this wiki page
a list of all the distributions
the wiki page also has a mini walkthrough, so
can u send thisd as code
table.insert(ProceduralDistributions.list["ClassroomDesk"].items, "ProjectGurashi.Bentou")
table.insert(ProceduralDistributions.list["ClassroomDesk"].items, 15)
table.insert(ProceduralDistributions.list["OfficeDesk"].items, "ProjectGurashi.Bentou")
table.insert(ProceduralDistributions.list["OfficeDesk"].items, 8)
table.insert(ProceduralDistributions.list["BreakRoomCounter"].items, "ProjectGurashi.Bentou")
table.insert(ProceduralDistributions.list["BreakRoomCounter"].items, 5)
table.insert(ProceduralDistributions.list["FridgeGeneric"].items, "ProjectGurashi.Bentou")
table.insert(ProceduralDistributions.list["FridgeGeneric"].items, 1)
table.insert(ProceduralDistributions.list["SchoolLockers"].items, "ProjectGurashi.Bentou")
table.insert(ProceduralDistributions.list["SchoolLockers"].items, 8)
table.insert(ProceduralDistributions.list["FridgeSnacks"].items, "ProjectGurashi.PackagedBentou")
table.insert(ProceduralDistributions.list["FridgeSnacks"].items, 5)
ItemPickerJava.Parse()
end```
just sent it as an image to make it easier to read and understand whats going on
you can make this much more prettier and easier to manage is you put it in the table and then just loop through it
so one entry would be like {"ClassroomDesk", "YourItem", 10} and then you jsut loop through table with something like
for index, tableEntry in ipairs(traitTable) do
local location, item, chance = tableEntry[1], tableEntry[2], tableEntry[3];
table.insert(ProceduralDistributions.list[location].items, item)
table.insert(ProceduralDistributions.list[location].items, chance)
end
i did end up doing that for everything other than that item
ah 
just thought for the sake of teaching someone completely new to the idea that the straightforward way would be a bit more simple to work out
because the first thing i did when i made this code was make it a loop
and it was a rough experience
(i was completely new to coding)

maybe its not the best advice but unless you learning coding for your profession but for modding, chatgpt is great for checking thigns here and there. I sometimes write a function and before testing if it works yeet it to chatgpt "hey, will this work in lua?"

well
ive tried to do that a lot
it ends up giving things that almost work most of the time
especially with chatgpt3.5
ye well that's where you come in 😄
you know how it gives you so many messages with gpt 4
great tool nontheless
then switches you back to 3.5
when i used 4, the code for adding items was perfect and stuff
most stuff was incredibly helpful
3.5 just gave me the most random bullshit code for how to add items
completely not in the formatting or syntax of zomboid at all
ye asking it to write code for you is different
Im talking about sending it code you wrote
ah yeah that too
it usually manages really well with that
tends to tell me "yep that works" then i get like 50 errors
and its like "check for typos!"
but yeah its not a horrible tool
sometimes its just frustratingly unreliable
but usually it works semi-fine
I'd classify it as "amazing" than "not horrible" from personal experience tbh 
that is if you know what you're doing

anyway im off this chat for now cya
gpt really not ideal if you don't have some knowledge in modding. It goes as an assistant tool, not something to code stuff for you completely, since it usually ends up using methods/events that do not exist in the first place
Oh really? I figured it would count up the local co-op list
Yeah people expect too much from chatGPT without knowing what to ask for it will give you what you actually asked for like a lazy genie
I've used it to mostly to reformat large lists
yeah well it functions by hallucinating text that looks like something it seen on the internet. The saving grace here is that in programming, sequences of tokens are structured extremely rigidly so they're easy to replicate exactly. Which is to say, of randomly generated text that needs to match word for word, source code has better odds of this happening. Do NOT attempt to ask it for legal or medical advice. It will look legit but it will almost completely certainly not be. Some people had to find out the hard way.
Or do math where I knew what I wanted - like making shapes in a perspective
Or mostly recently, determining the width and height of a placed shape at any angle
Also to GPT afecionados I suggest reading up on transformer language models. Very informative.
need a language learning model trained only on zomboid and zomboid mods
Since I am MEGA bad at math, I use chatgpt for it sometimes and it's actually really helpful
Like I asked it to write a formula that increases exponentially using a couple variables. I did have to tweak it very slightly but it worked pretty good
chapgpt is good at talking to you, nothing else. never trust anything it says, always double check if you use it
im a beginner at modding, somehow my 3d model (.x file) for my item is not showing up ingame, can somebody help me figure this out?
anyone know if it is possible to have see-through / transparent textures in pz?
Im improving the vanilla riot helmet and thought id be cool if the visor was a seperate model that could be up or down
and since the visor is basically just plastic, I wanted to try and make it transparent
you can for example fine-tune llama-70b on PZ mods corpus, it'll improve PZ modding related text quality. But that doesn't address the fundamental issue that it doesn't pulls text from a PZ modding database, it hallucinates sequences of letters that look closest to PZ mods it seen
can you please tell me what the formula is and what it should look like if it was plotted
honestly unless test your mod in runtime you won't know if there is an issue or nah
chatgpt can only check for syntax errors
when it comes to runtime errors he has a lot of skill issues
it was a very basic formula but I asked it to write it with some sample code I gave it because I was like mega tired and suck at math
huh
how are you gonna use it, it's very specific
unless you just meant like the general format of it I guess?
i wont use it but that's basically it
has a start date, exponent effect, maximum value
i also need a minimum value but that is p simple. just add + b
nice
i'll look into this more because the values seem to jump in steps
it's for a ramp up effect on my blackouts mod
Is there somewhere that provides the basic code for IN THE STONE's Project Zomboid? I want to study while watching. Please let me know.... T0T
Yes that is because the X axis is days
like day 1, 2, 3, 4, 5 etc
Y axis is how much the effect is applied
wait I see what you mean nvm
it's because I do math.ceil
Pedantic correction: “hallucination” is generally used for when false information is produced, not for all text generation
Maybe #modeling would have an idea (texturing by extension to modeling)? I'm sure someone in this channel does, but perhaps it has a better chance of being answered there
the thing doesn't knows what's true information or not, so if true information is produced, it's by chance.
Yes. Nonetheless, hallucination is a word that is used when false information is produced
I feel like this word is appropriately describing its entire mode of operation.
🤷🏾 I'm not the language police, say what you want. Just saying it's established terminology in the field & using it differently is a bit misleading
I mean. It has no database, so it has no way to fetch true information.
If you ask me how many fingers you're holding up & I guess correctly, that's true information despite being determined by chance
Precisely. The important factor here is that you made a lucky guess. Not that you knew the truth.
Yeah, I'm not arguing that. It's still true information, not a hallucination. See https://en.m.wikipedia.org/wiki/Hallucination_(artificial_intelligence)
In the field of artificial intelligence (AI), a hallucination or artificial hallucination (also called bullshitting, confabulation or delusion) is a response generated by AI which contains false or misleading information presented as fact. This term draws a loose analogy with human psychology, where hallucination typically involves false percept...
I'm not here to argue dictionary definitions. Precise meaning of terms as per someone else's definition is hardly relevant in an argument about the subject itself.
It is when those words have meaning in the field lol—if I started describing something I'm calling “abstraction” as something that's not that, in a tech-related channel, I would hope someone would correct me
Generally, I simply feel like only defining "AI hallucination" as such only if happened to produce false data is misleading about the nature of data AI produces, by making a false implication that it can retreive truthful data rather than just make a guess that simply happens to coincide with truth.
Okay, well for the sake of everyone else that happens to read this: hallucination is a word that's used differently by people in the field
Are you looking to decompile the Java code, or just read the Lua?
The word "jet engine" in relation to modern aviation propulsion is also a huge misnomer in the field, and yet here we are.
It's called "turbofan engine" and it doesn't even uses the jet to produce thrust, any amount of residual force produced by the core is a wasteful engine inefficiency byproduct.
Anyway AI is one of those technologies that people may unknowingly mistake for magic, and I believe it's important to avoid the use of terminology that might further confuse them about it and create greater automation bias.
@frank elbow Lua
Because surely mixing up your own terminology with existing terminology won't confuse anyone
You can find the Lua in the game directory—I'll grab the exact path
@frank elbow thank you You have become a ray of light for me.
It's a fair point. But still. The less people have impression that it's intelligent, the better.
To get to the game directory you can right click on the game in Steam, click Properties, click Installed Files, then Browse
Bom meu rei , é difícil você encontrar br por aqui , as mensagens deve ser mandadas em inglês para facilitar que eles respondam , o bot cosin tome cuidado que já me fez passar muita dor de cabeça com informação não muito certa kkk , vc está no GP cantinho dos mod BR , lá tem pessoas já um pouco avançadas pode tirar dúvidas lá tbm
There's already enough misinformation regarding AI, and I'm personally tired of the AI-bad shtick. If you don't personally like the emerging technology don't use it, stop jumping in with exaggerated and loaded terms if your supposed goal is to educate.
From there, the Lua files are within media/lua
it's usually in C:\Program Files (x86)\Steam\steamapps\common\ProjectZomboid\media\lua
Yeah, I was gonna grab the path but then I was like "oh yeah, operating systems"
or in D:\Steam\...
Well 98% of PC video game players use Windows so it's a completely fair assumption to make
you can also check out other people's mods code and scripts in \Steam\steamapps\workshop\content\108600. Unfortunately it doesn't say mod names, just IDs. But if you know what to look for it's not too bad.
I just wrote a script to loop through the dirs and tell me the id by the input string and it works well enough for me being lazy lol
Adding to that: the IDs there match the ones in Steam Workshop, so if you're curious about a mod you can go to the subfolder with the name matching the number in the URL (or the bottom of the workshop description)
@drifting ore Are there any disadvantages to me if I quote another modder's code or use different processing functions?
I would not advice to straight up copy-pasting someone else's code, it falls under "plagiarism". But technically it's OK, especially if you're new to all this nobody will blame you.
@drifting ore The reason I asked this question was because I checked the codes of the modes that had already been uploaded to implement an online shop using a text box, and they all had similar code, so I asked the question.
Do you mean people using Noirs shop?
The disadvantage of using someone else's code is that you have to use someone else's code. Sounds stupid but that's basically the whole deal. Code is code.
dont copy paste if you don't know what it does is what my take is
better to learn what it does and then copy paste because then you'll know much better about it (fix bugs n stuff)
I think it depends on how much you're using. If it's a few lines that inspired you that sounds fine, but for large sections of code permission and/or attribution is ideal. See https://theindiestone.com/forums/index.php?/topic/2530-mod-permissions (which says the default is "Credit Where It's Due") as well as the modding policy https://projectzomboid.com/blog/modding-policy/ (which clarifies that we own our mods)
@sour island The name of the mod included 'onlineshop'.
I'm not familiar with that one - are you looking for the challenge of making a shop mod? If instead, you're just looking to use a shop - do the 3-4 shop style mods not have what you want?
depending on the mod structure, you can just hook up to its functionality rather than copying the whole thing into your own mod
@frank elbow In the sentence 'This makes it clear that we own the mod', does the subject of own refer to 'The Indie Stone'?
Sorry, my English skills are not good, so my literacy skills are poor.
No worries—"we" meaning the modders. Modders own the rights to their mods, and grant The Indie Stone a license to use/transform them
Anything published is presumed to be owned by the one to publish it.
@sour island I want to make a store mod, but I'm not sure what exactly 3-4 store mod styles mean.
And that caveat is to just avoid litigious asshats who might take advantage of parallel thinking.
I can't sue TIS for adding Cool Hat, which is similar to my mod Cool Hat?? 😡
is lawsuit over a mod code is even a thing?
There's three to four different mods that add shopping mechanics, are any of them close to what you need?
If copyright trolls exist then I'm sure that can too
@sour island So, the codes of the mods I saw were the same or similar. Is there any way for me to check who the original owner was?
You'd have to link them here
The shop mods I know about are starkly different, outside of being shops.
in principle sure, but I mean real court cases
Oh, that idk about. Still seems wise on their part to avoid it
Yeah. Copyright is copyright. Doesn't matter if you made a 2 line mod, it's still copyrighted.
@sour island Could you please wait a moment?
ToS don't have legal power.
This is a modding policy
Very strange way to carry on conversations.
@sour island workshop id : 3014751569
workshop id : 3212300283
workshop id : 3207241204
I feel like this is a purely good citizen behavior thing since it doesn't seem to be a thing that modders would sue other modders, especially some tiny ones, over a snippet of code.
Idt the concern is "modder sues modder"
It's not
Moreso "modder makes a mod, PZ adds a similar thing, modder gets mad (and maybe tries to sue TIS)"
well as far as I'm concerned anyone can take my code, it's under MIT
not that I'm making anything worth taking hahaha
speaking of
This looks sketchy as hell lol
I have this weird issue where I keep track of which squares zombies die on, and it works. But now I added corpse eating mechanic which makes corpses disappear. Simply moving corpses by hand works perfectly every time, but when corpses get eaten they sometimes don't get removed properly, and their data remains lingering in RAM.
@sour island What is this?
The mod you linked- provided Ids for
My question is just, why not use the existing shop mods?
Unless you're interested in the challenge, then ok.
And the weird part is that the way corpse removal works in my mod is by simply running a periodic check on each registered square and seeing if the body is still there, and if not, unregister the square.
And the squares always get unregistered like clockwork. But the corpse eating table, using the same registry, doesn't always ends up deleting the data and it persists even though both the body and the square are gone.
No, I'm interested. The response was slow because I was logging in.
Chuck's second message meant that creating your own mod will be a challenge, compared to using an existing mod
@sour island sir. Is there any problem if I modify or use the mod code in the link you posted?
you're right. Since I am really at a beginner level, it is very difficult to implement it on my own.
You provided the ID.. and it's not my mod. You'd have to ask the author.
Unless you mean the mod I linked yesterday
My answer still applies.
@sour island oh my god! The link mod you posted is the framework for all three mods I looked at earlier.
I wasn't sure whether this was a request for help or just rubberducking, by the way—either way, difficult to provide much without code
even with code it's nearly impossible. Also it's more of a blogposting than rubberducking.
Gotcha
The link Chuck posted was from this ID you sent—you can reach out to the mod author if you want to ask for permission
sorry. Since I don't know much information, I have no place to ask, and I'm sorry for causing you any inconvenience.
No worries at all, good luck with creating your mod! If you have any other questions once you get started, feel free to ask
How can dual-mode firearms (if possible) be implemented?
Is there a way to toggle the "RackAfterShoot" attribute and change the firerate of a weapon through an action? If not, should one make two identical yet separate firearms, one being pump-action and the other semi-auto, that switches in the players hand through an action?
I believe there's a mod that does this already.
Hey, quick question for anyone that knows it, what's the difference between these two?
IsoWorld:getWorldAgeDays() and GameTime:getMultiplier()?
Getting days elapsed from the world origin (start) I have always just used the first one, but is this incorrect or is GameTime better to use? I don't understand the GameTime class' purpose for this situation, like what does GameTime represent? client active time, server active time, relative world time, total world time, etc?
Multiplier is how fast the clock is going
Hello, I am new to modding and I can't get my 3D model to display. I am encountering this error: MeshAssetManager.loadCallback> Failed to load asset: AssetPath{objectname} can somebody help me ?
Probably a typo on where your model/texture is located im your model.txt file
I think i don't know how to name my .txt files in /scripts/ actually it's module_Models.txt for fbx and textures location
They can be whatever as far as i know. Do you use module Base or something else?
in the script file ?
Yes
If you starting or doing small mod i'd suggest using module Base, to prevent issues if you were to forget about them.
like this ?
module Base
{
item Mastersword
{
mesh = models_x/weapons/1handed/Mastersword,
texture = textures/weapons/1handed/Mastersword,
}
}
Its too long, game know to take meshes from models_x and textures from textures folder
this is vanila metal pipe model MetalPipe
{
mesh = WorldItems/MetalPipe,
texture = WorldItems/MetalPipe,
}
this is for example Axe:
model HandAxe
model HandAxe
{
mesh = Weapons/1Handed/HandAxe,
attachment world
{
offset = 0.0000 0.1250 0.0000,
rotate = 180.0000 0.0000 180.0000,
}
}
so in your case it should be module Base
{
model Mastersword
{
mesh = weapons/1handed/Mastersword,
texture = weapons/1handed/Mastersword,
}
}
But to be honest you can put them in completly diffrent folders as long as you state them here and they're inside models x and textures folder (but its better to organise them)
You actually made a typo, it should be model Mastersword not item
Remember ealier I talked about lingering data items? Sure enough the reason I have this bug is because i'm dumb. The way I kept track of coordinates is by doing
world.eatingCoords[coordstr] = bodyID```
which is fine right? WRONG. Multiple corpses can share the same coordinate, in which case only the last one will get handled properly and the rest will float in RAM.
What makes this particularly stupid is that in the same code I have provisions to keep track of multiple bodies on the same square precisely because it's a possibility.
Hello everyone,
I have a question. I'm making a farming mod and I've implemented a feature where, after a plant decays, if it was a tree, it transforms into a global tree class (IsoTree). However, I'm only able to use the vanilla sprites. I suspect the issue is that my custom tilesets lack the necessary configurations for the IsoTree class.
Does anyone know where to find documentation on adding tilesets for IsoTree?
local square = self:getSquare()
-- Spawn tree in current square #default "e_americanholly_1_3"
if IsoTree and IsoTree.new then
removeAllButFloor(square)
-- FIXME: maybe need add dry tilesheets
local tree = IsoTree.new(square, "e_americanholly_1_3")
square:AddTileObject(tree)
end
Does anybody know how to fix the muzzleflash using the same texture as the gun? Never encountered this issue before
Do let me know if it fixes issue
https://steamcommunity.com/sharedfiles/filedetails/?id=3289477877 idk how people mod i just suffered intensely making this addon pack for true music
Hello. Can anyone please send me the vanilla ZomboidSound.bank??? Silly me forgot to make a backup. Would be very appreciated
Re-verify cache?
Instasub for me
You can verify the game files to reset it
yoi guys,
i got a mod idea,i ain't no modder but just an idea.
forgive me if it already exists🗿.
a mod that introduces hordes system,hordes that attack ur base after a specific time interval,till then you can build defences n shit.
maybe making a base a "safehouse" could be the trigger point
horde could range btw 100 to 200 smthn zeds,
maybe there could be levels to the horde depending on the base or smthn
basically the horde system from "the last day on earth"
There is a mod like that. Horde Night being one of them.
dam, I'mma search it up
I know of at least 2, just search for „horde“ on steam
Guys anyone known about IsoTree class?
Any way to trick zomboid into accepting chunkdata from another save? For patrial backup restore (1 cell)
They are trees. 🙂
Hello, i'm making my first mod for PZ and i was wondering if it was possible to add new property to base game item with a script ?
Wdym by a new property ?
A new type of item you mean ?
No
{
DisplayName = Opened Dog Food,
DisplayCategory = Food,
Type = Food,
Weight = 0.8,
Icon = DogfoodOpen,
FoodType = Meat,
CannedFood = TRUE,
EatType = can,
Packaged = TRUE,
ReplaceOnUse = TinCanEmpty,
DaysFresh = 5,
DaysTotallyRotten = 7,
HungerChange = -30,
UnhappyChange = 50,
Calories = 498,
Carbohydrates = 77.56,
Lipids = 12.58,
Proteins = 16.04,
StaticModel = CanOpen,
WorldStaticModel = CanOpenDogFood,
EvolvedRecipeName = Dog Food,
Tags = HasMetal,
}```
You can add new params to the item script it will appear in the items ModData.
I have already sorted out the available methods, thank you.
like this ?
{
NewParam = x,
}```
is there any way to add food expiry params to moddata?
if you want to add new properties to existing items you need to use lua
like if the food is already spawned, can i make it start expiring
Yes, it would be added to the ModData table under the key of NewParam and the value would be x.
You mean like an expiry timer? I thought those are already a thing?
Thanks a lot
In your example you're using a vanilla item- as Albion said, you would need to use Lua to inject into existing items otherwise you need to override the entire script.
certain foods spawn as unperishable items. using DoParam to add the expiration to it seems to break food spawns, but i'm curious if there is a way to add the parameter after it has spawned
Adding stuff in the script for existing items isn't viable as you'd need to replace the entire script though - if the vanilla expiry params are failing there's probably another reason.
What issues are you seeing?
Does anyone know if making vehicles not stop so much when driving on grass and hitting zombies is actually doable? I hate that the cars have no inertia and im hoping i could maybe try making it
daikon had a mod that made everything expire, the result in newly created worlds that had a 12-month time-passed was that all food spawned rotten, then immediately disappeared and the containers would need to be "seeded" so that it would respawn items
Also doParam should be ran from the /server/ folder so that it impacts both clients and server. I think that was a major issue with ItemTweaker at the time.
shared works too
I'm partially hating on /shared/ due to how defunct it is lol
the issue is that containers that spawned food would be broken until players manually seeded them, which is a chore and not many players know to do it
i think i'm hating on server for the same reason
So containers would like constantly respawn rotten food?
Isn't there an option to turn off rotten food deletion?
Hope someone has an answer here for u bro. As I understand it 1st gear isn’t so bad on grass same as reverse. It’s just zomboid cars gear ratios are stupid and you’ll notice your always in 2nd or 3rd on the grass for some reason.
No it would work after the first respawn, but the initial spawn would basically wipe the rotten food off the shelf then the container would not respawn loot until a player interacted with it
I assume the concept is letting people eat expired food at their own risk?
You could create your own version of expiring for foods that are shelf stable
so is it that it doesn't spawn correctly or that already spawned items have problems?
Try Better Car Physics
I think the vanilla expiration system was intended for rotting foods anyway
Nah, it was some weird crusade against Sapphs mod because you can craft like 20 unexpirable things and it basically eliminated the need to even have a fridge
I like it. I Try and get it implemented on the servers I join ngl 
There's a lot hard coded into vehicles and also not enough exposed stuff. 😢
I love the mod but you can make everlasting burritos and dumplings and whatnot that bypasses the need to refridgerate your stuff lol
Incidentally, I re-discovered an onUpdate function for vehicles
not the vehicle part one?
Yeah, that mod requires manual install. But there's a video tutorial on how to do it.
Yeah lmao, that's the one I ran into and my reaction was mostly "heh"
does better car physics do something about zombies completely stopping your car? xP
I've been using on player update and on player swing
Definitely, you can also change the gear manually
the part update is staggered in a weird way
Yeah it appears to be every 10 ticks
then i'll definitely try it, first i have to fix my fps cuz its struggling xP
it targets a rate of every half an in-game minute
is there a way to get engine quality to update?
i can change it, but it never seems to sync with client until the chunk is reloaded
that means it runs inconsistently at different day lengths
Good to know, I recently wrote a vehicle armor and adjustable vehicle part durability mod. Basically make it so some parts take more of a beating. But it uses OnPlayerUpdate/OnWeaponSwing and staggered checks to bounce the hit points back
Armor also takes the hits entirely for its parent part
yeah that's how i found out about it too
I started messing with those Lua events for parts to try and do some fun stuff
RNG load outs for vehicles etc
they're all documented here if you need the details https://github.com/demiurgeQuantified/PZEventDoc/blob/develop/docs/Events.md#vehiclepart_init
I'll check it out
I found out in a print, cause I was working on military ignition (push to start) and unlockable doors.
Rn I have it fire on Init and Create to catch new/old spawns.
I assumed Init covers both, but haven't tested
init covers both, yeah
Good to know ty
which i find a little bit annoying because 'init' yells 'first time initialisation' to me but it's actually the one you don't want to use for that
yeah, i got pretty fancy with those when i was writing an armour mod
Did you release it?
nah
it was supposed to be armour for all vanilla vehicles but the modeller i was working with got busy and then another one came out so we sort of lost our thunder
(i maintain that their models looked a lot better than the other mod though)
Ah, for better or for worse the person I'm working with likes to keep things inhouse
So despite the other mod being a thing I've just kind of written it anyway 💀
I think their armor doesn't work as armor though?
Due to how the game handles hitting cars that is
Speaking of which, I'm really close to just rewriting the weapon hit event and using the hook and releasing it as an API
It would let people aim for headlights or tires
I'll take a look at every item scripts ive added, and fix any missing perishable stuff - people don't usually report these bugs to me 
Rn it's just windows->doors
that'd be very helpful
can just DM you with a running list of stuff o.O
sure
Is there a projects post in moddingCommunity for your cooking/mods Saph?
(I thought there was)
Nvm mixed it up with pwr's farming mod
Unless you have your own discord, for bug reports I try to have people use GitHub or join the community modding discord
We setup a little hub for on-going projects
i never made one, I probably should
i have a discord and a steam post for bugs and stuff
I dont have a lot of time to play so I tend to miss a few things when bug testing
Same
Steam comments are unfortunately a good way to never see anything - almost anything else is better
hehe, yeah
I'll make a project post when I get home from work, should help when releasing new updates 
But they never do end up using it 😭
Like only a very small amount go out of their way to post issues on GitHub
Which is annoying because I don't check steam workshop every second and steam doesn't give me notifications even when I'm subscribed to the thread so I end up not reading them.
most mod users don't have github accounts and don't care enough to make one to report a bug

I call that a win tbh
depends how popular your mods are
idk chief I got 180k subs and 0 github bug reports 
Victory
so there's no bugs 🤔
checks out 👍
But honestly, having a place with some sense of tracking, issue management, beats random comments
If they don't have the patience to sign up to github their reports won't be useful or detailed anyway
disagree
I get plenty of quality reports on discord
every and now and then there's something like this tho
Same logic applies, if they didn't have discord and didn't 'feel' like signing up for it
who doesnt have discord
My greater point is people leaving steam comments are hit or miss, more so miss, cause you can't curate or guide-rail
the difference is that the overlap between pz players and discord users is almost 100% whereas github is for a completely different audience
^
That's fair, but my point wasn't that
gamers don't need github accounts (and honestly i wish they'd stay off it more, i don't want to hear 'where's the download button' ever again 😭)
And focusing on the platform aspect is not what I was talking about
To alter the hypothetical - they find out they have to join a discord-server to report a bug and go 'eeeeh nah'
Chances are the their attitude would suck, and getting useful information from it would be pulling teeth
i feel like we got 2 different audiences for our mods 
havent seen a guy with attitude yet
I probably have a larger pool of people lol
true
Adding some form of guidance is good though - I think we both agree steam comments are less than ideal
steam comments are trash for bugs
Github, discord, something/anything
the other week i had a russian guy posting full pages of comments crying about my mod being abandoned (last updated two months ago) but apart from that i don't really get much stuff i'd want to filter out
I get yelled at for updating, and for not updating too 😐
'Has this been updated? does it still work?'
Dude, the base game hasn't been updated- what would change???
it was quite funny, the impression i got from the google translation was genuine despair
I recently got someone who I think is reuploading the recovery journal, and is upset the item doesn't appear in game (since I made it that way) and they're saying 'mod doesn't work' with no context. 💀
Also, I wasn't trying to say everyone is bad in Steam comments - more so when people are frustrated with an issue - it helps to give them a controlled outlet. Chances are the patient ones will also provide good feedback/back and forth, and the people who just want to vent/yell at the void won't have the energy to sign-up to anything.
Case in point lol
'mod broken', "Oh, can you elaborate?", 'no'
'just saying' types
I stopped reading at "you chose wrong times to update your mods"
The incident about 5 times in an hour isn't true either
This is a case of 'old man yelling at the sky'
Why did you update your mod 17 times yesterday and break my server after I added 194 new mods, Chuck?

