#mod_development

1 messages · Page 373 of 1

willow tulip
#

have people login to hunt the enemy. if they score well, they get more resources.. If they don't.... well, they gotta pay to buy more drones.

#

Either way the army wins while people with low skill get put in a waitlist for the next drone to come online.

#

(or literally just yaknow, buy the army another drone)

vast pier
#

The best firearms reference books: https://www.headstamppublishing.com

After World War One, the Italian military spent some time studying the effectiveness of reduced-power cartridges, including both pistol calibers semiautomatic carbines and submachine guns as well as intermediate-caliber rifles. One of the rifles developed for the subsequent ...

▶ Play video
willow tulip
#

lol "I have this magazine, and this gun, they don't fit but.."

vast pier
#

I think the prototype magazine was lost to time

#

so he's using a magazine from a different gun that uses the same mechanics

#

to demonstrate

willow tulip
#

ah.

#

As far as prototypes go, I kinda like it

#

does it properly cycle if one section jams? (or easy enough to forward to the next section?)

vast pier
#

I don't think the tab would raise fully if it jams, meaning it wouldn't cycle to the next section until it's unjammed

#

as the tab fully raises and has a lil arm that latches onto a mechanism to cycle to the next magwell

willow tulip
#

ah k, that kinda sucks

#

would be nifty if it actually resolved a jam automatically by skipping to the next section

vast pier
#

wouldn't the casing just, still be in the way from it jamming

willow tulip
#

or a failure to feed, a rack also shifting sections

#

then you'd also see a mag with some rounds left in it and be like "Yep need to replace this mag (or its springs in the ones with a round left over)

#

I dunno I make cooking mods that stab the people who cook.

vast pier
#

lol

willow tulip
vast pier
#

I've been working on this one mod for over a year now, and it's only recently become actually functional

willow tulip
#

I'll do the same for yours if you want.

vast pier
vast pier
vast pier
#

Neat so it turns the context menus into a gui ?

willow tulip
#

that and rewrites how happyness/boredom/ingredient count/etc works

#

along with requires a knife, has chance of injury at low skill and (future plan) food poisoning if your filthy when you cook

#

but id need to rewrite food poisoning to.. yaknow, not kill you.

vast pier
#

I do think it's funny that eating some burnt hamburger is equivalent to drinking bleach

willow tulip
#

it also lets you add multiple of the same ingredient with no penality (just a loss of bonus effectiveness) by just.. adjusting the hunger added

willow tulip
#

RIP im ded

vast pier
#

negative happiness because I added too much cheese.. Unrealistic, it's impossible to add too much cheese

willow tulip
#

Yea. I made it so adding 10lbs of cheese only gives you the happyness of like, 3lbs worth of cheese.

vast pier
willow tulip
#

much more realistic.

#

a little bit of <X> adds a large improvement but more adds less, so you have a reason to collect other stuff -_-

vast pier
#

Unfortunately the introduction of this new mag type means I have added in 2 more guns that are technically the same guns as the other 4

willow tulip
#

but if all you have is 100 <insert farm vegi> then well... just go for it.

vast pier
willow tulip
#

also will show you that no matter how many radishes you use, your still not getting a single damn calorie.

vast pier
willow tulip
vast pier
willow tulip
#

Yes, you can eat all the radishes you want, for free! its like eating wood

#

spicy wood

vast pier
#

That sounds fake

#

Like I know now that it's true

#

but it just

#

what

#

what do you mean there's a vegetable that just, does nothing

#

huh

willow tulip
vast pier
#

how does that even work

willow tulip
#

only like 20% of them have any calories whatsoever.

vast pier
#

but like

willow tulip
#

"Why do I keep losing weight!??!" - guy who keeps eating stuff with 0 calories.

vast pier
#

A teaspoon of mustard has more calories than a giant radish

#

this sounds insane

#

wtf

willow tulip
#

Yes

#

now realize, you need 2000 calories per day to live ok?

pastel wolf
#

there are a lot of foods that barely have any calories

willow tulip
#

so go look up how many calories a potato, cabbage, tomato, etc has...

pastel wolf
#

lots of plants are mostly fibre and water

#

and we just don't digest those

willow tulip
#

yep

pastel wolf
#

you can eat them until you are full to bursting and still starve to death

willow tulip
#

ps 2000 cals in PZ is you just standing around all day.. its more if you walk/jog/do stuff

vast pier
willow tulip
#

PS: eggs are 70 cals 😛

#

you need 30+ per day.

pastel wolf
#

which you very likely are, since you are having to run around and whack things a lot in this game

willow tulip
oak python
#

whats the easiest way to play an animation on a player character?

vast pier
#

I guess that depends on what it’s related to

pastel wolf
#

Does the wiki have a list of all procedural distribution spawn locations?

pastel wolf
#

perfect

wooden stratus
#

Hello all, quick OnFillWorldObjectContextMenu question: When trying to capture a North or West facing door, as pictured, via OnFillWorldObjectContextMenu is there an already established method? My initial thought is to just check an adjacent square as a fallback, but wanted to see if anyone had come up with anything more clever/elegant.

steel wadi
#

not sure what mod that would be.. if referring to the time thing. I got 3-4 weather related stuff.. but I dont remember that being the issue.

iron salmon
bright fog
willow tulip
#

Good job TIS getting PZ to hit 244FPS on my POS rig.
A++ work, I love a good optimization.

vast pier
willow tulip
clear aurora
#

hey! just finished my first mod, how i public it in the workshop?

clear aurora
#

thanks!! i uploaded it! is there a chat here were i can share it?

willow tulip
#

So whats it about anyway? 😛

shy mantle
#

The difference between zoomed out and zoomed in is so funny, you can watch your system go from a beast to a potato in a literal second

lost jay
#

Hi people, I have a really cool idea on applying vehicle vinyl wraps to vehicles. I have a few questions, please dm me if youre free. 🙂 TY!

clear aurora
willow tulip
silent zealot
silent zealot
#

In theory that will get populated with the door for the tile you clicked on and is used by vanilla to populate the door related context menu options... but you might need to click on the tile the door is on when you approeach from the north or west.

#

But I feel it's fine for your mod to have the same quirks as vanilla does when it comes to click position -> door detection.

wooden stratus
#

and thanks for the reply 😄

silent zealot
#

where is fetch.door defined,

Defined? that's a very strong word for this, but... ISWorldObjectContextMenuLogic.java is now the place for most of the world context menu logic.

wooden stratus
#

tyty

silent zealot
#

It was easier to understand when it was a giant lua mess, now it's a giant java mess.

#

That's where it gets set, but it's a bit of a nightmare because fetch is a recursive function with different behaviors based on arguments instead of being broken into getFetchVarsForSquare() that iterates through getFetchVarsForWorldObjects() and getFetchVarsForInventoryObjectsInWorld()

#

Also ISWorldObjectContextMenu.createMenu (LUA) loops through world object so It's even more confusing to make sense of teh logic flow.

#

...yet somehow this is much more fun to work on than the #$%^@#^@ MSSQL stored proc I'm supposed to be debugging.

wooden stratus
#

lol yeah, really makes me wish I could just attach a debugger

silent zealot
#

15 years ago someone who only knew SQL was asked to write a simple "check if this URL responds to a request" logger and instead of a 5 line script it's a collection of huge stored procs and a custom DLL that only works with one specific version of dotNet, because SQL is not the correct language for this task!

wooden stratus
#

that sounds awful, I don't envy you lol

languid copper
#

hello - I am interested in developing a mod that places a custom generator item but doesn't place it in the lootable distribution, instead I would like to hand place a few object instances in interesting spots on the map. Is this easily possible without requiring me to edit the map itself? I am thinking you might need to use a LUA script although I have never modded PZ before.

silent zealot
#

Yes. Making an item and not adding it to loot tables is super easy... you just skip the step of adding it to loot tables.

#

For spawning an item at specific locations there is no elegant way, but the best way I have found is used by Excalibar

#

Basically it has a table of locations and what to put there, every in-game hour (or maybe every 10 minutes) it checks if any of those locations are loaded, and if so 1) spawns the thing and 2) removes the entry from the table

bright fog
willow tulip
#

(Cause im sure we're going to bikeshed about stuff that will be faster to implement then it was to discuss how we'd like it implemented)

#

@dull moss Iv got some mods that bypass the limits properly for MP btw 😉 but Java mod.

bright fog
#

People won't bother discussing before about it, or they already did

#

It's best that other modders come and criticize a report, request or suggestion and the author adjusts it

willow tulip
willow tulip
dull moss
#

Yep

willow tulip
#

but also just proves your point of 'yea modders don't like limits' lol

#

I saw one guy who rewrote every bit of inventory transfer code to break the limits in a MP compatible way -_-

#

but then he didn't bother using reflection to actually.. bypass getCapacity limiting things -_-

#

So it only breaks the limit for stuff that registers with his mod

wooden stratus
#

