#mod_development
1 messages Β· Page 105 of 1
Its a valid question
Most people don't even know how the bonus XP works for starting levels
One they could test pretty quickly lol
"Does this mod work?"
What bonus exp?
only it was related to the OBS functionality...
Hehe
is it mod for pz? I need for project zomboid
no its for tetris... i just wanted to put in the pz workshop 'cause i couldnt find the tetris workshop
Y'all I am trying to figure out how to horizontally mirror a vanilla animation in fragMOTION... can anyone help me understand what I'm missing? I can mirror the whole animation and it LOOKS right, but because the right-side objects move to the left side and vice versa, it borks out when I export it for use in the game. Can anyone tell me simply how to import a vanilla .x into fragMOTION, mirror it horizontally in a way that looks actually mirrored, and export it for use in game?
(Copied from #modeling in case they don't know.)
always wanted weapons mod for tetris..
peach may know
heh
i turned off knock down
and the zombies are still getting dropped
stale is gone?
seems like when they got stale the game knocks them down
Really? Someone posted that?!
I just have health change going on
That guy should be a meme
I like the 'theft of the west' guy
Here's that mod loader: https://github.com/asledgehammer/ModLoader
nah, just rofl he-he
π
does it work on pz? Can i use it when im playing cs:go?
π
I forgot where it was written - but someone got super angry about the Stalker PZ community spotlight
Here's the example: https://github.com/asledgehammer/ModLoader-Example
@pulsar heath @jaunty marten
only cs 1.6 and not mp
hmmm, it won't load my files automatically and I can create my own order of loading?
added to the favourites... will tinker with it after i get off work tonight... even if im on vacation... the money is good i need to get out for a change π
i still need to prep the set for tonight... or i can just wing it
I was just thinking about that recently cos automatically load is a shit cos u can't create own order to load files
awesome
I can't do anything about people listening for the server command and contents, however the design protects against file override / global override.
The loader can be customized.
the rage is real
oh no... though 
Server-specific content and hot reloading makes this loader very useful.
It's not "how the devs intended you to play" dude. You made a sandbox preset inspired by zomboid... with a crap load of mods and multihit enabled. The theft of the true zomboid experience continues - rubbing yourself on anything you think is cool. Zomboid is a HARD game based on a T H E A P O C A L Y P S E, a S U R V I V A L game, where a POST A P O C A L Y P T I C society could be formed. Casuals trying to make their OWN "zomboid"... they don't care about indie stone devs, they don't understand the atmosphere, they don't respect the heritage - the HERITAGE of ZOMBOID... they just want it for themselves. No difficulty, just guns and maid outfits, CDDA or Dying Light is what you want, steal from ANOTHER zombie game. I'm a redditor I see it clearly. Casuals and modders will NEVER be VANILLA APOCALYPSE PLAYERS.
I wrote one for more hardcore pz players
Going back to work here in a couple of minutes.
at least loading order already is so useful, cheers
The guy is nuts
its like one dude that EMAILED ME like 20 times
dunno how the hell he got my email address
I wrote the 2nd as a copypasta lol
asking for me to remove the car events from the mod
It only supports code atm. I can make it support sending over binary files.
... dude... just dont enable it...
it only does what you let it do... if you dont check mark the events they will not be triggered
Once I reached I'm a redditor I see it clearly it made more sense


Keyboard warrior
Server-specific content for mods is the big thing for this mod loader.
People would have to upload it as workshop content which is then DMCA territory. :D
didn't test yet cos I somehow broke cluster's lib so pipes doesn't connects and now trying to fix it XD
Plumber mode mario
wouldnt executed lua sent to client's not exist as files?
Precisely.
The loader itself isn't even in a file.
I created legacy code for me by myself..
Only the boot loader is.
So the code that operates to send the mod code and the mod code are prevented from file overwriting / overriding.
and performance wise, all good?
adding there compatibility for mp will be pain in da ass
well ill test it out later... time to get ready to work for a few hours...
but at least I didn't broke pipes linking and sprites set correctly
bbl
I'm going to work on my UML later on today.
@ancient grail Don't tell me what to do!
It's getting populated.. haha
Im not

Lmao where did you find that stupidity?
I wrote it based on the original message
this one
that comment was in response to the stalker modpack spotlight
how I can install u?
Me coming back to the modding scene after like a month only to notice another farming mod is popular and I get to patch it

What? xD
i was gonna say, if that was a real message... the "heritage of zomboid" is multihit. the new "default" difficulty is relatively new
he wants to download you and install you on his computer
u mod. I want to install u 
Oh lol

Mmm cawfee
Acquired meme.
yea, I got same error a month ago as u got in workshop discussion. will wait for fix 
someone made a thread saying me making a fake comment image linked to my github was sketchy - cause he had a question about flares
never asked his flare question
also I've been looking around to see what syncs zombies with no luck
I'm curious, has anyone else ever had a temporary "falling out" with programming?
I had one for like a good month or two and wanted nothing to do with it.
Entirely possible tbh, just before it happened I worked on a bunch of systems in a game for a friend for like a week straight so
it's common thing for devs
Glad I'm not the only one then hehe

It's called "Burnout" usually.
I mitigate burnout by having many projects to work on for when the one I'm currently working on is stuck on a issue.
Working on a project for a long time can get boring.
Amazing
Oh yeah @tame mulch That example of server-distributed Lua content I mentioned is a public repository now.
https://github.com/asledgehammer/ModLoader
https://github.com/asledgehammer/ModLoader-Example
seeing his name pop up typing
I can completely drop the project when trying to do smth and game crashes so I don't want to open it again.. it's done 
Try find something interesting with programming, but another. Like do RGB lighting system on Arduino, that hooks to PZ events and show different colors with different events or change brightness time of a day (Found and modified this idea few minutes ago and already want switch to this idea π )
Watch AI art make that.
best way to avoid burn out is to just stop when you get bored... obviously not as much of an option if you're doing it as a job, but forcing yourself doesn't help
like i said, I went to school for art
Fair statements from all of y'all, thank you
I usually end up hyperfixating on something and end up destroying myself trying to fix every little.thing.
I can also offer my old idea to create SAO thing to kill player irl on in-game death 
Because I have determination like no other, I will literally break both of my legs if it means I get to fix every tiny problem in a mod. Thing is that usually doesn't happen without several nights of lost sleep and problems sneaking in anyways.
also made the scrap mod posters -
will be so funny with first spawn in horde
EHE is hands down my favorite mod by the way, thank you for making it.
nah, looks cool
it's fine XD
Damn I should have asked you to make a poster for my dakimakura mod. This was the best shoop job I could come up with

I'm still upset that I lost a week of my life to virtual plants
discord used to flag this as inappropriate
yes the walls are from googling 'fancy wall paper' images skewed
Outstanding
the floor is minecraft carpet
we losing our life for workshop likes 
Yes
I already don't know what to do with steam points (137k) π
wait for SteamCoin
would be nice if you could use like a million points for a dollar atleast
buy seasons badges

π
Cool idea btw
it will be in b42?
turn off your cpu fan if you die

Could be a lot of fun, just a problem with the middle parties making it more complicated than it could be for the implementation I had in mind 
No API for PC RGB?
You mean how every company that sells a keyboard or mouse has it's own lighting program that doesn't work with eacother?
Oh, yeah. For each system will need write interlayer (on python?)?
Oh, not that so much as that I was looking at a similar but different thing involving leds/RGB?
I know how to do similar with arduino and rgb strip)
Since there's two red names here - any clue how to apply damage to zombies in MP that doesn't cause them to blip out of the game?
The damage is being applied clientside (they fall with out being told to, then pop out of the game)
serverside didn't seem to do anything (no knock down either)
I am not sure that is possible (serverside), but why not send command from server to client and apply damage on client side?
I am doing that now
the zombies stop being interactable and disappear shortly
like I can walk on top of them and can't swing at them
then they vanish
Hmmm. I think this connected with way how zombies work in MP
I also commented out the 'zombie:knockdown()' and they're still falling to the ground
so it's like lying on the floor is their goto 'uh oh somethings wrong'
going through the java but it's kind of going in circles between isogamechar and isozombie
I don't see a 'transmit' 'send' or anything
I don't do anything that affects or interacts with "active" zombies or their actions so the MP zombie handling, it's all Quantum Rocket Surgery to my 2 brain cells.
Maybe this is protection for incorrect behaviour in MP?
But yes, I think that.
Same - the fact there is two zombiemanagers (virtual and 'normal'?) and it touches some undisclosed c++ stuff makes me not want to mess with it
I think you can check old beta 41 blogs - here some videos how zombies work in MP
Oh, yes, there's definitely zombie handling stuff that's in C++ and not the java.
I wonder if I can just run Hit() using the IsoPlayer.instance
zombie:SetHealth() causes the issue as well as :applyDamageFromVehicle() which doesnt need a vehicle ironically
server's top player None None
I use the Hit function on zombies in my off-hand attack mod. works well, haven't seen the issue you described.
@sour island NetworkZombieVariables.setInt(realZombieAlways, (short)0, zombiePacket.realHealth);
some of the other bits in the NetworkZombieSimulator (mainly in parseZombie) may be helpful to figure out what's going on behind the scenes
the realZombieAlways object in that function is the same as what's being spawned by you and m3ss
I doubt you'll be able to actually call much of that code directly without getting the player's UdpConnection, but the code there may help lead you toward why the behavior is happening
basically the parseZombie there is taking a packet from the player, and then using the data in the buffer to determine certain values so the server knows what's going on with the zombie (and then it's sent out to wherever it's needed)
(at least, that's what I got out of it - I didn't look into it indepth)
I'll see if it's used with attacks
ah PlayerHitZombiePacket
I guess my issue is zombies generally don't receive damage on the server side
I wonder how fire works in that regard
this.Health -= this.FireKillRate * GameTime.instance.getMultiplier() / 2.0F;
this.setAttackedBy((IsoGameCharacter)null);
this.Health -= this.FireKillRate * GameTime.instance.getMultiplier() / 2.0F;
this.setAttackedBy((IsoGameCharacter)null);
hm
Or moodles
lol
there's a few methods in IsoZombie that might helpful, like hitConsequences. it might be what's causing your weird knockdown behavior though, if whatever damage function you're using calls it
Why hasn't the text render code in IsoGameCharacter not been arbitrated to a simple string API?
isoZombie:setCustomName('Special Zed');
π₯Ί
isn't that what halo notes are for? or is that something else entirely?
All the label needs is a string field with a getter setter.
Your style is a cross of andy warhol pop art + horror vacui + modern + mixmedia
Give us all awards lol
that picture is in reference to a classic early popart piece
Or post helpful guides.
me when i get home from work
Or more events to use
Let us capture everything that happens lol

