#mod_development

1 messages · Page 312 of 1

bronze yoke
#

the structure changes are good, just the (intended) mod id change is bad

silent zealot
#

This is WorkshopID, not ModID

bronze yoke
#

the workshop id is meant to be added to the mod id

silent zealot
#

ah, got you

bronze yoke
#

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

silent zealot
#

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.

bronze yoke
#

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

silent zealot
#

Always makes my happy to see something I made on most popular.

#

Even if it's only the "one week" popular list.

slim swan
silent zealot
#

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?

bronze yoke
#

... 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

slim swan
#

Do you know how to achieve lighting effects on a texture?

silent zealot
#

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

slim swan
#

I previously made an electric weapon that can achieve lighting effects, but I don't know how to make the weapon itself glow.

silent zealot
#

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.

slim swan
#

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.

silent zealot
#

the "_on" texture sheets overlay on the base texture sheet

slim swan
#

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.

silent zealot
#

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.

#

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

tacit pebble
#

from random idea

silent zealot
#

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

main pasture
#

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

sonic needle
silent zealot
#

I'll retry at some stage, the guns looked good

granite ginkgo
#

Thanks man, you are a real one.

urban timber
#

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?

vocal obsidian
#

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

granite ginkgo
#

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

slim swan
#

making a new crafting UI,i hope i can make it work

vast pier
granite ginkgo
tranquil kindle
granite ginkgo
#

So I can't fix it prehaps

tranquil kindle
#

So its Shader issue?

granite ginkgo
#

I mean it looks like it ig, but I need my truck to have vehicle shader

#

So there is nothing I can do basically

tranquil kindle
#

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?

granite ginkgo
tranquil kindle
#

So you don't see character, i actually removed character rendering untill they fix it...

granite ginkgo
#

Ohh, I see

tranquil kindle
#

Doors are there just so you don't see that seat is empty

granite ginkgo
#

I will publish it like this till they fix it

mild chasm
#

Does anyone know how to make mods and if yes can you help me?

granite ginkgo
#

What type of mod, it is different for each type

#

I only made cars for now

storm trench
sour island
shy oyster
#

Any ideas?

storm trench
weary helm
mellow frigate
#

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 ?

bronze yoke
#

they're still supposed to appear there

#

they should also appear in any DebugLog file in Zomboid/Logs/

mild chasm
bronze yoke
#

only thing i can think of to try is deleting debuglog.ini and debug-options.ini

mellow frigate
storm trench
#

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!

mellow frigate
storm trench
# bright fog AI did what ?

Used LUA to beat the hardcoded container capacity AND how the cart was unequipable past the maximum a character is allowed to "pick up".

bright fog
#

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 ?

storm trench
#

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.)

bright fog
#

Is it this code entirely your own or is that the original mod ?

bronze yoke
#

jesus christ

bright fog
#

Could you point out to which part is fixing the capacity exactly because that's a mess

bronze yoke
#

i'm pretty sure most of this code does nothing

bright fog
#

😅

bronze yoke
#

and it's written in a way to waste as much performance as possible

bright fog
#

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

mellow frigate
bright fog
storm trench
bright fog
#

That he doesn't need to use a function ????

bronze yoke
#

this is good practice or literally mandatory in nearly every other language

bright fog
weary helm
# bright fog Check this page https://pzwiki.net/wiki/Modding

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

bronze yoke
#

if you don't do this in your python scripts i get to take something out of your house

bright fog
bright fog
bronze yoke
#

if i import your file i don't want it to start doing things

bright fog
#

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
bronze yoke
#

it's a style choice

#

i don't consider something like this bad

bright fog
#

Considering the various mess style choices in that file I'm not sure I'd consider it ohfuck

bright fog
bronze yoke
#

the script as a whole is awful yeah

bronze yoke
#

i just don't find this one single thing bad

bright fog
#

Best not to add more layers to the mess

bronze yoke
#

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 😅)

storm trench
#

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.

bright fog
#

Your whole code is AI ? ShibaScared

storm trench
#

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.

bright fog
#

💀

#

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

storm trench
#

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.

bright fog
#

👌

#

Just do it manually man I beg you it'll be faster ohfuck

#

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
storm trench
#

"applyAggressiveOverrides" okay that makes me lol.

bronze yoke
#

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

bright fog
#

Whaaaaat

#

What they make those for

