#mod_development

1 messages ยท Page 116 of 1

pulsar heath
#

and the syntax sometimes makes no bloody sense...

#

and between similiar endpoints the syntax changes drasticly... so if its for this endpoint X its a b c d for Y its c a d b

#

when it uses the same values but in diferent order... that just annoys the hell out of me

red tiger
#

Yeah.. Bloat isn't a good thing.

#

It's why I think for example that PZ shouldn't be made using a commercial engine like Unity or UE4.

#

Making your own engine is fine in my book.

pulsar heath
#

yeah if you have the skills for it

#

why settle for making something the way someone else wants you to if you can make the way you want?

#

plus now that i know i've been promoted and only working 4 days a week

red tiger
#

That's why I mod.

#

That's actually why I core-mod.

pulsar heath
#

i know ill have the time to dedicate to this and several other projects

#

so i rather do it the way i think is best

red tiger
#

I don't like to sit and wait for things. =)

red tiger
pulsar heath
#

doesnt mean its the right way... but its my way at least ๐Ÿ˜„

red tiger
#

"F it. I'm making my own lib. Screw yours!"

pulsar heath
#

in this project ive crossed to the dark side... vbnet

#

๐Ÿ˜„

red tiger
#

Why vb though?

#

Preference over CS?

pulsar heath
#

why vb... since im gonna make it public on github... vbnet is easier to "rookies" to understand

red tiger
#

I'm afraid to express my thoughts on VB. It's very slanted and biased on my experience in C Syntax.

#

So you'll know everything about my perspective.

pulsar heath
#

vbnet is good for "quick" projects

red tiger
pulsar heath
#

which is not the case for this one

red tiger
#

VB scales way better than Lua.

#

I also like that I can mix CS with VB.NET so I can avoid it.

#

xD

pulsar heath
#

you can mix pretty much anything with vbnet

#

i still use libs i made in C++

#

just add a reference to it

red tiger
#

Hahah to me that's the only good thing about VB.

pulsar heath
#

and use it at will

red tiger
#

I saw a codeproject post on how to run C# from the JVM in order to use JNI libraries.

pulsar heath
#

my way of thinking about vbnet and C# is the same as my app and the pz mod i made

#

the heavy lifting is done by the more powerfull language

#

the rest can be done in lua or whatever

#

so the gui is in vbnet the libs are in c#

red tiger
#

My thinking on flow for designing frameworks has become so abstract.. I've realized lately that I may have stared into the void of design.

#

Haha

#

But yeah this is all fun.

pulsar heath
#

coding its only but a hobbie as of late... since my profession lies somewhere else

#

apart from some freelancing jobs i do, i only code for fun

red tiger
#

@tame mulch Is there a point in time when I can get information on the updated schema for ZedScript? I can write a parser for this version as well.

#

It would also help modders if docs could get a head-start on it.

#

I also need to see which script properties belong to which categories. I can write a strict-mode to detect problems in existing scripts.

tame mulch
red tiger
#

Thanks.

pulsar heath
#

it works

#

so now to make the damn gui

#

and this is where i get bored... gonna stop for a bit... i hate making gui's...

red tiger
#

Good luck.

thick karma
#

Has anyone made a playlist mod for True Music?

red tiger
#

.."A flexible per chunk 32 height that can be different in each chunk, allowing parts of the map to be at 32 level height, where others in theory go from -31 to ground floor."..

I'm really hoping that the chunk setup uses powers of two so all coordinate conversions can be in bitwise operations.

#

The game will be so much faster if so.

#

Was thinking of modding the game to experiment with this as a benchmark but I might wait to see what 42 is cooking.

#

Cheers for the render team. Hopefully we can make maps of New York and Chicago with the optimizations for 42.

#

The thursdoid is a long description of caching chunk renders. It's good to see this finally come about. I'd like this for the UI though.

#

=)

sour island
#

The blog is really really chock full of goodies

red tiger
#

It explains rendering to the normies. Too bad they didn't go into detail on their SpriteRenderer's TextureDraw issues.

#

(Nerds out)

sour island
#

I wasn't aware they were working on anything render related so it was a nice surprise

#

Makes super basements and larger buildings more possible too

red tiger
#

Oh. I was given a warning that rendering will change for 42 when I started modding their render engine.

#

My question is why make z chunk ranges dynamic?

#

It'd make things faster to do +16 <-> -16

sour island
#

I guess I don't mess with complicated enough stuff to warrant a warning ๐Ÿ˜…

red tiger
sour island
#

I think chunks will be 10 cubed

#

Atleast for loading purposes

red tiger
#

I mean I can use shading to turn your vehicles into driving rainbows.

sour island
#

It was 10*10*7 prior - if I'm not making up stuff

red tiger
#

I've stated in the past that using powers of two would speed up the map engine drastically.

#

It is decimal yes.

golden plover
#