Is there another step required to make sounds generate noise to attract zombies? I've been testing and increasing the distance values, tried swapping the vanilla event for a local .ogg file, and still not drawing any attention?

    {
        is3D = true,
        category = Player,
        clip
        {
            event = Character/Survival/Carpentry/BuildMetalStructure/SmallPoleFence,
            distanceMin = 2000,
            distanceMax = 2500,
            volume = 0.8,
        }
    }```

this is played via the player's emitter, if that matters
willow tulip
#

there is a specific event I forget the name of that does

#

maybe look into the shout code

languid copper
silent zealot
#

Excalibar is a mod.

#

You need to collect the pieces of Excalibar, which are a mix of random zombie drops and specifically placed items

#

The is relevent code:


P4Excalibar.spawnList = {
    { id="rc", item="P4Excalibar.P4RustedCrowbar", locx=8639, locy=15045, locz=0, x=0.20, y=0.20, z=-0.18, r=0, force=true },
    { id="sb", item="P4Excalibar.P4ExcalibarBook", locx=12342, locy=2132, locz=5, x=0.52, y=0.50, z=0.30, r=160, force=true },
    { id="sb1", item="P4Excalibar.P4ExcalibarBook", locx=7706, locy=11880, locz=0, x=0.54, y=0.49, z=0.35, r=0, force=false },
    { id="sb1-z1", item="Zombie", locx=7702, locy=11879, locz=0, outfit="Doctor", femaleChance=50, force=false },
    { id="sb1-z2", item="Zombie", locx=7703, locy=11880, locz=0, outfit="Doctor", femaleChance=50, force=false },
    { id="sb1-z3", item="Zombie", locx=7705, locy=11880, locz=0, outfit="Doctor", femaleChance=50, force=false },
    [...]



Events.EveryTenMinutes.Add(P4Excalibar.CheckSpawn)



P4Excalibar.CheckSpawn = function()
    local spawnReserves = P4Excalibar.getSpawnReserves()
    for k,v in pairs(spawnReserves) do
        local square = getSquare(v.locx, v.locy, v.locz)
        if square then
            if v.item == "Zombie" then
                local crawler = true
                local isFallOnFront = (ZombRand(2) == 0)
                local isFakeDead = (ZombRand(2) == 0)
                local knockedDown = true
                spawnZombie = addZombiesInOutfit(v.locx, v.locy, v.locz, 1, v.outfit, v.femaleChance, crawler, isFallOnFront, isFakeDead, knockedDown, false, false, 2):get(0)
                if not isFakeDead then
                    spawnZombie:setHealth(0)
                    spawnZombie:DoZombieStats()
                end
            else
                local spawnItem = square:AddWorldInventoryItem(v.item, v.x, v.y, v.z)
                spawnItem:setWorldZRotation(v.r)
                spawnItem:getWorldItem():setIgnoreRemoveSandbox(true)
                spawnItem:getWorldItem():transmitCompleteItemToServer()
            end
            spawnReserves[k] = nil
        end
    end
end
#

From media\lua\client\P4Excalibar.lua

#

If you want to spawn a world sprite (like a placed generator) the commands to generate would be different, but that gives you a basic structure to work with to spawn things from a list when the player gets near.

#

The maybe-not-obvious part is square = getSquare(v.locx, v.locy, v.locz) will get nil if the location is not in the loaded area around the player

languid copper
#

Thank you 🙂

vast pier
#

what is the difference between weapon:getClipSize and weapon:getMaxAmmo ?

fleet bridge
#

for guns that dont have clips?

#

like a shotgun for example, or a revolver

willow tulip
wooden stratus
#

lol thanks, literally just woke up and was back on the trail

wooden stratus
willow tulip
#

(also addSound if its a one off)

#

Do note theres like, 10 different overrides that all call the 14 parameter addSound -_-

vast pier
bronze yoke
#

i don't know for sure, but i imagine if the gun can hold an extra bullet in the chamber that would affect max ammo but not clip size

vast pier
#

Hmm

willow tulip
#

rando scam poster got ^

lofty frigate
bronze yoke
#

because LoadGridsquare is called literally hundreds of times in a single frame, even callbacks that return quickly can impose a significant overhead

#

as somebody who fights to redeem ontick's reputation, loadgridsquare is actually worth avoiding whenever you can

willow tulip
#

someone even made a framework (I forget the name) for doing stuff on chunk load without spamming LoadGridSquare so badly

#

load grid square is pretty much an abomination of programming TBH -_-

#

at the very least it should be loadChunk

bronze yoke
#

unfortunately i've heard of issues with the chunk not being fully loaded when that event is triggered

willow tulip
#

that'd reduce the call frequency by 64 (or more?) and its not like you load less then a chunk at a time

bronze yoke
#

i think it's something like only the bottom layer is actually loaded or something like that

#

i haven't personally run into it since when porting my mods to b42 i happened to find smarter (and very specific to my needs) ways to target specific squares loading rather than just upgrading to a less intensive event but i think sim has had issues with it

willow tulip
#

Should give a Z for the chunk loaded then I guess -_-;

#

I honestly kinda hate interfacing with the world in PZ

#

can't really put my finger on it, but it leaves a sour taste in my mouth whenever I have to interact with world objects/cells/grid squares

lofty frigate
#

pff ok, I liked LoadGridSquare best. So is OnTick better where there is an "if then" and if it is not met the code does nothing?

willow tulip
#

Maybe its just the constant use of XYZ positions instead of having a dedicated int position class...

willow tulip
#

PS if its inside a building you could also consider OnSeeNewRoom perhaps.

#

OnSeeNewRoom: Triggered when a room becomes visible for the first time.

lofty frigate
#

yes, that's what I do. I do TickRate

willow tulip
lofty frigate
bronze yoke
#

would be nice yeah

tough oxide
willow tulip
#

like it could be so nice but because its only used in some places it just adds 3 levels of extra pain

tough oxide
#

yeah, and then the other day i found a constant? for named colors that i feel needs a wrap

willow tulip
#

lol the named colors -_-

tough oxide
#

i mean it seems available - just needs to be context aware

willow tulip
#

pretty sure fluids can only be named colors? -_-;

tough oxide
#

i think a good lua wrapper could do most of the lifting

willow tulip
#

also fluid mixing is still wrong

#

50% black + 50% white = 50% brightness, but that doesn't properly respect gamma colorspace, it should be near 25% brightness.

tough oxide
#

so what about an API like Color.Water.<NamedColor>() and it returns the shape it should be in for the context?

willow tulip
#

also some super weird code that only applys when mixing fluids with the dye tags...

tough oxide
#

and then being able to add new colors that have the same benifit

#

or even Color.Water(<NamedColor>) that looks for a defined color then tries to fall back to the defaults

vast pier
#

is there a way to add a tag onto an instanced item through lua?
I don't mean adding it to the item type/entry, but the individual item

willow tulip
#

public Set<ItemTag> getTags()

#

Nevermind

#
    public Set<ItemTag> getTags() {
        return this.scriptItem.getTags();
    }
#

items don't have their own tags, Use modData

tough oxide
#

not mutable?

willow tulip
#

Doesn't matter if it was, you'd be changing the script item

#
    public boolean hasTag(ItemTag... tags) {
        return this.scriptItem.hasTag(tags);
    }
#

all the code runs directly on the scriptItem

bright fog
willow tulip
#

inventoryItem's don't have tags.. period

bright fog
#

Rip

willow tulip
#

Use modData and <some other hack to do whatever you wanted to use tags for, like onTest if it was a recipe thing)

#

(Check how respirators add/remove filters work for an example of that)

#

Note: Respirator_nofilter variants are not used.

vast pier
willow tulip
#

Just gonna, rewrite all of butchering... to be configurable.. and based on animal weight.

vast pier
#

is it not based on animal weight ?

#

Would be weird for fish butchering to be based on it, but not livestock

willow tulip
#

.. and then a sheett ton of RNG

#

oh and genom stuff that is totally obscured by the RNG

silent zealot
vast pier
#

could have modifiers for animal types while still being based off weight

wraith flame
#

Quick update on the ProjectLife RP framework I've been working on for the past 6 months — about a month out from playtesting.
The core architecture runs a Rust backend that's completely decoupled from PZ's game tick. Economy, jobs, police, NPCs, inventory — none of it runs inside PZ's loop. So when the game hitches at 10fps under load, my RP systems are still running at full speed. Every player action gets a request-correlated response back in a single pass — ACK or ERROR, no silent failures.

The performance difference vs running a full RP stack inside PZ's game thread is night and day. PZ's server tick is 10fps. My backend processes commands in microseconds and returns state before the next frame renders. Database-backed atomic transactions mean no desync, no rollbacks.

tl;dr PZ handles rendering and input, everything else runs on my own stack

#

If anyone is interested in being a play-tester, leave a checkmark above and i will message you on discord when playtesting starts

silent zealot
#

Place item on ground, single player: all done with LUA.
Place item on ground, multi player: all done with LUA.
Drop item on ground, single player: all done with LUA.
Drop item on ground, multi player: halfway through the client side the code swap to duplicated functions in Java because &#$^! YOU.

shrewd tundra
willow tulip
willow tulip
#

the game even nicely increments animal weight every day based on health

willow tulip
wraith flame
willow tulip
#

Like im pretty sure if your away and your generator runs out (Im not even sure it can) your fridge will either act like its been without power the entire time or no time at all

#

I think rain barrels might update with proper amounts of rainfall when you come back but not 100% sure

bronze yoke
#

rain barrels are meta entities

willow tulip
#

Also not sure if animals can breed while your away.. last game I had in B42.12 I never once had a single pregnancy or fertile egg with my farm just outside of load area of my base

#

(maybe had sterile males dunno)

#

Gonna have to add genetic defect viewing to animal info too -_-;

#

im thinking level 4, you can see active defects and level 8 you can see if they carry the gene for defects

#

(apparently you need 2x defect genes for it to be active or something?)

willow tulip
#

I could have sworn I saw something in the climate manager about tracking rainfall though

#

(maybe that was for plants?)

bronze yoke
#

meta entities are simulated even when they aren't loaded

willow tulip
wraith flame
#

chunk authority too was a headache while i was figuring out npcs

willow tulip
#

@paper ibex theres a player craft history?

paper ibex
willow tulip
paper ibex
willow tulip
#

Wondered if I could make my own crafting stations...

#

with blackjack.

#

Fun fact: I once wrote a game with an incredibly complex chemistry system.... I could maybe bring it to PZ in some of the most cursed ways...

#

Imagine a system where you 'cooked' fluid mixes to make something new.

paper ibex
# willow tulip with blackjack.

not sure what your goal is, but the Entity UI is good. The API is still a WIP, though. I managed to get it to work by creating multiple UI components and coding them with initialise() and instantiate()

#

The hardest part is understanding XUISkin?, ISTableLayout, row registration, and calculateLayout(). ||not sure what they are yet, might be related to XML-based User Interface||

willow tulip
#

calculateLayout() gets called on resize and can be used to limit the window size....

#

and by that, I mean part of bugzapper 9000 was about 8 hooks to calculate layout (I was considering just hooking the baseclass at one point) to keep crafting windows from exceeding screensize -_-

silent zealot
# willow tulip Just gonna, rewrite all of butchering... to be configurable.. and based on anima...

A while ago I got as far as asking butchers on Reddit how much meat someone with no idea what they were doing could get from a dead cow. If you want some more input on what is "realistic" then check out the replies: https://www.reddit.com/r/Butchery/comments/1jart6s/roughly_how_much_usable_meat_could_someone_with/

Context: the computer game Project Zomboid recently added farm animals, and they are still very much a work-in-progress with…

willow tulip
paper ibex
willow tulip
#

realistic yields are dumb.

#

Current PZ yields of ... 2000 calories, are dumb

silent zealot
willow tulip
#

everyone is gonna argue anything half way is either too little or too much.

#

So, you start with defaults half way, and go "Have fun!" with sandbox options

silent zealot
#

Yeah, a slider from, 0% to 100% for yield and who cares if the extreme numbers make no sense... people can play however they want, I'm not limiting that sort of thing to some realistic range.

willow tulip
#

fixed one stupid 2d loop that was.. just dumb, and FPS jumped right back to 244 with even 400 ingredients near by

willow tulip
#

we have sandbox options for milk yield, animal age speed, plant yield, plant speed, etc etc etc

#

but absolutely none for animal butchery yield?!?

silent zealot
#

Because the yield code is so ****ed up they couldn't figure out how to make a sandbox option work.

willow tulip
#

the code is so meh that you couldn't even tell half the time what was causing stuff because yield was like +50% -50% based on RNG

silent zealot
#

I remember thinking "it's not worth re-writing this because animals were just added and this must be a placeholder" but that was a year ago

willow tulip
#

and also bugged where butcher hook reduced yield to 20% intended due to bug that applyed 3 times over and devs have refused to fix it stating "it will be rewritten for B43"

silent zealot
#

The fish code is great - half is in kilograms, half is in pounds.

willow tulip
silent zealot
#

But they ignored "No White Strippers"

willow tulip
#

Apparently thats more important than getting more than 1 days worth of meat from a 1500lb cow in a survival game.

willow tulip
#

-_-

silent zealot
#

It was a trivial fix... but rewriting the yield code to be "animal weight * sandbox number * (butchery skill/10)" would also be really quick

willow tulip
silent zealot
# willow tulip Wait really? thats racist.
willow tulip
#

every animal has, <X> items that it will spawn, between <min number> and <maxnumber> at each life stage (calf, cow)

#

animal size, is applied to the number that will spawn.

silent zealot
#

They did mention it was sent off for a fix, but last time I checked it has not been adjusted

willow tulip
#

animal size, is applied to the size of each item that will spawn.

#

animal size, is used to adjust the chance of 'prime' cut vs 'poor' or average cut, resulting in a 1x 2 or 4x calorie bonus

silent zealot
willow tulip
#

animal size, is used to adjust how many of each item will spawn.

#

yes, animal size is used 3 times over.

#

animal size, is hard set to 0.6 for any animal that goes on a butcher hook

silent zealot
#

hahahaa

willow tulip
#

resulting in your yield dropping to like 0.2x if you had a 0.9 animal size (typical) and even lower if it was higher (can be up to 1.2)

#

this is why rabbits give 2x as much as cows in calories.

willow tulip
#

Not that TIS will ever use it or hire me or whatever but I just can't play a game with such a shit system where a rabbit gives you more calories than a cow.

#

btw: meatratio? 100% hidden from player

#

size? 100% hidden from player.

silent zealot
#

Still broken. And StripperWhite still does not exist.

willow tulip
#

animal weight? You get to know that on the animal info page at animal care level 4

#

the one factor not used in meat yield in vanilla.

#

not used for.. anything.

silent zealot
#

I wonder which part of the zomboid code is most rage inducing.

silent zealot
#

Butchery yield is definitely a contender because of how simple it should be and how complicated and broken it is.

willow tulip
#

did you know they have a whole genom system with like 20 genes and inhairtence and defects and stuff?

silent zealot
#

I saw that!

willow tulip
#

of course you didn't because its completely hidden under RNG and not exposed to the UI at any animal care level.

#

-_-

silent zealot
#

Will be great for the game where I last for 20 years breeding better quality cows

willow tulip
#

lol.

#

just think, after 20 years of breeding them, you might get a cow that produces as much calories as a rabbit!!

silent zealot
#

I think there's a debug option to show genetics, but... who's going to care?

willow tulip
#

(* Not really because they added in hardcoded meat ratio limits if it produces enough milk to feed its calves)

willow tulip
silent zealot
willow tulip
#

(without the debug mode edit genom options)

silent zealot
willow tulip
#

-_-

silent zealot
willow tulip
#

TIS still unable to make milk expire

silent zealot
#

It's a one-line lua mod and it's more popular than most of my many-days-of-effort mods.

willow tulip
#

Seems like something I could figure out in 2 days of hooking UI interaction code..

willow tulip
#

(over 1400kg)

silent zealot
#

The game will crash to desktop if you put more than 9 pellets into a shotgun round because of a buffer overflow.

wraith flame
willow tulip
#

do you.. not use realistic car physics?

silent zealot
wraith flame
#

il show pics soon im almost done but, i got drifting and custom rims in. i said fuck fighting it

#

and no i do not

#

i have to do everything myself unfortunately thats my flavor of autism

#

i didnt even use zombiebuddy i made my own java agent

willow tulip
#

...

silent zealot
#

I tried out Vein a few days ago, one thing that impressed me was how much easier cars were to drive. They're not even good to drive, I'm pretty sure they are just unreal marketplace assets with generic unreal drive a vehicle code... but they handled better and First-person means you can see more than 15 metres away.

willow tulip
silent zealot
#

Does pan while aiming still make all your shots miss?

#

I turned it offer a while ago, haven't retested

willow tulip
#

?

wraith flame
#

on mac you can hold control and zoom in indefinetly its not a PZ thing

silent zealot
wraith flame
bright fog
#

@paper ibex there's an history craft ?

wraith flame
#

fully adjustable ride height, track width, camber, angle-kit (driftmode) and attach/detach bodykit. mechanic job is gonna be 🔥 nothing done in scripts so its fully instanced

paper ibex
bright fog
#

How many recipes does it keep in memory ?

#

And how ?

paper ibex
#

TIS patched the player save limit to 128KB in 42.14, but I'm worried it only doubles the time before bloat happens again.

bright fog
#

What do they store ?

paper ibex
# bright fog And how ?

The server saves and syncs the entire crafting history array, even though it's only used for sorting the Crafting UI. This contributes to save bloat over time.

iirc the crafting history is stored in a HashMap<String, Integer>, mapping the recipe name to the crafted count

bright fog
#

And its this heavy ? Surprising

#

I mean 64 KB is not a lot anyway

#

Can we really talk about bloat ?

paper ibex
paper ibex
paper ibex
# bright fog Can we really talk about bloat ?

I'm not 100% sure about the exact cause, but I've already dealt with bloated characters caused by the accumulating craft history. I managed to fix it by applying a Java patch to completely void the craft history saving on the server side. Since then, the save bloat issue hasn't come back.

lethal bloom
#

Does anyone know how to add a water supply system like in the dwap?

knotty stone
bright fog
knotty stone
#

with the offset i set there shouldnt be any collision with a zombie under the truck?

#

have to redo all the trucks cause the double axle has the physical wheel in the middle, so they like to tip now pretty fast to the side ~.~ and i just now realised how stoppingMovementForce is rly working xD

bright fog
knotty stone
bright fog
#

So not too surprising

#

Maybe your truck isn't heavy enough too ?

#

I believe weight can have an impact, or they take into consideration in the physic of the vehicles

knotty stone
#

cant make it any heavier since the suspension will fail due to overload

#

i can increase stoppingMovementForce that helps too, but then i need to increase horsepower too

shy mantle
#
The Indie Stone Forums

Version: [42.14.0] (has existed since MP released) Mode: [Multiplayer Only] Server settings: [Hosted and Dedicated] Mods: [None] Save: [New Save] Reproduction steps: 1. Start the game as a hosted or dedicated mp server. 2. Find or drive a car under a roofed area (or build above it). 3. Walk EXACT...

bright fog
knotty stone
red sphinx
#

Is there any way to change the parameters of a unique item as defined in scripts, dynamically in real time with a lua function? I have found this(https://theindiestone.com/forums/index.php?/topic/23525-lua-dynamically-creating-special-and-unique-items-advanced-tutorial/), which I assume runs while the game is launching/loading items, not with constantly monitoring. Could it be possible to do something like adjusting a script parameter in real time, just for the item the function is interacting with, based on a real time value? Like dynamically adjusting the encumbrance of an item(defined in a script) to the current actual real time durability (calculated with each swing)? Would all butter knives, for example, everywhere suddenly get lighter, or is it possible to just make the one in my hands lighter?

The Indie Stone Forums

So I was working on some code for our server mod, and it turned out pretty cool. Since I haven't written a tutorial in a while, I thought I'd share. The problem: I wanted to create special upgraded items, and unique(ish) ones, without having to define the objects in the media/scripts/*.txt files,...

bronze yoke
#

do note that some properties of the item are linked directly to the script and can't be changed per-instance, but this affects less of them than you would probably expect

willow tulip
#

"WE'll up it to 128kbyte, nobody could ever fill that up!"

#

TIS seriously not clear on the concept of 'limits are dumb' and 'computers have more then 64kbyte of memory to spare when it comes ot things that will end a 4 month long run that took the player hundreds of hours of playtime'

#

Like I know ram is expensive but im pretty sure 128kbyte is still only like 50 cents...

#

Also, in a game where the saves average a few 100megabytes... I feel like we could have just left player save data limit uncapped if it was going to be a 'delete the players hard work' kinda issue if he runs out..

knotty stone
#

i could need some more player memory, its completly laggin my game with that bug xD getting 4700 blowtorches with give ingredients and its using all of em 😂

#

cant delete them right click crashes the game 🤪

willow tulip
#

Yea last I checked, didn't we invent growable arrays sometime... 40 years ago?

ionic crown
#

hi i’m working on some custom tiles right now I’m making signs but I’ve run into an issue whenever I walk up to them they pop to the foreground and end up covering the character

willow tulip
vast pier
shrewd basin
willow tulip
#

@primal schooner Pretty sure that code is fine.

#
if self.character and (not self.character:hasTrait(CharacterTrait.DESENSITIZED)) and self.item:getContainer() and self.item:getContainer():getType() and 

( self.item:getContainer():getType() == "inventoryfemale" or self.item:getContainer() == "inventorymale" ) then
#

Oh, nm your right

#

one is getcontainer():gettype() and the other is getcontainer()

primal schooner
#

i was trying to catch another bug and stumbled on this

willow tulip
#

so what does it affect? lol

shy mantle
#

@willow tulip Got any clue where they're hiding most of the vehicle radial menu textures? Looked in "media/ui/vehicles" but I only see the window breaking refueling related icons. Considering they're pathed to that folder (e.x. media/ui/vehicles/vehicle_exit.png), I can't think of anywhere else they could be.

willow tulip
shy mantle
#

:(

#

More work

shy mantle
willow tulip
#

Im pretty sure almost all the files are in one pack file

shy mantle
#

I'm in ProjectZomboid\media\texturepacks and there's quite a few with very generic names

willow tulip
#

UI2.pack

shy mantle
#

oh man the file sizes do tell me how many there are lol shoulda looked

willow tulip
#

UIpack has a couple

#

but 1/50th UI2

shy mantle
#

UI2 has what I need, thanks

neat walrus
#

any ideas why setting an item's name on the server won't trigger translations in multiplayer?
I'm trying to dynamically set names like so

item:setName(getItemNameFromFullType(translationKey))```
it works in single player, but in multiplayer it just sets to the key. printing the key shows the actual translated line, so I'm not sure why its not displaying
I have 5 generic items and 180+ translations. trying to save myself from creating an actual item for each translation
shy mantle
paper ibex
primal schooner
willow tulip
#

