IPB


Welcome Guest ( Log In | Register )

 Forum Rules Forum Rules
> my tuttorials :D, my tutorials :D
vilas
post Jul 13 2007, 11:15
Post #1


Senior Member
Group Icon

Group: Addon Maker
Posts: 286
Joined: 27-June 07
From: Warsaw, Poland
Member No.: 937



for the first i would like to apologise for using so much BIG letters, but it is because i want make something clearly visible :
so there is tutorial for "slave turret" and configs for weapon, vehicle, even imported from OFP, but no modeling tutorial, just config tutorial biggrin.gif
this tutorial has no materials, normalmaps classes, because it was written some time ago and now it is "for the public" biggrin.gif
this tutorial can help begginers, advanced members know about this all biggrin.gif

1)weapon
2)vehicle as tank or car using OFP selections from model (even using this tutorial you can import OFP vehicles)

so if you have OFP model of vehicle just:


make folder, in this folder OFP MLOD model+textures , config, (skeletons.h file if vehicle)

ad1)

open weapon model, place model such as it will fit hands of soldier


remember that pistol in arma is some cm to left, not in center of 0,0 , it you have to do by try and again

in MEMORY LOD you must give "eye" point

rest is in config

to make zasleh work:

==================================================

#define private 0
#define protected 1
#define public 2

#define true 1
#define false 0

#define TEast 0
#define TWest 1
#define TGuerrila 2
#define TCivilian 3
#define TSideUnknown 4
#define TEnemy 5
#define TFriendly 6
#define TLogic 7


class CfgPatches {
class my_addon_name {
units[] = {"my_weapon, my_soldier"};
requiredVersion = 1.07;
};
};
class CfgVehicleClasses
{
class my_class1
{
displayName = "class name in editor";
};

};

class CfgModels
{
class Default{};
class MY_Weapon_define
{
sectionsInherit="";
sections[]={zasleh};
selectionFireAnim = "zasleh";
};
class MY_WEAPON_MODEL1 : MY_Weapon_define{};
class MY_WEAPON_MODEL2,3,4..... AND OTHER NAMES : MY_Weapon_define{};

};

class CfgMagazines {
class Default; // External class reference
class CA_Magazine : Default {};
class VehicleMagazine : CA_Magazine {};
class CA_LauncherMagazine : CA_Magazine {};

class MY_MAGAZINE_DEFINITION : CA_Magazine {
scope = 2;
displayName = RIFLE MAGAZINE;
type = 16;
ammo = "B_545x39_Ball";WHAT KIND OF AMMO IS USED
count = 20; MAGAZINE CAPACITY
initSpeed = 800;
picture = "\CA\weapons\data\equip\m_ak74_ca.paa";
};
};

class Mode_SemiAuto {};

class Mode_Burst : Mode_SemiAuto {};

class Mode_FullAuto : Mode_SemiAuto {};

