IPB


Welcome Guest ( Log In | Register )

 Forum Rules ArmedAssault.info Forum Rules
 
Reply to this topicStart new topic
> How to create addons for OA?, And, of course, with 3Ds Max 2011?
SGJackson
post Sep 7 2010, 20:08
Post #1


Member
***

Group: Members
Posts: 131
Joined: 22-May 10
Member No.: 7,651



Hay guise!

I barely learned how to make addons for ArmA1, now, is it different in OA? (I bet it is)
I'm really good at 3Ds Max 2011, and I'd like to know some things:

1- I make a model, I import it to O2? Or is there other program used for OA?
2- How to wrap textures in a way that they're all connected in a single file and when I apply it in O2 it automaticly adjusts to the model?
3- What would be an example of a config.cpp that places the addon in the 'Empty' section?

Thanks!
 
Quote Post
D@V£
post Sep 7 2010, 21:21
Post #2


Gee, I wish we had one of them doomsday machines.
Group Icon

Group: Moderators
Posts: 2,037
Joined: 13-November 06
From: Wales
Member No.: 155



Exactly the same way as done with ArmA.1. The only differences are with the way ammo crates are defined (though I think you can use the ArmA.1 method too), and the faction system.

Defining an object into a faction is as simple as creating a new faction class:
CODE
class CfgFactionClasses
{
    class Myfaction
    {
        displayName = "My Faction";
        priority = 67;
        side = TWest;
    };
};

Then using this line in your vehicle class:
CODE
        faction="Myfaction";


This site contains the a list of ArmA.2 and OA classes you can inherit from, along with pictures and such. (No BAF classes yet unfortunately)


--------------------
The Rules - Nothing too complicated, follow these and we'll have no problems.
Moderation Feedback Thread - Tell everyone how much you hate me love me secretly fear that Mark is watching you while you sleep. secretly wish that Mark is watching you while you sleep.
Site Issues Thread - Complain about site issues here. We might even fix them!
Community Chatter Thread - Furthest Mud-sling gets a free subscription to "JdB Monthly".

QUOTE(Major Mike Shearer)
We can categorically state that we have not released man-eating badgers into the area.
QUOTE(Brace Belden)
A machine gun is like a woman, I don’t understand it, I’m afraid of it, and one day I’ll accidentally be killed by one.
 
Quote Post
SGJackson
post Sep 7 2010, 22:23
Post #3


Member
***

Group: Members
Posts: 131
Joined: 22-May 10
Member No.: 7,651



Okay, now, explain:
CODE
         faction="Myfaction";


CODE
class CfgFactionClasses
{
    class Myfaction
    {
        displayName = "My Faction";
        priority = 67;
        side = TWest;
    };
};


It would be nice if you could explain the config.cpp and each line in it, and the faction system. If you already explained it and I didn't get it, then please make it easier smile.gif XD

Thanks!
 
Quote Post
D@V£
post Sep 8 2010, 03:10
Post #4


Gee, I wish we had one of them doomsday machines.
Group Icon

Group: Moderators
Posts: 2,037
Joined: 13-November 06
From: Wales
Member No.: 155



QUOTE(SGJackson @ Sep 7 2010, 22:23) *
Okay, now, explain:
CODE
         faction="Myfaction";


CODE
class CfgFactionClasses
{
    class Myfaction
    {
        displayName = "My Faction";
        priority = 67;
        side = TWest;
    };
};


It would be nice if you could explain the config.cpp and each line in it, and the faction system. If you already explained it and I didn't get it, then please make it easier smile.gif XD

Thanks!


Unfortunately, a full description is too big to fit in the confines of this forums posting ability!

My personal advice, and this is how I learned to make configs, so I know it's a method that works, is to look at other people's work, most addon makers won't mind you have a poke around their configs, if you're just looking to see how they've created their addons, as long as the stuff you release is your own, then it's "kosher".