... so no stress if you remove it from the zombie first?

primal schooner
#

ISCraftAction:update()

-- players that aren't desensitized gain mild stress and unhappiness from stripping items from corpses
#

apparently lol

willow tulip
#

Meh.

#

Does it correctly strip items in MP now or is it still weird?

worn bane
#

Hi, so New to moding and I figured I would try and look into making padlocks work on any container. Cuse It annoyed the heck out of me that by moving a player built container you can no longer padlock it. I started looking around and honestly understand almost nothing I'm looking at. But I spotted something in the Javadocs that says "canBeLockByPadLock" and am now wondering is the decision on if something is lockable on each Item and not part of the locks code?

I was hoping it was part of the locks code and I could just change it to think all containers where lockable not just player crafted.

stiff vessel
#

Hey team, what's a good way to define a new BodyLocation, and which clothing layers the item fits over/under?

oak python
#

does OnServerCommand only work in multiplayer? shouldn't it still excute in sp?

Events.OnServerCommand.Add(function(module, command, args)
    if module ~= MOD then return end
    print("test print")
end)

does nothing

silent zealot
#

check the pdfs released with B42.13, especially the registry stuff.

  1. make a media/registries.lua file with something like:
NEPBODYLOC_CLBFYS_REAR  = ItemBodyLocation.register("nep:stockingbow_rear")