bronze yoke
#

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

bright fog
#

Ok so that's what I thought was going on in that file, it was trying to decorate java functions ?

bronze yoke
#

IsoPlayer.class == zombie.characters.IsoPlayer.class

bright fog
#

jeez

bright fog
#

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 ? shocked

storm trench
#

I think I just crashed the AI lmao.

bright fog
#

Dear god just go by hand omfg

#

You can delete 3/4 of that entire code I feel like 💀

#

Jesus this is terrifying

bronze yoke
#

most of it does nothing or outright causes problems yeah

#

the ai just tried things until one worked

bright fog
#

I'm fucking terrified

bronze yoke
#

the every hour function wrapping is just a straight up memory leak lol

bright fog
#

This has to be the worst abomination I've seen in a while 😭

storm trench
bright fog
#

Maaaan you can already pinpoint what's actually fixing your issue here

#

Delete that freaking applyAggressiveOverrides, that is most definitely not your solution

bright fog
#

Does it affect only* Lua side ?

bronze yoke
#

these functions will never be called at all, all it does is leak memory every hour

vast pier
#

my favorite kind of function.

bright fog
#

That's what I thought

earnest remnant
#

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.

winter bolt
#

shouldnt you be able to just do this in the event for equipping weapons

small topaz
#

In B41, was there a recent change of how the console.txt shows errors in your mod code?

weary helm
vast pier
#
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

bright fog
#

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

vast pier
#

I'm still new to lua

bronze yoke
#

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
granite ginkgo
# mild chasm One like the only cure mod

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.

bright fog
#

Vehicles it depends lol

queen oasis
granite ginkgo
covert cape
granite ginkgo
#

almost done

storm trench
icy night
#
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

queen oasis
bronze yoke
#

unfortunately this is the words of the much more evil java gods

icy night
#

Norrr 😦 too bad

icy night
queen oasis
#

whatever you're doing, you're giving something that wants something, nothing. it's expecting an object and getting nil

icy night
#

Could it be because of B42's redefining of corpses?

queen oasis
#

they're still an IsoZombie

icy night
#

Hm

queen oasis
#

did it work before you increased the spawn rate?

icy night
#

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

queen oasis
icy night
#

Lmao

whole vessel
#

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?

queen oasis
#

I just killed myself in a car and fell through the floor. nice

tacit pebble
covert cape
whole vessel
#

damn thanks, gonna check them out

covert cape
covert cape
tacit pebble
#

yeah Xenos could be right. see the ISVehicleMechanics first

covert cape
whole vessel
#

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?

tacit pebble
#

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

bronze yoke
#

definitely intentional, can't say why though

#

very likely that it caused some issue so they just took it out

late thicket
covert cape
silent zealot
#

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.

tacit pebble
#

seems muzzle flash is fine, but I feel like the gun is floating 🤔

silent zealot
#

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

vast pier
silent zealot
#

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.

vast pier
silent zealot
#

It appears below the barrel when I fire the gun... I'll try to get a useful image

vast pier
#

Try reloading the game with the new muzzle placement, and spawn a new gun

silent zealot
#

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.

silent zealot
#

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.

slim swan
#

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

tacit pebble
#

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.

silent zealot
#

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.

tacit pebble
#

I personally think the modeling is most confused / difficult part of whole modding. I tried several times but really couldn't get closer myself.😭

silent zealot
#

It seems to be a mess getting from "model and texture from blender saved to correct file format" to "working in game"

vast pier
polar solstice
#

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?

bronze yoke
#

that's extremely strange, that is the right way to query them

polar solstice
#

Thanx @bronze yoke I'll dig a bit deeper into it.

coarse apex
#

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

silent zealot
#

Is the "Moodles in Lua" mod any help? That seems to be a framework that pushes more moodle stuff into accessibel lua.

silent zealot
vague marsh
storm trench
#

@silent zealot why did I just get a bunch of notifications from you? I don't see anything 🤣🤣🤣

silent zealot
#

I added reactions to your request to bypass the capacity limit

#

Didn't think of it notifying you, sorry!

storm trench
whole vessel
#

welp, guess its pointless to try to fix the take engine parts bug since they already fixed it

sour island
#

Yeah, it's probably not a good idea / use of time to fix bugs during an unstable build 😅

silent zealot
#

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.

slim swan
#

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.

silent zealot
#

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.

slim swan
#