class cfgWeapons {
class Default; // External class reference
class PistolCore; // External class reference
class RifleCore; // External class reference
class MGunCore; // External class reference
class LauncherCore; // External class reference
class GrenadeCore; // External class reference
class CannonCore; // External class reference
class GrenadeLauncher : Default {};


IF ADDON IS JUST NEW LOOKING AK , USING AK DEFINITIONS, LIKE ADDON OF ZASTAVA OR OTHER, INSTEAD OF AK74 THERE CAN BE M16A2, MP5A5 AND MANY MANY MORE:
class AK74 : Rifle {};
class MY_RIFLE1 : AK74 {
scope = 2;
value = 0;
model = "\MY_FOLDER\MY_WEAPON_MODEL1"; THE SAME NAME MUST BE IN CFG_MODELS DEFINITION !
displayName = MY RIFLE 1;
picture = "\MY_FOLDER\MY_WEAPON_PICTURE.PAA"; IT CAN BE PAA, PAC, JPG, BUT 128*256, 128*512
UiPicture = "\CA\weapons\data\Ico\i_regular_CA.paa";
opticsZoomMin = 0.3; SMALL ZOOM OF RIGHT BUTTON OF MOUSE
opticsZoomMax = 0.42; NORMAL VIEW IN GAME
IF WEAPON IS SNIPER RIFLE, YOU JUST GIVE HERE 0.1-0.04 IN TWO CASES

optics = 1;
drySound[] = {"\ca\Weapons\Data\Sound\AK47_dry_v1", 0.000316228, 1};
reloadMagazineSound[] = {"\ca\Weapons\Data\Sound\AK47_fill_v3", 0.00562341, 1};
modes[] = {"Single", "FullAuto"};
magazines[] = {MY_MAGAZINE_DEFINITION};

class Single : Mode_SemiAuto {
sound[] = {"\ca\Weapons\Data\Sound\AK74_1_SS_A", 10.0, 1};
reloadTime = 0.1;
recoil = "AK74Recoil";RECOIL is important parameter, in game there are some recoils defined for different weapons
recoilProne = "AK74Recoil";
dispersion = 0.002; IN GAME SUCH ACCURACY IS IN THE MIDDLE OF M16 AND AK, IF YOU WANNA MAKE LOWER ACCURACY, FOR WORSE WEAPON GIVE 0.003-0.004, FOR VERY ACCURATE RIFLE GIVE 0.001, FOR MACHINEGUN GIVE 0.0045, FOR MACHINE PISTOL GIVE 0.005
minRange = 2;
minRangeProbab = 0.1; IF YOU HAD PROBABLITY IN SCHOOL YOU KNOW WHAT IS IT[B]
midRange = 200;[B] USUAL DISTANCE TO FIRE BY AI SOLDIERS IN SINGLE MODE

midRangeProbab = 0.6;
maxRange = 400; THIS DECIDES HOW FAR AI WILL FIRE TO ENEMY, TAKE IT FROM REAL WEAPON AND REMEBER THAT:
1) MACHINE PISTOL IS USED FOR 100 M,
2) MILITARY RIFLE FOR 250-500 METERS, REMEBER AKSU AND SHORT BARREL RIFLES HAVE SMALLER DISTANCE THAN WEAPON WITH LONG BARREL, AND THEY HAVE SMALLER ACCURACY,
3) SNIPER YOU CAN GIVE 600-800, BUT
4) FOR MACHINEGUN GIVE VERY SMALL DISTANCE, BECAUSE MACHINEGUN FIRES AUTO FIRE, NOT SINGLE !

maxRangeProbab = 0.02;
};

class FullAuto : Mode_FullAuto {
sound[] = {"\ca\Weapons\Data\Sound\AK74_1_SS_A", 10.0, 1};
reloadTime = 0.1;
ffCount = 30;
recoil = "AK74Recoil";
recoilProne = "AK74Recoil";
dispersion = 0.005;
minRange = 2;
minRangeProbab = 0.1;
midRange = 50;
midRangeProbab = 0.7;
maxRange = 60; FOR OTHER WEAPONS LIKE MACHINEGUNS GIVE THIS MUCH MORE, FOR MACHINEGUN THIS MUST BE BIGGER VALUE THAN IN SINGLE MODE, so for machinegun you can give here 400-600 depending of real parameters
maxRangeProbab = 0.05;
};

class Library {
libTextDesc = THIS IS RIFLE DESCRIPTION, THIS RIFLE HAS CALIBER, IT IS LONG, IT USES SINGLE FIRE MOD, IT WAS USED BY MY ARMY AND MORE, THIS COMMENT IS SHOWN IN WEAPON MENU;
};
};


IF ADDON CONTAINS ONLY NEW MODEL OF AK74, FOR EXAMPLE AK74S, AK74M, WHEN ONLY MODEL IS DIFFERENT FROM ORGINAL WEAPON

class MY_RIFLE2: AK74 {
scope = 2;
value = 0;
model = "\MY_FOLDER\MY_WEAPON_MODEL2";
displayName = MY RIFLE 2;
picture = "\MY_FOLDER\MY_WEAPON_PICTURE.PAA";
UiPicture = "\CA\weapons\data\Ico\i_regular_CA.paa";

};


};



======================

REMEMBER !!!

EVERY CLASS DEFITION MUST BE ENDED BY }; , BECAUSE TWO DOTS : WILL CAUSE ERROR
IN ACCURACY ALWAYS DOT .
COMA , IS USED WHEN MANY THINGS ARE DEFINED IN ONE CLASS