2)somewhere under media/lua/shared:

local group = BodyLocations.getGroup("Human")
group:getOrCreateLocation(NEPBODYLOC_CLBFYS_REAR)

That adds it to the very end of the body location list, if order matters use BodyLocationGroups:moveLocationToIndex()

stiff vessel
#

Thanks brother

silent zealot
#

You probably need to write your own context menu thingy that runs after the vanilla one, and if it's something you want padlockable and the padlock option is not in the menu already add it.

bleak remnant
#

@bright fog dude, i just posted my mod, is there a place for me to announce it here?

#

i am about to post it on reddit too

silent zealot
#

I don't see any issues posting a newly released mod here, it's not like there a problem with teh volume of such posts and you should be proud of what you've built!

oak python
#

how is player teleporting done in multiplayer? I tried doing setx setlx on server it does nothing, it works normally from client, does it mean im only teleporting on the client and my character will be desynced for others?

silent zealot
#

Does it make more varied/tougher zombies as the game progresses?

#

I'd look up how teh debug mode teleport works. Assuming that works in Multiplayer, it woudl show you what is needed.

oak python
#

is there no anti cheat in this game

silent zealot
#

There is half-assed anti-cheat

bronze yoke
#

are you developing for build 41 or 42

oak python
#

.14 or w/e it is

#

ig it isn't a big deal if every server has admin

#

since it's all self hosted

#

so w/e

#

i dont think anti cheat mattters that much in this case

silent zealot
oak python
#

wasn't aware of teleportto

silent zealot
#

So in multiplayer it sends the /teleportto command to the server, which presumably handles that.

oak python
#

im guessing it's just setlx and setx

silent zealot
#

it's a java thing.

#

and more or less exactly what you predicted. (that code is from IsoGameChaarcter, not the server command handler)

shrewd tundra
shrewd tundra
#

I have only been able to make mods using lua so far

#

I guess the possibilities using java would be even bigger

silent zealot
#

Short version: dont.

#

Longer version: it's a pain, and it will require you to constantly update your mod... sometimes with every hotfix, depending on exactly what you changed. And users need to manually install the java files. And you will be inundated with "not working!" comments from people who do this wrong.

shrewd tundra
silent zealot
#

Your mod will also conflict with any other mod changing the same java classes, though there are not many java mods so that isn't a big problem.

paper ibex
silent zealot
#

Typically you need some lua stuff as well as the java, for things like settings if nothing else.

#

https://pzwiki.net/wiki/Java

I don't know of any mod actually using Leaf of ZombieBuddy, but you can look into those if you want to try java modding

paper ibex
#

IMO ZombieBuddy's so OP, it's basically a hack.

shrewd tundra
#

I dont know nothing about Java, im specialized on javascript but I could easily learn if java modding really gives you more options when modding

#

And based on the wiki you could basically remake anything you want

#

Because it allows you to rewritte vanilla java classes

paper ibex
shrewd tundra
vast pier
#

https://steamcommunity.com/sharedfiles/filedetails/?id=3676018580

Adds in an improvised Pipe Rifle.
You can craft this rifle through collecting/manufacturing the individual attachments for it.
The rifle's appearance and stats are determined entirely by what it's made of, offering a wide variety of form and function for a single gun.

[Pipe Rifle]
4 Barrel Variants
3 Front Stocks (8 tape colors)
3 Back Stocks (8 tape colors)
3 Grips (8 tape colors)
3 Mag Feeds (2 Mag types with different functions and capactities)
2 Receivers (Bolt-Action and Semi-Auto)
1 Gas Cap

That would be exactly 1 million combinations
4x(1+3x8)x(1+3x8)x(1+3x8)x(1+2x1+1)x2x2
(Feel free to correct my math)

With the way it's set up, there are tons of unique combinations for how a single gun could spawn in.
Currently this functionality is only for a singular rifle, but I intend on expanding this to more weapon types, and have more customizability & interchangability of gun parts.

This Rifle is also animated!
The gun has two slightly different cycle animations depending on the barrel.
Shows a loaded magazine in real time.
And has a unique "animation" for the Cube mag that changes as the mag empties.

Some planned inclusions are:
Cosmetic:
Spray paints
Engravings
Design Trims
Functional:
Melee weapons
Melee attachments on guns
Alternating between ammo types


Please note!!!!!!!
I have NOT tested this mod in multiplayer.
It is fully functional in SINGLEPLAYER, but I have not had the opportunity to bug test it in a multiplayer environment!!!
Please let me know if any bugs come up, and be sure to mention if it is a Multiplayer or Singleplayer bug!!!!

No tips needed, but are appreciated!
https://ko-fi.com/verysaltyoreos