what mod you working on ?

silent zealot
#

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!)

slim swan
#

i got a better way

sour island
#

The limitation is to avoid save issues iirc - but that should be based on array size not weight -- but 🤷‍♂️

slim swan
#

hasRoomFor() return true

silent zealot
#

lots of stuff like that

sour island
#

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.

silent zealot
#

instead of 100% on.

sour island
#

I've done this for game night, as having hundreds of items for say, a TCG - was just not the way to do it.

silent zealot
slim swan
sour island
#

Which is even more confusing lol

silent zealot
slim swan
#

This dummy item is more accurately a copy of the first item.

sour island
#

And make actual stacks a thing

#

Especially on the floor

silent zealot
#

Workable for things that don't have unique data, but I don't know how much that will help in practice.

slim swan
#

If you create a UI for otherpane and don't set this dummy item, selecting "Take All" will always leave one item behind.

sour island
#

I'm pretty sure the "dummy" references the actual item

silent zealot
slim swan
#

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.

slim swan
sour island
#

I think when the stack is open

silent zealot
#

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.

storm trench
#

It's always Albion!!! Jk we love you Albion.

storm trench
bright fog
vast pier
#
- Removed saving used items in crafting to item```
what does this mean
slim swan
#

like remove cache?

knotty stone
#

sound more like items will be consumed when crafting, which was not the case before.

daring bough
#

Hi everyone, are there any guide how to make code and mask for blood textures on vehicles?

knotty stone
#

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

vast pier
#

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

daring bough
vast pier
# vast pier Hey any idea why this is happening? ``` ERROR: General f:4498, t:1741709189...
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```
granite ginkgo
#

size looked fine until I compared itded

vast pier
granite ginkgo
#

I also suddenly began to get these errors

queen oasis
# silent zealot Here's the current hook code

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
late thicket
#

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

#

👀

knotty stone
knotty stone
#

because its naming it NormalTrunk11 , not finding the item, generating NormalTrunk111 and so on

granite ginkgo
#

strange

knotty stone
#

mechanicType = 3,

#

itemType = Base.EngineDoor;Autotsar.ATAMustangHood2Item

#

item ATAMustangHood2Item3

#

vehicle is sports car, mechtype 3, so itemtype is itemtype=name3

granite ginkgo
#

This only happened while I had the other truck mod installed to test the size, Conflicts I guess

bronze yoke
#

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

silent zealot
earnest remnant
#

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?

bronze yoke
#

you can use getWorld():isHydroPowerOn() for electricity

#

there isn't something similar for water

queen oasis
#

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

bronze yoke
#

you'd have to patch getCapacity too

queen oasis
#

I did. It doesn't red out but it causes a timedaction bug

bronze yoke
#

did you patch the methods on both itemcontainer and inventorycontainer?

queen oasis
#

I did

#

and hasRoomFor

#

it was so easy in my head

late pendant
#

hi, is there a link for pz modding discord?

bright fog
#

Hey yes

tranquil kindle
#

I should have it linked on my profile, or @sour island

bright fog
#

Alternatively, you can find it linked on the modding wiki

late pendant
#

thanks

bright fog
queen oasis
#

need a nap on it to figure out how to change this

storm trench
#

Great. 42.5 messed up the carts. Sighhh.

queen oasis
#

is ISWalkToTimedAction broken in 42.5? no, because it works fine in my other mods hmmm

storm trench
#

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.

silent zealot
queen oasis
#

don't knock the socks

silent zealot
#

Having clean socks is important.

queen oasis
#

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

silent zealot
#

Did anything change in the timed actions?

queen oasis
#

you know, probably. It doesn't like my unequip now either. It'll do it, but it complains

silent zealot
#

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.

queen oasis
#

I'll give it a try. Probably the corpse I'm dragging is breaking something

bronze yoke
#

i did see some grappletech changes

queen oasis
#

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

bright fog
#

I saw that drunk

queen oasis
#

me too

silent zealot
#

When the game updates while you're working on a mod and you don't notice: A story told in git commit comments.

simple helm
#

anyone know how to fix this

#

i assume it part of the code but not sure which one

silent zealot
#

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.

silent zealot
simple helm
#

yup

#

i believe it active

silent zealot
#

I'm pretty sure they have a lua table that is a whitelist of which vehicles can go on which trailer

simple helm
silent zealot
#

Can the hauler pick up vanilla vehices?

#

Not spawn list, ATA2WreckerTable

simple helm
#

dont think so

#

i see only ATA, motorclub and k15

#

so i would have to add like 90 more cars ?

silent zealot
#

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

simple helm
#

oh i didnt try it as i know autosar trailer, didnt think library had one

silent zealot
#

If it can't, then that's why copying the code means your trailer cant.

simple helm
#

yup

#

when i repair my trailer the vehicles spawn on it

silent zealot
#

spawn one of those, see if it can haul vehicles.

silent zealot
simple helm
#

i take a pic

silent zealot
#

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.

queen oasis
#

whatever was done, you can't drag a corpse using "walk to" anymore either

silent zealot
#

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.

queen oasis
#

yep, my Auto Move Corpses is broken now

#

path finding isn't failing, it's just not progressing

simple helm
#

yea so the reg trailer loads a car but mine doesnt

silent zealot
storm trench
simple helm
#

nope it doesnt

storm trench
#

I guess it was running every time the player moved.

simple helm
#

so do i need to rename the files inside to my vehicle name ?

silent zealot
#

Is your trailer called "TrailerAHauler"?

simple helm
#

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

silent zealot
#

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.

simple helm
#

there alot more in the tsar library

#

makin sure im doing it right

#

sorry im really stupid

silent zealot
#

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..."

silent zealot
# simple helm

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.

simple helm
#

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

silent zealot
#

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.

tacit pebble
#

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?

silent zealot
#

If you pause the game then it's not doing ticks but frames are still being generated

tacit pebble
#

❤️

silent zealot
#

Depending on what you want to do, they might be interchangable

simple helm
tacit pebble
#

I didn't know exact difference but you just teached me. thank you spiffo

silent zealot
#

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

tacit pebble
queen oasis
#

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

queen oasis
#

all checks are in update. just makes it to the end of update and then calls stop. idk

simple helm
#

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 ?

silent zealot
#

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)"

silent zealot
#

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.

simple helm
silent zealot
#

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.

simple helm
#

that message doesnt appear just searched

simple helm
#

nvm found it, but not sure if i just copy and paste, and add mine

tacit pebble
#

Are these framerate or tick?

#

I thought those are tick but I just saw someone said that is a frame rate so...confused

knotty stone
#

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. 👍

simple helm
#

cant load cars with that mod

knotty stone
#

Then that's a problem on your end, because it's working ^^

simple helm
#

also they use tsar mod, you take tsar mod out it wont work

#

it in tsar not the mod itself

knotty stone
#

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.

simple helm
#

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

simple helm
knotty stone
#

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

true nova
runic heron
#

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?

bright fog
#

Sadly it's not supported

runic heron
#

Damn, guess I'll have to wait until indiestone implements some Setters for the SmokerSneezeTimers

#

Thanks for the reply though! Much appreciated ❤️

earnest remnant
#

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.

pearl prism
# simple helm Too catch you up this is the issue.

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.

oblique estuary
#

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?

oblique estuary
#

To clarify the issue, the result is already occupied by a different item than planks, so that cannot be used as the secured product

simple helm
simple helm
knotty stone
#

Iam back home in an hour you could send me a zip with your stuff and I take a look then quick.

covert cape
#

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

simple helm
knotty stone
#

That's fine just DM me. @simple helm

earnest remnant
#

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.

vague marsh
#

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...

oblique estuary
vague marsh
earnest remnant
earnest remnant
vague marsh
merry patio
#

Hi there! where can I find the vanilla traits to modify them? I need the location, I want to modify some values

granite ginkgo
#

I have a question, where is the trailer attachment point in vehicle editor?

tranquil kindle
#

Don't you have to add it yourself?

#

In txt file*

#

Then it appears if i remember correctly

knotty stone
#

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

tranquil kindle
#

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?

knotty stone
#

on the left

slim swan
#

Is it possible to put image into the modoption?

tranquil kindle
#

There is for sanbox option, not sure about modoption

granite ginkgo
#

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 ittired

knotty stone
#

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.

granite ginkgo
#

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

knotty stone
#

if you just want the visual go to modeling channel there in the pins, Skizot made a tool for blender to generate it

granite ginkgo
oblique estuary
granite ginkgo
#

Some armor I guess...

tranquil kindle
#

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

granite ginkgo
#

but i'll use tsar for armor maybe

simple helm
#

Hey is there someone that can Lua script pretty good here that I can pick your brain at ?

merry patio
queen oasis
queen oasis
#

tried switching ISWalkToTimedAction to ISPathFindAction and no change. It's either hiding in timed action handler or in getPathFindBehavior2()

merry patio
rugged cypress
#

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.

bright fog
#

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

rugged cypress
tranquil kindle
rugged cypress
#

I tried following that to the letter and I’m still having issues.

#

I’ll play around with it more I guess, thanks.

tranquil kindle
#

Show me your attachment in blender

#

Unless its vanila attachment on your custom model gun?

rugged cypress
#

I will when I get back to my computer.

rugged cypress
tranquil kindle
#

Then once you send them we will examine whats wrong

covert cape
#

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

oblique estuary
covert cape
#

I tried overwriting the games canMovableBePlaced logic

#

But it didnt help/work

oblique estuary
#

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 😅

covert cape
#

If you end up solving that, please share the solution

oblique estuary
#

Aye, will do

true nova
true nova
covert cape
covert cape
#

Just to reiterate, the same setup works on solo worlds, but breaks my server

true nova
covert cape
# true nova put up your distributions lua , there some things that will pass in solo but a s...

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)
true nova
#

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

covert cape
covert cape
true nova
#

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

true nova
covert cape
covert cape
#

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

bright fog
#

Yes, but no

#

No you can't

covert cape
#

Damn, that's unfortunate

bright fog
#

Simply make sure to load one above the other in the load order of your mods

covert cape
bright fog
#

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

covert cape
bright fog
#

I guess

#

Aren't other stats of zombies set to random by random zombies ?

covert cape
bright fog
#

That's not how it works

#

Load order doesn't impact stuff that way

#

It completely depends on other criterias

covert cape
#

hmm

#

I've been playing like that for a couple days and dz is after rz but the speed changes are certinly from rz

bright fog
#

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

covert cape
bright fog
#

Not really unless you go deep in their code or do some tests

covert cape
#

Ig I'll just make a rz patch with all stats but speed removed

bright fog
#

Random zombies stats are set when the zombie loads in

#

I hope that's what he does in his mod

covert cape
#

He does not :D

#

RZ changes stats every n ms

bright fog
#

It does ?

covert cape
#

By defautl it's every 7.5 secs

bright fog
#

What the actual fuck

#

That's no longer needed in B42

covert cape
bright fog
#

What random zombies mod are you using ?

bright fog
#

Wait you're on B41 ?

covert cape
# bright fog What the actual fuck

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.

covert cape
bright fog
#

Thought you were on B42

#

So load order doesn't even matter

covert cape
#

bruh

bright fog
#

Also loadafter is not a thing in B41

covert cape
#

that's strange

#

It works for me

bright fog
#

Load order doesn't matter in B41 anyway

covert cape
bright fog
#

Because mods do not follow the load order you give them for the Lua files

bright fog
#

Actually it's great

covert cape
bright fog
#

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

true nova
#

load order also affects models and textures from what ive seen

covert cape
#

@bright fog do you know, by any chance, how to make movable tiles ignore floor restriction? (improvised flooring)

bright fog
covert cape
covert cape
true nova
# covert cape <@293815892805025793> do you know, by any chance, how to make movable tiles igno...

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
bronze yoke
#

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

bright fog
#

I could make a wiki page about that perhaps

#

That way anyone wants info about load order, poof just give them the page

bronze yoke
bright fog
bronze yoke
#

yeah, but whenever i've tried to demystify it they just get mad at me 😭

bright fog
#

That's why if we bring proofs for it that's perfect

bronze yoke
#

i do bring proof, they just get mad

bright fog
#

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 shrugs

#

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

covert cape
covert cape
spiral hearth
#

is there a guide on how to read the crash logs?

#

or is it just brute force

covert cape
#

I just look at the last paragraph and check which function (and line) triggered the crash

spiral hearth
#

aight

knotty stone
#

how can i access the tooltip of an item for translation? I mean if its just text, not a variable

bright fog
#

Tooltips are defined in the translation files

knotty stone
#

even if the item tooltip is Tooltip = "here is some random text" ?

bright fog
#

Uh wdym ?

#

The tooltip is defined in the translation file

knotty stone
#

but if its not made like that

#

Tooltip = "枪托<br>瞄准时间-6<br>伤害+0.5",

#

how do i change that?

bronze yoke
#

you probably can't

knotty stone
#

yea i figured xD

bronze yoke
#

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

knotty stone
#

so i would have to change it by modifying the item itself, cancer huh xD

bronze yoke
#

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

bright fog
#

Yeah

bronze yoke
#

could also turn it into a proper translation string and then fall back on the actual translation system

bright fog
#

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

knotty stone
#

yea its the escapefromkentuckyb42, hopefully they will change that later down the road

bronze yoke
#

most people don't really care about translation :/

bright fog
#

I thought it was vanilla files !

#

Jesus

knotty stone
#

yea but chinese is a bit hardcore to ignore

bright fog
#

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

knotty stone
#

^^

late thicket
#

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

simple helm
#

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

vast pier
#

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

brave bone
#

quick question, does does affect loudness/volume the user hears from the game?

        {
            file = media/sound/growl5.wav,
            volume = 0.3,
        } ```