WHEN DEFITION OF WEAPON IS ENDED, NOW SOLDIER WITH WEAPON


class CfgVehicles {
class Land; // External class reference
class Man : Land {};
class Soldier : Man {};
class SoldierGB : Soldier {};
class SoldierWB : Soldier {};
class SoldierEB : Soldier {};

class MY_SOLDIER_RIFLEMAN1 : SoldierEB {
vehicleClass = "MY_CLASS1";
displayName = "MAN WITH MY WEAPON1";
scope = public;
weapons[] = {"MY_RIFLE1", "throw", "Put"};
magazines[] = {MY_MAGAZINE_DEFINITION,MY_MAGAZINE_DEFINITION,MY_MAGAZINE_DEFINITION};

};
class MY_SOLDIER_RIFLEMAN2 : SoldierEB {
vehicleClass = "MY_CLASS1";
displayName = "MAN WITH MY WEAPON2";
scope = public;
weapons[] = {"MY_RIFLE2", "throw", "Put"};
magazines[] = {30Rnd_545x39_AK,30Rnd_545x39_AK,30Rnd_545x39_AK};

};

}; <<< THIS MEANS END OF FILE, IF IN ADDON THERE IS NEW CAR THAN WE CANNOT PUT THIS HERE



AD2) VEHICLES

ADDON TAKEN FROM OFP OR NEW MADE, IT MUST HAVE GOOD SELECTIONS AS KOLO, OTOCVEZ, OTOCHLAVEN, IT MUST HAVE GOOD MEMORY POINTS AND ETC.
BUT VERY IMPORTANT
A) PROXY HAS OTHER NAMES THAN IN OFP, AND THEY MUST BE PLACED IN OTHER POSITION, THERE IS NO NAME AS "JEEPDRIVER"" NOW THERE IS ONLY "DRIVER", "GUNNER"
cool.gif IN TANKS THERE IS NO INSIDE IN ARMA, WE MAKE FORCE OPTICS IN THIS EXAMPLE, ONLY CARGO HAS INSIDE

IF WE USE SELECTION NAMES FROM OFP ADDONS, THAN:

MAKE FILE SKELETONS.H

REMEMBER, FOR THIS EXAMPLE:

CAR MODEL HAS NAME MY_CAR_M1, SECOND CAR MODEL IS MY_CAR_M2

TANK HAS NAME MY_TANK_M1, SECOND TANK MODEL IS MY_TANK_M2

=======================================================

class CfgSkeletons
{
class Car;
class MY_CAR_M1Bones: Car
{
isDiscrete=1;
skeletonInherit = "";
skeletonBones[]=
{
"pravy predni","",
"pravy prostredni","",
"pravy zadni","",
"levy predni","",
"levy prostredni","",
"levy zadni","",

"ukaz_fuel","",
"ukaz_rpm","",
"ukaz_rychlo","",

"volant","",

"otocvez","",
"otochlaven","otocvez"
};
};

class Tank;
class MY_TANK_M1Bones: Tank
{
isDiscrete=1;
skeletonInherit = ""; //Inherit all bones from class Car.
skeletonBones[]=
{
"levy predni","",
"levy dalsi","",
"levy prostredni","",
"levy zadni","",
"pravy predni","",
"pravy dalsi","",
"pravy prostredni","",
"pravy zadni","",

"otocvez","",
"otochlaven","otocvez",
"otocvez_2","otocvez", IT IS VERY IMPORTANT, BECAUSE IT DECIDES THAT TURRET 2 IS WORKING AND TURNING WITH MAIN TURRET, you can give here empty space if you want make two independent turrets like on my Alien APC vehicle
"otochlaven_2","otocvez_2",
"kolol1","",
"kolol2","",
"kolol3","",
"kolol4","",
"kolol5","",
"kolol6","",
"kolol7","",
"kolol8","",
"kolol9","",
"koll1","",
"koll2","",
"kolop1","",
"kolop2","",
"kolop3","",
"kolop4","",
"kolop5","",
"kolop6","",
"kolop7","",
"kolop8","",
"kolop9","",
"kolp1","",
"kolp2",""

};
};

};