prior to this I was letting their update catch their health was <= 0
so I guess the server was like 'well this is fucked, goodbye'
goodbye, Chuck
I dunno how
Like how to capture the thing you jist drank
Or when zed spawns
Or when you unequip stuff
If i knew how i wouldnt have said that
seems related to if they die or not though
the attack heli doesnt do as much damage as the rifle heli
and the rifle heli is causing deletes
whay r u even trying to create? 
its the attack code for EHE
I made EHE actually serversided
this would imply EHE is probably not even working on the workshop
if you have access to the function that actually runs whatever you want to use, you can just throw it in there
if you don't, you can use flags to determine whether something has occurred, and then run the event callback via OnTick (or any other time-based event, if you don't need to check constantly)
there's a guide somewhere (maybe fenris's) that shows you how to add your event handler to the Events.* table so it's usable everywhere
Specifically I want to stagger or knockdown zombies while also dealing damage
Everything works except the damage part - the server deletes the zombies
hitConsequences seems perfect for that, but there may be a method that calls it that'd be more fitting
I was able to stagger zed
Beartrap mod
u was kicked from this server for cheats
adding an event is as simple as
-- at startup:
LuaEventManager.AddEvent("EventName")
-- then when you want to actually trigger the event:
triggerEvent("EventName", param1, param2, etc...)

