Hallo NG Community
Ich sage es lieber nochmal, dieses Guide ist für die 3.1.4.8 gedacht
Heute erkläre ich euch mal ein paar Basics, damit ihr euch leichter hineinfindet.
Was ist eine Mission.sqm
Die Mission.sqm ist eure Map. Dort wird alles eingetragen, was ihr im Editor macht.
Setzt ihr ein NPC oder ein Objekt, wird einen Eintrag in der mission.sqm gemacht.
Auch Marker, oder Triger und und und wird alles in der mission.sqm eingetragen.
Was möchte ich in diesem Tutorial erklären
In diesem Tutorial möchte ich euch sozusagen ein all-in Packet machen, mit den wichtigsten sachen die ihr braucht. Dazu gehören:
1. Wo gehört die mission.sqm hin
2. NPC erstellen inkl Init.
3. Neue Items einfügen. Wie ihr das neue Item brauchbar macht.
4. Neue Shops erstellen. Z sowie I Inventar.
5. Neue Jobs einfügen. Mit und ohne Spitzhacke.
6. Kleidershop einfügen.
7. Configuration.sqf erklärung
So, dann fangen wir mal an.
1. Wo gehört die mission.sqm hin
Hinweis:
Ich Empfelle euch dafür, ein neues Profil anzulegen mit dem ihr eure Map bearbeiten könnt. Dies könnt ihr im Hauptmenü von Arma 3 machen.
Schritt 1:
Geht in euren Dokumente Ordner. Dort solltet ihr nun einen Ordner finden namens Arma 3 - Other Profiles.
Klickt in diesem Ordner euer erstelltes Profil an. Das ganze schaut nun so aus:
Damit können wir noch nicht viel anfangen.
Erstellt einen Ordner namens missions. In diesen missions wieder einen neuen Ordner erstellen, nehmen wir mal meinemap.altis.
Die mission.sqm gehört also in folgenden Ordner. --> meinemap.altis. Das ganze sollte so aussehen:
Nun habt ihr eure mission.sqm startbereit zum editieren.
2. NPC erstellen inkl Init.
Schritt 1:
Erstmal startet ihr den Arma 3 Editor, mit der Map Altis.
Eure Map ladet ihr wie folgt:
Schritt 2:
Nun erstellt ihr euch zuerst einen Vorschau NPC. Dies macht ihr wie folgt:
Schritt 3:
Nun erstellt ihr euren NPC. In diesem Tutorial nehmen wir mal der Markt.
this allowDamage false;
Der NPC hat Godmode.
this enableSimulation false;
Der NPC bewegt sich nicht.
this addAction["Markt",life_fnc_virt_menu,"markt"];
Die addAction, womit ihr das Marktmenü aufrufen könnt. Näheres dazu in einem anderem Schritt.
Schritt 4:
Nun könnt ihr euch das ganze im Vorschaumodus anschauen, ob auch der NPC richtig sitzt.
Passt. Soviel zum Thema NPC erstellen.
Wollt ihr einen Waffenshop oder Kleidershop erstellen, geht ihr genau gleich vor. Dazu muß nur einen anderen INIT Befehl hineingeschrieben werden, damit er auch das richtige Menü öffnet.
3. Neue Items einfügen. Wie ihr das neue Item brauchbar macht.
Nehmen wir hier mal als Beispiel das Getränk Cola.
Hinweis: Wenn ihr was anderes machen wollt, wie z.b. etwas zu Essen geht ihr genau gleich vor. Nur hallt entsprechend der itemname anpassen.
Schritt 1:
Öffnet eure core\config\fn_varHandle.sqf
In dieser Datei wird nun das Item definiert.
Unter case 0: fügt ihr folgendes ein:
Und unter case 1: folgendes:
Speichern und schliesen.
Schritt 2:
Öffnet eure core\config\fn_itemWeight.sqf
In dieser Datei könnt ihr einstellen, wiefiel eine Cola an Gewicht wiegen soll. In diesem Beispiel hier, wiegt eine Cola 1 Gewicht.
Wollt ihr das die Cola mehr wiegen?
So gebt einfach einen anderen Zahlenwert ein.
Schritt 3:
Öffnet eure core\config\fn_varToStr.sqf
In dieser Datei gebt ihr an, wie das Item schlussendlich auf eurem Server heissen soll.
Sucht nach folgendes Zeile //Virtual Inventory Items und fügt am schluss folgendes ein:
case "life_inv_cola": {"Coca Cola"};
Rot ist dabei, die Übersetzung.
Schritt 4:
Öffnet eure core\configuration.sqf und sucht nach folgendem Eintrag: life_inv_items =
Dort fügt ihr am schluss folgendes ein:
Hier ist es ganz wichtig das ihr die "," nicht vergisst zu machern.
Macht ihr dort also einen neuen Eintrag, muß da extrem darauf geachtet werden. Das letzte darf am schluss nie ein , haben.
So wäre das richtig:
Etwas weiter unten sucht ihr nach folgendem Eintrag: sell_array = und fügt folgendes hinzu: (Wenn ihr nicht wollt, das man die Cola wieder verkaufen dann springt zum nächsten Abschnitt weiter).
Heisst, man bekommt für das Verkaufen einer Cola 10$.
Hier bitte auch wieder auf das , achten.
Direkt darunter solltet ihr den Eintrag buy_array = sehen. Dort fügt ihr wieder am schluss folgendes ein:
Heisst, die Cola kostet beim Kauf 100$.
Speichern und schliesen.
Schritt 5:
Nun wollen wir die Cola auch benutzbar machen.
Öffnet eure core\pmenu\fn_useItem.sqf
Sucht nach diesem Eintrag:
Spoiler anzeigen
case (_item == "water" or _item == "coffee"):
{
if(([false,_item,1] call life_fnc_handleInv)) then
{
[player,"drink"] call life_fnc_globalSound;
life_thirst = 100;
player setFatigue 0;
};
};
Direkt darunter fügt ihr folgendes ein:
case (_item == "cola"):
{
if(([false,_item,1] call life_fnc_handleInv)) then
{
life_thirst = 20;
player setFatigue 0;
};
};
Das ganze sollte so aussehen:
Spoiler anzeigen
case (_item == "water" or _item == "coffee"):
{
if(([false,_item,1] call life_fnc_handleInv)) then
{
[player,"drink"] call life_fnc_globalSound;
life_thirst = 100;
player setFatigue 0;
};
};
case (_item == "cola"):
{
if(([false,_item,1] call life_fnc_handleInv)) then
{
life_thirst = 20;
player setFatigue 0;
};
};
So, nun könnt ihr Cola kaufen und auch benutzen.
Wenn ihr jetzt essen einfügen wollt,müsst ihr genau gleich vorgehen. Nur am schluß nicht in die fn_useItem.sqf sondern in die core\config\fn_eatFood.sqf
Spoiler anzeigen
{
case "apple": {_val = 10};
case "rabbit":{ _val = 20};
case "salema": {_val = 30};
case "ornate": {_val = 25};
case "mackerel": {_val = 30};
case "tuna": {_val = 100};
case "mullet": {_val = 80};
case "catshark": {_val = 100};
case "turtle": {_val = 100};
case "turtlesoup": {_val = 100};
case "donuts": {_val = 30};
case "tbacon": {_val = 40};
case "peach": {_val = 10};
};
Sollte selbsterklärend sein. Der Zahlenwert gibt an, wiefiel ihr an essen bekommt.
4. Neue Shops erstellen. Z sowie I.
Fangen wir mit dem Z Shop an.
Als Beispiel nehmen wir mal ein Restaurante, indem wir unsere Cola nun reinmachen.
Schritt 1:
Öffnet eure core\config\fn_virt_shops.sqf
case "restaurante": {["Altis Restaurante",["cola"]]};
Rot:
Der casename, für die INIT.
Orange:
Wie der Shop Ingame heissen soll.
Grün:
Welches Item im Shop angeboten werden soll.
Die INIT für den NPC lautet:
Nun der I Shop.
Nehmen wir hier mal als Beispiel einen 2. Genstore. Ich nen diesen mal Bauhaus.
Öffnet eure core\config\fn_weaponShopCfg.sqf
case "bauhaus":
{
["Bauhaus",
[
["Binocular",nil,150],
["ItemGPS",nil,100],
["ItemRadio","Handy",100],
["ToolKit",nil,250],
["FirstAidKit",nil,150],
["NVGoggles",nil,2000]
]
];
};
Alles anzeigen
Sollte soweit auch verständlich sein. Der Zahlenwert bestimmt der Preis.
Die INIT sieht wie folgt aus:
5. Neue Jobs einfügen. Mit und ohne Spitzhacke.
Fangen wir mal mit der Spitzhacke an.
Da nehmen wir als Beispiel Gold.
goldu = unprocessed
goldp = processed
Schritt 1:
Startet euer Arma, und ladet eure mission im Editor.
Nun sucht euch ein geeignetes plätzchen aus, und erstellt einen Marker namens gold_1
Text leer lassen.
Hier wird in Zukunft euer Goldabbau sein.
Schritt 2:
Öffnet eure core\items\fn_pickaxeUse.sqf und fügt dort folgendes ein:
50 Meter um den Marker kann man Gold abbauen. Man bekommt 2 Golderze.
Schritt 3:
Öffnet eure core\configuration.sqf und sucht nach dem Eintrag life_inv_items =
dort fügt ihr folgendes ein:
Unter life_licenses = fügst du folgendes ein:
Etwas weiter unten sucht ihr sell_array = und fügt folgendes ein:
Wenn ihr wollt, das man Unverarbeitetes Gold verkaufen kann, so tragt bitte noch ["goldp",2000] ein.
Schritt 4:
Öffnet eure core\config\fn_varHandle.sqf und fügt folgendes ein:
Unter case 0:
Unter case 1:
Schritt 5:
Öffnet eure core\config\fn_itemWeight.sqf und fügt folgendes ein:
Schritt 6:
Öffnet eure core\config\fn_varToStr.sqf und fügt folgendes ein:
Etwas weiter unten unter Lizenz folgendes einfügen:
Schritt 7:
Öffnet eure core\config\fn_virt_shops.sqf und fügt folgendes hinzu:
Am schluß das goldp einfügen.
Somit könnt ihr beim Diamanten Händler Goldbarren verkaufen.
Schritt 8:
Öffnet eure core\config\fn_licenseType.sqf und fügt folgendes ein:
Unter case 0:
Unter case 1:
Schritt 9:
Öffnet eure core\config\fn_licensePrice.sqf und fügt folgendes ein:
Zahlenwert = Preis für die Lizenz.
Schritt 10:
Öffnet eure core\actions\fn_processAction.sqf und fügt folgendes ein:
Der Zahlenwert bestimmt die Kosten, ohne Lizenz zu verarbeiten.
Schritt 11:
Nun kommen noch 2 INIT Befehle, die ihr euren NPC geben solltet.
Wie ihr das macht, habe ich ganz am anfang erklärt.
Die INIT für den verarbeiter NPC lautet wie folgt:
this enableSimulation false; this allowDamage false; this addAction["Golderz verarbeiten",life_fnc_processAction,"gold",0,false,false,"",' life_inv_goldu > 0 && !life_is_processing'];
Die INIT für die Lizenz lautet wie folgt:
this enableSimulation false; this allowDamage false; this addAction["Gold Lizenz ($30000)",life_fnc_buyLicense,"gold",0,false,false,"",' !license_civ_gold && playerSide == civilian '];
Schritt 12:
Ohne Spitzhacke
Im endeffekt genau gleich, ausser Schritt 2. Da wir keine Spitzhacke dabei benötigen, brauchen wir auch keinen Eintrag in die fn_pickaxeUse.sqf machen sondern in die core\actions\fn_gather. Als Beispiel nehmen wir da mal orangeu und orangep. Orange --> Orangensaft
Fügt in diese Datei folgendes ein:[/color]
6. Kleidershop einfügen.
Nehmen wir hier als Beispiel der Söldner Kleidershop
Schritt 1:
Erstellt eine neue sqf namens fn_clothing_soe.sqf in folgenden Ordner: core\config mit folgendem Inhallt:
/*
File: fn_clothing_soe.sqf
Author: Bryan "Tonic" Boardwine
Description:
Master config for clothing shop.
*/
private["_filter"];
_filter = [_this,0,0,[0]] call BIS_fnc_param;
//Classname, Custom Display name (use nil for Cfg->DisplayName, price
switch (_filter) do
{
//Uniforms
case 0:
{
[
["U_C_Poloshirt_blue","Poloshirt Blue",250],
["U_C_Poloshirt_burgundy","Poloshirt Burgundy",275],
["U_C_Poloshirt_redwhite","Poloshirt Red/White",150],
["U_C_Poloshirt_salmon","Poloshirt Salmon",175],
["U_C_Poloshirt_stripped","Poloshirt stripped",125],
["U_C_Poloshirt_tricolour","Poloshirt Tricolor",350],
["U_C_Poor_2","Rag tagged clothes",250],
["U_IG_Guerilla2_2","Green stripped shirt & Pants",650],
["U_IG_Guerilla3_1","Brown Jacket & Pants",735],
["U_IG_Guerilla2_3","The Outback Rangler",1200],
["U_C_HunterBody_grn","The Hunters Look",1500],
["U_C_WorkerCoveralls","Mechanic Coveralls",2500],
["U_OrestesBody","Surfing On Land",1100]
];
};
//Hats
case 1:
{
[
["H_Bandanna_camo","Camo Bandanna",120],
["H_Bandanna_surfer","Surfer Bandanna",130],
["H_Bandanna_gry","Grey Bandanna",150],
["H_Bandanna_khk","Khaki Bandanna",145],
["H_Bandanna_sgg","Sage Bandanna",160],
["H_StrawHat","Straw Fedora",225],
["H_BandMask_blk","Hat & Bandanna",300]
];
};
//Glasses
case 2:
{
[
["G_Shades_Black",nil,0],
["G_Shades_Blue",nil,0],
["G_Sport_Blackred",nil,0],
["G_Sport_Checkered",nil,0],
["G_Sport_Blackyellow",nil,0],
["G_Sport_BlackWhite",nil,0],
["G_Squares",nil,0],
["G_Lowprofile",nil,0],
["G_Combat",nil,0]
];
};
//Vest
case 3:
{
[
["V_PlateCarrierIA1_dgtl",nil,2500],
["V_PlateCarrierIA2_dgtl",nil,1500]
];
};
//Backpacks
case 4:
{
[
["B_Kitbag_mcamo",nil,1250],
["B_FieldPack_ocamo",nil,3000],
["B_Bergen_sgg",nil,5000]
];
};
};
Alles anzeigen
Die liste sollte soweit auch selbsterklärend sein.
Hier eine nützliche Seite, mit Uniformen. https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Equipment
Uniforms case 0: sind eure Uniformen, die ihr da eintragen könnt.
Hats case 1: Sind eure Kopfbedekung, die ihr auch beliebig eintragen könnt.
Glasses case 2: Sind Eure Brillen.
Vest case 3: Eure Vesten
Backpacks case 4: Eure Rucksäcke.
U_C_Poloshirt_blue","Poloshirt Blue",250
clas name
Wie es Ingame heissen soll
Der Preis
Schritt 2:
Öffnet eure core\Shops\fn_clothingFilter.sqf und sucht nach
fügt danach folgendes ein:
Schritt 3:
Öffnet eure functions.h und fügt folgendes unter //Clothing Store Configs ein:
Schritt 4:
Init für den NPC sieht wie folgt aus:
this allowDamage false; this enableSimulation false; this addAction["Söldner Kleidershop",life_fnc_clothingMenu,"soe"];
7. Configuration.sqf erklärung
Das wichtigste aus der configuration.sqf.
//Persistent Saving
__CONST__(life_save_civ,TRUE); //Save weapons for civs?
__CONST__(life_save_yinv,TRUE); //Save Y-Inventory for players?
Aktiviert das Speichern von Z und I Menü. Um es zu deaktivieren, müsst ihr True in False ändern
//Revive constant variables.
__CONST__(life_revive_cops,TRUE); //Set to false if you don't want cops to be able to revive downed players.
__CONST__(life_revive_fee,5000); //Fee for players to pay when revived.
Dürfen Cops tote Spieler wiederbeleben? Wenn ja, muß der wert auf True stehen.
Wie teuer ist das Wiederbeleben.
//House Limit
__CONST__(life_houseLimit,2); //Maximum amount of houses a player can buy (TODO: Make Tiered licenses).
Wiefiel Häuser man besitzen darf.
//Gang related stuff?
__CONST__(life_gangPrice,75000); //Price for creating a gang (They're all persistent so keep it high to avoid 345345345 gangs).
__CONST__(life_gangUpgradeBase,15000); //MASDASDASD
__CONST__(life_gangUpgradeMultipler,2.5); //BLAH
Wiefiel das Gründen einer Gang kostet.
Wiefiel ein Upgrade kosten soll der Gang.
case west:
{
life_atmcash = 7000; //Starting Bank Money
life_paycheck = 3500; //Paycheck Amount
};
case civilian:
{
life_atmcash = 5000; //Starting Bank Money
life_paycheck = 350; //Paycheck Amount
};
case independent:
{
life_atmcash = 7000; //Starting Bank Money
life_paycheck = 3500; //Paycheck Amount
};
case east:
{
life_atmcash = 7000; //Starting Bank Money
life_paycheck = 3500; //Paycheck Amount
};
Alles anzeigen
life_atmcash = 7000; Bankgeld, jeder Fraktion.
life_paycheck = 3500; Paycheck jeder Fraktion.
life_illegal_ = [["heroinu",1500],["heroinp",3000],["cocaine",1500],["cocainep",3000],["marijuana",1500],["turtle",5000],["blastingcharge",15000],["boltcutter",3000]];
Eine liste mit Illegalen Items.
Macht ihr zum Beispiel eine neue Droge rein, sollte das hier eingetragen werden, damit das der Polizei als Illegal angezeigt wird.
So, nun sind wir am Ende angekommen.
Ich hoffe das euch dieses Tutorial gefallen hat, und ihr euch nun leichter hineinfindet.
In diesem Sinne, noch viel spaß beim arbeiten an eurem Server
Solltet ihr Fehler finden, so sagt es mir damit ich das Thread bearbeiten kann.