bronze yoke
#

yeah

brave bone
knotty stone
#

i tried to make it in a loop but its not working, any idea? made it work, what a hassle.

simple helm
#

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

knotty stone
#

what maxload you mean, trunk? or amount of cars you can load onto the trailer?

simple helm
#

max it can hold

knotty stone
#

its not rly anywhere specified but it can only hold 1 car. and no clue how to alter that 😄

simple helm
#

shm

#

that sucks

vast pier
icy night
#

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);

vast pier
#

I think it's weighted chance? meaning it compares to all the other options

bronze yoke
#

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

brave bone
#

how do i enable the zombie range for vision and hearing in debug mode?

bright fog
#

And one of the toggable most likely has the range thing

brave bone
#

thats the one place i havent checked. will try it in a while.

silent zealot
#

Did you read through this description of how it works?

silent zealot
# vast pier

Guard. I hate the design of naked triggers, they're going to catch on things and go off accidentally

simple helm
silent zealot
tacit pebble
#

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

bronze yoke
#

there is a length limit

silent zealot
#

(also, is there any way to stop Zomboid overwriting the description when you upload an update?)

tacit pebble
#

no I'm editing workshop directly via steam client

silent zealot
tacit pebble
silent zealot
simple helm
#

thanks ill add the mod and take a look, i assume they can load more then 1 animal dumb question but want to confirmm

