#mod_development

1 messages Β· Page 62 of 1

ancient grail
#

Ammm what does this do exatly

sour island
#

Nothing, it's java

ancient grail
#

Ah ok

faint jewel
#

got one for telling how much time of an alloted block has passed. basically start time / endtime based on the current time? a countdown timer basically.

ancient grail
#

i cant seem to make my mod call the time actions.. does anyone know how to use it?

#

im using bowser8's radial menu mod

#
function  OnPumpRefil(playerIndex, context, slice, vehicle)
    local playerObj = getSpecificPlayer(playerIndex);
    if playerObj:DistToProper(vehicle) >= 4 then
        return
    end
    --local typeToItem = VehicleUtils.getItems(playerIndex)
    for i=1,vehicle:getPartCount() do
        local part = vehicle:getPartByIndex(i-1)
        if not vehicle:isEngineStarted() and part:isContainer() and part:getContainerContentType() == "Gasoline" then

            local fuelStation = ISVehiclePartMenu.getNearbyFuelPump(vehicle)
            if fuelStation then
                local square = fuelStation:getSquare();
                if square and ((SandboxVars.AllowExteriorGenerator and square:haveElectricity()) or (SandboxVars.ElecShutModifier > -1 and GameTime:getInstance():getNightsSurvived() < SandboxVars.ElecShutModifier)) then
                    if square and part:getContainerContentAmount() < part:getContainerCapacity() then
                        if slice then
                                context:addSlice("Refuel Station Pumps", getTexture("media/ui/vehicles/vehicle_refuel_station.png"), RefuelStationPumps, playerObj)
                        end
                    end
                end
            end
        end
    end
end
------------------------               ---------------------------
VehicleMenuAPI.registerSliceOutside("context", OnPumpRefil)
------------------------               ---------------------------
#
----------------------           ---------------------------
function RefuelStationPumps(playerObj, part)
    if playerObj:getVehicle() then
        ISVehicleMenu.onExit(playerObj)
    end
    local fuelStation = ISVehiclePartMenu.getNearbyFuelPump(part:getVehicle())
    if fuelStation then
        local square = fuelStation:getSquare();
        if square then
            local action = ISPathFindAction:pathToVehicleArea(playerObj, part:getVehicle(), part:getArea())
            action:setOnFail(ISVehiclePartMenu.onPumpGasolinePathFail, playerObj)
            ISTimedActionQueue.add(action)
            ISTimedActionQueue.add(ISRefillStation:new(playerObj, part, fuelStation, 100))
        end
    end
end

------------------------               ---------------------------
bronze yoke
#

context:addSlice("Refuel Station Pumps", getTexture("media/ui/vehicles/vehicle_refuel_station.png"), RefuelStationPumps(playerObj, part), playerObj)

ancient grail
#

im made a modified version of ISRefuelFromGasPump, called it ISRefillStation

bronze yoke
#

when you use (), you are calling the function, not passing a reference to it

ancient grail
#

so ill just remove the ones inside?

bronze yoke
#

i'm not sure of the exact syntax of addSlice, but you want to pass RefuelStationPumps and it probably takes the arguments separately, like context menus

ancient grail
#

context:addSlice("Refuel Station Pumps", getTexture("media/ui/vehicles/vehicle_refuel_station.png"), RefuelStationPumps(), playerObj)

bronze yoke
#

if you use () it's calling the function in that place, so it's putting the return value of your function, not the function itself

ancient grail
#

so ill remove it too?

#

context:addSlice("Refuel Station Pumps", getTexture("media/ui/vehicles/vehicle_refuel_station.png"), RefuelStationPumps, playerObj)

bronze yoke
#

yeah like that

ancient grail
#

thank youuu

bronze yoke
#

you can probably just add part to the end too, context menus have weird syntax but slices look normal

#

like context:addSlice("Refuel Station Pumps", getTexture("media/ui/vehicles/vehicle_refuel_station.png"), RefuelStationPumps, playerObj, part)

ancient grail
bronze yoke
#

sounds like playerIndex isn't valid

#

not really sure why that would happen though

ancient grail
#

not about the player index but could it be possible that the moded vehicle is the reason i recall xyberviri telling me that the other vehicles have diffrent names for the gastanks

#
function getPartV(car)
    if car == nil then car = krp.car() end
    local pt = nil    
    if car:getPartById("GasTank") then pt = car:getPartById("GasTank") end    
    if car:getPartById("1000FuelTank") then pt = car:getPartById("1000FuelTank") end    
    if car:getPartById("500FuelTank") then  pt = car:getPartById("500FuelTank") end
    print("Vehicle Gas: "..pt:getContainerContentAmount())
    print(CheckFuel())
    return pt
end
#

iwrote this not sure if it will help

vast nacelle
#

I'm working on adding some gun attachments.
Can anyone explain what each part of "ModelWeaponPart = x2Scope x2Scope scope scope," is representing in the weapon's item script?
The weapon part type twice and then the attachment point twice?

young coral
#

I can't be of much help, and I'm also interested in this topic. I am fairly certain that the last two terms are not attachment point references though.

ancient grail
ancient grail
#
function RefuelStationPumps(playerObj, part)
    if playerObj:getVehicle() then
        ISVehicleMenu.onExit(playerObj)
    end
    local fuelStation = ISVehiclePartMenu.getNearbyFuelPump(part:getVehicle())
    if fuelStation then
        local square = fuelStation:getSquare();
        if square then
            local action = ISPathFindAction:pathToVehicleArea(playerObj, part:getVehicle(), part:getArea())
            action:setOnFail(ISVehiclePartMenu.onPumpGasolinePathFail, playerObj)
            ISTimedActionQueue.add(action)
            ISTimedActionQueue.add(ISRefillStation:new(playerObj, part, fuelStation, 100))
        end

    end
end
drifting ore
#

wip surplus mod w the help of @twin basalt

#

brita but for uniforms

robust briar
#

What is y'alls opinion, More or Less options?

ancient grail
drifting ore
#

more

bronze yoke
#

less

robust briar
#

I was thinking since I have the RGB sliders, maybe having the full color spectrum up there is kind of redundant. idk I like the rainbow though 🌈🌈

iron salmon
drifting ore
#

also should i integrate TTsKO variants into the surplus mod or make an offshoot for it on its own

#

main one already has around 25 uniform sets

#

actually ill just only make soviet TTsKO nevermind

winter thunder
#

so, how does the base game handle pills? I cant find any LUA files for them... So I would appreciate any pointers, I cant even find where the game is hooking the event trigger for taking them

bronze yoke
#

which pills?

winter thunder
#

Any of the anti-dep, painkillers, or beta blockers

bronze yoke
#

they're java if i recall

winter thunder
#

... OUCH...

#

That explains a lot...

ancient grail
#

U might want to speak with the author of imeds

winter thunder
#

Yeah, I can see all the med specific code in the Class BodyDamage section of the JD, but I was really hoping they wouldnt be like that

bronze yoke
#

if i remember, taking pills is a timed action that triggers some hardcoded java stuff

winter thunder
ancient grail
#

Ye ive been there . I just worked aorund it. Since its hard to comprehend. And nyamops is out of his country so he couldnt answer much

#

Hardcore modder lol

bronze yoke
#

i wanted to buff the herbalism health stuff, but basically all health stuff is java hardcoded

#

all i can think of is just reading the java and reimplementing the behaviour yourself, it's probably not actually that complex

winter thunder
#