class CfgModels
{
class Car;
class MY_CAR_M1: Car
{
sectionsInherit = "";
sections[] ={"pravy predni","pravy prostredni","pravy zadni","levy predni","levy prostredni","levy zadni","L svetlo", "P svetlo","otocvez","otochlaven","otocvez_2","otochlaven_2"};
skeletonName = "MY_CAR_M1Bones";
class Animations
{

class otocvez
{
type = "rotationY";
source = "mainTurret";
selection = "otocvez";
axis = "OsaVeze";
memory = true;
sourceAddress = "loop";
minValue = rad -360;
maxValue = rad +360;
angle0 = rad -360;
angle1 = "rad 360";
};
class otochlaven
{
type = "rotationX";
source = "mainGun";
selection = "OtocHlaven";
axis = "OsaHlavne";
memory = true;
sourceAddress = "clamp";
minValue = "rad -8.5";
maxValue = "rad 50";
angle0 = "rad -8.5";
angle1 = "rad 50";
};
class otocvez_2
{
type = "rotationY";
source = "Turret_2";
selection = "otocvez_2";
axis = "OsaVeze_2";
memory = true;
sourceAddress = "loop";
minValue = rad -360;
maxValue = rad +360;
angle0 = rad -360;
angle1 = "rad 360";
};
class otochlaven_2
{
type = "rotationX";
source = "Gun_2";
selection = "OtocHlaven_2";
axis = "OsaHlavne_2";
memory = true;
sourceAddress = "clamp";
minValue = "rad -8.5";
maxValue = "rad 50";
angle0 = "rad -8.5";
angle1 = "rad 50";
};
class MY_CAR_M1FrontWheelR
{
type = "rotationX";
source = "wheel";
selection = "pravy predni";
axis = "";
memory = true;
sourceAddress = "loop";
minValue = 0;
maxValue = 1;
angle0 = 0;
angle1 = "rad -360";
};
class MY_CAR_M1FrontWheelL :MY_CAR_M1FrontWheelR
{
selection = "levy predni";
};
class MY_CAR_M1RearWheelR :MY_CAR_M1FrontWheelR
{
selection = "pravy zadni";
};
class MY_CAR_M1RearWheelL :MY_CAR_M1FrontWheelR
{
selection = "levy zadni";
};


class MY_CAR_M1preRearWheelR :MY_CAR_M1FrontWheelR
{
selection = "pravy prostredni";
};
class MY_CAR_M1preRearWheelL :MY_CAR_M1FrontWheelR
{
selection = "levy prostredni";
};

class MY_CAR_M1FrontWheelRTurn
{
type = "rotationY";
source = "drivingWheel";
selection = "pravy predni";
axis = "";
memory = true;
sourceAddress = "clamp";
minValue = -1;
maxValue = 1;
angle0 = "rad 35";
angle1 = "rad -35";

};
class MY_CAR_M1FrontWheelLTurn : MY_CAR_M1FrontWheelRTurn
{
selection = "levy predni";
};

class MY_CAR_M1DamperFrontWheelR
{
type = "translationY";
source = "damper";
selection = "pravy predni";
axis = "";
memory = true;
sourceAddress = "clamp";
minValue = 0;
maxValue = 1;
angle0 = 0;
angle1 = "35";
};
class MY_CAR_M1DamperFrontWheelL :MY_CAR_M1DamperFrontWheelR
{
selection = "levy predni";
};
class MY_CAR_M1DamperRearWheelR :MY_CAR_M1DamperFrontWheelR
{
selection = "pravy zadni";
};
class MY_CAR_M1DamperRearWheelL :MY_CAR_M1DamperFrontWheelR
{
selection = "levy zadni";
};
class MY_CAR_M1IndicatorSpeed
{
type = "rotation";
source = "speed";
memory = false;
selection="ukaz_rychlo";
axis="osa_rychlo";
angle0=0;
angle1="rad -240";
minValue=0;
maxValue=60;
};
class MY_CAR_M1IndicatorRPM
{
type = "rotation";
source = "rpm";
memory = false;
selection="ukaz_rpm";
axis="osa_rpm";
angle0=0;
angle1="rad -270";
minValue=0;
maxValue=1.5;
};
class MY_CAR_M1IndicatorFuel
{
type = "rotation";
source = "fuel";
memory = false;
selection="ukaz_fuel";
axis="osa_fuel";
angle0="0";
angle1="rad 270";
minValue=0;
maxValue=1;
};
class MY_CAR_M1DrivingWheel
{
type = "rotation";
source = "drivingWheel";
selection = "volant";
axis = "osavolantkon"; this is important too, in OFP we had memory point in model KON i ZAC, here we put 2 points KON, other way model can cause CTD
memory = false;
angle0 = "rad 180";
angle1 = "rad -180";
minValue = -1;
maxValue = 1;
};
};
};
class MY_CAR_M2 : MY_CAR_M1 {};






class Tank;
class MY_TANK_M1: TANK
{
sectionsInherit = "";
sections[] ={"pas_P","koll1","koll2","kolp1","kolp2","kolol1","kolol2","kolol3","kolol4","kolol5","kolol6","kolP1","kolop1","kolop2","kolop3","kolop4","kolop5","kolop6","pravy zadni","pasoffsetL","pasoffsetP","levy zadni","L svetlo", "P svetlo","otocvez","otochlaven","otocvez_2","otochlaven_2"};
skeletonName = "MY_TANK_M1Bones";
class Animations
{
class otocvez
{
type = "rotationY";
source = "mainTurret";
selection = "otocvez";
axis = "OsaVeze";
memory = true;
sourceAddress = "loop";
minValue = rad -360;
maxValue = rad +360;
angle0 = rad -360;
angle1 = "rad 360";
};
class otochlaven
{
type = "rotationX";
source = "mainGun";
selection = "OtocHlaven";
axis = "OsaHlavne";
memory = true;
sourceAddress = "clamp";
minValue = "rad -8.5";
maxValue = "rad 50";
angle0 = "rad -8.5";
angle1 = "rad 50";
};
class otocvez_2
{
type = "rotationY";
source = "Turret_2";
selection = "otocvez_2";
axis = "OsaVeze_2";
memory = true;
sourceAddress = "loop";
minValue = rad -360;
maxValue = rad +360;
angle0 = rad -360;
angle1 = "rad 360";
};
class otochlaven_2
{
type = "rotationX";
source = "Gun_2";
selection = "OtocHlaven_2";
axis = "OsaHlavne_2";
memory = true;
sourceAddress = "clamp";
minValue = "rad -8.5";
maxValue = "rad 50";
angle0 = "rad -8.5";
angle1 = "rad 50";
};
class MY_TANK_M1kolol1
{
type = "rotationX";
source = "wheelL";
selection = "kolol1";
axis = "";
memory = true;
sourceAddress = "loop";
minValue = 0;
maxValue = 1;
angle0 = 0;
angle1 = "rad -360";
};
class MY_TANK_M1kolol2 :MY_TANK_M1kolol1
{
selection = "kolol2";
};
class MY_TANK_M1kolol3 :MY_TANK_M1kolol1
{
selection = "kolol3";
};
class MY_TANK_M1kolol4 :MY_TANK_M1kolol1
{
selection = "kolol4";
};
class MY_TANK_M1kolol5 :MY_TANK_M1kolol1
{
selection = "kolol5";
};
class MY_TANK_M1kolol6 :MY_TANK_M1kolol1
{
selection = "kolol6";
};
class MY_TANK_M1kolol7 :MY_TANK_M1kolol1
{
selection = "kolol7";
};
class MY_TANK_M1kolol8 :MY_TANK_M1kolol1
{
selection = "kolol8";
};
class MY_TANK_M1kolol9 :MY_TANK_M1kolol1
{
selection = "kolol9";
};
class MY_TANK_M1koll1 :MY_TANK_M1kolol1
{
selection = "koll1";
};
class MY_TANK_M1koll2 :MY_TANK_M1kolol1
{
selection = "koll2";
};

class MY_TANK_M1kolop1
{
type = "rotationX";
source = "wheelr";
selection = "kolop1";
axis = "";
memory = true;
sourceAddress = "loop";
minValue = 0;
maxValue = 1;
angle0 = 0;
angle1 = "rad -360";
};
class MY_TANK_M1kolop2 :MY_TANK_M1kolop1
{
selection = "kolop2";
};
class MY_TANK_M1kolop3 :MY_TANK_M1kolop1
{
selection = "kolop3";
};
class MY_TANK_M1kolop4 :MY_TANK_M1kolop1
{
selection = "kolop4";
};
class MY_TANK_M1kolop5 :MY_TANK_M1kolop1
{
selection = "kolop5";
};
class MY_TANK_M1kolop6 :MY_TANK_M1kolop1
{
selection = "kolop6";
};
class MY_TANK_M1kolop7 :MY_TANK_M1kolop1
{
selection = "kolop7";
};
class MY_TANK_M1kolop8 :MY_TANK_M1kolop1
{
selection = "kolop8";
};
class MY_TANK_M1kolop9 :MY_TANK_M1kolop1
{
selection = "kolop9";
};
class MY_TANK_M1kolp1 :MY_TANK_M1kolop1
{
selection = "kolp1";
};
class MY_TANK_M1kolp2 :MY_TANK_M1kolop1
{
selection = "kolp2";
};


class MY_TANK_M1_DrivingWheel
{
type = "rotationZ";
source = "drivingWheel";
selection = "volant";
axis = "osavolantkon";
memory = true;
sourceAddress = "mirror";
minValue = -1;
maxValue = 1;
angle0 = "rad -35";
angle1 = "rad 35";
};
};
};
class MY_TANK_M2 : MY_TANK_M1 {};


};
====================================================================



