#mod_development
1 messages · Page 312 of 1
This is WorkshopID, not ModID
the workshop id is meant to be added to the mod id
ah, got you
the intended mod ids are WorkshopID\ModID, the game can't detect the workshop ids because of a bug which is why they have a seemingly meaningless \ at the start now
yeah that's a terrible idea lol
the bug that spits out "mods is not a valid workshiop ID" doesn't actually stop teh system getting list of all valid ids...
call getSteamWorkshopItemIDs()in the lua console and you'll get a big list of valid workshop IDs.
i think that method's return is just a list of all subscribed ids, but it doesn't have any way to map them to specific mods because that's what the broken method did
Always makes my happy to see something I made on most popular.
Even if it's only the "one week" popular list.
Is this HighBeam made by you?
Yes
I hacked the headlights so one is in the middle of the front bumper, one floats in front of the car.
Version 2.0 of the mod has even more light because I realized I caould glue VehicleLights to other car parts as well.
How does this work if a function has two variations? e.g.: ItemContainer:hasRoomFor(IsoGameCharacter, float) and ItemContainer:hasRoomFor(IsoGameCharacter, InventoryItem)
Does the "..." handle that and then your code will need to look at the parameters and figure out is the second one is an item or a float?
Or is the "...' just a placeholder in that description and when actually writing the hook you'd put the real parameters in?
... is varargs, all overloads will go through your lua function
since we don't really care about modifying the arguments here ... is the easiest way to not mess anything up
nice work!
Do you know how to achieve lighting effects on a texture?
All I know is 1) an actual light sorurce in the world will be isoLightSource and 2) there are "light is on" textures for all lamps/signs
I previously made an electric weapon that can achieve lighting effects, but I don't know how to make the weapon itself glow.
But I don;t know if the "light is on" textures actually so anything special other than act as an overlay... there doesn;t seem to be any automatic brightness to them, and I assume that comes from the isoLightSouce
Though actually that can't be right, or things like the red/blue glow from an OPEN sign woudl not work.
I want to achieve the effect like the flashing lights on a police car, which seems to work on the texture, but I don't know how to transfer this method to a weapon.
the "_on" texture sheets overlay on the base texture sheet
Yes, I know that sheets work by replacing textures, and that method is suitable for buildings. However, for 3D models, like a police car, it seems there is another method.
There's code in BaseVehicel related to the lightBar
But no equivalent code in HandWeapon
baseVehicle:updateWorldLights() creates and removes isoWorldLights, and there is other code for textures.
If you want to animate guns, have a look at: https://steamcommunity.com/workshop/filedetails/?id=3434653631
Broke lots of stuff for me when I tried it with the fallout gun mod, but I didn't try very hard to figure out why
addLampPost(IsoLightSource) ?
from random idea
I think you can just spawn isoLightsources directly
then on a timer remove them and replace them, swap red -> blue -> red -> blue -> red -> blue -> red -> blue -> etc
I think dynamically changing the light textures in cars are done by the vehicle shader, that can't be really used for other models
It might be possible to edit the basic effect shader to do that, if you can pass it enough information
If you don't need it to flash, only glow in the dark, then it should be very simple. Just copy the basic effect to your mod with a different name, change the model to use it, and multiply the lighting intensity
the framework is FOR the fallout mod, so idk what happened with your game.
But, Load order will do whacko stuff. Make sure they load Down towards the bottom of your monitor direction ( which is bottom )
to avoid that
I'll retry at some stage, the guns looked good
Thanks man, you are a real one.
Hi, who know how i can save liquid in container in craft and add result in the same bucket. For example, I use a bucket for a recipe in crafting and I need to use mode:destroy so as not to copy the bucket. But how can I transfer the liquid to a new bucket, in addition to what is added there. I also use a mapper to return the desired type of bucket
Maybe there is some flag for this?
Check this guide
It notably explains fluids for crafts
Hello! I have a possibly dumb question... is it possible to make it so sprinting zombies drop a certain item if so please could you let me know how im an extreme amateur at all this modding malarkey and would love the assistance
Works great, now I need to assign models to the seats and done, I tried to modify a similar script from another mod but I guess I did some mistakes
I think I need to change some shaders now
Its issue with B42, IIRC character model looked okayihs when it was in the middle of frame without roof and anything?
Yeah, seems like when it overlaps with "vehicle" shader it dissappears and when it overlaps with "BasicEffect" it dissappears only half
So I can't fix it prehaps
So its Shader issue?
I mean it looks like it ig, but I need my truck to have vehicle shader
So there is nothing I can do basically
It really annoyed me when i made my little bird, so i had to fix it up by adding doors, which i did not anticipated before, so they're a bit off...
Won't windows be non transparent?
yes, but if you don't have them installed it will look like crap
How did this fix it I wonder
So you don't see character, i actually removed character rendering untill they fix it...
Ohh, I see
Doors are there just so you don't see that seat is empty
I will publish it like this till they fix it
Does anyone know how to make mods and if yes can you help me?
Any mod-authors looking for art for their mods feel free to contact me. My commissions are open. https://ko-fi.com/i/IM4M71BRLKC
Any ideas?
Awesome! Thanks I'll keep this in mind for the future!
hey all! im making a random spawn mod for b42 and am encountering some issues. https://www.reddit.com/r/CodingHelp/comments/1iuh2cv/hey_all_im_trying_to_make_a_project_zomboid_build/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button has all the info you should need i think, but if not feel free to dm or @ me
Posted by tardigreattv - 1 vote and 1 comment
Hello there, I do not find the errors (red boxes appear ingame) logs anymore in console.txt with current B42 version. Do you know where I should look for them or reactivate them ?
they're still supposed to appear there
they should also appear in any DebugLog file in Zomboid/Logs/
One like the only cure mod
only thing i can think of to try is deleting debuglog.ini and debug-options.ini
Those files also to not include anything (Edit: anything more than console.txt)
Check this page
https://pzwiki.net/wiki/Modding
Holy crap!!! This crazy AI... You son of a... IT DID IT!!! I thought this was going to be impossible. Oh my gosh. I didn't think an AI could freaking make this happen. So much weird code and stuff but holy crap... not only did it get the capacity to 50, but you can STILL equip it at max capacity!
I... I can't breathe! Lmao!
AI did what ?
Well this does not give me the logs errors.. but this removes the errors !
Used LUA to beat the hardcoded container capacity AND how the cart was unequipable past the maximum a character is allowed to "pick up".
Yea we told you it was doable lua side
But we had no idea how
Can you explain what you did ?
For the pick up I'm fairly sure I already know how
But for the container capacity ?
I am going to get it to continue working on things, but it's in this massive code somewhere.
It took 6 tries at this method but it got it. Holy crap 🤣
(And by "I thought it was impossible" I meant I thought it was impossible for the AI to do. I am mostly just messing around and waiting for comments on the main mod to debug.)
Is it this code entirely your own or is that the original mod ?
jesus christ
Could you point out to which part is fixing the capacity exactly because that's a mess
i'm pretty sure most of this code does nothing
😅
and it's written in a way to waste as much performance as possible
Yeaaaa
There's so much going on here
And a lot of stuff that just seem to do the same thing ?
This is just straight up useless
Gonna be honest
This is just purely useless you don't need to put these in a function which runs right after
let me politely disaggree. player is not available at the file laod time
Desagree fucking what ?????
Probably, hahaa.
That he doesn't need to use a function ????
style choice, who cares
this is good practice or literally mandatory in nearly every other language
My point wasn't the events
Anything I'm looking for in particular? I don't know what my main issue is, but the game isn't reading my mod in any of the mod folders that I put it in. I've set up configuration files, tested other mods to see if it was my game, and had other people test the mod and checked log files to check for errors and I dont get any
if you don't do this in your python scripts i get to take something out of your house
Considering how much shit is going on in that file I'm not sure that's needed, there has to be simplifications that can be done in that script
Why would you want to do that absolutely with your python scripts ?
if i import your file i don't want it to start doing things
Yea of course
That's why __name__ == __main__ is here
But for simple Python scripts that's not always required anyway
It's not like it's something mandatory to make your shit work
And tbf this exact example seriously doesn't need that for the simple fact he instantly runs the function right after defining it
- it's local so not accessible by anything else outside of that file
Considering the various mess style choices in that file I'm not sure I'd consider it 
No it's not bad but the script is a mess
the script as a whole is awful yeah
For sure.
i just don't find this one single thing bad
Best not to add more layers to the mess
most (probably all?) compiled languages won't even let you write code outside of a function so a lot of people do this for consistency (or because they don't even know 😅)
To be fair, it's AI, so I could probably tell it to "stop being stupid and remove stupid stuff that does nothing" and it'll remove a lot of that dumb crap and still work.
Your whole code is AI ? 
For this specific file, yes. Like I said I was messing around not thinking it could figure it out... but it figured something out.
Oh boy, it's got the "Final Solution". Not sure if for the mod or SkyNet is about to send T-1000s to my location.
💀
I'd HIGHLY advise you you review that entire code and find what the actual solution is
Because my first glance at it was you tested a fuck ton of solutions and never removed the ones that didn't even work
Don't worry, I'll get there. But for now I'll entertain it. I have created a backup with what worked, so if it completely borks it now I'll be able to still look at the working lua.
👌
Just do it manually man I beg you it'll be faster 
Do you know exactly what the fix was ?
Wait how does this file even work wtf
@bronze yoke this would instantly error out no ?
-- EXTREME APPROACH: Force add custom fields to Java objects
local function applyAggressiveOverrides()
-- Override ItemContainer weight calculations completely
local ItemContainer = zombie.inventory.ItemContainer
local InventoryItem = zombie.inventory.InventoryItem
local InventoryContainer = zombie.inventory.types.InventoryContainer
"applyAggressiveOverrides" okay that makes me lol.
the exact snippet you sent wouldn't, but what it's trying to do is impossible so it probably does further down
the game does actually create tables for java packages like this but it's not usually helpful
i'm not sure what they're *for* but it can be used to reach the .class of classes that are shadowed by other classes
Ok so that's what I thought was going on in that file, it was trying to decorate java functions ?
IsoPlayer.class == zombie.characters.IsoPlayer.class
jeez
Do you even know what the fix actually is ? 
So it runs every hours so it would fix carts every in-game hours
Holy shit it's decorating functions every hours ?
Wait this is actually fucked up ? 
I think I just crashed the AI lmao.
Dear god just go by hand omfg
You can delete 3/4 of that entire code I feel like 💀
Jesus this is terrifying
most of it does nothing or outright causes problems yeah
the ai just tried things until one worked
I'm fucking terrified
the every hour function wrapping is just a straight up memory leak lol
This has to be the worst abomination I've seen in a while 😭
It's not done. It's only partially completed the issue. I'm letting it see it through. Like I said, I already made backup of the working one.
Maaaan you can already pinpoint what's actually fixing your issue here
Delete that freaking applyAggressiveOverrides, that is most definitely not your solution
Do those even do anything ? Are they even used in any way by the game ?
Does it affect only* Lua side ?
these functions will never be called at all, all it does is leak memory every hour
my favorite kind of function.
That's what I thought
Anyone links to some getting started modding tutorials? Kind of prefer text but videos work too. Just looking to get into it a little bit but not sure where to start.
shouldnt you be able to just do this in the event for equipping weapons
In B41, was there a recent change of how the console.txt shows errors in your mod code?
does the code look good? im still very new to coding and figured mods would be a great way to learn but its only been about 2 months since i started learning
no
function Recipe.OnCreate.AssembleImpRifleFromScratch(craftRecipeData, character)
local items = craftRecipeData:getAllConsumedItems()
local result = craftRecipeData:getAllCreatedItems():get(0);
local Inventory = character:getInventory()
for i=1,items:size() do
local item = items:get(i-1)
if item:hasTag("ImpBarrel") then
result:clearWeaponPart("saltybarrel")
local BarrelSprite = item:getWeaponSprite()
local BarrelAttachment = instanceItem(BarrelSprite.gsub(BarrelSprite, "Weapon", ""))
result:attachWeaponPart(BarrelAttachment)
elseif item:hasTag("ImpGrip") then
result:clearWeaponPart("saltygrip")
local ItemType = item:getFullType()
local ItemAttachment = instanceItem(ItemType)
result:attachWeaponPart(ItemAttachment)
elseif item:hasTag("ImpStock") then
result:clearWeaponPart("saltystock")
local ItemType = item:getFullType()
local ItemAttachment = instanceItem(ItemType)
result:attachWeaponPart(ItemAttachment)
elseif item:hasTag("ImpReceiver") then
result:clearWeaponPart("saltyreceiver")
local ItemType = item:getFullType()
local ItemAttachment = instanceItem(ItemType)
result:attachWeaponPart(ItemAttachment)
elseif item:hasTag("ImpMagfeed") then
result:clearWeaponPart("saltymagfeed")
local ItemType = item:getFullType()
local ItemAttachment = instanceItem(ItemType)
result:attachWeaponPart(ItemAttachment)
end
end
end```
Got the crafting lua working on first try, hell yeah
It's not pretty, but it works 👍
The barrel is done differently since it's using weapon type instead of the gunpart type
The clearweaponpart on each section is a backup incase the normal attachment oncreate randomizer somehow fires before this one
Looks decent tho I'm fairly certain some of the early checks are useless:
- check for
not SpawnRegions - check for
SpawnRegionsbeing a table
If SpawnRegions is in fact your spawn points tables, then checking if it exists shouldn't be needed I'd guess as it probably will always be defined by the Vanilla code
getSandboxOptions():set("WorldSpawnRegion", selectedRegion) is that related to your own custom sandbox option ?
If not then that's most likely not a thing/not needed
Wait
No you shouldn't even do that
no nvm
idk for that
The choice of the spawn point sounds good
I just don't know shit about how the game choses where you spawn
Also if anyone knows some optimizations or changes I could make to this, I'm not against discussion
I'm still new to lua
four of your branches are identical, just passing a different string: a function could be used instead
local function addWeaponPart(weapon, item, slot)
result:clearWeaponPart(slot)
local ItemType = item:getFullType()
local ItemAttachment = instanceItem(ItemType)
result:attachWeaponPart(ItemAttachment)
end
function Recipe.OnCreate.AssembleImpRifleFromScratch(craftRecipeData, character)
local items = craftRecipeData:getAllConsumedItems()
local result = craftRecipeData:getAllCreatedItems():get(0);
local Inventory = character:getInventory()
for i=1,items:size() do
local item = items:get(i-1)
if item:hasTag("ImpBarrel") then
result:clearWeaponPart("saltybarrel")
local BarrelSprite = item:getWeaponSprite()
local BarrelAttachment = instanceItem(BarrelSprite.gsub(BarrelSprite, "Weapon", ""))
result:attachWeaponPart(BarrelAttachment)
elseif item:hasTag("ImpGrip") then
addWeaponPart(result, item, "saltygrip")
elseif item:hasTag("ImpStock") then
addWeaponPart(result, item, "saltystock")
elseif item:hasTag("ImpReceiver") then
addWeaponPart(result, item, "saltyreceiver")
elseif item:hasTag("ImpMagfeed") then
addWeaponPart(result, item, "saltymagfeed")
end
end
end
```you generally want to avoid repeating code since it makes it harder to maintain
you could shorten the code further by using a table that maps tags to slots but that may be overengineering
-- if you actually use this, put this table outside of the function, or it will be constructed every time the function runs, instead of just once
-- i put it here only for convenience
local tagAreas = {
["ImpGrip"] = "saltygrip",
["ImpStock"] = "saltystock",
["ImpReceiver"] = "saltyreceiver",
["ImpMagfeed"] = "saltymagfeed"
}
if item:hasTag("ImpBarrel") then
result:clearWeaponPart("saltybarrel")
local BarrelSprite = item:getWeaponSprite()
local BarrelAttachment = instanceItem(BarrelSprite.gsub(BarrelSprite, "Weapon", ""))
result:attachWeaponPart(BarrelAttachment)
else
for tag, area in pairs(tagAreas) do
if item:hasTag(tag) then
addWeaponPart(result, item, area)
break
end
end
end
Oh boy, you gotta know a lot of coding for something that adds such new functions to the game, it is a lot easier to make vehicles and weapons, I think adding items in general is easier.
Vehicles it depends lol
that was my thought a few days ago. Just hook into equip, transfer, etc and wiggle the weights. there's already mods that do that to some extent.
Yeah
Could anyone help me with https://steamcommunity.com/sharedfiles/filedetails/?id=2790428261&searchtext=improvised+flooring mod?
It adds an ability to make concrete floor tiles, but they require wooden floor beneath to place them. Is there any way to fix that? Via modding or something.
I already tried adding the concrete floors to the FloorReplaceSprite list, but it doesnt seem to work
almost done
ERROR: General f:0, t:1741651105594> ExceptionLogger.logException> Exception thrown
java.lang.NullPointerException: Cannot invoke "zombie.util.lambda.Invokers$Params2$ICallback.accept(Object, Object)" because "this.invoker" is null at Invokers$Params2$CallbackStackItem.run(Invokers.java:171).
Stack trace:
zombie.util.lambda.Invokers$Params2$CallbackStackItem.run(Invokers.java:171)
zombie.core.opengl.RenderContextQueueItem.invoke(RenderContextQueueItem.java:77)
zombie.core.opengl.RenderThread.flushInvokeQueue(RenderThread.java:408)
zombie.core.opengl.RenderThread.renderLoop(RenderThread.java:169)
zombie.gameStates.MainScreenState.main(MainScreenState.java:295)```
I get this error after trying to increase the spawn rate of corpses in cars
I dont speak the language of the lua gods
it means you broke it
unfortunately this is the words of the much more evil java gods
Norrr 😦 too bad
I suspected that after seeing the weird rune symbols ($Params2$)
whatever you're doing, you're giving something that wants something, nothing. it's expecting an object and getting nil
Could it be because of B42's redefining of corpses?
they're still an IsoZombie
Hm
did it work before you increased the spawn rate?
It still worked somewhat even with the error
I got the corpses in the car seats but not the trunks
No matter. It's not something im set upon achieving.
Ty for your help anyhow
np, I didn't even know you could put corpes in cars...
Lmao
I really want to fix the bug where you can't retrieve spare engine parts
where should I look for to make a mod to change the location you need to reach to start removing engine parts?
I just killed myself in a car and fell through the floor. nice
lua\shared\Vehicles\TimedActions\ISTakeEngineParts.lua
I haven't test myself because my mechanic skill is low but
I heard that the progress bar is appearing so I believe it's kind of timedAction
client/Vehicles/ISUI/ISVehicleMechanics
damn thanks, gonna check them out
At least, that's where the "move to a place" is added to the action queue
ISTimedActionQueue.add(ISPathFindAction:pathToVehicleArea(playerObj, part:getVehicle(), part:getArea()))
You are interested in part:getArea()
In vehicle scripts the area is defined for each part
yeah Xenos could be right. see the ISVehicleMechanics first
If you want to make it so you can take parts from anywhere near the vehicle, I think there's an area in most scripts for some part fixing, you could pass that as the "part"
I could replace part:getarea() with something like EngineCover?
honestly it doesn't seem like the glitch is being caused by this script
since the takeengineparts function is almost identical to the repairengine function
is this part meant to be a comment?
return true -> the TakeEngineParts action is always valid
return blah blah -> the Action is valid only when blah blah is true
so idk that seems fine but you can test
definitely intentional, can't say why though
very likely that it caused some issue so they just took it out
My man,glad ur working on it
Anyone? please :(
I think that's why I sent you a different function. I guess they just moved the functionality over or smth
Is there any way to adjust where the bullets come out of the gun? I'm playing around with an M60 model, and the muzzle flash/bullet source is below the barrel. Happens for a few other guns in this weapon pack too.
...This all started when I converted the AA12 to solid slugs to make it useful and then started trying to work out why the bullets were not lining up with the barrel.
fair assessment - is that the "world" attachment location?
I've managed to break things now and the gun work in-game but does not show up in the attachment editor anymore. oops.
Rolling back all my changes lol
Muzzle attachment location. Go into the attachment editor, load in the gun model, then use translate on the muzzle to move it to the proper place
thanks!
that fixed the bullets, but not the muzzle flash effect.. but I should stop screwing around with this and just ignore it since if I'm firing a long gun I'm not doing it while zoomed right in.
What’s wrong with the muzzle flash? They use the same attachment point
It appears below the barrel when I fire the gun... I'll try to get a useful image
Try reloading the game with the new muzzle placement, and spawn a new gun
I already restarted, spawning new gun... nope.
VOLUME WARNING
Steam recording of zomboid either has no sound or all PC sounds, and combining an M60 on autofire with The White Stripes is... not very harmonious.
Wait I think I might have the issue - there is M60 and M60_NoMag and Attachment Editor seems to be getting confuses that the M60 model is using the M60_NoMag mesh. Or something.
The attachment editor also seems to get very confused if a model definition is overriden by another mod.
I guess I need ot make my own 100% custom gun one day.
Do u know how to make your own muzzle?
I want to make every mod gun have different muzzle,but don’t know how to do it
Odd.. what Very Salty Oreos said is exactly same thing as I knew so far.
also that muzzle flash with star shaped, they are controlled by muzzle attachment position too as far as I know.
I think it's just a very confusing item/model name structure that the attachment tool can't deal with, And me replicating items to overwrite them confused it more.
let me also make sure I don't have any muzzle flash mods active...
Nope. I vaguely remember mod for better muzzle flashes, but it was probably B41 era.
I personally think the modeling is most confused / difficult part of whole modding. I tried several times but really couldn't get closer myself.😭
It seems to be a mess getting from "model and texture from blender saved to correct file format" to "working in game"
This is why i use my own modules for models
Is there a way to check moodle (or stat) change?
I've put some code in the player update function to call :
player:getMoodles():getMoodleLevel(MoodleType.HeavyLoad) -- for example
and store it in a var to check the next time when the event for player update fires.
The value seem to be 0 most of the time, even if the moodle is showing. (Every few updates it jumps to 3 - I've not seen 1 or 2).
It can be that I don't understand how this moodle level works. (I looked in the Java code but not much info there)
Any advice?
that's extremely strange, that is the right way to query them
Thanx @bronze yoke I'll dig a bit deeper into it.
how hard would it be to make a simple mod that allows you to highlight an area an have it use the "Destroy" action? I want to be able to destroy lots of floor tiles or a large building in debug but having to click every tile is way to much
Honestly more surprised it's not a base game feature
Is the "Moodles in Lua" mod any help? That seems to be a framework that pushes more moodle stuff into accessibel lua.
If you mean the muzzle flash pattern, I'm pretty sure that is 100% java.
good moodles will only show when it reaches level 3. idk why TIS did that
this'll help
@silent zealot why did I just get a bunch of notifications from you? I don't see anything 🤣🤣🤣
I added reactions to your request to bypass the capacity limit
Didn't think of it notifying you, sorry!
Ohhh hahaa okay that makes sense. I was confused; the notifications were weird. They just said "notification" and I opened the app and nothing hahaa.
welp, guess its pointless to try to fix the take engine parts bug since they already fixed it
Yeah, it's probably not a good idea / use of time to fix bugs during an unstable build 😅
Unless you can do it with a quick mods, or it's something they probably won't bother with for a while.. not worth it.
But a lot of bugfix mods are very quick once you work out where the issue is.
DAMNIT I just wasted half an hour trying to work out why the mod I was working on was crashing the game on startup with an error about an apron made out of garbage bags
it's because the game updated to 42.5 on me and now some clothing mod is bugged and overwrites vanilla clothing files.
It’s best to save all game files after each update.
you can compare the updated files next time and see which ones have been modified.
That requires you to know the game updated.
I've been restarting while working on this mod, because sometimes if there's a probalem reload lua will still ignore the file
BUT!
Check this out:
Instead of 800 lines of patching functions I have a working hook on ItemContainer:hasRoomFor() that works with both sets of armguemnt parameters and can correctly pull out the destinationContainer and the weight OR item being put in.
Because that 800 line mod version was fine for personal use but far too risky to release, but this will be much neater once I copy in the "should I ignore the real test and just say it will fit?" logic.
what mod you working on ?
Bypassing container size limits.
Configurable (options for player, equipped bags, vehicles, world containers, etc)
And without needing very specific ways of moving items or making everything have no weight or needing the user to manage negative weight items
Also, the ability to put more than 50 weight of items on one floor square, because that's a silly limitation.
This will also help with @storm trench cart issues - the same logic can be used to violate hard coded weight limits if the destination is, for example, a zupercart.
(sorry for pinging again but you may actually want to know this!)
i got a better way
The limitation is to avoid save issues iirc - but that should be based on array size not weight -- but 🤷♂️
hasRoomFor() return true
Remember when I said "configurable"?
lots of stuff like that
Another thing people may not realize is that the game doesn't have true stacking-- stacks only exist as UI elements. The objects aren't actually merging.
Could be a mod, to compact items as actual stacks. As long as they don't need unique data.
instead of 100% on.
I've done this for game night, as having hundreds of items for say, a TCG - was just not the way to do it.
There is a multiplayer item count limit I didn't touch for that reason, but "weight" is silly to limit... two jugs of water @ 40kg is not going to be a bigger deal than 763 pieces of small stuff @ 30kg
yep,and the inventory pane will also set a dummy item to represent the entire stack of items.
Actually the header item is the first item found of that stack
Which is even more confusing lol
Not exactly
Lets pretend that's why we can put nails and batteries and screws and similar things into boxes.
This dummy item is more accurately a copy of the first item.
Yes, but I'm suggesting that be more automatic, into "piles".
And make actual stacks a thing
Especially on the floor
Workable for things that don't have unique data, but I don't know how much that will help in practice.
If you create a UI for otherpane and don't set this dummy item, selecting "Take All" will always leave one item behind.
I'm pretty sure the "dummy" references the actual item
I remember someone talking about that problem a while ago
This problem has been bothering me for a long time,when i make quickaccess
Because the inventorycontextmenu, when operating on stacked items, automatically removes one dummy item.
This is an actual item, but sometimes it’s not, which is a very confusing point.
I think when the stack is open
Thank youuu.
Here's the current hook code
Kinda ugly. Especially since the second parameter can wither be a float (weight to put in) or an item.
And both versions get called multiple times for a simple drag & drop action, just for funsies.
And lots of credit to Albion for helping me get this working.
It's always Albion!!! Jk we love you Albion.
I like it. Looks good!
What's that ?
- Removed saving used items in crafting to item```
what does this mean
like remove cache?
sound more like items will be consumed when crafting, which was not the case before.
Hi everyone, are there any guide how to make code and mask for blood textures on vehicles?
if you have animated parts dont bother with blood textures since it requires you to use either Ki5 oder Filibuster vehicle shaders, vanilla shaders are not working atm for it. Atleast for me after hours of trying xD
Hey any idea why this is happening?
ERROR: General f:4498, t:1741709189717> ExceptionLogger.logException> Exception thrown
java.lang.NullPointerException: Cannot invoke "String.indexOf(int)" because "<parameter1>" is null at ScriptManager.getItemName(ScriptManager.java:1180).```
function Recipe.OnCreate.ImpRifleAddAdditional(craftRecipeData, character)
local inv = character:getInventory()
local items = craftRecipeData:getAllConsumedItems()
local result = craftRecipeData:getAllCreatedItems():get(0);
local input = craftRecipeData:getFirstInputItemWithFlag("Prop2")
local magfeed = craftRecipeData:getFirstInputItemWithFlag("AllowDestroyedItem")
local inputsprite = input:getWeaponSprite()
local GunAttachments = input:getAllWeaponParts()
local AmmoCount = input:getCurrentAmmoCount()
local AmmoType = input:getAmmoType()
result:setModelIndex(result:getWeaponSpritesByIndex():indexOf(inputsprite))
if input:haveChamber() then
if input:isRoundChambered() then
inv:AddItem(AmmoType)
end
end
if AmmoCount > 0 then
inv:AddItems(AmmoType, AmmoCount)
end
if input:isContainsClip() then
local Mag = input:getMagazineType()
inv:AddItem(Mag)
end
local function addWeaponPart(weapon, item, slot)
result:clearWeaponPart(slot)
local ItemType = item:getFullType()
local ItemAttachment = instanceItem(ItemType)
result:attachWeaponPart(ItemAttachment)
end
for i=1,items:size() do
local item = items:get(i-1)
for tag, area in pairs(tagAreas) do
if item:hasTag(tag) then
addWeaponPart(result, item, area)
break
end
end
end
if GunAttachments then
for i=1,GunAttachments:size() do
local Attachments = GunAttachments:get(i-1)
for tag, area in pairs(tagAreas) do
if Attachments:hasTag(tag) then
addWeaponPart(result, Attachments, area)
break
end
end
end
end
end```
craftRecipe ImpRifleAttachStock
{
time = 100,
category = Assembly,
tags = AnySurfaceCraft,
SkillRequired = Maintenance:2,
timedAction = ChoppingBlock_Hammer,
OnCreate = Recipe.OnCreate.ImpRifleAddAdditional,
inputs
{
item 1 tags[Hammer] mode:keep flags[Prop1],
item 1 tags[Screwdriver] mode:keep,
item 1 tags[ImpStock] flags[AllowDestroyedItem],
item 1 tags[ImpGunNoStock] mappers[RifleMapper] flags[InheritCondition;Prop2],
}
outputs
{
item 1 mapper:RifleMapper,
}
itemMapper RifleMapper
{
SaltyFirearmsFramework.ImprovisedBoltActionStock = SaltyFirearmsFramework.ImprovisedBoltActionNoStock,
SaltyFirearmsFramework.ImprovisedSemiActionStock = SaltyFirearmsFramework.ImprovisedSemiActionNoStock,
}
}```
It's specifically happening after I do the recipe to attach a stock, and then try to equip the gun
No, I don’t have any animated parts in my vehicles. Actually, I’m trying to rework some cars from 1993 pack. I’ve done retextures, proper damage and rust textures, several other improvements. But can’t figure out how blood overlay works in this game(basically vehicles in this pack has no blood overlays) 😢
disabling it prevented the crash tho
oh I think I know the issue, will try to fix``````
I wasn't properly accounting for the sprite name difference due to adding the stock. I forgot that the stock version of the gun uses different sprites due to the tape. Normally the gun sprite stays the same since the only part of the gun that is actually the gun is the tape.
if I made the tape into its own attachment then I wouldn't have come across this issue as the sprites would have always been identical```
size looked fine until I compared it
comparison is the destroyer of joy
I also suddenly began to get these errors
this is what I was playing with: yes it's a mess and it works but changes everything to 250 works for reporting the altered weight but still needs hasRoomFor I think le-sigh
local getEffectiveCapacity = {}
function getEffectiveCapacity.GetClass()
local class, methodName = ItemContainer.class, "getEffectiveCapacity"
local metatable = __classmetatables[class]
local metatable__index = metatable.__index
local original_function = metatable__index[methodName]
metatable__index[methodName] = getEffectiveCapacity.PatchClass(original_function)
end
function getEffectiveCapacity.PatchClass(original_function)
return function(self, chr)
print(self:getType())
if self:getType() == "counter" then
print("Counter = 250")
return 250
else
print("Use original value")
return original_function(self, chr)
end
end
end
Is there a mod that makes any poured liquid visible and pouring while walking leaves behind a trail, which could lead to gasoline trails n stuff
👀
thats when you name it NormalTrunk1, the 1 is generated by the game itself by vehicle type
Why does it happen tho?
because its naming it NormalTrunk11 , not finding the item, generating NormalTrunk111 and so on
strange
mechanicType = 3,
itemType = Base.EngineDoor;Autotsar.ATAMustangHood2Item
item ATAMustangHood2Item3
vehicle is sports car, mechtype 3, so itemtype is itemtype=name3
This only happened while I had the other truck mod installed to test the size, Conflicts I guess
the reason weight is chosen is very likely because it's the only related thing displayed to the user
if it was based on number of items (or even the literal save size: which is too hard to calculate constantly but technically what is the limitation here) it would just feel like a bug
Would be interesting if the vanilla water-on-ground when raining could be changed to any fluid. You'd need to look into how that is coded to see if it's possible.
Does anyone know if there is a function to get the status of water and electricity for the whole world rather than doing things like
(SandboxVars.ElecShutModifier > -1 and getGameTime():getWorldAgeHours() / 24 + (getSandboxOptions():getTimeSinceApo() - 1) * 30 < SandboxVars.ElecShutModifier) or square1:haveElectricity()
to get the satus per square? That or if there is an event to listen for for the power/water being turned off? Same question but for turning the water/electricity back on?
you can use getWorld():isHydroPowerOn() for electricity
there isn't something similar for water
trying to go to sleep last night, I really thought that if I mucked with the "getEffectiveCapacity" function, it would fix the hard weight limit for containers that B42 introduced.
but noooooo
you'd have to patch getCapacity too
I did. It doesn't red out but it causes a timedaction bug
did you patch the methods on both itemcontainer and inventorycontainer?
hi, is there a link for pz modding discord?
Hey yes
I should have it linked on my profile, or @sour island
thanks
Change the UI capacity?
Great. 42.5 messed up the carts. Sighhh.
is ISWalkToTimedAction broken in 42.5? no, because it works fine in my other mods hmmm
I was hoping someone would've left a comment on the Wheelbarrow mod to find out hahaa.
But nothin' since Feb.
I'll get there. Just want to patch the spawns first.
That's a lot of socks.
don't knock the socks
Having clean socks is important.
ok, I know I'm not the smartest sock in the drawer, but is there something wrong with this code that I'm not seeing? Player just stands there and doesn't move.
if JB_MoveCorpses.donePickedUpBody then
JB_MoveCorpses.droppingOff = true
getWorldMarkers():removeAllHomingPoints(JB_MoveCorpses.playerObj)
-- do a normal drop corpse
print("Dropping off a body...")
local drop = ISWalkToTimedAction:new(JB_MoveCorpses.playerObj, JB_MoveCorpses.stagingSquare)
drop:setOnComplete(function()
print("Dropping Complete")
JB_MoveCorpses.playerObj:setDoGrappleLetGo()
end)
ISTimedActionQueue.add(drop)
return
end
worked in 42.4, but not in 42.5
Did anything change in the timed actions?
you know, probably. It doesn't like my unequip now either. It'll do it, but it complains
Are you meant to do ISTimedActionQueue.add(ISWalkToTimedAction:new(player, dest))
wait, I see you do
just by putting it in a variable first
try recreating the steps via lua console and see if thay gives any clues. Try without the setOnComplete, not because it looks wrong but just to try an isoltae what the game is unhappy with.
I'll give it a try. Probably the corpse I'm dragging is breaking something
i did see some grappletech changes
it'll do everything but walk
time to dig in
btw, just clicking on ZomboidDecompiler is so much easier than typing out the command. thank you @bronze yoke
I saw that 
me too
When the game updates while you're working on a mod and you don't notice: A story told in git commit comments.
I'm not that paranoid about people linking my real name to my discord name, but it's just best practice not to post your real name for no reason.
Are you using Tasrlib?
I'm pretty sure they have a lua table that is a whitelist of which vehicles can go on which trailer
i didnt see vanila vehicles in the hauler spawnlist
dont think so
i see only ATA, motorclub and k15
so i would have to add like 90 more cars ?
Can the Tasr trailer pick up vanilla cars?
If it can, then something is missed or in the tasrlibs like adding all vanilla cars or something
oh i didnt try it as i know autosar trailer, didnt think library had one
If it can't, then that's why copying the code means your trailer cant.
I assume you're using this as the base for your trailer picking up vehicles: https://steamcommunity.com/sharedfiles/filedetails/?id=2992677535&searchtext=trailer
spawn one of those, see if it can haul vehicles.
You mean visually?
i take a pic
I don't know how that library handles showing a vehicle on trailer, maybe they do it via setting part condition.
no need for a pic, just clarify what you mean ny "vehicles spawn on it"
If it's actual vehicles (i.e. seperate cars) spawning when you repair that is very weird, if it's just a visual thing on the model that makes sense.
whatever was done, you can't drag a corpse using "walk to" anymore either
damn, that was my secret for making corpse dragging faster. Walk To + F4
Or use a mod to automate it, then hit F4 and play Yakkity Sax.
yep, my Auto Move Corpses is broken now
path finding isn't failing, it's just not progressing
Does your load a non-vanilla car that is on your whitelist?
This was causing the issue in OnEquipTrolley.lua
playerObj:getCurrentState() == PlayerAimState.instance()) then -- here
-- Code that drops the cart/trolley
end```
nope it doesnt
I guess it was running every time the player moved.
this is what mine looks like
so do i need to rename the files inside to my vehicle name ?
Is your trailer called "TrailerAHauler"?
nope and ima try to change the name
so i changed it all to my vehicle name and it wont load in debug mode but was fine before i changed name
that will be because ATA2WreckerTable.CarCarrier does not exist so you can't create `ATA2WreckerTable.CarCarrier["Index"]
ATA2WreckerTable.CarCarrier = {} will fix that BUT this does mean that ATA2WreckerTable.TrailerAHauler existed BEFORE this lua file was loaded, which would be in the file listed in the require line.
What is in the ATA2WreckerTable.lua? (may be in the tsarlib common library, not the trailer)
Could be that list vanilla vehicles and then this is adding more.
there alot more in the tsar library
makin sure im doing it right
sorry im really stupid
But you have a few points to examine the code from: looking on both trailer & common library, when is ATA2WreckerTable accessed? How is it configured for the existing trailer? What code displays "there is vehicle at the behind..."
No, that's not going to work; require is more-or-less "load this other lua file before this one"
So it needs to be a file that exists.
Assuming the common library doesn't have a nice how-to-use document you're going to have to look at the code to figure out what it wants to tell it which vehicles are valid for which trailers.
so i have to go through all the tsar and see which one is which
or should i be in the client folder only looking because wont lie there alot of folders for ATA
Are you usingan IDE (VSCode etc) or just a text editor?
Because if you use VS Code and open a mod's top-level folder it is super easy to search for something in all files.
random question)
frame ≠ tick
correct?
but is it worth I aware this when using events? Or can I assume two are same when modding common things?
correct, frame == one update of the screen, tick == one update of game world
If you pause the game then it's not doing ticks but frames are still being generated
❤️
Depending on what you want to do, they might be interchangable
i can use either or Notepad++ mainly
I didn't know exact difference but you just teached me. thank you 
I'm not sure if Zomboid does multiple ticks per frame when you accelerate time or if it just makes each time calculate a longer piece of game time.
Rimworld for example does more ticks when you speed up time; 60 TPS for normal speed, more TPS for higher speeds until your DPU can't keep up
I'm pretty sure they doesn't multiply ticks when game is fast forwarding because OnTick really wasn't effected by time multiply.
ISWalkToTimedAction:update() is only running through once when grappling. What would call the update function? It runs normally when not grappling.
scratch that, I jumped the gun
all checks are in update. just makes it to the end of update and then calls stop. idk
the Tsar library said trailerhauler changed it to this and still doesnt work
not sure tbh what i actually need to look for, there is a loadvehicle and launchvehicle in the tsarlibrary so would i edit that as well ?
Don't edit anything in the library
When you publish your mod, you can't say "edit Tsarlib so it works with my mod (and probably not other mods)"
Is the problem that you still getting this message?
If so, find the code that creates that message and work backwords to see why it is getting triggered.
You probably start by finding that text in the translation files to get the identifier, then seeing where in the code that is used.
yea it that message but not sure where i would find that, ima start in the loading
If you have the folder for tsarib open in VScode you just search for the text.
If you are searching manually 1) try VScode but 2) when you ignore 1. because you're going to get around to it later start with the translation files.
nvm found it, but not sure if i just copy and paste, and add mine
Are these framerate or tick?
I thought those are tick but I just saw someone said that is a frame rate so...confused
You know just look at the W900 B42 mod there is a car trailer too, maybe you can get some inspiration there how it's done. 👍
cant load cars with that mod
Then that's a problem on your end, because it's working ^^
also they use tsar mod, you take tsar mod out it wont work
it in tsar not the mod itself
I mean I made the car trailer for the W900 but okay. It's handled with the wrecker table and in the trailer script. But it's been a while and I have to go to work so can't help much atm. But good luck.
thanks! and that the problem i just cant load cars on the trailer, found the code but i need a coder to look and tell me what i add or make to get it working
Too catch you up this is the issue.
You could play around with the spawn distance and area in the vehicle script. But having the car to close to the trailer can cause this too
And how is your wrecker table file named, dont name it the same as the one in Tsarlib
walk to timed action only ever seems to break when it cant path to that square. are you trying to get adjacent square? sometimes i drop that to fix it
General question: Is anyone else having issues with setting public fields on Java classes via Lua?
Using Lua, I can retrieve the appropriate instance of java.lang.reflect.Field. Calling its methods works (e.g. field:setInt(obj, val)); but only in Debug mode.
Running the same mod in non-debug, I am greeted with this exception:
java.lang.RuntimeException: attempted index: setInt of non-table: public int [...] at KahluaThread.tableget(KahluaThread.java:1667).
Is this something, that's expected?
You're not supposed to set the value of fields
Sadly it's not supported
Damn, guess I'll have to wait until indiestone implements some Setters for the SmokerSneezeTimers
Thanks for the reply though! Much appreciated ❤️
Hey friends, first, thanks @bronze yoke for the assist. Now my question is a little bit more obtuse. I cannot seem to find out how to patch built in functions such as the isHydroPowerOn() one.
The code is probably not configured for the dimensions of your trailer, I suppose this mod stipulates a fixed distance based on the center of the trailer, so very long trailers would not work because they have this "action zone" in a space that the trailer itself is already occupying.
Hey, trying to make an on.create code where 1 part is a secure result and the other part is a variable, but I'm struggleling to figure out how to add the variable result after the secure result.. Here's the code, I've been deep diving into lua codes and functions but I am at a loss of how to continue, does anyone know what I'm doing wrong?
To clarify the issue, the result is already occupied by a different item than planks, so that cannot be used as the secured product
But this can’t be just the wreckerTabke though ? Doesn’t it have to be something else because it calling that file
That right. I did move the area in game but seemed it didn’t work so I’m lost. If it not the wrecker table not sure what it could be
Iam back home in an hour you could send me a zip with your stuff and I take a look then quick.
Hi guys, made a mod to change some distribution tables (reduce cassette spawns) and it works flawlessly in solo, but when I add it to my server (pre-existing), it loads and I can see my character, but it says that connection was lost. Any idea why? All other mods are the same on server and on solo world
Be warned I don’t have any Lua scripts but the wrecker table, also trued comparing notes with the WS900 like I originally planed and couldn’t find what I needed. But that could be because I’m jumping in the deep end with this
That's fine just DM me. @simple helm
Is anyone able to tell me, is the ElectShutModifier just a number of days after apo when the power goes off? It looks like it is initialized as a seeded random (with setting modifiers) when the world is created but I just wanted to be sure. I am hoping that I could update that value with an an item to say the current gametime plus a set number of days along with using setHydroPowerOn to account for the mods and 1 offs in the source where they manually check if it is off to account for edge cases. Essentially creating an item that will reenable the HydroPower for a few days.
what does OnAddToMenu do in building menu recipe? I made a custom recipe in it and everything works as it is but i just dont know what OnAddToMenu does, it makes my recipe dissapear instead of adding...
Can't really see for sure, but there is an
SandboxVars.ElecShutModifier = 30;
Which I believe would indicate it shows it in days, but I'm not really sure
here is an example from the vanilla, tho it works fine without it
That was my same assumption lol it's rough trying to test that, altho I guess I can just set it to 1 and set the item value to 1ore testing. Appreciate it
I may be wrong here but it isn't a required param. It would just be there for validation I'd assume
maybe its for things like walls that become upgradeable as skill levels increase
Hi there! where can I find the vanilla traits to modify them? I need the location, I want to modify some values
I have a question, where is the trailer attachment point in vehicle editor?
Don't you have to add it yourself?
In txt file*
Then it appears if i remember correctly
yea if you dont have it in the script it wont show ingame
you can go in the editor to attachments and click new too
but you have to rename it then
I'm not sure if vehicle editor can add new attachments. I know that attachment editor can, but vehicle editor requires you to put template like other parts?
on the left
Is it possible to put image into the modoption?
There is for sanbox option, not sure about modoption
Thanks, I remember I had it in the script, I checked all the tabs and didn't find it, guess I'll try again
Btw, I'm working on a new style of mechanics menu as I suck at making textures
Any feedback on such menu? I know seeing the parts visually is better but I just can't make it
yea mechanic menu takes a bit of effort to do, atleast if you want the mouse over to work.
but i think its ok the way you have it.
Ill resize it to not cover the top and bottom of the UI and add some custom attachments for now, maybe some armor but only for aesthetics
if you just want the visual go to modeling channel there in the pins, Skizot made a tool for blender to generate it
I remember I did it manually for my other car mods
in the media folder of the game files it's - lua -> shared -> NPC's -> MainCreationMethods.lua
Some armor I guess...
While making armor models doesn't seem to hard, coding it might be a nightmare, at least thats what i feel, never checked other amor mods
It is, coding it simply for aesthetics it's really easy, make a template and just add it
but i'll use tsar for armor maybe
Hey is there someone that can Lua script pretty good here that I can pick your brain at ?
Yes, but LUA only mentions them! I want to modify the trait. I'm looking for the class file, but I can't find it. I found something in bodydamage, but it's not specifically what I'm looking for, I think
Even using the games Walk To and picking a nearby square while holding a corpse is broken. I can't find what is stopping the path find.
tried switching ISWalkToTimedAction to ISPathFindAction and no change. It's either hiding in timed action handler or in getPathFindBehavior2()
It's no longer necessary, IndieStone took care of fixing it
Probably owing to my relative inexperience with modding in this game…
I’ve got this issue where my weapon attachment model is scaled right when I place it on a surface like a table or whatever but when I attach it to the gun it’s about the size of 6 McMansions put together.
Trying to find the answer on google has wasted more time than I would’ve spent just messing around with it.
Kinda my first post here so if someone has asked previously and been addressed then I apologize.
Hey you need to scale it correctly when exporting it, alongside its model script
The gun scale might matter too idk
That's why you need to make sure to not need to scale it in the model script but directly export in the right scale
I have, as far as I know - but maybe I’m doing it wrong.
I tried following that to the letter and I’m still having issues.
I’ll play around with it more I guess, thanks.
Show me your attachment in blender
Unless its vanila attachment on your custom model gun?
I will when I get back to my computer.
Both custom.
Then once you send them we will examine whats wrong
Henlo peoples, made a mod to change some distribution tables (reduce cassette spawns) and it works flawlessly in solo, but when I add it to my server (pre-existing), it loads and I can see my character, but it says that connection was lost. Any idea why? All other mods are the same on server and on solo world
No idea, hope someone else can help you out
Oh, maybe you know how to solve my other issue :D
I have Improvised Flooring installed, but I cant place concrete floor tiles on grass - it requires wooden floors. Any idea how to solve that?
I tried overwriting the games canMovableBePlaced logic
But it didnt help/work
From what I've seen that's a pretty common issue for floor mods, I don't know how that would be solved either as I haven't touched Moveable objects just yet, so I might end up in same issue as you 😅
Damn, that sucks, I just wanna build my 300 car walmart parking :D
If you end up solving that, please share the solution
Aye, will do
the placing moveables logic has a lot of restrictions on it. I've modified it a bit to make placing posters where ever i want in one of my mods. you'll need to hook ISMoveableSpriteProps:canPlaceMoveable and ISMoveableSpriteProps:canPlaceMoveableInternal
id have to see what your distributions look like
Thank you, ig I'll have another look. Previously I looked into the Internal one, there was a check for a tag CanReplaceSprites, which was only attached to player-made wooden floors, so I tried giving this tag to the concrete tiles, but to no avail
What do you mean by that?
Just to reiterate, the same setup works on solo worlds, but breaks my server
put up your distributions lua , there some things that will pass in solo but a server may not like
I hope I understood you correctly. My mod doesnt add anything to the distributions on its own, only changes existing entries. I looked at MoreLootOptions to understand how it works
require "Items/Distributions.lua"
require "Items/ProceduralDistributions.lua"
require "Items/SuburbsDistributions.lua"
require "Vehicles/VehicleDistributions.lua"
local function isTargetItem(itemName)
return string.find(itemName, "^Tsarcraft%.Cassette") or string.find(itemName, "^Tsarcraft%.Vinyl")
end
local function multiplySpecificItemChances(zoneKey, itemList, multiplier)
if not itemList or not itemList[1] then return end
for i = 1, #itemList, 2 do
local item = itemList[i]
local chance = itemList[i + 1]
if type(item) == "string" and type(chance) == "number" then
if isTargetItem(item) then
print("[CassetteReducer] Modifying chance of: " .. item .. " from " .. chance .. " to " .. (chance * multiplier))
itemList[i + 1] = chance * multiplier
end
end
end
end
local function loopOnAllDistributions(distributionTable, multiplier)
for zoneKey, zone in pairs(distributionTable) do
if type(zone) == "table" then
if zone.items then
multiplySpecificItemChances(zoneKey, zone.items, multiplier)
end
if zone.junk and zone.junk.items then
multiplySpecificItemChances(zoneKey, zone.junk.items, multiplier)
end
if not zone.procedural then
loopOnAllDistributions(zone, multiplier)
end
end
end
end
local function ModifyDistributions()
local mult = SandboxVars.CassetteReducer and SandboxVars.CassetteReducer.Multiplier or 1.0
if getActivatedMods():contains("MoreLootSettings") then
mult = mult / SandboxVars.MediaLootMultiplier
end
print("[CassetteReducer] Starting distribution modification...")
loopOnAllDistributions(ProceduralDistributions.list, mult)
loopOnAllDistributions(Distributions, mult)
loopOnAllDistributions(SuburbsDistributions, mult)
loopOnAllDistributions(VehicleDistributions, mult)
if ItemPickerJava and ItemPickerJava.Parse then
ItemPickerJava.Parse()
end
Events.EveryOneMinute.Remove(ModifyDistributions)
end
Events.OnNewGame.Add(ModifyDistributions)
Events.EveryOneMinute.Add(ModifyDistributions) -- safety backup
Events.OnServerStarted.Add(ModifyDistributions)
ok overkill on require. technically the requires shouldn't be needed, and also overkill on adding to events. I add mine to only OnInitGlobalModData
i bet its the onserverstarted since it breaks in server. something in here may not be available when that event fires and it breaks it
It's my first time modding pz and using lua, sorrgy
So if I change event to yours it should work?
that event is just one of the last one to fire before its done loading everything
a lot of events can be used really. but yes i would think it would work
you're good you've done a lot for your first time
Thank you, is there any source to check what events exist? I tried looking here https://projectzomboid.com/modding/zombie/Lua/Event.html but couldnt find any lists
declaration: package: zombie.Lua, class: Event
Oh wow, there's a ton of them. Thanks a lot!
Is there a way to modify a mod.info by using another mod? Im using random zombies (for speed) and definitive zombies (for everything else) and the load sorter doesnt place DZ after the random ones. I know that sorter looks up loadafter in .info file, but dont want to edit the mod files in the workshop folder
Damn, that's unfortunate
Simply make sure to load one above the other in the load order of your mods
I know, Im just lazy and I add new mods very often :)
Definitive zombies and random zombies will be incompatible
Both affect the stats of the zombies and set them at specific times
Random zombies will get overriden by definitive zombies
Anytime its effects apply to zombies
Yes, but not if I turn off the speed changes in DZ
Random zombies does change other stats, but Im only interested in speed. So I think if I load the rz before dz, rz will affect speed and dz will control everything else
That's not how it works
Load order doesn't impact stuff that way
It completely depends on other criterias
hmm
I've been playing like that for a couple days and dz is after rz but the speed changes are certinly from rz
It completely depends on how these mods work
Your idea sounds good
But zombies will get their stats set by random zombies unless you can deactivate that for stuff other than speed
And DZ will set stats anytime there's a stat change needed
Hmm, there's no easy way to check if other stats are replaced by rz or dz
Not really unless you go deep in their code or do some tests
Ig I'll just make a rz patch with all stats but speed removed
Random zombies stats are set when the zombie loads in
I hope that's what he does in his mod
It does ?
By defautl it's every 7.5 secs
Very fun, especially when you are surrounded by shamblers and one randomly turns sprinter
What random zombies mod are you using ?
Wait you're on B41 ?
The "Frequency Override" determine how often the zombies in the current active cells are being overridden with the values you selected in the mod. It's in milliseconds which means that the default 7500msc translate to 7.5 seconds.
yeah?
bruh
Also loadafter is not a thing in B41
Load order doesn't matter in B41 anyway
When I make custom patches I add loadafter in mod.info and it sorts it as I set it
Because mods do not follow the load order you give them for the Lua files
awesome stuff
Actually it's great
as if lua modding wasnt confusing to me already
Because it's the job of the mod devs to define load order for Lua in B41
And load order just doesn't matter in the game anyway
Load order is a lie to players that it matters when in fact it doesn't
It only matters for maps and tiles
And that's great
Because that means no incompatibilities
Or less
Not due to load order at least
load order also affects models and textures from what ive seen
@bright fog do you know, by any chance, how to make movable tiles ignore floor restriction? (improvised flooring)
No idea sry idk anything about tiles
Perhaps ask in #mapping
It's, ok, thx
Will do
this is how i've gotten around it. this is the basic function i've made for it. it also needs to be done in normal canplacemoveable
local original_canPlaceMoveableInternal = ISMoveableSpriteProps.canPlaceMoveableInternal
function ISMoveableSpriteProps:canPlaceMoveableInternal( character, square, item, forceTypeObject )
if item:getType() == "youritem type"then
return true
end
return original_canPlaceMoveableInternal(self, character, square, item, forceTypeObject)
end
load 'order' is kind of a misnomer since it rarely affects the literal order in which things load, especially in b41
a name like 'mod priority' would make sense since it's primarily used to resolve file conflicts
I could make a wiki page about that perhaps
That way anyone wants info about load order, poof just give them the page
Thx
Big help
be warned that this is something people have strong wrong opinions about
Even better to demystify it
yeah, but whenever i've tried to demystify it they just get mad at me 😭
That's why if we bring proofs for it that's perfect
i do bring proof, they just get mad
If they fuck around modifying the wiki page to spread wrong informations I'll fight them lol that's fine
And they continue spreading wrong informations, fighting to modify the wiki page with wrong informations when proof was given for the right information then actions will be taken 
Could be me, could be you, could be anyone who doesn't accept proof of things working X way, that's fine
However I don't have B41 on my PC to test things out in detail
That fixed my issue! Thanks again
Judging by this script in the mod Im using
keep HandShovel/Shovel,
Plank=1,
BucketConcreteFull=1,
Result:Moveables.improvisedflooring_missing_0_16,
Time:60.0,
NeedToBeLearn:True,
SkillRequired:Woodwork=6,
Category:Flooring,
Prop1:HandShovel,
AnimNode:Forage,
Sound:MakePlaster,
}
My type would be "Moveables.improvisedflooring_missing_0_16"?
that should be right
I just look at the last paragraph and check which function (and line) triggered the crash
aight
how can i access the tooltip of an item for translation? I mean if its just text, not a variable
What are you trying to achieve here ?
Tooltips are defined in the translation files
even if the item tooltip is Tooltip = "here is some random text" ?
i was here https://pzwiki.net/wiki/Tooltip
but if its not made like that
Tooltip = "枪托<br>瞄准时间-6<br>伤害+0.5",
how do i change that?
you probably can't
yea i figured xD
technically anything in the Tooltip = 'whatever' field is a translation string even if it's not meant to be one
but the prefixes (Tooltip_) are important and it may ignore your translation file if it doesn't have it
so i would have to change it by modifying the item itself, cancer huh xD
you could modify it with lua instead```lua
local item = ScriptManager.instance:getItem("ModuleName.ItemName")
if item then
item:DoParam("Tooltip", "My english tooltip")
end
Yeah
could also turn it into a proper translation string and then fall back on the actual translation system
Sounds like the best option if you don't find any other tricks
Also why tf do they have a tooltip that doesn't uses translation
That's fucked up
yea its the escapefromkentuckyb42, hopefully they will change that later down the road
most people don't really care about translation :/
Aaaaaazh
I thought it was vanilla files !
Jesus
yea but chinese is a bit hardcore to ignore
Just ask them to replace their tooltips with translation files
That'd be my first go-to
And if they don't ... welp fuck it guess you have to patch it
^^
A handbrake vehicle mechanic would be dope
Let's say a person forget to pull the handbrake, the vehicle slowly moves on or smthn
🗿
Adds immersion to the driving
If I sent someone a script or 2 can someone tell me if it’s a good script or not for my vehicle or if they are completely useless
so currently the gun starts out as a bolt action, and installing the mag feed turns it into semi action
but I was wondering if maybe I should make it so it stays as a bolt action mag fed rifle until you upgrade the receiver
bolt action -> bolt action mag -> semi action
maybe even a side grade to make the bolt action stronger but incapable of adding a mag
quick question, does does affect loudness/volume the user hears from the game?
{
file = media/sound/growl5.wav,
volume = 0.3,
} ```
yeah
thank you ❤️
i tried to make it in a loop but its not working, any idea? made it work, what a hassle.
hey so im trying to check tsar library to see if there a maxload for vehicles or anything in that nature and there nothing, so would script in general need to be written for just that
what maxload you mean, trunk? or amount of cars you can load onto the trailer?
max it can hold
its not rly anywhere specified but it can only hold 1 car. and no clue how to alter that 😄
Question: With distribution lists, would "items, 50" make the item have a 50% chance of spawning? Wondering how it works
This is what I'm trying to do: --ArmyLightTruckBed-- table.insert(VehicleDistributions["all"]["ArmyLightTruckBed"].items, "CorpseFemale"); table.insert(VehicleDistributions["all"]["ArmyLightTruckBed"].items, 50);
I think it's weighted chance? meaning it compares to all the other options
it is not weighted
it is a flat chance but there are so many modifiers applied, most of which aren't static, that there is no point trying to come up with a mathematical perfect chance
base it on similar items and test it out if you're not sure
how do i enable the zombie range for vision and hearing in debug mode?
I haven't checked but I supposed it would be in F11 menu then option at the top left
And one of the toggable most likely has the range thing
thats the one place i havent checked. will try it in a while.
It can hold one vehicle. If you want it to hold more than one you'll need to make your own code to do it.
Did you read through this description of how it works?
Guard. I hate the design of naked triggers, they're going to catch on things and go off accidentally
I didnt even know you sent that thanks ill look at that but will need to find a vehicle scripter to help me write it or pay to help
Do you want realism or video-game tropes? Tropes will make the bolt action much more powerful to compensate for the low rate of fire, realism will make bolt action slightly more accurate because of fewer parts moving about when you fire. Not sure if Zomboid can simulate partial loss of aim between shots from having to rack the bolt manually, that might all be part of "recoil"
Is there text limit when editing steam workshop description?
I just recieved Russian translation but for some reason, steam didn't let me update description.
When I removed half of text, then they were uploaded sucessfully.
text size is 9.53kb
there is a length limit
The Zomboid gui has a limit that you can bypass with copy-paste.
(also, is there any way to stop Zomboid overwriting the description when you upload an update?)
no I'm editing workshop directly via steam client
Paste the removed half in, to see if it was length or some character combination it did not like.
always copy workshop desc first.. only way 
I save it to notes.txt in each mod... if I don't then I will one day wipe it all out by accident.
thanks ill add the mod and take a look, i assume they can load more then 1 animal dumb question but want to confirmm
Yeah I tried and.. seems 70 lines is the limit?
length limit means line limit? like how much line I can use
seems 70 lines is the limit?
no it isn't
maybe mix of line and text size..
Odd to have a line limit. I've never hit the workshop length limit through the website so no idea what it might be.
Worth noting that having Russian will use up more space than english, assuming it's UTF-8
Yep my EN desc is 5.04kb(88Lines) and RU desc is 9.53kb(91Lines)
So that could be the reason.
I'd ask to GPT for diet the size 
ill ask this vehicle dev ive been working with tomorrow and see if he would beable to help, as not sure if writing this code for me is above my skill set
i have a friend who 100% is behind with his code he sent me but idk if it right
if i remember it's just a character limit
thank you for confirming
So that should be because RU has bigger character size than EN.
after I cut some sentence, it was uploaded.
maybe it's 8kb. when I reached 8.88kb, i couldn't upload but when I reduced until 7.82kb i could upload
item:DoParam("Tooltip", "<RGB:1,0.5,0.5>"..value) is this doable? or do i have to make some complicated stuff to have that work? (color the tooltip while writing it)
Pretty sure that won't work, the toolip paramter for items is "look this up in the translation file"
Tooltip = Tooltip_item_NotARealAxe, then Tooltip_item_NotARealAxe = "Not suitable for cutting trees or damaging doors.",
and if you embed the color in the Tooltip it will call getText("<RGB:1,0.5,0.5>Tooltip_item_NotARealAxe") which it won't find.
But, maybe you can put the color in the translation string?
will check, thx
Another option: Starlit Library has an easy to use function to add stuff to tooltips.
Example of adding "grown at" to tooltip with Starlit.
damn thats some strange apple trees 😄
"These apples are very high in nickel and cadmium"
Applejack’s family farm??
must be zap apples
shit nvm
I bet I did that banging my head on my keyboard
I did get excited for a second though
Can anybody give me some advise when I don't want to overwrite vanilla function, however I really don't know how to with this.
(Because it's an UI function and I really don't know how to deal with UI in PZ. also single function is huge with many local vars.. I lost my way with those)
I don't want to update my mod when PZ hit every major updates.
Code: https://pastebin.com/DUhuFtS9
All I've edited line is: #110 - #119🔽
-- #110
if craftRecipe:getXPAwardCount() > 0 then
titleStr = titleStr .. "\n"
for i = 0, 100 do
local XPAward = craftRecipe:getXPAward(i)
if not XPAward then break end
local skill = Reflection.getField(XPAward, "perk")
local exp = Reflection.getField(XPAward, "amount")
titleStr = titleStr .. "[" .. tostring(skill) .. "(+" .. exp .. ")]"
end
end
-- #119
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Handling PZ's UI makes me crazy D:

+) Problem was
After I hooked succefully(?) Like I've done before with other mods and I attached all local vars with okay value, but UI Size and text position had a problem.
Think of it this way:
Can you add code in front of the function that does what you want?
Can you add code after the function that does what you want?
Can you hack a function call used half-way through the function to get the results you want?
Sometimes the answer is "nope" to all of those, ad you have to replace the whole function. Sometimes you need to get weirdly creative; recreate bits of the origianl function to see what it did then have yoru code do extra stuff.
For this example, I don't think you can do it by messing with titlestr since it's a locally created variable, it gets populated and then rendered, plus the height of it gets used to position other items. It's also a function in a function so I'm not sure how to even access that bit directly instead of working on ISWidgetRecipeListPanel:createChildren():
function ISWidgetRecipeListPanel:createChildren()
self.recipeListPanel.doDrawItem = function(_self, _y, _item, _alt)
What if... you hook craftRecipe:getTranslationName() and make that return "Recipename\n[ someskill (10 exp)]"
...which will probably break other things unless you can figure out a way for getTranslationName to tell if it's being called from teh place you care about.
you can just hook the function that calls it to hook the inner function and then unhook it after
how many vertices for a complex piece of armour is considered normal?
at what amount does it start getting absurd?
So: ISWidgetRecipeListPanel:createChildren() PREFIX: add hook to craftRecipe:getTranslationName()
ISWidgetRecipeListPanel:createChildren() POSTFIX:unhook craftRecipe:getTranslationName()
you'd have to patch doDrawItem as a postfix to createChildren()
since that function doesn't exist until after createChildren() but is the one we actually want to modify here
there's a lot of layers here 😅
Sorry I'm fighting myself with English more than lua stuff.. :p
So does that mean anyway I will have to overwrite whole doDrawItem?
Oh no or... I may be able to try something. I just got an idea from both of your conversation. idk it will work tho.
thank you both for sharing opinion 🙂
❤️
What about adding an extra text string with the XP instead of modifying the title?
That would work, but probably painfully because of how much fun UI programming is
I tried that first before uploading item, like 2 weeks or so and failed
Writing UI with text was pain... I will try that again later but I have a trauma now lol
My body felt tried even all I did was watching UI codes 😂
Hey guys! Is everything okay?
I want to develop an automation that automatically records critical events of my character, such as bites, scratches, sprains and fractures. So, whenever one of these events occurs, a clip of my live stream will be automatically generated. I think that with some of these features, it would be easier to foster engagement for our game.
Can anyone just guide me on how to do this?
I don't think it's possible with pure lua modding...? Since there's no video recording feature in zomboid.
interesting idea btw 👍
in fact, I had thought about creating a mod that records these events in a log, and perhaps a system in python would be an option to identify these events and interact with a Twich bot to execute the action in the API.
but, my area of expertise is audiovisual production, I have ideas but I have no idea how to execute them in the backend 😂
yeah, to do things like this you basically want a mod that writes the info you need to a file, and then have some external program watching that file for changes and using that data to do the rest
seems interesting, i would like to see like those running apps with logs and events and like mapping it.
well, then. I think that the gameplay itself is very intense, and we end up losing several details that could greatly encourage the production of content for our game.
it would even be possible to register moments when we find certain items on this log. This would make future cuts for social networks much easier. I honestly have no idea how to start developing this, but I can help in any way I can, not only in this project but, in any other that makes sense to those involved 🌱
I'm from Brazil, my english is not that good, but that's the least of my problems kkk
i'm here, racking my brains thinking of ways and possibilities to attract maximum visibility to this world
local function saveLog(character, damageType, damage)
local file = getFileWriter("logFileName.ini", true, true)
-- 2nd boolean: create new file when file is not existed.
-- 3nd boolean: remove existing log when it's true. otherwise, it will be added bottom of file.
if damageType == "typeYouWantToRecord" then
local data = "putTextHere"
file:write(data)
end
end
Events.OnPlayerGetDamage.Add(saveLog) -- This will run "saveLog" function everytime when player get damage.
I believe this code will do something with writing a log. I haven't use this feature before, but when i looked the code, it seems.
Important: Never tested
@jagged fulcrum hello my friend. I saw your mod updated today for b42 that removes the vision cone, and I found it interesting. If I understand correctly, could i use it to capture "cinematic" images of the world? hat would be great
and all you have to do after saving log, I guess python read the log when log has updated?
yeaah! and I thought of something like that.
it tracks the impressions in this log in real time and communicates with the twitch bot using the
$(customapi.https://api.thefyrewire.com/twitch/clips/create/instantclipsbot/$(channel)?title=$(queryencode $(1:)|'0'))
anyone up for a collab? i got permission from dylan to use his tiles and set everything up, but it's pretty simple right now since i automated the recipe scripts doing it manually for 128 items would've been a hassle. just need to balance the recipes, stats and rename stuff to make it more lore friendly and less repetitive. 😅
rn they also drop the same materials when dismantled since all of them are built with woods even some are metals, can change it tho😆
stacks of chair best defense
Can you have a process watch a file and so stuff when it sees an appropriate entry?
console.txt is super easy to write to, and you can write to other files as well (someone recently was output json every minutes for a web server to display)
oh that barricades look great for decorating my base😍
Could you group them into a few general types and then use a decoholic-like interface to change the appearance?
that, but I can't develop from there... I'm even trying to use artificial help 🙈
good idea on implementing the deholic mod feature! i think i can do that just need to look on how it works
More work to setup, but then less to maintain - you just have recipes for wood barricade/scrap barricade/metal barricade/junk barricade, and a table of "junk barricade can be any one of these appearances"
And less clutter in the build menu
What triggers can the video software you are using accept as input?
You need to match up "some form of output Zomboid can generate" with "some form of input my streaming software will listen to", possibly with a program in the middle.
i need perms on PePePePePeil tho haha
Or build your own equivilent... but if you can make use of decoholic instead that will avoid going insane trying to code a UI.
I hate modding UI even tho i do webdev and software lol hahah
Ill try to modify the UI to practice
My experience with webdev is that it doesn't make you like UI design, it just shows you many different ways to hate it.
facts
I'm a designer myself and designing/creating UI in PZ is something.... coding.
Even I'm experienced of web design too..
At a previous job I managed to get the company out of IE6 compatability by insisting we made it a seperate line item with an honest estimate of the time needed.
Once the client realizes you're serious about the cost doubling if it has to support pixel-perfect rendering in IE6 it's easier to get out of it.
can you please visit our company too? haha
#mod_development message
nothing makes people reconsider outdated tech faster than seeing the true cost of keeping it
you can do whatever you want
Crossover time!
That would be sick
still working on why we can't path find while dragging a zombie and I think I have it pinned down to this code in PathFindBehavior2.java. It doesn't seem to ever get to updateForwardDirection
isReady from AnimationPlayer. When I try and check isReady or hasSkinningData I get nil.
and if I crash or skip the update and/or stop methods in the ISWalkToTimedAction, I can at least get a path back but the player just walks in place and never moves
Anyone know if there is a way I could find out how many of this generic tile prop is on the map or similar ones? It is named industry_2_62 so I assume the 60-64 are variants of it
Or perhaps where building definitions/files are stored for the base game?
If it means anything to you, I had to redo the whole cart/trolley equipping when the update to B42.5 happened because none of the old functions being used were working anymore. So it's might be something you've successfully done, but it isn't working right now. Just something to keep in mind of course.
the java is borked and AnimationPlayer isn't exposed so I can't even fudge it
Ask over in #mapping - they seem to know this stuff. I use room definitions from a list they've made.
I love hitting F12 instead of F11 and screenshotting the error screen that shows all my dumb mistakes or typos
It's mainly to see what the distro of those around the map are. According to the B42 map the room name is "electronicsstore". I basically am trying to create an item and limit its use to these buildings. I will hit them up though if I can't find it.
Items testing, just some small issues
Are you needing a specific count of them or are you just wanting to know how many there are and what they look like?
Cuz there’s a debug menu option to spawn in tiles
I just want the count of them and their default locations on the map to see if there are enough to be a viable location that isn't impossible to get to but also not super easy. and Is power adjacent in style/feel. Initially I was thinking the substations but there are only 2 and they are distributed oddly.
Basically the item I'd like to mod in would, at least in the early rendition, be taken to one of these areas to be used to turn the power back on for some amount of time. Already have the item working, will have to figure out using Sandbox settings to allow fine tuning, but for the early tests I just want to get to a point where it is more than just expensive to build because in late game that won't be as much an issue.
After manually counting them via the b42 map I think for an initial requirement those spots will do. Looks like most of the cities have at least 1 nearby.
First armor test
I got issues with the door armor tho, it doesn't want to open with the door, I did it right in blender but I guess the problem is in the script, ill try to add parent = DoorFrontRight,
Fixed it
Feedback on ungly armor
@tacit pebble how does your magazine api differentiate between mags loaded into the gun?
I'm thinking about using it for something, but I would want to be able to do a lua check on the gun to see what mag is loaded for rendering purposes
Anybody ever figure out a sure way to override animations? ConditionPriority doesn't work for what I need it for.
how would i go about creating an addon for true music?
By reading their documentation
it's good, home-made armor sould be ugly.
what are you trying to do?
i have
But protect the headlights too!
i have been uh trying for a while
but i should have been clearer my apolagies
i mean, i dont understand where to start
But how would it work?
Look at another True music addon and see how they did it.
i already have vscode and the other tools necessary
Thank you
visually or in code?
Visually a few metal bars in front of teh light, or a grid.
recessed behind bulbar
Hmmmmmmmmmmmm
they dont say how they did it in the description
how would i see exactly how they did it
Go in the mod files
subscribe to mod, then go to C:\Games\Steam\steamapps\workshop\content\108600<mod number from steam url>
I highly advise you check out the wiki on how to mod
(adjust based on steam location)
setMagazineType("module.magazine") after inserting magazine
idea)
if you are thinking about different 3D model for each magazine type then
your original weapon 3D model should have no magazine at first, and magazine should be render as attachment (Like scope/muzzle/flashlight)
getMagazineType will return current magazine type btw
Yeah I already have mag detection, just needed to know how it works for your mod.
Thanks, may use this in the future
Any idea why the skeleton isn't showing in vertex groups? I set the relation to child of bip01
it changed the location of the armour but did not add the skeleton to the weight editor
im sorry i dont get it
i feel useless
tbh
forgot to add the modifier
You need to give more detail on where your stuck or we can't do much miracles for you
¯_(ツ)_/¯
i get that
i just dont get any of it
like any
where to start because i have found the mod template folder
and i just dont know what to do with it
nope that didn't fix it
- create/rename folders
- place folder in right place
these two step what you have to do at first
strat slowly 🙂
or you can capture and show to us the wiki section which you couldn't understand .
Make sure you are looking at a reference mod too
if youre adding true music addon best way to do it is just get a similar addon mod for TM and then replace musics with yours then rename them
if youre on b42 try replacing stuff on this mod https://steamcommunity.com/sharedfiles/filedetails/?id=3407139462&searchtext=time-accurate+music
if you are subscribe go on this dir: C:\Program Files (x86)\Steam\steamapps\workshop\content\108600\3407139462\mods\truemusic_tpab42\42
if its your first time basically you need to change the mod.info first, open it and change everything
then on media/lua and media/scripts just rename everything haha look how they did it on the files.
thats basically it on textures/worldItems that is the texture of the 3d model in game so you need to also replace those
and then on the yourMusic folder just copy how they did it lol
legend mate
thank you
if you're dedicated enough, you'll figure it out, even if its your first time. its actually pretty easy the only real challenge is the first attempt, but after that, you'll get the hang of it
wait i recognize your name, did you make some mods