Can somebody tell me where i am allowed to announce that i am ready to commission someone to take my car and make the code for it work (one month of troubleshooting wasn't enough)

sour island
#

You'll have to shop around for people who take comissions

#

There isn't really a portal or page for that

golden plover
#

i'll see what i can find.. but thanks

red tiger
#

To convert from world to chunk coordinates in powers of two I could simply do:


// Chunks being 16x16
var worldX = 17;
var chunkX = worldX >> 4; // 1
#

Bitwise = superior.

#

:D

gilded hawk
#

is there an event for when a zombie spawn? I need to give the zombie an item to wear

ancient grail
#

There are none

#

But you can use OnZedUpdate and give it to him

gilded hawk
ancient grail
#

Yep

gilded hawk
#

Is there no function on the lua side of PZ that is called when a zombie spawn, and gets it's outfit?

ancient grail
#

Try it

#

I believe this will work

neon bronze
#

I mean you could also just define an outfit for your zombie like TIS does for their say police zombies

drifting ore
#

Now I wonder

gilded hawk
red tiger
drifting ore
#

Ahh

neon bronze
drifting ore
#

UI was fun until I started looking into how to color the slider dynamically as it moves left and right lol

#

Three hours gone and got nowhere so far lol

worn juniper
#

Is it possible to make have a map act as a container?

#

Still being able to read the map

hot patrol
#

The dakimakura mod thanks you, Indie Stone!

red tiger
hot patrol
#

On build 42

#

If I understand that right I will finally be able toake all my dakimakura just one item with different texture options

#

Copy paste hell will be over

red tiger
#

A LOT of modders have waited a long time for this feature.

hot patrol
#

Also decrotive placement options veiAhegao

red tiger
#

Was discussing this exact thing yesterday.

hot patrol
#

Very exciting

neon bronze
#

Seems like they also tend to use finally tags more often

gilded hawk
#

Does anyone have any suggestion for how to ensure that my function added to Events.OnZombieUpdate only runs once per zombie and not multiple times?

neon bronze
#

Break?

#

If you find a zombie then break?

#

Or a bool value

red tiger
#

The event will fire but you can wrap your execution of code with a check from a table.

gilded hawk
#

Sounds like a smart idea, thank you

#

does the ID of the zombie change between loads? ๐Ÿค”

#

What if I want to ensure that I'm running it twice between sessions?

#

I assume the zombie:getModData() would also be a good option, no?

red tiger
#

I forget what gets serialized.

#

Maybe I'm thinking MP not SP.

#

uhhhhhhhh

#

Try it and get back to me if it doesn't work.

gilded hawk
#

I noticed that CDDA zombie uses both id and online id

#
function CDDA_GetZombieID(zombie)
    if zombie and zombie:isZombie() then
        local id
        if isClient() or isServer() then
            id = zombie:getOnlineID()
        else
            id = zombie:getID()
        end
        return id
    else
        return 0
    end
end
red tiger
#

Yeah IIRC that would be the right way to go about this.

gilded hawk
#

Alright, thank you

red tiger
#

Lunch time.

red tiger
#

Hmm.. I'm worried. Will ZedScript have version flags when the format changes?

#

I'd otherwise need to version control using PZ build ranges. ded

spare burrow
#

Has anyone tested or done tweakitem with variables?

#

like TweakItem("Base.CanoePadel","MinDamage","LongBluntDmgMult*0.5");

gilded hawk
#

but try it, who knows shrug

quasi kernel
#

(I haven't used it before, all I know is :DoParam() has more or less superseded it)

#

No shame as long as it works, just one less dependency otherwise

spare burrow
#

haven't used doparam, using item tweaker atm for adjusting values on weapons for convenience xD

quasi kernel
#

Fair enuff!

sour island
#

ItemTweaker is using doParam - it's just a wrapper

quasi kernel
#

Oh?

#

Huh, more you know.

#

I haven't touched it before, I've just heard people tend to just go the DoParam route, not entirely sure why.

#

Could be because of the dependency thing so the mod is more standalone, but otherwise I don't 100% get it.

bronze yoke
#

doparam is better mainly for two reasons: one, why use a dependency for something so simple, especially when dependencies have been such a nightmare historically; and two, item tweaker has a bunch of prints that massively slow down game load

#

item tweaker is particularly one of those nightmare dependencies, it's not worth dealing with that crap when all it does is change some syntax and make load times worse

sour island
#

Unrelated but I think it can also cause issues as it's client sided

#

If the game needs to match script values and changes only occur on players' ends as server doesn't execute client code

#

You'll end up with some really hard to pin down bugs

ancient grail
#

whats the furthest radius that i can check sprites on a tile

#

i need to check if the water pump is within a certain distance then return true if it is...

hoary spruce
#

Sup. Can i get some help here? I need to equip an container item and then put some items inside using timed actions. I figured out how to equip the container, but I don't understand how to put items in it. I found some useful methods like ISInventoryPane:canPutIn() ISInventoryPane:transferItemsByWeight(...) ISInventoryPage:setNewContainer(...) --?, but how can I get the exact container I equipped to transfer items inside?

Here what i got.

-- ISInventoryPane:onMouseUp(x, y)
-- ...
local item = self.items[self.mouseOverOption]    -- get container item from player's inventory
if item ~= nil and item.cat == "Container" then
    local items = ISInventoryPane.getActualItems({item})
    local action = ISEquipWeaponAction:new(player, items[1], 50, false, false)    -- then put it in the right hand
    local queue = ISTimedActionQueue.add(action)
    -- ??? idk what to do here

    return
end
fast galleon
tame mulch
pulsar heath
#

im starting to think i should never thought about having a gui in the damn ap ๐Ÿ˜

#

man i hate working with gui...

red tiger
pulsar heath
#

to much to think about...

red tiger
#

I'm on the other end of that opinion. I can't wait to write a UI for my script manager app.

pulsar heath
#

the size... what if he moves it this way, what if he wants to have the console on the right side or using the full form width

#

to many unknown vars to think about

#

nothing beats the beauty and simplicity of a console app

red tiger
#

I have all these visions in my head of the ideal ZedScript editor.

pulsar heath
#

just shows what you need to know...

#

i havent any visions for the gui apart from the console showing the activity

#

๐Ÿ˜„

red tiger
#

Heh. I have an advantage though.. This is also my work.

#

I am working on just that: UI redesign of an ASP.NET solution.

pulsar heath
#

but ill go the dictators way... unresizable gui!

#

one less thing to worry about ๐Ÿ˜„

red tiger
#

responsive UI. We really are different.

pulsar heath
#

i could make it responsive and customizable

#

but...

#

dang it... now you make me feel dirty and lazy

red tiger
#

=)

pulsar heath
#

i guess ill go the modular way...

red tiger
#

It's whatever you want it to be.

pulsar heath
#

and allow to snap the "widgets" of the gui the way the user wants them to be

red tiger
#

All code is unfinished brush-strokes on a painting.

pulsar heath
#

ill just make a default theme the way i want it to be for myself and allow the user to move stuff around hide and show stuff resize it and save it as a theme

#

winforms for the lazy ones like me are the best way to go

red tiger
#

UI design keeps me grounded and reminds me that code is human expression too. =)

drifting stump
#

i am in emense pain

red tiger
#

If you read code from someone long enough, you can see who they are as a person. ;3

pulsar heath
#

yeah but... i dont think its worth writing a gui from scratch for something like this... ill just use the crappy winforms

drifting stump
#

they have stencils but too strict

#

i want to do the oposite operation they allow

#

i want to clear whats inside the stencil

#

not keep only whats inside

red tiger
drifting stump
pulsar heath
#

or better yet... the extreme of lazyness... 1 form and diferent user control objects...

red tiger
#

Draw 8 times with stencils spanning the width of the screen to the target box.

#

You can do this without modding the core.

#

N E S W NW NE SE SW boxes.

drifting stump
#

yeah thats what i thought

#

however

#

i might found my way around

#

exposed \o/

red tiger
#

I'll get you to join the Crowbar army someday.

#

:)

pulsar heath
#

well once again im bored working on the UI... another break ๐Ÿ˜„

drifting stump
#

so

fast galleon
#

We added some new events for mods to use, including: โ€“ OnZombieCreate and โ€“ LoadChunk
will be 8 x 8 when b42 launches
that's big, we also need to know when chunk is first loaded, maybe a boolean parameter passed with event

drifting stump
#

they do

SpriteRenderer.instance.renderi((Texture)null, (int)var1, (int)var3, (int)var5, (int)var7, 1.0F, 0.0F, 0.0F, 1.0F, (Consumer)null);
#