NOW WE DO CONFIG:

ON BEGINING OF CONFIG WE PUT

#include < CfgSkeletons.h >


class CfgVehicles {
class Land; // External class reference
class LandVehicle : Land {
class NewTurret;
class ViewOptics;
class ViewPilot;
class AnimationSources;
};

class Tank : LandVehicle {};
class Car : LandVehicle {};

NOW WE PUT HERE OUR NEW JEEP MODEL, BASING ON UAZ DEFINITIONS, BUT OTHER AS HMMVW, URAL... CAN BE USED

class UAZ : CAR {};
class MY_NEW_JEEP : UAZ {
vehicleClass = "MY_CLASS1";
scope = public;
side = 1; 1 IS WEST, 2 IS GUERILLA, 3 IS CIVILIAN, 0 IS EAST
displayName = MY CAR;
model = "\MY_FOLDER\MY_CAR_M1";
driverAction = "HMMWV_Driver";
cargoAction[] = {"HMMWV_Cargo01"};
class TransportMagazines {};
transportSoldier = 1; HOW MANY PASSENGERS
class Library {
libTextDesc = THIS IS MY JEEP;
};
};


CAR WITH TURRET AND MG IS OTHER EXAMPLE, SO I WILL NOT GIVE THIS NOW smile.gif NEEDS MUCH MUCH MORE TIME FROM ME


SO NOW OUR TANK ;


FIRST YOU HAVE TO COPY DEFINITION OF TANK FROM TRACKED PBO !
IF YOU WILL NOT PUT HERE TANK DEFINITION THAN GAME WILL SAY ERROR, NO TURRENT DEFINITION AND ETC.

BUT TO AVOID CHANGING DEFAULT BIS CLASSES WE WILL GIVE IT NEW NAME, I MADE SUCH MISTAKE ONCE AS CHANGING BIS CLASSES, SO NOW YOU AVOID THIS NOW smile.gif


class Tank : LandVehicle {};
class MY_TANK_BASE : Tank {

HERE YOU PASTE ALL DEFINITION OF TANK FROM BIS, IF NEW PATCH IT AVALIABLE, IT WILL AVOID ERRORS

};

class MY_F***_TANK : MY_TANK_BASE {
class Library {
libTextDesc = THIS IS MY TANK DECRIPTION;
};
scope = 2;
crew = "SoldiereCrew";[B] SEPECIFY NEW CLASS OF CREW IF YOU WANT LIKE MY_SOLDIER_RIFLEMAN1

side = 0;0,1,2, AS IN CARS
accuracy = 0.3;
picture = "\ca\tracked\Data\ico\bmp2_CA.paa";
Icon = "\Ca\tracked\Data\map_ico\icomap_bmp2_CA.paa";
mapSize = 9;
model = "\MY_FOLDER\MY_TANK_M1";MODEL NAME, BUT THE SAME AS IN SKELETONS
displayName = My Tank Name ;
armor = 800; ARMOR VALUE, COMPARE WITH BIS VALUES TO CHECK WHAT YOU NEED, BIS GAVE ABOUT 200 TO BMP, ABOUT 670 TO T72 AND 900 TO ABRAM, BUT CHECK IN NEWEST PATCH VERSION
nameSound = "bmp2";
maxSpeed = 60;
transportSoldier = 0;IF APC THAN WE PUT SOME PASSENGERS
hasCommander = 0; STUPID THING, I SAW THAT SOMETIMES BETTER TO GIVE 0, BECAUSE 1 CAUSES PROBLEMS, STILL HAVE NO IDEA WHY, but sometimes i had 2 options "get in as commander"

class TransportMagazines {};
cost = 200000;
canFloat = 0; IS TANK IS SWIM OR NOT, 0 OR 1
viewCargoShadow = 1;
threat[] = {0.5, 0.5, 1};

class Exhausts {
class Exhaust1 {
position = "vyfuk start";
direction = "vyfuk konec";
effect = "ExhaustsEffectBig";
};
};
soundGetIn[] = {"\ca\Tracked\Data\Sound\metal_door2", 0.01, 1};
soundGetOut[] = {"\ca\Tracked\Data\Sound\metal_door2", 0.00316228, 1};
soundEnviron[] = {"\ca\Tracked\Data\Sound\M1A2_track_v2", 5.01187, 1.1};
soundEngine[] = {"\ca\Tracked\Data\Sound\Brdm_engine_3", 7.94328, 0.8};
driverAction = "BMP2_Driver";
driverInAction = "BMP2_Driver";
driverOpticsModel = "\ca\Tracked\optika_tank_driver";
cargoAction[] = {"Stryker_Cargo01"};
driverForceOptics = 1;WE HAVE NO INSIDE MODEL SO IT IS FORCED TO LOOK THROUGH OPTICS
forceHideDriver = 1;

class Turrets : Turrets {
class MainTurret : MainTurret {
body = "OtocVez";
gun = "OtocHlaven";
animationSourceBody = "mainTurret";
animationSourceGun = "mainGun";
animationSourceHatch = "hatchGunner";
weapons[] = {HERE YOU PUT WEAPONS THAT TANK HAVE, FROM BIS LIKE PKT, CANNON OR OWN};
magazines[] = {HERE YOU PUT MAGAZINES THAT TANK HAVE, FROM BIS OR OWN};
soundServo[] = {"\ca\Weapons\Data\Sound\gun_elevate", 0.001, 1.1};
minElev = -5;
maxElev = 35;CHECK REAL VALUES of real technical parameter
minTurn = -360;
maxTurn = 360;
memoryPointGun = "kulas";
memoryPointGunnerOptics = "gunnerview";
gunnerAction = "BMP2_Gunner";
gunnerInAction = "BMP2_Gunner";
gunBeg = "usti hlavne";
gunEnd = "konec hlavne";
forceHideGunner = 1; IF WE HAVE NO WORKING HUTCH, NOW OPTICS IS FORCED
gunnerOpticsModel = "\ca\Tracked\optika_T72_gunner";
gunnerOutOpticsModel = "";
gunnerForceOptics = true;



SECOND TURRET ON MAIN TURRET, IT CAN HAVE WEAPON OR NOT, COMMANDER ON IT


class Turrets : Turrets {
class CommanderOptics : CommanderOptics {
weapons[] = {};
magazines[] = {};
gunnerOpticsModel = "\ca\Tracked\optika_t72_commander";
body = "OtocVez_2";
gun = "OtocHlaven_2";
animationSourceBody = "Turret_2";
animationSourceGun = "Gun_2";
animationSourceHatch = "";
selectionFireAnim = "zasleh_2";
minElev = -10;
maxElev = 50;
minTurn = -360;
maxTurn = 360;
proxyIndex = 1;
gunnerName = "$STR_POSITION_COMMANDER";
commanding = 1;
gunBeg = "usti hlavne_2";
gunEnd = "konec hlavne_2";
primary = false;
memoryPointGun = "kulas_2";
memoryPointGunnerOptics = "gunnerview_2";
forceHideGunner = 1;
gunnerAction = "BMP2_Gunner";
gunnerInAction = "BMP2_Gunner";
gunnerForceOptics = true;

};

};
};

};
};

};
END:P