It actually works like that i saw that but never tried
Thnx thnx thnx
LuaEventManager.AddEvent(..)?
Oh wait
nvm
You did it
aaaaaaaaaaaaaaaaaaa
I remember people triggering the event to add it and misread yours as doing just that.
so I set lowest health to 0.01
the issue is precisely killing zombies lol
I wonder if I should leave the code on server side but only send the knock code through π€
thinking about the attached sprites... seems simple to make in-game drawings now
after some more toiling, I got the zombies to spawn serverside but the outfit assignment isnt working. They're spawning with regular outfits for the area and not the cutsom outfit I'm trying to use
how can i give the zombies custom outfits
When I thought of me getting out of work on Friday and counting down the time before working on my own stuff: I thought of this lol
The Nostromo destruct sequence animation from the 1979 film ALIEN by Ridley Scott - This video is a homage to ALIEN and I hope you enjoy it's emergency, the sound scape is an enhanced version of a video found on youtube by user jamesuk9999 ( link below ) and the video was recorded from PC running a program I designed which also runs on an Androi...
This, but in my head right now
Like why would my brain do this to me. =(
Been thinking about doing a modding jam session this weekend.
back at the problem again
needed the break, but applying the function serverside has the same issue
zombies meant to die blip
the damage should definitely be carried out clientside either way
So uh- Been awhile, off and on working, teaching myself a lot as I have worked... But uh
I got my drug mod to actual run as intended. Which I couldnt have done without the help of many of you lovely people <3
So I figured I would jump in here and share some appreciation 
so I think I know the issue with the bodies now
but not sure how to fix it
unless I'm mistaken calling zombie:Kill(nil, true) should be calling isoZombie:Kill() but I have a feeling it's calling IsoGamCharacter:Kill() ? or would that not be possible?
im having one of those days.. i put a lua file in a mod, run a test server/client with the mod, one of the first lines is a print statement, and neither server nor client are running it :|
no syntax errors
first three lines are this
UdderlySandboxReversionFix = {}
local modName = "UdderlySandboxReversionFix"
print("["..modName.."] Initializing..")```
and i don't even see that print statement
this is in shared..
same deal on client
ah wait i did a stupid
i copied the non-testing version to the test mod workshop folder but i didn't rename the inner mod
derp.
I think it might be becomeCorpse() instead of kill()
Which is super stupid
tried that previously but I'm going to retry it and check the variables
all those functions call eachother
something is definitely not triggering
Iβm trying to make a mod where the player says βdog goblinβ in MP chat and a special super powerful zombie with a goofy outfit spawns.
Iβve tried looking at code from EHE Spiffo event to get something akin to that, a virtually unkillable zombie that can push cars away, but it doesnβt seem like the outfit containing the AI item is applying correctly for me. How did you get the outfits to apply?
outfits need to be defined in xml
I swear if thatβs the problem
got it working
god damn
so to get zombies to die on clientside you have to apply something to be it's attacker
the game uses a dummy zombie for this if it needs one
targetHostile:setAttackedBy(getCell():getFakeZombieForHit())
targetHostile:becomeCorpse()
does anyone knows the purpose of the MetalValue property when item scripting?
not sure if it serves a purpose in vanilla or not but it's very convenient for mods :P
This is how you use kill
zed:Kill(getPlayer())
Burryaga uses this for suicide
The syntax looks weird but this will kill the zed
Scrapping it with blowtorch
Goodjob congratulations
Have you tried dodamage
I believe that nil works, as in
zed:Kill(nil)
getPlayer():Kill(getPlayer())
hehehe
I think stop rotation need do by lua
Aw snap... I wanted to minimize lua as it needs sendcommands
What exactly you want to do with anims?
Gestures
Like emotes?
For an rp proj they want multiple animstions available
But diffrent from the authentic anim
I mean
For example the sprint
Instead of just moving without key press im going to change their actual run. Ive done this part tho
Then sorta like the sitdown
When you move you stop but instead tha snimations used are like the falldown animations
But will stay on thr ground till you move
And not loop
Hmmm are you doing an injury mod too?
Dislaik made the injury animation for one mod we worked on for commission. https://i.imgur.com/N5RXPM5.mp4
I also got the idea of leg injury would make player need to crawl to move untill a certain time
Is there's some way to use a custom animation for eating/consuming an item?
So you can't add a EatType?
You can you have to add an xmknwith that.eattype
I think
Bkt related to what you are going for but its still technically eating hehe
Thanks~
cool. i'm much further along than i thought. really just need to add some sandbox vars for configuration now:
omg dude it looks so clean also lol
Thanks! It has full controller/co-op support now, it works like how you would expect, i.e. having only an offhand you can attack like normal, and i also got my offhand speed calculation to match the vanilla's except for backpacks affecting the speed as you can't get the speedmodifier from non-clothing items it seems. but, i didn't see any vanilla bags that gave one so should be fine?
Last thing i'm going to add is an auto-offhand setting so when you're dual-wielding you'll automatically alternate between primary and secondary if enabled (always start with right though). if you have that disabled, you have to hold control (or L Bumper) to do the offhand attack
no guns yet. i'm going to release just the melee first so i can squish bugs, balance, and get feedback on it. that'll be the next big release.
I love that you tested with amputated arms and all haha
about to give a whole new spin to the game here
ha. yea, an offhand mod that worked with TOC was a common request, so wanted to make sure i was compatible.
Need help - Anyone have link for tutorial how to decompile PZ class files to java files?
I only found how to decompile to set in env of IntelliJ
I think even if you decompile them it will all be obfuscated right? I have used JD-GUI in the past
It's standalone
JD-GUI now not work because game started use new version of java
Decompile is possible, but I don't remember where guide :/
How to run a bit of code only if it's done on a server, and vice versa only on a client?
if isClient() then
-- client code
end
if isServer() then
-- server code
end```
Is it that simple?
yup. those are built-in functions so you can conditionally control where code runs. of course, server code needs to be in the "server" or "shared" folders too
Right, uh... I'll check it out
A friend made some code but it don't run
Trying to load sandbox options from globabModData
Cuz for some reason they don't update properly
Can someone more familiar with the Java side enlighten me on how/when an MP server parses the Procedural Distributions list?
I had thought by adding my items to the PD list during the OnInitGlobalModData event would let me use sandbox settings to adjust the chances on them.
But when I started a server up for testing and used the "Refill Container" admin/debug option, my items never spawn, because it seems the Java side only parses the PD list when starting the world but before sandbox options are loaded or global mod data is initialized. (LootZed says my items should be able to spawn... because LootZed actively parses the PD list unlike the Java Item Picker... Thanks TIS)
Except... they can still spawn somehow through some nebulous process because during play sessions with some friends, we do find the items where I intended them to spawn.
So something is causing the Java Item Picker to reparse the list.
Is it reparsing it after a new person joins a server? Or is there some other circumstance that forces the server to reparse the PD list?
I cannot answer all of your questions, as I do not know. However, you can try to use the event OnPreDistributionMerge. SanboxVars exist here, and based on the name i would expect it to happen before it builds the PD list. it definitely happens before OnInitGlobalModData
@tame mulch hey I know you were in here taking guide requests... Can we get one for creating a mirror copy of a vanilla animation? I'm guessing if y'all do this there must be an easier way than what I've seen...
I know only 2 ways - fragmotion modification and create from zero in blender
I have fragmo but I don't know the correct steps to flip it in a way that works out in game.
I can Mirror All over X axis, but it seems to flip too many things, such that even though the animation LOOKS perfect after that, it doesn't work in game
Then I tried flipping poses on all keyframes but that creates a rather obviously borked reflection
Maybe cuz the bone is flipped
Like the left is right and stuff
Im not telling you what to do tho π€£
Lol so many maybes but I'm really looking for some definitely stuff
I renamed the right bones as left and vice versa after my mirror flip; that did not fix the issue.
There is clearly some specific process for flipping animations correctly and efficiently that I was hoping someone knows
I imagine these nice Mirror All functions wouldn't exist if there were no possible way to get them to work nicely.
Thank you so much. I was told OnInitGlobalData was the earliest event after sandbox vars had ben loaded. Glad to know OnPreDistributionMerge is as well.
Btw I now understand importing a .x, editing it, and exporting a new .x in fragmo that works in game. I just don't understand how to use frag's mirror function to quickly create a good reflection of an animation
And I know dhert wants to know too lol his method is a headache
I didn't worked with fragmotion so I can't help. I will do guide on base blender anim guide
No problem. I am happy to use Blender, the only thing is that I want to be able to import vanilla .x files into Blender for modification
And guides on doing that are scarce if they exist
I saw some deprecated slash abandoned plugin projects
There is already an animation guide for making a new animation from the T-pose in Blender that works very well... I just want my pose to begin and end in identical vanilla positions.
I will check. Maybe I will found a way
If you do, you're the man.
I think many people would be happy to do their animations in Blender over Frag if we had a working strategy for messing with vanilla ones. At the moment, I think most people use Blender for original animations built from the T-pose
Hi, im trying to figure out how to remove an [OVERLAY] from a tile (removing a paint from a wall)
found a mod by God's Will (Clean Dirt), it only removes [ATTACHED]
local inventory = self.character:getInventory()
for i=0,square:getObjects():size()-1 do
local object = square:getObjects():get(i);
if object then
if object:getTextureName() and luautils.stringStarts(object:getTextureName(), "overlay_graffiti") or
luautils.stringStarts(object:getTextureName(), "constructedobjects_signs") then
--return inventory:contains("Bleach") and (inventory:contains("BathTowel") or inventory:contains("DishCloth") or inventory:contains("Broom") or inventory:contains("Mop"));
return (inventory:contains("BathTowel") or inventory:contains("DishCloth") or inventory:contains("Broom") or inventory:contains("Mop"));
else
local attached = object:getAttachedAnimSprite()
if attached then
for n=1,attached:size() do
local sprite = attached:get(n-1)
if sprite and sprite:getParentSprite() and sprite:getParentSprite():getName() and
(luautils.stringStarts(sprite:getParentSprite():getName(), "overlay_grime") or
luautils.stringStarts(sprite:getParentSprite():getName(), "overlay_graffiti") or
luautils.stringStarts(sprite:getParentSprite():getName(), "constructedobjects_signs")) then
--return inventory:contains("Bleach") and (inventory:contains("BathTowel") or inventory:contains("DishCloth") or inventory:contains("Broom") or inventory:contains("Mop"));
return (inventory:contains("BathTowel") or inventory:contains("DishCloth") or inventory:contains("Broom") or inventory:contains("Mop"));
end
end
end
end
end
end
return false
end```
I'm a bit confused about how SandboxVars are stored? I changed one of the SandboxVar directly but Lua scripts still grabbing the old value? Thought about the different scope issue in runtime... Quit.. coming back... And... Sandbox var is changed permanently, but Lua scripts still assign old value to my local variables?
I think I did step forward in this stuff. But it's not easy. I will write some python code and will try convert all anims
If I will can understand assimp lib :/
This sounds like you check the value before the Sandbox options are loaded.
Most common event used during loading is OnInitGlobalModData for this. But saving the table as local works regardless, only values are updated as far as I know.
Sandbox have a txt save file, java class and then the lua side. If you have a different issue, you may need to give more information.
hi.just a goofy ah idea.when your charecter is dropping it play dream on.yk like jumping from a high floor like 2 floor? yk.sorry if im not saying it in aright place
I would give more info, but there is none. Lua scripts grab value from elsewhere or elsehow after it was changed and that's it.
I'll try to run it through event and see if load order is taking place.
I mean specifics could help, is it your code / is it vanilla code / is it actually a lua file or is it something in the scripts folder. Are you saving the value locally and then changing the global value (that would not work, you'd need to manually update the local)?
90% of issues are simple mistakes
Its a local variable assigned to my interface in mod Lua file that serves as main scope for core functions and variables located in shared
...
IC.ResetTime = SandboxVars.ICurrency.ResetTime;
print("ICurrency: Setting ResetTime = " .. IC.ResetTime);
...
Obviously executed every time when I reload it or load into the SP game. However...
https://i.gyazo.com/2127ab4441b38caf7defb00f050d12ae.png
I'm probably missing something obvious
blames rubber duck for not helping out
HOWEVER... doing this just makes everything fine again.
function OnInitGlobalModData(isNewGame)
...
IC.ResetTime = SandboxVars.ICurrency.ResetTime;
print("ICurrency: Setting ResetTime = " .. IC.ResetTime);
...
end
Events.OnInitGlobalModData.Add(OnInitGlobalModData)
So it seems that Sandbox vars current data is read after the lua, not before and I guess its falling back to default values.
Default value is indeed 168 in my case.
Thanks for being my rubber duck @fast galleon
This way you're saving the value, it will not change when the global value is changed until you reload. That's fine, it's how these values are intended to be used.
Alternatively you could do
local mySand = SandboxVars.ICurrency
this saves the table reference and you can use mySand.ResetTime instead when you need the sandbox value instead of the cached value IC.ResetTime.
I use both ways.
lol I tried to use Fragmo to change the props from being connected to the pelvis to being connected to my hands:
It... didn't work.
lol the animation stayed this way after I ran it btw
I'm walking around like this
its Pingu NOOT NOOT
Ah, crap...
I changed the compost bags to have a lower useDelta, but when gathering compost into them, it still only fills it up to 4
lol oof
Its probably hardcoded by %
I checked the code, and... It does read the values from the files, so not quite it seems
Maybe I need to override the compost bag instead of changing them via doParam
Talking about overriding
I've done changes to existing item in Base everything is just fine but Category doesn't seem to override at all
Anyone got the solution?
Well.. besides "just make your own" π
Please autodesk maya workflow
did you mean DisplayCategory
ye ye that one
compost has a lot of hardcoded vars in each file.
yeah, I noticed...
function ISGetCompost:perform()
local amount = self.compost:getCompost()
local uses = math.floor(amount / COMPOST_PER_USE)
if self.item:getType() == "CompostBag" then
uses = math.min(uses, USES_PER_BAG - self.item:getDrainableUsesInt())
self.item:setUsedDelta(self.item:getUsedDelta() + self.item:getUseDelta() * uses)
else
self.character:removeFromHands(self.item);
self.character:getInventory():Remove(self.item);
local compostBag = self.character:getInventory():AddItem("Base.CompostBag");
uses = math.min(uses, USES_PER_BAG)
compostBag:setUsedDelta(compostBag:getUseDelta() * uses);
self.character:setPrimaryHandItem(compostBag);
end
self.compost:setCompost(self.compost:getCompost() - uses * COMPOST_PER_USE);
self.compost:updateSprite();
if isClient() then
self.compost:syncCompost();
end
-- needed to remove from queue / start next.
ISBaseTimedAction.perform(self);
end
But, uh... Do item overrides get loaded before lua files?
If you change the sandboxvar but your code didnt refer to new modified code
It will still have the previous data
shared lua is loaded before client lua, if that helps
and scripts even earlier
oh okay
@fast galleon has the solution for this i believe
so I think I just need to override the compost bag to make this work then
yeah, it was that simple
Yeah, I modified the compost bag via doParam in a shared script and I dunno why it still gave me a bad amount
Overriding the compost bag worked tho so
The tooltip is really not rounding correctly but whatever
floats are weird
What do you expect to achieve with this? Will the bag hold more compost or just add less compost when used?
I use this for bucket compost and couldn't think what the expected behaviour would be in this scenario. So I just set it to 4 too, no item checks.
@tardy wren
The bag is supposed to be good to fertilize more field spots, spending the same amount of compost from the composter
And while I can't set it to neatly have 12 uses, giving the compost bag a lower useDelta with an override does work fine, at least in SP
Setting them via doParam was odd. While the bags did indeed have more uses, filling them only yielded 4 uses maximum after all, consuming a full 10% off the composter
How so
item with 0.2 useDelta does not have exactly 5 uses. ~Float issues
Wow moving these props around manually when they are connected to my pelvis is absolutely infuriating....
Can anyone make this make sense?
Why the pelvis?
I feel like if it made any sense it wouldn't bother me so much... but I just don't understand why the hand items are bound to your pelvis and it never bothered anyone else who was making the animations...
pelvis almost always uses as base and start point in bone structures
no

Lmfao
meme status
That doesn't explain anything
You don't make the head the child of the pelvis.
lmao
You make the head the child of the neck
The neck is the child of the torso
The torso is the child of the pelvis, perhaps
The fingers are the child of the hand, which comes from forearm, which comes from upper arm, etc back into the torso
So it's not like EVERYTHING is the direct descendent of the pelvis
My question is WHY would the thing in your hands be the DIRECT descendent of your pelvis
I don't mean to ask "why are bones connected"
so head is a child of pelvis 
I get that everything is ultimately connected.
But why would the pelvis be the immediate parent of a held object?
what r u trying to do?
lol probably nothing anyone can help me do
I am making a custom animation
An attack animation
new one? for what
I'm just trying to seek understanding
u creating from scratch? or u trying to mirror original animation
As it stands the decision to make the prop the direct descendent of the pelvis baffles me
I would expect it to make EVERY weapon animation obviously harder, and would expect their pro animators to notice that... So there must be A) an easy way they use to connect props to their hands when doing attack animations, or B) a REALLY great reason to make it so hard to make props track your hands.
Right now I am making one from scratch.
The mirrors are so borked I see no advantage in working from a mirror
No one has told me yet how to do it correctly
Only vague things like "use Blender"
lmao
Except the people suggesting that do not know how
I'm like, "Okay, sure, I'll use Blender, how do I import a .x file into Blender, mod it, and export it for use in the game?"
crickets
Dhert has given me the clearest instructions for functionally flipping a vanilla animation but his technique results in a lot of bork
That needs to be manually fixed anyway
Because it's an imperfect mirror.
(highly imperfect)
It makes body parts go approximately where they might be needed but not exactly.
I can make a perfect mirror in Fragmotion, but upon exporting it, it will not look right.
No one has told me how to fix that, so I am making lefthand animations from scratch instead.
did u check this? https://steamcommunity.com/sharedfiles/filedetails/?id=2867805604
yes
ah, there's not .x but .fbx
That is for using Blender to create a .fbx from a .blend template.
Not a .x from a .x
yea yea
So it's not useful for modding the vanilla animations I'm concerned with
It's fantastic for original animations though.
never tried to create animation but what's different between .x and .fbx for pz? as I get it they both for that, right?
It looked pretty clean in the gif he posted earlier
@golden sparrow He cleans it up manually.
I'm talking about how it looks immediately after the mirror.
Oh okk
He has to go through 4800 frames of the flipped animation and correct a bunch of poo
I'm in the no idea what i'm talking about group lol, never touched anim
Damn
That sounds painful
I mean dhert's way is fine. But it doesn't change the problem of having to move both props* (left and right hand) manually throughout the animation because it's naturally bound to your crotch instead of your hand.
Also you end up having to readjust all kinds of stuff if you're doing a full-body mirror (e.g. if you're trying to mirror the ground attack, during which character kneels.)
The dhert-mirror for the ground attack literally rotates your body 90 degrees toward the ground, borks your legs, and sticks your shin and feet and arms through the ground, e.g.
(meaning the mirror made using his technique before cleaning it up)
He is aware of this and currently releasing his animation with vanilla ground attack until he does his own custom ground attack because of how nontrivial that animation is to mirror.
Good morning.
Can somebody give me a tip about actions
ISTimedActionQueue:add(ICDefaultAction:new(getPlayer(), getPlayer(), 180))
Throws
[04-02-23 17:35:00.546] LOG : General , 1675524900546> Object tried to call nil in addToQueue.
Considering that ICDefaultAction:new() does construct properly and returns table
What exactly is action in
addToQueue: ((action: any) => any) | any;
static add: (action: any) => any;
then?
Well you seee... =P
You figured out that my Lua transpiler for type defs is incomplete for PipeWrench.
I'm actually not sure. Someone in here will tell you.
Yeah, its ok about that.
I think ISTimedAction is an object that you pass in.
Not 100% sure since I've not needed to work with it.
I followed a few examples but it seems
require "TimedActions/ISBaseTimedAction"
ICDefaultAction = ISBaseTimedAction:derive("ICDefaultAction");
Is not sufficient to make it being an action with new() in it.
Object tried to call nil in addToQueue why nil I wonder if argument is supplied
Possibly looking for a property in a param that it didn't expect?
Its a wild guess at this point, considering static add(action: any) has only one argument
Wait..
Are you extending the class?
Because PipeWrench has issues extending TIS classes in Lua.
It's a thing I need to look at.
You can wrap classes though.
I tested this and was puzzled at first, then I remembered I use script to DoParam on an event. Reload and it seems to work.
I realize now that I also do it on an event
Just executing it while the file loads would be fine as well, though, since I don't need any sandbox vars
Ok progress on our generator mod modding. Right now we are just trying to make our item be a seperate generator from the ingame one. We have looked at how other generator mods does thing to get an idea how we should derive and setup ours (from scratch at that. Dont worry)
We are at a point where we get no errors on startup. You can craft the generator and the translate Luas with context info all works. Which means part of the lua codes work as intended. But as soon as the generator is crafted. the code to forcedrop it on the ground upon creation does nothing
also if you right click it in inventory it says "take generator" which does nothing ofc
but as soon as we drop it on the ground a big repeating error occours until we skip it and a normal generator is dropped
sounds like something is borked with the world model
since you can craft it and it does come up as an item
can you add it to your inventory through the items list?
What is this lol
Decompiler giving some strange result
Yes
but if I try to draw the tile with tilebrush the tile is just a generic non functional tile
the tile naming is right
did you define it as a moveable?
gonna double check but im sure I did
I referenced the normal ingame generator
gonna double check if the tile defs are right
if that is the problem then well heh
yea its defined as an item, i though it was a moveable of how it works in game
but its an item
I suspect it being an issue if you're extending the action class in TS.
You can make a Lua interface and extend it there if you need to.
Wrapping is what's being used for some stuff right now when using PipeWrench. I'll need to see what I can do to fix TSTL's class stuff to work with TIS's class.
The normal generator sprite is not marked movable
Although this is the tiledefs included with the modding tools through steam
that is because the generator has the "take generator" command
@red tiger i still think youre nuts ( due the ammount of work you did ) but damn... well done... awesome job on the project
BodyPart.class?
int baseChance = 40000;
if (!bandaged())
{
baseChance -= 10000;
} else if (getBandageLife() == 0f)
{
baseChance -= 35000;
}
BodyPart but don't even need it just thought it was funny ty tho π
So it's a char being interpreted as a short value when it's a constant value. This is an artifact of fernflower. Use JAD when this shows up as it can give you the right value. What you can also do is this:
char foo = '#';
int bar = (int) fooo;
JAD shows these as proper values.
Also, JAD can decompile functions that fernflower fails to.
It's by no means a better decompiler than fernflower however it can cover for these issues.
can you tell me how you defined your custom generator?
do you have a custom model for it?
I'll check out
Okay. Sorry for the issue.
Part of the planned transpiler 2.0 for Lua code is resolving types.
cause i suspect it has something to do with the model
No problems mate
Thanks for the insight, I used JdGUI until now
In fact I'm not compiling it in TS right now.
Thanks. I like it when people call me nuts haha. I totally accept this title.
I use PipeWrench as a big-ass manual to read through before going scrolling game lua folders for any references
We are not using model. We are using a tile just like the vanilla generator
The fact that you use it for any step of the process is good to hear.
I was aware some issues might happen when I seen that lua has a lot of any as argument types.
do you not define it in a .txt?
Every local is a var basically.
This is part of the LUA in the map objects in server side of code
We do that too in scripts folder
as said the item works
I can even craft it
hm, do you prefer generator pickup / drop or moveable place / pickup ???
- WebStorm makes everything much faster. "Go To Definition" is underrated.
we want to use generator take
VSCode is pretty powerful.
we can even rightclick it in the item list and it will says "take generator" as an option
BUT it is not forcefully dropped when we craft it. Something the client side of the code does have a function for
I mean VSCode/WebStorm i just prefer WS more for TS
well you do not have a worldstaticmodel or a worldsprite defined for generator so maybe thats a problem?
Generator does not have that
the vanilla one doesnt
neither the steamgen mod
Webstorm focuses on TS which is good. There might be better tools specifically built in WS. I've used it too in the past.
and no generator lua code we find in any of the vanilla files point to a world model
neither the vanilla item code
What do you want to achieve?
Well be able to drop our generator on the ground
If you want to make gens being pickable I can give you a code
without it becoming the vanilla generator
we have the code there
But gen probably have to derive from IsoMovable*
ok then what's the error let's start from there
we looked at how steamgen mod derived things to get a basic understanding
Basically sprite properties just have to have "IsMoveAble"
and our tiles works fine when we edit the steamgen code to use them so tiledefs are not the issue. They are setup like the vanilla generator tiledef
Ok let me rephrase our current issue
- when we craft the item. It does not autodrop on the ground. It stays in inventory. Similarily to the steamgen mod we have the needed code there in the right place in the folder structure.
- when we manually drop it we get the error screen I posted above
and it becomes a normal generator
Ok I will start a thread here
@polar thicket Why don't you make it a building object if you want it to be constructed on the ground directly ?
I mean an object that can be built thought Build Menu accessed using right click
Go to the thread
And it is not what the steamgen mod does. In that mod it is crafted into a generator object that behaves similarily to the vanilla generator in code. And is forcedropped as it is not intended to be in player inventory with a lua
Hey guys, complete newbie to modding in PZ (Never really messed with Lua before so I'm already way over my head), I was wondering exactly how easy/hard it is to go about doing UI stuff? I don't want to do anything stupidly complex; just hide the Scratch/Bite defence lines/values in clothing (Probably leaving the protection tab in health untouched just for simplicity's sake)
is there any framework/example of how devices like TVs are established? havent seen anything in the folders
Quick question. Can you change the world model of an item like a bag depending on if it has any items inside it? I'm trying to get something like the shelf tiles, which populate with random junk when you put stuff on them
Visually?
Timed actions template
For case if somebody was wondering, with explanations
require ("TimedActions/ISBaseTimedAction");
ICDefaultAction = ISBaseTimedAction:derive("ICDefaultAction");
function ICDefaultAction:isValid()
return true -- Mandatory bool, or false otherwise and action will not be performed
end
function ICDefaultAction:update()
-- Optional, called on every frame of execution
end
function ICDefaultAction:start()
-- Optional, called once on start of action, if action validity check is passed
end
function ICDefaultAction:stop()
-- Mandatory, called once action is interrupted
ISBaseTimedAction.stop(self) -- Mandatory, performs core functions
end
function ICDefaultAction:perform()
-- Mandatory, called once action is complete
ISBaseTimedAction.perform(self) -- Mandatory, performs core functions
end
function ISBaseTimedAction:new(character, target, time)
-- Mandatory for ISTimedActionQueue
local o = {}
setmetatable(o, self)
self.__index = self
o.character = character;
o.maxTime = time; -- Can be -1 making action indefinite until set to completed conditionally
-- Optional
o.caloriesModifier = 1;
o.stopOnWalk = false;
o.stopOnRun = false;
o.stopOnAim = true;
-- Custom (any arguments)
o.target = target;
return o
end
-- Runtime example
ISTimedActionQueue.add(ICDefaultAction:new(getPlayer(), getPlayer(), 100))
Yeah, don't want to actually remove the stats themselves, just hide the UI part so I can't see how much protection they give when looking at them
Yeh heres a reference from new age profession
It replaces the context menu smoke
And drink alcohol
Isn't the context menu when you're right clicking on it though? Cause you'd only see the stats of clothes when you're actively hovering over it, if it's the same thing then my bad, just curious :)
@red tiger figured the shit out ^
Glad to hear.
Have you looked wt the code?
Really? How are they doing that?
I tried to add an additional eating animation to use with EatType.
Is this implementation ok or I'm completely missing the point?
How to move (using code) by feet not to the center of a tile?
It's teleport, not moving by feet...
For example, if I need to automatically go to the corner of a tile:
I think getting back on track with modding is gonna be the hardest part
For me to actually do
I posted stuff about clicking tiles X/Y - you could check there and if the patching code supports floating x/y
Question: ProceduralDistributions has real effect only on server-side so I can escape it on client?
Could cause checksum issues
I mean if not isServer() then return end
the right way is if isClient() then return end, but not sure how useful it is. When in doubt follow vanilla behaviour.
Where did you post?
ScreenToIsoX and Y, would be what you most likely need @undone elbow
This would only work if walkTo supports floating X/Y
pathfinding behaviour has a function for float, it also has walk to direction of an object
simpler solution: just get another square for the timed action. You can also get a square with floats, this would still call the function with int arguments
Question about sendServerCommand() and sendClientCommand(): are they reliable and do they preserve order?
as in, if a packet gets lost, does the packet get re-sent so that the message eventually gets delivered? (assuming the connection doesn't drop)
and, do the messages arrive at the other end in the same order as they were sent?
zomboid is a reality.. 
Project Zomboid dedicated servers require the following open ports to successfully connect to clients:
16261 UDP
16262 UDP - Direct Connection Port
UDP is in definition not guaranteed, unless server platform has a relay that replicates messages on demand (like update or something)
Yeah, I need to know if PZ's networking layer is replaying messages.
That you can only get from devs themselves
yes
(it's pretty common for games to use UDP and have an implementation of TCP-like retransmissions on top of UDP for some, but not all, messages. like in a game like CSGO, you might send the message "Bob killed Larry with the mp5" reliably because that doesn't happen very often, but "Bob is currently at position x,y,z" unreliably because that information will soon become stale anyway)
... And most of the games that has that sort of relays usually not serving all the information, but only chosen by devs. So if you are looking for any sort of anti-dupe you gotta improvise
PZ is using an open source middleware called Raknet which has reliable delivery as a feature but IDK whether it's enabled for sendServerCommand/sendClientCommand specifically
Yep you pretty much just repeating my words in own way 
Okay, poking through it, it looks like sendClientCommand ends up being sent to RakNet asking for "RELIABLE" but not "RELIABLE_ORDERED" delivery.
same for sendServerCommand, they both use the ClientCommand packet type.
How bad is it to have a lot of non-local functions?
Due to the way I am hooking onto events and things, I cannot use local functions for a lot of the things I am doing :( but I donβt wanna bog things down to a crazy degree either
Why can't you make them local exactly?
Like if you have an example - for the most part you can Add() local functions fine, and or module the rest. The only exception would be maybe recipe functions - which unfortunately need to be global afaik.
I have been having difficulties with it. I have my primary functions tied to the OnEat trigger on βfoodβ items, and then the other functions are added to their respective event hooks with the Events.xyz.Add(Example)
If the latter can be local, that would save most of the hassle. (Like, 90+% of my concern would disappear lol)
I may have been missed something else that was tripping that up instead
Hey hey, i'm having a problem with my mod i'm completely lost on what to do. I made a new crop with seed and seed packet but for some reason, the seed packet only appear when you are in debug mode. The whole thing works perfectly in debug mode, the seed packets spawn and can be opened to get seeds that can be planted and harvested. But for some reason that is beyond me the seed packets refuse to appear unless you set yourself in debug mode. Anyone know what could be causing this ??
You can indeed add local functions to Events.X.Add()
But If I recall you remove functions don't you?
are there any errors / logs
Nope they just don't appear, no error :c
They appear in containers and such yes. I set them to appear in shops for example
do you have a 'if getDebug()' anywhere?
Hm idk, i'm gonna look through the files
Looked at the LUA files and scripts and no i don't see it anywhere
And when you say debug mode you mean -debug?
Yep
Yes. It is inside that same function, so i donβt think it would be an issue?
Function A triggers OnEat, and does the Events.xyz.Add(Function B).
Function B repeats until a counter variable == 0, then removes itself with Events.xyz.Remove(Function B)
If there's a reference to the function it should be fine
Only weird thing in an LUA file i found is this line, but i don't know what it refers to
if getCore():getVersionNumber() == "41.50 - IWBUMS" then Events.OnFillWorldObjectContextMenu.Add(FlaxMenu.doFlaxMenu);"
Ok, cool. Also, @strange sequoia
Are you certain you have the mod enabled on your non-debug version? I have made that mistake before⦠I would also make sure nothing else is enabled
Yes i have. I did some test with someone on a server. Them in Debug mode and me in normal mode. They could spawn, use and see the seed packets but i couldn't.
If they dropped the packets they could see them but i couldn't
just so I understand as well. You are finding the seeds naturally spawning in debug mode, but not in a non-debug save?
If i start a save in debug mode, find seed packets that spawned naturally in a shop and come back on the same save without the debug mode, the seed packets disappear
Ohhhhh. I see⦠That is weird. That sounds like an issue between client and server.
That sounds like it might be bc of the placement of your lua files. If they arenβt in the correct file locations, that could be why
do you have checksum disabled?
I don't know what that is
Been working all morning / day on my transpiler for Lua to TypeScript.
local message = 'Hello, World!';
print(message);
/* FILE: ./assets/media/lua/test/hello_world.lua */
let message: string = 'Hello, World!';
print(message);
Baby-steps...
I preserve non-local functions only for things that can go for sorts of internal API used anywhere, example:
function createObject(x, y, z, sprite, name, persistent)
if not name then name = "None" end
local sq = getCell():getGridSquare(x, y, z);
if not sq then return end
local object = IsoObject.new(sq, sprite, name);
if not object then return end
object:setOutlineOnMouseover(true)
sq:AddTileObject(object);
if persistent then
if isServer() then object:transmitCompleteItemToClients() end
if isClient() then object:transmitCompleteItemToServer() end
if getWorld():getGameMode() ~= "Multiplayer" then end
end
return object
end
or
function find(arr, val)
for index, value in ipairs(arr) do
if value == val then
return index
end
end
return -1
end
I use that almost in every function, why bother declaring it locally
because local is faster
faster by what, 0.01ms?
and names like 'find' and 'createObject' are really prone to being overwritten by another modder with the same thought process as you
Well just use interface then
@nova socket do you mean, as an example, if you made a function like this that you planned on using everywhere, you would just make it global?
local x = var1 * var2
return x
end```
(I know how terrible it would be to actually use that function, it is just an example lol)
Nice thought btw, I will interface them
Bc I would consider just making a module, if that is the case. That way you can maintain everything being local. It really does load significantly faster that way, especially when ran along side numerous core game code and other mods
Honestly performance is a secondary reason for using modules (if that's what you mean by interface) - just not dealing with naming issues is worth it
- if you're using something across alot of files you'll have to probably use require at some point anyway to ensure its loaded first
Oh true. That is a good point, helps maintain load order too. That can be a real pain in the ass from everything Iβve seen/heard lol
Short of UI, recipes/script functions I don't think you have to make anything global
By interface I meant something like this
YourInterface = {};
YourInterface.somevar = 123;
YourInterface.somefunc = function() print("hello world") end
... blah blah
mmmmmm interfaces.
Well yeah in Lua its just a table of things
(Shuts up immediately to avoid the inevitable topic)
@red tiger
Oh I thought you meant using local returned tables of stuff
You know where this is coming from right Jab
Yeah in "proper" places its called interfaces
Am literally writing a Lua -> TS transpiler right now.
unfortunately nothing besides just storage in this case
module, I suppose in Lua is something like class.
"mmmm classes"
I've got to build compiler options too like force explicit types, inferred types for single-type variables with type-discovery in-place, etc.
Fun fun.
---"my_math.lua"
local mymath = {}
function mymath.add(a,b) print(a+b) end
function mymath.sub(a,b) print(a-b) end
function mymath.mul(a,b) print(a*b)end
function mymath.div(a,b) print(a/b) end
return mymath
``` ```lua
local mymathmodule = require("my_math")
mymathmodule.add(10,20)
mymathmodule.sub(30,20)
mymathmodule.mul(10,20)
mymathmodule.div(30,20)
In TS you can literally interface a type btw with strict types

It'll be fun once full Lua files from PZ get properly translated to TS.
Someone mentioned if you pass an isoObject reference using commands that it will know which object it is on the other side?
Don't know if you had an answer
I figured it out eventually
But I had the same problem and resolved it by using Kill comand
becomeCorpse wasn't firing cause shouldDoInventory wasn't valid - because they had no attacker
Yeah
if targetHostile:getHealth() <= 0 then
targetHostile:changeState(ZombieOnGroundState.instance())
targetHostile:setAttackedBy(getCell():getFakeZombieForHit())
targetHostile:becomeCorpse()
end
Putting FakeZombieForHit solved it
yep
Noticed it's used in other calls
Kind of weird it's not called internally imo
but there's probably a good reason
is there a way to get a single broadcast to play across all channels kinda Emergency alert style on the tv
just inventoryitems and (for some reason) isodirections
ah that's still useful to me
my flare code works on a dedicated machine, buyt not self hosted
trying to figure out what's going on - may just refactor it to use commands instead
oh that's pretty odd
yeah
the code is in shared due to housing some recipe stuff
could be related
oh I think I see why lol
I added a client check for onTick
if recipes are called clientside why is it in shared?
just to checksum it from the server?
hi! sorry for bothering and I hope im using the correct channel
Does anybody know how can I make the weapon grip "lower"? I want the character to have the hands in that grip where the arrow is pointing.
You may have to change the model - if i'm not mistaken you can't really offset weapons in-hand
Unless I misunderstood that convo the other day @faint jewel ?
Of course someone modded in the guts sword.
A giant hunk of steel.
Anyone knows any pathfinder to make character move close to square even if its occupied with something? Normal ISWalkToTimedAction stop immediately without trying to reach occupied square.
That's a nice piece of metal there
he just needs to move the model down IN EDIT MODE.
edit moce > select all> move down
Hi
low
you can just by changing the origin
hs playing... thats the only thing that gets easier wasted
and re-exporting it
e.g., relation to 0,0,0 in the modeller or its export settings
at least u can in wings3d, idk bout blender
xD
You have any idea how old that makes me feel????
you feel old?
idk im probably a similar age
....
rhinoceros.
first try for me was 3dsmax or gmax in like 98? 99?
you're a bit older than me, i was 2 in 1992, heh.
the first successful try was wings3d in like 2002-3, but people told me my models were too high poly
they were converting them from one format to another though, it was their own damn fault
i didn't know any better back then tho heh
i was trying to do stuff for.. let's see if their site still exists..
Crystal Space is an unmaintained framework for developing 3D applications written in C++ by Jorrit Tyberghein and others. The first public release was on August 26, 1997. It is typically used as a game engine but the framework is more general and can be used for any kind of 3D visualization. It is very portable and runs on Microsoft Windows, L...
it does but it's bork, for this
that was my last try with 3d and when i figured out i suxxx doing this π
i've done some 3d modelling in wings for PZ, picked it back up for that
im pretty good at it but wings doesn't do animation so im a bit limited lol
im a bit jack-of-all-trades (code, 2d art, 3d art) but code is my specialty
yeah... im also a master of none, user of many
my specialty is actually non related with any of what we do here... music producing and composing...
EDM mostly
but atm im a "mercenary" who produces and remixes what the main public wants...
easier than doing something original and pays for the bills
whenever i see something like that i always think of windows 3.1 and early linux distros π
that GUI is so nostalgic...
this is a CDE theme on linux
heh
i love win3x/early linux
i had win95 theme before this
but with mac os 9 font
anyway we're like way off topic, i dont wanna clog channel
xD
π
everyone is sleeping ...
how to you add animations to your models then? You make them in wings3d and import them to some other software?
i was yesterday... had to work for 3h
today im only cleaning up the code in the mod
The best coding sessions are when you are completely sloshed.
so boring stuff...
and i need to think about a standard for my pseudo json string the mod and the app use to communicate
dont want to make to much nested stuff
but ill have to do it... or it will be a humungous string with a lot of nill values
or a lot of checks in the mod side...
or i can just stop being an idiot and use a json lib for lua and use json period
anyone knows of a good json lib for lua?
i think ill try this one - https://github.com/LuaDist/dkjson
i dont, but if i need to in the future that's the plan
so far i've just done guns and statics
guns/other items are all animated by the character and existing animations
though new animations would be nice for the guns.
i have one one of my mods uses.. dunno if it's "good" but it works fine
thank you
using this will actually save me a few lines of code... since i was "deserializing" a pseudo json string with gsub and stuff like that
@weak sierra thanks, it works pretty well, so now to update the code to use this lib
np :)
new ChuckGPT mod out hot off the presses: https://steamcommunity.com/sharedfiles/filedetails/?id=2928660831
what does it do exactly
lol
draw grid and letter/numbers on axes?
i've been meaning to enable cell grid for players for ages, if it does that then bonus points heh
thank you! it worked
It enables grid, but the cursor displays the ID
nice
I was going to look into a label system, but doesn't seem like it'd be isometric
toggleable?
No
damn
Why would you not want the ID?
If you're enabling the grid - seems like the ID would be beneficial
i take map screenshots where i'd want the grid off
hmm
and some players might prefer it off just because players can be weird.
u dont have to change it on my account xD
I don't think it'd be that hard to work something out
thats fantastic
anyone confirm that SandboxOptions.SandboxOption.asConfigOption is nil?
Ohhh, it seems like you can open .X files using Noesis
hmm
hmm im not sure either
no worry. I use another tool 
share pls
thank you
Hi guys, i m newbie to PZ. I wish to enlarge the capacity of personnal inventory. Any recommended mod may make it happen? Thanks.
anyone know how to make a recipe script using lua ?
this is mod development not mod support
fr
eh time to figure out how in the world you draw on map with script using square xyz
Add the links on the list of tools
my local mod.is working fine but for some reason the workshop folder version is borked.
it was working before i updated the mod and i have updated it before
i think i figured it out
im just dumb
Does anyone know where throttlekittys template is? cant seem to find it anywhere
how can i make someone start with an infected bite at the start of the game? or is there a mod that already does this?
Hey guys, how would I go about making a mod? I want to make a repair recipe for an item that doesn't have one.
i recommend looking at other mods that do the same thing.
Good morning.
@rancid panther OnCreatePlayer, I would try
SetBitten(true, true) (meaning SetBitten([BITTEN], [INFECTED])) on one of the player's body parts.
Maybe player:getBodyDamage():getBodyParts():get(3):SetBitten(true, true) would work.
3 is arbitrary, you have like 15+ body parts, but they say it's lucky so wtf
Weird its SetBitten ? Not camel case? 
Wishing everything was cased consistently. =(
Ye
I used snake_case in my early Lua days..
Too late for that now. Its gona break lots of mod if they do this now
What do you prefer
Oh, I've advocated for breaking legacy support for years.
Mods break during major updates anyway so with b42 coming in, this would be a perfect time to push all current mods to 41 support and break them all for 42.
Onlything ugly abt camel case if you have initials
TISVar
varTIS
Nope. The rule is tisVar
and varTis if you want to be true to the format.
like getId()
But like i said initials
Yeah you'd lowercase it.
khe khe PipeWrench definitions KHEEEEE
Oh man..

I think there is even tools for TS to convert stuff to specific formats
Me over here, working on the new Lua transpiler and this modder over here telling me to fix my Java one. xD
Haven't used one honestly.
It might be doable. All TS code interfaces with a dictionary so yeah.
Yeah, you can probably extend existing interfaces.
Not sure how painful that might be to sort, PZ is not that small
That dictionary eliminates the issue of mod-loading order.
Formatting the interface calls would be needless work that would complicate things.
Apart from it being nicely and consistently formatted, It could break in certain situations.
Anyone know if admin account as a player on a server ?
Like if I use getOnlinePlayers() will it contains the admin
The admin account is like any other player when logged on.
Ok ty
Got a recommendation on my Discord to replace:
player:playSound("Rifting")
with
getSoundManager():PlayWorldSound("Rifting", player:getCurrentSquare(), 1.0, 20.0, 1.0, true)
for multiplayer-friendly sound.
Can anyone confirm how right this looks?
Seems like "true" => ignoreOutside... anyone know what exactly ignoreOutside controls? Pretty hard to tell from the Java...
think it depends on what sound you wann play, there are like worldsounds and sounds only you can hear
ignoreOutside seems unused. PlayWorldSound calls PlayWorldSoundImpl passing the arg to it, but it doesnt pass it further, and doesnt reference the arg in the function.
Useful info for modding tutorials / docs.
=)
Also probably good to put a JavaDoc there (If not already)
I actually started adding javadocs to some stuff last weekend. offtime side project π
Good freaking work.
Rooting for you there. This is the most important stuff IMHO. Thanks for that.
BTW I eventually plan to bake the existing JavaDocs into PipeWrench.
I have an offline copy of the JavaDocs for 41.77 if anyone wants that for offline use.
π
Hahahah oh man
Do you know about my TS / Lua documentation tool?
I plan to finish it so players like myself and others here can self-document.
only whats been mentioned here
It was made with the assumption that docs wouldn't be updated in a long, long time.
The last time we had official JavaDocs was in 2015 so this coming out last year was a huge surprise.
also. i've decided i dont like javadoc lol. used to using luadoc, its much more flexable
I like TSDoc / JSDoc. More options + markdown support.
the lack of markdown in javadoc is what really annoyed me. luadoc has it
This is what that tool looks like: https://media.discordapp.net/attachments/836741802660855831/1049787736053260319/unknown.png?width=1248&height=671
ah ya saw that