when setting a stencil

#

i simply have to invert the matrix

pulsar heath
#

@drifting stump what are you trying to make?

drifting stump
#

optimize ui rendering

pulsar heath
#

brave man....

red tiger
#

hehe

drifting stump
#

in particular this pains me

red tiger
#

(One of my goals long-term is to get Browser8 on-board with using Crowbar)

drifting stump
#

from tests simply doing 1 draw and a stencil op yields 2x speed improvement

pulsar heath
#

im just glad i managed to finish my stats ui and the animation mod ui

#

not touching pz ui ever again

#

unless i really have to... annoying as hell

ancient grail
# fast galleon `if distance < radius then ... end` this sounds simple

Na i mean like syntax
Vishnyas telling me to use ongrid load but the client who commissioned the mod doesnt want me to use it as it lags their server. So im looking for another alternative. I have a code similar but its too laggy i can mt even properly use it to print if it has a huge radius

red tiger
#

I'm feeling ill rn too btw.

#

Also back is tense.

fast galleon
ancient grail
#

To plumb a sink

fast galleon
#

adding finding 2nd object makes it more performance consuming unless it's small area or you save it somehow e.g (ModData: linked sink x,y,z)

#

you need something similar to water pipes and global objects

drifting stump
#

damn java calls are expensive

silent heath
#

ok i have. no clue if this question goes in this channel or not but uh
i saw that zomboid runs on java and lua, it's a stupid question but do i have to learn java and lua or can i just. do c#

drifting stump
#

10ms from removing 2 calls(x2000 per frame)

fast galleon
#
local waterPumpSprites = {"sprite_01_0","sprite_01_1"}
local function myFunc(isoObject)
  --...
end
for _,pump in ipairs(waterPumpSprites) do
  MapObjects.OnLoadWithSprite(pump,myFunc,5)
end

@ancient grail

drifting stump
#

my idea of inverting the draw isnt working and i have no clue why

red tiger
#

There is an alternative to Lua if you're interested in coding TypeScript. Lua is the canonical modding language for PZ.

#

You'll need to know the API you're working with.

drifting stump
#
      IndieGL.glStencilFunc(519, StencilLevel, 255);
      IndieGL.glStencilOp(7680, 7680, 7681);
      IndieGL.glColorMask(false, false, false, false);
      SpriteRenderer.instance.renderi((Texture)null, (int)var1, (int)var3, (int)var5, (int)var7, 1.0F, 0.0F, 0.0F, 1.0F, (Consumer)null);
      IndieGL.glColorMask(true, true, true, true);
      IndieGL.glStencilOp(7680, 7680, 7680);
      IndieGL.glStencilFunc(514, StencilLevel, 255);
#

here what they do when setting a stencil

#

i cant access IndieGL

#

i can however do things with the SpriteRenderer just fine

silent heath
red tiger
#

Are these all script object types?

{
  categories: [
    'animation',        'animationsMesh',
    'evolvedrecipe',    'fixing',
    'item',             'mannequin',
    'model',            'multistagebuild',
    'recipe',           'sound',
    'soundTimeline',    'template',
    'uniquerecipe',     'vehicle',
    'vehicleEngineRPM'
  ]
}
#

Built this string array from all categories for objects defined in modules in all PZ script files.

ancient grail
#

Thank you

red tiger
#

Going to take a look at zombie.scripting.objects

limber oar
#

Man, there is no better feeling than looking at the B42 news and seeing that changes are coming that will make your life 5x easier... ๐Ÿฅน

#

We added some new events for mods to use, including: โ€“ OnZombieCreate

We have also moved around the order of operations when sandbox options are loaded and the loot tables are parsed, to make it easier for mods that use sandbox options to set loot spawn values.

gilded hawk
#

Which is the syntax to require a file inside the shared folder, from the client folder?

wet sandal
#

Anyone have any clue what to tell this guy?

#

Reorder Containers is entirely client side, and I can setup a server no problem with it

hoary spruce
red tiger
wet sandal
#

Yea... I feel bad, but whatever the problem is seems to be out of my jurisdiction

red tiger
#

This is why I prefer you guys being my players.

wet sandal
#

lol

red tiger
#

Less confused patrick.

spring hare
#

I'm trying to make a voice mod which adds custom voice lines to lots of actions in the game. I'm doing this by creating new wav files which combine the vanilla sounds with my custom voice lines, and then pointing to those new sound files in a scripts .txt file. I have 90% of it done and working well in-game, but one strange issue I've run into is that some voice files can only be heard in one headphone/speaker. An example of this is the sound of opening a hood. The vanilla sound in-game sounds normal (i.e. the sound is centered), but as soon as I replace it with my custom sound file, the sound is fully panned into the right-side headphone in-game. The wav format is the same as the vanilla sound file (mono, 48000Hz, 32-bit float), and it sounds fine outside of the game. Does anyone know why this might be happening?

red tiger
red tiger
wet sandal
#

Does Zomboid prefer .wav?
I need to do some sound work soon.

red tiger
#

You can also use Ogg Vorbis. Have you tried this @spring hare ?

wet sandal
#

Ah, .ogg sounds more inline with my expectations

red tiger
#

Ogg is the "We don't want to mess with crazy mp3 licensing" option.. AKA everyone..

#

Save the file with the same name and .ogg instead of .wav and it should work.

#

(obviously exporting as Ogg Vorbis format heh)

fast galleon
spring hare
#

I've tried both .ogg and .wav but it's the same problem either way. I'm using Audacity to edit/save the sound files. But like I said, the weird thing is that this issue only seems to happen on certain actions. If I edit the sound of eating food, there's no problem, it sounds fine in-game. But if I edit the sound of opening a car hood, it's hard-panned to the right.

red tiger
#

Try offsetting the FmodSoundEmitter

#

You can sometimes get audio artifacts when using spatial algorithms with sound emitters in the exact same point in space.

#

Just a thought.

red tiger
spring hare
#

That's what I was thinking. But I don't really understand how to use those settings. In my text file I just write (for example):

sound VehicleHoodOpen
category = Vehicle
clip
{
file = media/sound/Vehicle_HoodOpen_Standard_01.wav,
}

How would I incorporate FmodSoundEmitter settings in that?

spare burrow
#

will have to shift to it then, is there any guide or mod i can use as ref for it?

fast galleon
spring hare
bronze yoke
spare burrow
#

can be instantiated multiple times for multiple parameters, no?

spring hare
red tiger
#

