I finally finished the texturing and am quite pleased with the outcome. Now it's just the matter of adding any last things to the mule, creating a better Remote Control script, and fixing anything that may need to be fixed.
I finally finished the texturing and am quite pleased with the outcome. Now it's just the matter of adding any last things to the mule, creating a better Remote Control script, and fixing anything that may need to be fixed.
@Gnat I'm still having no luck with getting the Gear action to show up when I'm behind the MULE. I'll post the Config.cpp so you can check what may be wrong. I was wondering because of the edit lod you put in, could it have messed up the cargo/supply memory point in the memory lod?
Config.cpp
PHP Code:class CfgPatches
{
class CAWheeled
{
units[] = {"pt101_mule","pt101_ugvcontroller"};
weapons[] = {};
requiredVersion = 0.1;
requiredAddons[] = {"CAWheeled_E"};
};
};
class CfgWeaponClasses
{
class UGV
{
displayName = "UGV - UGV Controller";
};
};
class CfgWeapons
{
class ACE_MX2A;
class pt101_ugvcontroller: ACE_MX2A
{
displayName = "UGV Controller";
weaponClass = "UGV";
model = "\pt101_mule\pt101_ugvcontroller.p3d";
};
};
class CfgVehicleClasses
{
class UGV
{
displayName = "UGV - MULE";
};
};
class CfgVehicles
{
class LAV25;
class Mule_Step1 : LAV25
{
scope = 1;
class NewTurret;
class Turrets;
class MainTurret;
class CommanderOptics;
class viewpilot;
class viewgunner;
class AnimationSources;
class HitPoints;
};
class pt101_mule: Mule_Step1
{
faction = "BIS_US";
displayName = "MULE";
// vehicleClass = "UGV";
model = "\pt101_mule\pt101_mule.p3d";
maxSpeed = 60;
animated = true;
scope = 2;
picture = "\Ca\wheeled\data\ico\stryker_ICV_CA.paa";
Icon = "\Ca\wheeled\data\map_ico\icomap_Stryker_CA.paa";
mapSize = 10;
nameSound = "stryker";
commanderCanSee = 31;
gunnerCanSee = 31;
driverOpticsModel = "\ca\Wheeled\optika_stryker_driver";
soundEngine[] = {cawheeledDataSoundStryker_ICV_engine,db-10,0.8};
soundGear[] = {cawheeledDataSoundshifter_v3,db-65,1};
SoundGetIn[] = {cawheeledDataSoundM151A1_door_v1,db-45,1};
SoundGetOut[] = {cawheeledDataSoundM151A1_door_v1,db-50,1};
enableGPS = true;
transportSoldier = 0;
side = 1;
crew = "US_Soldier_Crew_EP1";
fuelCapacity = 246;
armor = 150;
damageResistance = 0.01199;
crewVulnerable = false;
threat[] = {0.5, 0.5, 0.5};
viewCargoShadow = true;
viewCargoShadowDiff = 0.05;
viewDriverShadowDiff = 0.05;
viewGunnerShadowDiff = 0.05;
hideProxyInCombat = 1;
transportMaxWeapons = 5000;
transportMaxMagazines = 20000;
transportMaxBackpacks = 25;
supplyRadius = 1.4;
gunnerHasFlares = true;
//---------------------------
// Copy of LAV-25 Base View definitions
//---------------------------
class ViewOptics
{
initAngleX = 0;
minAngleX = -30;
maxAngleX = 30;
initAngleY = 0;
minAngleY = -100;
maxAngleY = 100;
initFov = 0.466;
minFov = 0.466;
maxFov = 0.466;
};
class ViewPilot
{
initAngleX = 10;
minAngleX = -65;
maxAngleX = 85;
initAngleY = 20;
minAngleY = -150;
maxAngleY = 150;
initFov = 0.7;
minFov = 0.25;
maxFov = 1.4;
};
//---------------------------
// Copy of LAV-25 Base Turret definitions
//---------------------------
class Turrets: Turrets
{
class MainTurret: MainTurret
{
weapons[] = {"M242","M240_veh"};
magazines[] = {"210Rnd_25mm_M242_APDS","210Rnd_25mm_M242_HEI","1200Rnd_762x51_M240"};
soundServo[] = {"\ca\Weapons\Data\Sound\gun_elevate",0.0177828,1,15};
minElev = -4.5;
maxElev = 74;
minTurn = -360;
maxTurn = 360;
gunnerAction = "LAV25_Gunner_out";
gunnerInAction = "LAV25_Gunner";
forceHideGunner = 0;
gunnerOpticsModel = "\ca\weapons\2Dscope_LAV_7";
gunnerOutOpticsModel = "";
memoryPointGun = "machinegun";
gunBeg = "muzzle_1";
gunEnd = "chamber_1";
body = "MainTurret";
gun = "MainGun";
animationSourceBody = "MainTurret";
animationSourceGun = "MainGun";
gunnerForceOptics = 1;
outGunnerMayFire = 0;
startEngine = 1;
primaryGunner = 4;
class HitPoints: HitPoints
{
class HitTurret
{
armor = 0.8;
material = -1;
name = "vez";
visual = "vez";
passThrough = 1;
};
};
selectionFireAnim = "zasleh_1";
class ViewGunner
{
initAngleX = 5;
minAngleX = -65;
maxAngleX = 85;
initAngleY = 0;
minAngleY = -150;
maxAngleY = 150;
initFov = 0.7;
minFov = 0.25;
maxFov = 1.1;
};
gunnerOpticsEffect[] = {"TankGunnerOptics2","OpticsBlur1","OpticsCHAbera1"};
class ViewOptics
{
initAngleX = 0;
minAngleX = -30;
maxAngleX = 30;
initAngleY = 0;
minAngleY = -100;
maxAngleY = 100;
initFov = 0.2;
minFov = 0.05;
maxFov = 0.2;
};
class Turrets
{
class CommanderOptics: NewTurret
{
proxyType = "CPCommander";
proxyIndex = 1;
gunnerName = "commander";
primaryGunner = 0;
primaryObserver = 1;
gunnerOpticsShowCursor = 0;
body = "obsTurret";
gun = "obsGun";
animationSourceBody = "obsTurret";
animationSourceGun = "obsGun";
animationSourceHatch = "hatchCommander";
soundServo[] = {"",0.00316228,1};
startEngine = 0;
gunBeg = "";
gunEnd = "";
minElev = -4;
maxElev = 20;
initElev = 0;
minTurn = -360;
maxTurn = 360;
initTurn = 0;
commanding = 2;
viewGunnerInExternal = 0;
gunnerOpticsModel = "\ca\weapons\2Dscope_com2";
gunnerOutOpticsModel = "";
gunnerOutOpticsColor[] = {0,0,0,1};
gunnerOutForceOptics = 0;
gunnerOutOpticsShowCursor = 0;
memoryPointGunnerOutOptics = "commander_weapon_view";
memoryPointGunnerOptics = "commanderview";
memoryPointsGetInGunner = "pos driver";
memoryPointsGetInGunnerDir = "pos driver dir";
class ViewGunner
{
initAngleX = 5;
minAngleX = -65;
maxAngleX = 85;
initAngleY = 0;
minAngleY = -150;
maxAngleY = 150;
initFov = 0.7;
minFov = 0.25;
maxFov = 1.1;
};
gunnerOpticsEffect[] = {"TankGunnerOptics2","OpticsBlur1","OpticsCHAbera1"};
class ViewOptics
{
initAngleX = 0;
minAngleX = -30;
maxAngleX = 30;
initAngleY = 0;
minAngleY = -100;
maxAngleY = 100;
initFov = 0.3;
minFov = 0.025;
maxFov = 0.3;
};
gunnerInAction = "LAV25_Commander";
gunnerAction = "LAV25_Commander_Out";
outGunnerMayFire = 1;
weapons[] = {"SmokeLauncher"};
magazines[] = {"SmokeLauncherMag","SmokeLauncherMag"};
stabilizedInAxes = 0;
};
};
};
};
};
};
---------- Post added at 01:28 PM ---------- Previous post was at 01:27 PM ----------
Here an updated picture of the MULE being 100% textured. I'm pleased with it myself, but I know there can always be improvements, so I'm not going to stress it, since it it my first time texturing something, and due to not being able to create a UV Map for the UV editor isn't working anymore for some reason.
http://i1138.photobucket.com/albums/...e_textured.jpg (714 kB)
Last edited by JSF 82nd Reaper; May 7 2012 at 17:43.
Unfortunately I got really carried away with texturing and now have created 5 variations of the MULE, and I don't know how to get them all included in the Config.cpp and Model.cfg files. I was able to get one of the Models to work, but now the Machine-gun's firing animation doesn't work anymore, but all the other animation do.
![]()
Here's are pictures of the 5 different variations of the MULE:
MULE Woodland
http://i1138.photobucket.com/albums/...LEWoodland.jpg (557 kB)
MULE Tan
http://i1138.photobucket.com/albums/...ns/MULETan.jpg (576 kB)
MULE Multicam
http://i1138.photobucket.com/albums/...LEMulticam.jpg (573 kB)
MULE Digital Desert
http://i1138.photobucket.com/albums/...italDesert.jpg (563 kB)
MULE Desert
http://i1138.photobucket.com/albums/...MULEDesert.jpg (541 kB)
Odd about the Gear
Try changing
transportSoldier = 1;
As for multiple textures, you don't need multiple models, you can use these parameters;
hiddenSelections[]={"skin","wingleft","wingright"};
hiddenSelectionsTextures[] = {"\csj_p38\data\p38_skinA.paa","\csj_p38\data\p38_ skinB.paa","\csj_p38\data\p38_skinB.paa","",""};
in each vehicle class definition.
How many textures are you using for each vehicle, just 1?
Whats their file names?
@Gnat There are 4 seperate textures on each vehicle. The camera, lights, and suspension on each vehicle are the same "mule_tan_co.paa". Also all the wheels on each vehicle share the same texture as well (I think it's called the "humvee_details_co.paa") Then the hull's and turret's on each vehicle is what changes; One vehicle has "mule_digital_desert_co.paa", another vehicle uses the "mule_desert_co.paa", then "mule_multicam_co.paa", "mule_woodland_co.paa", and lastly the first MULE that I textured "mule_tan_co.paa".
So I can delete the other four Models, and only have to add a script in? If so I don't know where to put it in the config.cpp file, and the model.cfg.
---------- Post added at 02:17 PM ---------- Previous post was at 12:34 PM ----------
@Gnat I put the Config.cpp and Model.cfg back to their original state when you sent the edits back to me via email. I've also deleted the extra MULE models and am now back to just the one with its original name "pt101_mule".
I looked into many discussions about hiddenSelections and hiddenSelectionsTextures, and only understand to put the following lines into the Class CfgVehicles of the Config.cpp:
I also added the "hull" and "turret" to the "sections" area in the Model.cfg after creating the "hull" and "turret" to lod 1's named selections. So what is needed so when someone places the MULE in the editor of the game they're able to choose what variant of the MULE they want?PHP Code:hiddenSelections[] =
{
"hull",
"turret"
};
hiddenSelectionsTexture[] =
{
"\pt101_mule\data\mule_desert_co.paa",
"\pt101_mule\data\mule_digital_desert_co.paa",
"\pt101_mule\data\mule_multicam_co.paa",
"\pt101_mule\data\mule_woodland_co.paa"
};
Will I have to add the tan variant texture to the hiddenSelectionsTexture as well as keeping the "turret" and the "hull" of the MULE untextured?
Last edited by JSF 82nd Reaper; May 8 2012 at 19:23.
Wrong usage of those parameters.
- Ignore the textures that are the same on all vehicles.
- In O2, in the List of Textures window, CONTROL DOUBLE-CLICK the texture that is 'changing' (mule_desert_co.paa ? )
- This will highlight all faces with that texture.
- With these faces selected, in the Named Properties window, RIGHT-CLICK->NEW, call it "Skin1"
- Do this naming in every LOD where that texture is in use.
- Save the model
- In the MODEL.CFG, add "Skin1" to the sections[]= list.
Now in CONFIG.CPP between the last }; and the second last }; add;
PHP Code:class pt101_mule02: pt101_mule01
{
displayName = "MULE DD";
hiddenSelections[] = {"Skin1"};
hiddenSelectionsTexture[] = {"\pt101_mule\data\mule_digital_desert_co.paa"};
};
class pt101_mule03: pt101_mule01
{
displayName = "MULE MC";
hiddenSelections[] = {"Skin1"};
hiddenSelectionsTexture[] = {"\pt101_mule\data\mule_multicam_co.paa"};
};
class pt101_mule04: pt101_mule01
{
displayName = "MULE WL";
hiddenSelections[] = {"Skin1"};
hiddenSelectionsTexture[] = {"\pt101_mule\data\mule_woodland_co.paa"};
};
@Gnat it's working but not working at the same time. I can place 5 variations of the MULE, but they all look the same and do not have the texture that is suppose to be on them. I believe they have the LAV texture, which is one of the classes that are being used in the config.cpp file for the optics, turret, and weaponry.
Should work.
Post full copy of model.cfg and config.cpp
@Gnat Here's the full Model.cfg and Config.cpp
Config.cpp
Model.cfgPHP Code:class CfgPatches
{
class CAWheeled
{
units[] = {"pt101_mule","pt101_ugvcontroller"};
weapons[] = {};
requiredVersion = 0.1;
requiredAddons[] = {"CAWheeled_E"};
};
};
class CfgVehicleClasses
{
class UGV
{
displayName = "UGV - MULE";
};
};
class CfgVehicles
{
class LAV25;
class Mule_Step1 : LAV25
{
scope = 1;
class NewTurret;
class Turrets;
class MainTurret;
class CommanderOptics;
class viewpilot;
class viewgunner;
class AnimationSources;
class HitPoints;
};
class pt101_mule01: Mule_Step1
{
faction = "BIS_US";
displayName = "MULE T";
vehicleClass = "UGV";
model = "\pt101_mule\pt101_mule.p3d";
maxSpeed = 60;
animated = true;
scope = 2;
picture = "\Ca\wheeled\data\ico\stryker_ICV_CA.paa";
Icon = "\Ca\wheeled\data\map_ico\icomap_Stryker_CA.paa";
mapSize = 10;
nameSound = "stryker";
commanderCanSee = 31;
gunnerCanSee = 31;
driverOpticsModel = "\ca\Wheeled\optika_stryker_driver";
soundEngine[] = {cawheeledDataSoundStryker_ICV_engine,db-10,0.8};
soundGear[] = {cawheeledDataSoundshifter_v3,db-65,1};
SoundGetIn[] = {cawheeledDataSoundM151A1_door_v1,db-45,1};
SoundGetOut[] = {cawheeledDataSoundM151A1_door_v1,db-50,1};
enableGPS = true;
transportSoldier = 0;
side = 1;
crew = "US_Soldier_Crew_EP1";
fuelCapacity = 246;
armor = 150;
damageResistance = 0.01199;
crewVulnerable = false;
threat[] = {0.5, 0.5, 0.5};
viewCargoShadow = true;
viewCargoShadowDiff = 0.05;
viewDriverShadowDiff = 0.05;
viewGunnerShadowDiff = 0.05;
hideProxyInCombat = 1;
gunnerHasFlares = true;
//---------------------------
// Copy of LAV-25 Base View definitions
//---------------------------
class ViewOptics
{
initAngleX = 0;
minAngleX = -30;
maxAngleX = 30;
initAngleY = 0;
minAngleY = -100;
maxAngleY = 100;
initFov = 0.466;
minFov = 0.466;
maxFov = 0.466;
};
class ViewPilot
{
initAngleX = 10;
minAngleX = -65;
maxAngleX = 85;
initAngleY = 20;
minAngleY = -150;
maxAngleY = 150;
initFov = 0.7;
minFov = 0.25;
maxFov = 1.4;
};
//---------------------------
// Copy of LAV-25 Base Turret definitions
//---------------------------
class Turrets: Turrets
{
class MainTurret: MainTurret
{
weapons[] = {"M242","M240_veh"};
magazines[] = {"210Rnd_25mm_M242_APDS","210Rnd_25mm_M242_HEI","1200Rnd_762x51_M240"};
soundServo[] = {"\ca\Weapons\Data\Sound\gun_elevate",0.0177828,1,15};
minElev = -4.5;
maxElev = 74;
minTurn = -360;
maxTurn = 360;
gunnerAction = "LAV25_Gunner_out";
gunnerInAction = "LAV25_Gunner";
forceHideGunner = 0;
gunnerOpticsModel = "\ca\weapons\2Dscope_LAV_7";
gunnerOutOpticsModel = "";
memoryPointGun = "machinegun";
gunBeg = "muzzle_1";
gunEnd = "chamber_1";
body = "MainTurret";
gun = "MainGun";
animationSourceBody = "MainTurret";
animationSourceGun = "MainGun";
gunnerForceOptics = 1;
outGunnerMayFire = 0;
startEngine = 1;
primaryGunner = 4;
class HitPoints: HitPoints
{
class HitTurret
{
armor = 0.8;
material = -1;
name = "vez";
visual = "vez";
passThrough = 1;
};
};
selectionFireAnim = "zasleh_1";
class ViewGunner
{
initAngleX = 5;
minAngleX = -65;
maxAngleX = 85;
initAngleY = 0;
minAngleY = -150;
maxAngleY = 150;
initFov = 0.7;
minFov = 0.25;
maxFov = 1.1;
};
gunnerOpticsEffect[] = {"TankGunnerOptics2","OpticsBlur1","OpticsCHAbera1"};
class ViewOptics
{
initAngleX = 0;
minAngleX = -30;
maxAngleX = 30;
initAngleY = 0;
minAngleY = -100;
maxAngleY = 100;
initFov = 0.2;
minFov = 0.05;
maxFov = 0.2;
};
class Turrets
{
class CommanderOptics: NewTurret
{
proxyType = "CPCommander";
proxyIndex = 1;
gunnerName = "commander";
primaryGunner = 0;
primaryObserver = 1;
gunnerOpticsShowCursor = 0;
body = "obsTurret";
gun = "obsGun";
animationSourceBody = "obsTurret";
animationSourceGun = "obsGun";
animationSourceHatch = "hatchCommander";
soundServo[] = {"",0.00316228,1};
startEngine = 0;
gunBeg = "";
gunEnd = "";
minElev = -4;
maxElev = 20;
initElev = 0;
minTurn = -360;
maxTurn = 360;
initTurn = 0;
commanding = 2;
viewGunnerInExternal = 0;
gunnerOpticsModel = "\ca\weapons\2Dscope_com2";
gunnerOutOpticsModel = "";
gunnerOutOpticsColor[] = {0,0,0,1};
gunnerOutForceOptics = 0;
gunnerOutOpticsShowCursor = 0;
memoryPointGunnerOutOptics = "commander_weapon_view";
memoryPointGunnerOptics = "commanderview";
memoryPointsGetInGunner = "pos driver";
memoryPointsGetInGunnerDir = "pos driver dir";
class ViewGunner
{
initAngleX = 5;
minAngleX = -65;
maxAngleX = 85;
initAngleY = 0;
minAngleY = -150;
maxAngleY = 150;
initFov = 0.7;
minFov = 0.25;
maxFov = 1.1;
};
gunnerOpticsEffect[] = {"TankGunnerOptics2","OpticsBlur1","OpticsCHAbera1"};
class ViewOptics
{
initAngleX = 0;
minAngleX = -30;
maxAngleX = 30;
initAngleY = 0;
minAngleY = -100;
maxAngleY = 100;
initFov = 0.3;
minFov = 0.025;
maxFov = 0.3;
};
gunnerInAction = "LAV25_Commander";
gunnerAction = "LAV25_Commander_Out";
outGunnerMayFire = 1;
weapons[] = {"SmokeLauncher"};
magazines[] = {"SmokeLauncherMag","SmokeLauncherMag"};
stabilizedInAxes = 0;
};
};
};
};
};
class pt101_mule02: pt101_mule01
{
displayName = "MULE DD";
hiddenSelections[] = {"Skin1"};
hiddenSelectionsTexture[] = {"\pt101_mule\data\mule_digital_desert_co.paa"};
};
class pt101_mule03: pt101_mule01
{
displayName = "MULE MC";
hiddenSelections[] = {"Skin1"};
hiddenSelectionsTexture[] = {"\pt101_mule\data\mule_multicam_co.paa"};
};
class pt101_mule04: pt101_mule01
{
displayName = "MULE WL";
hiddenSelections[] = {"Skin1"};
hiddenSelectionsTexture[] = {"\pt101_mule\data\mule_woodland_co.paa"};
};
};
PHP Code:class CfgSkeletons
{
class Default;
class pt101_mule: Default
{
isDiscrete=1;
skeletonInherit="";
skeletonName="pt101_mule";
skeletonBones[]=
{
"MainTurret","";
"MainGun","MainTurret",
"canister","MainTurret",
"comturret","MainTurret",
"camera","MainTurret",
"CameraUp","camera",
"wheel1","",
"wheel2","",
"wheel3","",
"wheel4","",
"wheel5","",
"wheel6",""
};
};
};
class CfgModels
{
class Default
{
isDiscrete="true";
skeletonInherit="";
skeletonBones[]={};
};
class pt101_mule: Default
{
skeletonName="pt101_mule";
sectionsInherit="";
sections[]=
{
"MainTurret",
"MainGun",
"canister",
"camera",
"CameraUp",
"wheel1",
"wheel2",
"wheel3",
"wheel4",
"wheel5",
"wheel6",
"Skin1"
};
class Animations
{
class FrontWheelL
{
type="rotationX";
source="wheel";
selection="wheel1";
axis="wheel1_axis";
memory="1";
sourceAddress="loop";
minValue=0;
maxValue=2;
angle0="0";
angle1="rad -360";
};
class FrontWheelR
{
type="rotationX";
source="wheel";
selection="wheel2";
axis="wheel2_axis";
memory="1";
sourceAddress="loop";
minValue=0;
maxValue=2;
angle0="0";
angle1="rad -360";
};
class CenterWheelL
{
type="rotationX";
source="wheel";
selection="wheel3";
axis="wheel3_axis";
memory="1";
sourceAddress="loop";
minValue=0;
maxValue=2;
angle0="0";
angle1="rad -360";
};
class CenterWheelR
{
type="rotationX";
source="wheel";
selection="wheel4";
axis="wheel4_axis";
memory="1";
sourceAddress="loop";
minValue=0;
maxValue=2;
angle0="0";
angle1="rad -360";
};
class RearWheelL
{
type="rotationX";
source="wheel";
selection="wheel5";
axis="wheel5_axis";
memory="1";
sourceAddress="loop";
minValue=0;
maxValue=2;
angle0="0";
angle1="rad -360";
};
class RearWheelR
{
type="rotationX";
source="wheel";
selection="wheel6";
axis="wheel6_axis";
memory="1";
sourceAddress="loop";
minValue=0;
maxValue=2;
angle0="0";
angle1="rad -360";
};
class MainTurret
{
type="rotationY";
source="mainTurret";
selection="MainTurret";
axis="turret_axis";
memory="1";
sourceAddress="loop";
minValue="rad -360";
maxValue="rad +360";
angle0="rad -360";
angle1="rad +360";
};
class MainGun
{
type="rotationX";
source="MainGun";
selection="MainGun";
axis="gun_axis";
memory="1";
minValue="rad -360";
maxValue="rad +360";
angle0="rad -360";
angle1="rad +360";
};
class MiniGun
{
type="rotationZ";
source="revolving";
selection="minigun";
axis="minigun_axis";
memory="1";
sourceAddress="loop";
minValue=0;
maxValue=1;
angle0="rad -360";
angle1="rad +360";
};
class Camera
{
type="rotationY";
source="obsTurret";
selection="camera";
axis="camera_axis";
memory="1";
minValue="rad -360";
maxValue="rad +360";
angle0="rad -360";
angle1="rad +360";
};
class CameraUp
{
type="rotationX";
source="obsGun";
selection="cameraup";
axis="cameraup_axis";
memory="1";
minValue="rad -360";
maxValue="rad +360";
angle0="rad -360";
angle1="rad +360";
};
class Canister
{
type="rotationX";
source="MainGun";
selection="canister";
axis="canister_axis";
memory="1";
angle0="rad 0";
angle1="rad +20";
};
};
};
};