Jump to content

Aiteron

Member
  • Posts

    35
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Aiteron reacted to PoshRocketeer in [Dedicateds and Mods] - A Mod Launcher before game startup to circumvent Steam's automatic mod updates   
    Unfortunately, this isn't a problem that Indie Stone can do anything about. Mods automatically update in the background, or if you have automatic downloads disabled it will force it before you can open the game. This would also mean that Steam would force mods to update when opening a launcher, as Steam won't let you open game launchers until any downloads for the game are completed. As far as I know, there is no way for Indie Stone to allow for selecting older versions of mods either, unless the mod author specifically uploads an old version.
  2. Pie
    Aiteron got a reaction from DaNiG in Whisper, conversation, scream. Player voice   
  3. Pie
    Aiteron got a reaction from zikhayovich in Whisper, conversation, scream. Player voice   
  4. Spiffo
    Aiteron reacted to zikhayovich in Whisper, conversation, scream. Player voice   
    On our server it happens too often that people interrupted over each other, due to the lack of voice channel settings.  I would like to ask you to add the ability to modify the character’s voice.  Example: whispering - 1 meter, negotiations - 5 meters, shouting - 30 meters.  This would simplify communication, make it possible to have quiet conversations to which zombies do not respond, and of course introduce some logic.
  5. Spiffo
    Aiteron got a reaction from JDAY in [41.73 unstable latest patch] [Multiplayer] [Clicking the mod list] and [Set Weight bug]   
    Thanks! Mod list fixed, will be in next stable patches. (I think in 41.74 or 41.75)
    About weight - need disable god mode. If god mode ON - weight always 80
  6. Like
    Aiteron reacted to JDAY in [41.73 unstable latest patch] [Multiplayer] [Clicking the mod list] and [Set Weight bug]   
    41.73 latest unstable patch reporting 2 concerns 1. No mod list? • Multiplayer • Hosted • I got mods but I cant see the mod list when I click on it from the pause menu  • Old save • Reproduction steps:  
    2. Set Weight bugged?
    Multiplayer Hosted Got mods and this is an old save Reproduction Steps:   
  7. Like
    Aiteron got a reaction from Destroyer 3492 in Multiplayer - Accept server rules before entry   
    Why not set it after player spawn? And if player not accept - auto kick player?
  8. Like
    Aiteron got a reaction from Destroyer 3492 in [41.71][Admin][Delete Item]   
    Confirmed. WIll be fixed in next patch
  9. Like
    Aiteron reacted to Panduh in Creating a Walkman for True Music?   
    I've been trying to figure this out for a few days now...
     
    I want to create an Add-on for the True_Music mod that adds a Walkman Cassette Player.
    The current Boombox that is included is wayyy too clunky, and takes up a Primary or Secondary slot, hindering your weapons while listening to music down to single handed weapons.
    Is it possible to create an item similar to the boombox, but is attached to one of the Belt slots and can still be accessed? 
     
    Basically I want to create an item with the properties of True_Music's Boombox, change it to look like a Walkman, and allow the player to listen to music while it's attached to the Belt instead of the Primary or Secondary slot so I can whack Zombies with a Baseball Bat while listening to Led Zeppelin.
     
    Any help is appreciated! Thank you!

  10. Like
    Aiteron reacted to LeoIvanov in Endgame activity   
    The ultimate problem with the end game is the fact that people get to it.
     
    No matter how much activities you add in the long run, sooner or later you'll get bored of them and will want more. 
  11. Like
    Aiteron got a reaction from turkler in Add possibility to add parts to vehiclescript dynamically like attachment + Access to rotate and offset model of part   
    Add possibility to add parts to vehiclescript dynamically like attachment + Access to rotate and offset model of part (now you can only change visible of model)
  12. Like
    Aiteron got a reaction from Tchernobill in Please remove Vector2 lua table from game   
    It's not used and override default java vector2. So it's not possible to get ForwardDirection and etc

  13. Like
    Aiteron reacted to Sardes in [41.51] New checks isLocalPlayer and NPC   
    Hi.
    41.51 update has bringed a lot of isLocalPlayer() checks for various methods. Most notable for me is calculateWalkSpeed() in IsoGameCharacter.class and DamageFromWeapon() in BodyDamage.class. After that all NPC mods are broken, because NPC cant pass isLocalPlayer() check. I have tried to add NPC as LocalPLayer using setLocalPlayer method and using NPC number as index, but it still cant pass isLocalPlayer() check because index must be lover than numPlayers variable, which is equal to 1 for single player and I cant find any way to increase it. So, thought I understand that you don't have to support mods, but NPC mods are great addition for PZ, so can you advise me, how to increase numPlayers  variable, or may be update new isLocalPlayer() checks somehow?
     
  14. Spiffo
    Aiteron reacted to s_f in [utility mod]ModHelper(wip)   
    Basically, I wanted to try modding.
    But I wanted to keep my sanity as well.
    So as a way of digesting what I have learnt (PZ and lua), as well as a way of paving the possibility of actually creating/extending a content mod (I am very interested in NPC related ones btw), I've started to put together a "library" of "building blocks" of sort initially for my own use.
     
    But it was slow, especially when I am stopped by many points which cannot continue until somebody can help me (e.g. in forums).
    So I thought of maybe sharing my current work and idea, with some goals in mind
     
    1) See if there are people interested in collaborating on this together.  Can hasten the development so that we can get to the interesting stuff better. Ideally, this can be released to community maintenance (if it is really not a piece of sh!t, that is).
    2) potentially discover some good practices of structuring mods which can maybe give more opportunity to integrate without issues.  The easiest way is the try to put a common piece of "gear" in them.
    3) potentially provide some ready-made utilities to modders who needed them without having to write/search for  them ourselves, in a uniform style/convention.  I admit. I'm lazy. That motivates me
     
     
    Currently, the main "building blocks" I have working are:
     
    1) Memos
    Basically an abstraction away from files that allows the user to read/write data in strings (or array of strings) or data objects (tables with simple data, nested tables ok but no cycles) persistently (currently it is implemented as files, but can be swapped with other serialization methods).  Internally, objects are stored as JSON, which may be easier to use in some contexts.  Variants of these corresponds with the file operators game engine provides, namely one specific to Mod folder and one for the user's Zomboid folder.  I'm still working on one that is specific to a "world" (savegame), so that custom add-ons data to save-game can be easily added by mods.
     
    2) Event
    A simple implementation for publish-subscribe pattern.  Meant to construct more complex subsystem than being used directly though.
    It is also used to implement a component EventManager in the mod which provides an easy way for mods to publish custom events and potentially be subscribed by other mods so that they can potentially collaborate (without having to see/touch each other's code).  Can also be used to transform native game events into custom events (e.g. say a "multitick" event that callsback every N ticks), or to breakdown a single event to provide more fine-grained control, e.g. OnGameBoot may be triggering for some mods in an unspecified order unless the mods explicitly list other mods as requirements.  The native event can perhaps be "broken down" into 3 sub events (OnBootImmediate, OnBoot, OnBootDelayed) which will be invoked in order, so that mods can specify at least which category it prefers and have the EventManager order the callbacks instead.
     
    3) Predicate
    Helper classes to create predicates that can make some functions more general (e.g. pass in a different predicate to filter the results differently in the same function).  The ideal case is to merge similar functions (with just a few lines difference in code) into the one function whose behavior can switched easily using predicates.
     
    4) LootTable
    Simple way to help procedural generation of stuff (not necessarily just "loot").  Currently supports selection by weight (items with higher weight has proportionately larger range of being selected) and uniform selection (all items have equal chance).  Say goodbye to having to insert many copies of items into a "loot list" just to make something appear more often.
     
    5) List
    Patches and Extends the in-game LuaList (with backup implementation to work outside PZ).  Potentially more convenient alternative (wrapper) for the native lua table.
     
    6) ItemWrapper
    A wrapper around the in-game object for item definition ( returned by getScriptManager():FindItem()/:getAllItems() ) that provides additional functions non-intrusively.
    e.g.
    - getAmmoInfo() - returns additional info if item is a valid ammo. contain references to all relevant weapons, magazines
    - getAmmoMagazineInfo() - returns additional info if item is a valid ammo magazine. contain references to ammo used and all relevant weapons
    - getAmmoWeaponInfo() - returns additional info if item is a valid weapon that uses ammo. contain references to ammo/magazine used
    - getPackages() - returns array of records which tells what "packages/boxes" items can be unpacked into this kind of item.  from recipes.
     
    Others are still in the work (or stalled until I get help...)  See under doc subfolder for more info.
     
    EDIT:
    - updated to 1,2,0
     
    ModHelper_1_2_0.zip
  15. Spiffo
    Aiteron reacted to Sylarb91 in Car suggestions   
    Build 41 IWBUMS. Currently you can set cruise control speed with SHIFT + W/S, starting from 0, with increments of 5 and it stays set until the game is reloaded, then it starts again from 0. I was thinking about setting the cruise control speed to the current speed using SHIFT + W/S, or by pressing SHIFT + SPACEBAR. It happens that I crashed many times in narrow places while I was trying to set my car's speed from road speed (45mph) to off-road speed (15mph) and just spamming SHIFT + S.

    Also... is there a way I can change the MPH to KPH?
     
    And the 3rd thing... Please. PLEASE make the RPM meter start from 0 instead of 1. It's been driving me crazy since build 39, after I stepped in the first car.

    Thank you.
  16. Spiffo
    Aiteron got a reaction from Faalagorn in NullPointerException in vehicle story   
    ERROR: General     , 1610395846035> ExceptionLogger.logException> Exception thrown java.lang.NullPointerException at RVSTrailerCrash.randomizeVehicleStory line:69.
    ERROR: General     , 1610395846036> DebugLogStream.printException> Stack trace:
    java.lang.NullPointerException
        at zombie.randomizedWorld.randomizedVehicleStory.RVSTrailerCrash.randomizeVehicleStory(RVSTrailerCrash.java:69)
        at zombie.randomizedWorld.randomizedVehicleStory.RandomizedVehicleStoryBase.doRandomStory(RandomizedVehicleStoryBase.java:83)
        at zombie.iso.IsoChunk.addRandomCarCrash(IsoChunk.java:1375)
        at zombie.iso.IsoChunk.AddVehicles(IsoChunk.java:1252)
        at zombie.iso.IsoChunk.doLoadGridsquare(IsoChunk.java:2804)
        at zombie.iso.IsoChunkMap.update(IsoChunkMap.java:197)
        at zombie.iso.IsoCell.updateInternal(IsoCell.java:5626)
        at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
        at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
        at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
        at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
        at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
        at zombie.util.Lambda.capture(Lambda.java:130)
        at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
        at zombie.iso.IsoCell.update(IsoCell.java:5585)
        at zombie.iso.IsoWorld.updateInternal(IsoWorld.java:3176)
        at zombie.util.lambda.Invokers$Params1$CallbackStackItem.run(Invokers.java:37)
        at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
        at zombie.core.profiling.AbstractPerformanceProfileProbe.lambda$invokeAndMeasure$0(AbstractPerformanceProfileProbe.java:83)
        at zombie.util.lambda.Stacks$Params3$CallbackStackItem.invoke(Stacks.java:230)
        at zombie.util.lambda.Stacks$GenericStack.invokeAndRelease(Stacks.java:26)
        at zombie.util.Lambda.capture(Lambda.java:130)
        at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:81)
        at zombie.iso.IsoWorld.update(IsoWorld.java:3102)
        at zombie.gameStates.IngameState.updateInternal(IngameState.java:1593)
        at zombie.gameStates.IngameState.update(IngameState.java:1299)
        at zombie.gameStates.GameStateMachine.update(GameStateMachine.java:101)
        at zombie.GameWindow.logic(GameWindow.java:282)
        at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
        at zombie.GameWindow.frameStep(GameWindow.java:721)
        at zombie.GameWindow.run_ez(GameWindow.java:637)
        at zombie.GameWindow.mainThread(GameWindow.java:464)
        at java.lang.Thread.run(Thread.java:745)
  17. Like
    Aiteron got a reaction from TrailerParkThor in Inventory rework   
    Good idea, but a lot of work. If do this like modder, it's like month nonstop work
  18. Like
    Aiteron reacted to Batsphinx in IWBUMS 41.47 released   
    41.47 changelist
     
    NEW
     
    - Added camo baseball cap.
    - Added urban camo shorts.
    - Tweaked attachedWeaponDefinitions so it can handle weapons for custom outfit (ensure police spawn with more guns/nightstick, bandits with weapons...)
    - HairOutfitDefinitions can also handle beard.
    - Added some new Zed Stories and improved some existing ones
    - Updated translations.

    MAP
     
    - Added driveways and parking lots to new buildings added to the current main map in 41.46 (these weren't mentioned in the changelog)
    - Fixed incorrect driveways in Riverside gated community and a few other areas

    BALANCE
     
    - Metalworking requirement when repairing Trunk/Hood to lvl 1
    - Can no longer prepare beverage with only sugar
    - Sugar/coffee no longer a drainable item (reverted from previous patch)
    - Can now place antique oven even at 0 carpentry skill.

    MODDING / DEV
     
    - Don't clear the list of attachments in a "model" script definition when the same model was already defined.
     Mods, such as G.E.A.R. etc,  were relying on this to add attachments to FemaleBody and MaleBody. These should work again now.
    - Avoid calling File.exists() on the main thread when loading textures from files that we know exist.
     There are still a lot of File.exists() calls for texture files that don't exist, such as WItem textures.
    - Added ISPathFindAction.pathToNearest() which will find the shortest path to one of multiple possible target locations.
    - Added Tags=Write to items that can write in journals and notebooks
    - Added debug code to check for outfits having multiple conflicting bags.
    - Added BodyLocation.setMultiItem() and isMultiItem() methods to specify whether multiple items are allowed at the same location.
     This is instead of hard-coding this behavior for Blood, Wound and ZedDmg locations.
    - Fixed not checking BodyLocation.isExclusive() when dressing zombies, which could result in conflicting clothing items being worn.

    FIXES

    - Fixed splitscreen rendering issue with puddles and water for players 3 and 4.
    - Fixed un-stacking logs returning more ropes than was used in Stacking
    - Fixed the new fog lagging behind the camera movement and zoom level.
    - Fixed the wrong clothing-item XML file being used after enabling or disabling a mod, when the mod overrides a game's file.
    - Fixed HumanVisual exception with beards.
    - Fixed garage doors on the north edge of a square blocking vehicles.
    - Fixed an infinite loop after reloading a Lua file in the debugger.
    - Fixed some data not getting cleared after reloading Lua files (AttachedWeaponDefinitions and HairOutfitDefinitions).
    - Fixed some unnecessary allocations related to blood splatter.
    - Fixed splitscreen fog rendering.
    - Fixed the player not walking adjacent to burnt vehicles and trailers when displaying the mechanics ui.
    - Fixed fishing abundance being displayed as nan% sometimes.
    - Fixed the displayed Fishing Abundance not updating as the player moves around the map with the fishing ui open.
    - Fixed error in the above if the player moved far away from the original square that was clicked.
    - Fixed the 15-second pause before transferring 1000 cigarettes between containers. (Framerate still impacted however)
    - Fixed vehicle masks so that damage doesn't show as green (please report anything you see that still does!)
    - Fixed the radio van having random paint color showing where scratches are.
    - Fixed errors reading map_sand.bin preventing the game from loading.
    - Fixed missing options for Fanny Pack and other worn containers in the Move To submenu when using a controller.
    - Fixed not being able to write in journals and notebooks with blue and red pens.
    - Fixed missing glovebox on some vehicles when loading old saves.
    - Fixed GloveBox2.VehicleType being 1 instead of 2.
    - Fixed possible NullPointerException in AttachedWeaponDefinitions.
    - Fixed "Bandit" outfit possibly spawning with two bags.
    - Fixed being blocked at the climbing fence in the tutorial
    - Fixed fitness being enabled in tutorial
    - Fixed detroyed doors not checking tile properties and producing incorrect debris
    - Fixed zombie outfit system being able to spawn two items on the same body location
    - Fixed missing newline in Remove Patch tooltip.
  19. Like
    Aiteron got a reaction from Faalagorn in Radio text don't disappear   
    If turn on radio, wait until text show and turn off radio - text don't disappear.
  20. Spiffo
    Aiteron reacted to nasKo in IWBUMS 41.46 released   
    ( ͡° ͜ʖ ͡°)
  21. Spiffo
    Aiteron reacted to DresdenBBQ in Lag Fightin'   
    Towing is something I've been hoping for since the moment that vehicles dropped so, wow, holy shit this is not something I expected to come in the build 41 package! Hell yeah I'm glad it's getting official implementation, hat's off to you @Aiteron and the dev team!
  22. Like
    Aiteron got a reaction from Massi in Testing the idea of towing a vehicle   
    I decided to make a car towing mod. I have some results, but this is not a simple mod. 
     
    I changed the source code of the game (decompiled, modified, compiled) and wrote a mod for lua.
     
    Stopped at the current state of the mod. (There is no point in continuing if the developers do not add the necessary code for the mod to the game and decompilation does not perfectly restore the code, so the decompiled files crash the game (I think the deadlock occurs))
     
    I added the following code to the game source code:
    1. OnVehicleUpdate event - trigger when vehicle update
    2. Change vehicle position (like setDebugZ(float))
    public void setDebugXYZ(float x, float y, float z) { this.tempTransform.set(this.jniTransform); this.tempTransform.origin.x = x - WorldSimulation.instance.offsetX; this.tempTransform.origin.y = z ; this.tempTransform.origin.z = y - WorldSimulation.instance.offsetY; setWorldTransform(this.tempTransform); }  
    This is not real towing. I'm teleporting transport now.
    Joints are needed for real towing. Now, as I understand it, the developers use the modified Bullet engine, and there are no joints in engine java api now.
     
    What I want to achieve with this functionality:
    1. Towing a car with a correct turn and physics similar to realism (imitation)
    2. For towing you need a special device or a special car
    3. Towing affects the movement of the car. (Depending on the weight of the towed vehicle)
     
    What I've done:
     
     
     
    How can I submit a request to developers for the methods I need?
     
    Write what you think about the mod idea. If there are a lot of people interested, perhaps the developers will implement the required functionality.
     
  23. Like
    Aiteron reacted to Go4tBoy in Inventory rework   
    I Think that a tile based inventory system would be great for this game. like Escape from Tarkov, Day Z, and Resident Evil 4. (see attached photo for context)
     
    It could let clothing have inventory space rather than you just being able to hold 10 units of stuff. course I see that it would be tedious to swap around items from your pants to a new pair, etc. but I think the struggle of organizing your items as a zombie, or three, bang on your door; but being able to visualize how your stuff is placed in your pack would feel less unorganized than a drop down list.
     
    I'm not saying remove weight for a space system, but have both. it doesn't make sense to be able hold 250 potatoes in a backpack, but with the tile system you could have it only be able to stack 10 potatoes in a tile, thus you cant physically hold that many even if you have the strength to hold them. Same with other objects, like how does a rifle fit into a school backpack? I could see someone make a point that you could leave the top unzipped and leave it sticking out, which I think would be okay. 
     
    Personally I think an extension to the holster system like the current hotbar in b41. if a backpack had a holster on the side that you slide any gun or two handed weapon into. it could let you have two weapons at the ready and it wouldn't take up space in the backpack. this all could fit into the tailoring system as well. adding new pockets to pants for more space?
     
    This also has potential to give disorganized and organized traits New Life, maybe modifying how many of an item you can stack together or changing the size some items take up, or even making some storage have more space.
     
    I could go on but I don't want to make a unreadable text wall.

  24. Spiffo
    Aiteron reacted to Stripes'n'Stars in Minor improvements   
    1. Add a "random" button to character creation section that would randomize all player visual features such as name, skin color, hairstyle, and clothes
    2. Add next/previous buttons to hairstyles (could add them to clothes too) so if a player would want to see all the hairstyles they wouldn't have to open the drop down list every time they want to change it

     
     
     
    3. Add something to distinguish whenever the player is interacting with object in their inventory or a nearby container. Like here, I have two bandages in my inventory, and five on an nearby shelf. 
     
    4. Add a custom icon to the cardboard box container.

     
    5. Make it so player could distinguish just broken glass wall panels from these who have glass pieces removed. On this screenshot one has glass pieces intact and one has them removed. But both look exactly the same.

     
     
    6. Lower the beeping noise of that car that plays it when you move backwards. Lower it not as the range zombies hear, but as the volume that is played to the player.
     
    7. When I created my first character, I picked a "slow driver" debuff. Then I made a new character without that debuff, and first, I was astonished at how fast all cars actually are. BUT then quickly realized that "slow driver" is no that much of a debuff, as currently, when driving on a fast speed, you can barely see anything what is in front of you and have a VERY high chance to crush into something. Either simply increase the view you see around your car, or make it dynamic so faster you go, more further you can see.
  25. Like
    Aiteron reacted to tubetarakan in Complete Vehicle Modding Tutorial   
    Hello and welcome to my tutorial. It covers full workflow of vehicle creation for PZ. If you are a complete beginner in 3D modelling, you'll have to watch/read additional tutorials, I won't cover every aspect of model creation and 'where this button is located'.
    I divide vehicle creation in these stages:
    1) Modelling
    2) Wheels texture and modelling
    3) Texturing
    4) Packing files in folders
    5) Editing scripts and .lua
    6) In-game editing and tests
    7) Workshop publish
     
    STAGE 1 - MODELLING
    Today I am creating a 1960 Ford Falcon

     
    I prefer using blender as it is my everyday 3d modelling software. Now, find references for your vehicle and ideally it will be a blueprint/outline scheme, like this one:
     

     
    There are some tips in modelling for PZ:
    1) Do not care too much about topology and good shading. There is no actual shading in game, only windows have reflections. 
    2) Avoid n-gons or triangulate them before export
    3) DO NOT make edges to outline body panels/parts. All dividing of parts will be done with texture mask. You can do it in UVs if there will be a point for that.
    4) Place spindiel imitations in wheel wells to hide rear part of wheel models
    5) In the UVs  parts of body have to be straight-oriented without any non-90 degrees rotation, so pixels in texture will lay parallel with polygon flow.
    6) To avoid physics artifacts in game import model of one of vanilla game cars models to your scene and model in consistent scale. Or import mine, that is available in the end of topic.
     
     
    This is what I consider a well done model
     

     
    There is nothing special in UV unwrapping process, just remember to place the least amount of seams possible and keep island aligned. Here are the UVs of my model:
     

     
    I've unwrapped the model without applied mirror modifier, so now we will have to texture just one half of the car. I'll fix mirroring later.
     
     
     
     
    STAGE 2 - WHEELS
     
    There are many ways to make a wheel and texture it, but I'll show the most efficient one. Make the wheel's face with simple materials, but unwrap the 'road touching part' to flat surface, like this:
     

     
     
     Then place an orthographic camera facing the wheel, scale it to fit the whole wheel-dish. Place a ring with emission material to light the wheel. Switch your renderer to Cycles and go to camera view, now use a rendered shading mode to adjust materials and lights to your taste. 
     

     
     
    Set rendering resolution to something like 120x120-175-175 for best results
    Check the 'transparent' box in film settings to have alpha backround in texture:
     

    Now increase the sample count to something like 512-1024 and hit render. You will end up with a result of a ready-to-go wheel texture:
     

     
    The example file with scene for rendering and the model of this wheel you can download here: *google drive .blend file*
    Now make a lowpoly model of the wheel to use this texture on. I prefer using 18-24 edge circles for wheels. The unwrapping will be later, but eventually you'll end up with this:
     

     
    This method takes 10-15 minutes when you get used to it and gives a stunning and clear result.
     
     
    STAGE 3 - TEXTURING
     
    NOTE: I use a pretty complicated way of texturing and adding light to model. All rules of using textures the default way are covered in "HOW TO CREATE NEW VEHICLE MODS" topic by RingoD123, one of PZ devs. You can access it here: *boop*
     
    I'll show you my way, using Substance Painter to apply lighting and fake chrome parts to model. But first comes the base color and details of the car, so let's dive into it.
    Create a texture with 0 alpha and resolution 256x256. You can go for 512x512, but personally I like pixelated look of lo-res texture. Here are the settings for initial image:
     

     
    To preview the texture you are painting with different car colors, use this node setup. But switch filtering mode from "Linear" to "Closest", I forgot to do it on screenshot.
     

     
    There are two types of texture details: somewhat transparent and absolutely opaque. Half-transparent parts will be affected by car color, so they are mostly shadow/highlight details. Headlights, fixtures and things like that have to be opaque and painted with 100% brush hardness. 
    It is easier to keep 3d view just to see what are you doing and paint texture in image editing mode, right there:
     

     
    First, paint the outlines of doors and other opening parts. Here are some brush hardness values:
    0.2 - Outline shadow
    0.5 - Outline
    1.0 - Fake chrome and rubber window sealing
     
    Some work in progress screenshots
     

     
    Now when you have windows frames, save the image you just painted and go to photoshop and mask out glass sections like that

     
    Well, time for Substance Painter. You can use photoshop gradients for windows and blender lighting for lighting of the body, but I'll use SP "Baked lighting" filter for that, and for chrome especially. I will briefly describe what I've done in SP:
    1) Mask out windows, give them mirror metal material and add a filter to them
    2) Mask out chrome parts, made them mirror metal and added the same filter with slightly different settings.
    3) Apply the same filter to all body parts left.
    4) Add a position gradient to the windows
    Now I have this result, it is not shaded model, just basecolor:
     

     
    Also export the AO map you baked in SP.
     
    You can download file with this scene to look through and get ideas using this link: *boop*
     
     
    Now paint additional details you want on the car and open Photoshop. This is your layers layout:
     

     
    Now save it as .psd for future color editing and as .png to see what the you've done. Plug .png direcly as BaseColor in shader settings. Set your shading setting like this:
     

     
    And check if everything looks ok. This is my result:
     


     
    And this is the vehicle's look with wheels that we made before
     

     
    Sweet, isn't it?
     
    Now, it is time to get rid of mirroring. You can make new UV, bake it and... get A LOT of offset artifacts resulting in jagged pixel edges. There is a lazy but effective method:
     
    1) In the UV editor place cursor in the 0,0 coordinates. 
     

     
    2) Set Pivot to 2D cursor:
     

     
    3) Scale all UV islands to 0.5 EXACTLY
     

     
    4) Apply mirror modifier to your model. Now select FACES of any half of the model and move it in UVs on Y by value 0.5 EXACTLY or you'll eventually mess everything up.
     

     
    5) In Photoshop expand canvas of your PSD file we made before
     

     
    6) Duplicate everything and move to the upper left corner, like in UVs. You can merge color layer(s) to operate color on export more easily. Now you have half of the texture empty... You do not want to waste it, right? Then drop in the wheel texture here without scaling, and you won't need additional texture file for it!
     

     
    7) Create a layer beneath all others and paint it black or grey to cover alpha-holes in the textures.
     

     
    8 ) Now unwrap the wheel to this new texture and let it shine! We painted the car and fixed mirroring.
     
    DOWNLOAD THE .PSD FILE: *bloop*
     
    There are 3 more types of textures to make:
    1) Rust
    2) Damage (1 or 2 levels, I'm lazy, I prefer using single one)
    3) ID Color Mask or just Mask
     
    It wasn't possible to make them right with mirroring. 
    Everything about these textures are explained clearly in Ringo's guide, again: *boop* I'll just show results I ended up with. 
    Now you have to use 512x512 clear images for these textures, do not forget it.
     
    RUST
     
    Painted it with jitter brush and 0.2 hardness. To see what I am doing used the same node setup, as for base texture. 


     
    DAMAGE
     
    Painted gradients with black and white with 0.1 hardess with repetitive strokes.
     


     
    MASK
     
    Mask texture tells game where are separate parts of car: doors, windows, lights and others. Every part has it's own color in palette, you can find color table in Ringo's guide. Copy and paste color HEX to use it in blender brush or fill tools. I've missed some of the parts because they do not really matter.
     

     

     
    AEUGH
     
    Texturing is finished. Go to photoshop and make all color variations you want and save them as .png, name them     Vehicles_[vehicle name]_
    Vehicle name mustn't containt spaces
    These are color palettes of my car:
     

     
    Now you have to export your vehicle body and wheel models. Copy them to an empty scene and save as separate file. 
    If you used blender default orientations (front, back, right, left, top), then rotate the car on Z axis by 180 degrees. Game rotates it for some reason, so you'll have to do it.
    Now position everything in scene like this and continue to export settings.
     

     
    Export body and wheel separately with these settings:
     

     
    STAGE 5 - Packing files in folders
     
    The folder hierarchy and naming the files you can find in Ringo's guide. The mod file and all of my project files you will be able to download in the end of this topic.
     
    make up an Id name for your car. It has to be short, but unique and do not contain spaces. For this car I use '60falcon'.
    _____________________________________________
    workshop.txt
    properties of the mod for Steam Workshop
     

    _____________________________________________
    mod.info
    properties of the mod for in-game mod menu
     

    _____________________________________________
    models_X folder -> vehicles
    this folder contains 3d meshes of the vehicle - body and wheel

    _____________________________________________
    textures -> vehicles
    easy to guess, all vehicle textures are placed here
    null.png - completely transparent image, used as placeholder later on

    _____________________________________________
    scripts -> vehicles
    there shoud be a .txt file named with you vehicle's ID name.

    Open it up and follow these instructions:

     

    change invertX to 'TRUE' if vehicle appears to be mirrored by left and right in game.

     

    Do not care about scale, offset and other geometric parameters.
     
    Insert all your color variation textures as shown below:

     

     
    All vehicle driving parameters are self-explanatory. Remember to set seats count, I'm creating a car with 4 seats.
    If you want to make less seats or add new, delete passenger[Seat code] records or add new.
    Also remember Seat[position] records down below.
    Add or delete the templates, loaded from Game default files:

     

    _____________________________________________
    LUA SCRIPTS
     
    lua -> server -> vehicles -> [car id name]dis.lua
     
    Vehicle trunk type distribution file. There is a file with all vehicle distribution types in game files, I'll put it in project folder in the end if the article.
    This is game files distibution types, select one of them in respect to the vehicle type you are creating.
     

     
    I'll use CarNormal type for Ford Falcon. This is what distribution lua file has to be:
     

     
    _____________________________________________
     
    lua -> shared -> [car id name]SpawnList.lua
     
    This file describes spawn zones of your car in game world with certain chance. I've typed in all default zones of spawn, you just have to change the chance and
    set [Base.60falcon]
    to [Base.(your car id name)]
     
    _____________________________________________
    lua -> shared -> Translate -> EN -> IG_UI_EN.txt
     

     
    This is the name of the car in UI - keys name, mechanics window name and such.
     
    STAGE 6 - In-game editing and tests
     
    Launch PZ and disable all mod exept the one you will be debugging. Now close the game and go to Steam. In application setting set startup parameter to -debug
    It enables many debug options in-game.
     
    Now launch the Game again and, if menu doesn't appear, you've done something wrong in lua scripts. Check them for probles, and I hope, you'll figure out what is wrong.
    Now start a new game in world with no zombies and big amount of cars. 
    Leave the house and find any car vibing in the street. Right click, -> Vehicle -> Set Script -> [your car ID name]. Car will switch to yours.
    This is what I've got on first time in-game spawning:
     

     
    YEET, it is all coming along. But wheel positions are a bit off, and we have to place the entering areas of doors. Go to Right click on car -> [DEBUG] Vehicle -> Vehicle Editor.
     

     
    Chassis
     
    Place extents and physics shape to outline the car
     
    Areas
     
    These are access areas to different parts of the car. There is nothing to describe, really, just place them where you can explain it and continue to next section
     

     
     
     
     

     
    Right click in mechanics tab to enable cheat options for the car. Now right click in mechanics panel. Here you can get key for that car or repair it. 
     
    Final result in different variations
     



     
    Make a suitable preview image for your mod and crop it in Photoshop to 256x256. Place it in mod folder as preview.png
     
    In game menu go WORKSHOP -> create or update mod -> 

     
    Go to your profile workshop items and find the new mod.

     
    Add the description, more screenshots and set visibility to 'Public'
     
    ALL PROJECT FILES: *YEET*
     
     
    ZE END
    Congratulations if you followed my guide to this point.
     
    Comment any issues or mistakes I've made.
     
     
     
     
     
×
×
  • Create New...