Yeah... So my current fear- Checking out their steam, and their mod stuff... No updates or changes since March 8th- and they are russian :(

ancient grail
#

The way he did it was he made bunch of listeners and not sure if i can call it class but i looks that way

ancient grail
#

I talked to him before

#

His name in discord and steam isnt same

winter thunder
#

You sure? Nyamops on both

ancient grail
#

Like lots of other modders

ancient grail
winter thunder
#

Yeah

#

Seems like it

#

I see messages from them on here with that name, mentioning the med mod, and that is their steam name too

#

But the most recent message anywhere is from July

ancient grail
#

Ah ok thought it wasnt same

#

Sent u a dm

winter thunder
#

Yeah, I just mean that whenever I see a modder from Russia go MIA since the spring/summer I get worried :(

spiral sparrow
#

So I'm trying to make a true music addon for PZ and I want to change the thumbnail that shows up on the workshop, but I can't find any option to do so and file manipulation has been unsuccessful so far. Can anyone help me?

bronze yoke
#

you need to replace preview.png

#

next to your workshop.txt

spiral sparrow
#

how did I miss that-

#

Okay, thank you very much!

#

This is the technically the first time I'm "making" a mod, nonetheless on the workshop, so I'm obviously rather oblivious.

eternal garnet
#

Anyone that has done Vehicle scripting, mainly for Motorbikes, would I be able to have a hand.

First time doing one myself.

versed helm
#

hey guys, Im trynna make my world perma winter, without it being like -100 like in cryogenic, anyone know a way?

bronze yoke
#

there's a temperature sandbox option, i'm not sure exactly how strong it is though

dark arch
#

whats the difference between a static model and a world static model?

ruby urchin
dark arch
#

hmm, the water bottle seems to have both, so maybe static also refers to when its in hand

fast galleon
#

Well yeah the way to add a visible item in equipped hand is to set a static model and add hand masks.

rancid tendon
#

anyone know which container type is used for survivor caches?

#

like the containers full of weapons you find in survivalist houses

winter thunder
#

Like- I think it designates a house as a survivor house, and then changes the contents accordingly

rancid tendon
#

ah darn

storm scarab
#

4 hours late

winter thunder
storm scarab
#

So say you set anti depressants to true along with their delta, you are basically on anti depressants

winter thunder
#

for sure, I am looking to make a comprehensive drug mod- like, the not so legal kind. So I would like some way to mess with those variables, since the code is otherwise locked away for creating new meds that work in a similar way

storm scarab
#

Its quite difficult to do anything like that since we can't java mod yet, or possibly ever without piggy backing off game code

winter thunder
#

Yeah, but I will try my best :) So many different tools at my disposal, just a matter of finding some way to piece them together

storm scarab
#

Exactly that, with enough time I'm sure you will get the desired effect you are looking for, or close to it

#

I spent a good amount of time yesterday trying to find a bump anim which is basically just a bump, and not a hard shove. Something that could be seen as the player "jumping" or being scared

#

And ended up just going with the player dropping what they had on hand

hard bluff
#

Where are save game located? would like to back up my save

ripe warren
#

users/zomboid

fast galleon
ancient grail
#

is it possible to simple just paste this on lua debug and the player wioll do the action?

ISTimedActionQueue.add(ISPathFindAction:pathToVehicleArea(playerObj, part:getVehicle(), area))
#

idk how to get the params for it tho

flint beacon
#

is it possible to force the player to wear a mask or gloves for example to craft a recipe? like they actually have to have it equipped.

neon bronze
#

Through the OnTest it should be possible in the .txt file of the recipe

fast galleon
#

if you want to queue equip action, you probably should do that before the IsCraftAction

neon bronze
#

Technically you could put that in the OnCreate function aswell

flint beacon
#

a bit confused on how to do this lol im just tired XD

fast galleon
#

onceate would have to do magic equip Vs real equip though?

neon bronze
#

Couldnt it add a timedaction to equip the item before creating the item itself?

vast nacelle
#

OnCreate is called from inside a TimedAction though, right? So the equip action would just get added to the queue after the ISCraftAction.

fast galleon
#

for animation the craftaction checks prop1,2 if that is all you need.

flint beacon
#

Some samples would be great πŸ‘€πŸ‘€

fast galleon
#

I can link you GitHub code for equip, but it's not in any way related to recipes.

flint beacon
#

Sure anything that helps is appreciated!

#

I’m just trying to add that extra immersion when crafting certain items lol

#

Is there any vanilla recipes already in game that require you to wear/use the items needed while crafting? Maybe I can also use that for some pointers

ancient grail
#
    recipe Open Lid
    {
       destroy SealedInstantNoodles_s_1,

       Result:Missin.CupNoodles_s_1,
       Time:40.0,
       Category:Cooking,
       OnGiveXP:Recipe.OnGiveXP.None,
       Sound:OpenSeedPacket,
       OnCreate:Recipe.OnCreate.RemoveLid,
             Prop1:Source=1,
    }

    recipe Add Water
    {
        Water=1,
        Missin.CupNoodles1,
        Missin.NoodlePackets,
        
        Result:Missin.InstantNoodles1,
        CanBeDoneFromFloor:true,
        Heat:-0.22,
        Time:20.0,
        Category:Cooking,
        OnCreate:Recipe.OnCreate.AddWater,
        OnGiveXP:Recipe.OnGiveXP.Cooking3,
        Prop1:Source=1,
        Prop2:Source=2,
    }
#

@flint beacon heres what i did for my cupnoodle mod

#
recipe Craft Meth Table
    {
    keep [Recipe.GetItemTypes.Hammer],
    Nails=12,
    Plank=8,
    destroy Anhydrous_Ammonia,
    PZ_Flask=2,
    BucketEmpty,
    PropaneTank,
    Pot,

    CanBeDoneFromFloor:true,
    Result:Mov_Methlab,
    Time:1000,
    Category:Meth,
    AnimNode:BuildLow,
    Prop1:Source=1,
    Prop2:Source=2,
    Sound:Hammering,        
    OnGiveXP:Recipe.OnGiveXP.WoodWork5,
    }

#

and here are a couple from my drug mod

brittle mesa
#

Anyone know how to retrieve cells other than the currently active one?

fast galleon
#

hm, somebody familiar with stash system? I see no chance for them to happen? They happen only after reading? / finding? the stash map? πŸ€”

brittle mesa
#

I looked for a getcell(x,y) or similar on getWorld but doesn't seem to be exposed?

nimble spoke
prisma gale
#

hello pardon the stupidity, Is it possible to give a placed object (ie. cookingpot) the functionality of a barbecue or is it only possible if DisplayCategory is set to furniture

sour island
#

Anyone familiar with the day length sandbox options and any implications on perHour events?

#

I'd assume it would be a non issue but I got two reports for EHE where people with longer days are getting significantly more events than what they set the frequency options to.

#

Two different servers, one has 6 hour long days, and they got smacked

wind ingot
#

Where can I find all the possible lines for an item?

sour island
#

And the scriptManager file

wind ingot
sour island
#

You kind of do πŸ˜…

#

You should be able to open a class file at a time with windows though - but if you plan to really get into modding it's just easier to be able to skim the java from time to time

#

This should probably get pinned but

#

Basically gives you autofill/lookup for Lua functions + with the decompiled source you can shift+f/n search terms/filenames

#

With usage jumpto as well let's you skip around the files to see what's used where

#

I know others use vscode but I'm not sure if they figured out a way to get lookup of Lua functions

#

There's also PipeWrench which is typescript but also has lua lookup

#

Sorry for the info dump, I don't know how far you want to dive into modding

#

Are moderators the only ones with pinning powers or do the blue names have it as well?

wind ingot
#

I see, Ill check it out!
Atm im searching for the line that adds / removes Tiredness. Ill try using just Tiredness -50 and see if it works 😁

sour island
#

If you see another item using that, then it should work πŸ‘

sour island
# iron salmon

Just saw this, thanks 🌻 - I'll toss this on the wiki with the other one when I get a chance. There isn't like a big Spiffo folder on your desktop by any chance?

manic relic
#

hey I wanted to ask if anyone knew where the glove model is for the pz character

#

cause im new to pz modding and dont know where everything is yet

vast nacelle
#

The boxing glove models are at "media\models_X\Skinned\Clothes\M_BoxingGlove_Left.X" and "media\models_X\Skinned\Clothes\M_BoxingGlove_Right.X"

manic relic
#

`wait how do you add new gloves item to the game?

vast nacelle
manic relic
#

okay ima bit confused

sour island
#

There's models(shape) and there are textures(skin) - you can reuse the same model and just change textures as needed.

#

You need to define both in an item script

bronze yoke
#

getCell() gives you the loaded area around the player, it's not actually related to mapping cells

sour island
#

Is there anything in isoworld?

#

But yeah, generally, if the area isn't loaded there's not much to grab there

bronze yoke
#

there were some weird objects you could mess with, something like servercell or something, but they didn't really have any interesting methods, and i didn't check if they were actually exposed anyway

sour island
#

Yeah, I might check out zombiesimulator to see what kind of shenanigans I can get from that, but that's the only system I know of that operates even close to unloaded cells

flint beacon
sour island
#

I also tried to spawn and move around an IsoPlayer before but I couldn't get it working to load cells at the time

#

I think superb survivors has this issue - with NPCs loading in and out and not having any simulation working in the background

ancient grail
#
function SRainBarrelGlobalObject:changeSprite()
    local isoObject = self:getIsoObject()
    if not isoObject then return end
    local spriteName = nil
    if self.waterMax == RainCollectorBarrel.smallWaterMax then
        if self.waterAmount >= self.waterMax * 0.75 then
            spriteName = "carpentry_02_55"
        else
            spriteName = "carpentry_02_54"
        end
    elseif self.waterMax == RainCollectorBarrel.largeWaterMax then
        if self.waterAmount >= self.waterMax * 0.75 then
            spriteName = "carpentry_02_53"
        else
            spriteName = "carpentry_02_52"
        end
    end
    if spriteName and (not isoObject:getSprite() or spriteName ~= isoObject:getSprite():getName()) then
        self:noise('sprite changed to '..spriteName..' at '..self.x..','..self.y..','..self.z)
        isoObject:setSprite(spriteName)
        isoObject:transmitUpdatedSpriteToClients()
    end
end

im looking at this fioguring how to change sprite of an object without destroying it

and i saw this noise again.. xyberviri told me before that is like a print but i never understood that... now i tried to use noise. it just errored

#

public void noise(String format,
Object param0,
Object param1,
Object param2,
Object param3,
Object param4,
Object param5)

#

i dont get it

bronze yoke
#

it's just like print but it can be turned off

#
function SGlobalObject:noise(message)
    self.luaSystem:noise(message)
end

function SGlobalObjectSystem:noise(message)
    if self.wantNoise then print(self.systemName..': '..message) end
end
flint beacon
#

I was trying to work on a upgradable workbench system to where you can upgrade a sprite that replaces it with a level 2 version of it and unlock new recipes with it.

prisma gale
#

any idea how id go about adding oven/microwave function to a non tile object ?

ancient grail
flint beacon
#

Like an item?

prisma gale
#

yeah just a found in container item

ancient grail
#

ehh i dont think thats possible

#

but i could be wrong goodluck

flint beacon
jagged ingot
frank rivet
#

Does anyone know how I can affect the containers that load at Runtime?

sour island
frank rivet
#

not really what I meant. So basically the small cardboard boxes that are found in game are called Moveables.trash_01_25. I am trying to attach a visible model to those containers. I've done it successfully when creating a new item. But the closest thing I can use as a reference point for what I am doing is the Visible Generators mod created by blair. He was successfully able to overwrite the Generator that loads ingame at Runtime. So when you find a random generator out in the world. When you pick it up it has the StaticModel he attached to it.

#

I've been racking my brain all week trying to fix this tiny issue. I've currently gotten the item version I created functioning exactly the way I need it to. But I've been stuck at this one issue all week. When its solved I can finally get back to creating a new model for it. Since the one I have isn't up to my standards.

flint beacon
flint beacon
frank rivet
# flint beacon You try adding WorldStaticModel=YourModelName to the script txt?

Yes I wish I could explain this easier. The box in my hand has the WorldStaticModel working correctly. Actually everything is working as you would think it would for immersion purposes. BUT heres the thing. The box I have in my hand IS DIFFERENT from the cardboard box you will find when roaming in the game. The box in my hand is called Mov_Cardboard Box. But the one you see next to my on the ground is called Moveables_trashcontainers_01_25. I am trying to make the Moveables trashcontainer the one my model overwrites.

robust briar
#

Okay okay

frank rivet
#

haha.

robust briar
#

What you need to do is add a prop to Moveables_trashcontainers_01_25 or whatever

frank rivet
#

Big oof. I'm confused. Can you explain a little better lol. Sorry.

flint beacon
#

πŸ€”

robust briar
#

Yeah, I am trying. Working from two computers right now

flint beacon
#

Don’t the props only work for when crafting a recipe though?

robust briar
#

in client/Moveables/ISMoveableSpriteProps.lua line 47

#

it is reading all the props that will be used by the game when you pick up a moveable

#

When its picked up, client/Moveables/ISMoveablesAction.lua takes over, reads those props, and spawns in the item for that moveable. FOr most moveables, its a generic item which just holds a copy of the state of the moveable so it can be placed again.

#

(sorry, i am slow working through it all now, this is just me reading the source and figuring it out)

frank rivet
#

Lua. My arch nemesis haha. Gawsh I wish I could program lol.

#

I figured it would need some lua tho.

robust briar
#

there is a prop CustomItem which looks like it may be what you want to set

#

I am checking the spawning code now to see if its actually used, or just leftover from another time (which there seems to be a bit of)

frank rivet
#

Okay thank you. I would love if you could help me figure out exactly what I need to do that would be awesome lol.

robust briar
#

Welp, that is the other direction

#

So the CustomItem is not what we want

#

I am looking

frank rivet
robust briar
#

❀️ people always help me here, just paying it forward

#

Actualllyy

#

it does look like CustomItem will work. But you will likely need to implement the place yourself

frank rivet
#

πŸ˜„ the thing is. If I can figure this one process out. I could do this for so many items in the game. Which I hope in the future I could drop for everyone. But NOT before I speak to a few others.

robust briar
#

So, now to figure out how to set a prop

#

Does your BoxItem extend Moveable?

void fractal
#

is there a way to jack up spawning?

#

like

#

i wanna make 2x as much zombies spawn during night and then when it turns day they despawn

#

is that possible

frank rivet
void fractal
#

ah

#

am i able to insta-despawn zombies though?

#

cause when day comes i want all the zombies that i spawned to despawn

frank rivet
drowsy scarab
#

has anybody played the new rv interior update? for some reason the interior maps did not spawn in and I'm not sure what to do

void fractal
#

modding is for mod developers

frank rivet
drowsy scarab
#

mb

robust briar
#

@frank rivet Something like this:

local scriptManager = getScriptManager()
local scriptItem = scriptManager:getSprite("Moveable.trash_01_XX")
local props = scriptItem:getProperties()
props:Set("CustomItem", "Base.YourItemName")

I think if that fires on game load, or sometime really early one time it should make it so when you pick it up it turns into your custom item.

frank rivet
#

Can the process work in reverse tho?

frank rivet
flint beacon
#

is it possible to force the player to wear a mask or gloves for example to craft a recipe? like they actually have to have it equipped.

robust briar
#

No, Base.YouritemName is your item

void fractal
#

dunno about the making a recipe disabled until its on part

#

if you could manually disable and enable a recipe that would work

#

but i don't know

robust briar
#

I think the welding works by forcing the equip in a TimedAction

ancient grail
#

has anyone successfully used setSprite to change a sprite of an existing obj. i can only delete and spawn a new one, but now ineed the obj to stay as it is excpt for the sprite... any clues? thnx in advance

#

i trid looking at the water file but doesnt work when i try the code for somereason

robust briar
#

you used setSprite on an IsoObject?

sour island
void fractal
#

onCanPerform

#

?

#

thing is

#

itd be best if i could grey out the recipe manually

#

as if ur missing an item

sour island
#

There's a line in recipe scripts

void fractal
#

o

#

ill take a look at it tmrw, when im back on my pc

#

thanks

dull moss
#

But how do I check what weapon player is holding

#

Also how does that work in MP? will it check all players? Or only one that killed zombie? In onZombieDead there is no param of player who killed it

bronze yoke
#

it doesn't pass a player because it could die from other causes

dull moss
#

so there's no reliable way of catching which player killed it?

bronze yoke
#

you could use OnHitZombie and check if the zombie has died

dull moss
#

yea but that makes it do more checks than i want to

#

Eh if I cant check which player killed stuff I'll just be running my shit every time zombie dies

#

Not ideally optimized but oh well

waxen junco
#

What is a good way to add a new recipe to the game? Suppose I wanted to make a recipe for a wooden crate that holds 100 instead of 60, how would I create the new recipe?

sour island
dull moss
#

eh it's ok, I optimized it in some other palce

sour island
#

Doesn't onHit factor in if a zombie will die? Why wouldn't onHit be the more optimized one?

dull moss
#

cuz it would run every time z is hit

sour island
#

Yeah but you could have a single if act as a gate to cap any possible performance issues

dull moss
sour island
#

If dmg > hp

dull moss
#

I dont think OnHit can catch if Z would die

#

ah

#

smort

sour island
#

Or whatever the java does to check that

dull moss
#

nice idea

tacit ermine
#

@dreamy flicker did you get what you needed done in the end? I have some time spare to look at how you're trying to use the code/your ideal approach for pulling it into an install

dull moss
#

but ye i gotit working already and was able to slightly optimize it on other place so gonna leave it as is

sour island
#

Fair enough

#

No need to kill yourself for the last 20% (referring to the 80/20 rule, where 20% of the effort nets 80% of the reward)

dull moss
#

other way around?

#

80 of effort 20 reward

#

?

#

πŸ˜„

sour island
#

I think it's 20 effort, for 80 -- the argument being you'll spend more effort for a smaller improvement if you're greedy for the last 20%

#

But maybe I misunderstood that...

#

Would be kind of embarrassing as I tried to keep that in mind when stuff gets challenging

dull moss
#

Never heard it but I assumed you mean "don't spend 80% of effort to get minor 20% reward"

sour island
#

The 80-20 rule, also known as the Pareto Principle, is a familiar saying that asserts that 80% of outcomes (or outputs) result from 20% of all causes (or inputs) for any given event.

#

Yeah basically, don't burn yourself out trying to do everything perfectly

dull moss
#

smort

dreamy flicker
#

huh, I should update the readme on my fork...

sour island
#

I have a guy working on server automation tools if you'd be interested if that's what's being discussed

tacit ermine
#

cool, before I start working on something, can I understand how you're installing the mod onto the server? are you packaging with mvn then copying your config/launcher/ProjectZomboid64.json file over right now?

dreamy flicker
#

yeah, basically

#

I create the uberjar using mvn, plop that on my server, then I have some pre-start shell scripts (which also run steamcmd to keep the game server updated) that then copies over my target ProjectZomboid64.json from a diff git repo (gitOps in a sense)

sour island
tacit ermine
#

alright, I'll start with a tarball containing the shaded jar and the json config file

sour island
#

I don't know what anything related to server stuff is

dreamy flicker
sour island
#

But it sounds like it's similar?

tacit ermine
#

not quite, the code Oxymoron is referencing is for extending/hooking PZ java code on both the client and server

sour island
#

Ah

dreamy flicker
tacit ermine
# dreamy flicker oh man that would be awesome. and if you put it as a release on github, that wou...

cool, I'll ping you when I have something to share. I think shipping a copy of the config file might eventually run into issues (i.e. compatibility with other mods that patch JVM options or changes to JVM options by TIS themselves), but it's a good enough starter. I can probably just hook up CI to create new releases whenever a new build is uploaded to PZ steam depots to maintain compat with vanilla

dreamy flicker
#

yeah, or an install script that just parses the existing json and adds what it needs to. I can easily whip something like that up if you prefer

tacit ermine
#

that's how it works in the newer code, I extend the existing JSON on the fly to create the IntelliJ run configurations

#

I can extract it out in the future but I'll start with something that'll only take me an hour or 2

dull moss
tacit ermine
#

@dreamy flicker what is it you use it for btw? is it just the HTTP server right now?

dreamy flicker
dreamy flicker
wise rain
#

Hey guys I run a Zomboid RP server for a rather amazing community. I am looking to Commission a Mod of someone proficient would like to contact me I'd love to discuss the mod.

faint jewel
opal rivet
wise rain
#

What do you mean

sour island
#

@iron salmon ty nasko for facilitating this master piece. Also uploaded the laptop spiffo and the survivor spiffo to the wiki πŸ‘

#

Hmmm the deposit slips on the table are off perspective

faint jewel
#

can you do a trucker spiffo? XD

coral lava
#

Is anyone familiar with where the code for smoking is?

#

To explain in more detail I'd like to try and implement different forms of addictions into a game for a mod I am creating, so I would like to understand what makes the anxiety moodle tic, as well as how to sooth it.

vernal vale
#

yall how hard is the basement mod to make one?

coral lava
#

?

faint jewel
#

look at the RV interior mod. do that.

vernal vale
#

will do

gritty moss
#

Hello! I can't seem to figure out why my mask is floating off to the side πŸ˜…

frail violet
gritty moss
warm rover
#

Hi guys, how do i configure Brita's Weapon pack settings when hosting a multiplayer?

round bone
#

Hey guys, I'm kinda new but was interested, tried to check the pinned messages but did not find much, is there a beginner tutorial for modding or something I can follow

frail violet
gritty moss
round bone
# gritty moss What kind of modding?

Well, now you got me, I was checking this https://www.youtube.com/watch?v=N6tZujOPnDw&t=2383s&ab_channel=Blackbeard, to start with something, but I did not have a specific aim

This tutorial video will show you how to make a simple drink in Project Zomboid. I will go into the steps involved from start to finish. Read more below.

0:00 intro
1:08 Start
1:44 Searching for images to use in game
2:30 Searching for the Sound Effect
3:06 Creating mod file directory
3:54 Creating mod.info
4:34 Creating a poster
7:14 Adding ne...

β–Ά Play video
#

just wanted to learn about modding mostly

frail violet
gritty moss
frail violet
#

Leave that, it looks like it's already facing forward.

gritty moss
frail violet
gritty moss
# frail violet Perfect.

In all seriousness though, I applied all transforms/rotations, though I don't know why it's floating so far?

gritty moss
gritty moss
frail violet
ancient grail
viral karma
ancient grail
gritty moss
viral karma
vast nacelle
#

@gritty moss Someone in the modeling channel had issues lining up a helmet and it seems setting the exports to "X Forward" and "Y Up" worked for them.

gritty moss
gritty moss
#

Thank you to everyone to helped, I appreciate it a bunch!

viral karma
fast galleon
dull moss
#

is is possible to show sandbox options conditionally? aka "if you have this mod enabled, show this options in addition to what you ahve"

sour island
#

You could try messing with SandBoxVars. but I'm not sure what the right time in load/boot would get the results you want.

#

Or if removing stuff from that list would remove it on the UI

#

You could try jumping into the UI itself and hiding them

hardy flint
#

anybody got an idea how to check if a player is an admin on the server?

drifting stump
hardy flint
#

thanks a bunch!

ancient grail
#

da fuq have i done

sour island
hardy flint
ancient grail
#

isadmin is just the check

sour island
#

For the client, no?

hardy flint
#

exactly, i want to check on the server

sour island
#

Ah

#

Sorry just woke up πŸ‘

hardy flint
#

feel you πŸ˜›

sour island
#

Useful info tho, so ty to both of you

drifting stump
#

fixed parentheses

viral notch
brittle mesa
# bronze yoke getCell() gives you the loaded area around the player, it's not actually related...

Thanks - I did some more reading into it and yeah, seems like kind of a nightmare to achieve what I was trying to achieve. All I was trying to do was get a "total zombie population" figure but due to how the game loads / unloads map grid sections, even that is a bit useless. Cell zombielist is marginally less useless, but only is a valid list of zombies in a smaller region around the player so can't really do what I am looking for. Bit of a shame. Was going to make a "zombies remaining" kill countdown sorta thing

#

Even the debug tools only put a zombie population onto a cell when the players local cell extends into a grid

#

Might be possible to game it a bit to track population on cells you have entered, but starting to look like this might be more work than id intended for a simple mod

sour island
#

Is zombie population a fixed cap to begin with? I know it gets modified but is that something that is defined?

#

Also there's a simulated zombie manager - so the zombies are counted

#

And it handles simulated and not - if you've ever seen the -debug zombie population tool

#

For I believe the entire map (?)

#

I can use addsound to unloaded x/y/x and see simulated movement

#

After I'm done with my current commission I was going to look into a proper roaming horde mod as I understand the old old horde mod doesn't work

#

So I haven't had a chance to dig into that system yet - but perhaps there's something in there

#

Good luck @brittle mesa

haughty surge
#

Would making a mod that creates a random chance to beat the Konx Infection as time progresses a reasonable project for someone with no modding experience? I imagine it would be something like every x ticks % chance to remove the status effect.

ancient grail
#

||
--coded by Glytch3r

local function CureChance()
local bodyDamage = getPlayer():getBodyDamage();
    if not bodyDamage:IsInfected() then return end
    local percent = 5
        if not ZombRand(100)>=(100-percent) then 
        return true
        else
        return false
        end        
end

local function doZCure()

    if not CureChance() or getPlayer():isGodMod() then 
    return 
    end
    
    local bodyDamage = getPlayer():getBodyDamage();
    
    bodyDamage:setInfected(false);
    bodyDamage:setHasACold(false);
    bodyDamage:setInfectionMortalityDuration(-1);
    bodyDamage:setInfectionTime(-1);
    bodyDamage:setInfectionLevel(0);
    bodyDamage:setInfectionGrowthRate(0);    
    bodyDamage:setFakeInfectionLevel(0);
    bodyDamage:setInf(false); 
    
    local bodyParts = bodyDamage:getBodyParts();
        for i=bodyParts:size()-1, 0, -1  do
        local bodyPart = bodyParts:get(i);
        bodyPart:RestoreToFullHealth();
        bodyPart:SetInfected(false);
        bodyPart:setInfectedWound(false);
        bodyPart:SetFakeInfected(false);
        bodyPart:setWoundInfectionLevel(0);    
        end
end

if isClient() then
Events.EveryTenMinutes.Add(CureChance);
end

||

haughty surge
#

That's very nice of you, that would be awesome

ancient grail
#

you still need to test that as i just wrote it for you.. it just so happened that i have the cure codes on my snippets

haughty surge
#

Glytch3r, thank you a lot man

ancient grail
#

sent you DM

#

🫑

brittle mesa
#

the virtual zombie manager stuff is jsut complexity plus, I wasn't able to get reliable numbers being pulled from it in any fashion

sour peak
#

Hi. Is there any API that could be used to get the new version of ProjectZomboid Server was released?
The following GitHub https://github.com/Danixu/project-zomboid-server-docker build an image for each release but relies on some not good source.
Maybe I could fix it but I need to know the right way to get the latest version.

GitHub

Dockerfile to setup a Project Zomboid dedicated server - GitHub - Danixu/project-zomboid-server-docker: Dockerfile to setup a Project Zomboid dedicated server

viral karma
#

That Dockerfile seems to pull it right from Steam directly via steamcmd, so when you build the Dockerfile it will pull the latest available.
The image registry shows it has the latest (41.78) image released: https://hub.docker.com/r/danixu86/project-zomboid-dedicated-server/tags

Check out https://developer.valvesoftware.com/wiki/SteamCMD
For pulling it outside of Docker (assuming you're on Linux):
steamcmd.sh +force_install_dir "${HOME}/PZServer" +login anonymous +app_update 380870 validate +quit

thick karma
#

Hey y'all does anyone know a command off the top that works like Say but is visible to other people in Multiplayer?

sour island
#

Works in SP as well πŸ‘

#
player:addLineChatElement(text, return_color.r, return_color.g, return_color.b, UIFont.Dialogue, vol, "default", true, true, true, true, true, true)
    --player:Say(text, return_color.r, return_color.g, return_color.b, UIFont.Dialogue, vol, "default")
thick karma
sour island
#

Yes, and in chat too

thick karma
#

Oh wow

#

❀️

#

You're the best

sour island
#

Included the commented out Say()

thick karma
#

Eh?

sour island
#

Under the πŸ‘ -- included a ussage

drifting stump
#

also

thick karma
#

That commented line matters?

drifting stump
#

SayYell

#

SayWhisper

#

these are say but also sent to other players

sour island
#

No just to show the relationship between the two in terms of arguments

thick karma
#

Ohhhhhh got it thanks

#

I've never used Say's other args lmao

sour island
#

Yes, I think the "default" when changed to Shout/whisper is how SayYell/Whisper works

drifting stump
#

indeed

thick karma
#

What's with the 804 trues?

sour island
#

Uhhh honestly don't recall but they're needed for the correct overloaded method to be called

thick karma
#

And does "vol" add noise?

sour island
#

No, say/chat don't add noise - volume is range

#

If you want to add noise you have to use addsound()

thick karma
#

Ah fantastic thanks

#

I already have addSound(player, player:getX(), player:getY(), player:getZ(), 8, 8)

#

Just wondered if it might be deprecated

sour island
#

Nah you're good πŸ‘

#

I hope they do add VC/chat attraction

#

😈

#

Use those hand emotes boys

drifting stump
#

wouldnt be hard to do

#

just play an empty sound while using vc

faint jewel
#

what all items can be broken by shooting them.

sour island
drifting stump
#

thats what i mean tho

sour island
#

Oh

#

Does playsound have addsound called in it?

drifting stump
#

not sure but what i meant was doing that

sour island
#

Fair enough, I think the naming convention makes things hard to clarify lol

#

My bad

#

Maybe I'll do that before the zombie horde mod

#

Need to get this commission done tho . _ .

hardy flint
#

is the first OnPlayerUpdate event too early to sendClientCommand? it seems to never arrive on the server side, i see commands from other modules, so the listener is correctly registered

i have ensured that the module and command strings are 100% the same, also there are no errors in the console/log

sour island
#

Is this something you want to send once?

#

Or constantly?

#

Just trying to understand what you mean by too early

hardy flint
#

it's a one-off command, yes

ancient grail
#

isDebugEnabled()
getCore():getDebug()

whats the diffrence?

#
if  isDebugEnabled() then return; end 
#
if not (getCore():getDebug() or isAdmin()) then return; end 
hardy flint
#

interesting, when sending from the first Every10Minutes event it works

sour island
#

Every ten fires after the first ten I believe

#

And that is a few ticks in

#

Have you tried OnCreatePlayer?

#

It fires once already

#

Although Ive had issues with it in MP sometimes

hardy flint
#

i'll make sure to try it, thanks

tardy wren
#

Can I somehow add custom buttons to the Sandbox options tab? I want to give mine a reset button

drifting stump
#

if you want to send a command to the server as early as possible use ontick

#

networking isnt available before the first tick

tardy wren
ancient grail
#

ahh just copy the sandbox.ini

#

or just delete it

#

it will go back to default

tardy wren
#

Yes, but I want a more convenient way

drifting stump
#
local function onTick()
  Events.OnTick.Remove(onTick)
  -- do your thing
end

Events.OnTick.Add(onTick)
tardy wren
#

Give the players some way to do it easily and only for that tab

drifting ore
#

Hey. Why would my recipe still use rotten food when I set "AllowRottenItem:false," inside the recipe?

fast galleon
bronze yoke
#

at a high cooking level your character can salvage some edible food from rotten food

thick karma
#

It shows over my head but I do not see myself talking in the chat

ancient grail
#

Oooo i need this too. A text that others can see?

thick karma
#

My main goal is that other players see it over my head, so it's not the end of the world to make it appear in chat... just making sure I'm not using the wrong function or something.

ancient grail
#

I also wanted this feature and i had thos idea of using the cought or sneeze

#

Sonce thats viewable

drifting ore
thick karma
drifting ore
drifting ore
#

Damn, seems like it cant be edited the easy way

sour island
#

You know what, I might be conflating it with processMessage

#

I use both in cnd-speech

#

Check the file I linked before - there's a use of it down below - but it's for messages put into chat after the fact

#

But maybe you can call it yourself

thick karma
#

I am actually trying to test whether other players can hear me in nosteam right now... will look at processMessage if this doesn't do what I need

sour island
#

There's also ProcessSay() - it's a bit of a nest

#

You're trying to get people to say stuff others can hear right? Not typed in?

thick karma
#

Hmmm does not seem to work

#

Yes

#

not typed in, heard by others, correct

sour island
#

Did you set volume to 0?

thick karma
#

Volume is 8

sour island
#

I'll have to retest my mod to confirm

thick karma
#

0 not working either

#

Hmmm

#

Okay I think SayShout may be doing what I need.

#

Also appears in chat.

#

Hmm

sour island
#

0 would I believe prevent it from being heard outside of the source

#

It's probably one of the booleans at the end or I misunderstood the volume

#

If you're able to scan the java you can see what shout does differently - unless shout works fine for what you need.

#

Then I'd just roll with whatever works πŸ˜…

thick karma
#

I am trying to figure out how far away (if at all) zombies will hear SayShout

#

To decide if the range is acceptable for me...

#

I was hoping to customize the range, but it's not the end of the world if I can't.

#

Okay great it seems to make none afaics

#

That's ideal because I use addSound for the range

finite radish
#

are mod name prefixes still a viable way to ensure priority in the load order? e.g. exclamation points

thick karma
#

@sour island Btw SayShout appears in my chat, too, so maybe you mixed up SayShout and the addLineChatElement in your head?

#

SayShout does basically what you told me you though aLCE does

tardy wren
#

Hello, what are the colors of the moodle backgrounds?

robust briar
#

Hey y'all, does anyone know if there is a way to detect if the current player is on a 4k monitor, so I can scale up my UI to actually be readable?

#

Looking at the Radio, it looks like they are just measuring text, but is that the only way? If so, sure I can do that but I think it would be better to increase padding and stuff as well so the whole UI scales evenly not just the text

fast galleon
#

there's stuff like local width = getScreenWidth()

robust briar
#

derp.

#

Okay, to the box of shame I go

#

I kept looking for resolution

fast galleon
#

oh they use getCore():getScreenWidth()

thick karma
#

@bronze yoke For the next fool like me: the reason my item was not appearing in game is because I did not create a textures folder with the corresponding texture in my mod. I did not bother creating a textures folder because I was attempting to use a vanilla texture (just the basic default book texture). That did not work apparently.

bronze yoke
#

does that stop the item from appearing??

thick karma
#

Apparently yes

#

But I added textures and now my item is visible

#

Same code you said looked perfect

bronze yoke
#

no i'm sure it doesn't, i've put icons that i haven't made yet and it just gives me a circle with a ?

thick karma
#

Apparently, the code was not the issue

#

Well that's odd but all I did was add a textures folder...

#

Still using this:

module MasteringYoga
{

    imports
    {
        Base
    }

    item Book
    {
        DisplayCategory     =   Literature,
        Weight                =   0.5,
        Type                =   Literature,
        DisplayName            =    Mastering Yoga,
        DisappearOnUse      =   FALSE,
        Icon                =    Book,
        StaticModel         =   Book,
        WorldStaticModel    =   BookClosedGround,
    }

}
#

Only diff is I added "Book.png" to my own custom textures folder.

#

Idk I could be wrong about why it's working but that's all I did.

bronze yoke
#

maybe vanilla icons bug it out somehow...?

thick karma
#

No clue at all

#

But fwiw I would point n00bs in that direction in the future

#

Why it worked eludes me, I just started trying stuff one-by-one that I had skipped, that was literally first thing I tried, and it worked.

worldly hatch
#

how can i change the drop chances for modded items in a multiplayer server?

fast galleon
#

I know for buckets I didn't need to copy paste vanilla stuff into textures

fast galleon
worldly hatch
#

And yes

drifting ore
#

I'm really excited for the animals to be released. I think the framework is really going to open up modding in special enemies by a massive amount
I am hoping to get some of the enemies from RE3 one day.
Does anyone have hopes/plans for when the next builds come in?

sour island
#

You can get a lot out of zombies right now tbh

#

CDDA zombies, soul Filcher s turning time, and super weird helicopters all have special zombies - there's probably more out there

#

If you're waiting to jump into modding - no need to wait πŸ‘

lavish arch
#

How do I find a texture for an in-game item?

#

I wanted to use a cash register, but I needed its texture and model 3d from the game, does anyone know how I can get it?

sour island
#

It's not a 3D model, it's a 2D sprite apart of the sprite sheets

lavish arch
#

and where do i find it?

winter thunder
# lavish arch and where do i find it?

If you download the project zomboid modding tools, tilezed will give you sprite sheets for all the items in the game. The tiles are not 3d like Chuck said, but are 2D sprites- so you can find them in those sprite sheets

lavish arch
#

Sorry to bother you, do you have a tutorial on how to do this? I'm new with mods unhappy

winter thunder
#

So, what are you trying to do?

#

For the tile, your just gunna wanna go into your steam library, and search for the modding tools. You get them by default for owning the game, just need to download them. Launch it, then go to ~/steamapps/common/Project Zomboid Tools (or something like that) and open the file that’s named tiles. All the tile sheets will be in there

#

@lavish arch

lavish arch
obsidian widget
#

Is there any solution for rotten food that you can open giving fresh sub contents inside that should instead be rotten?

quasi kernel
#

Theoretically, couldn't you just make a custom crafting function?

#

Just check the freshness of the item and set the contents accordingly.

obsidian widget
#

I'm not sure how to make a custom craft function currently so I guess I'll need to do that

quasi kernel
#

I believe recipes have an "OnCreate" function, if not you can always add one.

sour island
#

You will have to use the oncreate and apply the setAge function if I recall the name correctly

stray valve
#

Greetings, I want to translate the mods in the workshop into Turkish, do I need to contact the creator after the translation, or is it okay if I share it on my own Steam workshop?

bronze yoke
#

if the mod correctly uses translation files, you can just upload the translation files and nothing else

#

although i would first ask the author if they would like to integrate the translation into the original mod

stray valve
dull moss
#

getPlayer():getZombieKills() woudl return player killcount, right?

stray valve
#

What method should I follow for this?

bronze yoke
#

if the mod doesn't use translation files, you will need to edit the mod which means you'll have to reupload the original author's work and then you will need permission

deft falcon
#

this one is for modding aka making mods

finite canyon
#

Cheers, il copy past it,

dull moss
#

for sandbox, is it type = double or type = float if I want to use decimals?

#

double

dull moss
#

anyone knows why this wouldn't reach point 1?

for n = 0, player:getBodyDamage():getBodyParts():size() - 1 do
                selectedBodyPart = player:getBodyDamage():getBodyParts():get(n);
                print("Bodypart: "..tostring(selectedBodyPart:getType())..":hasInjury() = "..tostring(selectedBodyPart:HasInjury()));
                if selectedBodyPart:HasInjury() and ( selectedBodyPart:getType() == "Groin" or selectedBodyPart:getType() == "UpperLeg_L" or selectedBodyPart:getType() == "UpperLeg_R" or selectedBodyPart:getType() == "LowerLeg_L" or selectedBodyPart:getType() == "LowerLeg_R" or selectedBodyPart:getType() == "Foot_L" or selectedBodyPart:getType() == "Foot_R" ) then
                    defaultOneHourFraction = 0.167; -- 0.167 every 10 min equals to 1 in 1h
                    print("point 1");

Log says it should work?

#

^added ss in case it's more readable than code snippet in discord

ancient grail
#

how do i create custom event that only activates when player is aiming

thick karma
#

Is it possible to add a texture to the book that you are actively reading?

#

I notice even vanilla books are simply red when you're reading them

#

They do not reflect the color of the book in the icon in your inventory, or the color of the model on the ground when they get dropped.

dull moss
#

idk thought never used it myself

thick karma
#

Wouldn't work for gamepad players @dull moss

quasi kernel
#

Is it not possible to hook to a weapon ready event or is that on the java end?

thick karma
#

In IR, the only way I could find to do it (for KBM and gamepad) was an OnTick that checks whether player isAiming.

thick karma
#

I couldn't figure out how

ancient grail
#

i plan to use the isAiming but i want it to also activate a funmction when it is.. or maybe just an ontick or playerUpdate but just returned if not aiming?

thick karma
#

Exactly, it can check whether you're aiming pretty fast, shouldn't break the game unless you go wild with what you do when you aim

#

In fact I can close a dozen UI elements when the player isAiming, and triggering that once does not cause noticeable slowdown for me.

#

I'm sure you can get away with a fair bit of activity once in a while OnTick, just don't spam stuff in loops.

jaunty marten
bronze yoke
#
    model Book12
    {
        mesh = Book,
        texture = WorldItems/Book12,
    }
thick karma
#

Ahhh interesting

#

Thanks

#

So Book for open-reading, WorldItems/Book for open ground

#

Weird choice of naming but ❀️ if this works.

bronze yoke
#
    model Book12
    {
        mesh = Book,
        texture = WorldItems/Book12,
    }
    model Book12_Ground
    {
        mesh = WorldItems/Book,
        texture = WorldItems/Book12,
        scale = 0.4,
    }
    model Book12Closed_Ground
    {
        mesh = WorldItems/BookClosed,
        texture = WorldItems/Book12,
        scale = 0.4,
    }
thick karma
#

Awesome

bronze yoke
#

the first two books in a series use the open model, the other three use closed, iirc

thick karma
#

Cool, I am not making a series... Just trying to make a small collection of books that teach meditation (grant "Yogi" trait). I'm gonna make them all look closed on the ground.

bronze yoke
#

even if you were, nobody even realises this pattern lol

#

i'm sure there are very few people to have noticed or cared

thick karma
#

Haha fair enough.

#

I am just trying to make me daggone book look right... having a red border on the brown book I just opened while I'm reading it takes me right out of the game lol

#

You know because all the other graphics are so flawless and realistic.

#

LMFAO @ the scaling

jaunty marten
#

XD

undone crag
thick karma
#

@undone crag It's actually done via .png files that are used as textures for models in the item script .txt files... no Lua for the coloring of books while you read them... but I got it working, thanks in large part to @bronze yoke for showing me the right mesh to texture!

Thanks also to @ancient grail for some good work on the wearing of the pages!

#

Yes that's a little Buddhist monk in the book...

#

Woohoooooo

undone crag
#

o:

thick karma
#

haha this took so long lmfao but at least it worked.

undone crag
#

I thought books had the default transparent dark grey with light border though. Maybe it changed or it varies by book.

#

Oh do you mean the model the character carries? I thought you meant writing on paper. Your character can write in some books.

thick karma
#

Yes I mean the book he's reading above

#

In vanilla, literally every book you read is the red book with white pages.

#

Even if the book looks brown in inventory

#

So I wasn't clear whether they COULD have textured their books correctly

#

@bronze yoke proved to me that yes, yes they could have. Haha.

bronze yoke
#

yeah, the unreleased version of my literacy mod corrects that

thick karma
#

Please link me when you're done, I would definitely use it! @bronze yoke

#

haha that kind of inconsistency bugs me so much

#

So glad I asked for help and you were online because I was so close to reverting to a red book for consistency's sake

sour island
#

Same, but I assume you're adding more item types of books?

#

I wanted to add recolored models for Named Literature but the model is pulled from the item script not the item itself 😒

#

And the goal of the mod is to have a tiny footprint item wise so I didn't have to mess with loot distros

thick karma
bronze yoke
#

my mod is focused on skill books, it doesn't expand on the generic books

sour island
#

I was more interested in what I assume are changing models but I don't think what Id like is doable

bronze yoke
#

i just edited the item scripts with script manager, i couldn't have multiple models per book or anything

sour island
#

Hopefully in the future there's item variation that isn't just a whole new item

bronze yoke
#

you could override the model through ISReadABook perhaps?

sour island
#

I suppose you could, but that still leaves the world model

bronze yoke
#

hmm yeah, i can't think of a simple way to fix that

sour island
#

There isn't

#

Would have to get a lot more hacky

#

It's not the end of the world though so it's fine

#

The meditation poses look neat tho

#

Do you plan to do alot more?

#

@thick karma

sour island
bronze yoke
#

yeah, i just recoloured the book texture to match their sprites

sour island
#

Ah, that's a solid change

thick karma
# sour island Do you plan to do alot more?

I am unsure when I'll get to it, but what I would really like to do is add new attack animations for some melee weapons, rather than just swinging the same way, but I will have to look into how to make animations with items in my hands.

sour island
#

I think the game could use more loving to combat

#

Some way to charge melee attacks for heavy or quick would be nice

thick karma
#

No kidding

#

That would be great

#

Does :stop() on a timed action get called when the action completes successfully? Or only on interruptions

sour island
#

Not to mention kicking and punching which get brought up a ton

thick karma
#

Oof

sour island
#

OnPerform is completed

thick karma
#

Interesting, I only see ISUnequipAction:perform() in the unequip event

bronze yoke
#

it's just perform()

sour island
#

Sorry, got my terms mixed up

#

There's alot of similarities lol

thick karma
#

So it goes update>update>update>perform and it's done?

sour island
#

Yeah

#

Update each tick while the time is going

#

You can also make it loop forever

#

So the player has to manually interupt it

thick karma
#

Okay fantastic... gonna just hook the perform function and try adding a little extra magic to it

#

on unequip

sour island
#

For weapons?

#

I think Brita added knife flips to equipping lol

#

So unequipping should work for that too

thick karma
#

Nah unrelated sorry

#

Meditation looks wonky when you do it with an item. Currently I have it begin to unequip item when you trigger sit, but since sitting is in fact not a timed action, sitting happens immediately during unequip so it doesn't actually unequip before sitting, and thus sitting stage of animation doesn't happen

#

Trying to finish sitting immediately after successful unequip

sour island
#

Is sitting an anim state?

#

The timed action vs anim state is weird too me

#

Timed actions seem much more flexible and easy to use - but I guess thats from a modders perspective

bronze yoke
#

it's because you can perform timed actions while sitting

sour island
#

That's true I think timed actions can only occur 1 at a time

bronze yoke
#

they are a genuine pain, but it was needed in that case

thick karma
#

I think I'm gettin close... decorated the perform function so hopefully it will continue forward with the process of sitting immediately after weapon gets removed.

#

testing now

faint token
#

Hi guys, so, i made a shop mod, it's an item, but i want to turn his sprite into the vanilla cash register. I saw on the internet hints to do it like the picture, but a tried a lot of variations and none worked. Someone know how to do it?

jaunty marten
#

try location_shop_accessories_01_21

quasi kernel
#

What do y'all figure would be the best way to go about a mineral mod?

#

I'm wanting to introduce ores and the like, but the only thing that comes to mind are rocks, which are finite.

#

(Rocks as in sprites you can mine)

#

Only other idea is being able to scavenge for them, but that feels significantly less effective.

#

I'm wanting to make use of it for a more deep ammunition crafting mod.

#

Being able to manually make your own gunpowder and casings from the unused vanilla molds.

bronze yoke
#

there's no realistic way to do it, so get gamey with it

quasi kernel
#

Hm.

#

Fair.

#

I just like trying to stick to realism for the sake of Zomboid since I feel that's the greatest strength it has.

vast pilot
#

Are there any resources for making melee weapons out there? All of them seem to be for firearms

quasi kernel
#

Brick's Wants Weapons iirc

#

Let's you make axes and stuff

viral karma
bronze yoke
#

yeah that's what i'd imagine

vast pilot
#

Like, most of the learning resources for weapon modding seem to be focused around firearms instead of melee weapons

quasi kernel
thick karma
foggy ore
#

Hello, I'm looking for someone to make me a vehicle mod, similar in scope to the M998 humvee mod. We can discuss price in dm's

ancient grail
red crane
#

I'm looking for mods that make the pc more powerful, ideally to a comical state of op, but in a way that's more interesting than just "high hp no infection"

thick karma
#

@red crane I am working on a Jumper mod r.n. Can let you know when it's live.

thick karma
#

You can save virtually endless locations in your global context menu, stored by category (and of course teleport to them immediately)

#

Todo: make sure nearby players can be dragged along with you, rework the context menu code a bit so that same-name locations are allowed in different categories

#

Saves 3d location so you can teleport to roof and such

#

I think it's fun, hopefully the realists won't downvote it out of spite.

thick karma
drifting ore
#

Honestly I would love to get into modding, but my motherboard fried a week ago and its gonna be awhile before i can even play again let alone mod (on mobile rn)... Plus im waiting for animals to have a higher chance of avoiding incompatability with other zombie/clothing mods. Im hoping that adding creatures will be handled separately from reg zombies so that I can make them exceptionally rare and with different senses/durabilities.
The biggest hope is to get infighting amongst the enemies as in zombies versus BOWs. Currently I don't think infighting is possible yet, not without an overhaul which could cause compat issues

#

I also wondet if onesided josyility is possible, but it wont be clear till its ready

#

*wonder and hostility

bronze yoke
#

i imagine you'll be able to do all of that in b42 without too much difficulty

drifting ore
#

Exactly. Also there are dino items with 3d models... So Dinoboid wen?
Joking for now at least

#

Replace the chicken models with t-rexes but leave them functionally the same.
Profit

thick karma
ancient grail
#

does vehicle have moddata?

bronze yoke
#

yes

red crane
thick karma
# red crane I'm wanting to find like a vampire mod where eating zombies heals your injuries

I actually thought of making a zombie-eating mod... I hadn't considered the vampire angle yet, haha. That would be a nice bonus feature. I'll consider looking into that when I figure out how to create the ability to eat zombies. That's gonna take a lot longer than those other two for me... I imagine it would involve a custom item and a bunch of custom recipes if I wanted to do it right lol

#

Maybe even a context option for butchering the body.

fast galleon
#

just need a recipe to cook dead corpse probably

ancient grail
#

Can you guys check my logic if this is correct or maybe u guys know of a better or easier way
Im making a speedgun mod
(Lets u check vehicle speed when pointing at them)

Police player:
Ui function that displays the speed captured of closest driver player (better if i can use isAming and capture where the player is aiming

Function Ontick checks if vehicle is nearby and takes the moddaata which contains the speed

Function that toggle ontick on and off using onequipprimary event

Driver player:

Ontick applies moddata when driving

Toggle function that turns on and off the ontick function
nils moddata when leaving the vehicle or switched seats

ancient grail
#

Omg can u share link?

opal rivet
#

Here ya go

#

I hope this is what you're looking for

ancient grail
#

It really has speed gun?

#

πŸ”«

opal rivet
#

No

ancient grail
#

Ah so thats what im building

opal rivet
#

If you want that mod I can give it to you

#

But it's very op

ancient grail
#

Thats your mod?

opal rivet
#

Nope

ancient grail
#

πŸ€”πŸ˜΅β€πŸ’«

#

I dont ubderstand what u mean

ancient grail
#

Oh nice

#

So what did u mean by give it to me?

opal rivet
#

I didn't say give anything

#

I mean to help you find the mod

ancient grail
#

Ahhh ok cuz u said it but u already shared the link

opal rivet
#

Do you understand what I mean

ancient grail
#

I gues i do now πŸ™‚ thnx

#

So anyways i still need to determine if my logic is on point

opal rivet
#

Here's a tip of you want to be good at Aiming

ancient grail
opal rivet
#

Just use a shotgun

ancient grail
#

No i mean aiming at the player captures the speed of the vehicle

#

Its not a real gun its a device that captures the speed of objects

#

A radar speed gun (also radar gun and speed trap gun) is a device used to measure the speed of moving objects. It is used in law-enforcement to measure the speed of moving vehicles and is often used in professional spectator sport, for things such as the measurement of bowling speeds in cricket, speed of pitched baseballs, and speed of tennis se...

opal rivet
#

Oh

#

You mean that

ancient grail
#

Ye

opal rivet
#

Bloody hell you confused me there

#

I'm not sure if there is one

ancient grail
#

So i need to get the moddata out of the player whos droving ehile aiming the speed gun at him im not sure where on the vanilla lua i can find that function that creates a green and red highlights when aiming
I need to hook into that

fast galleon
#

Make, it shoot laser with 0 damage and retrieve speed of vehicle on hit?

ancient grail
#

But how do i disable player stagger

fast galleon
#

it was inspired by the conversion above

ancient grail
#

Getting shot by 0 dmg stuns

#

It will still stun

ancient grail
#

Is it an event?

fast galleon
#

I am pretty sure anonymous has something that can help you with vehicle related code

ancient grail
#

ok thnx i might ask him

#

lol i might tag the wrong person again

edgy ruin
#

yo, does anyone know if there is a mod to allow zombie loot to drop from corpses that decay/despawn? Or maybe a setting?

tacit ermine
#

note it's quite a bit larger than the previous approach because it bundles the kotlin runtime and compiler

sour island
#

Does anyone still have the button on their load save menu for opening the save location? Or in the mods menu to open mod folder?

#

I can see desktop access is a boolean set in the java and only referred to in Lua - but I don't recall when it was set to false for me and there doesn't seem to be a way to enable it.

#

I'm curious if the devs decided to disable it at some point.

ancient grail
#

anyone has the function hide the container from the inventory panel

#

cuz the safe should be close and when it opens thats the time ti shows the container

sour island
#

I figured out a way to lock one

#

Normally it only works for a thumpable

#

The safe should be a thumpable right?

#

You should be able to set a locked by number

#

Otherwise, you can check out pzshops on GitHub and pull that code

ruby wagon
#

Is there a mod that basically when fighting zombies your character would attack the nearest (standing) zombie within your characters view? I've gotten killed too many times by my character swinging past the closest zombie and getting bit.

ancient grail
# sour island I figured out a way to lock one

I have a snippet that let me spawn anytile that i can convert into co tainer thats locable by padlock

Bht thats not the case i think

Cuz im doing a unique thing
My spritesheet has a closed and open version of the safe

#

I want the container invisible when its closed

#

Well sorta like padlock but still not exsctly

ruby wagon
bronze yoke
#

so i think that api must be enabled on their computer

#

i never really investigated why, maybe they're on an older os or something

manic relic
#

anyone know if the full balaclava is like the gloves only a texture over the player model?

#

or is it a model

ancient grail
#
local url = "https://projectzomboid.com/modding/index-files/index-1.html"
if isSteamOverlayEnabled() then
activateSteamOverlayToWebPage(url) --opens steam
else
openUrl(url) --opens browser directly
end
ruby urchin
manic relic
#

thanks

#

btw anyone know what the name or path of the file is?

ruby urchin
#

...\ProjectZomboid\media\models_X\Skinned\Hair\M_BalaclavaFull.X

manic relic
#

its under hair?

#

damn you helped me so much

#

id never would have found it

#

Thanks a lot

ruby urchin
bronze yoke
#

oh, i missed that openUrl only uses the api if it's available

sour island
#

OpenUrl isn't the same as the desktopAPI

manic relic
#

thank you so much man

ancient grail
#

Whats the desktop api

manic relic
#

your a real hero

sour island
#

Im just trying to figure out if anyone still has it enabled

#

DesktopAPI let's you open folders on your computer from in game

#

There are two buttons that get hidden if it's disabled

bronze yoke
#

it does use the desktopapi, but only if it's available

ancient grail
bronze yoke
#

i missed that and thought it only worked if the desktopapi was enabled

sour island
#

OpenURL requires desktopAPI? Cause open url works for me - open folders does not

bronze yoke
#

it uses desktopapi if it's available, otherwise it uses a different method

sour island
#

Also isopendesktop is always flase

#

Oh

#

That's kind of weird

bronze yoke
#

i missed that when i was searching for uses of desktopapi and thought it didn't work without it

manic relic
#

so it says this

sour island
#

I wonder if openURL can be used to technically open folders ...

manic relic
#

is that good or not

bronze yoke
#

it can LOL

#

worked

sour island
#

Heh

#

Does it open in browser or in explorer?

bronze yoke
#

it opens in explorer, surprisingly

sour island
#

Alright, that helps me a lot with the ErrorMag

ancient grail
sour island
#

Anyway - if you have a container that's a thumpable you should be able to set locked by code or padlock

#

Or locked by user

manic relic
#

yeah it always says an error has occurred during the conversion

ancient grail
#

I cant find on tilezed the isothump option but i know how to do it in lua

sour island
#

I'm not sure about creating your own in a tilesheet but yeah yo u can just spawn a isothump

#

I would assume isThumpable would be it?

#

For the tilesheet

ancient grail
#

Yikes

bronze yoke
#

i don't think it'll open a file

ancient grail
#

Care to try

sour island
#

It wont

ancient grail
#

Ok

sour island
#

Well... It shouldn't

bronze yoke
#

i'll give it a try...

ancient grail
#

Yikes

sour island
#

Afaik typing a file name into your browser should just open it's location

bronze yoke
#

yeah i don't expect it to run anything

ancient grail
#

It does thats true

sour island
#

I tried it at work

#

It makes me download my own file

#

🧠

bronze yoke
#

when i try to give it a file, nothing happens at all

sour island
#

That's typing it in though - openURL might do other stuff

#

Check your downloads

bronze yoke
#

i did, it's not downloading them

sour island
#

Yeah it probably has some safety check

#

That's actually pretty useful for some mods that require moving files manually

bronze yoke
#

it's possible that behaviour differs between browsers

ancient grail
#

Could be

#

But most browser are the same tho.

#

Excpt the download.
Some can be configure to auto dl

bronze yoke
#

if i give it an image it opens it 😟

sour island
#

Time to force players to look at my feet

ancient grail
#

What if its an exe disguised as a png

sour island
#

I can try that

bronze yoke
#

it opens mp4s too 😟

#

it didn't run an exe i tried though, and i tried giving it some weird formats my computer can't open and nothing happened

ancient grail
#

You can promote your bathroom singing record

#

Try to make it open pz again

#

Lol

#

Or loop open bunch of images 😹

trail lotus
#

Tattoos possible in game?

sour island
#

I'd prefer this method not get disabled

#

. _ .

ancient grail
bronze yoke
#

it doesn't open file types that i'd expect to be dangerous, like exes and bats

trail lotus
#

Ahhh, ok thanks. Some one wants to start a tattoo shop in game. So maybe we can look at a custom mod for all the stuff @ancient grail

sour island
#

That's probably a built in safety for the browsers

bronze yoke
#

i don't really like that it opens files at all but i don't see any obvious security oversight

trail lotus
#

Possible skizot or some one can load in some drawings idk how it works.

sour island
#

The mp3 and images is weird

#

I think it's just browser behavior

bronze yoke
#

if i put an image into my browser though, it doesn't do that

ancient grail
sour island
#

Mine can

#

If you choose to open images in chrome for example

#

It will just open it for viewing

trail lotus
#

Ahh ok, so you just wear it or can the person give them the tattoo

#

Like in the medical stuff. β€œDraw tattoo” β€œleft arm”

ancient grail
#

Making someone give the tattoo is the complicated bit but doable

bronze yoke
#

if i put the image's directory into my browser it embeds the image into the browser

#

if i use openUrl, it opens it in Photos

sour island
#

That's actually odd

#

Sounds like it's juggling for default programs

ancient grail
bronze yoke
#

isn't there already a tattoo mod?

sour island
#

It can be added to the medical context menu with out being medical

ancient grail
#

He wants other player to do the tatooing tho not sure if thats how that mod works

sour island
#

There's also that advanced medical mod - I wonder if that's good/fun

trail lotus
#

Ahhh. Hmm so maybe possible for one person to give others tattoos

sour island
#

Tasty skin infections cause you wanted to look cool during the apocalypse

trail lotus
ancient grail
#

Yes technically yeah

sour island
#

I wanted to check it out but it seemed more focused on "realism" and a bit much

trail lotus
#

Maybe I’ll have to look at the tattoo mod, just wanted to keep it limited to the shop owner to give tattoos. Not just anyone

sour island
#

Shop owner?

trail lotus
trail lotus
ancient grail
bronze yoke
#

i definitely want more depth in the medical system, but that mod seems a bit much

ancient grail
#

Sooner the better

sour island
#

Does it have more illnesses or is it just blood transfusion stuff?

ancient grail
#

Unguys talking about imeds?

sour island
#

I was working up the courage to introduce germs as a mod

trail lotus
sour island
#

Something simple

trail lotus
#

I like the complex medical system. We will have to see what’s causing it to be broken. I think some of the ems guys were saying the things were not letting them transfer blood.

#

Most likely because it was the wrong blood type, how ever idk if it will still let you or not.

#

Apparently we need to get better training programs for ems.

ancient grail
#

Sounds like tons of work on that note

trail lotus
#

We also have over 15 ems guys. I’m sure Casey could figure out some kinda training to help them on her part.

#

Issac is doing the police training courses everyday cause obv are police are not properly trained.

#

We saw that when some one was gunned down at that bar πŸ˜‚ that’s a terrible video but it’s so funny cause it’s not real

ancient grail
#

I still havent logged into the server . But i notice we getting more traffic nowadays

trail lotus
#

Like 60 players through out the day

#

Growing everyday.

ancient grail
trail lotus
#

Hopefully we can see 100-200 everyday soon.

ancient grail
#

If all of em send like 1$ to each dev that would be instant 60$ for all lol

trail lotus
#

We have made 26 dollars this month in donations.

#

Last month we did 50 sooo.

#

It seems like we are doing a good job.

#

I assume we can see 50 again this month hopefully, that way I can keep giving bonuses or commission more for the server

drifting ore
#

Hello guy, do you think it's possible du use talkie-walkie feature to make a phone?
I think I already check but it's was not possible

trail lotus
#

Not possible ?? I hope it’s possible πŸ™‚ maybe if we linked a outside voice provider like team speak?

bronze yoke
#

you could put the two players onto the same frequency when they start a call

trail lotus
#

Ohhh… and make it random

#

Each time?

marsh gale
#

Anyone know where the code for the game camera is?

bronze yoke
#

i would have a certain range for call frequencies and use the lowest available one or something

#

are there frequency limits? you'd want to go outside of anything a vanilla radio can reach

drifting ore
#

Mmmm, but it's that even possible in lua ?

trail lotus
trail lotus
bronze yoke
#

i think it's possible, the ui for starting a call would be a nightmare to write but i think the concept can work

sour island
#

You could write your own system for phone calls

sour island
#

I wouldn't use radios tbh as they're specifically designed to work a certain way

bronze yoke
#

i didn't think we could control voice chat very much

sour island
#

You'll run into more issues trying to work around a very specific system

trail lotus
drifting ore
sour island
#

You can use/decorate certain functions to catch messages spoken outloud

#

Idk about voice chat though

drifting ore
#

Yeah, last time I check it's coded in java and I don't touch java

sour island
#

I only speak on Lua

trail lotus
#

Mm, possible to create a text link then? maybe instead of doing voice chats phones and stuff would just have to be private text chats.

sour island
#

I wouldn't mention a Java mod - only cause they seem like more of a headache

sour island
bronze yoke
#

yeah, anything i say is impossible is probably possible with java modding

trail lotus
#

Ultimate goal was to create phones for people to use on the server.