Jump to content

six_ten

Member
  • Content Count

    370
  • Joined

  • Last visited

  • Medals

  • Medals

Posts posted by six_ten


  1. The forum software keeps parsing my IMG tags, so no images until I sort that out. Also cannot edit the first post in this thread so I'll start here. I've put quite a lot of work into this mod and I think it is time to share a progress report. I hope it will be as much fun for others as it has been for me so far. It isn't ready to release yet, but I'll post a download link when it is.

    Black Powder: Trade and Warfare on Land and Sea in the 1770's

    The gameplay is pretty basic: you start on the beach with nothing. Find some clothing and tools, gather some food and water, and set out to seek your fortune. Harvest raw materials and make useful products for trade, steal from others and become an enemy to all as a pirate, or ally yourself with one of the warring nations and with their letter of marque and reprisal become a privateer.

    Built so far:

    Uniformed Continental (American) and British Line infantry, plus hats, knapsacks, haversacks, canteens and cartridge pouches

    also male Civilians and Militia

    Model 1768 Short Land Pattern Musket (Brown Bess)

    French 4 pounder artillery firing round shot and grapeshot

    field fortifications including cheveaux de frise, gabions, abatis

    65' Bermuda Sloop with swivel guns

    bell tent to store guns, wedge tents for common soldiers, wall tents for horsemen and subalterns, and officers' marquee

    rail-fences, houses, outbuildings and public structures

    Currently I'm optimizing all of the above. LOD models are done, all now are UV mapped and I'm making new textures and shaders for them.

    I still have to get my particle effects sorted out for the guns, at the moment its trial and error. The cannons have a satisfying kick when they fire, but the muskets feel weak and I'm still trying to figure out how to get a delay between the flash in the pan and the actual firing.


  2. After more testing I discovered some more problems with lighting, a campfire for instance was far too bright, and then I flew around in a helicopter, whose spotlight was somehow broken. I then started over from a fresh copy of Altis config and plugged my map's details in, and the problem is solved. The stars are fine now. Thank you everyone for taking a look at this. I still don't know what the problem was but I guess it was a mistake I made somewhere in moving the lighting out to .hpp.


  3. I have a section of a model that I want to use a _CA texture for to save polys, it is a netting of ropes. When I apply my material it looks fine up close, within a couple of meters, but any further away and it becomes a weird shiny transparent sheet that also makes water behind it look invisible.

    In trying to fix it I updated the chainlink fence from OA and copied that geometry, tex, and shader, then placed the fence model section into my model and still have the same problem. Is there something new about opacity in A3 that prevents it rendering correctly or have I missed a step?

    ---------- Post added at 10:42 ---------- Previous post was at 10:01 ----------

    In case anyone else runs into this I'll update this. It might be fixed -- I just now copied over the A3 barbed wire rvmat and applied that to my netting, and in the rvmat it shows:

    class Stage7

    {

    texture = "a3\data_f\env_land_ca.paa";

    useWorldEnvMap = "false";

    uvSource = "tex";

    class uvTransform

    {

    aside[] = {1.0,0.0,0.0};

    up[] = {0.0,1.0,0.0};

    dir[] = {0.0,0.0,0.0};

    pos[] = {0.0,0.0,0.0};

    };

    };

    The old one was different:

    class Stage7

    {

    texture="ART\ART_18thc_Navy\Data\env_land_co.paa";

    uvSource="tex";

    class uvTransform

    {

    aside[]={1.000000,0.000000,0.000000};

    up[]={0.000000,1.000000,0.000000};

    dir[]={0.000000,0.000000,0.000000};

    pos[]={0.000000,0.000000,0.000000};

    };

    };

    One more test should tell whether setting UseWorldEnvMap = "false" fixes it.

    ---------- Post added at 10:53 ---------- Previous post was at 10:42 ----------

    It worked!

    ---------- Post added at 11:11 ---------- Previous post was at 10:53 ----------

    Now that I've solved this, another question occurs to me: Is a low-poly transparent model cheaper to render than the same thing done in geometry; the netting is large and would add 500 polys to my model. Would I get better performance by modeling it or using the _CA tex on the low-poly model?


  4. I'm in the middle of rewriting my config and now using Altis config as a base for it.

    A thought just occurred to me, could it be that there's a setting for the size of the map that has an effect? Altis and Stratis are both much bigger than my map (which is 8192 m), so could the stars be "closer" and therefore larger on a smaller map than what they were intended for?

    ---------- Post added at 03:46 ---------- Previous post was at 02:47 ----------

    I have located a reference in map_data to starsObject = "A3\data_f\stars.p3d";

    skyTexture = "A3\data_f\sky_semicloudy_sky.paa";

    skyTextureR = "A3\data_f\sky_semicloudy_lco.paa";

    seaTexture = "a3\data_f\seatexture_co.paa";

    clouds[] = {"A3\data_f\mrak1.p3d","A3\data_f\mrak2.p3d","A3\data_f\mrak3.p3d","A3\data_f\mrak4.p3d"};

    skyObject = "A3\data_f\obloha.p3d";

    starsObject = "A3\data_f\stars.p3d";

    pointObject = "A3\data_f\point.p3d";

    horizontObject = "A3\data_f\horizont.p3d";

    haloObject = "A3\data_f\sunhalo.p3d";

    sunObject = "A3\data_f\sun.p3d";

    rainbowObject = "A3\data_f\rainbow.p3d";

    moonObject = "A3\data_f\moon.p3d";


  5. "Darkhorse 1-6

    The trees and everything else in that image look terrible, so it might be your graphics settings or your hardware itself. Try to take a single screenshot in the same area with all the settings maxed out. "

    On Ultra the result is the same. As I mentioned in the first post Altis and Stratis stars look nice. If it was my hardware or graphics settings they would not.

    "M1lkm8n

    Look in the arma3 rot log too "

    What's the "rot log"?

    "HorribleGoat

    Sorry but, couldn't reproduce this either so far, do you get any error messages while running the map or have anything in the binarizing log files? Could have something to do with your video settings? "

    Going through the log I find errors:

    ART_Williamsburg.log

    Warning: CfgVehicles missing in PreloadConfig - may slow down vehicle creation

    Warning: CfgAmmo missing in PreloadConfig - may slow down vehicle creation

    Warning: CfgNonAIVehicles missing in PreloadConfig - may slow down vehicle creation

    <world = "ART\ART_Williamsburg\ART_Williamsburg.wrp">

    No entry 'P:\bin\config.cpp/CfgWorlds/DefaultWorld.skyColorInfluencesFogColor'.

    '/' is not a value

    String id 0 is not registered

    No entry 'P:\bin\config.cpp/CfgWorlds/DefaultWorld.skyColorInfluencesFogColor'.

    '/' is not a value

    String id 0 is not registered

    No entry 'P:\bin\config.cpp/CfgWorlds/DefaultWorld.skyColorInfluencesFogColor'.

    '/' is not a value

    using non-binarized object a3\plants_f\tree\t_poplar2f_dead_f.p3d

    Cannot open object a3\plants_f\tree\t_poplar2f_dead_f.p3d

    using non-binarized object a3\plants_f\tree\t_poplar2f_dead_f.p3d

    Apparently it can't find my trees. Also there are other errors having to do with my buildings, but the stars issue appeared well before I placed any trees or buildings in the map.


  6. Here is the config

    //////////////////////////////////////////////////////////////////////

    // BLACK POWDER

    // ART_Williamsburg

    // Synthesis of LIDAR and the 1782 Rochambeau map

    //////////////////////////////////////////////////////////////////////

    #define _ARMA_

    //Class ART_Williamsburg : config.bin{

    class CfgPatches

    {

    class ART_Williamsburg

    {

    units[] = {"Williamsburg"};

    weapons[] = {};

    requiredVersion = 0.1;

    requiredAddons[] = {"A3_Data_F","A3_Roads_F","A3_Structures_F","A3_Map_Data","ART_Arch"};

    version = "April 19, 2014";

    author = "Greg Sandor";

    };

    };

    class CfgVehicles{};

    class CfgWorlds

    {

    class DefaultWorld

    {

    cutscenes[] = {"Williamsburg_Intro1","Williamsburg_Intro2"};

    class Weather

    {

    class Overcast;

    };

    };

    class CAWorld: DefaultWorld

    {

    class Grid{};

    class DayLightingBrightAlmost;

    class DayLightingRainy;

    class DefaultClutter;

    class Weather: Weather

    {

    class Lighting;

    class Overcast: Overcast

    {

    class Weather1;

    class Weather2;

    class Weather3;

    class Weather4;

    class Weather5;

    class Weather6;

    };

    };

    };

    class DefaultLighting;

    class Williamsburg: CAWorld

    {

    dynLightMinBrightnessAmbientCoef = 0.5;

    dynLightMinBrightnessAbsolute = 0.05;

    class Sea

    {

    seaTexture = "a3\data_f\seatexture_co.paa";

    seaMaterial = "#water";

    shoreMaterial = "#shore";

    shoreFoamMaterial = "#shorefoam";

    shoreWetMaterial = "#shorewet";

    WaterMapScale = 20;

    WaterGrid = 50;

    // MaxTide = 0;

    // MaxWave = 0.25;

    MaxTide = .25;

    MaxWave = 0.125;

    SeaWaveXScale = "2.0/50";

    SeaWaveZScale = "1.0/50";

    SeaWaveHScale = 1.0;

    SeaWaveXDuration = 5000;

    SeaWaveZDuration = 10000;

    };

    class Underwater

    {

    noWaterFog = -0.001;

    fullWaterFog = 0.001;

    deepWaterFog = 200;

    waterFogDistanceNear = 10;

    waterFogDistance = 40;

    waterColor[] = {0.04,0.16,0.22};

    deepWaterColor[] = {0.0,0.001,0.009};

    surfaceColor[] = {0.04,0.16,0.22};

    deepSurfaceColor[] = {0.0,0.001,0.009};

    };

    class SeaWaterShaderPars

    {

    refractionMoveCoef = 0.03;

    minWaterOpacity = 0.0;

    waterOpacityDistCoef = 0.4;

    underwaterOpacity = 0.5;

    waterOpacityFadeStart = 60;

    waterOpacityFadeLength = 120;

    };

    startWeather = 0.3;

    startFog = 0.0;

    forecastWeather = 0.3;

    forecastFog = 0.0;

    startFogBase = 0.0;

    forecastFogBase = 0.0;

    startFogDecay = 0.013;

    forecastFogDecay = 0.013;

    fogBeta0Min = 0.0;

    fogBeta0Max = 0.05;

    #include "cfg_ART_Lighting.hpp"

    humidityUpCoef = 0.1;

    humidityDownCoef = 0.05;

    hazeDistCoef = 0.1;

    hazeFogCoef = 0.98;

    hazeBaseHeight = 150;

    hazeBaseBeta0 = 6e-005;

    hazeDensityDecay = 0.0006;

    horizonParallaxCoef = 0.045;

    horizonFogColorationStart = "0.8f";

    skyFogColorationStart = "0.7f";

    soundMapSizeCoef = 4;

    satelliteNormalBlendStart = 10;

    satelliteNormalBlendEnd = 100;

    skyObject = "A3\Map_Stratis\data\obloha.p3d";

    horizontObject = "A3\Map_Stratis\data\horizont.p3d";

    skyTexture = "A3\Map_Stratis\data\sky_semicloudy_sky.paa";

    skyTextureR = "A3\Map_Stratis\data\sky_semicloudy_lco.paa";

    access = 3;

    worldId = 1;

    cutscenes[] = {"Williamsburg_intro1"};

    description = "Williamsburg, Virginia, 1781";

    icon = "";

    worldName = "\ART\ART_Williamsburg\ART_Williamsburg.wrp";

    pictureMap = "ART\ART_Williamsburg\Data\pictureMap_ca.paa";

    pictureShot = "\ART\ART_Williamsburg\ART_Williamsburg_Picture_ca.paa";

    plateFormat = "ML$ - #####";

    plateLetters = "ABCDEGHIKLMNOPRSTVXZ";

    author = "Greg Sandor";

    mapSize = 8192;

    mapZone = 35;

    longitude = -76.7069;

    latitude = 37.2708;

    elevationOffset = 0;

    envTexture = "A3\Data_f\env_land_ca.paa";

    newRoadsShape = "\ART\ART_Williamsburg\data\roads\roads.shp";

    class OutsideTerrain

    {

    satellite = "ART\ART_Williamsburg\data\s_satout_co.paa";

    enableTerrainSynth = 0;

    class Layers

    {

    class Layer0

    {

    nopx = "A3\Map_Data\gdt_grass_green_nopx.paa";

    texture = "A3\Map_Data\gdt_grass_green_co.paa";

    };

    };

    colorOutside[] = {0.294118,0.333333,0.372549,1};

    };

    class Grid: Grid

    {

    offsetX = 0;

    offsetY = 8192;

    class Zoom1

    {

    zoomMax = 0.2;

    format = "XY";

    formatX = "000";

    formatY = "000";

    stepX = 100;

    stepY = -100;

    };

    class Zoom2

    {

    zoomMax = 0.95;

    format = "XY";

    formatX = "00";

    formatY = "00";

    stepX = 1000;

    stepY = -1000;

    };

    class Zoom3

    {

    zoomMax = 1e+030;

    format = "XY";

    formatX = "0";

    formatY = "0";

    stepX = 10000;

    stepY = -10000;

    };

    };

    startTime = "12:00";

    startDate = "12/10/1775";

    centerPosition[] = {4096,1000,4096};

    seagullPos[] = {1024,150.0,1024};

    ilsPosition[] = {1531,5019};

    ilsDirection[] = {-0.2588,0.08,-0.9659};

    ilsTaxiOff[] = {1776.33,5943.46,1796.3,5994.64,1800.18,6000.15,1808.87,6001.77,1846.74,5991.52,1875.43,5943.27,1845.88,5831.4};

    ilsTaxiIn[] = {1845.88,5831.4,1613.95,4953.91,1610.09,4947.58,1601.67,4945.44,1528.24,4964.76,1522.46,4968.34,1520.47,4976.63,1525.46,4998.98};

    class ReplaceObjects{};

    class Sounds

    {

    sounds[] = {};

    };

    class Animation

    {

    vehicles[] = {};

    };

    clutterDist = 125;

    noDetailDist = 65;

    fullDetailDist = 15;

    midDetailTexture = "A3\Map_Data\middle_mco.paa";

    minTreesInForestSquare = 4;

    minRocksInRockSquare = 4;

    #include "cfg_ART_Clutter.hpp"

    class Subdivision

    {

    class Fractal

    {

    rougness = 5;

    maxRoad = 0.02;

    maxTrack = 0.5;

    maxSlopeFactor = 0.05;

    };

    class WhiteNoise

    {

    rougness = 2;

    maxRoad = 0.01;

    maxTrack = 0.05;

    maxSlopeFactor = 0.0025;

    };

    minY = -0.0;

    minSlope = 0.02;

    };

    #include "cfg_ART_Ambient.hpp"

    class Names

    {

    #include "ART_Williamsburg.hpp"

    class City_Williamsburg

    {

    name = "Williamsburg";

    position[] = {4041,4497.72};

    type = "NameCityCapital";

    radiusA = 200.0;

    radiusB = 200.0;

    angle = 0.0;

    };

    class Queen_Creek

    {

    name = "Queen Creek";

    position[] = {6805.86,6708.46};

    type = "NameMarine";

    radiusA = 236.36;

    radiusB = 176.73;

    angle = 0.0;

    };

    class College_Creek

    {

    name = "College Creek";

    position[] = {2855.27,1458.91};

    type = "NameMarine";

    radiusA = 236.36;

    radiusB = 176.73;

    angle = 0.0;

    };

    class Capitol_Landing

    {

    name = "Capitol Landing";

    position[] = {5299.44,6569.49};

    type = "NameVillage";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class College_Landing

    {

    name = "College Landing";

    position[] = {3098.31,2124.94};

    type = "NameVillage";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Shields

    {

    name = "M.r Shields";

    position[] = {2031.37,7801.96};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Crawley

    {

    name = "M.r Crawley";

    position[] = {1783.06,6861.83};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class New_magazine

    {

    name = "New magazine";

    position[] = {2155.35,5920.67};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Ludwells_Mill

    {

    name = "Ludwell's Mill";

    position[] = {2001.75,3247.81};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Ludwell

    {

    name = "M.r Ludwell";

    position[] = {2054.74,2275.46};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Maupin

    {

    name = "M.r Maupin";

    position[] = {3602.31,575.906};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Southalls_Quarter

    {

    name = "Southall's Quarter";

    position[] = {5652.07,1109.07};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Cokes_Mill

    {

    name = "Coke's Mill";

    position[] = {5385.52,1840.75};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Saunders

    {

    name = "M.r Saunders";

    position[] = {4410.47,2485.77};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Powell

    {

    name = "M.r Powell";

    position[] = {4140.7,5916.8};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Custis_Mill

    {

    name = "Custis' Mill";

    position[] = {4039.49,7787.55};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Poor_House

    {

    name = "Poor House";

    position[] = {5158.93,6980.03};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Taylor

    {

    name = "M.r Taylor";

    position[] = {5539.02,3050.67};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Blairs_Quarter

    {

    name = "Blair's Quarter";

    position[] = {6487.61,4260.08};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Braxton

    {

    name = "M.r Braxton";

    position[] = {8062.5,7722.9};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Bryan

    {

    name = "M.r Bryan";

    position[] = {7877.86,3868.8};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    /// Military Camps

    /*

    1. Gouvernement brule par accident

    2. Court-House ou maison de ville

    3. Capitole ou Palais de la Justice

    4. Eglise Anglicane

    5. College

    6. Magazin a Poudre

    7. Hopital

    /// 8. Casernea brulee par les anglais

    /// 9. Corps de Troupes Commande par M. de St. Simon

    /// 10. Artillerie du meme corps

    /// 11. Grande-Garde du meme corps

    /// 12. Corps Americain de M.r le M.is de la Fayette

    /// 13. Armee de Mr le C.te de Rochambeau

    /// 14. Grenadiers et Chassuers de la dite Armee

    /// 15. Artillerie de la dite Armee

    /// 16. Armee Americaine du General Washington

    /// 19. Cantonnement d'une Compagnie du Regim't de Bourbonnais

    /// 20. Cantonnement d'une autre Compagnie du meme Regiment

    /// 21. Cantonnement de Deux Compagnies du Regiment Royal-Deux-Ponts

    class Legende_8

    {

    name = "Casernea brulee par les anglais";

    position[] = {4140.7,5916.8};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_9

    {

    name = "Corps de Troupes Commande par M. de St. Simon";

    position[] = {2001.75,3247.81};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_10

    {

    name = "Artillerie du M. de St. Simon";

    position[] = {2001.75,3247.81};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_11

    {

    name = "Grande-Garde du regt M. de St. Simon";

    position[] = {4039.49,7787.55};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_12

    {

    name = "Corps Americain de M.r le M.is de la Fayette";

    position[] = {2001.75,3247.81};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_13

    {

    name = "Armee de Mr le C.te de Rochambeau";

    position[] = {6487.61,4260.08};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_14

    {

    name = "Grenadiers et Chassuers de Mr le C.te de Rochambeau";

    position[] = {6487.61,4260.08};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_15

    {

    name = "Artillerie de Mr le C.te de Rochambeau";

    position[] = {6487.61,4260.08};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_16a

    {

    name = "Armee Americaine du General Washington";

    position[] = {6487.61,4260.08};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_16b

    {

    name = "Armee Americaine du General Washington";

    position[] = {6487.61,4260.08};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_16c

    {

    name = "Armee Americaine du General Washington";

    position[] = {6487.61,4260.08};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_16d

    {

    name = "Armee Americaine du General Washington";

    position[] = {6487.61,4260.08};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_19

    {

    name = "Cantonnement d'une Compagnie du Regim't de Bourbonnais";

    position[] = {7877.86,3868.8};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_20

    {

    name = "Cantonnement d'une autre Compagnie du Regim't de Bourbonnais";

    position[] = {5299.44,6569.49};

    type = "NameVillage";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Legende_21

    {

    name = "Cantonnement de Deux Compagnies du Regiment Royal-Deux-Ponts";

    position[] = {2155.35,5920.67};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class College_Landing

    {

    name = "College Landing";

    position[] = {3098.31,2124.94};

    type = "NameVillage";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Shields

    {

    name = "M.r Shields";

    position[] = {2031.37,7801.96};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Crawley

    {

    name = "M.r Crawley";

    position[] = {1783.06,6861.83};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Ludwells_Mill

    {

    name = "Ludwell's Mill";

    position[] = {2001.75,3247.81};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Ludwell

    {

    name = "M.r Ludwell";

    position[] = {2054.74,2275.46};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Maupin

    {

    name = "M.r Maupin";

    position[] = {3602.31,575.906};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Southalls_Quarter

    {

    name = "Southall's Quarter";

    position[] = {5652.07,1109.07};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Cokes_Mill

    {

    name = "Coke's Mill";

    position[] = {5385.52,1840.75};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Saunders

    {

    name = "M.r Saunders";

    position[] = {4410.47,2485.77};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Poor_House

    {

    name = "Poor House";

    position[] = {5158.93,6980.03};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Taylor

    {

    name = "M.r Taylor";

    position[] = {5539.02,3050.67};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    class Mr_Braxton

    {

    name = "M.r Braxton";

    position[] = {8062.5,7722.9};

    type = "NameLocal";

    radiusA = 121.02;

    radiusB = 90.49;

    angle = 0.0;

    };

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    /// Military Camps

    */

    };

    safePositionAnchor[] = {3874.47,4093.64};

    safePositionRadius = 1900;

    loadingTexts[] = {"If you love wealth more than liberty, the tranquility of servitude better than the animating contest of freedom, depart from us in peace. ","We ask not your counsel nor your arms. Crouch down and lick the hand that feeds you. ","May your chains rest lightly upon you and may posterity forget that you were our countrymen. - Samuel Adams","He has plundered our seas, ravaged our Coasts, burnt our towns, and destroyed the lives of our people.","He is at this time transporting large Armies of foreign Mercenaries to compleat the works of death, desolation and tyranny, already begun with circumstances of Cruelty and perfidy scarcely paralleled in the most barbarous ages, and totally unworthy the Head of a civilized nation.","He has constrained our fellow Citizens taken Captive on the high Seas to bear Arms against their Country, to become the executioners of their friends and Brethren, or to fall themselves by their Hands.","A Prince whose character is thus marked by every act which may define a Tyrant, is unfit to be the ruler of a free people. ","He has erected a multitude of New Offices, and sent hither swarms of Officers to harrass our people, and eat out their substance.","He has combined with others to subject us to a jurisdiction foreign to our constitution, and unacknowledged by our laws; giving his Assent to their Acts of pretended Legislation:","Tyranny, like hell, is not easily conquered; yet we have this consolation with us, that the harder the conflict, the more glorious the triumph. ","Many a disguised Tory has lately shown his head, that shall penitentially solemnize with curses the day on which Howe arrived upon the Delaware. ","What we obtain too cheap, we esteem too lightly: it is dearness only that gives every thing its value. Heaven knows how to put a proper price upon its goods; and it would be strange indeed if so celestial an article as FREEDOM should not be highly rated","I cannot see on what grounds the king of Britain can look up to heaven for help against us: a common murderer, a highwayman, or a house-breaker, has as good a pretence as he. "};

    };

    initWorld = "Williamsburg";

    demoWorld = "Williamsburg";

    };

    class CfgWorldList

    {

    class Williamsburg{};

    };

    #include "cfg_ART_Surfaces.hpp"

    //};

    ---------- Post added at 09:09 ---------- Previous post was at 09:03 ----------

    Here is cfg_ART_Lighting.hpp

    class Lighting: DefaultLighting

    {

    groundReflection[] = {0.132,0.133,0.122};

    moonObjectColorFull[] = {550,500,450,1.0};

    moonHaloObjectColorFull[] = {20,20,20,0.5};

    moonsetObjectColor[] = {275,250,225,1.0};

    moonsetHaloObjectColor[] = {10,10,10,0.25};

    class ThunderBoltLight

    {

    diffuse[] = {2120,2170,8550};

    ambient[] = {0.001,0.001,0.001};

    intensity = 120000;

    class Attenuation

    {

    start = 0.0;

    constant = 0.0;

    linear = 0.0;

    quadratic = 1.0;

    };

    };

    starEmissivity = 60.0;

    };

    class DayLightingBrightAlmost: DayLightingBrightAlmost

    {

    deepNight[] = {-15,{ 0.005,0.01,0.01 },{ 0.0,0.002,0.003 },{ 0.0,0.0,0.0 },{ 0.0,0.0,0.0 },{ 0.0,0.002,0.003 },{ 0.0,0.002,0.003 },0};

    fullNight[] = {-5,{ 0.182,0.213,0.25 },{ 0.05,0.111,0.221 },{ 0.04,0.034,0.004 },{ 0.039,0.049,0.072 },{ 0.082,0.128,0.185 },{ 0.283,0.35,0.431 },0};

    sunMoon[] = {-3.75,{ 0.377,0.441,0.518 },{ 0.103,0.227,0.453 },{ 0.04,0.034,0.004 },{ 0.039,0.049,0.072 },{ 0.174,0.274,0.395 },{ 0.582,0.72,0.887 },0.5};

    earlySun[] = {-2.5,{ 0.675,0.69,0.784 },{ 0.22,0.322,0.471 },{ 0.04,0.034,0.004 },{ 0.039,0.049,0.072 },{ 0.424,0.549,0.745 },{ 0.698,0.753,0.894 },1};

    sunrise[] = {0,{ 0.675,0.69,0.784 },{ 0.478,0.51,0.659 },{ 0.2,0.19,0.07 },{ 0.124,0.161,0.236 },{ { 0.847,0.855,0.965 },0.2 },{ { 0.933,0.949,0.996 },2 },1};

    earlyMorning[] = {3,{ { 0.844,0.61,0.469 },0.8 },{ 0.424,0.557,0.651 },{ { 1,0.45,0.2 },1 },{ 0.12,0.26,0.38 },{ { 0.428,0.579,0.743 },2 },{ { 0.844,0.61,0.469 },2.7 },1};

    midMorning[] = {8,{ { 0.822,0.75,0.646 },3.8 },{ { 0.383,0.58,0.858 },1.3 },{ { 1.3,0.9,0.61 },2.8 },{ { 0.12,0.18,0.28 },0.5 },{ { 0.322,0.478,0.675 },3.5 },{ { 1.0,0.929,0.815 },4.7 },1};

    morning[] = {16,{ { 1,0.95,0.91 },12.2 },{ { 0.12,0.18,0.28 },9.2 },{ { 1,0.95,0.91 },11.2 },{ { 0.12,0.18,0.28 },8.5 },{ { 0.14,0.18,0.24 },11.0 },{ { 0.5,0.6,0.9 },13.2 },1};

    noon[] = {45,{ { 0.98,0.94,0.94 },13.8 },{ { 0.2,0.27,0.35 },10.8 },{ { 0.98,0.94,0.94 },13.8 },{ { 0.2,0.27,0.35 },10.8 },{ { 0.5,0.64,1.0 },12.0 },{ { 0.5,0.5,0.5 },14.8 },1,0.5,0.4,0.5,0.4};

    };

    class DayLightingRainy: DayLightingRainy

    {

    deepNight[] = {-15,{ 0.005,0.01,0.01 },{ 0.0,0.002,0.003 },{ 0.0,0.0,0.0 },{ 0.0,0.0,0.0 },{ 0.0,0.002,0.003 },{ 0.0,0.002,0.003 },0};

    fullNight[] = {-5,{ 0.023,0.023,0.023 },{ 0.02,0.02,0.02 },{ 0.023,0.023,0.023 },{ 0.02,0.02,0.02 },{ 0.01,0.01,0.02 },{ 0.08,0.06,0.06 },0};

    sunMoon[] = {-3.75,{ 0.04,0.04,0.05 },{ 0.04,0.04,0.05 },{ 0.04,0.04,0.05 },{ 0.04,0.04,0.05 },{ 0.04,0.035,0.04 },{ 0.11,0.08,0.09 },0.5};

    earlySun[] = {-2.5,{ 0.0689,0.0689,0.0804 },{ 0.06,0.06,0.07 },{ 0.0689,0.0689,0.0804 },{ 0.06,0.06,0.07 },{ 0.08,0.07,0.08 },{ 0.14,0.1,0.12 },0.5};

    earlyMorning[] = {3,{ { 1,1,1 },"(-4)+3.95" },{ { 1,1,1 },"(-4)+3.0" },{ { 1,1,1 },"(-4)+3.95" },{ { 1,1,1 },"(-4)+3.0" },{ { 1,1,1 },"(-4)+4" },{ { 1,1,1 },"(-4)+5.5" },1};

    morning[] = {16,{ { 1,1,1 },"(-4)+5.7" },{ { 1,1,1 },"(-4)+4.5" },{ { 1,1,1 },"(-4)+5.7" },{ { 1,1,1 },"(-4)+4.5" },{ { 1,1,1 },"(-4)+7" },{ { 1,1,1 },"(-4)+8" },1};

    lateMorning[] = {25,{ { 1,1,1 },"(-4)+10.45" },{ { 1,1,1 },"(-4)+9.75" },{ { 1,1,1 },"(-4)+10.45" },{ { 1,1,1 },"(-4)+9.75" },{ { 1,1,1 },"(-4)+12" },{ { 1,1,1 },"(-4)+12.75" },1};

    noon[] = {45,{ { 1,1,1 },10.0 },{ { 1,1,1 },9.0 },{ { 1,1,1 },9.0 },{ { 1,1,1 },8.0 },{ { 0.5,0.64,1 },12.0 },{ { 0.5,0.5,0.5 },14.8 },1};

    };

    class Weather: Weather

    {

    class ART_LightingNew

    {

    class Lighting0

    {

    height = 0;

    overcast = 0.4;

    sunAngle = -14;

    sunOrMoon = 0;

    diffuse[] = {{ 0.11,0.2744,0.97 },3};

    diffuseCloud[] = {{ 0.099,0.24696,0.873 },2.7};

    ambient[] = {0.02,0.11,0.54};

    ambientCloud[] = {0.018,0.099,0.486};

    ambientMid[] = {0.018,0.099,0.486};

    ambientMidCloud[] = {0.0162,0.0891,0.4374};

    groundReflection[] = {0.0162,0.0891,0.4374};

    groundReflectionCloud[] = {0.01458,0.08019,0.39366};

    bidirect[] = {0.0284,0.02712,0.0254};

    bidirectCloud[] = {0.02556,0.024408,0.02286};

    sky[] = {{ 0.001273,0.001838,0.004057 },0.001404};

    skyAroundSun[] = {4e-006,0.000104,0.000366};

    fogColor[] = {0.1,0.2,0.4};

    apertureMin = 5.916064;

    apertureStandard = 6.859;

    apertureMax = 17.1475;

    standardAvgLum = 1.08;

    desiredLuminanceCoef = 0.118098;

    desiredLuminanceCoefCloud = 0.059049;

    luminanceRectCoef = 0.4;

    luminanceRectCoefCloud = 0.2;

    rayleigh[] = {0.00749,0.01388,0.02878};

    mie[] = {0.0046,0.0046,0.0046};

    cloudsColor[] = {{ 0.3,0.4,1 },13.61492};

    swBrightness = 5;

    };

    class Lighting1

    {

    height = 0;

    overcast = 0.4;

    sunAngle = -10;

    sunOrMoon = 0;

    diffuse[] = {{ 0.11,0.2744,0.97 },2.8};

    diffuseCloud[] = {{ 0.11,0.2744,0.97 },2.52};

    ambient[] = {0.02,0.11,0.54};

    ambientCloud[] = {0.018,0.099,0.486};

    ambientMid[] = {0.032,0.176,0.864};

    ambientMidCloud[] = {0.0288,0.1584,0.7776};

    groundReflection[] = {0.0224,0.1232,0.6048};

    groundReflectionCloud[] = {0.02016,0.11088,0.54432};

    bidirect[] = {0,0,0};

    bidirectCloud[] = {0,0,0};

    sky[] = {{ 0.004316,0.006232,0.013752 },0.014036};

    skyAroundSun[] = {0.004332,0.005212,0.009138};

    fogColor[] = {0.09,0.18,0.32};

    apertureMin = 7.39508;

    apertureStandard = 7.22;

    apertureMax = 18.05;

    standardAvgLum = 1.8;

    desiredLuminanceCoef = 0.13122;

    desiredLuminanceCoefCloud = 0.06561;

    luminanceRectCoef = 0.4;

    luminanceRectCoefCloud = 0.2;

    rayleigh[] = {0.00749,0.01388,0.02878};

    mie[] = {0.0046,0.0046,0.0046};

    cloudsColor[] = {{ 0.8,0.81,1 },13.61492};

    swBrightness = 5;

    };

    // NOTE I removed the other "class Lightingxx" sections to get under the character limit for this forum post -- they are taken straight from the Stratis config as far as I remember

    class Lighting71

    {

    height = -60;

    overcast = 0.95;

    sunAngle = 45;

    sunOrMoon = 1;

    diffuse[] = {{ 0.35,0.9,1 },2.2968};

    diffuseCloud[] = {{ 0.35,0.9,1 },2.2968};

    ambient[] = {{ 0.142367,0.2079,0.23072 },7.018};

    ambientCloud[] = {{ 0.142367,0.2079,0.23072 },7.018};

    ambientMid[] = {{ 0.113894,0.16632,0.184576 },6.3162};

    ambientMidCloud[] = {{ 0.113894,0.16632,0.184576 },6.3162};

    groundReflection[] = {{ 0.067197,0.154678,0.184576 },3.78972};

    groundReflectionCloud[] = {{ 0.067197,0.154678,0.184576 },3.78972};

    bidirect[] = {0,0,0};

    bidirectCloud[] = {0,0,0};

    sky[] = {{ 0.32,0.2,0.25 },6.288128};

    skyAroundSun[] = {{ 0.4,0.385,0.45 },14.84945};

    fogColor[] = {0.005,0.005,0.005};

    apertureMin = 22.5;

    apertureStandard = 65;

    apertureMax = 85;

    standardAvgLum = 800;

    desiredLuminanceCoef = 0;

    desiredLuminanceCoefCloud = 0;

    luminanceRectCoef = 1;

    luminanceRectCoefCloud = 1;

    rayleigh[] = {0.00749,0.01388,0.02878};

    mie[] = {0.006,0.0046,0.004};

    cloudsColor[] = {{ 0.8,0.81,1 },13.61492};

    swBrightness = 1;

    };

    };

    class Lighting: Lighting

    {

    class BrightAlmost: DayLightingBrightAlmost

    {

    overcast = 0.0;

    };

    class Rainy: DayLightingRainy

    {

    overcast = 1.0;

    };

    };

    class Overcast: Overcast

    {

    class Weather1: Weather1

    {

    sky = "A3\Map_Stratis\Data\sky_veryclear_sky.paa";

    skyR = "A3\Map_Stratis\Data\sky_veryclear_lco.paa";

    horizon = "A3\Map_Stratis\Data\sky_veryclear_horizont_sky.paa";

    };

    class Weather7: Weather1

    {

    sky = "A3\Map_Stratis\Data\sky_veryclear_sky.paa";

    skyR = "A3\Map_Stratis\Data\sky_clear_lco.paa";

    horizon = "A3\Map_Stratis\Data\sky_clear_horizont_sky.paa";

    };

    class Weather2: Weather2

    {

    sky = "A3\Map_Stratis\Data\sky_veryclear_sky.paa";

    skyR = "A3\Map_Stratis\Data\sky_almostclear_lco.paa";

    horizon = "A3\Map_Stratis\Data\sky_almostclear_horizont_sky.paa";

    };

    class Weather3: Weather3

    {

    sky = "A3\Map_Stratis\Data\sky_veryclear_sky.paa";

    skyR = "A3\Map_Stratis\Data\sky_semicloudy_lco.paa";

    horizon = "A3\Map_Stratis\Data\sky_semicloudy_horizont_sky.paa";

    };

    class Weather4: Weather4

    {

    sky = "A3\Map_Stratis\Data\sky_veryclear_sky.paa";

    skyR = "A3\Map_Stratis\Data\sky_cloudy_lco.paa";

    horizon = "A3\Map_Stratis\Data\sky_cloudy_horizont_sky.paa";

    };

    class Weather5: Weather5

    {

    sky = "A3\Map_Stratis\Data\sky_veryclear_sky.paa";

    skyR = "A3\Map_Stratis\Data\sky_mostlycloudy_lco.paa";

    horizon = "A3\Map_Stratis\Data\sky_mostlycloudy_horizont_sky.paa";

    };

    class Weather6: Weather6

    {

    sky = "A3\Map_Stratis\Data\sky_veryclear_sky.paa";

    skyR = "A3\Map_Stratis\Data\sky_overcast_lco.paa";

    horizon = "A3\Map_Stratis\Data\sky_overcast_horizont_sky.paa";

    };

    };

    };

    class SimulWeather

    {

    noiseTexture = "a3\data_f\noise_raw.paa";

    numKeyframesPerDay = 48;

    windSpeedCoef = "10.0f";

    moonIrradianceCoef = "10.0f";

    fadeMaxDistanceKm = 1000.0;

    fadeMaxAltitudeKm = 15.0;

    fadeNumAltitudes = 8;

    fadeNumElevations = 8;

    fadeNumDistances = 8;

    fadeEarthTest = 1;

    autoBrightness = 0;

    autoBrightnessStrength = 0.1;

    cloudGridWidth = 64;

    cloudGridLength = 64;

    cloudGridHeight = 16;

    helperGridElevationSteps = 24;

    helperGridAzimuthSteps = 15;

    helperEffectiveEarthRadius = 160000;

    helperCurvedEarth = 1;

    helperAdjustCurvature = 0;

    helperNumLayers = 120;

    helperMaxDistance = 160000;

    helperNearCloudFade = 0.1;

    helperChurn = 10;

    cloudWidth = 40000;

    cloudLength = 40000;

    wrapClouds = 1;

    noiseResolution = 8;

    noisePeriod = 4.0;

    opticalDensity = 1.5;

    alphaSharpness = 0.5;

    selfShadowScale = 0.05;

    mieAsymmetry = 0.87;

    minimumLightElevationDegrees = 1.0;

    directLightCoef = 0.25;

    indirectLightCoef = 0.025;

    fogStart = 0;

    fogEnd = 2000;

    fogHeight = 2000;

    class DefaultKeyframe

    {

    rayleigh[] = {0.00749,0.01388,0.02878};

    mie[] = {0.0046,0.0046,0.0046};

    haze = 30;

    hazeBaseKm = 5.0;

    hazeScaleKm = 1.0;

    hazeEccentricity = 1;

    brightnessAdjustment = 1.0;

    cloudiness = 0.6;

    cloudBaseKm = 0.85;

    cloudHeightKm = 8.0;

    directLight = 0.4;

    indirectLight = 1.0;

    ambientLight = 3.0;

    noiseOctaves = 5;

    noisePersistence = 1.0;

    fractalAmplitude = 2.8;

    fractalWavelength = 190.0;

    extinction = 5.0;

    diffusivity = 0.001;

    };

    class Overcast

    {

    class Weather1: DefaultKeyframe

    {

    overcast = 0.0;

    cloudiness = 0.0;

    seqFileKeyframe = 0;

    };

    class Weather2: DefaultKeyframe

    {

    overcast = 0.2;

    cloudiness = 0.3;

    diffusivity = 0.5;

    seqFileKeyframe = 0;

    };

    class Weather3: DefaultKeyframe

    {

    overcast = 0.4;

    cloudiness = 0.3;

    seqFileKeyframe = 3;

    };

    class Weather4: DefaultKeyframe

    {

    overcast = 0.5;

    cloudiness = 0.4;

    seqFileKeyframe = 4;

    };

    class Weather5: DefaultKeyframe

    {

    overcast = 0.8;

    cloudiness = 0.9;

    seqFileKeyframe = 5;

    };

    class Weather6: DefaultKeyframe

    {

    overcast = 1.0;

    cloudiness = 1.0;

    seqFileKeyframe = 7;

    };

    };

    };


  7. I didn't save any image, the config is copied largely from Stratis and the links go to A3 and its files. There's something different going on to produce those huge stars but I don't know what it is. Maybe there's a bit of code that scales the stars image or something.


  8. For some reason the stars in the night sky on my custom map are enormous. I copied the lighting and most of the rest of the config from Stratis and cannot see what I've missed. Can anyone help me get the nice looking night sky in the real Stratis? There was an identical issue posted on the ARMA feedback site, but the mod there marked it as solved since he couldn't reproduce it. Well, it isn't solved yet. It occurs in my map too.


  9. The above method works well for different models (just tried it in mine). I'd like to use a similar method to randomize the "camo" selections in my custom uniform: I have selections in my model "camo_shirt", "camo_vest", "camo_pants", and "camo_socks" in my uniform model. I haven't used hiddenSelectionsTextures before so I could use a hand with writing the line hiddenSelectionsTextures[] = {"ART\ART_Character\Data\Full_co.paa"}; How do I have a variation of the above randomizer assign different texture for the shirt, the pants, etc (not changing models).


  10. I'm a little confused by the licensing so I hope someone can put into plain English how I should proceed.

    I'm making a map. All of the buildings and terrain are my original models, textures, etc. For trees and grasses so far I've used A3 plants only. If I update some A2OA plants and trees from the data packages and include them also, does that mean that the map cannot be protected, that it must be unbinarized and released as APL_SA or should I put the A2 plants into a separate pbo and release that as APL-SA while the rest of the assets remain protected?


  11. For more than 6 hours I've been hitting a brick wall so to say in trying to make a simple brick wall multishader. At this stage all I want is to tile a main brick texture, then in certain parts have a different brick show on top of it. I've done this (and very easily) in a number of other programs over the years but I am baffled when it comes to getting it to shade my wall in A3. The MC covers the brick completely and there seems to be no point in my using the _CO textures (which are important in this case). Can someone help? My mask seems to have no effect at all.

    I'm not interested in using an MC map though it seems to be a necessary evil. All I want are my bricks to show, is there a way to have an MC that has little or no effect and allows the brick colors to show?

    My real goal is to have

    2 similar brick tiles mixed to break up the sameness

    overlaid in select areas with a third distinct and different colored brick

    with dirt in places overall

    Anyone have a simple example of a multishader that does that?


  12. I removed the Land_ prefix from the entries in model.cfg and now the door works! It opens in instead of out, but it opens and closes. I think that's just a matter of changing the direction of rotation. I'm still trying to get damage models to show up and I think I really need help on that part, as even on my character models and uniforms and weapons, I can't seem to get that right.

    ---------- Post added at 17:45 ---------- Previous post was at 17:38 ----------

    Here's the model.cfg

    Side note: I have removed the a3 confgs from my project folder, and changed the pboProject Setup to read P:\ART\ART_Arch Thanks for the tips.

    // Note: this model config is created with 4-space [tab] symbols. If you use different settings, the structure may not be as clear.

    class CfgSkeletons

    {

    class Default

    {

    isDiscrete = 1;

    skeletonInherit = "";

    skeletonBones[] = {};

    };

    // Skeleton of undamaged variant of the house, containing doors and windows. Note that glass #3 is not a window but the glass pane of glass door (door #1). Therefore

    // (similar to door handles) it's bones need to be appropriately linked to bones of the door so that it moves along with it when the door is opened/closed.

    class US_Dairy_Blair_skeleton: Default

    {

    skeletonInherit = "Default";

    skeletonBones[] =

    {

    // Pairs: 1st is newly defined bone, second is it's "parent" in the skeleton (bone hierarchy).

    "Door_1", "",

    };

    };

    // Skeleton of damaged variant of the house. It has no bones for windows (since all windows are destroyed); on the other hand it has bones for destroyable parts (Dam_#) and their rubble (Unhide_#).

    // Doors are bound to these destroyable parts of they are part of them, so that they are hidden together by one animation.

    class US_Dairy_Blair_dam_skeleton: Default

    {

    skeletonInherit = "Default";

    skeletonBones[] =

    {

    "Dam_1", "",

    "Unhide_1", "",

    "Dam_2", "",

    "Unhide_2", "",

    "Door_1", "Dam_2",

    };

    };

    };

    class CfgModels

    {

    class Default;

    class US_Dairy_Blair: Default // class name must be the same as name of p3d

    {

    skeletonName = "US_Dairy_Blair_skeleton"; // Set to use above defined skeleton.

    sections[] =

    {

    // Selections from the model that are used in config.cpp for switching textures and materials.

    "DamT_1",

    };

    sectionsInherit = "";

    class Animations

    {

    // Animation for rotating door #1 (without a door handle)

    class Door_1_rot

    {

    type = rotation;

    source = Door_1_source; // Controler defined in class AnimationSources in config.cpp.

    selection = Door_1; // Selection from p3d that also has to be defined as a bone in this model's skeleton.

    axis = Door_1_axis; // Axis of the rotation.

    memory = 1;

    minValue = 0; // Value of the controller at which the rotation will be angle0

    maxValue = 1; // Value of the controller at which the rotation will be angle1

    angle0 = 0;

    angle1 = (rad 110); // "rad" converts from degrees to radians

    };

    };

    };

    // This class represents the damage version. It has the same door animations, misses the window animations and has

    class US_Dairy_Blair_dam: Default

    {

    skeletonName = "US_Dairy_Blair_dam_skeleton"; // Uses skeleton for damage version.

    sections[] = {}; // No sections are needed at this stage.

    sectionsInherit = "";

    class Animations

    {

    // Animations for destructible parts. They are very similar to the glass animations above; only using different selections (= bones) and animation sources.

    class Hitzone_1_hide

    {

    type = hide;

    source = Hitzone_1_source;

    selection = Dam_1;

    minValue = 0;

    maxValue = 1;

    hideValue = 0.99999;

    };

    class Hitzone_1_unhide: Hitzone_1_hide

    {

    selection = Unhide_1;

    hideValue = 0;

    unhideValue = 0.99999;

    };

    class Hitzone_2_hide: Hitzone_1_hide

    {

    source = Hitzone_2_source;

    selection = Dam_2;

    };

    class Hitzone_2_unhide: Hitzone_2_hide

    {

    selection = Unhide_2;

    hideValue = 0;

    unhideValue = 0.99999;

    };

    // Door animations, same as for the undamaged version of the house defined above.

    class Door_1_rot

    {

    type = rotation;

    source = Door_1_source;

    selection = Door_1;

    axis = Door_1_axis;

    memory = 1;

    minValue = 0;

    maxValue = 1;

    angle0 = 0;

    angle1 = (rad 110);

    };

    };

    };

    };

    and the config.cpp

    /* This is a sample of a house with two stage destruction (a damaged version and a ruin), two destructible parts, five doors and eight windows */

    #include "basicdefines_A3.hpp"

    class CfgPatches

    {

    class ART_Arch_Outbuilding

    {

    // requiredAddons[] = {"A3_Structures_F"};

    requiredAddons[] = {"ART_Arch"};

    requiredVersion = 0.1;

    units[] =

    {

    "Land_US_Dairy_Blair",

    "Land_US_Dairy_Blair_dam",

    "Land_US_Dairy_Blair_ruin"

    };

    weapons[] = {};

    };

    };

    #include "\ART\ART_Arch\config_macros_glass.hpp"

    class CfgVehicles

    {

    // Parent class declarations

    class House;

    class House_F: House

    {

    class DestructionEffects;

    };

    class Ruins_F;

    // Class of the house in good state

    // class Land_Test_House_01_F: House_F

    class Land_US_Dairy_Blair: House_F

    {

    scope = 2; // 2 = public = shown in editor

    displayName = "Blair Dairy"; // Name in editor

    model = \ART\ART_Arch\Outbuilding\US_Dairy_Blair.p3d; // Path to model

    vehicleClass = Structures; // category in editor; "Structures" value is a class defined in CfgVehicleClasses

    mapSize = 5; // Scale of icon in editor

    cost = 10000; // Score penalty for destroying the house

    selectionDamage = DamT_1; // Selection which will have textures and materials switched (according to "class Damage definitions") based on total damage of the house

    replaceDamagedHitpoints[] = {Hitzone_1_hitpoint, Hitzone_2_hitpoint}; // Array of hitpoints (subclasses in "class Hitpoints") that can trigger switch to the damaged version when destroyed

    replaceDamaged = "US_Dairy_Blair_dam"; // Classname of the damaged version

    class DestructionEffects: DestructionEffects

    {

    class Ruin

    {

    simulation = ruin;

    type = \ART\ART_Arch\Outbuilding\US_Dairy_Blair_ruin.p3d; // Path to model of ruin used when total damage of the house reaches 1

    position = "";

    intensity = 1;

    interval = 1;

    lifeTime = 1;

    };

    };

    class HitPoints // Entities representing destructible subparts of the house

    {

    class Hitzone_1_hitpoint

    {

    armor = 10;

    material = -1;

    name = Dam_1; // Name of selection in Hit-points lod in p3d

    visual = DamT_1; // Name of selection in resolution lods in p3d that will have it's textures and materials switched (according to "class Damage definitions") based on damage of this hitpoint

    passThrough = 1.0; // Coefficient for how much damage done to this hitpoints is also done to total damage of the house

    radius = 0.375; // Radius of spheres around each vertex of this hitpoint in Hit-points lod. These spheres represent the volume from which this hitpoint takes damage

    convexComponent = Dam_2;

    explosionShielding = 50; // Multiplier for damage taken from explosives

    minimalHit = 0.001; // Minimal damage that can be dealt to the hitpoint. Any lower damage is ignored

    class DestructionEffects //

    {

    class Dust

    {

    simulation = particles; // Visual effect

    type = HousePartDust; // Class of this particular effect, defined in CfgCloudlets

    position = Dam_1_effects; // Point of origin for this effect, defined in Memory lod in p3d

    intensity = 1;

    interval = 1;

    lifeTime = 0.01;

    };

    class Dust2: Dust

    {

    type = HousePartDustLong;

    };

    class Walls: Dust

    {

    type = HousePartWall;

    };

    class DamageAround

    {

    simulation = damageAround; // Effect dealing damage in a radius

    type = DamageAroundHousePart; // Class of this particular effect, defined in CfgDamageAround

    position = Dam_1_effects;

    intensity = 1;

    interval = 1;

    lifeTime = 1;

    };

    };

    };

    class Hitzone_2_hitpoint: Hitzone_1_hitpoint

    {

    name = Dam_2;

    convexComponent = Dam_2;

    class DestructionEffects: DestructionEffects

    {

    class Dust: Dust

    {

    position = Dam_2_effects;

    };

    class Dust2: Dust2

    {

    position = Dam_2_effects;

    };

    class Walls: Walls

    {

    position = Dam_2_effects;

    };

    class DamageAround: DamageAround

    {

    position = Dam_2_effects;

    };

    };

    };

    // Hitpoint of each window, defined using macros from config_macros_glass.hpp to avoid a giant wall of text due to having 14 particle effects each.

    // In practice they are defined in the same manner as the hitpoints above. These follow Glass_#_hitpoint naming trend.

    // First parameter being number id, second being a value for armor parameter and third being a value for radius parameter.

    BIG_GLASS_HITPOINT(1,0.01,0.175)

    BIG_GLASS_HITPOINT(2,0.01,0.175)

    DOOR_GLASS_HITPOINT(3,0.01,0.175)

    DOOR_GLASS_HITPOINT(4,0.01,0.175)

    DOOR_GLASS_HITPOINT(5,0.01,0.175)

    NORMAL_GLASS_HITPOINT(6,0.01,0.175)

    NORMAL_GLASS_HITPOINT(7,0.01,0.175)

    NORMAL_GLASS_HITPOINT(8,0.01,0.175)

    };

    class Damage

    {

    // Texture pairs (below 0.5 health and 0.5+) for switching visuals (can also use generated)

    tex[] =

    {

    // Window textures

    "A3\Structures_F\Data\Windows\window_set_CA.paa",

    "A3\Structures_F\Data\Windows\destruct_half_window_set_CA.paa",

    // Grey color

    "#(argb,8,8,3)color(0.501961,0.501961,0.501961,1.0,co)",

    "#(argb,8,8,3)color(0.294118,0.294118,0.294118,1.0,co)",

    // Brown color

    "#(argb,8,8,3)color(0.501961,0.25098,0,1.0,co)",

    "#(argb,8,8,3)color(0.392157,0.196078,0,1.0,co)",

    // Yellow color

    "#(argb,8,8,3)color(1,1,0.501961,1.0,co)",

    "#(argb,8,8,3)color(0.513725,0.513725,0.203922,1.0,co)",

    // Light grey color

    "#(argb,8,8,3)color(0.752941,0.752941,0.752941,1.0,co)",

    "#(argb,8,8,3)color(0.478431,0.478431,0.478431,1.0,co)",

    // Red color

    "#(argb,8,8,3)color(1,0,0,1.0,co)",

    "#(argb,8,8,3)color(0.701961,0,0,1.0,co)"

    };

    // Unlike textures, materials are not in pairs but in triplets (health: 0 - 0.49, 0.5 - 0.99, 1)

    mat[] =

    {

    "A3\Structures_F\Data\Windows\window_set.rvmat",

    "A3\Structures_F\Data\Windows\destruct_half_window_set.rvmat",

    "A3\Structures_F\Data\Windows\destruct_full_window_set.rvmat"

    };

    };

    class AnimationSources

    {

    // Animation sources for doors

    class Door_1_source

    {

    source = user; // "user" = custom source = not controlled by some engine value

    initPhase = 0; // Initial value of animations based on this source

    animPeriod = 1; // Coefficient for duration of change of this animation

    };

    };

    // This section defined custom actions for action menu. Each class defined here represent one action. Here we have Open+Close pairs of action for each door (1-5)

    class UserActions

    {

    class OpenDoor_1

    {

    displayNameDefault = <img image='\A3\Ui_f\data\IGUI\Cfg\Actions\open_door_ca.paa' size='2.5' />; // This is displayed in the center of the screen just below crosshair. In this case it's an icon, not a text.

    displayName = "Open Door"; // Label of the action used in the action menu itself.

    position = Door_1_trigger; // Point in Memory lod in p3d around which the action is available.

    priority = 0.4; // Priority coefficient used for sorting action in the action menu.

    radius = 1.5; // Range around the above defined point in which you need to be to access the action.

    onlyForPlayer = false; // Defines if the action is available only to players or AI as well.

    condition = ((this animationPhase 'Door_1_rot') < 0.5) && ((this animationPhase 'Hitzone_2_hide') < 0.99999); // Condition for showing the action in action menu. In this case it checks if the door is closed and if the part of the house in which the door is located hasn't been destroyed yet).

    statement = ([this, 'Door_1_rot'] execVM "\ART\ART_Arch\Scripts\DoorNoHandle_open.sqf"); // Action taken when this action is selected in the action menu. In this case it runs a script that opens the door.

    };

    class CloseDoor_1: OpenDoor_1

    {

    displayName = "Close Door";

    priority = 0.2;

    condition = ((this animationPhase 'Door_1_rot') >= 0.5) && ((this animationPhase 'Hitzone_2_hide') < 0.99999); // Checks if the door is currently open and not destroyed.

    statement = ([this, 'Door_1_rot'] execVM "\ART\ART_Arch\scripts\DoorNoHandle_close.sqf");

    };

    };

    // Here are references binding specific positions in Path lod in p3d to specific actions from "class UserActions" for AI to know when to use which doors. The actionBegin# and ActionEnd# is a hardcoded naming system.

    actionBegin1 = OpenDoor_1;

    actionEnd1 = OpenDoor_1;

    // Amount of doors of this house; a parameter for easy processing of all doors on different houses by scripts.

    numberOfDoors = 1;

    };

    // Damaged version of the house. It contains rather few changes compared to the undamaged house class; mostly just disabling features not needed on this variant anymore.

    class Land_US_Dairy_Blair_dam: Land_US_Dairy_Blair

    {

    scope = 1; // 1 = accessible by scripts but not shown in editor

    displayName = "Blair Dairy, Damaged)";

    model = \ART\ART_Arch\Outbuilding\US_Dairy_Blair_dam.p3d;

    // Reset of object switching.

    replaceDamagedHitpoints[] = {};

    replaceDamaged = "";

    // Reset of texture and material switching.

    class Damage

    {

    tex[] = {};

    mat[] = {};

    };

    class AnimationSources

    {

    // Adding animation sources for two destructible parts of the house.

    class Hitzone_1_source

    {

    source = Hit;

    hitpoint = Hitzone_1_hitpoint;

    raw = 1;

    };

    class Hitzone_2_source: Hitzone_1_source

    {

    hitpoint = Hitzone_2_hitpoint;

    };

    // Defining door animation sources again since this "class AnimationSources" is not inherited, it's rewritten (to get rid of animation sources for windows which are all destroyed in this stage).

    class Door_1_source

    {

    source = user;

    initPhase = 0;

    animPeriod = 1;

    };

    };

    };

    // Simple class for ruins of the house.

    class Land_US_Dairy_Blair_ruin: Ruins_F

    {

    scope = 1;

    model = \ART\ART_Arch\Outbuilding\US_Dairy_Blair_ruin.p3d;

    };

    };

    Side note: I have removed the a3 confgs from my project folder, and changed the pboProject Setup to read P:\ART\ART_Arch Thanks for the tips.

×