Workshop ID: 3676018580
Mod ID: SaltyModularWeapons```
#

Initial Release 🥳 🎉

oak python
#

would then def download

vast pier
#

the gun currently just takes standard rifle rounds, but I do plan on improvised munitions in the future

silent zealot
oak python
vast pier
#

There are plenty of popular mods, yet I don't feel it would be redundant for me to to it in my own way :P
Same friend is making a framework with aspects similar to stuff in mine, but the way they function are quite different mechanically and would not inherently replace each other despite their similarities

oak python
willow tulip
#

but you'll still need to know Lua for UI stuff

#

all the UI framework is in Lua

vast pier
#

I have a few gun types in mind that I will be implementing, and the idea is that they will have shared parts that can be swapped between them

#

a gun will only really be defined by its core

silent zealot
#

I was thinking of making a "heavy improvised shotgun" where ammo is crafted using a tin can, gunpoweder, and scrap metal.

#

Instead of normal projectile logic it just kills all the zombies in a cone, then knocks the player backwards and sets muscle strain to max.

vast pier
silent zealot
#

Make a gun that shoots knives!

vast pier
#

Gone will be the days of only using your gun as a way to kill zeds, attach a collapsible spade to the end of your firearm and dig your own grave!!

oak python
#

a gun that's also a proper melee

vast pier
#

Yep!
I even have it working to scan the bayonet directly and use its stats without damaging/affecting the gun function

oak python
#

would be cool if you can swap modes between gun and melee but i think that's like a lot of work

silent zealot
#

When you replace your bipod with an entrenching tool

vast pier
oak python
#

sheesh

#

is that in rn?

silent zealot
oak python
#

or not yet

vast pier
#

Not quite, having some minor issues so it's delayed

#

but it's the next thing I'll be working on for the mod

silent zealot
#

Which can probably be fixed by a huge amount of additional code.

vast pier
oak python
vast pier
#

that's the only current issue

oak python
#

i can only think of having a fake melee clone tool that gets inserted

vast pier
#

That's exactly what I'm doing

silent zealot
#

That's why it's a horrible user experience.

oak python
#

i dont see how that's diff than swaping to a melee

#

it's just styled differently

silent zealot
#

Remember this is a game where a watch becomes a completely different item when you wear it on yoru other wrist

willow tulip
#

I assume he just made it autoswap based on distance of nearest zombie, or some hack like that

silent zealot
#

https://www.youtube.com/watch?v=_luBh6eFANU This would be a viable mod; a melee weapon where you can right click -> reload and replace the shell, and on hit if there is a shell do a bunch of bonus damage.

Engineers get Onshape Professional free up to 6 months https://Onshape.pro/integza

JLC3DP 3D Printing & CNC Service Starts at $0.3: https://jlc3dp.com/?from=integza
Stainless Steel Properties: https://jlc3dp.com/help/article/316L-Stainless-Steel

@hacksmith Bobblehead: https://hacksmith.store/products/bobbleheads

Machines
Bambu Labs X1 Carbo...

▶ Play video
#

Not a viable weapon, but a viable mod.

boreal pawn
#

Hi, im busy with a mod ive been building while i learn lua, i just want to find out about the moddata. how big can a players mod data be before it starts giving issues in single player or multiplayer or if their is any limit at all

the mod im making is a skill tree - that allows the user or admins to create their own tree and build their own hierarchy with multiple categories and im currently effecting about 50 + stats with the option of creating active skills that active when conditions are met on the above stats - eg: panic hits 80% then skill activates giving you 100% dmg increase and increase amount of multi hit targets you can hit for a limited time or until it goes below

i played with around 200+ nodes unlocked and didn't really see any difference but I'm curious when on a server and their is 10 or 20 people with that amount

oak python
silent zealot
#

Does "200 nodes unlocked" mean you're just storing 200 numbers?

vast pier
#

This is just the proof of concept

silent zealot
#

I don't think storing the nodes will be an issue, I think the bigger potential issue is the performance of constantly checking the conditions for active skills

vast pier
boreal pawn
willow tulip
vast pier
boreal pawn
#

if we have endurance gain increase - 3 node 1.5 + 1.6 + 1.5 i store endruance gain as 4.6 and when the tick runs to getthe value it applys that single value but im still storing the node id for each node a player has

vast pier
#

It's also because I meant it when I said it's going to be designed for your gun to turn into a multi-tool

silent zealot
vast pier
boreal pawn
vast pier
silent zealot
#

A lot of of the zomboid client/server communication is written like every bit is precious.

willow tulip
#

If you wanna bitstuff doubles.. be my guest 🙂

silent zealot
willow tulip
#

Lua doesn't even have an int type.

silent zealot
#

If the sending-over-the-network stuff is a bottleneck that will help.

silent zealot
willow tulip
bronze yoke
#

regardless a double can't store every integer value

#

it doesn't matter if java is converting it to an integer if the double doesn't represent the right integer to begin with

willow tulip
#

Lua does have a native boolean type however, and PZ would likely send that as byte.

boreal pawn
#

looks like i should be fine im only doing about 7.5kb with 1000 nodes on the player mod data

would it be better to store unlocked nodes on the global side and then just amend all players that have it when they unlock or refund them

i see this in the mod data section
In online multiplayer, GlobalModData is not saved on clients (client-only save), so it will not persist on reconnect!

does this mean it gets lost on every restart? or am i just reading this wrong

bronze yoke
#

it's lost by the clients

#

in other words there is basically no reason to use global mod data on the client anymore, it doesn't behave differently from any other table

willow tulip
#

^ ie, you need to make your own sync packets both ways.. its just an isolated table in MP on client side.

boreal pawn
#

thanks for the info, just trying to see where i can squeeze out any performance or bugs that may happen when scaling

paper ibex
#

Use sendClientCommand / sendServerCommand for specific cases and never send the whole table. IMO, multiplayer mods should follow a proper client-server architecture instead of just syncing client-only data to the server.

boreal pawn
paper ibex
#

if the server have nothing to do with your data, you can try use mod options (small data) and file writer (structured) on client

#

especially for ui

silent zealot
boreal pawn
#

all ui stuff im placing on the client for things like opacity

but the server does the calcs and node data checks

silent zealot
#

Is there anyway to change the tags on mods without re-uploading via the game? I want to add [Multiplayer] to teh mods I've updated for MP, but I don't want to go through the game and deal with having to make sure I'm not about to wipe out the description by uploading an old one unless I have to.

willow tulip
bright fog
clear aurora
#

Hey, is there a guide or a page of the wiki were i can learn to make a mod that add a challenge?

clear aurora
#

i see, i found the "dochallenge" and "addchallenge" line for lua, do you know if i can add it to the game just like that or i need more archives or sm

shrewd tundra
#

Hello everybody, quick question. Is there any way to mutate the texture of a vanilla firearm?

I'm looking to create a recipe to change the texture of a gun, without needing to create a new gun, something like:

gun.texture = 'newUrl'

But all the references I have read showed me this is not possible and I would need to create a whole new gun and inherit all the values from the previous gun

torn igloo
#

Is there an UI editor for B42, I seen many making nice looking UI.

bronze yoke
#

no

#

i've noticed a lot of the fancier uis are ai coded, i guess it's good at something

willow tulip
#

its a pretty decent UI framework TIS has really

#

my own I made was muchless capable and more annoying to use (for my own game years ago)

#

The existing UI components seem quite flexable though and have all the major options you'd want from a UI

#

while still allowing enough raw drawing API to let you do any kinda special component you might want.

#

(theres a few calls that let you draw only part of an image via UV cords for example)

#

My best UI so far:

bright fog
#

A bit tedious to do tho

silent zealot
#

Look at the Survival Rifle mod for an example that swaps the weapon model (you'll obviously want different triggers)

iron salmon
marble folio
bright fog
vast pier
#

when reloading the game

#

this could easily be accomplished with a simple modData check onEquipPrimary/onCreatePlayer event

mellow frigate
#

Hi, is there a way to get the ItemKey (I guess from an item type string) in order to use as first parameter of ItemContainer.addItems for MODDED items ?

bronze yoke
#

no

#

item keys aren't meant for modders, they don't work with other modules

slow wind
#

Does anyone know how I can add something to this menu?

mellow frigate
#

Hello again, is there something specific to make modded containers (bags) to have a base Encombrance (Weight) ? When I duplicate the duffel bag definition in a modded module, my bag empty weight is 0 instead of 1.0. (B42.14.1). I've tried many bags variants and got the same for each one tried. Parameters other than weight (Capacity, WeightReduction, Icon, ...) are set according to my changes. module TestMod { item Bag_DuffelBag { DisplayCategory = Bag, ItemType = base:container, Weight = 1.0, IconsForTexture = Duffelbag;DuffelBag_Green;DuffelBag_Grey;DuffelBagBlue;DuffelBagRed;Duffelbag_Sport;Duffelbag_Sport2, CanBeEquipped = base:back, CanHaveHoles = false, Capacity = 18, CloseSound = CloseBag, ClothingItem = Bag_DuffelBag, EquipSound = EquipDuffleBag, OpenSound = OpenBag, PutInSound = PutItemInBag, ReplaceInPrimaryHand = Bag_DuffelBag_RHand holdingbagright, ReplaceInSecondHand = Bag_DuffelBag_LHand holdingbagleft, RunSpeedModifier = 0.95, SoundParameter = EquippedBaggageContainer DuffleBag, WeightReduction = 65, WorldStaticModel = DuffelBag_Ground, Tags = base:isfirefuel;base:isfiretinder, } }

willow tulip
mellow frigate
willow tulip
#

Seems like once a day we get someone with that issue

#

(Since its very confusing and the only way to know its the translation tag is have someone tell you or code dive for an hour)

mellow frigate
willow tulip
#

if they notice it

knotty stone
#

Lets call it mechanics eye? xD
I think the colored version is a bit to heavy on the eyes?

supple kiln
#

Hi, new to modding. I'm trying to get the world age, date time, and current weather.

I'm having a hard time getting the weather. Reading through the docs, I don't think its possible in .lua? or am I missing something.

All I could see is this class
https://pzwiki.net/wiki/ClimateManager

knotty stone
supple kiln
mellow frigate
#

Has someone already created a new item type from lua ? (without .txt)

shy mantle
knotty stone
shy mantle
knotty stone
#

nah thats just me playing with shortsighted xD

shy mantle
#

Understandable, but I think that would be cool to consider if it's not per vehicle view

knotty stone
#

yea its using a 3 tile range to find the car so you could see multiple cars, esle with slightly longer cars you dont get a display if you stand in front of it

shy mantle
knotty stone
#

that should be doable

shy mantle
#

I wish getNearVehicle had a custom distance check instead of a set distance

knotty stone
#

got it that it triggers when it finds a part in a 1 tile radius, but thats not any help when trying to read burn cars 😄

shy mantle
knotty stone
#

getcell():getvehicles()

#

i can give you the whole thing for you to look ```--- Returns the single nearest vehicle to the local player, determined by
--- finding the part-area coordinate on each vehicle that is closest to the
--- player's position. Returns nil when no vehicle is within FOCUS_RADIUS tiles.
local FOCUS_RADIUS = 1 -- hardcoded; not user-configurable
local function getNearestVehicle()
local player = getSpecificPlayer(0)
if not player then return nil end
local px, py = player:getX(), player:getY()
local bestVehicle, bestDist = nil, FOCUS_RADIUS * FOCUS_RADIUS