tacit pebble
#

length limit means line limit? like how much line I can use

tacit pebble
silent zealot
#

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

tacit pebble
#

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 petthespiffo

simple helm
#

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

vast pier
bronze yoke
#

if i remember it's just a character limit

tacit pebble
#

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

knotty stone
#

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)

silent zealot
#

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?

knotty stone
#

will check, thx

silent zealot
#

Another option: Starlit Library has an easy to use function to add stuff to tooltips.

#

Example of adding "grown at" to tooltip with Starlit.

knotty stone
#

damn thats some strange apple trees 😄

silent zealot
#

"These apples are very high in nickel and cadmium"

vast pier
bronze yoke
#

must be zap apples

queen oasis
#

shit nvm

#

I bet I did that banging my head on my keyboard

#

I did get excited for a second though

tacit pebble
#

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
#

Handling PZ's UI makes me crazy D: stressed queasy

#

+) 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.

vast pier
silent zealot
#

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.

bronze yoke
#

you can just hook the function that calls it to hook the inner function and then unhook it after

vast pier
#

how many vertices for a complex piece of armour is considered normal?

#

at what amount does it start getting absurd?

silent zealot
bronze yoke
#

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 😅

silent zealot
#

"Well you see, LUA... is like an onion"

tacit pebble
#