Some examples though:
This is essentially a "stripped down" version of my SLA pack. (Though I've also expanded on some bits)

CODE
//Basic Definitions
#define true 1
#define false 0

#define VSoft 0
#define VArmor 1
#define VAir 2

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

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

#define ReadAndWrite 0
#define ReadAndCreate 1
#define ReadOnly 2
#define ReadOnlyVerified 3

#define DefaultManWeapons Throw,Put

//This is the basic definations of ArmA, just have everything above this line at the start of your config and it'll save a lot of time!


//cfgpatches is always at the start of your config file, it's the "base" of your config, and tells the engine what to expect from the pbo

class CfgPatches
{
    class HSO_EXAMPLE //It's best to keep this the same as the name of your pbo, for simplicity
    {
        units[] = {};
        weapons[] = {};
        requiredVersion = 0.1;
        requiredAddons[] = {"CAweapons"};
    };
};

//Factions are pretty self explainatory, if you're creating a unit for any of the default factions, or just a weapons pack, you don't need to include this.

class CfgFactionClasses
{
    class HSO_SLA_Faction //The classname of the faction
    {
        displayName = "SLA"; //The ingame name of the faction, can also be a string
        priority = 15; //The priority of the faction, where it appears in the editor
        side = TEast; //The side the faction is on. We can use the easily understood "TEast", rather than the engine defination of the east (OPFOR) side, which is "0", due to the basic definations at the top of the file
    };
};

CfgVehicleClasses gives us classes for vehicles:

class CfgVehicleClasses
{
    class HSO_Softskin_Class
    {
        displayName = "Soft-skinned vehicles"; //The display name of the vehicle class, can also be a string
    };
};

//It's good practice to include this before your cfgweapons section, so the firemodes will inherit correctly

class Mode_SemiAuto
{
    displayName = $STR_DN_MODE_SEMIAUTO;
};
class Mode_Burst: Mode_SemiAuto
{
    displayName = $STR_DN_MODE_BURST;
};
class Mode_FullAuto: Mode_SemiAuto
{
    displayName = $STR_DN_MODE_FULLAUTO;
};

//cfgweapons contains all the information about weapons, whether they're hand-held or mounted on a turret.

class cfgWeapons
{
    class AK_74;
    class HSO_AIM74: AK_74
    {
        model="\HSO_ARMA2_Weaps\AIMS74"; //The directory of the model for the weapon
        displayname="AIM-74"; //The display name ingame
        picture="\HSO_ArmA2_Weaps\ico\AIM74.paa"; //The picture, as shown in the inventory screen
        class Single: Mode_SemiAuto //The semiautomatic firemode class
        {
            begin1[] = {"ca\sounds\weapons\rifles\AK74_single2",1.77828,1,1000}; //The firing sound
            soundBegin[] = {"begin1",1}; //As above, this is a coding relic, to when weapons made different sounds for semi or auto fire back in OFP
            reloadTime = 0.1; //How fast the weapon fires
            recoil = "recoil_single_primary_4outof10"; //The recoil, as defined in cfgrecoils, you'll usually just want to use one of the predefined values for this
            recoilProne = "recoil_single_primary_prone_4outof10"; //As above, but for prone-firing
            dispersion = 0.00125; //The dispersion
            minRange = 2;minRangeProbab = 0.3; //For AI, the minimum engagement range with this weapon
            midRange = 300;midRangeProbab = 0.7; //For AI, the medium engagement range with this weapon
            maxRange = 600;maxRangeProbab = 0.04; //For AI, the maximum engagement range with this weapon
        };
        class Burst: Mode_Burst
        {
            begin1[] = {"ca\sounds\weapons\rifles\AK74_single2",1.77828,1,1000};
            soundBegin[] = {"begin1",1};
            soundBurst = 0;
            reloadTime = 0.1;
            ffCount = 3;
            recoil = "recoil_auto_primary_3outof10";
            recoilProne = "recoil_auto_primary_prone_3outof10";
            dispersion = 0.00125;
            minRange = 50;minRangeProbab = 0.3;
            midRange = 200;midRangeProbab = 0.7;
            maxRange = 500;maxRangeProbab = 0.05;
        };
        class FullAuto: Mode_FullAuto
        {
            begin1[] = {"ca\sounds\weapons\rifles\AK74_single2",1.77828,1,1000};
            soundBegin[] = {"begin1",1};
            reloadTime = 0.1;
            ffCount = 30;
            recoil = "recoil_auto_primary_4outof10";
            recoilProne = "recoil_auto_primary_prone_4outof10";
            dispersion = 0.00125;
            minRange = 0;minRangeProbab = 0.1;
            midRange = 150;midRangeProbab = 0.7;
            maxRange = 300;maxRangeProbab = 0.05;
        };
    };
};

//Class cfgvehicles contains all the stuff you'll find in the editor (unless it's hidden, of course!)

class CfgVehicles
{
    //External class references
    class Man;
    class CAManBase: Man
    {
        class TalkTopics;
        class HitPoints
    {
            class HitHead;
            class HitBody;
        };
    };
    class SoldierEB: CAManBase
    {
        class TalkTopics: TalkTopics{};
    };
    class UAZ;


    class HSO_SLA_Soldier: SoldierEB
    {
        faction="HSO_SLA_Faction"; //This is the faction our soldier or vehicle belongs to, as defined in CfgFactionClasses
        side = TEast; //The side, again
        identityTypes[] = {"Head_CDF","RU_Glasses"}; //The sorts of identity this soldier should have, in this case, CDF style faces and voices and russian style glasses
        faceType = "Man"; //The head model used. Keep it like this unless you want soldier to wear a balaclava or similar
        genericNames = "RussianMen"; //The sort of names the soldier should have
        vehicleClass = "Men"; //The vehicle class for the soldier
        portrait = "\HSO_SLAINF\portraits\soldier_ca"; //The command panel portrait for the soldier
        model="\HSO_SLAInf\INFSoldier"; //The soldier's model
        picture = "\Ca\characters\data\Ico\i_null_CA.paa"; //Not too sure what this one does
        icon = "\Ca\characters2\data\icon\i_soldier_CA.paa"; // The icon in the editor
        accuracy = 2; //The basic accuracy of the soldier, best keep it at this sort of value
        camouflage = 1.4; //How well camouflaged the unit is
        sensitivity = "0.5 *2"; //How sensitive the unit is
        minFireTime = 10; //Not too sure what this one does, think it determines how "triggerhappy" the soldier is
        scope = 2; //Determines if the soldier appears in the editor or not, any values less than 2 and the vehicles won't appear in the editor
        cost = 40000; //Used to work out the score at the end of scenario if this unit is KIA
        weapons[] = {"HSO_AIMS74","Throw","Put","ItemMap","ItemCompass","ItemWatch","ItemRadio"}; //The weapons this unit starts with, by default
        magazines[] = {"30Rnd_545x39_AK","30Rnd_545x39_AK","30Rnd_545x39_AK","30Rnd_545x39_AK","30Rnd_545x39_AK","30Rnd_545x39_AK","HandGrenade_East","HandGrenade_East"}; // The magazines this unit starts with, by default
        respawnWeapons[] = {"HSO_AIMS74","Throw","Put","ItemMap","ItemCompass","ItemWatch","ItemRadio"}; //The weapons this unit respawns with (in MP) by default
        respawnMagazines[] = {"30Rnd_545x39_AK","30Rnd_545x39_AK","30Rnd_545x39_AK","30Rnd_545x39_AK","HandGrenade_East"}; //Ditto, but for magazines

        class Wounds
        {
            tex[] = {};
            mat[] = {"ca\characters2\Rus\DATA\soldier_flora_vsr_vest.RVmat","ca\characters2\Rus\DATA\soldier_flora_vsr_vest_w1.RVmat","ca\characters2\Rus\DATA\soldier_flora_vsr_vest_w2.RVmat",
                "ca\characters2\Rus\DATA\soldier_co_flora_vsr_vest.RVmat","ca\characters2\Rus\DATA\soldier_co_flora_vsr_vest_w1.RVmat","ca\characters2\Rus\DATA\soldier_co_flora_vsr_vest_w2.RVmat",
                "ca\characters2\Rus\DATA\soldier_mg_flora_vsr_vest.RVmat","ca\characters2\Rus\DATA\soldier_mg_flora_vsr_vest_w1.RVmat","ca\characters2\Rus\DATA\soldier_mg_flora_vsr_vest_w2.RVmat",
                "ca\characters2\Rus\DATA\soldier_at_flora_VSR_vest.RVmat","ca\characters2\Rus\DATA\soldier_at_flora_VSR_vest_w1.RVmat","ca\characters2\Rus\DATA\soldier_at_flora_VSR_vest_w2.RVmat",
                "ca\characters2\Rus\DATA\soldier_pilot_flora_vsr.RVmat","ca\characters2\Rus\DATA\soldier_pilot_flora_vsr_w1.RVmat","ca\characters2\Rus\DATA\soldier_pilot_flora_vsr_w2.RVmat",
                "ca\characters2\Rus\DATA\soldier_crew_flora_vsr.RVmat","ca\characters2\Rus\DATA\soldier_crew_flora_vsr_w1.RVmat","ca\characters2\Rus\DATA\soldier_crew_flora_vsr_w2.RVmat",
                "ca\characters2\Rus\DATA\Commander.rvmat","ca\characters2\Rus\DATA\W1_Commander.rvmat","ca\characters2\Rus\DATA\W2_Commander.rvmat"};
        };
    //The wound texture bit, there are 3 levels of wounding for each material or texture, healthy, light wounding, or heavy wounding, this is defined here.

        class TalkTopics: TalkTopics
        {
            core_cz = "Core_Full";
        };
        languages[] = {"CZ"}; //Which languages this unit understands
    };

    class HSO_Scouter: Uaz
    {
    model="\HSO_SLAInf\Scouter.p3d"; //The model for the vehicle
    crew= HSO_SLA_Soldier; //The crew for the vehicle
    vehicleClass="HSO_Softskin_Class"; //The class of the vehicle
    displayName="Scout Car"; //The display name for this vehicle
    maxSpeed=75; //The maximum speed of this vehicle, in km/h
    cargoAction[] = {Hatchback_Cargo01}; //The animation soldiers in cargo should play
    transportSoldier = 3; //How many soldiers can ride in the vehicle
    driverAction = Hatchback_Driver; //The animation the driver should play
    cargoIsCoDriver[] = {true, false}; //Determines whether this driver or gunner should lead if there isn't a commander in the vehicle.
    class Library {libTextDesc = "A basic scout car";}; //The description of this unit in the armoury
    };
};


I know I've forgotten something, so apologies for this in advance tongue.gif


--------------------
The Rules - Nothing too complicated, follow these and we'll have no problems.
Moderation Feedback Thread - Tell everyone how much you hate me love me secretly fear that Mark is watching you while you sleep. secretly wish that Mark is watching you while you sleep.
Site Issues Thread - Complain about site issues here. We might even fix them!
Community Chatter Thread - Furthest Mud-sling gets a free subscription to "JdB Monthly".

QUOTE(Major Mike Shearer)
We can categorically state that we have not released man-eating badgers into the area.
QUOTE(Brace Belden)
A machine gun is like a woman, I don’t understand it, I’m afraid of it, and one day I’ll accidentally be killed by one.
 
Quote Post
SGJackson
post Sep 9 2010, 15:17
Post #5


Member
***

Group: Members
Posts: 131
Joined: 22-May 10
Member No.: 7,651



HOLY ********************************************!!

Hmh... Well, I actually don't know what to say :S...

I didn't fully understood what's the config for(Weapons, Vehicles, Soldiers)... It may be a part of all those (?)

Still, my questions still are:
1- I make a model, I import it to O2? Or is there other program used for OA?
2- How to wrap textures in a way that they're all connected in a single file and when I apply it in O2 (or other program) it automaticly adjusts to the model?

In case you might've missunderstood, I DON'T know how to wrap textures tongue.gif

Really good job Dave... Still this sh*t's kinda messy for me, I rather prefer stick to my questions smile.gif
 
Quote Post
D@V£
post Sep 9 2010, 20:14
Post #6


Gee, I wish we had one of them doomsday machines.
Group Icon

Group: Moderators
Posts: 2,037
Joined: 13-November 06
From: Wales
Member No.: 155



The config tells the game how objects work.

Anyways... your questions...

1. O2 is still used for making models in the p3d format. You'll also want texview 2, to convert your textures into .paa format.

2. UV mapping should be done in the program you're using to make the models, before you import them into O2, at which point you only need to set up the path to the texture. You can also edit UV maps in oxygen, but it's pretty messy, so I'd advise against it unless you just want to make modifications to an existing UV map. If you're not sure what this means, then I'd advise you use separate textures for now.

Bear in mind, before attempting to use a UV map, that you can not have textures tiling, without a significant performance drop.


--------------------
The Rules - Nothing too complicated, follow these and we'll have no problems.
Moderation Feedback Thread - Tell everyone how much you hate me love me secretly fear that Mark is watching you while you sleep. secretly wish that Mark is watching you while you sleep.
Site Issues Thread - Complain about site issues here. We might even fix them!
Community Chatter Thread - Furthest Mud-sling gets a free subscription to "JdB Monthly".

QUOTE(Major Mike Shearer)
We can categorically state that we have not released man-eating badgers into the area.
QUOTE(Brace Belden)
A machine gun is like a woman, I don’t understand it, I’m afraid of it, and one day I’ll accidentally be killed by one.
 
Quote Post
SGJackson
post Sep 12 2010, 17:21
Post #7


Member
***

Group: Members
Posts: 131
Joined: 22-May 10
Member No.: 7,651



Alright, look, let's make it easier: Just give me a tut(s) that explain how to create addons and, while the guy's good, i'll understand. Thanks!
 
Quote Post
D@V£
post Sep 13 2010, 17:57
Post #8


Gee, I wish we had one of them doomsday machines.
Group Icon

Group: Moderators
Posts: 2,037
Joined: 13-November 06
From: Wales
Member No.: 155



QUOTE(SGJackson @ Sep 12 2010, 17:21) *
Alright, look, let's make it easier: Just give me a tut(s) that explain how to create addons and, while the guy's good, i'll understand. Thanks!


I'd love to, unfortunately, to the best of my knowledge no such tutorial exists, so I'd need to write one myself.

Might do some time... it'd take a lot of time though... time being something I seem to be able to less of with each day...


--------------------
The Rules - Nothing too complicated, follow these and we'll have no problems.
Moderation Feedback Thread - Tell everyone how much you hate me love me secretly fear that Mark is watching you while you sleep. secretly wish that Mark is watching you while you sleep.
Site Issues Thread - Complain about site issues here. We might even fix them!
Community Chatter Thread - Furthest Mud-sling gets a free subscription to "JdB Monthly".

QUOTE(Major Mike Shearer)
We can categorically state that we have not released man-eating badgers into the area.
QUOTE(Brace Belden)
A machine gun is like a woman, I don’t understand it, I’m afraid of it, and one day I’ll accidentally be killed by one.
 
Quote Post

Reply to this topicStart new topic
3 User(s) are reading this topic (3 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 16th April 2024 - 14:22