and remember when you learn, begin ALWAYS change tags before classes
if you use somebody config replace tags, otherwise your addon will only cause problems to players, addonmakers and you will only make mess
there was such situation when one man made his "addon" by copying my config and people started to report problems with my addons, because he changed values, but left names of classes not changed
avoid such situation


till now tanks in ARMA have no interior, so we "force" optics, we don't have to do inside of tank

some "mistakes" as i call it made by BIS (i always voted for realism in ARMA)
in real life M4 has effective range 350 meters, AK74 and M16 about 500 meters, small barrel rifle like AKS74U is used for 200 meters (simply it is stronger than submachinegun , but it is small weapon for small distance)
but all weapons get 400 meters in this game , if you make addons, remeber about realism and sense
if you will give all weapons nonsens values there can be situation that AI with MP40 will be more dangerous than AI with Kar 98K
in real life every weapon has it's destination of use, you cannot make all "equal"
adding realism to addons will help to mix addons in missions, than one rifle from one addonmaker can be used in mission with other addons from second addonmakers
don't make weapons with super paramters, because than mixing addons will be impossible
imagine that somebody made good Tiger tank and other addonmaker made Sherman tank
you wanna make WW2 mission, but every time one Sherman kill 2 Tigers biggrin.gif

i wanted to make such "coalition" of addonmakers to keep realism with vehicle armor values or etc. but many people refused it by telling "i will do what i wanna do", so in future we will see some nonsense like Sherman from one guy wining with Tiger from other guy, or one guy with MP40 killing all group of enemy soldiers with bolt-action rifles before they will reload :/