thank you both for sharing opinion 🙂

#

❤️

silent zealot
#

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

tacit pebble
wet monolith
#

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?

tacit pebble
#

I don't think it's possible with pure lua modding...? Since there's no video recording feature in zomboid.
interesting idea btw 👍

wet monolith
#

but, my area of ​​expertise is audiovisual production, I have ideas but I have no idea how to execute them in the backend 😂

bronze yoke
#

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

brave bone
wet monolith
#

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

tacit pebble
#
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

wet monolith
#

@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

tacit pebble
#

and all you have to do after saving log, I guess python read the log when log has updated?

wet monolith
vague marsh
#

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😆

vague marsh
silent zealot
#

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)

tacit pebble
silent zealot
wet monolith
vague marsh
silent zealot
#

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

silent zealot
#

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.

vague marsh
silent zealot
#

Or build your own equivilent... but if you can make use of decoholic instead that will avoid going insane trying to code a UI.

vague marsh
#

Ill try to modify the UI to practice

silent zealot
#

My experience with webdev is that it doesn't make you like UI design, it just shows you many different ways to hate it.

tacit pebble
#

I'm a designer myself and designing/creating UI in PZ is something.... coding.
Even I'm experienced of web design too..

silent zealot
#

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.

vague marsh
#

nothing makes people reconsider outdated tech faster than seeing the true cost of keeping it