yea i did some and ported some, tho i only do mods that i want to use personally in my own game😆
no
ah okay
It is surprisingly hard to get data on how much meat you can get from a cow when you're not a professional butcher, so I am asking the greatest collection of self-proclaimed experts in existence: Reddit.
I want to make a mod that starts with the amount of meat to generate as a percentage of animal weight and works backwards, instead of using a whole bunch of stupid made up formulas
are you talking ,eat meat or are you separating into like meat, tallow, bones, etc?
Nope, keeping it simple like vanilla - everything is steak.
so many typos
350-400 lbs
if you know what you're doing, maybe 450
a butcher will say you'll get 35-40% of the weight of a cow in meat
Getting the percentage for a pro butcher is not hard, there is obviously a lot of information on that because people buy/sell cows and butchering services
But what bout Cletus McMoron with a Butchery skill of zero and a machete?
why I am Cletus McMoron. How did you know?
I'm very sure the answer is higher than what Zomboid is giving us!
To be fair Cletus McMoron will casually walk down to the creek and return home a few hours later with half a dozen 20kg fish fillets.
We've had an 1100 lb butchered by I assume his name was Cletus years ago and we got 350 lbs
So he does (somehow) have skills in other areas...
because our next butcher said that ole Cletus probably kept a lot of that for himself
and he caught them by noodlin'
25% is the low end, you can get that from the hind quarters alone and they're easy to cut up. it's a hairy mess so don't do it in your kitchen sink.
Sounds reasonable, 25% mass @ 0 butchery and scale to 50% mass @ 10 butchery
I'm curious to know what reddit says. need to update us
ha, that's way more tame than I expected
why they only give 2 from a 500 kg cow? I need to actually play this game. I had no idea it was so low, oh and there's 1 in steaks I didn't see...
Well, they do this:
But then they apply a huge amount of bizzare and hard to follow functions on top of that
And the end results is not very much.
Hey so I just realized something if I take tsar loadvehicleontrailer code. You think I could just edit that 2 say 6 cars ?