local vehicles = getCell():getVehicles()
if not vehicles then return nil end

for i = 0, vehicles:size() - 1 do
    local v = vehicles:get(i)
    if v then
        -- Use each part's area centre for the distance test so we match
        -- the coordinate system the badges are rendered in.
        for j = 0, v:getPartCount() - 1 do
            local part   = v:getPartByIndex(j)
            local area   = part and part:getArea()
            local center = area and v:getAreaCenter(area)
            if center then
                local dx = px - center:getX()
                local dy = py - center:getY()
                local d2 = dx * dx + dy * dy
                if d2 < bestDist then
                    bestDist    = d2
                    bestVehicle = v
                end
            end
        end
        -- Also test the vehicle origin for vehicles whose parts have no area
        local dx = px - v:getX()
        local dy = py - v:getY()
        local d2 = dx * dx + dy * dy
        if d2 < bestDist then
            bestDist    = d2
            bestVehicle = v
        end
    end
end
return bestVehicle

end```

#

i just have to get rid of the focus radius stuff since i dont need it to adjust anymore

shy mantle
#

I just think it would be easier to settle on 1 vehicle at a time and not have to deal with that + potential overlapping text with just getNearVehicle ha ha

#

Wait, your first comment is about only returning one vehicle...

#

Now I'm confused

knotty stone
#

Range 4 only shows 1 at a time

#

stil have to work on that zoom <.< that the field shrinks

shy mantle
# knotty stone Range 4 only shows 1 at a time

Oh so you want more than 1 sometimes? This might be more expensive, but you can always do a per tile search for vehicle containers in a radius around the player. That doesn't require the vehicle's exact x and y

knotty stone
#

no, just wanted to show that it only shows 1 even with a range of 4. displaying more than one is not something that would be healthy for the eyes 😄

shy mantle
#

That's why I was confused lol it sounded like you could have multiple vehicles' parts (multiple vehicles) showing lol

shy mantle
knotty stone
#

yea i could replace all that stuff with a 1 liner, but i have to limit the range, its triggering like 4 tiles away

shy mantle
knotty stone
#

so late again, have to go to bed, thx for the input 🛌

shy mantle
#

Oh no problem, I get enjoyment from talking about the only things I know about this game code-wise lol

oak python
#

how on earth do you check to see if a player has a trait? it returns nill for literally everything

dull moss
#

You need to check versus CharacterTrait

bronze yoke
#

what is 'literally everything'

oak python
bronze yoke
#

what are the arguments?

dull moss
#

look middle line

    if
        smokerModData.SmokingAddiction >= SBvars.SmokerCounter
        and not player:hasTrait(CharacterTrait.SMOKER)
        and SBvars.TraitsLockSystemCanGainNegative
    then
bronze yoke
#

we can't tell you what you're doing wrong without knowing what you're doing in the first place

willow tulip
oak python
dull moss
#

then u add it to registry and check registry

#

check wiki page on how to make registry

willow tulip
#

Like....

if a > 0 and b > 0
is this
A: if (a > 0) and (b > 0)
or is it
B: if ((a > 0) and b) > 0
bronze yoke
#

and/or are a lower precedent than ==/~=

willow tulip
#

Or something even more cursed?

bronze yoke
#

if (a > 0) and (b > 0)

oak python
willow tulip
#

What operators are lower then and/or?

bronze yoke
#

if either you or the compiler is getting confused the brackets never hurt

#

the one i trip over occasionally is not has the highest precedence (i prefer ! since that makes this a lot more obvious visually)

frank elbow
willow tulip
bronze yoke
#

yeah

willow tulip
bronze yoke
#

the reason i trip over it is if not a == b looks like it means if a ~= b

frank elbow
dull moss
# oak python i have the regestriy, is it just :hasTrait("mymod:mytrait")

no, you import ur registry
for example registry

---@class EvolvingTraitsWorldRegistries
ETWRegistry = ETWRegistry or {}

---@type EvolvingTraitsWorldTraitsRegistries
ETWRegistry.traits = {
    AV_CLUB = CharacterTrait.register("ETW:AVClub"),
}

then u have a lua file that returns ur registry

return ETWRegistry

then u require it

---@type EvolvingTraitsWorldRegistries
local ETWRegistries = require("ETWRegistry")
---@type EvolvingTraitsWorldTraitsRegistries
local ETWTraitsRegistry = ETWRegistries.traits

then u use ur registry

        if
            not player:hasTrait(ETWTraitsRegistry.PLUVIOPHOBIA)
            and modData.RainCounter <= -SBCounter
            and not desensitized(player)
            and SBvars.TraitsLockSystemCanGainNegative
        then
bronze yoke
#

i like languages with ! better since if !a == b is very obvious about that

willow tulip
dull moss
#

~= makes me mad fr

frank elbow
#

I am indifferent about ~=

willow tulip
#

I get so many errors about forgetting to convert != to ~= when I convert java to Lua -_-;

dull moss
#

true and real

bronze yoke
#

i don't really know why they went with ~, seems completely arbitrary to me

willow tulip
frank elbow
#

I think they should have gone all in with the word operators and made us type out greater than

willow tulip
frank elbow
#

x >= y? What the hell, this is a scripting language. We should be writing x greater than or equal to y

frank elbow
willow tulip
#

You gotta define all your codepaths in english or the AI interpeter will get confused

frank elbow
bronze yoke
#

nil over null is pretty silly too but i think that one might be to differentiate interpreter errors and runtime errors

willow tulip
#

"Can't reproduce bug report. Please turn your computers tempature down so it stops hallucinating so many instructions"

willow tulip
#

And thus, the more you learn about Lua, the more of a programmer you become and hence the worse you become at Lua /s

dull moss
#

So, how do you in 42.13 and higher hook onto smoking? Before I used to do sth like

local original_OnEat_Cigarettes = OnEat_Cigarettes
---Overwriting OnEat_Cigarettes here to insert ETW logic catching player smoking
---@param food any
---@param character IsoGameCharacter
---@param percent number
function OnEat_Cigarettes(food, character, percent)
    ETWExportedFunctions.smokingAddictionMath(character)
    original_OnEat_Cigarettes(food, character, percent)
end

Needless to say it ain't working no more KekW

bronze yoke
#

it's just in a different place now i think

willow tulip
#

maybe you should.... smoke the cigarettes? I dunno I don't smoke anymore I dunno what you kids do with em these days.

bronze yoke
#

probably RecipeCodeOnEat.consumeNicotine

dull moss
#

Ty, will look into it

willow tulip
#

Go look at the cigarette onUse() in the .txt if that doesn't work or you wanna confirm.

#

(or for future items)

#

Kinda happy to see stuff like that being moved outta globals and into tables. Not 100% sure the shift to java was entirely needed but whatever. Shows someones pushing back on technical debt.

bronze yoke
#

the move to java is just because it allows type safety with their script generator

willow tulip
#

script generator?

#

I get the desire for type safety as I had seen a number of bugs to do with typos and such, especially in item scripts

#

Just was a little annoyed that we saw about as many bugs from them converting the scripts to java as I had seen in typos 😛 (though I guess many typo bugs where fixed long before I started looking so thats a bit unfair compairson)

#

the inversion of dirty/clean rags was funny.

bronze yoke
#

bugs being introduced by any major conversion is inevitable, potential bugs have been prevented into the future

willow tulip
#

Yea, true

#

Hopefully lowering the debt will improve work flow/speed too.

silent zealot
#

Now I'd guess either Tags = base:smokable, or EatType = Cigarettes, is what handles this

silent zealot
frank elbow
silent zealot
#

There are lots of thing I'd like them to fix first!

willow tulip
#

(or is that only destroy on wet?)

#

oh its a tag base:breakwhenwet

silent zealot
#

tag base:breakwhenwet; now

#

you ebat me to it 😛

willow tulip
#

there is onBreak = item; though?

#

Nothing uses up rag durability

silent zealot
#

So it will only work on things with condition, and it sets condition to zero

willow tulip
#

Oh no wait onBreak is a lua callback

silent zealot
#

I can't see where the "do this when it breaks" code/replacement item is

#

I assume it's using the newer system of not making a new item, but having a different name when condition is 0

willow tulip
#

crap, rags don't even get wet -_-

willow tulip
#

so yea, cleaning rags is.. pretty broken -_-

#

even from a modding standpoint

silent zealot
#

I just wash them in a dirty river

#

perfectly clean!

vast pier
vast pier
dusty pivot
#

Is there a mod that adds the browning hi power?

slow wind
#

Does anyone have any idea why, when I place the sprite of an object that has an inventory and build it, it comes with items inside?

willow tulip
willow tulip
#

So we'd have to turn rags into clothing and/or weapons 😛

#

I feel like the best we could do is a 'mass wash rag' recipe that requires X water and lets you wash multiple rags at once, with an onTest that requires you be near a washing machine or something

silent zealot
oak python
#

does player:playSound replicate in multiplayer? (if i sendClientMessage to all players to play sound, it will pay mulitple times for everyone based on # of players)

willow tulip
#

(Kinda required to have proper volume control over sounds, make sure to adjust it based on the game sound slider -_-)

torn igloo
#

getFileWriter doesn't seem to work on my mod for 42.14 server, did they change it?

bright fog
#

@gaunt junco wrong channel, ask questions here

gaunt junco
#

My bad @bright fog

#

Anyone have a fix for container liquid not showing in context menu on cooking pots. Like I can’t do anything with it. 4/5 cooking pots are bugged like this. No clue if it’s a mod or pz.

dull moss
serene lake
#

Hey, i am currently making a big modpack with specifics settings for a long time now.
But since the B42 is updated sometimes, some mods are causing bugs and i try to solve it on my own (even if i am not a dev).
And im looking to fix a mod that basically allow the instakill with a short blade in combat again, like B40.
The mod Better JawStabs give you the chance to instakill a zombie if a another zombie is not close (in vanilla it is determined if a zombie has saw you).
Do you know a way to fix it or maybe a easy way to program a script?

dull moss
#

Not an answer you are looking for but making modpacks in b42 rn is crazy due to how often game updates and likely to break mods

serene lake
silent zealot
#

If it's a B42, start with what is actually wrong - what errors or problems do you get when you try to use the mod?

#

I do agree with @dull moss that huge modpacks are not worthwhile right now; it's fine to run lots of mods, but don't bother trying to make something to share because 1) you will have to constantly fight to keep it all working and 2) IMO downloading huge modpacks is a terrible idea since people have no idea what is actually going on, and it's best to build up your personal preferences for your own use.

#

But fixing up a mod you like that stopped working? I do that all the time for personal use, and since it's often a very small fix I'll psot in the mod comments for teh author./other users to make the same fix if they want.

#

(BTW> the reason jawstab in vanilla only works agsint a single zombie is it has a chance to disarm you and you have to pick your knife and re-equip it... and you can't alter that behavior in a mod because it happens in CombatManager.java)

serene lake
iron salmon
#

It's at the bottom of the Workshop category atm, let us know if y'all want it placed elsewhere

vast pier
#

Would be interesting to have like

#

certain normal-type items be affected by being wet

#

this is gonna sound really dumb, but could you get around this by turning dirty rags into water containers?
Like don't get me wrong, gameplay wise this would be dumb as hell, but could it theoretically work ?

silent zealot
#

Water container is a special case

vast pier
#

rags being unusable for bandaging until dry (or acting like dirty rags)

silent zealot
#

Instead of being part of the object type, where type literally causes items to be a different java class, fluidcontainer is a class that can added to something high level all items descend from

vast pier
#

why does Java have genetics

silent zealot
#

They did that in B42, and it was very exciting because I thought theyightvtry to fix up the old junk too

silent zealot
vast pier
#

I've yapped a lot

silent zealot
#

Made fluid container a modular thing

#

So the hydration backpack is a container that has a fluidcontainer

silent zealot
#

It's why you can't do stuff like a drainable weapon, because drainable is one java class and weapon is another

#

Or if you want to convert underpants into something you can put stuff in you have to change them from type clothing to type container, which if done mid-save deletes all existing underpants from the world.

#

A sane design spec would let you add a "inventorycontainer" property to objects, like fluidcontainer... but all the classes were coded separately.

vast pier
#

place

bronze yoke
#

they have made an intention to do this clear

bronze yoke
#

it's the same as a lua function

dull moss
#

oh

#

thought its different 😅

bronze yoke
#

you can hook any java method as long as it's being called through lua (what you are modifying is lua's copy of the method, not the method itself)

#

and OnEat is one of the weird times where java uses lua to call a java method

dull moss
#

so sth like

original_func = RecipeOnEat:consumeNicotine() -- or whatever its called
local RecipeOnEat:consumeNicotine()
    ...
end
bronze yoke
#
local original_func = RecipeOnEat.consumeNicotine -- or whatever its called
function RecipeOnEat.consumeNicotine()
    ...
end
dull moss
#

yea that, thx pat

#

I'm getting dangerously close to making all of my files work PepeLaugh

stuck tapir
#

Anyone with experience making tiles know off the top of their heads why a custom tile might not show up in the tile report? Some obvious bit I may have missed?

dull moss
stuck tapir
#

Oh, so true. Thanks.

glacial atlas
#

i'm trying to make a local mod to add a recipe

#

i tried adding my recipe to one of the script .txt files but i leads to my game crashing

vast pier
#

Does anyone know if the ItemType reverts back to its original state on game reload if you use setItemType() to change it?
If it gets saved to the individual item, it could be helpful for some ideas I have
but if it reverts to its original state on game load, then it would be a waste of time trying to do stuff that way

glacial atlas
#

this recipe is crashing my game and i don't understand why

vast pier
#

try that

glacial atlas
#

i also change the name to "craftRecipe CarveLongStickFromLargeHandle" so it doesn't overlap with the vanilla recipe but still nothing

bronze yoke
#

is there no module block in your file

glacial atlas
#

🥲

#

this is my first time i'm sorry

#

i forgot about that

bronze yoke
#

i didn't mean to sound demeaning, just wasn't sure if you'd sent the full file or just the recipe you were having trouble with

#

wrap the whole thing in this and it will probably work```
module Base {
...
}