jagged fulcrum
drifting ore
#

That would be sick

queen oasis
#

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

earnest remnant
#

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

earnest remnant
#

Or perhaps where building definitions/files are stored for the base game?

storm trench
queen oasis
storm trench
queen oasis
#

I love hitting F12 instead of F11 and screenshotting the error screen that shows all my dumb mistakes or typos

earnest remnant
granite ginkgo
#

Items testing, just some small issues

vast pier
#

Cuz there’s a debug menu option to spawn in tiles

earnest remnant
# vast pier Are you needing a specific count of them or are you just wanting to know how man...

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.

earnest remnant
granite ginkgo
#

First armor test

granite ginkgo
#

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

granite ginkgo
#

Feedback on ungly armor

vast pier
#

@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

storm trench
#

Anybody ever figure out a sure way to override animations? ConditionPriority doesn't work for what I need it for.

vital raptor
#

how would i go about creating an addon for true music?

bright fog
silent zealot
vital raptor
silent zealot
#

But protect the headlights too!

vital raptor
#

i have been uh trying for a while

#

but i should have been clearer my apolagies

#

i mean, i dont understand where to start

granite ginkgo
silent zealot
#

Look at another True music addon and see how they did it.

vital raptor
#

i already have vscode and the other tools necessary

silent zealot
granite ginkgo
#

It would cover them

silent zealot
#

Visually a few metal bars in front of teh light, or a grid.

#

recessed behind bulbar

granite ginkgo
#

Hmmmmmmmmmmmm

vital raptor
#

how would i see exactly how they did it

bright fog
#

Go in the mod files

silent zealot
#

subscribe to mod, then go to C:\Games\Steam\steamapps\workshop\content\108600<mod number from steam url>

bright fog
#

I highly advise you check out the wiki on how to mod

silent zealot
#

(adjust based on steam location)

tacit pebble
#

getMagazineType will return current magazine type btw

vast pier
#

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

vital raptor
#

i feel useless

#

tbh

bright fog
vital raptor
#

¯_(ツ)_/¯

#

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

vast pier
tacit pebble
#
  • 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 .

drifting ore
#

Make sure you are looking at a reference mod too

vague marsh
vague marsh
#

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

vague marsh
# vital raptor 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

vital raptor
bright fog
vague marsh
vital raptor
#

oh lol

#

did you make that time accurate music one?

vague marsh
vital raptor
#

ah okay

silent zealot
#

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

queen oasis
silent zealot
#

Nope, keeping it simple like vanilla - everything is steak.

queen oasis
#

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

silent zealot
#

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?

queen oasis
#

why I am Cletus McMoron. How did you know?

silent zealot
#

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.

queen oasis
#

We've had an 1100 lb butchered by I assume his name was Cletus years ago and we got 350 lbs

silent zealot
#

So he does (somehow) have skills in other areas...

queen oasis
#

because our next butcher said that ole Cletus probably kept a lot of that for himself

silent zealot
#

hahahaha

#

The Redneck tax?

queen oasis
#

I was a Kentucky boy

#

so Hillbilly tax

queen oasis
#

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.

silent zealot
#

Sounds reasonable, 25% mass @ 0 butchery and scale to 50% mass @ 10 butchery

queen oasis
#

I'm curious to know what reddit says. need to update us

silent zealot
#

I will!

#

first answer lol

queen oasis
#

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...

silent zealot
#

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.

simple helm
#

Hey so I just realized something if I take tsar loadvehicleontrailer code. You think I could just edit that 2 say 6 cars ?

tacit pebble
#

Can I give a force to vehicle?
Like, vehicle slipping on puddle tile.
the red arrow is where I want to give a force.

#

or something like... friction coefficient? Like driving on snow