#mod_development
1 messages Β· Page 104 of 1
Thanks for the explanation!
and pathToLocationF(x,y,z) is kinda funky as well
it's ok to call it anything you want
Nah, terminology helps convey ideas
@tame mulch any tips on how to spawn zombies and make them move to xy in mp ?
tried this ```function ZedsToPlayer(source,zedQ)
local ZedList = source:getCell():getZombieList()
local x = source:getX()
local y = source:getY()
local z = source:getZ()
local zedcount = 0
for i=0, ZedList:size()-1 do
local zombie = ZedList:get(i);
if zombie then
zedcount = zedcount +1
if zedcount <= zedQ then
print("ZedstoPlayer", zombie)
zombie:pathToLocationF(x,y,z);
end
end
end
end```
but its... not reliable
I think that's an issue with the networking and authowner
Hmmmm. addZombiesInOutfit + sound?
not viable
afaik you can't assign a zombie an owner manually through what's exposed
i want to move a certain number of zombies
not all of them π
but the annoying thing is that pathtolocationf sometimes works
sometimes doesnt... makes no sense
still I hate naming things, I get brain freeze trying to name things uniquely
Also more an opinion question: If I'm just using some strings for halo text, what namespace should I use? UI?
no worries π
for that purpose alone you can use whatever names you want
It might makes sense because zombies probably have some sort of FSM that overrides your direct commands
as long as you call the right one with gettext
Maybe choose zombies, create fake IsoMovingObject and zombie:setTarget(fakeTarget) ?
I figured, since using getText, but I guess I want them somewhere consistent. Do most mods use UI you think?
also @tame mulch I rewrote EHE to be truly serverside - but knockdown and damage doesn't happen to zombies on serverside that cleint's see- when I made those events clientside the zombies self delete and the debug lists them as 'stale'. Is there any generic 'sync zombie' 'transmit' for that?
i'd heard setTarget doesn't work, that java just resets the value every frame anyway
hmmm gonna give that a try, thanks
spotted() can take Isoobject as an argument
and sets it to their target - i think only works if clientside though
I'm not very good at sync zombies π
I tried looking around to see how it's done in vanilla but it's a bit hard to tell
bah static zombies for everyone
I think that goes back to the authOwner thing maybe?
this would be really hacky
i did some tests and it was working
but you could parse through the zombieList in cell
yeah thats probably what ill have to do
since im already getting the list of all the zombies in the cell
LOG : General , 1675434437404> 234,434,986> Zombie: removing stale zombie 5000 id=20320
LOG : General , 1675434437471> 234,435,053> Zombie: removing stale zombie 5000 id=20250
LOG : General , 1675434441420> 234,439,003> Zombie: removing stale zombie 5000 id=20247
LOG : General , 1675434453571> 234,451,152> Zombie: removing stale zombie 5000 id=20315
LOG : General , 1675434461587> 234,459,169> Zombie: removing stale zombie 5000 id=20323
LOG : General , 1675434469687> 234,467,269> Zombie: removing stale zombie 5000 id=20329```
the zombies get knocked down, splatter blood - I walk upto them and they vanish
yeah same issue then
I'll look into that and let you know
or bypasses the death animation, drops on the floor and vanishes
it's definitely a network sync thing
some i know why they vanish
what if you...
set the target to the player, so that ownership is transferred to the client (if it doesn't have the zombie already)
then send the client the target command to make the zombie target the moving IsoObject?
the distance from the player is above a certain value
but the ones near the player... probably a sync issue like you said
but also... im the only player on the server so...
I'd have to check on my Spiffo AI now
oh
π€
you can setModData to the number you want
and in their zombieUpdate() check if they have that data
and set spotted()
that's how the spiffo works
its worth a shot
you can even have it occur over and over upto a certain distance
Spiffo does it forever and doesn't jank around
he just ποΈ π ποΈ

nah he's forced to walk
someone played with all sprinters had to deal with a sprinting nemesis spiffo
poor man
that's a feature, not a bug
yes
buy a sprinting spiffo zombie to eat the streamer
π
or whatever... custom outfits
have you set up a redeem for playing the panic jumpscare?
that'd be a good cheaper one
I use outfits and hidden items for my AI but if you don't care if it's persistent you can use ModData
it's not saved so I use it as a go to little table
im just annoyed since what i want to do is a simple thing...
and to make it work ill have to jump through a lot of hoops
Does PZ support something like socket.http ?
bummer
once I finish this purge I'll look into "stale"
I would make a Twitch Integration 
oh yeah? link plz
that's what he's working on atm
I was like "why he wants to send zeds so badly"
how is the connection handled? meant to ask about that
subbed to it
i solved the no sockets with a custom app
the previous version used keypresses
and also kept compat with the previous mod for the ones who rather use Touch portal and not my app
I guess you write lines with app into mod folders and read the file from the game which is a thing?
yup
ye we did it before for UE games with no socket
a pseudo json string
is written into a file and read and parsed by the mod
the app just queues all the actions from twitch
and checks if the file is empty
if empty it will write the next reward in queue
i was curious and looked into it myself, and it looks like that only happens when this condition isn't met on a zombie update:```java
(!GameClient.bClient || this.authOwner != null || this.bRemote && this.lastRemoteUpdate <= 5000)
bah... this is making me go mad
now it works
......
and i havent changed 1 line of code
local sourceId = source:getOnlineID();
local ZedList = source:getCell():getZombieList() -- get zombies in the cell
local zombie = {}
if ZedList then -- if no zombie was found values are kept from source
zombie = ZedList:get(0) -- get first zombie found
if zombie then
args.ZedX = zombie:getX() -- set the spawn for the existing zombie x and y
args.ZedY = zombie:getY()
end
end
print("Zedspawn [".. sourceId .."] quant: ", args.ZedQ)
print("Zedspawn [".. sourceId .."] XY: ", args.ZedX,args.ZedY)
print("Zedspawn [".. sourceId .."] PlayerXY: ", source:getX(),source:getY())
addZombiesInOutfit(args.ZedX, args.ZedY, args.ZedQ, 1, outfit, 50, false, false, false, false, 1.5);
ZedsToPlayer(source,args.ZedQ)
end
function ZedsToPlayer(source,zedQ)
local ZedList = source:getCell():getZombieList()
local x = source:getX()
local y = source:getY()
local z = source:getZ()
local zedcount = 0
for i=0, ZedList:size()-1 do
local zombie = ZedList:get(i);
if zombie then
zedcount = zedcount +1
if zedcount <= zedQ then
print("ZedstoPlayer", zombie)
zombie:pathToLocationF(x,y,z);
end
end
end
end```
....
i know my formatting is crap
i need a break and a cup of coffee
livin' on the edge π
@sour island have you ever experimented with createRealZombieAlways? you'd need to achieve access to the VirtualZombieManager instance, but I imagine you've already done that before
I think the luaManger functions call on that eventually
might be worth looking into, it appears to allow you to create static zombie instances pretty much whenever/wherever you want, and syncs them between server/client
I use the outfit specific one that creates an array of zombies
you'd need to be careful about overuse though - the overhead would be nothing to scoff at if you spam it
right, but if the zombies aren't "real" on either the server or the client, then maybe that's your issue
from what little I understand, some zombies are more static/present than others
but thats doesnt explain zombies created with the same command
that some vanish and other dont
and are right next to each other and spawned using the same method
Mind you it's a tad old, I have to add more supported mods, but I'll get around to that soon. https://steamcommunity.com/sharedfiles/filedetails/?id=2895419952
What I've done in the past was send a command for all clients to spawn zombies - idk if that doesn't need to be the case any longer
sure it does, they vanish because of the type of zombie they are, more or less
but why would my own zombies become stale only after getting damaged/knocked down in client code
I can fight them all I need to prior to that
oh, are the vanishing zombies only ones you spawned?
they're not
I just realized what I was saying - actually for me the zombies are vanilla
perhaps I need to run the client-side code for all clients?
i'm really confused what could cause the stale zombie codepath to actually run in this instance
nothing you're doing to them seems related to the conditions
you shouldn't need to. if you spawn the zombie properly on the server, it should take care of the clientside automatically
my bad, got two topics conflated - but spawning zombies in isn't my issue and doesn't seem to be m3ss's
wouldnt that make them spawn several times?
I'd have to test but our issue is making changes after the fact, right?
all of this depends on what commands you guys are actually using to spawn them, the manager has a ton of different functions
your repathed zombies also go stale?
right now zombies in outfits
tried all the other available ways and all lead to stale zombies randomly
sometimes they all stick around
other times they dont
sometimes some of the spawned zombies despawn
other times the zombies already spawned in by the server despawn
what's the actual name of the function? I'm trying to see how it fits into the manager
atm im using addZombiesInOutfit()
same, but I don't get stale zombies from spawning
okay yeah, it uses createRealZombieAlways
so it should be fine
as long as you're calling it on the server, I believe
I think you're getting staled zombies when you try to repath them
it should yes
can you use Spiffo as your OutfitID
just to confirm the ones pathing to you are actually the ones you've spawned?
just lemme kick this guy's a$$ in hs and ill give it a try
also - the same issue occurs when you grab a random number of zombies in the cell?
oh - so is that a problem to do it that way? to grab the number of zombies from the cell?
oh
but none go stale?
i repath 3 existing zombies none went stale
none go stale but the other 2 don't react
and sometimes none reacts
they kinda react but reset back
ill clip a video of it
just a second
are you sure those are the only zombies in the cell?
this approach could be grabbing zombies 100+ away
i have a counter
plus im grabing the ids and checking them against the ones that move
i've tried to randomly pick zombies
and picking based on the ids i collect
the result is the same
public void pathToLocationF(float var1, float var2, float var3) {
if (!(this.AllowRepathDelay > 0.0F) || !this.isCurrentState(PathFindState.instance()) && !this.isCurrentState(WalkTowardState.instance()) && !this.isCurrentState(WalkTowardNetworkState.instance())) {
super.pathToLocationF(var1, var2, var3);
}
}
could be they're already wandering
it thats the case...
i need to stop the wandering state
and set the path... maybe?
should work if that's the case
also I lied earlier spotted only works on IsoMovingObjects and specifically ignores anything not a living IsoGameCharacter
but i might go with that one
since the player is a moving object
someone at the door... brb
do you guys know if there's a way to get a UdpConnection from IsoPlayer? looking around atm but no luck so far, could be missing something obvious
maybe calling zombie:changeState(ZombieIdleState.instance()) before the pathfinding method would be enough
also double checked my spawn code should be firing in server - I just have some vestiges of when it was client -> server
if (var6 != null) {
this.AllowRepathDelay = -1.0F;
this.pathToCharacter(var6);
}
they even do it for a particular case
that field isn't exposed tho
so hopefully the state thing works
this is so weird
lemme try setting the state b4 the path set
so far it seems that solves it... lemme try a few more times
congrats if it works
same behavior
take a look at parseZombie in NetworkZombieSimulator, specifically the portion after if (gridSquare != null)
this is a debug tool I'm fairly certain, but there's a lot of stuff they do with a zombie of the same type you guys are using (realZombieAlways) so all of those properties/etc. should work as well, as long as they're public
have you guys used .networkAI to do the movements and such?
any stale zombies?
LOG : General , 1675440665267> 240,662,842> Zombie: removing stale zombie 5000 id=19437
LOG : General , 1675440757250> 240,754,826> Zombie: removing stale zombie 5000 id=19424
LOG : General , 1675440789584> 240,787,159> Zombie: removing stale zombie 5000 id=19425
LOG : General , 1675440941033> 240,938,610> Zombie: removing stale zombie 5000 id=19434
4
im only moving one
if (!GameClient.bClient || this.authOwner != null || this.bRemote && this.lastRemoteUpdate <= 5000) {
the 5000 logs don't make any sense to me
there's just no reason for that condition to become false that i can see
isn't this the condition? if (GameClient.bClient && this.authOwner == null) {
so if you don't have an owner for the zombies, then yes they'll despawn
but im the only one here
that doesn't mean the owner can't be null
the 5000 condition is the one I linked I think(?)
that's what i saw
yes but makes no sense
why don't you just try assigning authOwner? or print it, to test it?
that'd tell you what's going on
they are in my LOS
you can, but you need a UdpConnection object, so you'd have to get that from the IsoPlayer
getZombieInfo() will at least tell you who the owner is, if you can confirm that the issue is that the owner is being unassigned or something that makes things much easier
i think im gonna try spawn the zombies 1 by 1
maybe its the function itself that doesnt like mp?
try what albion said first
it has to be authOwner actually, it's literally impossible that the issue is anything else
could it be bRemote?
nah. bRemote is a zombie property
wait no it's ORing...
it's literally impossible?
that combo of ! || != null || boolean && <=
it's absolutely authOwner, the code that's being output in the log is locked behind isClient and authOwner == null
is really breaking my brain lol
and I'm pretty sure he's a client lol
LOG : General , 1675441761251> 241,758,830> y 783
LOG : General , 1675441761251> 241,758,830> width 60
LOG : General , 1675441761251> 241,758,830> height 80
LOG : General , 1675441761251> 241,758,830> anchorLeft true
LOG : General , 1675441761251> 241,758,830> anchorRight false
LOG : General , 1675441761251> 241,758,830> anchorTop true
LOG : General , 1675441761251> 241,758,831> anchorBottom false
LOG : General , 1675441761251> 241,758,831> dock none
LOG : General , 1675441761251> 241,758,831> minimumWidth 0
LOG : General , 1675441761252> 241,758,831> minimumHeight 0
LOG : General , 1675441761252> 241,758,831> scrollwidth 0
LOG : General , 1675441761252> 241,758,831> removed false
LOG : General , 1675441761252> 241,758,831> background false
LOG : General , 1675441761252> 241,758,832> backgroundColor table 0x1348821607
LOG : General , 1675441761252> 241,758,832> borderColor table 0x664276437
LOG : General , 1675441761252> 241,758,832> moveWithMouse true
LOG : General , 1675441761252> 241,758,832> title Twitch Stats
LOG : General , 1675441761252> 241,758,832> leftside true
LOG : General , 1675441761252> 241,758,832> javaObject zombie.ui.UIElement@6f607896
LOG : General , 1675441761252> 241,758,832> mouseOver false
LOG : General , 1675441761252> 241,758,832> moving false```
this condition? i think you're reading the wrong part of the code
thats what i get from the table of getZombieInfo()
it should be (!GameClient.bClient || this.authOwner != null || this.bRemote && this.lastRemoteUpdate <= 5000)
this looks like a ui object, something is not working how you think it is
lol
zombies have a print out thing in luamanager
i can't really work out what the purpose of lastRemoteUpdate is so i'm not ruling that out, but i agree authowner is the most likely cause
kk
also shows pathing info too
there's a F key that displays stuff
wish it were easier to read but it's like a giant list under the isoGamChracters?
might have the info there too
@jaunty marten
every instance of the command (there's 3) are locked behind similar checks, all of which lead to authOwner
the args to what?
getZombieInfo
i have a feeling we're just not talking about the same thing at all π
yeah, it's just the zombie
keep in mind if you're running it with : it has no arguments, because you're passing self into the function
if you're using . then you need to pass the zombie in as the argument
Anyone else has a framework / tool / guides / resource / reference / tutorials / api / overhaul / library
That i havent included? I think thats almost all the relevant stuff i guess..
I'm talking about the debug log that he saw in console - that command can't run under any other conditions
the stale zombie 5000 log?
yes.
i'm just confused where you're getting that from
there is a stale zombie 800 log behind that condition
they're the same thing, just with different timeouts
idk what you're confused on
it's irrelevant
it's a global getZombieInfo(zombie)
creates a table
you pairs() through it
if i use it as a global i get
Callframe at: getZombieInfo
function: stdin -- file: objects.lua line # 6 | Vanilla
function: runLua -- file: LuaInterpreter.lua line # 192 | MOD: Cheat Menu: Rebirth
function: onMouseUp -- file: ISButton.lua line # 56 | Vanilla
the log he got was 5000
yeah, so i don't see how the 800 log is relevant
wrong message sorry
LOG : General , 1675442510671> 242,508,251> -----------------------------------------
STACK TRACE
-----------------------------------------
Callframe at: getZombieInfo
function: stdin -- file: objects.lua line # 6 | Vanilla
function: runLua -- file: LuaInterpreter.lua line # 192 | MOD: Cheat Menu: Rebirth
function: onMouseUp -- file: ISButton.lua line # 56 | Vanilla
local player = getPlayer()
local ZedList = player:getCell():getZombieList()
local zombie = ZedList:get(0)
print(zombie)
local teste = getZombieInfo()
print(teste)```
i know it will only print the table name
because they're effectively the same code, again - just for different timeouts. you're right that the one you posted applies in this case, but it's the same thing that we're talking about. there's no need to worry about which one it is, they both logically result in the same thing
you didn't pass anything into the function yeah

you got it now 
should still return an empty table tho
or well this is kahlua table but Im hoping the game knows to make it accessible(???)
LOG : General , 1675442605469> 242,603,050> table 0x156346127
LOG : General , 1675442649299> 242,646,881> zombie.characters.IsoZombie@5af17e0b
LOG : General , 1675442649299> 242,646,881> table 0x2068203020
LOG : General , 1675442649300> 242,646,881> OnlineID 19659
LOG : General , 1675442649300> 242,646,882> RealX 7213.216
LOG : General , 1675442649301> 242,646,882> RealY 9965.503
LOG : General , 1675442649301> 242,646,882> X 7215.7603
LOG : General , 1675442649301> 242,646,883> Y 9965.135
LOG : General , 1675442649301> 242,646,883> TargetX 7213.216
LOG : General , 1675442649301> 242,646,883> TargetY 9965.503
LOG : General , 1675442649302> 242,646,883> PathLength 1.7776705
LOG : General , 1675442649302> 242,646,883> TargetLength 1.7776705598619853
LOG : General , 1675442649302> 242,646,883> clientActionState walktoward
LOG : General , 1675442649302> 242,646,883> clientAnimationState walktoward
LOG : General , 1675442649302> 242,646,884> finderProgress notrunning
LOG : General , 1675442649302> 242,646,884> usePathFind true
LOG : General , 1675442649302> 242,646,884> owner M3ss```
well it says im the owner
i'll be damned. then it is the remote timeout
didn't expect that tbh
unless it's unassigning you as owner...

this is after it's spawned?
yup
it'd have to be, otherwise zombie would return nil
seems to be moving too
yup its trying to eat me
anyway to confirm info from one not moving?
LOG : General , 1675442772317> 242,769,898> table 0x569925269
LOG : General , 1675442772317> 242,769,898> OnlineID 19659
LOG : General , 1675442772317> 242,769,899> RealX 7210.844
LOG : General , 1675442772317> 242,769,899> RealY 9957.821
LOG : General , 1675442772317> 242,769,899> X 7210.844
LOG : General , 1675442772317> 242,769,899> Y 9957.821
LOG : General , 1675442772318> 242,769,899> TargetX 7210.844
LOG : General , 1675442772318> 242,769,899> TargetY 9957.821
LOG : General , 1675442772318> 242,769,899> PathLength 0.4708786
LOG : General , 1675442772318> 242,769,900> TargetLength 0.4708786000234912
LOG : General , 1675442772318> 242,769,900> clientActionState idle
LOG : General , 1675442772318> 242,769,900> clientAnimationState idle
LOG : General , 1675442772318> 242,769,900> finderProgress notrunning
LOG : General , 1675442772319> 242,769,900> usePathFind true
LOG : General , 1675442772319> 242,769,900> owner M3ss
is that with a freshly spawned on?
not setting the path atm
one*
yup
tried that
it kinda start to move then stops then start and resets back into the original "state"
sounds like the zombie manager has outdated info that it resets to
this pathing is done on server?
lemme try with 3 zombies... the only ones around
im calling the function on the server side yes
but its the same if i call it on the client side
perhaps try calling it on both?
also my zombies get 5000 stale too
totally vanilla non-spawned
seems a bit overeager
what did you do differently?
nothing
that's not true, otherwise it wouldn't behave differently
there's something that's changing
(either on the server, or otherwise)
getSafehouseList() static method throws exception.. I guess its not implemented yet?
it has been erratic
im gonna try running it on both sides
better yet
i was running it on server side
it was working now it isnt
is the code in shared?
but i know what i changed
it has to be client side i guess
if i run it once client side
and then server side it works for a while
then stops working
so it has to be client side
what stops working?
setting the path
what are you using to set the path?
local ZedList = player:getCell():getZombieList()
local x,y,z = player:getX(), player:getY() , player:getZ();
local zedcount = 0
for i=0, ZedList:size()-1 do
local zombie = ZedList:get(i);
if zombie then
zedcount = zedcount +1
if zedcount < 3 then
zombie:pathToLocationF(x, y ,z);
end
end
end
player:Say(tostring(zedcount))
i dont use it but it's used in vanilla code so it's got to be implemented
it has to run client side
client side never fails
server side is erratic
sometimes it works sometimes it doesnt
so the problem is solved?
so ... heres the solution
pathtolocationf has to be used client side
so far it seems its solved
Hi nippy
Ill check if its uses dervied from other class, but static one is kinda throwing exception as is.
SafeHouse:getSafehouseList()
yeah that one doesn't throw exception
server targets zombies does some stuff -> sends acommand over with the ID
static one is probably not linked to SafeHouse
clientside uses zombieList from cell to match ID
@pulsar heath just looked. there's a ton of code that runs on updates that also uses pathToLocation, so what's happening is the passive behavior is triggering after certain delays
local function EveryOneMinute()
local player = getPlayer();
local building = player:getBuilding();
if (getWorld():getGameMode() == "Multiplayer") then
local safehouses = SafeHouse:getSafehouseList()
local square = player:getCurrentSquare()
for i, o in ipairs(safehouses) do
local isInLocation = O:containsLocation(square:getX(), square:getY());
if isInLocation then
apply();
return
end
end
end
...
Works it seems
the first few I noticed were the group behavior (which could trigger on any group of zombies large enough) and the other is that the idle state actually utilizes it as well
anything i run on the lua window is client side
and its working
out of 3 zombies around i set it to call 2
and it only calls the first 2
i do it server side... its erratic
that's excellent, right?
so i guess ill put this bit of code on the client side π
yeah no you should be doing it clientside, the packets update the zombies automatically
the spawning needs to happen on the server though
yeah
you may want to check for ownership before you call it though - it probably won't work on zombies that belong to another connection
so I figured out what was cusing my desync
ill just call the pathing after spawning the zombies on the serfer side
setting a zombies health causes it to blip out of reality
that will not be a problem... is to use with spawned zombies
I'm also getting a ton of 5000s off screen
or at least i think it will not be a problem π
aaaaaaaah
setting health does it for sure
but interacting with the zombies a bit farther out seems to do it too
right, but ownership can still be repossessed - if one of the zombies targets another player, for example, it'll reassign ownership to that player's connection. so then your move commands won't work. ownership could also be reassigned if the first player leaves the area
So if you move to fast the unloaded cells are getting bordered with cones.. Funny
yeah cones used to be a common sight back before the network logic was updated
well if the createhordefromto() worked
i wouldnt have that problem
elseif instanceof(targetHostile, "IsoZombie") then
--Zombies receive damage directly because they don't have body parts or clothing protection
damage = damage*3
targetHostile:knockDown(true)
end
targetHostile:addHole(clothingBP)
targetHostile:addBlood(clothingBP, true, true, true)
targetHostile:setHealth(targetHostile:getHealth()-(damage/100))
--splatter a few times
local splatIterations = ZombRand(1,3)
for _=1, splatIterations do
targetHostile:splatBloodFloor()
end
other than the setHealth something else in here is causing stale 5000
the ones that get knocked down near me don't dissapear π€
you still would, actually
but maybe it's an offscreen thing
well im not messing around the zombies health and the stale 5000 happens periodicly
I'm assuming the 5000 is occuring cause of authOwner or something else getting caught
it happens on vanilla hosted server like once a 10 seconds
yes the stale check is really really sensitive
like im not even doing anything to server and i get spammed with stale sometimes
im running mostly vanilla... only have AUD and my integration mod... plus EHE since i use it in my mod
plus the cheat menu for the lua window
Im wondering if it has to do with the zombie being unloaded?
would explain why there's so many during helicopter events
I once seen cells having Destroy() function. I had to try.
the stale is probably a sync issue... but why would it happen when only 1 client is in the server?
I just got like 40+ stales and I didn't even do anything yet . _ .
it's not a sync issue, it happens when the zombies are unloaded
specially when im running a local host
and why are the zombies unloaded?
im next to them and they just PUFF
if you figure stuff out, please write it down somewhere for others
it would make sense if i was outside the range necessary to keep them in the world
In fact I seen zombies getting cleaned up right in front of players on active servers. Probably due to stale too.
could the stale thing be misleading then? and just occuring over time and have nothing to do with the vanishing zombies?
do a quick test for me: try locking your FPS to 60
been there done that
for this issue?
okay in that case - try uncapping it
and turning off VSync
and then restart and test again
dont see the point but ill do what youre asking
it has to do with the conditional that's triggered there
just give it a shot, see if it occurs any less/more frequently
the stale message, that is
I took off knockdown and setHealth and I'm not getting nearly as many
there a way to remove those vanilla 3 options from an item you add?
{
/****************************** OTHERS ******************************/
item TatteredPaper
{
DisplayCategory = Literature,
Weight = 0.1,
Type = Literature,
DisplayName = Tattered Paper,
Icon = TatteredPaper,
}
}```
Why? that's standard for almost every item
its a paper you can hold it in your hands π
hmm ye okay makes sense
what about the read option
I want to add my own "read" option which does sth different
don't make it literature - use Normal type
oh the type affects the options--not just a category thing?
type and category aren't really related
oh wait I misread something from earlier
@pulsar heath we were wrong, it's still definitely authOwner, even after doing the tests you did
the update frequency isn't the issue. ownership is getting reassigned, or returning null for some other reason. either that, or you're no longer bClient, but I doubt that one.
I'd guess that your debug cheats are interfering with one of those two fields.
there's a junk category
I seeee, that makes sense, especially that there already is "DisplayCategory"
I wonder if the manager is keeping the zombie remote until it's interacted with - and then suddenly it gets told it has an owner - and it's flipping back and forth
could three ifs in a single tick read different values if the value is changing?
it's possible, but it'd most definitely clear the owner before it re-remotes the zombie
or I guess it would just need 1 bad tick
if it's changing on-tick, yes. depends on the sequence order
but none of the zombies that you see are vanishing
see above
yes, but not in the way I thought
so those might be unloading around you?
if you're in ghost/invisible/god mode or whatever, zombies are probably not getting ownership
i can just disable the debug tools
yeah I'd do that
if thats the issue
make sure you aren't spotted by them though
stealthy time
(also you probably will still own the zombies, at least initially, but check to see if they despawn
)
it can't happen in SP
oh okay, yeah.
it uses a different function for that - and it's probably along similar logic to what I just described. so if you're in ghost mode, that's going to happen
goes from the upright model
to the dead sprite
lying on the floor
well not a big issue atm anyway
and at least i got the pathing sorted out
it has to be client side... but makes sense since the zombies are handled by the client
yup. also, you should really consider checking for the owner like i mentioned earlier - otherwise you're going to run into issues in MP
ill just send a servercommand to all clients
to set the pathing to the target
you don't wanna do that lol
you'll be sending a command to clients for which that zombie doesn't even exist
i can limit it to the clients in the cell then
lol and they said we spammed about debug tools
the zombie won't be loaded by cell, but by chunk
cells don't get loaded all at once, there's a chunk spread based on zoom level
you can just check if the zombie is nil first
afaik 'cells' don't exist at all outside of save formats and the map editor
and maybe some of the meta stuff
hence the term 'outside of'!
they're not really a part of the world, which is something that confuses a lot of people
@finite radish so instead of getting a list of the zombies by cell would it be better to get it from the chunks around the chunck where the player is?
the IsoCell object refers to the loaded area
or even if i get it by cell it only returns the ones inside the loaded chunks?
what about mp loading cell cones? or is it for chunks?
it's still a part of the save format so i imagine it still loads by them
but a square doesn't have a concept of a cell, it's not a part of the runtime world
.... my brain
that's already what using getCell() does
so im fine using this local ZedList = source:getCell():getZombieList()
when using the IsoCell object just forget about map cells, there's not really any relation
is there anyway to get the xy of the limits of the loaded cell or whatever?
so i know the max distance i can spawn a zombie?
oof, do you know what all save files are for?
you're thinking of map chunks
there's some getMaxX() getMinX() stuff but i remember having difficulty using them
they use the term chunks for two different things in the java
cells are always 300x300
i don't remember exactly what the problem was, back then i thought IsoCell was a map cell so i was using it wrong anyway and that might have been the problem
somebody should write what all the different save files are for, and which delete function is relevant to that.
And in what programming language do they usually write mods for Project Zomboid?
lua
They usually do TS
Ok just wanted to study, there is no time.
definitely lua
?
Who use?
the only one i know that uses TS is jab
and it translates the TS to lua
so... lua?
It's just that I usually program in school on... PascalΓ© π₯²
they = Illuminati or "?"
there's a couple ts developers but it is an absolute lie to say it's the one usually used
pascal? that was obsolete when i was a student ages ago... they still teach that at schools?
i guess is a easy starting language...
but even so...
so now i have to learn about chunks...
depends which parts you want to mod, for coding this explains a few things
https://github.com/FWolfe/Zomboid-Modding-Guide/blob/master/api/README.md
We did only one thing in computer science classes - played cs 1.6 or surfing WEB :/
im older than that
I took an intro to programming course in college... the whole course was learning how to write in binary...
we played quake π
as in by hand
https://pzwiki.net/wiki/Modding
@drifting ore
because... sure that's important
binary?
what do they think this accomplishes??
But not only lua are used in Project Zomboid?
the closest i got to that was assembly
no you don't understand
Here not not finished (but soon will be) guide about pz modding (https://pzwiki.net/wiki/User:Aiteron/ru)
the teacher gave us a bunch of binary and we had to decode it by hand in class
to get messages
on paper
hmm programming is a popular course these days... how can we teach this without hiring any new staff...
Makes sense, if you can't handle that simple stuff you shouldn't be coding.
Oh, I did same with internet packagesπ
we had a troll highschool teacher who wanted us to write our names in binary
my 1st year in TLP ( coding classes ) we never even touched a pc
all the code was written by hand in pseudo language
to learn the basics... programming logic
seems pointless
It's not that you need to be able to convert binary by hand, it's about knowing how the computers manipulate data in a fundmental fashion where you actually understand the matter.
Lots of courses do that sort of stuff at the filter levels.
Surely that's a 1-2 lesson topic
I had to learn about the metric system all over again in multiple classes.
yeah we started out 50 students, after 2 months only around 20 remained
but that was decades ago...
TIS-100 is an open-ended programming game by Zachtronics, the creators of SpaceChem and Infinifactory, in which you rewrite corrupted code segments to repair the TIS-100 and unlock its secrets. Itβs the assembly language programming game you never asked for!The Tessellated Intelligence Systems TIS-100 is a massively parallel computer architectur...
$6.99
2886
..........
If you know how to convert binary by hand, then you probably also know what hexadecimal is and understand what a GUID exactly is, and understand why it's being used, when you see one, etc. Fundamental concepts.
Oh, I'm afraid to imagine how much is left now ... I hope this is an integer?
im a dinossaur π
and after all the time spent at Uni, etc
Is there a more efficient way to check the what the item being right clicked in inventory aside from "item:getName" and "item:getFullName"? I don't want to use those since the item's name is bound to change
hexadecimal was I guess next course up π
Yeah, well nowadays since the beginning of time everyone wants to build a time machine before learning how to hello world, so yeah, people need to be force fed concepts like binary IMO.
not for four months though...
i ended up with a job that has nothing to do with what i studied for π
it was a general studies course, I went to school for art, and I needed to take a technology course
it's a bit deeper than that, if you start getting into allocation and bitwise operations and stuff. it's less important outside embedded tho
you need to be able to count to 1024 in binary using your fingers.
Yeah, you get it.
we did not go deeper than just what amounted to a cypher
i can say im your oposite then... i went in for tech and ended up working in art
the topic was even introduced talking about cyphers which made me worried
this sounds like a crime
"we have chatgpt we don't need no binary" - "some guy"
I know that computers don't actually multiply just add real fast brrt brrt 1+1+1
that's as deep as we went
I rather it have been a history course on coding
https://steamcommunity.com/sharedfiles/filedetails/?id=2927605405
Gotta be first mod, man.
Found an issue when been playing with server admins wiping data to restore missing objects like military crates with weapons and etc due to lack of loot on loot regen. Since I was around, decided "why not" and make mod that stops players from picking/disassembling them based on sprite names.
Thanks to @fast galleon for some ideas of implementation.
My least favorite class ever in college was cryptography. The final was 2 questions, and we had 4 hours. Had to encode 2 strings using diffie-hellman....by hand....
seems like an odd thing to offer in college tbh
01101000 01110100 01110100 01110000 01110011 00111010 00101111 00101111 01110011 01101000 01101111 01110010 01110100 01110101 01110010 01101100 00101110 01100001 01110100 00101111 01100010 01100011 01000100 01010111 01011001
it was for cybersec
ah
is that a link?!
The quick brown π¦ jumps over 13 lazy πΆ.
Is that some template binary from some classes?
im sure 01101000 is h
link to v42?
r u machine?
no just have some things memorized
let me grab a pen
im old but not that old @tame mulch
and i dont like the 80's that much
old but gold
I am old at heart 
im old at body young at spirit
im confused, is 30 y.o. not enough to understand the ref? 
man at least you got to understand you got rick&rolled
same i went to school for network administration and hated it and now i work for investment firm. ugh network admin... love following macro economics though. coding is addicting even as a nooby also
i can't imagine how anyone would like being a network admin. yuck... lol
I was ISP Engineer back in the day.
@tame mulch this one is better
01101000 01110100 01110100 01110000 01110011 00111010 00101111 00101111 01100010 01101001 01110100 00101110 01101100 01111001 00101111 00110011 01011001 01101110 01010000 01001001 01100101 01010001
I can only say one thing so far, every piece and bit you get from any sort of engineering comes at handy.
V org guvf vf whfg n evpxebyy, V'z abg snyyvat sbe lbhe fubegrarq yvaxf.
yea you are right. i learned a lot about stuff and things in general lol
im an engineer at heart though. always have done everything myself
Its like I had a bunch of moments where I was "oh, I did that 10 years ago once"
i worked as an engineer in an area im not proud but the money was awesome
but got sick of it after 2 years
Its just you are not obliged to go to deep until required, but like having a TCP/IP stack knowledge by being a game designer can help you understand why your game design will probably kill the whole networking.
boring as hell
Its an example I got so many times. I known guys who coded in Java for enterprise levels not having any ideas how to setup NAT on their routers.
Guy was responsible for net stack there..
you have computer engineers who dont even know how to install an OS in their own machines
π
The worst part is not even not having specific knowledge, the worst part is that people doesn't seem to know HOW TO READ MANUALS either.
What?
its a joke
oh ok I was not sure
its the same with a mod you post on steam
E - Evolution
"RTX for zomboid when ?!?!?!" π
Aren't you guys adding new lighting system in 42?
lol pz with raytracing ahaha
π
the game technically uses raytracing, just not the kind you mean lol
after you upload your mod youll see what i mean with that joke
you may explain very well how to use the mod
god rtx lighting would be such a waste but look awesome
but ppl will still ask dumb questions that are on the description
Oh that part.. Oh man not the first day into modding, I get you.
I modded RVEngine, RAGE Engine, now doing Unreal Engine for active games.
i only modded for wow ages ago
I know how people get into "I can't read letters"
and it was basic ui stuff
pz is the first game i actually go through the trouble of making an effort
Feels like some people chose "Illiterate" trait when they were born to get more perks
I had people who called themselves devs (just server owners) literally asking me how to run a function.
ok done with moving the pathing to the client side
I'm modded only wow 1.12 (vanilla), not sure if on new versions smth changed to really better but I'm sure it's was worst than pz..
people took illiterate were confused why they couldnt use my recovery journal mod
π€
what wow is modded with?

in vanilla it was... it was improved when tbc came out
their characters were self-inserts
lol?!
so you want to read and write but you cant read and write
much improved?

the community got bigger and there was more info moving around
b4 that... it was like running in the dark
the api itself was still crap
if you can call it an api
yeah 
i remember the days before steam workshop. modding scene was dead af for the most part. we had Bedford for maps and that was about it, and for mods I think there was like an archery mod and some very minor crafting stuff
disgusting, almost as doing it in plain C
its not about language, its about trying to build UI in C
i built ui in pascal
but building a UI in a markup language is exactly what you'd want to do, so idk what you meant by that lol
( paint the screen blue )
Exactly what you want to do is having a widget constructor written in C++
π
Unreal is the best example of how to make UI on C-based engine
so interesting how they decided to create ui via xml, like.. they worked by this way too.. how they are still alive
Same here btw, not sure how popular that is, but I seen "Simple UI API" mod which is sort of a widget constructor
i've tried it
its good enough
simplifies a lot of stuff
but i ended up not using it since it was easier to do what i wanted from scratch
me too, it's fine for simple things but no way for complex uis
yeah, to make some windows and stuff
without much effort its more than enough
for some reason is called simple ui
it helped understand a bit more of how UI works in pz
so its a good mod and a good tool to learn the basics
simple ui for simple things 
talking about ui i should finish my animation mod
its gonna be a submod of the integration mod
@jaunty marten whats your workshop link?
i added everyone i could remember that helped me directly when i updated the stats mod and im missing only your workshop link
at some point wanted to create own ui lib coz to do some easy things with common pz ui need fuck ur brain
there's a few people working on UI stuff
hopefully if it's available in the community framework it can be kept upto date and have the benefit of alot of hands making quick work
don't remember ur stats mod π
but if I really helped u: https://steamcommunity.com/profiles/76561198080577466/myworkshopfiles/?appid=108600
thanks fam π
did you update it?
hm?
it's automatically set to update every friday at 11:59 my time
except yesterday cause I set it to the 5th day instead of 6th
so 2 free updates cause I'm such a nice guy
why not saturday 00:00..
that way at 00:00 he can say he updated it yesterday... a day ago so dont complain about being late
π
π
weekend is for hurried patches
also the github updates if you push to hotfix branch
I'm a perfectionist, now u have to change it or I'll kill u while you sleep..
submit a PR

I'm on break at work. Spent the morning coding a hurricane.
but yes, the mod is setup to be worked on atm - I don't care if no one else jumps on board, it's just a nice proof of concept at this point
but the debug tools are functional
@red tiger still in zombie mode?
Coffee zombie
i dont have enough know how to add anything useful to the project
I avoided a meeting
oh shit... its friday?
My excuse: I'm in my flow.
i have to work tonight...
it's a 3 pronged project atm (still debating if it should be dropped to 2 prong)
debugtools, frameworks, patch -- anything can be added to it
your twitch stuff would be in the framework category if you were so inclined
then anyone could work on it
well im working on a base to do custom animations in game
but dont see many ppl wanting to use that
4 cups of coffee, 2 death wish coffee.
however - my initial scope was to keep features close to vanilla
its a bit more fluid that it wasm but its still a bit janky
so idk if twitch integration would fit that
well if you want to "merge" the general integration with the EHE integration
i see no problems with that
i can provide you with the twitch lib api
Maybe once I solve this stale issue
still need to add a lot stuff to the lib...
and start generating the tokens in the app
the goal wasnt to add new things to the game but to fix issues (patches) and provide better more extensible code in frameworks
but it was a rushed release so... for security reasons i didnt enable the option to do so
I'd say if you could design it so the user can supply a function name and args - that'd be most user friendly for other mods
since im only using simple websocket connections to twitch
@red tiger just checked one of ur mod. r u always minimize ur code? never saw it in pz mods 
you can convert a string to lua table, and unpack it into args
thats one of the objectives
that was my only suggestion π
to make a standard pseudo "json" string that can be dynamic
other than that it looks great
and allow the user to create it inside the app
so that the app can be used with other mods
im not sure providing twitch integration fits since it relies on third part features
the only third party features it depends on its twitch itself
Yeah I don't think it fits CM's scope
Which one?
but yeah, cm
we were discussing about EHE's use of his API
not everyone streams
but ehe, 99% of the streamers use it
CMP(atch)
modloader, at least there code is minimized
so i have to refactor?
minimized code?
Yeah. Only that one is. It's also not 100% of the code.
all code in one line
It's a 3-stage loader.
for like lua if not x then return end only right... right?
It's so local server Lua code is sent to the client
"compressing"=
for example var names get reduced to as little as possible
The loader itself is loaded to encourage customized security
It's all done anonymously
next level is to find obfuscated code on pz workshop 
so it acts as a "middleman"?
i actually did a proof of concept of exactly that a while ago
has the exact same mechanism as my server config loader
I used it in a practical way back in 2016
hmmm, im starting to get more interested in your project
I plan to upload it to a gist.
way it works is send the code as a string when clients connect then the client loadstrings it
The loader loads itself to prevent file override
so im guessing that would allow to get data and send data over a network and feed it into the lua code in "real time"?
or has the chance of being able to allow that?
ok i jsut went from 50/50 to 99.9%
you just sendServerCommand the code over to clients
something like that would have saved me a lot of work and code
Security was the focus of my solution
it would have been so much easier to get the data from twitch and send it back to where it has to go
only issue with it is creating modules
Heheh
how so?
i tried acessing the modules table but didnt have any luck
I wrote a modules framework. It's on my GitHub
loadstringing received code.... that's pretty genius
the host could have local files processed that way
thats pretty handy
security in pz.. sounds funny 
PipeWrench loadstrings to eliminate requires for globals when loading as a mod.
I wonder if the checksum could be bypassed to just feed the lua that the host has
so instead of having to write a wrapper for the twitch api, another wrapper to the discord api and steam api
like im doing
indeed it can
i could just access the web api directly and feed it into lua
because the files just dont exist
making it possible to have server only code
i didnt test what happens if you create items through lua tho
I'll upload my solution and post it here soon.
might cause world dictionary issues
i've seen script consistency kicks before (actually misread what you said, this isn't relevant π )
please do so, i want to tinker with it π
better to post soon web engine 
i know it might turn into a security issue, but... at least socket connectivity would make my life so much easier when modding for pz
there's some cheat checks done via client's comparing code to the server's
I think recipes do that
tbh having to enable the mod on on-going saves is not intuitive
but if you add a new mod and the game was previous to adding it...
Probably could be clearer
and i should be more specific i guess
welcome to human civilization
gonna change it
you will write it perfect and it's still going to happen π
yeah
and add in bold "if you want to use this mod with an existing save, you have to enable it on that save as well"
I added that to my mods
Warning: If you want to use this mod with an existing save, you need to enable the mod in that save as well, or it will not work until you do so.
enable it... my english is getting better and better...
include "under the [more] options when loading the save"
cause you're going to get "WHERE?"
yeah....
just use chatgpt:
improve grammar and spelling: text
improve writing: text
I'm always use it 
Ok. Looking for my code on my old laptop.
anyone familiar with the specific way to remove context menu completely?
Content of recovery journal when you have trait βillitirateβ
i just want nothing to appear when right click. i am using a method to remove option from context but i prefer removing entire menu
couldnt get :setVisible(false) to work correctlyt
I should let illiterate people use crayons for a 10% return
I gets only a small piece of my skills, seems ur mod bugged, please update it

loool

after second death 10% of 10% 
- starting levels don't get stored ever
- bonus XP you get from those starting levels can be toggled
- TV/VHS can also be toggled
"I toggled on bonus XP why can't I keep my starting levels"
. _ .
im still amazed that someone asks me if he can use a UI mod even if he doesnt stream
its an UI...
it shows on the screen... so ... yeah...
you should toss in a couple if not isClient()
sorry but what's UI?

