Das Urheberrecht dieses Beitrags liegt bei Motombo, am 28. Juni 2014!
Zitat von GekkoHDAlles anzeigen
Hallo Community,
mit diesem Tutorial will ich euch erklären, wir ihr LSD in euren Server reinbauen könnt.
Macht lieber ein Backup von den Dateien, die wir bearbeiten. Es können immer Fehler auftreten!
Code Alles anzeigenBenötigte Dateien: Mission\Functions.h Mission\core\items\fn_netzUse.sqf //Muss neu erstellt werden, kommt gleich. Mission\core\config\fn_varToStr.sqf Mission\core\config\fn_varHandle.sqf Mission\core\config\fn_licenseType.sqf Mission\core\config\fn_licensePrice.sqf Mission\core\config\fn_itemWeight.sqf Mission\core\config\fn_virt_shops.sqf Mission\core\actions\fn_processAction.sqf Mission\core\pmenu\fn_useItem.sqf Mission\core\configuration.sqf Mission\configuration.sqf Mission\mission.sqm
Schritt 1
Als erstes öffnen wir die Functions.h Die Datei findet ihr wie oben beschrieben.
Ihr sucht nach dem Abschnitt class Items
Da fügen wir unten dran jetzt eine neue Zeile hinzu.
Schritt 2
Wir erstellen die neue Datei fn_netzUse.sqf
Diese erstellen wir in dem Ordner, wie oben beschrieben.
Code Alles anzeigen/* File: fn_netzUse.sqf Author: GekkoHD Description: Froschnetz Funktion. */ closeDialog 0; private["_netz","_itemWeight","_diff","_itemName","_val"]; switch (true) do { case (player distance (getMarkerPos "lsd_1") < 250): {_netz = "frog"; _val = 3;}; default {_netz = "";}; }; //Sumpf Check if(_netz == "") exitWith {hint "Du bist nicht in der Nähe des Sumpfs!"}; if(vehicle player != player) exitWith {hint "Du kannst nichts fangen, wenn du in einem Fahrzeug sitzt.";}; _diff = [_netz,_val,life_carryWeight,life_maxWeight] call life_fnc_calWeightDiff; if(_diff == 0) exitWith {hint "Dein Inventar ist voll."}; life_action_inUse = true; for "_i" from 0 to 2 do { player playMove "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon"; waitUntil{animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";}; sleep 2.5; }; if(([true,_netz,_diff] call life_fnc_handleInv)) then { _itemName = [([_netz,0] call life_fnc_varHandle)] call life_fnc_varToStr; titleText[format["Du hast %2 %1 gefangen.",_itemName,_diff],"PLAIN"]; }; life_action_inUse = false;
Schritt 3
Wir erstellen jetzt den virtuellen Gegenstand, damit er auch im Inventar angezeigt wird.
Es werden jetzt folgende Dateien gebraucht.
CodeMission\core\config\fn_varToStr.sqf Mission\core\config\fn_varHandle.sqf Mission\core\config\fn_licenseType.sqf Mission\core\config\fn_licensePrice.sqf Mission\core\config\fn_itemWeight.sqf Mission\core\config\fn_virt_shops.sqf
Wir gehen systematisch vor. Von oben nach unten.
fn_varToStr.sqf
Code... case "life_inv_rock": {"Rock"}; case "life_inv_cement": {"Cement Bag"}; case "life_inv_goldbar": {"Gold Bar"}; case "life_inv_frog": {"Frosch"};//Neu eingefügt case "life_inv_lsd": {"LSD"};//Neu eingefügt case "life_inv_netz": {"Froschnetz"};//Neu eingefügt ...
Code... case "license_civ_marijuana": {"Marijuana Training"}; case "license_civ_cement": {"Cement Mixing License"}; case "license_med_air": {"Pilot License"}; case "license_civ_lsd": {"LSD Training"};//Neu eingefügt ...
Mit der Datei wären wir fertig. Wir fahren nun mit der fn_varHandle.sqf fort.
Code Alles anzeigencase 0: { switch (_var) do { ... case "cement": {"life_inv_cement"}; case "rock": {"life_inv_rock"}; case "goldbar": {"life_inv_goldbar"}; case "frog": {"life_inv_frog"};//Neu eingefügt case "lsd": {"life_inv_lsd"};//Neu eingefügt case "netz": {"life_inv_netz"};//Neu eingefügt ... }; }; case 1: { switch (_var) do { ... case "life_inv_cement": {"cement"}; case "life_inv_rock": {"rock"}; case "life_inv_goldbar": {"goldbar"}; case "life_inv_frog": {"frog"};//Neu eingefügt case "life_inv_lsd": {"lsd"};//Neu eingefügt case "life_inv_netz": {"netz"};//Neu eingefügt ... }; };
Jetzt kommen wir zu den Lizensen.
fn_licenseType.sqf
Code Alles anzeigencase 0: { switch (_var) do { ... case "copper": {_var = "license_civ_copper"}; case "cement": {_var = "license_civ_cement"}; case "mair": {_var = "license_med_air"}; case "lsd": {_var = "license_civ_lsd"};//Neu eingefügt ... }; }; case 1: { switch (_var) do { ... case "license_civ_copper": {_var = "copper"}; case "license_civ_cement": {_var = "cement"}; case "license_med_air": {_var = "mair"}; case "license_civ_lsd": {_var = "lsd"}; ... }; };
fn_licensePrice.sqf
Code... case "copper": {8000}; case "cement": {6500}; case "mair": {15000}; case "lsd": {18000}; ...
Wir wollen natürlich auch, dass man das Froschnetz auch kaufen und die Drogen verkaufen kann.
Dafür gehen wir in die fn_virt_shops.sqf
Codecase "market": {["Altis Market",["water","rabbit","apple","redgull","tbacon","lockpick","pickaxe","fuelF","peach","netz"]]};//Neu eingefügt case "heroin": {["Drug Dealer",["cocainep","heroinp","marijuana","lsd"]]};//Neu eingefügt
Schritt 4
Damit wir unsere Frösche in LSD umwandelt können erstellen wir nun den Prozess.
Dafür öffnen wir die fn_processAction.sqf
Code... case "marijuana": {["cannabis","marijuana",500,"Processing Marijuana"]}; case "heroin": {["heroinu","heroinp",1720,"Processing Heroin"]}; case "cement": {["rock","cement",350,"Mixing Cement"]}; case "lsd": {["frog","lsd",1900,"Processing LSD"]};//Neu eingefügt ...
Außerdem müssen wir noch die Aktion erstellen, dass man das Item auch benutzen kann.
Das machen wir in der fn_useItem.sqf
Schritt 5
Damit wir den Preis dazu noch einstellen können schauen wir einmal in die configuration.sqf
Es gibt insgesamt zwei von dieser Datei. Ihr fügt diese Sachen bei beiden Dateien ein.
Sehr wichtig! Auf die Kommatas achten!
Code Alles anzeigenlife_inv_items = [ ... "life_inv_rock", "life_inv_cement", "life_inv_goldbar", "life_inv_frog",//Neu eingefügt "life_inv_lsd",//Neu eingefügt "life_inv_netz"//Neu eingefügt ... ];
Codelife_licenses = [ ... ["license_civ_salt","civ"], ["license_civ_cement","civ"], ["license_med_air","med"], ["license_civ_lsd","civ"]//Neu eingefügt ];
Codelife_illegal_items = [["heroinu",1200],["heroinp",2500],["cocaine",1500],["cocainep",3500],["marijuana",2000],["turtle",3000],["lsd",3800]];//Neu eingefügt
Codesell_array = [ ["fuelF",500], ["spikeStrip",1200], ["cement",1950], ["lsd",3800],//Neu eingefügt ["netz",50]//Neu eingefügt ];
Schritt 6
Wir öffnen in Arma 3 nun unseren Editor.
Dort öffnen wir unsere mission.sqm
Wir erstellen unser Abbaugebiet.
Wichtig! Der Punkt muss lsd_1 heißen!
Nur an diesem Punkt kann man dann Frösche fangen.
Damit man die Frösche zu LSD bearbeiten können machen wir nun dies.
Wir erstellen uns nun einen neuen NPC.
Es muss ein Zivilist sein, und darf nicht spielbar sein!
Dazu fügen wir noch einen Text hinzu, in das große Feld.
Codethis enableSimulation false; this allowDamage false; this addAction["Frösche verarbeiten",life_fnc_processAction,"lsd",0,false,false,"",' life_inv_frog > 0 && !life_is_processing']; this addAction[format["%1 ($%2)",["license_civ_lsd"] call life_fnc_varToStr,[(["lsd"] call life_fnc_licensePrice)] call life_fnc_numberText],life_fnc_buyLicense,"lsd",0,false,false,"",' !license_civ_lsd && playerSide == civilian '];
Damit die Spieler auch wissen, wo man die Frösche bearbeiten kann,
erstellen wir nun einen Marker auf der Karte.
Dieser muss in der Nähe des NPC's sein, denn man kann die Frösche nur innerhalb
einer bestimmten Reichweite um den Marker drum fangen.
Schritt 7
Wir öffnen die fn_itemWeight.sqf. Dort tragen wir ein, wie schwer ein Item ist
Dort tragt ihr dann die Items unten ein.
Codecase "spikeStrip": {15}; case "rock": {6}; case "cement": {5}; case "frog": {6};//Neu eingefügt case "lsd": {4};//Neu eingefügt case "netz": {2};//Neu eingefügt
Liken und sich bedanken
Ich hoffe das Tutorial hat euch weitergeholfen.
Es war sehr zeitaufwändig, falls ihr Fragen habt,
stellt sie, ich stehe euch zur Verfügung.
Liebe Grüße
GekkoHD