Mit diesem Tutorial zeige ich euch wie man einen neuen Job erstellt. Als Beispiel nehmen wir Silber, dazu müssen wir eine Silbermine machen wo wir das Rohsilber besorgen, einen Verarbeiter erstellen
und als letztes noch den Verkäufer.
Zu ändernde Dateien:
Mission\core\configuration.sqf
Mission\core\items\fn_pickaxeUse.sqf
Mission\core\actions\fn_processAction.sqf
Mission\core\config\fn_virt_shops.sqf
Mission\core\config\fn_varToStr.sqf
Mission\core\config\fn_varHandle.sqf
Mission\core\config\fn_licenseType.sqf
Mission\core\config\fn_licensePrice.sqf
Schritt 1. Das Abbaugebiet erstellen
Erstellt euch auf der Map einen Marker mit dem Arma 3 Editor, wenn Ihr nach diesem Tutorial vorgeht muss der Marker silber_1 heissen.
Schritt 2. Silber abbauen mit der Spitzhacke
Geht dazu als erstes in den Ordner core\items dort findet Ihr die Datei fn_pickaxeUse.sqf welche Ihr nun am besten mit Notepad++ öffnet.
Dort findet Ihr fogenden Code.
Mission\core\items\fn_pickaxeUse.sqf
closeDialog 0;
private["_mine","_itemWeight","_diff","_itemName","_val"];
switch (true) do
{
case (player distance (getMarkerPos "lead_1") < 30): {_mine = "copperore"; _val = 2;};
case (player distance (getMarkerPos "iron_1") < 30): {_mine = "ironore"; _val = 2;};
case (player distance (getMarkerPos "salt_1") < 120) : {_mine = "salt"; _val = 4;};
case (player distance (getMarkerPos "sand_1") < 75) : {_mine = "sand"; _val = 5;};
case (player distance (getMarkerPos "diamond_1") < 50): {_mine = "diamond"; _val = 1;};
case (player distance (getMarkerPos "oil_1") < 40) : {_mine = "oilu"; _val = 1;};
case (player distance (getMarkerPos "oil_2") < 40) : {_mine = "oilu"; _val = 1;};
case (player distance (getMarkerPos "rock_1") < 50): {_mine = "rock"; _val = 2;};
default {_mine = "";};
};
Alles anzeigen
Nun fügt folgendes Codeschnipsel hinzu
Nun sollte euer Code folgendermassen Aussehen:
closeDialog 0;
private["_mine","_itemWeight","_diff","_itemName","_val"];
switch (true) do
{
case (player distance (getMarkerPos "lead_1") < 30): {_mine = "copperore"; _val = 2;};
case (player distance (getMarkerPos "iron_1") < 30): {_mine = "ironore"; _val = 2;};
case (player distance (getMarkerPos "salt_1") < 120) : {_mine = "salt"; _val = 4;};
case (player distance (getMarkerPos "sand_1") < 75) : {_mine = "sand"; _val = 5;};
case (player distance (getMarkerPos "diamond_1") < 50): {_mine = "diamond"; _val = 1;};
case (player distance (getMarkerPos "oil_1") < 40) : {_mine = "oilu"; _val = 1;};
case (player distance (getMarkerPos "oil_2") < 40) : {_mine = "oilu"; _val = 1;};
case (player distance (getMarkerPos "rock_1") < 50): {_mine = "rock"; _val = 2;};
case (player distance (getMarkerPos "silber_1") < 50): {_mine = "silberu"; _val = 2;};
default {_mine = "";};
};
Alles anzeigen
Nun können wir mit der Spitzhacke Rohsilber abbauen.
Schritt 3. Silber hinzufügen
Ihr geht in den Ordner Mission\core\ und öffnet die Datei configuration.sqf.
Sucht nun nach dem Abschnitt life_inv_items =
Darunter fügt Ihr nun "life_inv_silberu" ein das nun euer Rohsilber ist.
Nun sollte euer Code so Aussehen
Jetzt sucht ihr in der gleichen Datei nach sell_array = und fügt ["silberu",200] hinzu, allerdings nur wenn Ihr unverarbeitetes Silber auch verkaufbar machen wollt, sollte dann so Aussehen:
sell_array =
[
["apple",50],
["heroinu",1850],
["silberu",200], // 200 steht dabei für den verkaufspreis von Rohsilber
];
Nun könnt Ihr die Datei speichern und schliessen.
Jetzt gehen wir in den Ordner \core\config und öffnen die Datei fn_varToStr.sqf (In dieser Datei werden die Angaben für die Items wie sie im Inventar angezeigt werden gemacht.)
In dieser Datei fügen wir unter:
dies ein:
case "life_inv_silberu": {"Rohsilber"}; //"Rohsilber" ist der Name, wie er später im Inventar angezeigt wird
Speichern und schliessen.
Jetzt gehen wir in die Datei fn_varHandle.sqf, sie ist im gleichen Ordner.
bei "case 0:" fügen wir unter
das ein:
und bei "case 1:" unter
fügen wir das ein:
Speichern und schliessen.
Jetzt öffnet ihr die fn_itemWeight.sqf sie ist ebenfalls im Ordner core\config und fügt unter
Speichern und schliessen.
Schritt 4. Rohsilber verkaufen
Jetzt gehen wir in die Datei fn_virt_shops.sqf die auch im Ordner core/config ist.
Wir suchen nach
und fügen dort "silberu" hinzu nun sollte das ganze so Aussehen:
Nun könnt Ihr das Rohsilber beim Diamantenhändler verkaufen man könnte natürlich auch einen extra Händler erstellen aber das zeige ich in einem anderen Tutorial.
Schritt 5. Das Silber verarbeiten
Ihr geht in die Datei configuration.sqf die im Ordner Mission\core ist.
Ihr öffnet die Datei und sucht:
dort fügt Ihr nun "life_inv_silberp", noch darunter ein (silberp ist euer verarbeitetes Silber)
Jetzt sucht Ihr:
sell_array =
[
["apple",50],
["heroinu",1850],
["silberu",200], // 200 steht dabei für den verkaufspreis von Rohsilber
];
und fügt nun ["silberp",3500], noch darunter ein. (3500 ist der Verkaufspreis für euer verarbeitetes Silber.)
Speichern und Schliessen.
Jetzt gehen wir in den Ordner \core\config und suchen da die Datei fn_varToStr.sqf
In dieser Datei fügen wir unter
dies ein:
Speißern und schliessen.
Jetzt gehen wir in die Datei fn_varHandle.sqf sie ist im gleichen Ordner.
bei "case 0:" fügen wir unter
das ein
und bei "case 1:" unter
das ein
Speichern und schliessen.
Jetzt gehen wir in den Ordner core\actions und öffnen die Datei fn_processAction.sqf und fügen unter
das ein
Speichern und schliessen.
Schritt 5.1 Den Verarbeiter erstellen (NPC)
Jetzt gehen wir wieder in den ArmA 3 2D Editor, wie bei Schritt 1. .
Wir suchen uns einen guten platz, kopieren einen schon vorhandenen NPC (Ich hab den Salz Verarbeiter genommen) diesen platzieren wir irgendwo hin, wo er später stehen soll.
Wir klicken Doppel-Klick auf ihn und ersetzen den Text der in der Init steht mit:
this enableSimulation false;
this allowDamage false;
this addAction["Rohsilber verarbeiten",life_fnc_processAction,"silber",0,false,false,"",' life_inv_silberu > 0 && !life_is_processing'];
Schritt 5.2 Das verarbeitete Silber verkaufen
Jetzt gehen wir in die Datei fn_virt_shops.sqf die im Ordner Mission\core\config ist.
Wir suchen nach
und fügen "silberp" noch hinzu das das ganze so Aussieht:
Speichern und schliessen.
Wenn Ihr noch eine Lizenz für den Verarbeiter hinzufügen wollt dann geht wie folgt vor:
Öffnet wieder die Datei "configuration.sqf" im Ordner Mission\core und sucht nach life_licenses =
dort fügt Ihr unter:
das ein:
Speichern und schliessen.
Geht nun in den Ordner Mission\core\config und öffnet die Datei fn_licensePrice.sqf
dort fügt Ihr unter
das ein:
Speichern und schliessen.
öffnet nun im selben Ordner die Datei fn_licenseType.sqf
Und fügt bei case 0: unter
case 0:
{
switch (_type) do
{
case "driver": {_var = "license_civ_driver"}; //Drivers License cost
};
};
das ein:
und bei case 1: unter
case 1:
{
switch (_type) do
{
case "license_civ_driver": {_var = "driver"}; //Drivers License cost
};
};
das ein:
Speichern und schliessen.
öffnet nun im selben Ordner die Datei fn_varToStr.sqf und fügt unter
das ein
Speichern und schliessen.
Und euren NPC den Ihr vorher im Editor gesetzt habt müsst Ihr nun noch den Code für die Lizenz dazu geben, dieser sollte dann so sein:
this enableSimulation false; this allowDamage false; this addAction["Silber verarbeiten",life_fnc_processAction,"silber",0,false,false,"",' life_inv_silberu > 0 && !life_is_processing'];this addAction["Silber Lizenz ($30000)",life_fnc_buyLicense,"silber",0,false,false,"",' !license_civ_silber && playerSide == civilian '];
Ich hoffe, das Tutorial war verständlich..
Sollten Fehler etc. auftreten, könnt ihr mich Kontaktieren!