when there was OFP and different MODS i liked to make my own missions with mixed addons, but there always was problem
so such mission "for home use" required from me changing addons made by someone else, because there were such nonsense situations smile.gif
of course i couldnt post such mission with changed addons, so only few friends get it be e-mail
ARMA addonmaking is not so old, many mods just start, it would be really good if we could do something to avoid mess and to make fixing different addons in one mission possible

or you wanna make mission using for example my addons and somebody made other weapons/units, you wanna put all into one mission, but if someone made "super" values to his rifles, other side will always fail, because one AI will start to fire 100 meters before other AI will start react
just like in WW2 battles, noone used submachineguns in open big fields, than army was using rifles, submachineguns were ideal for city fights
now armies have universal automatic rifles, but they also have some differences biggrin.gif
soldier with good old FAL will have better chances than man with newest M4 if they are 500 meters from each other
of course in this game we can simulate scope usage too
AI equiped with rifle + scope will have better accuracy, some longer distance
so if you made for example :
rifle and rifle + scope
give to the second some better accuracy , some longer distance
than AI will really act like using better weapon

of course real full-rifle cartridge like 7.62 NATO or Mosin or Mauser can kill at 1200 meters, but than human eye is most determinating riffle range
so i suggest to not make big difference between M16 or G3 in AI range, because both have ironsights, that limiits range (weapon better than human possibility to see , haha)
scope dramaticly changes possibility of rifle, so there must be some kind of "fiction" to make all this possible to play
so of course there must be compromise in ranges between modern rifle using small caliber bullet and old big long rifle with powerfull bullet 7.92

in OFP we had no such possibility, or we had to make another magazine definition

ARMA gives us new possibilities, just use them wise
once again sorry for such long post, there is "ADDONMAKING" tread on this forum, so i placed this add "work in progress"
enjoy and i hope those config help is helpfull


--------------------
 
Quote Post
 
Start new topic
Replies
Yac
post Jul 13 2007, 21:36
Post #2


Member
Group Icon

Group: User Banned
Posts: 70
Joined: 9-July 07
From: Wroclaw - Poland
Member No.: 969



drunk.gif Thx a lot Vilas -


--------------------
 
Quote Post

Posts in this topic


Closed TopicStart new topic
3 User(s) are reading this topic (3 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 29th March 2024 - 01:38