(I'm literally writing parser code for these files lol)

fast galleon
#

nice guide for blocks, didn't remember that one existed. So many useful stuff there.

fast galleon
bronze yoke
red tiger
#

My parser needs the commas because property names & values supports whitespace.

spare burrow
#

ty again, will take a look

spring hare
# red tiger You need commas IIRC.

The exact format I'm using is:

sound VehicleHoodOpen
{
category = Vehicle,
clip
{
file = media/sound/Vehicle_HoodOpen_Standard_01.wav,
}

spare burrow
#

def may shift as i want to make the thing as streamlined as possible

red tiger
#
sound VehicleHoodOpen
{
    category = Vehicle,
    clip
    {
         file = media/sound/Vehicle_HoodOpen_Standard_01.wav,
    },
}
#

Wait..

#

Oh yeah that's right nvm

spring hare
red tiger
#

Do you have to specify the format on the file?

#

Backticks

#

Yeah you apparently do..

#

I'm used to internal API stuffs.

#

(Ignore my rambling)

spring hare
red tiger
#

I'm used to using GameSound.getOrCreateSound() which attempts to find the file with all supported extensions.

red tiger
#

BTW I have a soundtrack for a shelved mod I'm working on.

#

So it's cool to see people being creative with sounds in their mod.

spring hare
red tiger
true vault
#

Anyone know of a way to disable and enable the map from Lua?

red tiger
#

I planned to modify everything about the game's atmosphere.

spare burrow
#

seems like a hard but amazing job there!

opal rivet
#

It's just Silence

#

Pretty good Jab

#

Keep it up

spring hare
red tiger
#

I want a very dark and mind-bending flavor of PZ.

#

How dark and mind-bending? That soundtrack pretty much covers that.

opal rivet
#

I think It sounds fitting

faint jewel
#

i'm gonna take your mod and make it disney LOL.

opal rivet
#

very fitting

fast galleon
red tiger
#

Going HARD with the content mods. Safer to keep me distracted with writing tools.

true vault
royal rose
#

I have an idea of a mod where the player can go running and bust through doors if they are closed (assuming they are not locked) , also pushing any zombies behind the door. I new to modding in PZ so i would appreciate any help

red tiger
#

Thought I'd share that head-trip.

spring hare
red tiger
#

What I discussed involves coding in Lua.

true vault
spring hare
#

Ah, I see. Yeah, Lua coding would be way over my head unfortunately. I can make nice sounding sound files and point the game to them, but I don't know how to code

#

Anyway, thanks for your help Jab. I guess I'll just avoid the "problem" sounds/actions for now

red tiger
#

Depends on the modder. I comm myself but am utterly full of both comms and projects.

#

I have a market on my server however people have become inactive there over the past half-year unfortunately. =(

true vault
#

Would also be helpful to attract someone interested, if you stated what you were looking for

red tiger
#

It won't be inactive for long.

true vault
#

Sounds good, I'll take a look when ya do.

red tiger
#

Yeah. I can't guarentee you people responding to your post if you make one. You're more than welcome to try.

weak sierra
#

any idea why deleting a vehicle via permanentlyRemove() might trigger this nonsense?

#

i've never had this happen before

true vault
weak sierra
#

it spams it so fast that the log grows by KBs per second

true vault
#

Oh thats bad

weak sierra
#

it resolves upon server restart but it's gonna make huge log files and slow the server down

#

cuz we'll be deleting a lot of vehicles

#

as-encountered

#

automatically

red tiger
#

mmm yes it begins

weak sierra
#

any idea why that might happen jab?

true vault
#

And that's just using the built-in vehicle deletion Eve?

weak sierra
#

vehicle:permanentlyRemove

red tiger
#

@weak sierra Probably a removal queue that is blocked.

weak sierra
#

nothing special other than the conditions

#

it's removed fine tho

#

as far as i can tell

red tiger
#

And logs that should be deleted but never will be.

weak sierra
#

and it keeps spammin it after client d/cs even

red tiger
#

I bet it's some list.

#

Haha

true vault
fast galleon
red tiger
#

I wrote an AST parser. Now I get to apply it to my own Json API.

#

Hoping that B42 will have a major Logger cleanup.

#

PZ Seriously needs it.

true vault
tame mulch
red tiger
#

@weak sierra Honestly it's probably a vehicle not being properly disposed. =(

tame mulch
#

@weak sierra You do this on serverside?

red tiger
#

oooo possible desync.

#

Surprised if stale cars aren't removed if the server says it doesn't exist.

weak sierra
#

yes server-side

#

this is done the same way on other mods and it doesn't trigger this afaik

tame mulch
#

This happen every time?

weak sierra
#

it happened every time i tested it until this restart, and now it's removed two without triggering it

#

so maybe not every time but often

#

will be using this tomorrow upon removing vehicle mod packs on my server to delete mismatched vehicles

#

to clean up the oddities that causes

tame mulch
#

You remove vehicles that in loaded chunks?

weak sierra
#

it's only when they are encountered by the player and init

#

so it should always be loaded

tame mulch
#

Strange. Looks like it not removed from chunk because chunk is null. But maybe reason in something else

#

Maybe try remove a little later?

weak sierra
#

the weird thing is it's succeeding, though, the vehicle disappears

drifting stump
#

one of the first things i thought about when i started modding was making a program to generate items

#

good to see someone is doing it

drifting stump
#

@red tiger big, large, huge

#

idk how i missed it

#

BUT

red tiger
#

I'm currently taking my AST parser and compiling this data as object notation.

drifting stump
#

i can call gl operationss directly

#

this is actually huge

#

you might be able to make your shaders work with lua XDD

red tiger
#

I can't pass uniform values this way.

#

Been through that code. I had to write my own solution

#

Unless someone like @tame mulch is willing to pass on my solution as it works async, then yeah no support in vanilla.

#

I wrote an API for Crowbar called ShaderProfile that wraps a shader program and allows you to set uniforms.

#

Works in Lua.

silk hollow
#

Hey everyone, I'm trying to dig a bit in how factions works in the game and was checking this out: https://zomboid-javadoc.com/41.78/zombie/characters/Faction.html#<init>()

I'd like to have an example of how to invoke the function of this class. For example is it safe to assume that the Faction class is a global object available on the client side at all times once a game session start?
Would I simply go for Faction.isAlreadyInFaction() to determine if the player is currently in a faction or not?

red tiger
#

thoroughly tested over the past year. =)

drifting stump
#

well this should solve my issue tho

#

now to figure out the op codes

red tiger
#

You'll see any documentation there.

silk hollow
#

Thanks Jab, it's the same link I wrote but I seems to fail to understand how to translate that automatically generated documentation in how that would translate in actual use for it. I'm not really used to lua/java coming from different languages although I've a background in programming ๐Ÿ™‚

bronze yoke
#

it's not the same link, jab's is the official documentation that has more detail than the community one you posted

red tiger
silk hollow
#

ah sorry, didn't notice the root level domain was different ๐Ÿ˜„

#

my bad

bronze yoke
silk hollow
bronze yoke
#

yep!

silk hollow
#

great, thanks for confirming ๐Ÿ™‚

drifting stump
#

jab got any clue where i can find the opcodes

#

docs i find all use stuff like GL_NOTEQUAL

silk hollow
#

I'll do some testing in the weekend but I just wanted to see if I got it right in the first place before ending in a dead end immediately by misunderstanding the class ๐Ÿ˜›

drifting stump
#

got it

drifting stump
red tiger
#

Search up those constant numbers in the GL static interface classes.

drifting stump
#

the only stencil op exposed through ui elements was keeping only whats inside the stencil

#

i want the oposite

drifting stump
#

vanilla is using GL_ALWAYS

#

ill slap a never and we good

red tiger
drifting stump
#

though all this might be for nothing

#

ive come to realize the real performance issue is doing java calls from lua

#

aka drawing 4 times isnt the problem its the 4 java calls

red tiger
#

It's called SpriteRenderer.

#

My gripe about it in terms of performance is that every call object is recycled for any draw call, filling in for memory that will likely not be accessed.. as opposed to draw-specific objects that are recycled for those calls only.

#

I have a hunch that's changing in 42.

#

Seeing powers of two for tiles in cached chunk renders makes me very excited.

glass basalt
#

best way is to just ask in this channel if anyone can implement your idea :)

drifting stump
#

cant get it to do anything

wheat kraken
#

mod-ideas

drifting stump
#

@red tiger got any idea why this isnt working?

    self:setStencilRect(x, y, w, h)
    local renderer = SpriteRenderer.instance
    renderer:renderi(nil, x + self.x, y + self.y, w, h, r, g, b, a, nil)
    renderer:glAlphaFunc(512.0, 0.0)
    renderer:glStencilFunc(512.0, 255.0, 255.0)
    renderer:glStencilOp(0.0, 0.0, 0.0)
    renderer:glClear(1280)
    renderer:glDisable(2960)
    renderer:glDisable(3008)
    self:clearStencilRect()
#

its still keeping the drawn rectangle

red tiger
#

could probably rename spriteRendererInstance to renderer to save some typing heh.

drifting stump
#

meh autocomplete solves that

red tiger
#

Uhh hmm

#

I never tried doing this explicitly.

#

Sanity-check those numbers on renderi

#

That'd be my first check.

#

Reference those LWJGL static constants too.

drifting stump
#

the numbers?

red tiger
#

I know you're doing GL_DEPTH_TEST and what not there.

#

Yeah check x and self.x

#

y, w, h, rgba

#

Make sure they are exactly what you expect.

drifting stump
#

i know the rect is placed correctly

red tiger
#

Then check the LWJGL op numbers.

drifting stump
#

if i call the methods in uielement it works

red tiger
#

Hmmmm

#

I have to go. =( But I really want to see this hack work.

#

Make sure that UIElement and UIManager aren't calling anything that might be messing with your instructions too.

drifting stump
#

thats why i do the disables to make sure it cant run the stuff after

drifting stump
#

nope cant get it to work

#

copy pasted all the calls vanilla does

#

:o

#

got it

glass basalt
#

just to make sure, do semi-colons change the kahlua code in any way or are they ignored

glass basalt
#

hmm ok

thick karma
#

Unless they are inside of a single line, in which case sometimes they will be necessary* @glass basalt

#

At the end of a line, sugar.

drifting stump
#

i did it

#

@red tiger aaaaaaaaaaaaaaaaa

#

now to fix that render time

#

i understood what needs to change

#

\o/

#

in comparison the vanilla function takes 50 to render

#

glorious

#

2.5x faster

#

@sour island behold

sour island
#

Hm?

#

Quicker UI render?

drifting stump
#

this function

sour island
#

120FPS UI :0

drifting stump
#

i made it 2.5x faster

sour island
#

How?

drifting stump
#

i unlocked the secrets they dont want us to know

#

i found i could directly do opengl calls

#
function TestUI:drawRectBorderStaticV2(x, y, w, h, a, r, g, b)
    self:setStencilRect(x+1, y+1, w-2, h-2)
    local renderer = SpriteRenderer.instance
    renderer:glStencilFunc(517, 1, 255)

    renderer:renderi(nil, x + self.x, y + self.y, w, h, r, g, b, a, nil)

    self:clearStencilRect()
end
#

also reducing the number of java calls is imperative for better performance

glass basalt
#

I, uh, broke ISUI

#

wallpaper, I guess? lol

tawdry solar
#

are there any vegtables without recepies

drifting stump
# sour island 120FPS UI :0

so you get a tangible benchmark
drawing 200 borders each frame with uncapped fps and ui
vanilla function i do 172fps
my version i get 345fps

#

and 200 borders isnt that unrealistic considering how many are used throughout the uis

#

quite impressive tbh

drifting stump
#

which part is wait what XD

red tiger
#

You get it working?

drifting stump
#

aye aye read above

red tiger
#

I did

#

Steam guide when?

drifting stump
#

lol yeah of course a guide about opengl calls

red tiger
#

Yeah. It's going to be helpful for people

drifting stump
#

so many XD

red tiger
#

I worked with lwjgl for personal work

red tiger
#

On the road

drifting stump
#

this line did the trick for removing

renderer:glStencilFunc(517, 1, 255)
red tiger
#

I should join a vc lol

drifting stump
#

rest is just doing the least amount of java calls i can get away with

#

need to test the vanilla function with removed java calls

red tiger
#

Want me to call you? I'm driving

#

You're doing my kind of crazy code solutions now haha

tawdry solar
#

is this file in the right place

drifting stump
#

going to sleep soon so not this time

tawdry solar
#

its in my scripts folder but idk if its the right place

drifting stump
red tiger
#

No problem

drifting stump
#

interesting removing a bunch of java calls got it from 50 to 26

tawdry solar
drifting stump
#

ooooo removing even more got it down to 18

glass basalt
#

If I want to include double quotes within a string of a translation file, is it still \" ?
Yes it is, simple web searches do be working doh

drifting stump
#

vanilla keeps calling self:getXScroll() and self:getYScroll() over and over each time doing a java call

#

if i cache that in a var i get it to 20

#

then if i instead save the xscroll and yscroll values in the table when doing a set i dont even need to call the gets in the first place getting it down to 18

#

tldr forget the scrolling implementation in java and just do it in lua, always the save to avoid calling java

drifting stump
glass basalt
tawdry solar
#

my distributions are differant to the tutorial im on

glass basalt
#

the tutorial might be outdated, if you're doing Distributions and not ProceduralDistribution(s)

glass basalt
#

there are two different ways the game distributes items

drifting ore
tawdry solar
glass basalt
drifting ore
#

i'm not even horribly versed in it but with drawing a larger border and two smaller borders to create fake buttons it's alright haha

glass basalt
#

they do the same thing but the way they are implemented are different. you want ProceduralDistributions, without a doubt

tawdry solar
#

my tiny little smooth brain is blown

glass basalt
#

normal Distribution BAD
ProceduralDistribution GOOD

#

lol

tawdry solar
#

ok

#

so how do i do this proc distribution

#

i legit want it to spawn in 2 places

glass basalt
#

you need a function that does it. luckily everyone does it the exact same way, so you can just copy it. ill post it here, one sec

tawdry solar
#

thanks man

glass basalt
#
    local containerData = ProceduralDistributions.list[containerName]
    if not containerData then
        print("Container does not exist. Are you sure you typed it in correctly?")
        return
    end

    table.insert(containerData.items, itemName);
    table.insert(containerData.items, itemChance);
end

AddLootToType("item name", "container type", numberOfItems)```
#

that last line on the bottom is what you need to change.

tawdry solar
#

where do i put this

glass basalt
#

This goes into a LUA file in media/lua/server

tawdry solar
#

ah cool

#

which lua file

glass basalt
#

you make a new one

#

example

tawdry solar
#

what do i call it

#

ah i got that already

glass basalt
#

anything you want, as long as there are no illegal characters but thats easy lol

tawdry solar
#

btw you made pocket tvs?

glass basalt
#

people usually follow a convention adding "_Distributions" at the end

#

yep lol. Im Panopticon on Steam

tawdry solar
#

ah

#

well congrats on being front page

glass basalt
#

thank you, its my second time hahah

tawdry solar
#

how do i know what the containers are called btw

glass basalt
#

there is a list of them in the game files. ill find it

tawdry solar
#

oh thanks man

glass basalt
#

these files are usually in the same place as where you want your custom code to be (the procedural containers being in lua/server/Items)

glass basalt
#

It's called 'ProceduralDistributions.lua', in Steam\steamapps\common\ProjectZomboid\media\lua\server\Items

tawdry solar
#

which one will it be

#

ahh

#

alr

glass basalt
#

so like, Antiques, the first one, is the name of a container

#

have fun with it

#

if you want an exact amount of items to spawn in an exact place, theres a different way

tawdry solar
#

thanks man

#

so FreezerIceCream is the one i want

#

would it be that

glass basalt
#

i believe so

tawdry solar
#

thanks man

glass basalt
#

put it in as a string with quotes

tawdry solar
#

so ''FreezerIceCream''

glass basalt
#

yep

tawdry solar
#

alright

#

@glass basalt sorry abt the ping but do i needa change this

glass basalt
#

you're good, idgaf about pings

#

yes, change that into an integer, like 1 or 2

tawdry solar
#

thanks man

drifting ore
glass basalt
# tawdry solar thanks man

you can also duplicate that last line into more lines, in case you didn't know. I'm not sure how much experience you have with programming lol

drifting ore
#

yes

tawdry solar
#

no experiance

tawdry solar
drifting ore
#

yes

tawdry solar
#

alr thanks

drifting ore
#

none of this is in it

glass basalt
drifting ore
#

i will be releasing an addon mod with that as the requirement

#

yes i did

#

those arent buttons

glass basalt
#

wowza

drifting ore
#

they are drawn rectangles

#

im just using their location reference for the location of the label inside

glass basalt
#

there is that UI library in the mod resources, but idk how many people really use it

drifting ore
#

this is my render function atm

glass basalt
#

nice and simple, cool stuff

drifting ore
#
function ISLightPowerControl:render()
    ISPanel.render(self)

    -- Set up the background color and border color of the panel
    self.backgroundColor = {r=0, g=0, b=0, a=0.5}
    self.borderColor = {r=1, g=1, b=1, a=0.5}

    -- Call the function to draw the border
    self:drawRectBorderStaticV2(0, 0, self.width, self.height, 0.8, 255, 249, 0)

    -- Calculate new dimensions for the child elements
    local newWidth = self.width - 40
    local newHeight = self.height - 85
    local newSliderWidth = newWidth - 20

    -- Create a label for the slider
    self.sliderLabel = ISLabel:new(self.width / 2, 10, 20, "Light Strength", 252, 244, 0, 1, UIFont.NewMedium, true)
    self.sliderLabel.center = true
    self:addChild(self.sliderLabel)

    -- Create the slider
    self.slider = ISSliderPanel:new(30, self.sliderLabel:getBottom() + 10, newSliderWidth, 10, nil, nil)
    self.slider:setValues(3, 30, 1, 0)
    self:addChild(self.slider)

    -- Draw the "Apply" button
    local buttonWidth, buttonHeight = 60, 30
    local applyButtonX = self.slider:getRight() - 5 - buttonWidth
    local applyButtonY = self.slider:getBottom() + 20
    self:drawRectBorderStaticV2(applyButtonX, applyButtonY, buttonWidth, buttonHeight, 0.8, 255, 249, 0)
    local applyLabel = ISLabel:new(applyButtonX + buttonWidth / 2, applyButtonY + buttonHeight / 2 - 5, 5, "Apply", 252, 244, 0, 1, UIFont.NewSmall, true)
    applyLabel.center = true
    self:addChild(applyLabel)

    -- Draw the "Close" button
    local closeButtonX = self.slider:getX() + 5
    local closeButtonY = self.slider:getBottom() + 20
    self:drawRectBorderStaticV2(closeButtonX, closeButtonY, buttonWidth, buttonHeight, 0.8, 255, 249, 0)
    local closeLabel = ISLabel:new(closeButtonX + buttonWidth / 2, closeButtonY + buttonHeight / 2 - 5, 5, "Close", 252, 244, 0, 1, UIFont.NewSmall, true)
    closeLabel.center = true
    self:addChild(closeLabel)
end
#

this draws that

glass basalt
#

๐Ÿง ๐Ÿ‘

drifting ore
#

that function though is what browser wrote not me

#

just wanted to test it since im trying to learn ๐Ÿ˜„

glass basalt
#

i mean, you're essentially just drawing on the screen

drifting ore
#
function ISLightPowerControl:drawRectBorderStaticV2(x, y, w, h, a, r, g, b)
    self:setStencilRect(x+1, y+2, w-3, h-3)
    local renderer = SpriteRenderer.instance
    renderer:glStencilFunc(516, 1, 255)

    renderer:renderi(nil, x + self.x, y + self.y, w, h, r, g, b, a, nil)

    self:clearStencilRect()
end
``` is what he wrote earlier
#

yes

#

i altered it a little for me

#

i like the buttons to have the shadow kind of look

#

i guess in this case more embossed

#

either way it's pretty neat that he figured that out

tawdry solar
#

can somone help me detirmine if this code is right

glass basalt
#

maybe we'll get to see a PZ UI overhaul soon? crazy UI fps lol

glass basalt
tawdry solar
glass basalt
#

and an import to Base

tawdry solar
#

how od i do that

glass basalt
#

like

import
{
???? Base (i forgot lol)
}```
tawdry solar
#

huh

#

?

glass basalt
tawdry solar
#

like that

glass basalt
#

you need the { } brackets

tawdry solar
#

its ther?

glass basalt
#

that is for item

#

module needs {} and item needs {}

#

it is called encapsulation not really but you are containing code into blocks

tawdry solar
#

like that

glass basalt
#

like

module MM_roundmeal
{
    item roundMeal
    {
    your stuff
    }
}
tawdry solar
#

eh?

drifting ore
#

module outside of brackets

#

completely

#

item inside first set

#

im desciribing what you are doing

glass basalt
#

now im confused

tawdry solar
#

im sorry man its like 4am

glass basalt
#

lol k

drifting ore
#

he's just not getting it lol

tawdry solar
#

i cannot understand

glass basalt
drifting ore
#

oih wait im dumb

glass basalt
#

replace your stuff with the item stuff

drifting ore
#

you have it right i think lol mybad man

#

i should not switch my thought process

glass basalt
#

i need to look at a txt file now lol

drifting ore
#

i am

#

i didn't pick the best example lol

#

myb ๐Ÿ™‚ haha lets remove those

#

dont let me make you look bad

glass basalt
#

Here is an example from the game files

module Radio
{
    imports
        {
             Base,
        }

    item WalkieTalkie1
    {
        DisplayCategory = Communications,
        Type            = Radio,
        Icon            = WalkieTalkieBudget,
        Weight              = 1.0,

        DisplayName        = Toys-R-Mine Walkie Talkie,
        
        UseDelta        = 0.007, 
        UseWhileEquipped    = FALSE,
        DisappearOnUse        = FALSE,
        TwoWay            = TRUE,
        TransmitRange        = 750,
        MicRange        = 5,
        BaseVolumeRange        = 8,
        IsPortable        = TRUE,
        IsTelevision        = FALSE,
        MinChannel        = 75000,
        MaxChannel        = 150000,
        UsesBattery        = TRUE,
        IsHighTier        = FALSE,
        WorldObjectSprite    = appliances_com_01_16,
        Tooltip = Tooltip_item_Radio,
        StaticModel = WalkieTalkieToy,
        AttachmentType = Walkie,
    }
}
tawdry solar
drifting ore
#

look above

tawdry solar
#

yeah

glass basalt
#

they need to be on different lines, like

{
     {
     }
}
tawdry solar
#

i get it

glass basalt
#

always start with { and end with }

#

like a russian nesting doll

tawdry solar
glass basalt
#

almost, change the first line to be on the third

#

and switch it from } to {

tawdry solar
#

i switched it

glass basalt
#

and the last line, separate the brackets onto two lines

#
     }
}
tawdry solar
#

like this?

#

istg

glass basalt
#

it hasn't changed I think

tawdry solar
#

its showing the same image

glass basalt
#

ahhhh i see

tawdry solar
#

i have changed it

#

there

glass basalt
#

yep, put a { after module

#
module yourModuleName
{
tawdry solar
glass basalt
#

and now remove that first line

tawdry solar
#

first line?

glass basalt
#

the first {

tawdry solar
#

like that

glass basalt
#

yep

tawdry solar
#

so thats it?

glass basalt
#

last part, you need to import Base because that is what defines an "item" in the game

tawdry solar
#

what does that mean

glass basalt
#
module MM_roundMeal
{
    imports
        {
             Base,
        }
drifting ore
#

i dont think thats fully true

glass basalt
#

you need to chain the different things together

drifting ore
#

if you dont import you have to use Base.

glass basalt
drifting ore
#

if you do, you dont have to prefix

#

same with other mods

glass basalt
#

hmm alright

drifting ore
#

if you dont want to prefix you import their module

#

it says it in the script guide ๐Ÿ˜„

tawdry solar
#

like that

glass basalt
#

yeah

tawdry solar
#

so i have done the code

glass basalt
#

i believe so

drifting ore
#

skulker is the true mvp

#

that was a true step by step

tawdry solar
#

yeah

#

thanks man

glass basalt
#

rubberducking it to victory

tawdry solar
#

that helps alot

glass basalt
#

np

tawdry solar
#

as ive said to nippy once already i cant look at a wall of text and learn

#

i dont see it ingame

#

like in mods tab

glass basalt
#

where do you have the folder

tawdry solar
#

c/users/myuser/zomboid/mods

#

i think i double foldered it

glass basalt
#

do it in Workshop instead of mods

tawdry solar
#

oh

glass basalt
#

mods works too but i imagine you want to upload it, right

tawdry solar
#

yeah

#

just testing

glass basalt
#

so, Zomboid\Workshop\YourModName\Contents\mods\YourModName\the files

tawdry solar
#

still aint showing

#

i have it in there

glass basalt
#

in the first "YourModName" folder you want workshop.txt, a preview.png, and the Contents folder

#

for the game to see it correctly

tame mulch
glass basalt
#

maybe

tawdry solar
#

them 2 both

glass basalt
#

it has to be exactly 256x256 pixels

#

because steam

tawdry solar
#

tahnks

glass basalt
#

but in the second folder of YourModName, the preview can be whatever you want, as long as its a PNG

#

ModTemplate has placeholders if you don't want to make pictures

tawdry solar
#

does that work

#

still isnt showing

tame mulch
tawdry solar
tame mulch
#

Try find by id in mod menu

tawdry solar
#

no

#

still doesnt work

tame mulch
tawdry solar
tame mulch
#

Not correct

tawdry solar
#

huh?

#

how so

tame mulch
#

One sec

#

Need like this:

tawdry solar
#

oh

#

ms

#

msh

#

ms

#

i cant speel

#

smh

#

it still wont show

tame mulch
tawdry solar
tame mulch
#

You forgot mods folder

#

check again my screenshot

tawdry solar
#

yeah uhh sorry

#

its 4 am

#

and im tierd

#

im half awake

tame mulch
#

Same feel. 9 AM, no sleep night)

tawdry solar
#

ok

#

its still noy showing

glass basalt
#

@tawdry solar in "Contents", you need a folder called "mods"

tawdry solar
#

i put it there

glass basalt
#

in the folder "mods", you put [mm]ROUNDMEAL

tawdry solar
#

we just talked abt that

#

oh

#

i fucked up

#

i put mods in the other folder

glass basalt
#

yeah its the order of the files lol

tawdry solar
glass basalt
#

other way around :)

tawdry solar
#

yeah

#

just noticed

#

omfg

#

its still no

#

no

#

not

glass basalt
#

did you restart the game?

tawdry solar
#

yeah

tame mulch
#

And send your path to mod.info now ๐Ÿ™‚

tawdry solar
#

wait

#

i cant remember where to put the rest

tawdry solar
#

mods

tame mulch
#

what in ROUNDMEAL folder?

glass basalt
#

drag "workshop.txt" and "preview.png" into [mm]ROUNDMEAL in 'Workshop"

tawdry solar
#

there us nothing?

glass basalt
#

you need "media", "roundmealposter.png" and "mod.info" in second pmm]ROUNDMEAL folder

tawdry solar
#

like this?

glass basalt
#

@tame mulch sorry to bug you, but what happened with Project Humanoid? I heard the file was in the discord server many months ago

glass basalt
tawdry solar
#

project what??

tawdry solar
glass basalt
#

project humanoid, its an npc mod

tawdry solar
#

like the survivors series

glass basalt
#

yep

tawdry solar
#

YES

#

IT WORKS

glass basalt
tame mulch
tawdry solar
#

needa work out model sizes

#

and bug fixes

glass basalt
#

9 times out of 10 you will do better if you sleep on it

#

life hacks

tawdry solar
#

the icon

#

and the model do not work

glass basalt
#

that is the next step for tomorrow

#

we will be here spiffo

tame mulch
#

Icon file name starts like Item_***.png?

tawdry solar
#

im not even tired

glass basalt
#

example

tawdry solar
#

like that

#

is it same for models

tame mulch
#

Anyway you use item

glass basalt
# tawdry solar

yes, and make sure the text after "item_" is the exact same as the icon you are calling in the item

glass basalt
tawdry solar
#

do i change code ?

tawdry solar
glass basalt
#

i will show you

tawdry solar
#

ty

glass basalt
#

example

module Base
{
    model CASIOTV10_Ground
    {
        mesh = model_CASIOTV10,
        texture = texture_CASIOTV10,
        scale = 0.004,
    }
}
#

this is for custom models

tawdry solar
#

huh

#

where does this go

glass basalt
#

if you have a model from PZ then you simply call that

#

in the same folder as the items.txt

tawdry solar
#

oh

#

this

glass basalt
#

yes

tame mulch
#

You do original mod or modification for other mod?

tawdry solar
#

do i need new file

glass basalt
#

yes

tawdry solar
tawdry solar
glass basalt
#

anything, does not matter

tawdry solar
#

do i put scale as what it is in blender

glass basalt
#

not quite

#

but you can try

tawdry solar
#

alr

glass basalt
#

my scale is very small, but that is because of issues ๐Ÿคฃ

tawdry solar
#

why does it say _ground

glass basalt
#

that is just naming convention, it can be whatever you want

#

i wanted different names for everything

tawdry solar
#

do i have to put texture_ and model_

#

_

#

i mean

glass basalt
#

you need texture and model yeah

tawdry solar
#

do i put _ before the texture and model naems

glass basalt
#

no, the names are up to you

#

mesh can be skdbfbsdf

#

texture can be sjndfgkjlskldjfg

tawdry solar
#

like texture_mode-name

glass basalt
#

but they have to match the name of the file

glass basalt
tawdry solar
#

alr

glass basalt
#

i think, i don't remember

#

i remembered, it doesn't matter, but its good practice

tawdry solar
#

is it new folder for texutres

glass basalt
#

same folder as icon

#

media\textures\yourfiles

tawdry solar
#

btw what if my model has texture already

glass basalt
#

you need to extract it from blender

#

as a PNG

tawdry solar
#

i made this

#

i have seperate file for texture

#

as i made it in software

glass basalt
#

is it PNG?

tawdry solar
#

yes

glass basalt
#

put that file into media\textures

tawdry solar
#

how do i see scale in blender i forgot

glass basalt
#

idr, under transform?

tawdry solar
#

transform?

glass basalt
#

you will probably have to edit it later anyways

tawdry solar
#

yeah ik

glass basalt
#

set scale as 1.0 for now

tawdry solar
#

like that

glass basalt
#

yep, now just change the name of the model and the module

#

the module should be the same as your item

tawdry solar
#

like so?

glass basalt
#

like

module mm_Roundmeal
{
    model ROUNDMEAL
    {
tawdry solar
#

so its correct

#

oooh

glass basalt
#

as long as "module" is there, you're good

tawdry solar
#

so it should work

glass basalt
#

did you change it?

tawdry solar
#

yes

glass basalt
#

okay, now go to round_meal.txt and change "WorldStaticModel" to be the name of the model

#

as in

WorldStaticModel = ModelName
tawdry solar
#

eh

glass basalt
#

i mean the round-meal file with your item

tawdry solar
#

like so

glass basalt
#

yep!

tawdry solar
#

ty

glass basalt
#

is the module "MM_roundmeal" in roundmeal-model.txt?

#

they have to be the same

tawdry solar
#

yep

glass basalt
#

ok good

tawdry solar
#

well the model isnt showing

#

the texture is howevre

glass basalt
#

show it

tawdry solar
glass basalt
#

ok, so that means the model is incorrect somewhere

#

open up round-meal and roundmeal-model

tame mulch
#

Can you send model script again?

tawdry solar
tame mulch
tawdry solar
#

i forgot to save

tame mulch
#

Different

tawdry solar
#

wait no

glass basalt
#

you need to change "CASIOTV10_Ground" into "ROUNDMEAL"

tawdry solar
#

ahh

glass basalt
#

that is the name of my item ๐Ÿ˜‚

tawdry solar
#

like so?

#

still wont work

glass basalt
#

yep, and make WorldStaticModel = "model_ROUNDMEAL"

#

right now it is "ROUNDMEAL"

tawdry solar
glass basalt
#

hmm

#

make a new save, that might be the issue

tame mulch
#

And send again screenshot of both files

tawdry solar
glass basalt
#

module names are different, it is case-sensitive

#

has to be exactly "MM_roundmeal"

#

for both

tawdry solar
#

ah

#

still not

#

should i try new save

glass basalt
#

still an icon?

#

yes

#

items do not update automatically, you usually want to start fresh

tawdry solar
#

fml

#

still no

#

i dont think it spawns in world either

#

yeah doesnt spawn

#

been to like 5 gas staitons

glass basalt
#

did you make the spawn rate abundant?

tawdry solar
#

yes

tame mulch
#

Did you do spawn tables?

tawdry solar
#

skulker walked me through it

#

i can send them