glacial atlas
#

😭

#

why is it crashing agian

#

nvm i found a typo

#

whoops

#

thank you very much albion and oreos

#

it works now

#

i do have some polish question about how to make the crafting recipe name different from its id and how to make it not require a surface to craft

bronze yoke
#

at the moment you have the tag AnySurfaceCraft, there's a different one for not needing a surface at all, iirc it's InHandCraft but it should be listed on the wiki somewhere

glacial atlas
#

i have one final question for the recipes

#

if i want to make it so a recipe needs to be next to a specific building (chopping block in my case) how could i implement that?

willow tulip
#

(though the UI feedback of said 'failure' may not be clear to the player)

#

since I believe its designed to test if input ingredients are valid..

glacial atlas
#

yeah

willow tulip
#

Alternatively, I think you can make the chopping block a whole crafting station thing

glacial atlas
#

also looks like it needs lua coding which is beyond my skill level

willow tulip
#

Oh

glacial atlas
#

though it jsut opens the regular crafting menu

willow tulip
#

yea look at how... the pottery wheel works for example

#

Hmm, seems to be that it has a matching tag to the target crafting system?

#
craftRecipe MakeCeramicCrucibleSmall
    {
        timedAction = Craft_PotteryWheel,
        time = 100,
        Tags = PotteryWheel,
        SkillRequired = Pottery:1,
        xpAward = Pottery:25,
        category = Pottery,
        inputs (...)
        outputs (...)
    }
#

(trimmed inputs and outputs)

#

if you look up that tag (PotteryWheel), you get this:

#
entity Pottery_Wheel
    {
        component UiConfig
        {
            xuiSkin = default,
            entityStyle = ES_Pottery_Wheel,
            uiEnabled = true,
        }
        component CraftBench
        {
            Recipes = PotteryWheel,
        }
glacial atlas
#

ah alright i see

#

thanks

#

i was looking through the different crafting stations kinda scratching my head

willow tulip
willow tulip
#

(I picked pottery wheel because its simply with a tiny number of recipes)

glacial atlas
#

hmm

#

i can't find the chopping block in the workbench entities

willow tulip
#

WHat you do is, search for its exact ingame name in *.txt

#

then, that leads you to the english translation file, copy that translation tag (or at least, part of it..) and search for that.

glacial atlas
#

*.txt?

willow tulip
#

Yes, use a program that can search all files in a directory for phrases

#

target all .txt files

#

that is where entities, translations, recipes, etc live

#

in project zomboid\media\

glacial atlas
#

ah okay

#

can windows10's file explorer do that or am i misremembering?

willow tulip
#

it can tell you files yes, but not where in the files, get programmers notepad or notepad++ or something

#

(or a real IDE)

glacial atlas
#

ah nvm i found it with debug mode in game

willow tulip
#

Ok then, tag your recipes ChoppingBlock

#

(no other tags, unless you want them doable elsewhere as well)

glacial atlas
#

i'm adding "CanBeDoneFromFloor" because logs heavvy

willow tulip
#

thats prob fine

#

IIRC that means the ingredients can be on the floor, but otherwise crafting works as normal

glacial atlas
#

yup

#

yay my two mods are done

willow tulip
#

Nice

glacial atlas
#

alright just tested it out too

#

works as intended

#

waow i already got a subscriber

#

something something self promotion

silent zealot
#

Anyone know what security vulnerability this was?

#

And was it discovered by a modder poking the game internals?

bronze yoke
#

it was yes

bright fog
#

I vaguely remember mentions about that

#

Don't think anyone said what the vulnerability was tho

#

Was it Omar who mentioned it ?

bronze yoke
#

it was somebody i hadn't seen before

frank elbow
frank elbow
willow tulip
#

Would be nice if TIS would focus a little more on save updating in the future. B42.12/.13/.14 have been rough.

silent zealot
#

Sounds fun. And also not very surprising when they are making custom multiplayer stuff in java instead of using an established engine and data standard.

silent zealot
#

They still haven't fixed the "if an object fails to load because of changes to the script then just reset the entire chunk it was found it"

#

I tried adjusting an object in a non functional mod to work in B42.13.2+ and on load it expected different data serialization and BOOM! You're naked and half your base in gone. Instead of something sane like "Object X failed to load, I'll discard object X and continue"

willow tulip
#

Factorio on the other hand, almost goes too far in loading old saves

#

"You are trying to load a save from: the dawn of time. Some tile overlap may occur" as seemingly the only thing that is wrong is turrets changed sizes and now overlap each other in some places

#

Can't imagine how much it must suck having to ensure old saves always load from eons ago.

frail ice
#

Hi everyone, I'm looking for someone who could update the mod infected of The Last of Us. All the mod's code is available on GitHub, but it only works for version B41 and needs to be updated to B42.

#

We are also looking for someone to create a mod that would adjust the in-game voice chat, preventing voices from travelling through ceilings or walls. We have searched for a similar mod, but it seems that none exist.

#

Merci à tous et pour plus d'informations contactez moi via discord.

blazing raven
#

Anyone know a map that is JUST forest

bright fog
#

But the B42 version is outdated

dull moss
bronze yoke
#

kahlua will determine which overload to call at runtime based on the types of the arguments

dull moss
#

ah, so i need to do 2 overwrites, one for each but with diff args, ok, ty

#

I assume dis is right

local original_RecipeCodeOnEat_consumeNicotine = RecipeCodeOnEat.consumeNicotine
function RecipeCodeOnEat.consumeNicotine(item, character)
    ETWExportedFunctions.smokingAddictionMath(character)
    original_RecipeCodeOnEat_consumeNicotine(item, character)
end

function RecipeCodeOnEat.consumeNicotine(item, character, percent)
    ETWExportedFunctions.smokingAddictionMath(character)
    original_RecipeCodeOnEat_consumeNicotine(item, character, percent)
end
#

EDIT: it works

hm, yea it aint working ThinkNitro

ERROR: General      f:0, t:1772642067149> ExceptionLogger.logException> Exception thrown
    java.lang.RuntimeException: attempted index: consumeNicotine of non-table: null at KahluaThread.tableget(KahluaThread.java:1446).

on
local original_RecipeCodeOnEat_consumeNicotine = RecipeCodeOnEat.consumeNicotine

#

swapping for local original_RecipeOnEat_consumeNicotine = RecipeCodeOnEat().consumeNicotine
gives

ERROR: General      f:0, t:1772642586825> ExceptionLogger.logException> Exception thrown
    java.lang.RuntimeException: Object table 0x1394026142 did not have __call metatable set at KahluaUtil.fail(KahluaUtil.java:99).

I think if i combine things long enough eventually I'll get it KekW
Anyone knows a mod that does it so I look up correct syntax? KekW

bronze yoke
#

you don't need to do anything weird like this

#

RecipeCodeOnEat.consumeNicotine is a magic box that, when called, picks the right java method to call based on the arguments you give it

#

there is only one of it

dull moss
#

This line

local original_RecipeCodeOnEat_consumeNicotine = RecipeCodeOnEat.consumeNicotine

crashes saying that RecipeCodeOnEat is null

#

So I'm a bit confused

#

I double-checked with javadocs, no typos

bronze yoke
#

are you definitely on latest b42?

dull moss
#

today I learned that if you overwrite funcs you gotta restart the game fully, not just reload lua from main menu

#

I had a typo initially, so i fixed it and reloaded the lua from main menu

#

(it works)

#

xd

dull moss
#

Well then idk, maybe something went wrong and i fucked it up in some other place KekW

mellow frigate
#

has someone been able to update reliably X & Y rotations (on each render cycle) for InventoryItem in WorldObjects ? I've tried with 0,360 / -180,180 and some other weird ranges and the result is always similarly unsatisfying: the item is blinking (invisible on some-most- updates). ```lua
setWorldZRotation-- works wonders
setWorldXRotation-- blinks
setWorldYRotation-- blinks

paper ibex
paper ibex
#

return it

bronze yoke
#

the original function doesn't return anything

dull moss
#

oh lmao u are right

#

9 months break hurts

paper ibex
#

yeah even void func, just return it

dull moss
#

oi vei

#

I wasnt returning in other places either waaaa

#
local original_ISFixVehiclePartAction_perform = ISFixVehiclePartAction.perform
---Overwriting ISFixVehiclePartAction:perform() here to insert ETW logic catching player doing any kind of repairs
---@diagnostic disable-next-line: duplicate-set-field
function ISFixVehiclePartAction:perform()
    local player = self.character
    local modData = ETWCommonFunctions.getETWModData(player)
    ---@type DebugAndNotificationArgs
    logETW("ETW Logger | ISFixVehiclePartAction:perform(): caught")
    local conditionBefore = self.item:getCondition()
    carPartStartingCondition = conditionBefore
    logETW(
        "ETW Logger | ISFixVehiclePartAction.perform(): car part conditon: "
            .. conditionBefore
            .. " VehiclePartRepairs="
            .. modData.VehiclePartRepairs
    )
    original_ISFixVehiclePartAction_perform(self)
end

waaaa

#

wait but why

#

do i need to return

#

if someone else overwrites in this way both our funcs run, no?

#

you store the original func, run ur stuff and then run original func, no?

#

oh, nevermind, I do return original func when it has return

#
local original_forageSystem_addOrDropItems = forageSystem.addOrDropItems
function forageSystem.addOrDropItems(_character, _inventory, _items, _discardItems)
    if ETWCommonLogicChecks.HerbalistShouldExecute() and SBvars.TraitsLockSystemCanGainPositive then
        local player = getPlayer()
        local detailedDebug = detailedDebug()
        if not _discardItems then
            for item in iterList(_items) do
                logETW("ETW Logger | forageSystem.addOrDropItems(): picking up foraging item: " .. item:getFullType())
                if filteredForageHashMap[item:getFullType()] then
                    local modData = ETWCommonFunctions.getETWModData(player)
                    modData.HerbsPickedUp = modData.HerbsPickedUp
                        + ((SBvars.AffinitySystem and modData.StartingTraits.Herbalist) and 1 * SBvars.AffinitySystemGainMultiplier or 1)
                    logETW("ETW Logger | forageSystem.addOrDropItems(): modData.HerbsPickedUp: " .. modData.HerbsPickedUp)
                    if
                        not player:hasTrait(CharacterTrait.HERBALIST)
                        and modData.HerbsPickedUp >= SBvars.HerbalistHerbsPicked
                        and SBvars.TraitsLockSystemCanGainPositive
                    then
                        player:getTraits():add(CharacterTrait.HERBALIST)
                        ETWCommonFunctions.addRecipes(CharacterTrait.HERBALIST)
                        if notification() then
                            HaloTextHelper.addTextWithArrow(player, getText("UI_trait_Herbalist"), true, HaloTextHelper.getColorGreen())
                        end
                        ETWCommonFunctions.traitSound(player)
                    end
                end
            end
        end
    end
    return (original_forageSystem_addOrDropItems(_character, _inventory, _items, _discardItems))
end
#

man not checking ur own code for a while cripples a man

paper ibex
#

The hook is meant to return the original for other use cases; so don't break it.

dull moss
#

I dont though?

paper ibex
dull moss
#

if I do

local original_RecipeCodeOnEat_consumeNicotine = RecipeCodeOnEat.consumeNicotine
function RecipeCodeOnEat.consumeNicotine(item, character)
    -- code abc here
    original_RecipeCodeOnEat_consumeNicotine(item, character)
end

and someone else does

local original_RecipeCodeOnEat_consumeNicotine = RecipeCodeOnEat.consumeNicotine
function RecipeCodeOnEat.consumeNicotine(item, character)
    -- code xyz here
    original_RecipeCodeOnEat_consumeNicotine(item, character)
end

both will run, no?

bronze yoke
#

to nitpick, it doesn't 'return the original function',it returns the return value of the original function

#

it is not necessary for functions that don't return anything in the first place

#

and you will usually break a lot of stuff if you forget to return from a function that does return something, so it's unlikely a mistake with that will make it very far

dull moss
#

yep

bronze yoke
#

what's important for compatibility is the storing and calling of the original function

dull moss
#

I guess technically you can add a return from func that doesnt return anything so in case that someone/TIS will ever make it return something you dont need to change anything KekW

dull moss
#

it would take me more effort to remember this tbh

#

and I'll end up with part of code that follows this convention and part that doesnt

#

ThinkNitro Its probably possible to setup lua pipeline on github that would check so every func retruns a value

#

eh, too much effort

paper ibex
#

just use lua linter no?

dull moss
#

true, I only use formatter tbh

#

anyone here uses vscode-lua?

#

Actually, lemme rephrase, "what lineters y'all use for lua in vscode and do you recommend it?"

paper ibex
#

my combo lmao

#

extra is ls-lint, lefthook for pre-commit, and selene

#

oh, and Lua Debug (actboy168) for offline test suite

bright fog
paper ibex
willow tulip
#

@finite dune Uhhhh... Any particular reason my mod "Realistic Car physics" is now This item has been removed from the community because it violates Steam Community & Content Guidelines. It is only visible to you. If you believe your item has been removed by mistake, please contact Steam Support. ?

dull moss
#

I mean it says right there, contact steam support

#

I doubt TIS have anything to do with it

#

Prob someone reported it or sth

#

Steam takes down mods first and then you can contact if it was not justified

#

It's much easier legally for them this way

#

To be fair DMCA strikes work the same way on big platforms, when platform gets a notice they shut down ur stuff and if u disagree they unblock or whatever

willow tulip
#

Somehow it feels targeted 1 day after they update the game for 'security risks'

dull moss
#

I mean

#

did u do some sketchy stuff in there? xd

willow tulip
#

Nope.

dull moss
#

was it java mod? maybe java mods got nuked

willow tulip
#

Was.

dull moss
#

I imagine vulnerability was on java side