1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Downloads
  4. Galerie
    1. Alben
  5. Toolbox
    1. Passwort Generator
    2. Portchecker
  6. Mitglieder
    1. Mitgliedersuche
    2. Benutzer online
    3. Trophäen
    4. Team
Mo: 18 August 2025
  • Anmelden oder registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Forum
  • Dateien
  • Seiten
  • Bilder
  • Erweiterte Suche

Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.

Anmelden oder registrieren
    1. Nodezone.net Community
    2. Mitglieder
    3. Noldy

    Beiträge von Noldy

    • [Tutorial] Safe/NoFire zone erstellen

      • Noldy
      • 9. August 2015 um 05:22

      Hallo,

      Heute erkläre ich euch, wie ihr eine Safe/NoFire zone erstellen könnt.

      legen wir mal los:

      1. Erstelle eine neue sqf namens safezone.sqf mit folgendem Inhallt:

      Code
      /*
          GrenadeStop v0.8 for ArmA 3 Alpha by Bake (tweaked slightly by Rarek)
      
          DESCRIPTION:
          Stops players from throwing grenades in safety zones.
      
          CONFIGURATION:
          Edit the #defines below.
      */
      
      
      
      
      #define SAFETY_ZONES    [["Safe_Kav", 25]] // Syntax: [["marker1", radius1], ["marker2", radius2], ...]
      #define MESSAGE "Granaten sowie Schießen ist auf dem Marktplatz ausgeschaltet!"
      
      
      
      
           if (isDedicated) exitWith {};
           waitUntil {!isNull player};
      
      
      
      
      switch (playerSide) do
      {
      	case west:
      	{};
      
      	case civilian:
      	{
      
      
      
      
           player addEventHandler ["Fired", {
                  if ({(_this select 0) distance getMarkerPos (_x select 0) < _x select 1} count SAFETY_ZONES > 0) then
                  {
                   deleteVehicle (_this select 6);
                   titleText [MESSAGE, "PLAIN", 3];
                   };
              }];  
      	};
      };
      Alles anzeigen

      Und legt die datei in euer Root verzeichnis ab.

      2. Erstellt auf euer Map einen marker mit dem namen:

      Code
      Safe_Kav

      3. Fügt folgendes in eure Hauptinit ein init.sqf:

      Code
      [] execVM "safezone.sqf";

      Fertig.

      #define SAFETY_ZONES [["Safe_Kav", 25]]

      Marker name
      Marker Radius

      Hoffe konnte helfen

      Viel spaß damit.

      MfG
      Noldy

    • [Tutorial] 101 Editor installieren

      • Noldy
      • 9. August 2015 um 05:17

      Hallo,

      Heute erkläre ich euch, wie ihr den @101 Editor für euer Arma 3 Instaliert.

      Kurze beschreibung, was der @101 mitsich bringt.
      Dies ist ein kleiner MOD, damit ihr in eurem Editor mehr zur Auswahl habt zum Mapen.

      Los gehts:

      1. Anhang herunterladen.

      2. Datei auf den Desktop entpacken.

      3. Ihr geht in euer Steam Verzeichnis. Bei mir zum beispiel: C:\Program Files (x86)\Games\Steam\SteamApps\common\Arma 3 und schiebt den Ordner in euer Verzeichnis.

      4. Startet Arma3 und klickt auf Konfigurieren --> Erweiterungen. Danach den @101_editor aktivieren, und Arma 3 neustarten.


      Nun habt ihr, wenn ihr in euer Editor geht mehr Objekte zum platzieren.
      Viel spaß beim bauen. ^^

      MfG

      Dateien

      @101_editor.zip 16,33 kB – 591 Downloads
    • [Tutorial] Organ Script

      • Noldy
      • 9. August 2015 um 05:16

      Hallo,

      Heute werde ich euch zeigen, wie ihr Organe anderen Spieler klauen könnt und diese beim Organ Dealer verkaufen könnt.

      Fangen wir mal an.

      1. Erstellt eine neue sqf namens fn_takeOrgans.sqf mit folgendem Inhallt:

      Spoiler anzeigen

      /*
      file: fn_takeOrgans.sqf
      author: [midgetgrimm] - A Grimm Life | Altis Life • Index page

      taken from the same idea of robbing script by tonic
      */
      private["_unit"];
      _unit = cursorTarget;
      if(isNull _unit) exitWith {}; //if unit is null, than NO
      if((_unit getVariable ["missingOrgan",FALSE])) exitWith {};//must not be missing organ already
      if((player getVariable ["hasOrgan",FALSE])) exitWith {};//thief must not have already robbed an organ within last 5 mintues
      if((animationState _unit != "Incapacitated")) exitWith {};//victim must be knocked out
      if(player == _unit) exitWith {};//if the thief is the cursor target(dafuq) than NO
      if(!isPlayer _unit) exitWith {};//iff the cursor target is not a player than NO
      if(life_inv_kidney >= 2) exitWith {hint "You can't possibly need that many organs!"};//if you already have 2 kidneys, then go sell them already, no stockpiling
      if(!([true,"kidney",1] call life_fnc_handleInv)) exitWith {hint "You don't have room to store any organs!"};//if no room for kidney, you cannot take their kidney, duh, waste not want not
      life_action_inUse = true;//sets action to true as to prevent kidney spammming!!!!!!!!
      player setVariable["hasOrgan",true,true];//sets variable on thief, so as not to consistently take organs, set to 5 minute cooldown
      player playMove "AinvPknlMstpSnonWnonDnon_medic";//makes the thief do an animation as to seem like they are doing surgery
      sleep 3;//length of action, had weird results with any higher - obv not realistic, but whatever
      _unit setVariable["missingOrgan",true,true];//sets the missing organ variable so effects can take place
      life_action_inUse = false;//once variables are set, and actions stop, then you can use scrolly wheely
      [[player], "life_fnc_hasOrgan", _unit, false] spawn life_fnc_MP;//this then calls the fn_hasOrgan.sqf on the thief


      Und fügt die unter core\actions ein.

      2. Erstellt wieder eine neue sqf namens fn_hasOrgan.sqf mit folgendem Inhallt:

      Spoiler anzeigen

      /*
      file: fn_hasOrgan.sqf
      author: [midgetgrimm] - A Grimm Life | Altis Life • Index page

      */
      private["_organThief"];
      _organThief = [_this,0,Objnull,[Objnull]] call BIS_fnc_param;
      if(isNull _organThief) exitWith {}; //if not the thief get bent

      [[1,format["%1 has cut out a kidney from %2.",name _organThief,name player]],"life_fnc_broadcast",nil,false] spawn life_fnc_MP;//lets people know you are stealing kidneys
      [_organThief,"kidney",1] call life_fnc_handleInv;//put stolen kidney into inventory of thief
      [[getPlayerUID _organThief,name _organThief,"919"],"life_fnc_wantedAdd",false,false] spawn life_fnc_MP;//add to wanted list
      sleep 300;//no more organ theft for at least 5 minutes, so they cant just do it over and over, can do whatever time you want
      _organThief setVariable["hasOrgan",false,true];//allow them to be able to take organs again- setting a variable


      Und fügt die unter core\civilian ein.

      3. Geht in eure functions.h und fügt bei class actions folgendes ein:

      Code
      class takeOrgans {};


      und bei class Civilian

      Code
      class hasOrgan {};

      4. Geht in eure core\fn_setupActions.sqf und fügt folgendes bei civilian ein:

      Code
      // take them organs
      		life_actions = life_actions + [player addAction["Harvest Organs",life_fnc_takeOrgans,"",0,false,false,"",'!isNull cursorTarget && cursorTarget isKindOf "Man" && (isPlayer cursorTarget) && alive cursorTarget && cursorTarget distance player < 3.5 && !(cursorTarget getVariable ["missingOrgan",FALSE]) && !(player getVariable "Escorting") && !(player getVariable "hasOrgan") && !(player getVariable "transporting") && animationState cursorTarget == "Incapacitated"']];

      5. Geht in eure core\init_survival.sqf und fügt folgendes ganz unten ein:

      Code
      [] spawn  {
      	while{true} do
      	{
      		waitUntil {(player getVariable "missingOrgan")};
      		life_max_health = .50;
      		while{(player getVariable "missingOrgan")} do {
      			life_thirst =  50;
      			life_hunger =  50;
      			if(damage player < (1 - life_max_health)) then {player setDamage (1 - life_max_health);};
      			"dynamicBlur" ppEffectEnable true;
      			"dynamicBlur" ppEffectAdjust [2];
      			"dynamicBlur" ppEffectCommit 1;
      			sleep 5;
      		};
      		"dynamicBlur" ppEffectEnable false;
      		life_max_health = 1;
      	};
      };
      Alles anzeigen

      6. Geht in eure core\pmenu\fn_useItem.sqf und fügt folgendes ein:

      Code
      case (_item == "kidney"):
      	{
      		if(([false,_item,1] call life_fnc_handleInv)) then
      		{
      			player setVariable["missingOrgan",false,true];
      			life_thirst = 100;
      			life_hunger = 100;
      			player setFatigue .5;
      		};
      	};

      7. Geht in eure core\init.sqf und fügt folgendes unter den player setVariablen ein:

      Code
      player setVariable["missingOrgan",false,true];//sets variables to false on start
      player setVariable["hasOrgan",false,true];

      Sollte ca so aussehen:

      Code
      player setVariable["restrained",false,true];
      player setVariable["Escorting",false,true];
      player setVariable["transporting",false,true];
      player setVariable["missingOrgan",false,true];
      player setVariable["hasOrgan",false,true];

      8. Geht in eure core/medical/fn_onPlayerKilled.sqf und fügt folgendes unter _unit ein:

      Code
      _unit setVariable["missingOrgan",FALSE,TRUE];
      _unit setVariable["hasOrgan",FALSE,TRUE];


      9. Geht in euren core/medical/fn_onPlayerRespawn.sqf und fügt wieder unter _unit dies ein:

      Code
      _unit setVariable["missingOrgan",FALSE,TRUE];
      _unit setVariable["hasOrgan",FALSE,TRUE];

      10. Öffnet eure core\config\fn_itemWeight.sqf und fügt folgendes ein:

      Code
      case "kidney": {15};

      11. Öffnet eure core\config\fn_varHandle.sqf und fügt folgendes ein:
      case: 0

      Code
      case "kidney": {"life_inv_kidney"};


      case:1

      Code
      case "life_inv_kidney": {"kidney"};

      12. Geht in eure core\config\fn_varToStr.sqf und fügt folgendes ein:

      Code
      case "life_inv_kidney": {"Niere"};

      13. Geht in eure core\config\fn_virt_shops.sqf und fügt einen neuen Shop hinzu mit diesem Code:

      Code
      case "organ": {["Organ Dealer",["kidney"]]};

      14. Geht in eure core\configuration.sqf und fügt folgendes ein:
      Unter life_inv_items

      Code
      "life_inv_kidney"


      Unter life_illegal_items

      Code
      ["kidney",5000]


      Unter sell_array

      Code
      ["kidney",50000]


      Unter buy_array

      Code
      ["kidney",75000]

      Als letztes müsst ihr noch in eure @life_server eine änderung vornehmen.

      15. Geht in eure life_server\Functions\WantedSystem\fn_wantedAdd.sqf und fügt folgendes hinzu:

      Code
      case "919": {_type = ["Organ Dealing",20000]};

      So, das war es.

      Zum schluß noch einen NP erstellen mit folgendem INIT befehl:

      Code
      this addAction["Organ Dealer",life_fnc_virt_menu,"organ",0,false,false,"",' vehicle player == player && player distance _target < 5 && playerSide == civilian '];

      Mal kurz und knapp erklären, was das Script macht:

      Ihr müsst jemmand niederhauen, und aud ihn Scrollen. Dann könnt ihr die Niere von diesem Spieler klauen. Dieser erleitet 50 Damage, und hat ein leicht verschwomenes Bild. Er muß also zum Organ Dealer gehen, und sich eine neue Niere kaufen und diese benutzen. Damit geht das leicht verschwomene Bild wieder weg. Danach könnt ihr ins Hospital gehen, und euch wieder auf 100 Heilen.
      Ihr könnt euch nicht auf 100 Heilen, wenn ihr keine Niere habt. Und euch kann auch nur eine Niere geklaut werden, wenn ihr mehr wie 50 Leben habt. Habt ihr z.b. 49 Leben, kann man euch keine Niere Klauen.

      Hoffe ihr habt spaß am Script.

      Wenn ihr probleme habt, einfach nachfragen. :thumbup:

      Wie versprochen, hier noch ein Tutorial das ihr nur ein Organ klauen könnt wenn ihr auch ein Scalpel bei euch habt.

      1. Geht in eure core/configuration.sqf und fügt folgende sachen hinzu:

      life_inv_items =

      Code
      "life_inv_scalpel"

      sell_array =

      Code
      ["scalpel",500]

      buy_array =

      Code
      ["scalpel",5000]

      Bitte achtet überall, das euer letztes Item kein Komma haben darf.
      Wenn ihr wollt, das das Scalpel Illegal ist, so fügt dies unter life_illegal_items = ein.

      2. Öffnet eure core/config/fn_itemWeight.sqf und fügt folgendes hinzu:

      Code
      case "scalpel": {2};

      3. Öffnet eure core/config/fn_varHandle.sqf und fügt folgendes hinzu bei case: 0

      Code
      case "scalpel": {"life_inv_scalpel"};


      Und bei case: 1

      Code
      case "life_inv_scalpel": {"scalpel"};

      4. Geht in eure core/config/fn_varToStr.sqf und fügt folgendes hinzu:

      Code
      case "life_inv_scalpel": {"Scalpel"};

      5. Zum schluß fügt ihr noch das Scalpel in einen Shop ein. In diesem Tut nehmen wir mal als Beispiel der Markt. Öffnet eure core/config/fn_virt_shops.sqf und fügt folgendes hinzu:

      Code
      case "market": {["Markt",["scalpel"]]};

      6. Öffnet eure fn_takeOrgans.sqf im actions Ordner und ersetzt alles mit diesem Text:

      Code
      /*
          file: fn_takeOrgans.sqf
          author: [midgetgrimm] - www.grimmlife.com
      
          taken from the same idea of robbing script by tonic
      */
      private["_unit"];
      _unit = cursorTarget;
      if(isNull _unit) exitWith {};
      if((_unit getVariable ["missingOrgan",FALSE])) exitWith {};
      if((player getVariable ["hasOrgan",FALSE])) exitWith {};
      if((animationState _unit != "Incapacitated")) exitWith {};
      if(!([false,"scalpel",1] call life_fnc_handleInv)) exitWith {hint "Du hast kein Scalpel!"};
      if(player == _unit) exitWith {};
      if(!isPlayer _unit) exitWith {};
      if(life_inv_kidney >= 2) exitWith {hint"Dieser Spieler hat keine Niere mehr!"};
      if(!([true,"kidney",1] call life_fnc_handleInv)) exitWith {hint "Kein Platz für eine Niere."};
      life_action_inUse = true;
      player setVariable["hasOrgan",true,true];
      player playMove "AinvPknlMstpSnonWnonDnon_medic";
      [player,"punch_break"] call life_fnc_globalSound;
      sleep 3;
      _unit setVariable["missingOrgan",true,true];
      life_action_inUse = false;
      [[player], "life_fnc_hasOrgan", _unit, false] spawn life_fnc_MP;
      Alles anzeigen

      Nun braucht ihr ein Scalpel, um überhaupt ein Organ klauen zu können. Ein Sound habe ich ebenfalls noch eingefügt, der abgespielt wird wenn ihr mit einem Scalpel von jemmandem ein Organ klaut.

      Bitte bedenkt, das die Sounddatei nur geht wenn ihr dieses Tutorial befolgt habt: [Tutorial] Sounds einfügen Global/-und Player +- 3.1.4
      Wenn ihr also keinen Sound wollt, sucht in der datei nach:

      Code
      [player,"punch_break"] call life_fnc_globalSound;


      und löscht es einfach.

      Wenn ihr keinen Sound wollt, so Ignoriert das unten einfach ;)

      Zum schluß geht ihr noch in eure description.ext und fügt folgendes ein bei class CfgSounds:

      Code
      class punch_break
            {
              name = "punch_break";
              sound[] = {"\sounds\punch_break.ogg", 1.0, 1};
              titles[] = {};
            };

      Ladet die Sounddatei herunter im Anhang und fügt diese in euer Ordner sounds ein.

      Fertig.

      MfG
      Noldy

      Dateien

      punch_break.zip 38,81 kB – 269 Downloads
    • [Tutorial] Black Lagoon Markt System

      • Noldy
      • 9. August 2015 um 05:12

      Guten Morgen NG Community

      Wie versprochen hier das Tutorial.

      Getestet wurde das bisher nur auf der 3.1.4.8. Wenn es bei jemmandem auch bei der 3.1.4.6 geht, einfach bescheid geben damit ich der Titel anpassen kann.

      Fangen wir mal an:

      1. Öffnet eure functions.h und fügt unter class Dialog_Controls folgendes ein:

      Code
      class Market
      	{
      		file = "core\market";
      
      		class openMarketView;
      		class refreshMarketView;
      		class marketShortView;
      		class marketBuy;
      		class marketSell;
      		class marketGetBuyPrice;
      		class marketGetSellPrice;
      		class marketconfiguration;
      		class marketReset;
      		class marketChange;
      		class marketGetRow;
      		class marketGetPriceRow;
      		class marketSetPriceRow;
      	};
      Alles anzeigen


      Nun sucht ihr die class Functions (Nicht da, wo Spyglass ist) und fügt folgendes hinzu:

      Code
      class randomRound {};

      2. Öffnet eure dialog\MasterHandler.h und fügt folgendes hinzu:

      C
      #include "common_EditorWrapper.hpp"
      #include "market.hpp"

      3. Öffnet eure core\shops\fn_virt_sell.sqf und fügt folgende sachen ein.
      Unter private:

      Code
      _marketprice


      müsste dann so aussehen:

      Code
      private["_type","_index","_price","_var","_amount","_name","_marketprice"];

      Jetzt sucht ihr nach _var = [_type,0] call life_fnc_varHandle; und fügt folgendes darunter ein:

      Code
      ////Marktsystem Anfang////
      _marketprice = [_type] call life_fnc_marketGetSellPrice;
      if(_marketprice != -1) then
      {
      _price = _marketprice;
      };
      ////Marktsystem Ende////

      Noch etwas weiter unten sucht ihr jetzt nach life_cash = life_cash + _price; und fügt dies direkt darunter ein:

      Code
      ////Marktsystem Anfang////
      if(_marketprice != -1) then
      {
      [_type, _amount] spawn
      {
      sleep 120;
      [_this select 0,_this select 1] call life_fnc_marketSell;
      };
      ////Marktsystem Ende////


      Das ganze schaut so aus:

      Code
      ////Marktsystem Anfang////
      if(_marketprice != -1) then
      {
      [_type, _amount] spawn
      {
      sleep 120;
      [_this select 0,_this select 1] call life_fnc_marketSell;
      };
      ////Marktsystem Ende////
      
      
      
      
      };
      [] call life_fnc_virt_update;
      };
      Alles anzeigen

      4. Öffnet eure core\shops\fn_virt_update.sqf und fügt folgende sachen hinzu:
      Unter private:

      Code
      _marketprice


      Das ganze müsste dann so aussehen:

      Code
      private["_display","_item_list","_gear_list","_shop_data","_name","_price","_marketprice"];

      Weiter unten sucht ihr nach _price = (__GETC__(buy_array) select _index) select 1; und fügt dies direkt darunter ein:

      Code
      ////Marktsystem Anfang////
          _marketprice = [_x] call life_fnc_marketGetBuyPrice;
          if(_marketprice != -1) then
          {
          _price = _marketprice;
          };
          ////Marktsystem Ende////

      Und nun ganz am schluß folgendes einfügen:

      Code
      //Call short view here
      [_shop_data select 1] spawn life_fnc_marketShortView;

      5. Öffnet eure core\shops\fn_virt_buy.sqf und fügt folgende sachen hinzu:
      Unter private:

      Code
      _marketprice


      Das ganze müsste dann so aussehen:

      Code
      private["_type","_price","_amount","_diff","_name","_hideout","_marketprice"];

      Etwas weiter unten sucht ihr nach _amount = ctrlText 2404; und fügt folgendes darunter:

      Code
      ////Marktsystem Anfang////
      _marketprice = [_type] call life_fnc_marketGetBuyPrice;
      if(_marketprice != -1) then
      {
      _price = _marketprice;
      };
      ////Marktsystem Ende////

      Noch etwas weiter unten sucht ihr nun nach __SUB__(life_cash,(_price * _amount)); (Es gibt davon 2 Einträge. Bitte den unteren nehmen) und fügt folgendes ein:

      Code
      if(_marketprice != -1) then
      {
              //##94
              [_type, _amount] spawn
              {
              sleep 120;
              [_this select 0,_this select 1] call life_fnc_marketBuy;
          };
      };

      Hier passieren die meisten fehlern. Bitte achtet beim letzten abschnitt auf die klammern. Hier mal wie es aussehen sollte.

      Spoiler anzeigen

      if(_marketprice != -1) then
      {
      //##94
      [_type, _amount] spawn
      {
      sleep 120;
      [_this select 0,_this select 1] call life_fnc_marketBuy;
      };
      };
      };

      [] call life_fnc_virt_update;
      };

      6. Öffnet eure dialog\player_inv.hpp und sucht nach class ButtonSyncData : life_RscButtonMenu { fügt nun nach der }; folgendes hinzu:

      Code
      class ButtonMarket : Life_RscButtonMenu {
                  idc = -1;
                  text = "Markt";
                  onButtonClick = "[] spawn life_fnc_openMarketView;";
                  //x = 0.26 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH));
                  x = 0.26 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH));
                  y = 0.805;
                  w = (6.25 / 40);
                  h = (1 / 25);
              };

      7. Öffnet eure init.sqf in eurem root und sucht nach [] execVM "KRON_Strings.sqf"; und fügt folgendes darunter ein:

      Code
      if(isDedicated && isNil("life_market_prices")) then
      {
      [] call life_fnc_marketconfiguration;
      diag_log "Market prices generated!";
      "life_market_prices" addPublicVariableEventHandler
      {
      diag_log format["Market prices updated! %1", _this select 1];
      };
      //Start server fsm
      [] execFSM "core\fsm\server.fsm";
      diag_log "Server FSM executed";
      };
      Alles anzeigen

      8. Dateien im Anhang herunterladen, und in den angegebenen Ordner kopieren.

      Das war es!

      Sollte Battleye probleme machen, öffnet eure script.txt und fügt folgendes bei Zeile 2 ein:

      Code
      !="createDialog \"marketView\""

      Sollte was nicht funktionieren, so meldet euch einfach.

      Hoffe konnte euch mit diesem Tutorial helfen, das Marktsystem auf der 3.1.4.8 zum laufen zu bekommen.

      //Edit

      Wer probleme hat, das sich im Markt die Items verdoppeln lassen befolgt bitte folgendes.

      Öffnet eure dialog\player_inv.hpp und sucht nach

      Code
      onButtonClick = "[] spawn life_fnc_openMarketView;";


      ändert ihr um in

      Code
      onButtonClick = "[] call life_fnc_openMarketView;";

      Öffnet eure core\market\fn_openMarketView.sqf und sucht nach

      Code
      [] spawn life_fnc_refreshMarketView;


      ändert ihr um in

      Code
      [] call life_fnc_refreshMarketView;

      Und schon ist das problem behoben.

      MfG
      Noldy

      Dateien

      Market.rar 9,49 kB – 656 Downloads
    • [Tutorial] 2 Items zum Prozessen

      • Noldy
      • 9. August 2015 um 05:12

      Hallo,

      Heute zeige ich euch, wie ihr ganz einfach für einen Job 2 Items braucht um es zu Prozessen.

      1. Fügt folgende Datei namens fn_processActionMulti unter core/actions mit folgendem Inhallt ein:

      Code
      /*
          File: fn_processActionMulti.sqf
          Author: Niels "Gamewalker" Kräupl, Bryan "Tonic" Boardwine
      
      
      
      
          Description:
          Master handling for processing multiple items.
      */
      private["_vendor","_type","_itemInfo","_oldItem","_newItem","_cost","_upp","_hasLicense","_itemName","_oldVal","_ui","_progress","_pgText","_cP", "_detMinValArray"];
      _vendor = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
      _type = [_this,3,"",[""]] call BIS_fnc_param;
      //Error check
      if(isNull _vendor OR _type == "" OR (player distance _vendor > 10)) exitWith {};
      
      
      
      
      //unprocessed item,processed item, cost if no license,Text to display (I.e Processing  (percent) ..."
      _itemInfo = switch (_type) do
      {
          case "beer": 
          {
              player say3D "brauen";
              [["yeast", "hops"],"beerp",500,"Braue Bier"]
          };
          default {[];};
      };
      
      
      
      
      //Error checking
      if(count _itemInfo == 0) exitWith {};
      
      
      
      
      //Setup vars.
      _oldItemArray = _itemInfo select 0;
      _newItem = _itemInfo select 1;
      _cost = _itemInfo select 2;
      _upp = _itemInfo select 3;
      
      
      
      
      if(_vendor in [mari_processor,cocaine_processor,heroin_processor]) then {
          _hasLicense = true;
      } else {
          _hasLicense = missionNamespace getVariable (([_type,0] call life_fnc_licenseType) select 0);
      };
      
      
      
      
      _itemName = [([_newItem,0] call life_fnc_varHandle)] call life_fnc_varToStr;
      
      
      
      
      _detMinValArray = [];
      {
          _detMinValArray = _detMinValArray + [missionNamespace getVariable ([_x,0] call life_fnc_varHandle)];
      } forEach _oldItemArray;
      
      
      
      
      _oldVal = _detMinValArray call BIS_fnc_lowestNum;
      
      
      
      
      _cost = _cost * _oldVal;
      //Some more checks
      if(_oldVal == 0) exitWith {};
      
      
      
      
      //Setup our progress bar.
      disableSerialization;
      5 cutRsc ["life_progress","PLAIN"];
      _ui = uiNameSpace getVariable "life_progress";
      _progress = _ui displayCtrl 38201;
      _pgText = _ui displayCtrl 38202;
      _pgText ctrlSetText format["%2 (1%1)...","%",_upp];
      _progress progressSetPosition 0.01;
      _cP = 0.01;
      
      
      
      
      life_is_processing = true;
      
      
      
      
      if(_hasLicense) then
      {
          while{true} do
          {
              sleep  0.3;
              _cP = _cP + 0.01;
              _progress progressSetPosition _cP;
              _pgText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_upp];
              if(_cP >= 1) exitWith {};
              if(player distance _vendor > 10) exitWith {};
          };
      
      
      
      
          if(player distance _vendor > 10) exitWith {hint "Du hast dich zuweit entfernt!"; 5 cutText ["","PLAIN"]; life_is_processing = false;};
      
          {
              if(!([false,_x,_oldVal] call life_fnc_handleInv)) exitWith {
                  5 cutText ["","PLAIN"]; 
                  life_is_processing = false;
              };
          } forEach _oldItemArray;
      
          if(!life_is_processing) exitWith {};
      
          if(!([true,_newItem,_oldVal] call life_fnc_handleInv)) exitWith {
              5 cutText ["","PLAIN"];         
              {
                  [true,_x,_oldVal] call life_fnc_handleInv; 
              } forEach _oldItemArray;
              life_is_processing = false;
          };
      
          5 cutText ["","PLAIN"];
          titleText[format["Du hast %1 zu %2 verarbeitet",_oldVal,_itemName],"PLAIN"];
          life_is_processing = false;
      }
      else
      {
          if(life_cash < _cost) exitWith {hint format["Du brauchst $%1 um ohne Lizenz verarbeiten zu können!",[_cost] call life_fnc_numberText]; 5 cutText ["","PLAIN"]; life_is_processing = false;};
      
      
      
      
          while{true} do
          {
              sleep  0.9;
              _cP = _cP + 0.01;
              _progress progressSetPosition _cP;
              _pgText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_upp];
              if(_cP >= 1) exitWith {};
              if(player distance _vendor > 10) exitWith {};
          };
      
      
      
      
          if(player distance _vendor > 10) exitWith {hint "Du hast dich zuweit entfernt!"; 5 cutText ["","PLAIN"]; life_is_processing = false;};
      
          if(life_cash < _cost) exitWith {hint format["Du brauchst $%1 um ohne Lizenz verarbeiten zu können!",[_cost] call life_fnc_numberText]; 5 cutText ["","PLAIN"]; life_is_processing = false;};
      
          {
              if(!([false,_x,_oldVal] call life_fnc_handleInv)) exitWith {
                  5 cutText ["","PLAIN"]; 
                  life_is_processing = false;
              };
          } forEach _oldItemArray;
      
          if(!life_is_processing) exitWith {};
      
          if(!([true,_newItem,_oldVal] call life_fnc_handleInv)) exitWith {
              5 cutText ["","PLAIN"];         
              {
                  [true,_x,_oldVal] call life_fnc_handleInv; 
              } forEach _oldItemArray;
              life_is_processing = false;
          };
      
          5 cutText ["","PLAIN"];
          titleText[format["Du hast %1 zu %2 zu $%3 verarbeitet",_oldVal,_itemName,[_cost] call life_fnc_numberText],"PLAIN"];
          life_cash = life_cash - _cost;
          life_is_processing = false;
      };
      Alles anzeigen

      Ihr seht ja als beispiel:

      Code
      case "beer": 
          {
              player say3D "brauen";
              [["yeast", "hops"],"beerp",500,"Braue Bier"]
          };


      Heißt, das man yeast und hops braucht um ein Bier zu bekommen.

      Falls ihr keinen Sound haben möchtet, so entfernt einfach das player say3D "brauen";

      2. Geht in eure Functions.h und fügt folgendes unter class Actions ein:

      Code
      class processActionMulti {};

      3. Geht in euer Arma3 Editor, erstellt einen NPC und gibt ihm folgenden INIT:

      Code
      this allowDamage false; this enableSimulation false; this addAction[""Braue Bier"",life_fnc_processActionMulti,""beer"",0,false,false,"""",'life_inv_hops > 0 && life_inv_yeast > 0 && !life_is_processing'];";

      Das war es schon ;)

      Denk daran, das ihr da alle Items nehmen könnt die ihr wollt. Einfach nicht vergessen, die INIT entsprechend anzupassen ;)

      MfG
      Noldy

    • [Tutorial] Froschnetz / LSD einfügen

      • Noldy
      • 9. August 2015 um 04:03

      Das Urheberrecht dieses Beitrags liegt bei Motombo, am 28. Juni 2014!

      Zitat von GekkoHD


      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
      Benö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
      Alles anzeigen


      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.


      Code
      ...
          class netzUse {};
          ...


      Schritt 2
      Wir erstellen die neue Datei fn_netzUse.sqf
      Diese erstellen wir in dem Ordner, wie oben beschrieben.


      Code
      /*
              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;
      Alles anzeigen


      Schritt 3
      Wir erstellen jetzt den virtuellen Gegenstand, damit er auch im Inventar angezeigt wird.
      Es werden jetzt folgende Dateien gebraucht.


      Code
      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


      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
      case 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
              ...
              };
          };
      Alles anzeigen


      Jetzt kommen wir zu den Lizensen.


      fn_licenseType.sqf


      Code
      case 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"};
              ...
              };
          };
      Alles anzeigen



      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


      Code
      case "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


      Code
      case (_item == "netz"):
          {
              [] spawn life_fnc_netzUse;
          };



      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
      life_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
              ...
          ];
      Alles anzeigen
      Code
      life_licenses =
          [
              ...
              ["license_civ_salt","civ"],
              ["license_civ_cement","civ"],
              ["license_med_air","med"],
              ["license_civ_lsd","civ"]//Neu eingefügt
          ];
      Code
      life_illegal_items =
      [["heroinu",1200],["heroinp",2500],["cocaine",1500],["cocainep",3500],["marijuana",2000],["turtle",3000],["lsd",3800]];//Neu
      eingefügt
      Code
      sell_array = 
          [
              ["fuelF",500],
              ["spikeStrip",1200],
              ["cement",1950],
              ["lsd",3800],//Neu eingefügt
              ["netz",50]//Neu eingefügt
          ];
      Code
      buy_array = 
          [
              ["fuelF",850],
              ["peach",68],
              ["spikeStrip",2500],
              ["netz",70]//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.


      Code
      this 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.


      Code
      case "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

      Alles anzeigen
    • [Tutorial] Manuelle Wanted Liste - Altis Life

      • Noldy
      • 9. August 2015 um 04:02

      Das Urheberrecht dieses Beitrags liegt bei jeremykirst, am 14. November 2014!

      Zitat von jeremykirst


      Moin Leute,


      heute zeige ich euch wie ihr auf den Altis Life Versionen 3.1.4.6 - 3.1.4.8 die Manuelle Wanted Liste einbaut.


      Datein, welche wir bearbeiten werden:


      Altis_Life.Altis\Functions.h
      Altis_Life.Altis\dialog\MasterHandler.h
      Altis_Life.Altis\dialog\player_inv.hpp
      Altis_Life.Altis\core\pmenu\fn_p_openMenu.sqf
      @life_server\live_server\Functions\WantedSystem\fn_WantedAdd.sqf


      --------------------------------------------------------------------------------------------------------------------------


      Datein, welche wir hinzufügen werden:


      Altis_Life.Altis\core\pmenu\fn_wanted2.sqf
      Altis_Life.Altis\core\pmenu\fn_wantedadd2.sqf
      Altis_Life.Altis\dialog\wantedadd2.hpp


      Part 1:

      Öffnet die Function.h und fügt unter der Klasse:

      Code
      class Player_Menu

      folgendes hinzu:

      Spoiler anzeigen


      class wantedadd2 {};
      class wanted2 {};


      Part 2:

      Öffnet die MasterHandler.h in eurem

      Code
      Altis_Life.Altis\dialog

      Verzeichnis und tragt folgende Zeile ein:


      Code
      #include "wantedadd2.hpp"


      Part 3:


      Öffnet die Datei Altis_Life.Altis\dialog\player_inv.hpp und tragt unter diesem Button:

      Code
      class ButtonSyncData : life_RscButtonMenu {
                  idc = -1;
                  //shortcuts[] = {0x00050000 + 2};
                  text = "$STR_PM_SyncData";
                  onButtonClick = "[] call SOCK_fnc_syncData;";
                  x = 0.1;
                  y = 0.805;
                  w = (6.25 / 40);
                  h = (1 / 25);
              };

      Diesen Buuton ein:


      Code
      class ButtonWantedAdd : life_RscButtonMenu {
                  idc = 9800;
                  //shortcuts[] = {0x00050000 + 2};
                  text = "Wanted +";
                  onButtonClick = "createDialog ""life_wantedadd2"";";
                  x = 0.42 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH));
                  y = 0.805;
                  w = (6.25 / 40);
                  h = (1 / 25);
              };

      Part 4:

      Jetzt öffnet die Altis_Life.Altis\core\pmenu\fn_p_openMenu.sqf und tragt unter

      Code
      case civilian:

      diese Zeile ein:


      Code
      ctrlShow[9800,false];


      Part 5:

      Jetzt
      öffnet euren live_server und öffnet dort diese Datei:

      Code
      @life_server\live_server\Functions\WantedSystem\fn_WantedAdd.sqf

      ,
      nun ersetzt ihr das:


      Code
      //What is the crime?
      switch(_type) do
      {
          case "187V": {_type = ["Vehicular Manslaughter",6500]};
          case "187": {_type = ["Manslaughter",8500]};
          case "901": {_type = ["Escaping Jail",4500]};
          case "261": {_type = ["Rape",5000]}; //What type of sick bastard would add this?
          case "261A": {_type = ["Attempted Rape",3000]};
          case "215": {_type = ["Attempted Auto Theft",2000]};
          case "213": {_type = ["Use of illegal explosives",10000]};
          case "211": {_type = ["Robbery",1000]};
          case "207": {_type = ["Kidnapping",3500]};
          case "207A": {_type = ["Attempted Kidnapping",2000]};
          case "487": {_type = ["Grand Theft",1500]};
          case "488": {_type = ["Petty Theft",700]};
          case "480": {_type = ["Hit and run",1300]};
          case "481": {_type = ["Drug Possession",1000]};
          case "482": {_type = ["Intent to distribute",5000]};
          case "483": {_type = ["Drug Trafficking",9500]};
          case "459": {_type = ["Burglary",6500]};
          case "919": {_type = ["Organ Dealing",20000]};
          default {_type = [];};
      };
      Alles anzeigen

      mit dem hier:


      Code
      //What is the crime?
      switch(_type) do
      {
          case "187V": {_type = ["Überfahren mit Todesfolge",6500]};
          case "187": {_type = ["Mord",60000]};
          case "901": {_type = ["Gefängnisflucht",4500]};
          case "261": {_type = ["Raub",5000]};
          case "261A": {_type = ["Versuchter Raub",3000]};
          case "215": {_type = ["Versuchter Autodiebstahl",2000]};
          case "213": {_type = ["Verwenden illegaler Sprengstoff",10000]};
          case "211": {_type = ["Raub/Diebstahl",1000]};
          case "207": {_type = ["Entführung",3500]};
          case "207A": {_type = ["Versuchte Entführung",2000]};
          case "487": {_type = ["Autodiebstahl",1500]};
          case "488": {_type = ["Diebstahl",700]};
          case "480": {_type = ["Fahrerflucht",1300]};
          case "481": {_type = ["Drogenbesitz",1000]};
          case "482": {_type = ["Versuchter Drogenhandel",5000]};
          case "483": {_type = ["Drogenhandel",9500]};
          case "503": {_type = ["Handel mit exotischen Gütern",25000]};
      
          case "1": {_type = ["Fahren ohne Führerschein",1500]};
          case "2": {_type = ["Versuchter Diebstahl Fahrzeugs",3500]};
          case "3": {_type = ["Diebstahl/Führen e.fremden Zivilfahrzeugs",5000]};
          case "4": {_type = ["Fahren ohne Licht",350]};
          case "5": {_type = ["Überhöhte Geschwindigkeit",3500]};
          case "6": {_type = ["Gefährliche Fahrweise",2500]};
          case "7": {_type = ["Versuchter Diebstahl e.Polizeifahrzeugs",7500]};
          case "8": {_type = ["Diebstahl von Polizeifahrzeugen",20000]};
          case "9": {_type = ["Landen in einer Flugverbotszone",2500]};
          case "10": {_type = ["Fahren von illegalen Fahrzeugen",10000]};
          case "11": {_type = ["Unfallverursacher/Fahrerflucht nach Unfall",5000]};
          case "12": {_type = ["Fahrerflucht vor der Polizei",7500]};
          case "13": {_type = ["Überfahren eines anderen Spielers",25000]};
          case "14": {_type = ["Illegale Strassensperren",5000]};
          case "15": {_type = ["Widerstand gegen die Staatsgewalt",15000]};
          case "16": {_type = ["Nicht befolgen e.pol.Anordnung",5000]};
          case "17": {_type = ["Beamtenbeleidigung",2500]};
          case "18": {_type = ["Belästigung eines Polizisten",8000]};
          case "19": {_type = ["Betreten der pol.Sperrzone",5000]};
          case "20": {_type = ["Töten eines Polizisten",25000]};
          case "21": {_type = ["Beschuss auf Polizei/Beamte/Eigentum",15000]};
          case "22": {_type = ["Zerstörung von Polizeieigentum",15000]};
          case "23": {_type = ["Drogendelikte",12000]};
          case "24": {_type = ["Waffenbesitz ohne Lizenz",5000]};
          case "25": {_type = ["Mit gez.Waffe durch Stadt",2500]};
          case "26": {_type = ["Besitz einer verbotenen Waffe",10000]};
          case "27": {_type = ["Schusswaffengebrauch innerhalb Stadt",10000]};
          case "28": {_type = ["Geiselnahme",30000]};
          case "29": {_type = ["Überfall auf Personen/Fahrzeuge",10000]};
          case "30": {_type = ["Bankraub",200000]};
          case "31": {_type = ["Mord",60000]};
          case "32": {_type = ["Aufstand",35000]};
          case "33": {_type = ["Angriff durch Rebellen",35000]};
          case "34": {_type = ["Angriff/Belagerung von Hauptstädten",25000]};
          case "35": {_type = ["Vers.Landung in einer Flugverbotszone",1500]};
          case "36": {_type = ["Fliegen/Schweben unterhalb 150m ü.Stadt",2000]};
          case "37": {_type = ["Ausbruch aus dem Gefaengnis",25000]};
          case "38": {_type = ["Fliegen ohne Fluglizenz",1200]};
          case "39": {_type = ["Dauerhaft störendes Hupen",1000]};
          case "40": {_type = ["Handel mit exotischen Gütern",25000]};
          default {_type = [];};
      };
      Alles anzeigen

      Part 6:

      Jetzt müsst ihr nur noch die Dateien im Anhang in die richtigen Ordner einfügen:


      Code
      Altis_Life.Altis\core\pmenu\fn_wanted2.sqf
      Altis_Life.Altis\core\pmenu\fn_wantedadd2.sqf
      Altis_Life.Altis\dialog\wantedadd2.hpp


      Ich hoffe ich konnte euch Helfen, bei Fragen oder Wünschen einfach in die Kommentare


      MFG,
      J3r3my

      Alles anzeigen

      Dateien

      Altis_Life.Altis.zip 17,03 kB – 664 Downloads
    • [Tutorial] Polizeimarke zeigen

      • Noldy
      • 9. August 2015 um 03:55

      Schritt 1. Altis_Life.Altis\core\fn_setupActions.sqf


      Fügt unter case west das ein:
      (Wenn ihr kein case west habt, erstellt es)


      Code
      //Polizeimarke
      life_actions
      = life_actions + [player addAction["<t
      color='#00FF00'>Polizeimarke
      zeigen</t>",life_fnc_copShowLicense,"",1,false,true,"",'
      playerSide == west && !isNull cursorTarget &&
      cursorTarget isKindOf "Man" ']];

      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


      Schritt 2. Altis_Life.Altis\functions.h


      Fügt unter class cop das ein:


      Code
      class copShowLicense {};
              class copLicenseShown {};

      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


      Schritt 3. Altis_Life.Altis\core\cop


      Fügt die 2 SQF DATEIN in den Ordner cop


      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


      Schritt 4. Altis_Life.Altis\textures


      Fügt die .paa Datei in den Ordner textures


      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


      Fertig ist das Tutorial.

      Dateien

      Altis_Life.Altis.zip 1,52 kB – 641 Downloads marke.zip 29,58 kB – 542 Downloads
    • [Tutorial] Platzieren von Objekten wie Nagelbänder

      • Noldy
      • 9. August 2015 um 03:49

      Erstellen:
      Altis_Life.Altis\core\actions\fn_packupmauer.sqf
      Altis_Life.Altis\core\items\fn_mauer.sqf

      Bearbeiten:
      Altis_Life.Altis\core\config\fn_itemWeight.sqf
      Altis_Life.Altis\core\config\fn_varHandle.sqf
      Altis_Life.Altis\core\config\fn_varToStr.sqf
      Altis_Life.Altis\core\config\fn_virt_shops.sqf
      Altis_Life.Altis\core\configuration.sqf
      Altis_Life.Altis\core\fn_setupActions.sqf
      Altis_Life.Altis\core\pmenu\fn_useItem.sqf
      Altis_Life.Altis\Functions.h


      1.
      Erstellt eine Datei mit fogendem Inhalt und speichert diese unter dem Namen fn_packupmauer.sqf im Ordner Altis_Life.Altis\core\actions\ ab.

      Code
      /*
          File: fn_packupmauer.sqf
          Author: Bryan "Tonic" Boardwine
          Edited by: OLLI aka Hauklotz
      
      
      
      
          Description:
          Packs up a deployed wall.
      */
      private["_mauer"];
      _mauer = nearestObjects[getPos player,["Land_Concrete_SmallWall_4m_F"],8] select 0;
      if(isNil "_mauer") exitWith {};
      
      
      
      
      if(([true,"mauer",1] call life_fnc_handleInv)) then
      {
          titleText["Du hast die Mauer aufgehoben.","PLAIN"];
          player removeAction life_action_mauerPickup;
          life_action_mauerPickup = nil;
          deleteVehicle _mauer;
      };
      Alles anzeigen

      2.
      Öffnet die Datei Altis_Life.Altis\core\config\fn_itemWeight.sqf und fügt folgendes hinzu:

      Code
      case "mauer": {35};

      3.
      Öffnet die Datei

      Code
      Altis_Life.Altis\core\config\fn_varHandle.sqf

      und fügt folgendes hinzu:
      Bei case 0:

      Code
      case "mauer": {"life_inv_mauer"};


      Bei case 1:

      Code
      case "life_inv_mauer": {"mauer"};

      4.
      Öffnet die Datei Altis_Life.Altis\core\config\fn_varToStr.sqf und fügt folgendes bei //Virtual Inventory Items hinzu:

      Code
      case "life_inv_mauer": {"Mauer"};

      5.
      Öffnet die Datei

      Code
      Altis_Life.Altis\core\config\fn_virt_shops.sqf

      und fügt folgendes bei case "cop": hinzu:

      Code
      ,"mauer"

      6.
      Öffnet die Datei Altis_Life.Altis\core\configuration.sqf und fügt folgendes hinzu:

      Spoiler anzeigen

      Bei ****** Backend Variables ***** fügt:

      Code
      life_mauer = ObjNull;


      unter

      Code
      life_spikestrip = ObjNull;


      hinzu.
      Bei life_inv_items =  folgendes:

      Code
      "life_inv_mauer"


      Bei sell_array = folgendes:

      Code
      ["mauer",2500]


      und bei buy_array = folgendes:

      Code
      ["mauer",5000]

      7.
      Erstellt eine Datei mit fogendem Inhalt und speichert diese unter dem Namen fn_mauer.sqf im Ordner Altis_Life.Altis\core\items\ ab.

      Code
      /*
          File: fn_mauer.sqf
          Author: OLLI aka Hauklotz
      
          Description:
          Holt das Item aus dem Inventar und setzt es auf der Map.
      */
      private["_position","_mauer"];
      _mauer = "Land_Concrete_SmallWall_4m_F" createVehicle [0,0,0];
      _mauer attachTo[player,[0,5.5,0.2]];
      _mauer setDir 90;
      _mauer setVariable["item","mauerDeployed",true];
      
      
      
      
      life_action_mauerDeploy = player addAction["<t color='#00FF00'>Mauer aufstellen</t>",{if(!isNull life_mauer) then {detach life_mauer; life_mauer = ObjNull;}; player removeAction life_action_mauerDeploy; life_action_mauerDeploy = nil;},"",999,false,false,"",'!isNull life_mauer'];
      life_mauer = _mauer;
      waitUntil {isNull life_mauer};
      if(!isNil "life_action_mauerDeploy") then {player removeAction life_action_mauerDeploy;};
      if(isNull _mauer) exitWith {life_mauer = ObjNull;};
      _mauer setPos [(getPos _mauer select 0),(getPos _mauer select 1),0];
      _mauer allowDamage false;
      Alles anzeigen

      8.
      Öffnet die Datei

      Code
      Altis_Life.Altis\core\fn_setupActions.sqf

      und fügt bei case west folgendes hinzu:

      Code
      life_actions = life_actions + [player addAction["<t color='#FF0000'>Mauer aufheben</t>",life_fnc_packupmauer,"",0,false,false,"",' _mauer = nearestObjects[getPos player,["Land_Concrete_SmallWall_4m_F"],8] select 0; !isNil "_mauer" && !isNil {(_mauer getVariable "item")}']];

      9.
      Öffnet die Datei Altis_Life.Altis\core\pmenu\fn_useItem.sqf und fügt folgendes ein:
      Sucht nach:

      Code
      case (_item == "spikeStrip"):
          {
              if(!isNull life_spikestrip) exitWith {hint "Du hast bereits ein Nagelband ausgelegt"};
              if(([false,_item,1] call life_fnc_handleInv)) then
              {
                  [] spawn life_fnc_spikeStrip;
              };
          };


      und fügt:

      Code
      case (_item == "mauer"):
      	{
      		if(!isNull life_mauer) exitWith {hint "Du stellst schon eine Mauer!"};
      		if(([false,_item,1] call life_fnc_handleInv)) then
      		{
      			[] spawn life_fnc_mauer;
      		};
      	};


      direkt darunter ein.

      10.
      Öffnet die Datei Altis_Life.Altis\Functions.h und fügt folgendes hinzu:
      Bei "class Actions"

      Code
      class packupmauer {};


      und bei "class Items"

      Code
      class mauer {};

      Das wars. Das ganze könnt Ihr natürlich auch mit z.b. einer Schranke machen.

    • [Tutorial] Neue Jobs erstellen [mit Spitzhacke]

      • Noldy
      • 9. August 2015 um 03:48

      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

      Code
      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

      Code
      case (player distance (getMarkerPos "silber_1") < 50): {_mine = "silberu"; _val = 2;};


      Nun sollte euer Code folgendermassen Aussehen:


      Code
      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 =

      Code
      life_inv_items =
      [
          "life_inv_oilu",
          "life_inv_oilp",
      
      ];


      Darunter fügt Ihr nun "life_inv_silberu" ein das nun euer Rohsilber ist.
      Nun sollte euer Code so Aussehen


      Code
      life_inv_items =
      [
          "life_inv_oilu",
          "life_inv_oilp",
              "life_inv_silberu",
      
      ];


      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:

      Code
      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:


      Code
      //Virtual Inventory Items


      dies ein:


      Code
      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

      Code
      case "oilu": {"life_inv_oilu"};


      das ein:

      Code
      case "silberu": {"life_inv_silberu"};


      und bei "case 1:" unter

      Code
      case "life_inv_oilu": {"oilu"};


      fügen wir das ein:

      Code
      case "life_inv_silberu": {"silberu"};


      Speichern und schliessen.


      Jetzt öffnet ihr die fn_itemWeight.sqf sie ist ebenfalls im Ordner core\config und fügt unter

      Code
      case "oilu": {7};
      Code
      case "silberu": {4}; // die 4 steht für das Gewicht von eurem Rohsilber


      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

      Code
      case "diamond": {["Diamond Dealer",["diamond","diamondc"]]};


      und fügen dort "silberu" hinzu nun sollte das ganze so Aussehen:

      Code
      case "diamond": {["Diamond Dealer",["diamond","diamondc","silberu"]]};


      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:

      Code
      life_inv_items =
      [
          "life_inv_oilu",
          "life_inv_oilp",
              "life_inv_silberu",
      
      ];


      dort fügt Ihr nun "life_inv_silberp", noch darunter ein (silberp ist euer verarbeitetes Silber)


      Jetzt sucht Ihr:

      Code
      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

      Code
      //Virtual Inventory Items


      dies ein:

      Code
      case "life_inv_silberp": {"Silber"};


      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

      Code
      case "silberu": {"life_inv_silberu"};


      das ein

      Code
      case "silberp": {"life_inv_silberp"};


      und bei "case 1:" unter

      Code
      case "life_inv_silberu": {"silberu"};


      das ein

      Code
      case "life_inv_silberp": {"silberp"};


      Speichern und schliessen.


      Jetzt gehen wir in den Ordner core\actions und öffnen die Datei fn_processAction.sqf und fügen unter

      Code
      case "cement": {["rock","cement",350,"Mixing Cement"]};


      das ein

      Code
      case "silber": {["silberu","silberp",350,"Rohsilber verarbeiten"]};


      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:


      Code
      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

      Code
      case "diamond": {["Diamond Dealer",["diamond","diamondc","silberu"]]};


      und fügen "silberp" noch hinzu das das ganze so Aussieht:

      Code
      case "diamond": {["Diamond Dealer",["diamond","diamondc","silberu","silberp"]]};


      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:

      Code
      life_licenses =
      [
          ["license_cop_air","cop"],
      
      ];


      das ein:

      Code
      ["license_civ_silber","civ"],


      Speichern und schliessen.


      Geht nun in den Ordner Mission\core\config und öffnet die Datei fn_licensePrice.sqf
      dort fügt Ihr unter

      Code
      switch (_type) do
      {
          case "driver": {500}; //Drivers License cost
      };


      das ein:

      Code
      case "silber": {30000}; //Preis für eure Silber Lizenz


      Speichern und schliessen.


      öffnet nun im selben Ordner die Datei fn_licenseType.sqf
      Und fügt bei case 0: unter

      Code
      case 0:
          {
              switch (_type) do
              {
                  case "driver": {_var = "license_civ_driver"}; //Drivers License cost
      
              };
          };


      das ein:

      Code
      case "silber": {_var = "license_civ_silber"};


      und bei case 1: unter

      Code
      case 1:
          {
              switch (_type) do
              {
                  case "license_civ_driver": {_var = "driver"}; //Drivers License cost
      
              };
          };


      das ein:

      Code
      case "license_civ_silber": {_var = "silber"};


      Speichern und schliessen.


      öffnet nun im selben Ordner die Datei fn_varToStr.sqf und fügt unter

      Code
      //License Block
          case "license_civ_driver": {"Driver License"};
      
      
      
      
      
      
      
      
      
      
      };
      Alles anzeigen


      das ein

      Code
      case "license_civ_silber": {"Silber Lizenz"};


      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:


      Code
      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!

    • [Tutorial] AGB Dialog

      • Noldy
      • 9. August 2015 um 03:46

      Hallo NG Community,

      Heute mal ein etwas kleineres Tutorial.

      Für den ein oder anderen bestimmt ganz interessant.

      Was kann dieser Dialog?
      Wenn ihr auf den Server verbindet, kommt ein Dialog mit den Serverregeln. Man hat 2 Buttons NICHT AKZEPTIEREN und AKZEPTIEREN. Klickt man auf NICHT AKZEPTIEREN ist endmission, und ihr werdet in die Lobby geworfen. Klickt ihr jedoch auf AKZEPTIEREN könnt ihr wie gewohnt auf dem Server spielen.

      1. Erstellt eine neue .hpp datei namens agb.hpp in euren dialog Ordner mit folgendem inhallt:

      Code
      class agb
      {
          idd = 32154;
          name = "agb";
          movingEnable = false;
          enableSimulation = false;
      
          class controlsBackground
          {
              class RscTitleBackground : Life_RscText
              {
                  colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"};
                  idc = -1;
                  x = 0.0875;
                  y = 0.06;
                  w = 0.825;
                  h = 0.04;
              };
      
              class RscBackground : Life_RscText
              {
                  colorBackground[] = {0.31,0.31,0.31,1};
                  idc = -1;
                  x = 0.0875;
                  y = 0.12;
                  w = 0.825;
                  h = 0.82;
              };
      
              class RscTitleText : Life_RscTitle
              {
                  colorBackground[] = {0, 0, 0, 0};
                  idc = -1;
                  text = "Die Serverregeln:";
                  x = 0.0875;
                  y = 0.06;
                  w = 0.825;
                  h = 0.04;
                  class Attributes 
                  {
                      align = "center";
                  };
              };
      
              class RsclolStatus : Life_RscStructuredText
              {
                  idc = -1;
                  colorBackground[] = {0, 0, 0, 0};
                  sizeEx = 0.0001;
                  text = "<t size = '0.8'>Unerwünschtes Fehlverhalten führt ggf. zu Bann<br / >§1: Hacking / Cheating / Duping / Belleidigungen<br / >§1.1: Selbstmord / Disconect um sich dem Rollenspiel zu entziehen.<br / >§1.2: Bugs/Exploites ausnutzen - im Zweifel Admin fragen<br / ><br / >§2:RP wird bei uns Groß geschrieben. Hällst du dich nicht an das RP, hast du hier nix verloren!<br / ><br / >§3: RDM / VDM wird sofort geahndet und die Täter gebannt.<br / ><br / >Unsere Kontaktdaten: <br / >TS³ HIERDEINETSIP<br / >Homepage HIERDEINEHOMEPAGE<br / >Admins: <br / >HIERKOMMENDIEADMINSHIN<br / ><br / >Hinweis: Wir suchen ADAC/Medics und Polizisten. Bewerbungen im Forum.<br / ></t> <t font ='PuristaBold' size='0.9'>Um auf dem LRLife Chernarus Server zu spielen musst du diesen Regeln zustimmen und verpflichtest dich dazu diese einzuhalten.</t>";
                  x = 0.1125;
                  y = 0.16;
                  w = 0.775;
                  h = 0.66;
              };    
          };
      
              class Controls
          {
              class naz : Life_RscButtonMenu
              {
                  idc = -1;
                  text = "Nicht Akzeptieren";
                  colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"};
                  onButtonClick = "closeDialog 0;";
                  x = 0.1075;
                  y = 0.88;
                  w = 0.3;
                  h = 0.04;
                  class Attributes 
                  {
                      align = "center";
                  };
              };
      
      
              class az : Life_RscButtonMenu
              {
                  idc = -1;
                  text = "Akzeptieren";
                  colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"};
                  onButtonClick = "rulesok = true; closeDialog 0;";
                  x = 0.5825;
                  y = 0.88;
                  w = 0.3;
                  h = 0.04;
                  class Attributes 
                  {
                      align = "center";
                  };    
              };
          };
      };
      Alles anzeigen

      2. Öffnet eure description.ext und fügt folgendes unter #include "dialog\MasterHandler.h" hinzu:

      Code
      #include "dialog\agb.hpp"

      3. Öffnet eure core\fn_initCiv.sqf und fügt folgendes unter waitUntil {!(isNull (findDisplay 46))}; hinzu:

      Code
      diag_log "::Life Client:: Creating AGB Dialog";
      // AGB
      rulesok = false;
      if(!createDialog "agb") exitWith {};
      waitUntil{!isNull (findDisplay 32154)}; //Wait for the spawn selection to be open.
      waitUntil{isNull (findDisplay 32154)}; //Wait for the spawn selection to be done.
      if(!rulesok)then {        
              player enableSimulation false;
              ["agb",false,true] call BIS_fnc_endMission;
              sleep 35;
      };
      rulesok = nil;
      Alles anzeigen

      So sehen nur die Zivilisten den Dialog beim Joinen. Wollt ihr jedoch, das es auch die Cops/Medics/(Adac) könnt so fügt den gleichen befehl in die gewünschte init der Fraktionen ein.

      Hier noch ein Screenshot:


      Wichtig:

      Ich bitte euch, der Inhallt des Dialogs abzuändern.

      Öffnet dazu eure dialog\agb.hpp bei Linie 50
      TS³,HP und Admins habe ich schon entfernt. Das dickgeschriebene bitte ich euch zu ändern.

      TS³ HIERDEINETSIP<br / >Homepage HIERDEINEHOMEPAGE<br / >Admins: <br / >HIERKOMMENDIEADMINSHIN

      Viel spaß damit.

      MfG
      Noldy

    • [Tutorial] Persistent Cop Gear Saving extDB - Cop-Gear speichern

      • Noldy
      • 9. August 2015 um 03:44

      Das Urheberrecht dieses Beitrags liegt bei chris579, am 2. Dezember 2014!

      Zitat von chris579


      Hallo Leute,


      diese Lösung stammt vom Server, den ich
      gescripted habe, der jedoch wegen des Teams leider down geht. Diese
      Lösung ist eine Eigenkreation und auch so zu deklarieren. Mit Disclaimer
      und Verweis auf mich oder auf diesen Beitrag.


      Die Idee ist für
      den Cop einen extra Button einzufügen, mit dem man dann das Gear
      speichert. Wie das ganze aufgerufen wird, kann man auch variieren. Das
      ganze ist getestet und sollte einwandfrei funktionieren (sollte ich es
      nicht irgendwo verkackt haben).


      Als Erstes fügen wir den neuen Button ins Player Menü ein:


      dialog/player_inv.hpp


      Code
      class ButtonSaveGear : life_RscButtonMenu {
                  idc = 9900;
                  text = "Save Gear";
                  onButtonClick = "[] call SOCK_fnc_syncGear;";
                  x = 0.26 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH));
                  y = 0.805;
                  w = (6.25 / 40);
                  h = (1 / 25);
              };

      Dann sorgen wir dafür, dass der Button nur Cops angezeigt wird:


      core/pmenu/fn_p_openMenu.sqf


      Code
      ctrlShow[9900,false];

      Dieses muss bei jedem Case, außer West, eingefügt werden.


      Um
      zu verhindern, dass die Variable life_gear dauerhaft überschrieben
      wird, wird beim Connect und der Rückgabe der Spielerdaten vom Server
      quasi ein "Backup" erstellt, dass nur überschrieben wird, wenn denn auch
      wirklich das Gear gespeichert wird.


      core/session/fn_requestReceived.sqf


      nach


      Code
      life_gear = _playerData select 8;

      und vor


      Code
      [] call life_fnc_loadGear;

      das einfügen:


      Code
      life_persistent_gear = _playerData select 8;

      also:


      Code
      life_gear = _playerData select 8;
      life_persistent_gear = _playerData select 8;
      
      
      
      
      
      
      
      [] call life_fnc_loadGear;


      Nun benötigen wir die neue Datei "fn_syncGear.sqf"


      core/session/fn_syncGear.sqf


      Code
      /*
          Author: H4SHK3KS
          File: fn_syncGear.sqf
      
          Description: calles the function to save the cop gear
      */
      
      
      
      
      
      
      
      if(isNil "life_copGearSaved") then {life_copGearSaved = false;};
      
      
      
      
      
      
      
      if(life_copGearSaved) exitWith {hint "You can sync your cop gear only every 30 seconds!"};
      
      
      
      
      
      
      
      hint "Cop gear succesfully saved. You'll now spawn every time with this gear as long you don't overwrite your data!";
      
      
      
      
      
      
      
      [7] spawn SOCK_fnc_updatePartial;
      
      
      
      
      
      
      
      [] spawn
      {
          life_copGearSaved = true;
          sleep 30;
          life_copGearSaved = false;
      };
      Alles anzeigen

      Diese tragen wir in die Functions.h ein


      bei SOCK (ganz oben)


      Code
      class syncGear {};


      core/session/fn_updatePartial.sqf


      das hier am Ende einfügen (Case Nummer eventuell anpassen)


      Code
      case 7: {
              [true] call life_fnc_saveGear;
              _packet set[2,life_persistent_gear];
          };


      Nun das wichtigste:


      core/functions/fn_saveGear.sqf


      Zur Verständnis poste ich die gesamte Datei.


      Spoiler anzeigen
      Code
      /*
      File: fn_saveGear.sqf
      Author: Bryan "Tonic" Boardwine
      Full Gear/Y-Menu Save by Vampire
      Edited: Itsyuka and H4SHK3KS (persistent cop gear)
      
      
      
      
      
      
      
      Description:
      Saves the players gear for syncing to the database for persistence..
      */
      
      
      
      
      
      
      
      private["_return","_uItems","_bItems","_vItems","_pItems","_hItems","_yItems","_uMags","_vMags","_bMags","_pMag","_hMag","_uni","_ves","_bag","_handled","_saveGear"];
      
      
      
      
      
      
      
      _saveGear = [_this,0,false,[false]] call BIS_fnc_param;
      
      
      
      
      
      
      
      If(playerSide == west AND !(_saveGear)) then {
          _return = life_persistent_gear;
          life_persistent_gear resize 17;
      } else {
          _return = [];
      
      
      
      
      
      
      
          _return pushBack uniform player;
          _return pushBack vest player;
          _return pushBack backpack player;
          _return pushBack goggles player;
          _return pushBack headgear player;
          _return pushBack assignedITems player;
          if(playerSide == west || playerSide == civilian) then {
              _return pushBack primaryWeapon player;
              _return pushBack handgunWeapon player;
          } else {
              _return pushBack [];
              _return pushBack [];
          };
      
      
      
      
      
      
      
          _uItems = [];
          _uMags  = [];
          _bItems = [];
          _bMags  = [];
          _vItems = [];
          _vMags  = [];
          _pItems = [];
          _hItems = [];
          _uni = [];
          _ves = [];
          _bag = [];
      
      
      
      
      
      
      
          if(uniform player != "") then
          {
              {
                  if (_x in (magazines player)) then {
                      _uMags = _uMags + [_x];
                  } else {
                      _uItems = _uItems + [_x];
                  };
              } forEach (uniformItems player);
          };
      
      
      
      
      
      
      
          if(backpack player != "") then
          {
              {
                  if (_x in (magazines player)) then {
                      _bMags = _bMags + [_x];
                  } else {
                      _bItems = _bItems + [_x];
                  };
              } forEach (backpackItems player);
          };
      
      
      
      
      
      
      
          if(vest player != "") then
          {
              {
                  if (_x in (magazines player)) then {
                      _vMags = _vMags + [_x];
                  } else {
                      _vItems = _vItems + [_x];
                  };
              } forEach (vestItems player);
          };
      
      
      
      
      
      
      
          if(count (primaryWeaponMagazine player) > 0 && alive player) then
          {
              _pMag = ((primaryWeaponMagazine player) select 0);
              if(_pMag != "") then
              {
                  _uni = player canAddItemToUniform _pMag;
                  _ves = player canAddItemToVest _pMag;
                  _bag = player canAddItemToBackpack _pMag;
                  _handled = false;
                  if(_ves) then
                  {
                      _vMags = _vMags + [_pMag];
                      _handled = true;
                  };
                  if(_uni && !_handled) then
                  {
                      _uMags = _uMags + [_pMag];
                      _handled = true;
                  };
                  if(_bag && !_handled) then
                  {
                      _bMags = _bMags + [_pMag];
                      _handled = true;
                  };
              };
          };
      
      
      
      
      
      
      
          if(count (handgunMagazine player) > 0 && alive player) then
          {
              _hMag = ((handgunMagazine player) select 0);
              if(_hMag != "") then
              {
                  _uni = player canAddItemToUniform _hMag;
                  _ves = player canAddItemToVest _hMag;
                  _bag = player canAddItemToBackpack _hMag;
                  _handled = false;
                  if(_ves) then
                  {
                      _vMags = _vMags + [_hMag];
                      _handled = true;
                  };
                  if(_uni && !_handled) then
                  {
                      _uMags = _uMags + [_hMag];
                      _handled = true;
                  };
                  if(_bag && !_handled) then
                  {
                      _bMags = _bMags + [_hMag];
                      _handled = true;
                  };
              };
          };
      
      
      
      
      
      
      
          if(count (primaryWeaponItems player) > 0) then
          {
              {
                  _pItems = _pItems + [_x];
              } forEach (primaryWeaponItems player);
          };
      
      
      
      
      
      
      
          if(count (handGunItems player) > 0) then
          {
              {
                  _hItems = _hItems + [_x];
              } forEach (handGunItems player);
          };
      
      
      
      
      
      
      
          _return pushBack _uItems;
          _return pushBack _uMags;
          _return pushBack _bItems;
          _return pushBack _bMags;
          _return pushBack _vItems;
          _return pushBack _vMags;
          _return pushBack _pItems;
          _return pushBack _hItems;
      
      
      
      
      
      
      
      };
      
      
      
      
      
      
      
      _yItems = [];
      
      
      
      
      
      
      
      {
          _name = (_x select 0);
          _val = (_x select 1);
          if (_val > 0) then {
              for "_i" from 1 to _val do {
                  _yItems = _yItems + [_name];
              };
          };
      } forEach [
          ["life_inv_apple", life_inv_apple],
          ["life_inv_rabbit", life_inv_rabbit],
          ["life_inv_salema", life_inv_salema],
          ["life_inv_ornate", life_inv_ornate],
          ["life_inv_mackerel", life_inv_mackerel],
          ["life_inv_tuna", life_inv_tuna],
          ["life_inv_mullet", life_inv_mullet],
          ["life_inv_catshark", life_inv_catshark],
          ["life_inv_fishingpoles", life_inv_fishingpoles],
          ["life_inv_water", life_inv_water],
          ["life_inv_donuts", life_inv_donuts],
          ["life_inv_turtlesoup", life_inv_turtlesoup],
          ["life_inv_coffee", life_inv_coffee],
          ["life_inv_fuelF", life_inv_fuelF],
          ["life_inv_fuelE", life_inv_fuelE],
          ["life_inv_pickaxe", life_inv_pickaxe],
          ["life_inv_tbacon", life_inv_tbacon],
          ["life_inv_cone", life_inv_cone],
          ["life_inv_barrier", life_inv_barrier],
          ["life_inv_lockpick", life_inv_lockpick],
          ["life_inv_redgull", life_inv_redgull],
          ["life_inv_peach", life_inv_peach],
          ["life_inv_spikeStrip", life_inv_spikeStrip],
          ["life_inv_defusekit", life_inv_defusekit],
          ["life_inv_storagesmall", life_inv_storagesmall],
          ["life_inv_storagebig", life_inv_storagebig]
      ];
      
      
      
      
      
      
      
      _return pushBack _yItems;
      
      
      
      
      
      
      
      life_gear = _return;
      
      
      
      
      
      
      
      if (_saveGear) then { life_persistent_gear = _return};
      Alles anzeigen


      Wer neue Items eingefügt hat oder sonst etwas geändert hat, muss gucken, wie er diese Datei anpasst.


      Nun die loadGear


      core/functions/fn_loadGear.sqf


      Ganz oben muss das:


      Code
      _itemArray = life_gear;

      durch das

      Code
      if (playerSide == west) then {
          _itemArray = life_persistent_gear;
      } else {
          _itemArray = life_gear;
      };

      ersetzt werden.


      Als letzes nun noch eine Datei:


      core/medical/fn_respawned.sqf


      Das:

      Code
      switch(playerSide) do
      {
          case west: {
              _handle = [] spawn life_fnc_copLoadout;
          };
          case civilian: {
              _handle = [] spawn life_fnc_civLoadout;
          };
          case independent: {
              _handle = [] spawn life_fnc_medicLoadout;
          };
      
      
      
      
      
      
      
          waitUntil {scriptDone _handle};
      };
      Alles anzeigen

      durch das:


      Code
      switch(playerSide) do
      {
          case west: {
              _handle = [] spawn life_fnc_loadGear;
          };
          case civilian: {
              _handle = [] spawn life_fnc_civLoadout;
          };
          case independent: {
              _handle = [] spawn life_fnc_medicLoadout;
          };
      
      
      
      
      
      
      
          waitUntil {scriptDone _handle};
      };
      Alles anzeigen

      ersetzen. Nun sollte alles funktionieren. Das ganze kann auf Medics und auch ADAC erweitert werden.


      Grüße


      Christian

      Alles anzeigen
    • [Tutorial] Drogeneffekte + Überdosis und Abhängig

      • Noldy
      • 9. August 2015 um 03:34

      Das Urheberrecht dieses Beitrags liegt bei Backer133, am 5. März 2015!

      Zitat von Backer133

      Schwierigkeit: Leicht


      Hey
      Leute,hiermit zeig ich euch ein TuT wie Ihr Drogeneffekte
      hinzufügt.Dieses TUT basiert ein bisschen auf dem TUT von Midgetgrimm
      und wurde von mir abgeändert und erweitert. Die Drogen sind Stackbar und
      nach einer Gewissen Anzahl von Drogen wird man entweder Abhängig,
      stirbt oder man bekommt einen Blackout und spawnt irgendwo nackt auf der
      Map. Sollte man Abhängig sein erscheinen alle 5 Minuten gruselige
      Effekte und man muss sich von einen Medic behandeln lassen (Therapie).
      Die Interaktion für Medics habe ich noch nicht ganz fertig, werd Sie
      aber sobald ich Sie fertig habe einfach per Edit hier anhängen.
      Natürlich kann man sich dann auch wenn kein Medic on ist beim Arzt im KH
      behandeln lassen.
      Wie sieht das ganze in schlechter Quali aus?
      (sorry musste die Quali so runterschraufen da mein Upload einfach suckt
      und ich nicht solange warten wollte)


      Cocain Effekt:


      Querbeet-Gaming.de Altis Life Cocaine Effekt - YouTube


      LSD Effekt:


      Querbeet-Gaming.de Altis Life LSD Effekt - YouTube


      Weed Effekt:


      Querbeet-Gaming.de Altis Life Marijuana Effekt - YouTube


      LSD mit überdosis:


      Querbeet-Gaming.de Altis Life LSD Effekt + Überdosiseffekt - YouTube


      Heroin sowie Abhängigkeits Effekt könnt Ihr selbst heraus"fliegen"


      Also lets go:


      Nummer 1:


      Erstellt eine datei namens fn_Cocainenimm.sqf in einen beliebigen Ordner


      Spoiler anzeigen


      /*
      ----------------------------------------------|
      Author: Backer
      Description: Effekt on Cocaine use!
      ----------------------------------------------|
      */


      closeDialog 0;


      player setVariable["Druged",true,true];
      [player,"Cocaine_sound", 54] call life_fnc_globalSound;


      "dynamicBlur" ppEffectEnable true; // enables ppeffect
      "dynamicBlur" ppEffectAdjust [0]; // enables normal vision
      "dynamicBlur" ppEffectCommit 20; // time it takes to normal
      20 fadeSound 1; //fades the sound back to normal


      player setDamage (0.2 + (damage player));


      "dynamicBlur" ppEffectEnable true; // enables ppeffect
      "dynamicBlur" ppEffectAdjust [9]; // intensity of blur
      "dynamicBlur" ppEffectCommit 3; // time till vision is fully blurred
      enableCamShake true; // enables camera shake
      addCamShake [20, 100, 10]; // sets shakevalues
      player setFatigue 1; // sets the fatigue to 100%
      5 fadeSound 0.1; // fades the sound to 10% in 5 seconds


      sleep 50;


      "dynamicBlur" ppEffectEnable true; // enables ppeffect
      "dynamicBlur" ppEffectAdjust [0]; // enables normal vision
      "dynamicBlur" ppEffectCommit 20; // time it takes to normal
      20 fadeSound 1; //fades the sound back to normal


      player setVariable["Druged",false,true];


      Nummer 2:


      Erstellt eine datei namens fn_Heroinnimm.sqf in einen beliebigen Ordner


      Spoiler anzeigen


      /*
      ----------------------------------------------|
      Author: Backer
      Description: Effekt on heroin use! If you use to much you get naked and spawn on random positions (markers)
      ----------------------------------------------|
      */


      closeDialog 0;
      DrugedMarkers = ["druged1","druged2","druged3","druged4","druged5"] call BIS_fnc_selectRandom;
      player setVariable["Druged",true,true];
      player allowDamage false;


      [player,"Heroin_sound", 46] call life_fnc_globalSound;
      _posold = getPos player;


      if(life_drug > 0) then {


      player setPos [getPos player select 0, getPos player select 1, 20000];
      "colorCorrections" ppEffectEnable true;
      "colorCorrections"
      ppEffectAdjust [1, 1, 0, [0,0,0,0.5], [random 5 - random 5,random 5 -
      random 5,random 5 - random 5,random 1], [random 5 - random 5,random 5 -
      random 5,random 5 - random 5, random 1]];
      "colorCorrections" ppEffectCommit 1;
      "chromAberration" ppEffectEnable true;
      "chromAberration" ppEffectAdjust [0.01,0.01,true];
      "chromAberration" ppEffectCommit 1;
      sleep 2.25;


      for "_i" from 0 to 23 do {
      "colorCorrections" ppEffectEnable true;
      "colorCorrections" ppEffectAdjust [1, 1, 0, [0,0,0,0.5], [random 10 -
      random 10,random 10 - random 10,random 10 - random 10,random 1], [random
      10 - random 10,random 10 - random 10,random 10 - random 10, random 1]];
      "colorCorrections" ppEffectCommit 1;
      sleep 2.25;
      };


      "chromAberration" ppEffectEnable false;
      "colorCorrections" ppEffectEnable false;


      hint "Das war vielleicht mal ein Tripp, BUJAHH";
      player setPos _posold;
      sleep 5;
      };
      //3 mal nehmen
      if (life_drug > 0.22) then {
      titleText [localize "STR_MISC_DrunkBlackOut","BLACK OUT"];
      player playMoveNow "Incapacitated";
      //titleText[localize "STR_MISC_DrunkBlackOut","BLACK IN"];
      sleep 15;
      vehicle player setDir 225;vehicle player setVelocity [0, 0, 0]; vehicle player setpos (getmarkerpos DrugedMarkers);
      publicVariable "DrugedMarkers";
      removeUniform player;removeVest player;
      player playMoveNow "AinjPpneMstpSnonWrflDnon_rolltoback";
      sleep 10;
      titleText[localize "STR_MISC_DrunkBlackOut1","PLAIN"];
      player playMoveNow "amovppnemstpsraswrfldnon";


      };


      player setVariable["Druged",false,true];
      player allowDamage true;


      Nummer 3: (wenn Ihr LSD am Server habt)
      Erstellt eine datei namens fn_LSDnimm.sqf in einen beliebigen Ordner


      Spoiler anzeigen


      /*
      ----------------------------------------------|
      Author: Backer
      Description: LSD Effekt, YES Lets swim and make some funny fishes + Esteregg
      ----------------------------------------------|
      */


      closeDialog 0;
      "chromAbberation" ppEffectEnable true;
      "radialBlur" ppEffectEnable true;
      enableCamShake true;
      _fish = "CatShark_F" createVehicle [0,0,0];
      _mullet = "Mullet_F" createVehicle [0,0,0];
      _turtle = "Turtle_F" createVehicle [0,0,0];
      _tuna = "Tuna_F" createVehicle [0,0,0];
      _mackerel = "Mackerel_F" createVehicle [0,0,0];
      _salema = "Salema_F" createVehicle [0,0,0];
      _mullet2= "Mullet_F" createVehicle [0,0,0];
      _salem2 = "Salema_F" createVehicle [0,0,0];
      _turtle2 = "Turtle_F" createVehicle [0,0,0];


      DrugedMarkers = ["druged1","druged2","druged3","druged4","druged5"] call BIS_fnc_selectRandom;


      player setVariable["Druged",true,true];
      [player,"LSD_sound", 36] call life_fnc_globalSound;


      for "_i" from 0 to 36 do
      {
      if(life_drug > 0) then {


      _fish attachTo [player, [-0.1, 2, 0.15], "Pelvis"];
      _tuna attachTo [player, [-1, 1, 0.15], "Pelvis"];
      _mullet attachTo [player, [-2, 1.5, 0.30], "Pelvis"];
      _mackerel attachTo [player, [2, 2, 0.15], "Pelvis"];
      _turtle attachTo [player, [1, 1.5, 0.20], "Pelvis"];
      _salema attachTo [player, [0, -1.5, - 0.30], "Pelvis"];
      _mullet2 attachTo [player, [-2, 1.5, 0.60], "Pelvis"];
      _salem2 attachTo [player, [0, -1.5, - 1.0], "Pelvis"];
      _turtle2 attachTo [player, [1, 1.5, 0.70], "Pelvis"];


      "colorCorrections" ppEffectEnable true;
      player playMoveNow "AsswPercMstpSnonWnonDnon_goDown";
      "colorCorrections"
      ppEffectAdjust [1, 1, 0, [0,0,0,0.5], [random 5 - random 5,random 5 -
      random 5,random 5 - random 5,random 1], [random 5 - random 5,random 5 -
      random 5,random 5 - random 5, random 1]];
      "colorCorrections" ppEffectCommit 1;
      "chromAberration" ppEffectEnable true;
      "chromAberration" ppEffectAdjust [0.01,0.01,true];
      "chromAberration" ppEffectCommit 1;
      sleep 1;


      } else {


      _fish attachTo [player, [-0.1, 2, 0.15], "Pelvis"];
      _tuna attachTo [player, [-1, 1, 0.15], "Pelvis"];
      _mullet attachTo [player, [-2, 1.5, 0.30], "Pelvis"];
      _mackerel attachTo [player, [2, 2, 0.15], "Pelvis"];
      _turtle attachTo [player, [1, 1.5, 0.20], "Pelvis"];
      _salema attachTo [player, [0, -1.5, - 0.30], "Pelvis"];
      _mullet2 attachTo [player, [-2, 1.5, 0.60], "Pelvis"];
      _salem2 attachTo [player, [0, -1.5, - 1.0], "Pelvis"];
      _turtle2 attachTo [player, [1, 1.5, 0.70], "Pelvis"];


      "colorCorrections" ppEffectEnable true;
      player playMoveNow "AsswPercMstpSnonWnonDnon_goDown";
      "colorCorrections"
      ppEffectAdjust [1, 1, 0, [0,0,0,0.5], [random 5 - random 5,random 5 -
      random 5,random 5 - random 5,random 1], [random 5 - random 5,random 5 -
      random 5,random 5 - random 5, random 1]];
      "colorCorrections" ppEffectCommit 1;
      "chromAberration" ppEffectEnable true;
      "chromAberration" ppEffectAdjust [0.01,0.01,true];
      addcamShake[random 3, 1, random 3];
      sleep 1;
      };
      };
      //5 mal nehmen
      if (life_drug > 0.32) then {
      titleText [localize "STR_MISC_DrunkBlackOut","BLACK OUT"];
      player playMoveNow "Incapacitated";
      //titleText[localize "STR_MISC_DrunkBlackOut","BLACK IN"];
      sleep 15;
      vehicle player setDir 225;vehicle player setVelocity [0, 0, 0]; vehicle player setpos (getmarkerpos DrugedMarkers);
      publicVariable "DrugedMarkers";
      removeUniform player;removeVest player;
      player playMoveNow "AinjPpneMstpSnonWrflDnon_rolltoback";
      sleep 10;
      titleText[localize "STR_MISC_DrunkBlackOut1","PLAIN"];
      player playMoveNow "amovppnemstpsraswrfldnon";


      };


      //Stop effects
      player setVariable["Druged",false,true];


      "chromAberration" ppEffectAdjust [0,0,true];
      "chromAberration" ppEffectCommit 5;
      "radialBlur" ppEffectAdjust [0,0,0,0];
      "radialBlur" ppEffectCommit 5;
      sleep 6;


      //Deactivate ppEffects
      "chromAberration" ppEffectEnable false;
      "colorCorrections" ppEffectEnable false;
      "radialBlur" ppEffectEnable false;
      resetCamShake;


      deleteVehicle _fish;
      deleteVehicle _mullet;
      deleteVehicle _turtle;
      deleteVehicle _tuna;
      deleteVehicle _mackerel;
      deleteVehicle _salema;
      deleteVehicle _mullet2;
      deleteVehicle _salem2;
      deleteVehicle _turtle2;
      player switchmove "";



      Nummer 4:
      Erstellt eine datei namens fn_Weednimm.sqf in einen beliebigen Ordner


      Spoiler anzeigen


      /*
      ----------------------------------------------|
      Author: ??? edit by Backer
      Description: Effekt on Weed use!
      ----------------------------------------------|
      */


      closeDialog 0;


      player setVariable["Druged",true,true];
      [player,"Weed_sound", 31] call life_fnc_globalSound;


      _smoke = "SmokeShell" createVehicle position player;
      if (vehicle player != player) then {
      _smoke attachTo [vehicle player, [-0.6,-1,0]];
      } else {
      _smoke attachTo [player, [0,0,1]];
      };


      "chromAberration" ppEffectEnable true;
      "radialBlur" ppEffectEnable true;
      enableCamShake true;


      for "_i" from 0 to 30 do
      {
      if(life_drug > 0) then {
      "chromAberration" ppEffectAdjust [random 0.25,random 0.25,true];
      "chromAberration" ppEffectCommit 1;
      "radialBlur" ppEffectAdjust [random 0.02,random 0.02,0.15,0.15];
      "radialBlur" ppEffectCommit 1;
      addcamShake[random 3, 1, random 3];
      sleep 1;
      };
      };


      "chromAberration" ppEffectAdjust [0,0,true];
      "chromAberration" ppEffectCommit 5;
      "radialBlur" ppEffectAdjust [0,0,0,0];
      "radialBlur" ppEffectCommit 5;
      sleep 6;


      "chromAberration" ppEffectEnable false;
      "radialBlur" ppEffectEnable false;
      resetCamShake;
      enableCamShake false;
      deleteVehicle _smoke;


      player setVariable["Druged",false,true];


      Nummer 5:
      Erstellt eine datei namens fn_suechtig.sqf in einen beliebigen Ordner


      Spoiler anzeigen


      /*
      ----------------------------------------------|
      Author: Backer
      Description: To much Drugs biatch! Lets start the effekt every 5 Mins. Called in Init Survival!
      ----------------------------------------------|
      */


      closeDialog 0;
      player say2D "Abhaengig_Sound";


      //Activate ppEffects we need
      "radialBlur" ppEffectEnable true;
      enableCamShake true;


      //Let's go for 36secs of effetcs
      for "_i" from 0 to 36 do
      {
      "radialBlur" ppEffectAdjust [random 1,random 0.5,1,0.5];
      "radialBlur" ppEffectCommit 1;
      addcamShake[random 10, 1, random 10];
      sleep 1;
      };


      //Stop effects
      "radialBlur" ppEffectAdjust [0,0,0,0];
      "radialBlur" ppEffectCommit 5;
      sleep 6;


      //Deactivate ppEffects
      "radialBlur" ppEffectEnable false;
      resetCamShake;



      Nummer 6:


      fügt in der Functions.h alle erstellten dateien ein (wo auch immer Ihr Sie gespeichert habt)


      Beispiel:


      Spoiler anzeigen


      class Querdrogen
      {
      file ="Quer\drogen";
      class LSDnimm {};
      class Weednimm {};
      class Cocainenimm {};
      class Heroinnimm {};
      class suechtig {};
      };


      Nummer 7 :
      geht in core/pmenu/fn_useItem.sqf und fügt folgendes hinzu:


      Spoiler anzeigen


      //Droge

      case (_item in ["froschlsd"]):
      {
      if(playerSide in [west,independent]) exitWith {hint "Hallo Sie sind im Dienst!!";};
      if((player getVariable ["Druged",FALSE])) exitWith {hint "Du nimmst bereits geiles Zeug";};
      if(([false,_item,1] call life_fnc_handleInv)) then
      {
      if(isNil "life_drug") then {life_drug = 0;};
      //Wenn er Drogen nimmt
      life_drug = life_drug + 0.08;
      if (life_drug < 0.00) exitWith {};
      [] spawn life_fnc_LSDnimm;
      };
      };

      case (_item in ["heroinp"]):
      {
      if(playerSide in [west,independent]) exitWith {hint "Hallo Sie sind im Dienst!!";};
      if((player getVariable ["Druged",FALSE])) exitWith {hint "Du nimmst bereits geiles Zeug";};
      if(([false,_item,1] call life_fnc_handleInv)) then
      {
      if(isNil "life_drug") then {life_drug = 0;};
      //Wenn er Drogen nimmt
      life_drug = life_drug + 0.08;
      if (life_drug < 0.00) exitWith {};
      [] spawn life_fnc_Heroinnimm;
      };
      };

      case (_item in ["cocainep"]):
      {
      if(playerSide in [west,independent]) exitWith {hint "Hallo Sie sind im Dienst!!";};
      if((player getVariable ["Druged",FALSE])) exitWith {hint "Du nimmst bereits geiles Zeug";};
      if(([false,_item,1] call life_fnc_handleInv)) then
      {
      if(isNil "life_drug") then {life_drug = 0;};
      //Wenn er Drogen nimmt
      life_drug = life_drug + 0.08;
      if (life_drug < 0.00) exitWith {};
      [] spawn life_fnc_Cocainenimm;
      };
      };

      case (_item in ["marijuana"]):
      {
      if(playerSide in [west,independent]) exitWith {hint "Hallo Sie sind im Dienst!!";};
      if((player getVariable ["Druged",FALSE])) exitWith {hint "Du nimmst bereits geiles Zeug";};
      if(([false,_item,1] call life_fnc_handleInv)) then
      {
      if(isNil "life_drug") then {life_drug = 0;};
      //Wenn er Drogen nimmt
      life_drug = life_drug + 0.08;
      if (life_drug < 0.00) exitWith {};
      [] spawn life_fnc_Weednimm;
      };
      };


      Nummer 8:
      geht in core/configuration.sqf und fügt folgendes hinzu:
      Wo genau findet Ihr sicher heraus


      Code
      life_drug = 0;

      Nummer 9:
      geht in core/init_survival.sqf und fügt folgendes ein:


      Spoiler anzeigen


      [] spawn
      {
      while {true} do
      {
      waitUntil {(life_drug > 0)};
      while{(life_drug > 0)} do {

      if(life_drug > 0.08) then {
      sleep 60;
      [] spawn life_fnc_suechtig;
      hint "Sie sollten bei einen Notarzt vorbei schauen! Sie sind stark Drogensuechtig!";
      sleep 240;
      };
      };
      };
      };


      Nummer 10:
      geht in den Map Editor und erstellt folgende Marker an denen man spawnt wenn man ein Blackout bekommt:


      druged1,druged2,druged3,druged4,druged5


      Nummer11:


      Fügt die Sounds vom Anhang in eure Mission ein. Also in den Ordner und in die description.ext unter
      class cfgSounds


      Spoiler anzeigen


      class LSD_sound
      {
      name = "LSD_sound";
      sound[] = {"\sounds\euerParameter\LSD_sound.ogg", 1.0, 1};
      titles[] = {};
      };

      class Abhaengig_Sound
      {
      name = "Abhaengig_Sound";
      sound[] = {"\sounds\euerParameter\Abhaengig_Sound.ogg", 1.0, 1};
      titles[] = {};
      };

      class Heroin_sound
      {
      name = "Heroin_sound";
      sound[] = {"\sounds\euerParameter\Heroin_sound.ogg", 1.0, 1};
      titles[] = {};
      };

      class Cocaine_sound
      {
      name = "Cocaine_sound";
      sound[] = {"\sounds\euerParameter\Cocaine_sound.ogg", 1.0, 1};
      titles[] = {};
      };

      class Weed_sound
      {
      name = "Weed_sound";
      sound[] = {"\sounds\euerParameter\Weed_sound.ogg", 1.0, 1};
      titles[] = {};
      };


      Nummer12:


      öffnet eure Stringtable.xml und fügt folgendes hinzu


      Code
      <Key ID="STR_MISC_DrunkBlackOut">
        <Original>Du hast einen Blackout!</Original>
        </Key>
        <Key ID="STR_MISC_DrunkBlackOut1">
        <Original>Was zum... - was ist passiert?? Wo bin ich?</Original>
        </Key>

      Nummer13:


      Fleißig Drogen nehmen und Spaß haben


      MEDIC INTERAKTION:


      Nummer14:
      erstellt eine Datei namens fn_Therapieaction.sqf


      Spoiler anzeigen


      /*
      ----------------------------------------------|
      Author: Backer
      Description: Starts the therapie!
      ----------------------------------------------|
      */


      private["_unit"];
      _unit = cursorTarget;
      if(isNull _unit) exitWith {}; //Not valid
      if(player == _unit) exitWith {};
      if(!isPlayer _unit) exitWith {};


      //GIMME MORE


      [[player], "life_fnc_therapie", _unit, false] spawn life_fnc_MP;


      if(side player == independent) then
      {

      [[0,format["%1 wurde von %2 erfolgreich auf Drogen behandelt!",_unit
      getVariable["realname", name _unit], player getVariable["realname",name
      player]]],"life_fnc_broadcast",independent,false] spawn life_fnc_MP;
      };


      Nummer15:


      erstellt eine Datei namens fn_therapie.sqf


      Spoiler anzeigen


      /*
      ----------------------------------------------|
      Author: Backer
      Description: Set the drug level to 0 !
      ----------------------------------------------|
      */


      private["_medic","_player"];
      _medic = [_this,0,Objnull,[Objnull]] call BIS_fnc_param;
      _player = player;
      if(isNull _medic) exitWith {};
      if(!alive player) exitWith {};
      if(!alive _medic) exitWith {};


      if (life_drug > 0) then
      {
      life_drug = 0;
      hint "Sie wurden erfolgreich vom Arzt behandelt, die Therapie war erfolgreich!";
      }else{
      hint "Sie sollten den Notarzt nicht anlügen, dass Sie
      abhängig sind, ansonsten wird er Ihnen beim nächsten mal nicht mehr
      helfen!";

      };


      Nummer16:


      Erstellt eine Datei namens fn_pInteraction_med.sqf


      Spoiler anzeigen


      #define Btn1 37450
      #define Btn2 37451
      #define Btn3 37452
      #define Btn4 37453
      #define Btn5 37454
      #define Btn6 37455
      #define Btn7 37456
      #define Btn8 37457
      #define Title 37401


      private["_display","_curTarget","_Btn1","_Btn2","_Btn3","_Btn4","_Btn5"];
      if(!dialog) then {
      createDialog "pInteraction_Menu";
      };
      disableSerialization;
      _curTarget = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
      if(isNull _curTarget) exitWith {closeDialog 0;}; //Bad target

      if(!isPlayer _curTarget && side _curTarget == civilian) exitWith {closeDialog 0;}; //Bad side check?
      _display = findDisplay 37400;
      _Btn1 = _display displayCtrl Btn1;
      _Btn2 = _display displayCtrl Btn2;
      _Btn3 = _display displayCtrl Btn3;
      _Btn4 = _display displayCtrl Btn4;
      _Btn5 = _display displayCtrl Btn5;


      life_pInact_curTarget = _curTarget;


      //Set Unrestrain Button
      _Btn1 ctrlSetText localize "STR_pInAct_Unrestrain";
      _Btn1 buttonSetAction "[life_pInact_curTarget] call life_fnc_unrestrain; closeDialog 0;";


      //Set Escort Button
      if((_curTarget getVariable["Escorting",false])) then {
      _Btn2 ctrlSetText localize "STR_pInAct_StopEscort";
      _Btn2 buttonSetAction "[life_pInact_curTarget] call
      life_fnc_stopEscorting; [life_pInact_curTarget] call
      life_fnc_copInteractionMenu;";
      } else {
      _Btn2 ctrlSetText localize "STR_pInAct_Escort";
      _Btn2 buttonSetAction "[life_pInact_curTarget] call life_fnc_escortAction; closeDialog 0;";
      };


      //Set Ticket Button
      _Btn3 ctrlSetText localize "STR_pInAct_TicketBtn";
      _Btn3 buttonSetAction "[life_pInact_curTarget] call life_fnc_ticketAction;";


      _Btn4 ctrlSetText localize "STR_pInAct_PutInCar";
      _Btn4 buttonSetAction "[life_pInact_curTarget] call life_fnc_putInCar;";


      _Btn5 ctrlSetText "Therapie";
      _Btn5 buttonSetAction "[life_pInact_curTarget] spawn life_fnc_Therapieaction;";


      Nummer17: fügt alle erstellten Datein in euer Functions.h hinzu (wo auch immer Ihr diese gespeichert habt)


      Nummer18:
      geht in core/functions/actionkeyhandler.sqf und fügt folgendes nach dem
      aufruf des Interaktionsmenüs für Polizisten ein:


      Code
      else
          {
              if(playerSide == independent) then
              {
                  if(_curTarget getVariable["restrained",false]&& (!(player getVariable "restrained"))) then
                  {
                      if(!dialog) then
                      {
                          [_curTarget] call life_fnc_pInteraction_med;
                      }
                      else
                      {
                          hint "Es wird bereits ein Dialog angezeigt.";
                      };
                  }
                  else
                  {
                      hint "Der andere Spieler muss gefesselt sein.";
                      sleep 3;
                      hint "Oder Sie sind gefesselt!";
                  };
          };
      Alles anzeigen


      Nummer19 (Nur wenn Ihr wollt das Spieler auch vom Arzt im Krankenhaus behandelt werden sollen)


      Fügt in die Init des Arztes folgendes ein:


      Code
      this addAction["Drogen Therapie machen!",life_fnc_therapie];

      Und
      fertig seit Ihr. Natürlich könnt Ihr alles noch so umschreiben das
      Medics Geld dafür bekommen oder das es beim Arzt was kostet!
      Dies dient nur als Grundvorlage für euch


      Viel Spaß


      Dieses Tutorial funktioniert mit dem Alkohol und Drogentester von nic_noc

      [Tutorial] Alkohol- und Drogentester


      Sounds


      LG Backer

      Alles anzeigen
    • [Tutorial] Blaulicht für mehr Polizeifahrzeuge

      • Noldy
      • 9. August 2015 um 03:27

      Das Urheberrecht dieses Beitrags liegt bei CYNX, am 22. Juli 2014!

      Zitat von CYNX


      [hide]core\cop\fn_copLights


      Einfach kopieren:


      Code
      /*
          @Version: 1.0
          @Author: Tonic
          @Edited: 28.08.2013
      */
      private ["_vehicle","_lightRed","_lightBlue","_lightleft","_lightright","_leftRed","_brightness","_attach"];
      
      
      
      
      
      
      
      _vehicle = _this select 0;
      
      
      
      
      
      
      
      if (isNil "_vehicle" || isNull _vehicle || !(_vehicle getVariable "lights")) exitWith {};
      
      
      
      
      
      
      
      switch (typeOf _vehicle) do {
          case "C_Hatchback_01_sport_F": { _attach = [[-0.6, 2, -0.95], [0.6, 2, -0.95]]; };
          case "C_Offroad_01_F": { _attach = [[-0.37, 0.0, 0.56], [0.37, 0.0, 0.56]]; };
          case "C_SUV_01_F": { _attach = [[-0.4, 2.3, -0.55], [0.4, 2.3, -0.52]]; };
          case "B_Heli_Light_01_F": { _attach = [[-0.37, 0.0, 0.56], [0.37, 0.0, 0.56]]; };
          case "I_Heli_light_03_unarmed_F": { _attach = [[-0.37, 0.0, 0.56], [0.37, 0.0, 0.56]]; };
          case "I_MRAP_03_F": { _attach = [[-0.37, 0.0, 0.56], [0.37, 0.0, 0.56]]; };    
          case "O_MRAP_02_F": { _attach = [[-1, -2.8, 0.55], [1, -2.8, 0.55]]; };
      };
      
      
      
      
      
      
      
      _lightRed = [0.1, 0.1, 20];
      _lightBlue = [0.1, 0.1, 20];
      
      
      
      
      
      
      
      _lightleft = createVehicle ["#lightpoint", getPos _vehicle, [], 0, "CAN_COLLIDE"];
      sleep 0.2;
      _lightleft setLightColor _lightRed;
      _lightleft setLightBrightness 0;
      _lightleft lightAttachObject [_vehicle, _attach select 0];
      _lightleft setLightAttenuation [0.181, 0, 1000, 130];
      _lightleft setLightIntensity 20;
      _lightleft setLightFlareSize 0.38;
      _lightleft setLightFlareMaxDistance 150;
      _lightleft setLightUseFlare true;
      _lightleft setLightDayLight true;
      
      
      
      
      
      
      
      _lightright = createVehicle ["#lightpoint", getPos _vehicle, [], 0, "CAN_COLLIDE"];
      sleep 0.2;
      _lightright setLightColor _lightBlue;
      _lightright setLightBrightness 0;
      _lightright lightAttachObject [_vehicle, _attach select 1];
      _lightright setLightAttenuation [0.181, 0, 1000, 130];
      _lightright setLightIntensity 20;
      _lightright setLightFlareSize 0.38;
      _lightright setLightFlareMaxDistance 150;
      _lightright setLightUseFlare true;
      _lightright setLightDayLight true;
      
      
      
      
      
      
      
      if (sunOrMoon < 1) then {
          _brightness = 4;
      } else {
          _brightness = 30;
      };
      
      
      
      
      
      
      
      _leftRed = true;  
      while {(alive _vehicle)} do { 
          if (!(_vehicle getVariable "lights")) exitWith {};
          if (_leftRed) then {  
              _leftRed = false;  
              _lightright setLightBrightness 0;  
              sleep 0.05;
              _lightleft setLightBrightness _brightness;  
          } else {  
              _leftRed = true;  
              _lightleft setLightBrightness 0;  
              sleep 0.05;
              _lightright setLightBrightness _brightness;  
          };
          sleep 0.22;  
      };  
      deleteVehicle _lightleft;
      deleteVehicle _lightright;
      Alles anzeigen

      core\functions\fn_keyHandler


      Code
      //L Key?
          case 38: 
          {
              //If cop run checks for turning lights on.
              if(_shift && (playerSide == west)) then {
                  if(vehicle player != player && (typeOf vehicle player) in [
                  "C_Offroad_01_F",
                  "B_MRAP_01_F",
                  "C_SUV_01_F"
                  ]) then {
                      if(!isNil {vehicle player getVariable "lights"}) then {
                          [vehicle player] call life_fnc_sirenLights;
                          _handled = true;
                      };
                  };
              };
      
      
      
      
      
      
      
              if(!_alt && !_ctrlKey) then { [] call life_fnc_radar; };
          };
      Alles anzeigen

      Wichtig : Tragt euer Fahrzeug auch in die life_server\functions\System\spawnvehicle.sqf da wo die anderen Polizeifahrzeuge sind
      FERTIIIG
      [/hide]

      Alles anzeigen
    • [Tutorial] Doktoren in den Städten

      • Noldy
      • 9. August 2015 um 03:14

      Das Urheberrecht dieses Beitrags liegt bei stolzerrabe, am 21. November 2014!

      Zitat von stolzerrabe


      Ich habe ein sehr kleines Script geschrieben, welches euch einen Doktor in das Spiel bringt.
      Er ist im Grunde eine abwandlgung von dem Arzt am Krankenhaus, der einen zu 100% heilt.
      Der Doc schaut sich dich erst an, und wenn du weniger als 45% HP hast, sagt er dir, das er dich nicht heilen kann,
      und schickt dich zum Krankenhaus mit 85% HP.
      Versuchst du es nochmal, sagt er dir, du solltest ins Krankenhaus gehen.
      Erst wenn du im Krankenhaus warst, oder anderweitig geheilt wurdest, wirst du wieder von dem Doc behandelt.
      Kleine Wunden heilt der Doc wie im Krankenhaus...


      1.
      Öffnet die Functions.h und fügt unter core\actions ein:


      Code
      class healDoctor {};

      2.
      Erstellt im Ordner core\actions die Datei: fn_healDoctor.sqf mit folgendem Inhalt:


      Code
      /*
          Original File: fn_healHospital.sqf
          Author: Bryan "Tonic" Boardwine
          Modified by: stolzerrabe
      */
      if (isNil "go2Hospital") then {
          go2Hospital = false;
      };
      
      
      
      
      
      
      
      if(life_cash < 5000) exitWith {hint "Eine Behandlung kann bis zu 5000 Euro kosten! Du hast nicht genug Geld dabei";};
      hint "Einen Moment bitte, Sie sind gleich an der Reihe";
      sleep 5;
      if((damage
      player) == 0) exitWith {go2Hospital = false; hint "Sie sind doch
      gesund. Verschwenden sie nicht meine Zeit. Ich habe andere Patienten,
      die wirklich auf Hilfe angewiesen sind.";};
      if(player distance (_this select 0) > 5) exitWith { hint "Sie sind haben sich zu weit entfernt"; };
      
      
      
      
      
      
      
      /*
       Damage | Health
       0            100%
       0.15         85%
       0.30         70%
       0.45         55%
       0.50        50%
       0.55         45%
       0.60        40%
      */
      
      
      
      
      
      
      
      if(!go2Hospital) then {
      
      
      
      
      
      
      
          hint format["Dann wollen wir sie mal untersuchen Herr/Frau %1",name player];
          sleep 5;
      
                  if(((damage player) <= 0.54) && ((damage player) > 0.1)) then {
                      life_cash = life_cash - 5000;
                      hint format["Die Wunder der Medizin haben sie geheilt.\nDas macht dann 5000 Euro."];
                      player setdamage 0;
                      go2Hospital = false;
                  };
                  if((damage player) >= 0.55 ) then {
                      life_cash = life_cash - 1000;
      hint "Sie sollten ein Krankenhaus aufsuchen. Meine
      Mittel reichen hier leider nicht aus, um sie komplett zu genesen.";
                      sleep 3;
                      hint format["Alles was ich dir geben kann, ist dieses Pflaster.\nDas macht dann 1000 Euro."];
                      player setdamage 0.15; // 85%
                      go2Hospital = true;
                  };
      
      } 
       else 
      {
      
              hint "Sie waren doch gerade schon einmal hier. Sie sollen doch ins Krankenhaus gehen.";
      };
      
      
      
      
      
      
      
      // Wenn ihr wollt, dass nach 10min man den Arzt wieder aufsuchen kann, dann bitte die nächsten Zeilen auskommentieren.
      // sleep 600;
      // go2Hospital = false;
      Alles anzeigen

      3.
      öffnet eure mission.sqm und erstellt einen oder mehrere Doktoren, die ihr in den Unterschiedlichen Städten platziert.
      Tragt ihnen diese "addaction" ein:


      Code
      this enableSimulation false; this allowDamage false; this addAction ["Doktor",life_fnc_healDoctor];
      Alles anzeigen
    • [Tutorial] Admin Tool

      • Noldy
      • 9. August 2015 um 03:08

      Hey Leute,

      seit nicht allzu streng. Dies ist mein erstes Tutorial :D

      ich beschäftige mich ca. seit einem Monat mit Dialogs und habe mir ein eigenes Admin Tool erstellt. Mir ging es darum, dass man seinen Server besser verwalten kann, jedoch sollen die Admins auch nicht zu overpowert sein (deswegen kein Godmode / Health Funktion).

      Vorab, die Fahrzeuglist stammt aus dem Admintool von Black Lagoon, da mir die Aufteilung sehr gut gefällt und ich denke, dies sollte kein Problem sein, da ja deren Mission für jeden verfügbar ist ;)

      Was kann das Admin Tool?

      - Spieler kicken
      - Spieler bannen
      - Spieler spectaten
      - Teleportieren (im Dialog sind Standorte festlegbar)
      - Fahrzeuge spawnen
      - Marktpreise Reset (falls Black Lagoon Marktsystem vorhanden)
      - Geld geben

      Den Button zu meinem Admin Menü habe ich im standartmäßigen Admin Tool eingebaut, da ich dieses weiterhin behalten wollte.

      Hier sind ein paar Bilder:



      Kommen wir zur Installation:

      Was muss bearbeitet werden?
      - descritption.ext
      - dialog\admin_menu.hpp
      - Function.h

      Was muss hinzugefügt werden?

      -admin\"scripte"
      -core\admin\"scripte"

      Die Dateien, die hinzugefügt werden finden ihr im Anhang.


      Fangen wir mit der Description.ext an:

      Fügt unter "#include dialog\MasterHandler.h" folgendes hinzu:

      Code
      #include "admin\admin.hpp"

      Nun kommt die Function.h so muss die class Admin aussehen:

      Code
      class Admin
          {
              file = "core\admin";
              class admininfo {};
              class adminid {};
              class admingetID {};
              class adminMenu {};
              class adminQuery {};
      
      
              class adminKick {};
              class adminBan {};
              class adminMenu_Extended {};
              class adminQuery_Extended {};
              class adminAddMoney {};    
              class adminSpawnVehicle {};
              class adminAuthentificate {};
              class adminCheckAuth {};
              class admin_spectate {};
          };
      Alles anzeigen

      Jetzt fügen wir noch im Alten Admin Tool einen Button hinzu, der uns zum neuen Admin Tool leitet. Dazu öffnet die "dialog\admin_menu.hpp" und fügt folgendes unter class AdminID hinzu:

      Code
      class Adminex : Life_RscButtonMenu {
                  idc = -1.;
                  text = "Erweitert";
                  onButtonClick = "[] execVM ""admin\script.sqf"";";
                  x = 0.26 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH));
                  y = 0.88 - (1 / 25);
                  w = (6.25 / 40);
                  h = (1 / 25);
              };

      So sollte das aussehen:

      Spoiler anzeigen
      Code
      class AdminID : Life_RscButtonMenu {
                  idc = -1;
                  text = "$STR_Admin_GetID";
                  onButtonClick = "[] call life_fnc_admingetID;";
                  x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH));
                  y = 0.88 - (1 / 25);
                  w = (6.25 / 40);
                  h = (1 / 25);
              };
      
              class Adminex : Life_RscButtonMenu {
                  idc = -1.;
                  text = "Erweitert";
                  onButtonClick = "[] execVM ""admin\script.sqf"";";
                  x = 0.26 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH));
                  y = 0.88 - (1 / 25);
                  w = (6.25 / 40);
                  h = (1 / 25);
              };
      Alles anzeigen

      Da ich mit einer anderen Map arbeite, heißen und sind meine Spawnpunkte auch anders.

      Um sie zu ändern, gehe zu "admin\admin.hpp" und scrolle bis zu diesen Klassen:

      Spoiler anzeigen
      Code
      class admin_roenne: Life_RscButtonMenu
              {
                  idc = 2408;
                  text = "Roenne"; //--- ToDo: Localize;
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.302 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""roenne_spawn_1""); hintc ""Sie sind in Roenne gespawnt"";";
                  tooltip = "Klicken Sie hier, um in Roenne zu spawnen";
              };
              class admin_nexoe: Life_RscButtonMenu
              {
                  idc = 2440;
                  text = "Nexoe"; //--- ToDo: Localize;
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.335 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""noxoe_spawn_2""); hintc ""Sie sind in Nexoe gespawnt"";";
                  tooltip = "Klicken Sie hier, um in Nexoe zu spawnen";            
              };
              class admin_allinge: Life_RscButtonMenu
              {
                  idc = 2410;
                  text = "Allinge"; //--- ToDo: Localize;
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.368 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""civ_spawn_1""); hintc ""Sie sind in Allinge gespawnt"";";
                  tooltip = "Klicken Sie hier, um in Allinge zu spawnen";            
              };
              class admin_gudhjem: Life_RscButtonMenu
              {
                  idc = 2411;
                  text = "Gudhjem"; //--- ToDo: Localize;
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.401 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""gudhjem_spawn_4""); hintc ""Sie sind in Gudhjem gespawnt"";";
                  tooltip = "Klicken Sie hier, um in Gudhjem zu spawnen";            
              };
              class admin_hasle: Life_RscButtonMenu
              {
                  idc = 2412;
                  text = "Hasle"; //--- ToDo: Localize;
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.434 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""civ_hasle_spawn""); hintc ""Sie sind in Hasle gespawnt"";";
                  tooltip = "Klicken Sie hier, um in Hasle zu spawnen";            
              };
              class admin_christiansoe: Life_RscButtonMenu
              {
                  idc = 2413;
                  text = "Christiansoe"; //--- ToDo: Localize;
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.467 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""cc_spawn_5""); hintc ""Sie sind in Christiansoe gespawnt"";";
                  tooltip = "Klicken Sie hier, um in Christiansoe zu spawnen";            
              };
              class admin_jail: Life_RscButtonMenu
              {
                  idc = 2414;
                  text = "Gefängnis"; //--- ToDo: Localize;
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.5 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""jail_marker""); hintc ""Sie sind im Gefängnis gespawnt"";";
                  tooltip = "Klicken Sie hier, um in Gefängnis zu spawnen";            
              };
              class admin_air: Life_RscButtonMenu
              {
                  idc = 2415;
                  text = "Grosser Flughafen"; //--- ToDo: Localize;
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.533 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""air_g_1""); hintc ""Sie sind am Großen Flughafen gespawnt"";";
                  tooltip = "Klicken Sie hier, um am Großen Flughafen zu spawnen";            
              };
              class admin_airforce: Life_RscButtonMenu
              {
                  idc = 2416;
                  text = "Dänische Airforce"; //--- ToDo: Localize;
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.566 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""air_force""); hintc ""Sie sind an der Dänischen Airforce gespawnt"";";
                  tooltip = "Klicken Sie hier, um an der Dänischen Airforce zu spawnen";            
              };
              class admin_klair: Life_RscButtonMenu
              {
                  idc = 2417;
                  text = "Kleiner Flughafen"; //--- ToDo: Localize;
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.599 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""respawn_west_1""); hintc ""Sie sind am Kleinen Flughafen gespawnt"";";
                  tooltip = "Klicken Sie hier, um am Kleinen Flughafen zu spawnen";            
              };
      Alles anzeigen

      Wenn ihr zum Beispiel Roenne zu Kavalla ändern wollt, sieht das ganze so aus:

      Code
      class admin_roenne: Life_RscButtonMenu
              {
                  idc = 2408;
                  text = "Kavalla"; //--- Tragt hier den Namen ein, wo ihr spawnen wollt
                  x = 0.592812 * safezoneW + safezoneX;
                  y = 0.302 * safezoneH + safezoneY;
                  w = 0.139219 * safezoneW;
                  h = 0.022 * safezoneH;
                  action = "closeDialog 0; player setPos (getmarkerpos ""civ_spawn_1""); hintc ""Sie sind in Roenne gespawnt"";"; //tragt bei dem Roten den Namen des Markers ein.
                  tooltip = "Klicken Sie hier, um in Roenne zu spawnen";
              };
      Alles anzeigen


      Optionaler Godmode:

      Wenn ihr God-Mode hinzufügen wollt, öffnet die admin\admin.hpp und fügt folgendes am Ende ein:

      Code
      class admin_god_on: Life_RscButtonMenu
              {
                  idc = -1;
                  text = "God-Mode ein"; //--- ToDo: Localize;
                  x = 0.42 * safezoneW + safezoneX;
                  y = 0.797 * safezoneH + safezoneY;
                  w = 0.07 * safezoneW;
                  h = 0.022 * safezoneH;
                  onButtonClick = "hint ""God-Mode wurde aktiviert.""; player allowDamage false;";
                  tooltip = "Aktiviert God-Mode.";
              };
              class admin_god_off: Life_RscButtonMenu
              {
                  idc = -1;
                  text = "God-Mode aus"; //--- ToDo: Localize;
                  x = 0.492 * safezoneW + safezoneX;
                  y = 0.797 * safezoneH + safezoneY;
                  w = 0.07 * safezoneW;
                  h = 0.022 * safezoneH;
                  onButtonClick = "hint ""God-Mode wurde deaktiviert.""; player allowDamage true;";
                  tooltip = "Deaktiviert God-Mode.";
              };
      Alles anzeigen

      Achtet drauf, dass die Klammern alle richtig sitzen. ;)

      So das wars auch schon soweit. Fügt nun noch die Dateien aus dem Anhang hinzu. Wünsche euch viel Spaß und würde mich um ein Daumen hoch freuen ;)

      Falls ich was vergessen haben sollte oder etw. nicht funktioniert, schreibt einfach unter diesem Post. Ich werde versuchen jede Frage/Problem zu beseitigen.

      Noch einen schönen Abend

      mfg Oliver0l

      Dateien

      Altis_Life.Altis.zip 13,77 kB – 2.299 Downloads
    • [Tutorial] (ADAC) Opfor einfügen 3.1.4 / extDB

      • Noldy
      • 9. August 2015 um 03:06

      Moin leute,

      Bevor ihr mit diesem Tutorial anfängt, macht ein Backup.

      Dieses Tutorial wurde auf der 3.1.4 exDB getestet und funktioniert auch einwandfrei. Sofern ihr nix falsch macht.
      Kann natürlich auch auf der 3.1.3.5 exDB laufen, muß aber nicht!

      Fangen wir mal an:

      MPMissions

      1. Geht in eure core\configuration.sqf und fügt folgendes ein:

      Code
      case east:
          {
              life_atmcash = 25000; //Starting Bank Money
              life_paycheck = 7000; //Paycheck Amount
          };

      2. Geht in eure core Ordner, und erstellt eine sqf namens fn_initAdac.sqf mit folgendem Inhallt:

      Spoiler anzeigen

      #include <macro.h>
      /*
      File: fn_initasadac.sqf
      Author: Bryan "Tonic" Boardwine

      Description:
      Initializes the medic..
      */
      private["_end"];
      player addRating 99999999;
      waitUntil {!(isNull (findDisplay 46))};

      _igiload = execVM "IgiLoad\IgiLoadInit.sqf";

      if((__GETC__(life_adaclevel)) < 1) exitWith {
      ["Notwhitelisted",FALSE,TRUE] call BIS_fnc_endMission;
      sleep 35;
      };

      [] call life_fnc_spawnMenu;
      waitUntil{!isNull (findDisplay 38500)}; //Wait for the spawn selection to be open.
      waitUntil{isNull (findDisplay 38500)}; //Wait for the spawn selection to be done.

      [] spawn
      {
      while {true} do
      {
      waitUntil {uniform player == "U_Rangemaster"};
      player setObjectTextureGlobal [0,"textures\adac_uniform.paa"];
      waitUntil {uniform player != "U_Rangemaster"};
      };
      };

      3. Geht in eure core\init.sqf und fügt folgendes ein:

      Code
      case east:
          {
              //Initialize ADAC and blah
              _handle = [] spawn life_fnc_initAdac;
              waitUntil {scriptDone _handle};
          };

      4. Geht in eure core\shops\fn_atmMenu.sqf und fügt folgendes ein:

      Code
      case east: {_type = "Adac"};

      5. Geht in eure core\session\fn_updateRequest.sqf und fügt folgende zwei sachen ein:
      Sucht nach _flag und füge dies ein

      Code
      case east: {"adac"};};


      das ganze sollte dann so aussehen:

      Code
      _flag = switch(playerSide) do {case west: {"cop"}; case civilian: {"civ"}; case independent: {"med"}; case east: {"adac"};};


      Und zum schluß, das hier noch einfügen unter case civilian

      Code
      case east:
          {
              [] call life_fnc_adacsaveGear;
              _packet set[count _packet,adac_gear];
          };

      6. Geht in eure core\session\fn_requestReceived.sqf und ersetzt folgendes:

      Code
      //Parse side specific information.
      switch(playerSide) do {
          case west: {
              __CONST__(life_coplevel,parseNumber(_this select 7));
              cop_gear = _this select 8;
              [] spawn life_fnc_loadGear;
              life_blacklisted = _this select 9;
              __CONST__(life_medicLevel,0);
          };
      
          case civilian: {
              life_is_arrested = _this select 7;
              //life_is_arrested = call compile format["%1", _this select 7];
              civ_gear = _this select 8;
              __CONST__(life_coplevel,0);
              __CONST__(life_medicLevel,0);
              [] spawn life_fnc_civLoadGear;
              life_houses = _this select 9;
              {
                  _house = nearestBuilding (call compile format["%1", _x select 0]);
                  life_vehicles set[count life_vehicles,_house];
              } foreach life_houses;
      
              life_gangData = _This select 10;
              if(count life_gangData != 0) then {
                  [] spawn life_fnc_initGang;
              };
              [] spawn life_fnc_initHouses;
          };
      
          case independent: {
              __CONST__(life_mediclevel,parseNumber(_this select 7));
              med_gear = _this select 8;
              [] spawn life_fnc_medicLoadout;        
          };
      
          case east: {
              __CONST__(life_adaclevel,parseNumber(_this select 7));
              adac_gear = _this select 8;
              [] spawn life_fnc_adacloadGear;        
          };
      };
      Alles anzeigen

      7. Geht in eure core\pmenu\fn_cellphone.sqf und fügt folgendes ein:

      Code
      case east: {_type = "Adac"};

      8. Geht in eure core\medical\fn_onPlayerRespawn.sqf und fügt folgendes ein:

      Code
      if(playerSide == east) then {
          [] spawn life_fnc_adacDefault;
      };

      9. Geht in euren core\medical\fn_respawned.sqf und fügt folgendes ein:

      Code
      case east: {
          [] spawn life_fnc_adacDefault;
          };

      10. Geht in euer core\config und erstellt eine neue sqf namens fn_adacDefault.sqf mit folgendem Inhallt:

      Spoiler anzeigen

      /*
      File: fn_AsADACDefault.sqf
      Author: Bryan "Tonic" Boardwine

      Description:
      Default ADAC configuration.
      */
      removeAllContainers player;
      removeAllWeapons player;
      player AddUniform "U_Rangemaster";
      player addItem "ItemMap";
      player assignItem "ItemMap";
      player addItem "ItemCompass";
      player assignItem "ItemCompass";
      removeGoggles player;
      removeHeadGear player;
      if(hmd player != "") then {
      player unlinkItem (hmd player);
      };

      player setObjectTextureGlobal [0,"textures\adac_uniform.paa"];

      [] call life_fnc_saveGear;

      11. Geht in euer core Ordner, und erstellt darin ein neuer Ordner namens adac

      12. Geht in euren core\adac und erstellt eine neue sqf namens fn_adacloadGear.sqf mit folgendem Inhallt:

      Spoiler anzeigen

      private["_itemArray","_uniform","_vest","_backpack","_goggles","_headgear","_items","_prim","_seco","_uItems","_bItems","_vItems","_pItems","_hItems","_yItems","_uMags","_bMags","_vMags","_handle"];
      _itemArray = adac_gear;
      waitUntil {!(isNull (findDisplay 46))};

      if(isNil "_itemArray") exitWith {[] call life_fnc_adacDefault;}; //Slot data doesn't exist
      if(count _itemArray == 0) exitWith {[] call life_fnc_adacDefault;}; //Slot data doesn't exist

      //Strip the unit down
      RemoveAllWeapons player;
      {player removeMagazine _x;} foreach (magazines player);
      removeUniform player;
      removeVest player;
      removeBackpack player;
      removeGoggles player;
      removeHeadGear player;
      {
      player unassignItem _x;
      player removeItem _x;
      } foreach (assignedItems player);

      _uniform = [_itemArray,0,"",[""]] call BIS_fnc_param;
      _vest = [_itemArray,1,"",[""]] call BIS_fnc_param;
      _backpack = [_itemArray,2,"",[""]] call BIS_fnc_param;
      _goggles = [_itemArray,3,"",[""]] call BIS_fnc_param;
      _headgear = [_itemArray,4,"",[""]] call BIS_fnc_param;
      _items = [_itemArray,5,[],[[]]] call BIS_fnc_param;
      _prim = [_itemArray,6,"",[""]] call BIS_fnc_param;
      _seco = [_itemArray,7,"",[""]] call BIS_fnc_param;
      _uItems = [_itemArray,8,[],[[]]] call BIS_fnc_param;
      _uMags = [_itemArray,9,[],[[]]] call BIS_fnc_param;
      _bItems = [_itemArray,10,[],[[]]] call BIS_fnc_param;
      _bMags = [_itemArray,11,[],[[]]] call BIS_fnc_param;
      _vItems = [_itemArray,12,[],[[]]] call BIS_fnc_param;
      _vMags = [_itemArray,13,[],[[]]] call BIS_fnc_param;
      _pItems = [_itemArray,14,[],[[]]] call BIS_fnc_param;
      _hItems = [_itemArray,15,[],[[]]] call BIS_fnc_param;
      _yItems = [_itemArray,16,[],[[]]] call BIS_fnc_param;

      if(_prim != "") then {_handle = [_prim,true,false,false,false] spawn life_fnc_handleItem; waitUntil {scriptDone _handle};};
      if(_seco != "") then {_handle = [_seco,true,false,false,false] spawn life_fnc_handleItem; waitUntil {scriptDone _handle};};
      if(_goggles != "") then {_handle = [_goggles,true,false,false,false] spawn life_fnc_handleItem; waitUntil {scriptDone _handle};};
      if(_headgear != "") then {_handle = [_headgear,true,false,false,false] spawn life_fnc_handleItem; waitUntil {scriptDone _handle};};
      if(_uniform != "") then {_handle = [_uniform,true,false,false,false] spawn life_fnc_handleItem; waitUntil {scriptDone _handle};};
      if(_vest != "") then {_handle = [_vest,true,false,false,false] spawn life_fnc_handleItem; waitUntil {scriptDone _handle};};
      if(_backpack != "") then {_handle = [_backpack,true,false,false,false] spawn life_fnc_handleItem; waitUntil {scriptDone _handle};};

      {_handle = [_x,true,false,false,false] spawn life_fnc_handleItem; waitUntil {scriptDone _handle};} foreach _items;
      {
      if (_x != "") then {
      player addPrimaryWeaponItem _x;
      };
      } foreach (_pItems);
      {
      if (_x != "") then {
      player addHandgunItem _x;
      };
      } foreach (_hItems);
      {player addItemToUniform _x;} foreach (_uItems);
      {(uniformContainer player) addItemCargoGlobal [_x,1];} foreach (_uMags);
      {player addItemToVest _x;} foreach (_vItems);
      {(vestContainer player) addItemCargoGlobal [_x,1];} foreach (_vMags);
      {player addItemToBackpack _x;} foreach (_bItems);
      {(backpackContainer player) addItemCargoGlobal [_x,1];} foreach (_bMags);

      {
      _item = [_x,1] call life_fnc_varHandle;
      [true,_item,1] call life_fnc_handleInv;
      } foreach (_yItems);

      [] call life_fnc_adacDefault;

      13. Geht in euer Ordner core\adac und erstellt eine neue sqf namens fn_adacsaveGear.sqf mit folgendem Inhallt:

      Spoiler anzeigen

      private["_ret","_uItems","_bItems","_vItems","_pItems","_hItems","_yItems","_uMags","_vMags","_bMags","_pMag","_hMag","_uni","_ves","_bag","_handled"];
      _ret = [];

      _ret set[count _ret,uniform player];
      _ret set[count _ret,vest player];
      _ret set[count _ret,backpack player];
      _ret set[count _ret,goggles player];
      _ret set[count _ret,headgear player];
      _ret set[count _ret,assignedItems player];
      _ret set[count _ret,primaryWeapon player];
      _ret set[count _ret,handGunWeapon player];

      _uItems = [];
      _uMags = [];
      _bItems = [];
      _bMags = [];
      _vItems = [];
      _vMags = [];
      _pItems = [];
      _hItems = [];
      _yItems = [];

      if(uniform player != "") then
      {
      {
      if (_x in (magazines player)) then {
      _uMags = _uMags + [_x];
      } else {
      _uItems = _uItems + [_x];
      };
      } forEach (uniformItems player);
      };

      if(backpack player != "") then
      {
      {
      if (_x in (magazines player)) then {
      _bMags = _bMags + [_x];
      } else {
      _bItems = _bItems + [_x];
      };
      } forEach (backpackItems player);
      };

      if(vest player != "") then
      {
      {
      if (_x in (magazines player)) then {
      _vMags = _vMags + [_x];
      } else {
      _vItems = _vItems + [_x];
      };
      } forEach (vestItems player);
      };

      if (count (primaryWeaponMagazine player) > 0 ) then
      {
      _pMag = ((primaryWeaponMagazine player) select 0);
      if (_pMag != "") then
      {
      _uni = player canAddItemToUniform _pMag;
      _ves = player canAddItemToVest _pMag;
      _bag = player canAddItemToBackpack _pMag;
      _handled = false;
      if (_ves) then
      {
      _vMags = _vMags + [_pMag];
      _handled = true;
      };
      if (_uni AND !_handled) then
      {
      _uMags = _uMags + [_pMag];
      _handled = true;
      };
      if (_bag AND !_handled) then
      {
      _bMags = _bMags + [_pMag];
      _handled = true;
      };
      };
      };

      if (count (handgunMagazine player) > 0 ) then
      {
      _hMag = ((handgunMagazine player) select 0);
      if (_hMag != "") then
      {
      _uni = player canAddItemToUniform _hMag;
      _ves = player canAddItemToVest _hMag;
      _bag = player canAddItemToBackpack _hMag;
      _handled = false;
      if (_ves) then
      {
      _vMags = _vMags + [_hMag];
      _handled = true;
      };
      if (_uni AND !_handled) then
      {
      _uMags = _uMags + [_hMag];
      _handled = true;
      };
      if (_bag AND !_handled) then
      {
      _bMags = _bMags + [_hMag];
      _handled = true;
      };
      };
      };

      if(count (primaryWeaponItems player) > 0) then
      {
      {
      _pItems = _pItems + [_x];
      } forEach (primaryWeaponItems player);
      };

      if(count (handGunItems player) > 0) then
      {
      {
      _hItems = _hItems + [_x];
      } forEach (handGunItems player);
      };

      {
      _name = (_x select 0);
      _val = (_x select 1);
      if (_val > 0) then {
      for "_i" from 1 to _val do {
      _yItems = _yItems + [_name];
      };
      };
      } forEach [
      ["life_inv_apple",life_inv_apple],["life_inv_rabbit",life_inv_rabbit],["life_inv_salema",life_inv_salema],["life_inv_ornate",life_inv_ornate],
      ["life_inv_mackerel",life_inv_mackerel],["life_inv_tuna",life_inv_tuna],["life_inv_mullet",life_inv_mullet],["life_inv_catshark",life_inv_catshark],
      ["life_inv_fishingpoles",life_inv_fishingpoles],["life_inv_water",life_inv_water],["life_inv_donuts",life_inv_donuts],["life_inv_turtlesoup",life_inv_turtlesoup],
      ["life_inv_coffee",life_inv_coffee],["life_inv_fuelF",life_inv_fuelF],["life_inv_fuelE",life_inv_fuelE],["life_inv_pickaxe",life_inv_pickaxe],
      ["life_inv_tbacon",life_inv_tbacon],["life_inv_lockpick",life_inv_lockpick],["life_inv_redgull",life_inv_redgull],["life_inv_peach",life_inv_peach]
      ];

      _ret set[count _ret,_uItems];
      _ret set[count _ret,_uMags];
      _ret set[count _ret,_bItems];
      _ret set[count _ret,_bMags];
      _ret set[count _ret,_vItems];
      _ret set[count _ret,_vMags];
      _ret set[count _ret,_pItems];
      _ret set[count _ret,_hItems];
      _ret set[count _ret,_yItems];

      adac_gear = _ret;

      14. Erstellt eine neue sqf namens fn_adacMarkers.sqf mit folgendem Inhallt:

      Code
      /*
          File: fn_copMarkers.sqf
          Author: Bryan "Tonic" Boardwine
      
      
      
      
          Description:
          Marks cops on the map for other cops. Only initializes when the actual map is open.
      */
      private["_markers","_adac"];
      _markers = [];
      _adac = [];
      
      
      
      
      sleep 0.5;
      if(visibleMap) then {
          {if(side _x == east) then {_adac set[count _adac,_x];}} foreach playableUnits; //Fetch list of cops / blufor
      
      
      
      
          //Create markers
          {
              _marker = createMarkerLocal [format["%1_marker",_x],visiblePosition _x];
              _marker setMarkerColorLocal "ColorGreen";
              _marker setMarkerTypeLocal "Mil_dot";
              _marker setMarkerTextLocal format["%1", name _x];
      
      
      
      
              _markers set[count _markers,[_marker,_x]];
          } foreach _adac;
      
      
      
      
          while {visibleMap} do
          {
              {
                  private["_marker","_unit"];
                  _marker = _x select 0;
                  _unit = _x select 1;
                  if(!isNil "_unit") then
                  {
                      if(!isNull _unit) then
                      {
                          _marker setMarkerPosLocal (visiblePosition _unit);
                      };
                  };
              } foreach _markers;
              if(!visibleMap) exitWith {};
              sleep 0.02;
          };
      
      
      
      
          {deleteMarkerLocal (_x select 0);} foreach _markers;
          _markers = [];
          _adac = [];
      };
      Alles anzeigen

      15. Geht in eure description.ext und fügt folgendes ganz unten ein:

      Code
      class AdacMessage
          {
              title = "Adac Message";
              iconPicture = "icons\messagenew.paa";
              description = "%1";
              duration = 10;
              priority = 5;
          };

      16. Geht in eure Functions.h und fügt folgendes unter class Master_Directory ein:

      Code
      //ADAC
              class initAdac {};


      Und unter class Config folgendes hinzufügen:

      Code
      //ADAC
              class adacDefault {};


      Und als letztes, eine neue class anlegen. Da ihr ja einen Ordner erstellt habt mit dem namen adac. Fügt folgendes als neue class ein:

      Code
      class Adac
          {
              file = "core\adac";
              class adacloadGear {};
              class adacsaveGear {};
              class adacMarkers {};
          };

      17. Geht in eure dialog\cell_phone.hpp und fügt folgendes unter class EMSRequest : life_RscButtonMenu ein:

      Code
      class AdacRequest : life_RscButtonMenu
              {
                  idc = 3023;
                  text = "$STR_CELL_AdacRequest";
                  colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
                  onButtonClick = "[] call fnc_cell_adacrequest";
      
                  x = 0.32;
                  y = 0.45;
                  w = 0.2;
                  h = (1 / 25);
              };
      Alles anzeigen

      18. Geht in eure dialog\function\fn_spawnPointCfg.sqf und fügt folgendes ein:

      Code
      case east: {
              _return = [
                  ["adac_spawn_1","Kavala ADAC","\a3\ui_f\data\map\MapControl\watertower_ca.paa"]
              ];
          };


      (Ihr könnt hier natürlich mehrere spawns für den adac erstellen. Im Tutorial nehme ich mal nur einen).

      19. Geht in eure stringtable.xml und sucht nach STR_CELL_EMSRequest und fügt folgendes darunter ein:

      Code
      <Key ID="STR_CELL_AdacRequest">
                  <Original>ADAC</Original>
              </Key>


      Das ganze sollte nun so aussehen:

      Spoiler anzeigen

      <Package name="Cell_Phone">
      <Key ID="STR_CELL_Title">
      <Original>Handy</Original>
      </Key>
      <Key ID="STR_CELL_TextToSend">
      <Original>Nachricht:</Original>
      </Key>
      <Key ID="STR_CELL_TextMSGBtn">
      <Original>Senden:</Original>
      </Key>
      <Key ID="STR_CELL_TextPolice">
      <Original>Polizei</Original>
      </Key>
      <Key ID="STR_CELL_TextAdmins">
      <Original>An Admin</Original>
      </Key>
      <Key ID="STR_CELL_AdminMsg">
      <Original>Admin Message</Original>
      </Key>
      <Key ID="STR_CELL_AdminMSGAll">
      <Original>AdminMsgAlle</Original>
      </Key>
      <Key ID="STR_CELL_EMSRequest">
      <Original>Notarzt</Original>
      </Key>
      <Key ID="STR_CELL_AdacRequest">
      <Original>ADAC</Original>
      </Key>
      </Package>

      20. Geht in eure core\functions\fn_keyHandler.sqf und fügt folgendes unter map key hinzu:

      Code
      case east: {if(!visibleMap) then {[] spawn life_fnc_adacMarkers;}};

      21. Geht in eure core\pmenu\fn_p_updateMenu.sqf und ersetzt folgender schnipsel:

      Code
      _side = switch(playerSide) do {case west:{"cop"}; case civilian:{"civ"}; case independent:{"med"}; case east:{"adac"};};

      Nun kommen wir zu der @life_Server.

      life_Server

      1. Geht in eure functions.sqf und sucht nach fnc_cell_adminmsgall = und kopiert folgendes nach der ";

      Code
      //To ADAC
      fnc_cell_adacrequest =
      compileFinal "
      private[""_msg"",""_to""];
          ctrlShow[3023,false];
          _msg = ctrlText 3003;
          _to = ""Adac Units"";
          if(_msg == """") exitWith {hint ""You must enter a Message!"";ctrlShow[3023,true];};
      
          [[_msg,name player,6],""clientMessage"",east,false] spawn life_fnc_MP;
          [] call life_fnc_cellphone;
          hint format[""You send a Message to all ADAC´s."",_to,_msg];
          ctrlShow[3023,true];
      ";
      Alles anzeigen


      Unter publicVariable "fnc_cell_emsrequest"; folgendes einfügen:

      Code
      publicVariable "fnc_cell_adacrequest";


      Und zum schluß scrollt ihr nach ganz runter, und fügt dort eine case 6: ein:

      Code
      case 6: {
                  private[""_message""];
                  _message = format[""!!!ADAC REQUEST: %1"",_msg];
                  hint parseText format [""<t color='#FFCC00'><t size='2'><t align='center'>ADAC Request<br/><br/><t color='#33CC33'><t align='left'><t size='1'>To: <t color='#ffffff'>You<br/><t color='#33CC33'>From: <t color='#ffffff'>%1<br/><br/><t color='#33CC33'>Message:<br/><t color='#ffffff'>%2"",_from,_msg];
      
                  [""TextMessage"",[format[""ADAC Request from %1"",_from]]] call bis_fnc_showNotification;
              };

      2. Geht in eure init.sqf und fügt folgendes ein:

      Code
      life_radio_east = radioChannelCreate [[0, 0.95, 1, 0.8], "Side Channel", "%UNIT_NAME", []];

      3. Geht in eure functions\MYSQL\fn_insertRequest.sqf und ersetzt folgendes:

      Code
      //Prepare the query statement..
      _query = format["INSERT INTO players (playerid, name, cash, bankacc, aliases, cop_licenses, med_licenses, civ_licenses, civ_gear, cop_gear, med_gear, adac_gear, adac_licenses) VALUES('%1', '%2', '%3', '%4', '%5','""[]""','""[]""','""[]""','""[]""','""[]""','""[]""','""[]""','""[]""')",
          _uid,
          _name,
          _money,
          _bank,
          _alias
      ];

      4. Geht in eure functions\MYSQL\fn_queryRequest.sqf und fügt folgendes hinzu:

      Code
      case east: {_returnCount = 10; format["SELECT playerid, name, cash, bankacc, adminlevel, donatorlvl, adac_licenses, adaclevel, adac_gear FROM players WHERE playerid='%1'",_uid];};


      Etwas weiter unten das hier:

      Code
      case east: {
              _new = [(_queryResult select 8)] call DB_fnc_mresToArray;
              if(typeName _new == "STRING") then {_new = call compile format["%1", _new];};
              _queryResult set[8,_new];
              _queryResult set[9,([_queryResult select 9,1] call DB_fnc_bool)];
          };

      5. Geht in eure functions\MYSQL\fn_updateRequest.sqf und fügt folgendes ein:

      Code
      case east: {_query = format["UPDATE players SET name='%1', cash='%2', bankacc='%3', adac_gear='%4', adac_licenses='%5' WHERE playerid='%6'",_name,_cash,_bank,_gear,_licenses,_uid];};

      6. Geht in eure Functions\Systems\fn_getVehicles.sqf und fügt folgendes dazu:

      Code
      case east: {"adac"};

      7. Geht in eure Functions\Systems\fn_vehicleCreate.sqf und fügt folgendes ein:

      Code
      case east: {"adac"};

      8. Geht in eure Functions\Systems\fn_spawnVehicle.sqf und fügt folgendes fast ganz unten ein:

      Code
      if((_vInfo select 1) == "adac"  && (_vInfo select 2) in ["C_Offroad_01_F","C_SUV_01_F"]) then
      {
          [[_vehicle,"adac_offroad",true],"life_fnc_vehicleAnimate",_unit,false] spawn life_fnc_MP;
      };

      Das war es an der @life_server. Nun geht es in den Editor:

      Arma3 Editor

      Geht zu der Spawninsel und erstellt eine neue Einheit:
      Seite: Opfor
      Klasse: Männer
      Einheit: Sanitäter
      Kontrolle: Spielbar
      Name: adac_1
      Beschreibung: Whitelisted - ADAC 1
      Das ganze sollte so aussehen:

      Eure zweite Einheit OPFOR

      Klasse: Männer
      Einheit: Sanitäter
      Kontrolle: Spielbar
      Name: adac_2
      Beschreibung: Whitelisted - ADAC 2

      Eure dritte Einheit OPFOR

      Klasse: Männer
      Einheit: Sanitäter
      Kontrolle: Spielbar
      Name: adac_3
      Beschreibung: Whitelisted - ADAC 3

      Eure vierte Einheit OPFOR

      Klasse: Männer
      Einheit: Sanitäter
      Kontrolle: Spielbar
      Name: adac_4
      Beschreibung: Whitelisted - ADAC 4

      Das ganze müsste dann so aussehen:

      Nicht verwirren lassen, ich habe bei mir auf dem Server 10 ADAC Slots gemmacht. Das könnt ihr natürlich selber entscheiden wiefiele Slots ihr wollt. Im Tutorial erkläre ich das mal mit 4 Slots.
      !!Ganz Wichtig!!
      Alle erstellten Opfor müssen verbunden sein. Also erstellt immer eine neue Einheit, und nicht einfach kopieren!

      Zum schluß noch einen Marker auf der Map erstellen, wo ihr den ADAC haben wollt. Marker Name:

      Code
      adac_spawn_1

      Speichert die map.

      Letzter schritt:

      Öffnet eure mission.sqm mit eurem Notepadd ++ oder ähnlichem und sucht nach adac.
      Bei euch müsste jetzt stehen:

      Code
      vehicle="O_medic_F";


      ändern in

      Code
      vehicle="B_medic_F";


      Und das bei alle vier, die ihr erstellt habt.
      Schlussendlich müsste das bei euch so aussehen:

      Spoiler anzeigen

      class Item84
      {
      side="EAST";
      class Vehicles
      {
      items=10;
      class Item0
      {
      position[]={8478.0098,99.372452,25180.621};
      id=216;
      side="EAST";
      vehicle="B_medic_F";
      player="PLAY CDG";
      leader=1;
      skill=0.60000002;
      text="adac_1";
      description="Whitelisted - ADAC 1";
      };
      class Item1
      {
      position[]={8481.0273,99.923019,25180.678};
      id=217;
      side="EAST";
      vehicle="B_medic_F";
      player="PLAY CDG";
      skill=0.60000002;
      text="adac_2";
      description="Whitelisted - ADAC 2";
      };
      class Item2
      {
      position[]={8477.8408,99.789711,25177.484};
      id=218;
      side="EAST";
      vehicle="B_medic_F";
      player="PLAY CDG";
      skill=0.60000002;
      text="adac_3";
      description="Whitelisted - ADAC 3";
      };
      class Item3
      {
      position[]={8481.1611,100.29736,25177.732};
      id=219;
      side="EAST";
      vehicle="B_medic_F";
      player="PLAY CDG";
      skill=0.60000002;
      text="adac_4";
      description="Whitelisted - ADAC 4";
      };
      };
      };

      Spielt noch folgenden Code in eure DB ein:

      Code
      ALTER TABLE  `players` ADD (
      `adac_licenses` TEXT NULL DEFAULT NULL
      );
      
      
      
      
      ALTER TABLE  `players` ADD (
      `adac_gear` TEXT NOT NULL
      );
      
      
      
      
      ALTER TABLE  `players` ADD (
      `adaclevel` enum('0','1','2','3','4','5') NOT NULL DEFAULT '0'
      );
      Alles anzeigen

      Wenn ihr das gemmacht habt,gebt euch ein adac level, und ganz WICHTIG gebt bei adac_licenses folgendes ein:

      Code
      "[]"

      So, nun habt ihr eure neue Fraktion Opfor und könnt als ADAC auf eurem Server spielen.

      Lizenz erstellen

      1. Geht in eure configuration.sqf und fügt folgendes unter life_licenses = ein:

      Code
      ["license_adac_car","adac"],
          ["license_adac_air","adac"]

      2. Geht in eure core/config/fn_licenseType.sqf und fügt folgendes bei case 0: ein:

      Code
      case "car": {_var = "license_adac_car"};
                  case "air": {_var = "license_adac_air"};


      bei case 1:

      Code
      case "license_adac_car": {_var = "car"};
                  case "license_adac_air": {_var = "air"};

      3. Geht in eure core/config/fn_varToStr.sqf und fügt folgendes unter //License Block ein:

      Code
      case "license_adac_car": {"ADAC Führerschein"};
          case "license_adac_air": {"ADAC Pilotenschein"};

      4. Geht in eure core/config/fn_licensePrice.sqf und fügt folgendes ein:

      Code
      case "car": {500};
          case "air": {5000};

      5. Geht in eure core/config/fn_vehShopLicenses.sqf und fügt folgendes unter case "reb_car": {_ret = license_civ_rebel;}; ein:

      Code
      case "adac_car": {_ret = license_adac_car;};
          case "adac_air": {_ret = license_adac_air;};

      6. Die INIT für den NPC sieht wie folgt aus:

      Code
      removeAllWeapons
       this; this enableSimulation false; this allowDamage false;   this 
      addAction[format["%1 ($%2)",["license_adac_car"] call 
      life_fnc_varToStr,[(["car"] call life_fnc_licensePrice)] call 
      life_fnc_numberText],life_fnc_buyLicense,"car",0,false,false,"",' 
      !license_adac_car && playerSide == east '];      this 
      addAction[format["%1 ($%2)",["license_adac_air"] call 
      life_fnc_varToStr,[(["air"] call life_fnc_licensePrice)] call 
      life_fnc_numberText],life_fnc_buyLicense,"air",0,false,false,"",' 
      !license_adac_air && playerSide == east '];

      Nun könnt ihr als ADAC Fahrzeuge kaufen.

      SQL Smartphone

      Solltet ihr das SQL Smartphone haben, so fügt noch folgendes hinzu:
      life_server\Functions\Smartphone/fn_handleMessages.sqf

      Code
      //ADAC request
          case 6:
          {    
              [[_msg,name _player,6],"clientMessage",east,false] spawn life_fnc_MP;
          };

      core/pmenu/fn_newMsg.sqf

      Code
      //ADACrequest
          case 8:
          {
              if(({side _x == east} count playableUnits) == 0) exitWith {hint format["Zurzeit ist kein ADAC im Dienst. Bitte probiere es später nochmal."];};
              ctrlShow[888900,false];
              if(_msg == "") exitWith {hint "Du musst eine Nachricht eingeben.";ctrlShow[888900,true];};
              [[ObjNull,_msg,player,6],"GHB_fnc_handleMessages",false] spawn life_fnc_MP;
              hint format["Du hast eine Nachricht an die Pannennotrufzentrale gesendet.",_msg];
              ctrlShow[888900,true];
              closeDialog 887890;
          };
      Alles anzeigen

      Nun sind wir am Ende angekommen.

      Eine bitte an euch.
      Wenn es geklapt hat oder nicht, bitte schreibt es. Ich helfe gerne.
      Ich möchte das Tutorial immer up2date hallten, weil Opfor einfügen eines der meistgesuchten sachen sind.

      MfG
      Noldy

      Dateien

      adac_uniform.zip 103,69 kB – 146 Downloads
    • [Tutorial] Handy Akku einfügen

      • Noldy
      • 9. August 2015 um 03:05

      Hallo,
      Mein erstes Tutorial hier.

      In diesem Tutorial zeige ich euch, wie ihr unter eurem leben Icon eine Batterie einfügt.

      !!Wenn ihr das SQL Smartphone habt, dann fügt die dateien wie normal in der Anleitung ein und ändert eine datei nach folgendem Post ab:!!

      Only 4 GG User

      [hide]

      fn_callCellPhone.sqf

      Spoiler anzeigen

      /*
      Cell Phone Battery script by KampfKuerbisHD
      */

      if(life_battery < 2) exitWith {hint "Deine Batterie ist leer."};
      createDialog "Life_my_smartphone";

      !!Das Rot markierte bitte vollständig ersetzen.!!

      (Das Rot geschriebene hinzufügen/ersetzen)

      Dann legen wir mal los

      1. core\functions\fn_hudUpdate.sqf

      Spoiler anzeigen

      /*
      /*
      File: fn_hudUpdate.sqf
      Author: Bryan "Tonic" Boardwine

      Description:
      Updates the HUD when it needs to.
      */
      private["_ui","_food","_water","_health","_battery"];
      disableSerialization;

      _ui = uiNameSpace getVariable ["playerHUD",displayNull];
      if(isNull _ui) then {[] call life_fnc_hudSetup;};
      _food = _ui displayCtrl 23500;
      _water = _ui displayCtrl 23510;
      _health = _ui displayCtrl 23515;
      _battery = _ui displayCtrl 23520;

      //Update food
      _food ctrlSetPosition [safeZoneX+safeZoneW-0.090,safeZoneY+safeZoneH-0.548];
      _food ctrlSetText format["%1", life_hunger];
      _food ctrlCommit 0;
      //Update Water
      _water ctrlSetPosition [safeZoneX+safeZoneW-0.090,safeZoneY+safeZoneH-0.502];
      _water ctrlSetText format["%1", life_thirst];
      _water ctrlCommit 0;
      //Update Health
      _health ctrlSetPosition [safeZoneX+safeZoneW-0.090,safeZoneY+safeZoneH-0.456];
      _health ctrlSetText format["%1", round((1 - (damage player)) * 100)];
      _health ctrlCommit 0;
      //Update battery
      _battery ctrlSetPosition [safeZoneX+safeZoneW-0.090,safeZoneY+safeZoneH-0.410];
      _battery ctrlSetText format["%1", life_battery];
      _battery ctrlCommit 0;

      2. core\init_survival.sqf

      Spoiler anzeigen

      [] spawn {
      private["_fnc_food","_fnc_water","_fnc_battery"];
      _fnc_food =
      {
      if(life_hunger < 2) then {player setDamage 1; hint "Du bist verhungert.";}
      else
      {
      life_hunger = life_hunger - 10;
      [] call life_fnc_hudUpdate;
      if(life_hunger < 2) then {player setDamage 1; hint "Du bist verhungert.";};
      switch(life_hunger) do {
      case 30: {hint "Du hast eine Weile nichts gegessen, du solltest schnell etwas finden!";};
      case 20: {hint "Du hast angefangen zu verhungern, du musst etwas zu essen finden ansonsten wirst du sterben.";};
      case 10: {hint "Du wirst nun zu Tode hungern, du wirst sehr bald sterben, falls du nichts essen solltest";player setFatigue 1;};
      };
      };
      };

      _fnc_water =
      {
      if(life_thirst < 2) then {player setDamage 1; hint "Du bist Ausgetrocknet.";}
      else
      {
      life_thirst = life_thirst - 10;
      [] call life_fnc_hudUpdate;
      if(life_thirst < 2) then {player setDamage 1; hint "Du bist Ausgetrocknet.";};
      switch(life_thirst) do
      {
      case 30: {hint "Du hast eine Weile nichts getrunken, du solltest bald etwas finden.";};
      case 20: {hint "Du hast eine lange Zeit nichts getrunken, du solltest bald etwas zu trinken finden oder du wirst wegen Austrocknung sterben."; player setFatigue 1;};
      case 10: {hint "Du leidest unter schwerer Austrocknung, du solltest schnell etwas trinken!"; player setFatigue 1;};
      };
      };
      };

      _fnc_battery =
      {
      if(life_battery < 2) then {hint "Your battery is empty.";}
      else
      {
      life_battery = life_battery - 5;
      [] call life_fnc_hudUpdate;
      if(life_battery < 2) then {hint "Your battery is empty.";};
      switch(life_battery) do
      {
      case 30: {hint "Message if is battery 30%. (you can remove this line)";};
      case 20: {hint "Message if is battery 20%. (you can remove this line)";};
      case 10: {hint "Message if is battery 10%. (you can remove this line)";};
      };
      };
      };

      while{true} do
      {
      sleep 600;
      [] call _fnc_water;
      sleep 10;
      [] call _fnc_battery;
      sleep 250;
      [] call _fnc_food;
      };
      };

      3. dialog\player_sys.sqf

      Spoiler anzeigen

      #define playersys_DIALOG 2001
      #define money_text 2002
      #define water_text 2003
      #define food_text 2004
      #define item_list 2005
      #define player_list 2006
      #define money_value 2007
      #define rogue_text 2008
      #define carry_weight 2009
      #define item_edit 2010
      #define battery_text 2011

      4. dialog\player_inv.hpp und suche "class ButtonCell"

      Spoiler anzeigen

      class ButtonCell : Life_RscButtonMenu {
      idc = 2014;
      text = "$STR_PM_CellPhone";
      onButtonClick = "[] call life_fnc_callCellPhone";
      x = 0.42 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH));
      y = 0.8 - (1 / 25);
      w = (6.25 / 40);
      h = (1 / 25);
      };

      5. dialog\ui.hpp

      Spoiler anzeigen

      class playerHUD
      {
      idd=-1;
      movingEnable=0;
      fadein=0;
      duration = 99999999999999999999999999999999999999999999;
      fadeout=0;
      name="playerHUD";
      onLoad="uiNamespace setVariable ['playerHUD',_this select 0]";
      objects[]={};

      class controlsBackground
      {
      class foodHIcon : life_RscPicture
      {

      idc = -1;
      text = "icons\food.paa";
      x = safeZoneX+safeZoneW-0.115; y = safeZoneY+safeZoneH-0.54;
      w = 0.03; h = 0.04;
      };

      class waterHIcon : life_RscPicture
      {

      idc = -1;
      text = "icons\water.paa";
      x = safeZoneX+safeZoneW-0.12; y = safeZoneY+safeZoneH-0.50;
      w = 0.04; h = 0.04;
      };

      class healthHIcon : life_RscPicture
      {

      idc = -1;
      text = "icons\health.paa";
      x = safeZoneX+safeZoneW-0.11; y = safeZoneY+safeZoneH-0.445;
      w = 0.02; h = 0.03;
      };

      class batteryHIcon : life_RscPicture
      {

      idc = -1;
      text = "icons\battery.paa";
      x = safeZoneX+safeZoneW-0.11; y = safeZoneY+safeZoneH-0.40;
      w = 0.02; h = 0.03;
      };
      };

      class controls
      {
      class foodtext
      {
      type=0;
      idc=23500;
      style=0;
      x=-1;
      y=-1;
      w=0.3;
      h=0.05;
      sizeEx=0.03;
      size=1;
      font="PuristaSemibold";
      colorBackground[]={0,0,0,0};
      colorText[] = { 1 , 1 , 1 , 1 };
      shadow=true;
      text="";
      };

      class watertext
      {
      type=0;
      idc=23510;
      style=0;
      x=-1;
      y=-1;
      w=0.3;
      h=0.05;
      sizeEx=0.03;
      size=1;
      font="PuristaSemibold";
      colorBackground[]={0,0,0,0};
      colorText[] = { 1 , 1 , 1 , 1 };
      shadow=true;
      text="";
      };

      class healthtext
      {
      type=0;
      idc=23515;
      style=0;
      x=-1;
      y=-1;
      w=0.3;
      h=0.05;
      sizeEx=0.03;
      size=1;
      font="PuristaSemibold";
      colorBackground[]={0,0,0,0};
      colorText[] = { 1 , 1 , 1 , 1 };
      shadow=true;
      text="";
      };

      class batterytext
      {
      type=0;
      idc=23520;
      style=0;
      x=-1;
      y=-1;
      w=0.3;
      h=0.05;
      sizeEx=0.03;
      size=1;
      font="PuristaSemibold";
      colorBackground[]={0,0,0,0};
      colorText[] = { 1 , 1 , 1 , 1 };
      shadow=true;
      text="";
      };
      };
      };

      6. core\configuration.sqf

      Spoiler anzeigen

      #include <macro.h>
      /*
      Master Life Configuration File
      This file is to setup variables for the client, there are still other configuration files in the system

      *****************************
      ****** Backend Variables *****
      *****************************
      */
      life_query_time = time;
      life_action_delay = time;
      life_trunk_vehicle = Objnull;
      life_session_completed = false;
      life_garage_store = false;
      life_session_tries = 0;
      life_net_dropped = false;
      life_hit_explosive = false;
      life_siren_active = false;
      life_clothing_filter = 0;
      life_clothing_uniform = -1;
      life_redgull_effect = time;
      life_is_processing = false;
      life_bail_paid = false;
      life_impound_inuse = false;
      life_action_inUse = false;
      life_spikestrip = ObjNull;
      life_respawn_timer = 35;
      life_has_insurance = false;
      life_knockout = false;
      life_interrupted = false;
      //Uniform price (0),Hat Price (1),Glasses Price (2),Vest Price (3),Backpack Price (4)
      life_clothing_purchase = [-1,-1,-1,-1,-1];
      /*
      *****************************
      ****** Weight Variables *****
      *****************************
      */
      life_maxWeight = 24; //Identifies the max carrying weight (gets adjusted throughout game when wearing different types of clothing).
      life_maxWeightT = 24; //Static variable representing the players max carrying weight on start.
      life_carryWeight = 0; //Represents the players current inventory weight (MUST START AT 0).

      /*
      *****************************
      ****** Food Variables *******
      *****************************
      */
      life_eat_Salema = 40;
      life_eat_Ornate = 20;
      life_eat_Mackerel = 20;
      life_eat_Tuna = 100;
      life_eat_Mullet = 30;
      life_eat_CatShark = 60;
      life_eat_Rabbit = 20;
      life_eat_Apple = 5;
      life_eat_turtlesoup = 62;
      life_eat_donuts = 30;

      /*
      *****************************
      ****** Life Variables *******
      *****************************
      */
      life_net_dropped = false;
      life_hit_explosive = false;
      life_siren_active = false;
      life_bank_fail = false;
      life_use_atm = true;
      life_is_arrested = false;
      life_delivery_in_progress = false;
      life_action_in_use = false;
      life_thirst = 100;
      life_hunger = 100;
      life_battery = 50;
      life_paycheck_period = 5;
      life_cash = 0;
      life_impound_car = 350;
      life_impound_boat = 250;
      life_impound_air = 850;
      life_istazed = false;
      life_my_gang = ObjNull;

      [...]

      7. Functions.h und finde "class Functions"

      Spoiler anzeigen

      class Functions
      {
      file = "core\functions";
      class calWeightDiff {};
      class fetchCfgDetails {};
      class handleInv {};
      class hudSetup {};
      class hudUpdate {};
      class fetchGear{};
      class tazeSound {};
      class animSync {};
      class simDisable {};
      class keyHandler {};
      class dropItems {};
      class handleDamage {};
      class numberText {};
      class handleItem {};
      class accType {};
      class onPlayerDisconnect {};
      class onDeath {};
      class onRespawn {};
      class receiveItem {};
      class giveDiff {};
      class receiveMoney {};
      class playerTags {};
      class clearVehicleAmmo {};
      class pulloutVeh {};
      class nearUnits {};
      class fedSuccess {};
      class actionKeyHandler {};
      class autoSave {};
      class TBHreloader {};
      class updateCash {};
      class vehicleGarage {};
      class holsterHandgun {};
      class CarLockSound {};
      class CarUnlockSound {};
      class callCellPhone {};
      };

      Nun ist der Batterie Script fertig.

      Jetzt fügen wir noch die Batterie in den Markt.

      1. core\config\fn_varHandle.sqf
      Adde bei "case 0":

      Spoiler anzeigen

      case "battery": {"life_inv_battery"};


      Adde bei "case 1":

      Spoiler anzeigen

      case "life_inv_battery": {"battery"};

      2. core\config\fn_itemWeight.sqf
      Adde:

      Spoiler anzeigen

      case "battery": {1};

      3. core\config\fn_varToStr.sqf
      Adde

      Spoiler anzeigen

      case "life_inv_battery": {"Cell Phone Battery"};

      4. core\configuration.sqf
      Adde bei "life_inv_items" das:

      Spoiler anzeigen

      "life_inv_battery"


      Adde in "sell_array" das:

      Spoiler anzeigen

      ["battery",750]


      Adde in "buy_array" das:

      Spoiler anzeigen

      ["battery",1500]

      5. core\config\fn_virt_shops.sqf
      Adde in "case "market"" das:

      Spoiler anzeigen

      {["Altis Market",["battery"]]};


      Das ganze müsste da so aussehen ungefär

      Spoiler anzeigen

      case "market": {["Altis Market",["water","rabbit","redgull","tbacon","lockpick","battery","pickaxe","axt","fuelF","pfandflasche","openkokos","storage2"]]};

      6. core\pmenu\useItem.sqf
      Adde das hinzu

      Spoiler anzeigen

      case (_item == "battery"):
      {
      if(([false,_item,1] call life_fnc_handleInv)) then
      {
      life_battery = 100;
      hint "Your battery is full now.";
      };
      };

      Bitte achtet gut, das wenn ihr wo was hinzufügt auf die komas (,) zu achten.
      Das letzte darf nie ein (,) haben, jedoch obendrüber alle.

      Das war es schon. Nun hat euer Handy einen Akku.

      Sollte der Akku mal leer sein, könnt ihr das Handy nicht mehr benutzen bis ihr im Markt eine neue Batterie kauft. ^^

      Original Thread: (English) [HOWTO] Add Cell Phone Battery [3.1.2 / 3.1.3] - Editing Docs - Altis Life RPG

      Im anhang habe ich noch 2 sachen eingefügt, die ihr in euer FTP laden müsst.
      Das Icon, und die fn_callCellPhone.sqf.

      Wenn probleme auftretten helfe ich euch gerne.

      MfG
      Noldy

      Dateien

      Cell Phone Battery.zip 2,76 kB – 175 Downloads
    • [Tutorial] Server Intro

      • Noldy
      • 9. August 2015 um 03:01

      Das Urheberrecht dieses Beitrags liegt bei RAinZz5718, am 31. Juli 2014!

      Zitat von RAinZz5718


      Hallo Leute,
      ich habe ein eigenes Spawn Intro gemacht und bin bereit es zu veröffentlichen.


      _______________________________________________________________Preview_____________________________________________________________


      Hier einmal ein Video wie das ganze aussieht:
      Intro Kamera - YouTube


      ______________________________________________________________Installation___________________________________________________________


      Schritt 1:
      Erstellt ein Ordner Namens "Intro" in den Script Ordner.


      Erstellt in Ordnerscript\Intro eine neue sqf namens Kavala.sqf mit folgendem inhallt:

      Spoiler anzeigen

      /*
      -----------------------------------
      Author: RAinZz5718
      Description: Intro Kavala
      -----------------------------------
      */
      waitUntil { alive player };
      player allowDamage false;
      _camera = "camera" camCreate [0,0,0];
      _camera CameraEffect ["internal","back"];
      _camera CamCommitPrepared 0;
      //-----------------------------------
      // Das sind die Kamera Koordinaten (Kavala)
      _camera camPrepareTarget [5789.28,-83292.53,-25736.98];
      _camera camPreparePos [3642.66,13284.80,48.97];
      _camera camPrepareFOV 0.700;
      _camera camCommitPrepared 0;
      //-----------------------------------
      titleText ["","Black IN",4];


      any=[
      [
      ["Willkommen auf dem Altis Life Server","<t align = 'center' size = '0.7'>%1</t><br/>"],
      ["NEON RED","<t align = 'center' size =
      '1'>%1</t><br/>"],// Hier könnt ihr den Server Name
      eintragen...
      ["Server Restarts: 00:00, 06:00, 12:00, 18:00","<t align = 'center' size = '0.7'>%1</t><br/>"]
      ]
      ] spawn BIS_fnc_typeText;


      sleep 11;
      titleText ["","black out",3];
      waitUntil {camCommitted _camera};
      sleep 5;
      titleText ["","Black IN",4];
      _camera cameraEffect ["terminate","back"];
      camDestroy _camera;
      player allowDamage true;
      sleep 0;


      Erstellt in Ordnerscript\Intro eine neue sqf namens Athira.sqf mit folgendem inhallt:

      Spoiler anzeigen

      /*
      -----------------------------------
      Author: RAinZz5718
      Description: Intro Athira
      -----------------------------------
      */
      waitUntil { alive player };
      player allowDamage false;
      _camera = "camera" camCreate [0,0,0];
      _camera CameraEffect ["internal","back"];
      _camera CamCommitPrepared 0;
      //-----------------------------------
      // Das sind die Kamera Koordinaten (Athira)
      _camera camPrepareTarget [34140.72,99395.22,-55403.29];
      _camera camPreparePos [14028.14,18663.38,50.45];
      _camera camPrepareFOV 0.700;
      _camera camCommitPrepared 0;
      //-----------------------------------
      titleText ["","Black IN",4];


      any=[
      [
      ["Willkommen auf dem Altis Life Server","<t align = 'center' size = '0.7'>%1</t><br/>"],
      ["NEON RED","<t align = 'center' size =
      '1'>%1</t><br/>"], // Hier könnt ihr den Server Name
      eintragen...
      ["Server Restarts: 00:00, 06:00, 12:00, 18:00","<t align = 'center' size = '0.7'>%1</t><br/>"]
      ]
      ] spawn BIS_fnc_typeText;


      sleep 11;
      titleText ["","black out",3];
      waitUntil {camCommitted _camera};
      sleep 5;
      titleText ["","Black IN",4];
      _camera cameraEffect ["terminate","back"];
      camDestroy _camera;
      player allowDamage true;
      sleep 0;


      Erstellt in Ordnerscript\Intro eine neue sqf namens Pyrgos.sqf mit folgendem inhallt:

      Spoiler anzeigen

      /*
      -----------------------------------
      Author: RAinZz5718
      Description: Intro Pyrgos
      -----------------------------------
      */
      waitUntil { alive player };
      player allowDamage false;
      _camera = "camera" camCreate [0,0,0];
      _camera CameraEffect ["internal","back"];
      _camera CamCommitPrepared 0;
      //-----------------------------------
      // Das sind die Kamera Koordinaten (Pyrgos)
      _camera camPrepareTarget [-73029.83,30524.23,-40203.07];
      _camera camPreparePos [16746.00,12742.17,76.11];
      _camera camPrepareFOV 0.700;
      _camera camCommitPrepared 0;
      //-----------------------------------


      titleText ["","Black IN",4];


      any=[
      [
      ["Willkommen auf dem Altis Life Server","<t align = 'center' size = '0.7'>%1</t><br/>"],
      ["NEON RED","<t align = 'center' size =
      '1'>%1</t><br/>"], // Hier könnt ihr den Server Name
      eintragen...
      ["Server Restarts: 00:00, 06:00, 12:00, 18:00","<t align = 'center' size = '0.7'>%1</t><br/>"]
      ]
      ] spawn BIS_fnc_typeText;


      sleep 11;
      titleText ["","black out",3];
      waitUntil {camCommitted _camera};
      sleep 5;
      titleText ["","Black IN",4];
      _camera cameraEffect ["terminate","back"];
      camDestroy _camera;
      player allowDamage true;
      sleep 0;


      Erstellt in Ordnerscript\Intro eine neue sqf namens Sofia.sqf mit folgendem inhallt:


      Spoiler anzeigen

      /*
      -----------------------------------
      Author: RAinZz5718
      Description: Intro Sofia
      -----------------------------------
      */
      waitUntil { alive player };
      player allowDamage false;
      _camera = "camera" camCreate [0,0,0];
      _camera CameraEffect ["internal","back"];
      _camera CamCommitPrepared 0;
      //-----------------------------------
      // Das sind die Kamera Koordinaten (Sofia)
      _camera camPrepareTarget [-60140.65,26641.50,-50810.04];
      _camera camPreparePos [25785.72,21368.36,52.56];
      _camera camPrepareFOV 0.700;
      _camera camCommitPrepared 0;
      //-----------------------------------


      titleText ["","Black IN",4];


      any=[
      [
      ["Willkommen auf dem Altis Life Server","<t align = 'center' size = '0.7'>%1</t><br/>"],
      ["NEON RED","<t align = 'center' size =
      '1'>%1</t><br/>"], // Hier könnt ihr den Server Name
      eintragen...
      ["Server Restarts: 00:00, 06:00, 12:00, 18:00","<t align = 'center' size = '0.7'>%1</t><br/>"]
      ]
      ] spawn BIS_fnc_typeText;


      sleep 11;
      titleText ["","black out",3];
      waitUntil {camCommitted _camera};
      sleep 5;
      titleText ["","Black IN",4];
      _camera cameraEffect ["terminate","back"];
      camDestroy _camera;
      player allowDamage true;
      sleep 0;


      Schritt 2:
      Geht in die fn_initCiv.sqf und fügt ganz unten das ein:

      Spoiler anzeigen


      // Intro Scripts
      if((getPos player) distance (getMarkerPos "civ_spawn_1") < 500) then
      {
      [] execVM "script\Intro\Kavala.sqf";
      };
      if((getPos player) distance (getMarkerPos "civ_spawn_2") < 500) then
      {
      [] execVM "script\Intro\Pyrgos.sqf";
      };
      if((getPos player) distance (getMarkerPos "civ_spawn_3") < 500) then
      {
      [] execVM "script\Intro\Athira.sqf";
      };
      if((getPos player) distance (getMarkerPos "civ_spawn_4") < 500) then
      {
      [] execVM "script\Intro\Sofia.sqf";
      };


      Fertig!!!
      _______________________________________________________________Editieren____________________________________________________________


      Text ändern:
      Wenn ihr den Text ändert wollt geht in die jeweilige Scripts rein und dann könnt ihr ein beliebigen Text reinschreiben


      Kamera ändern:
      In den Scripts ist beschriftet wo die Kamera Koordinaten sind.
      Ihr könnt die Koordinaten im Editor raus finden ladet auch die Missions Datei runter und öffnet es,
      dann drückt ihr auf vorschau.
      Jetzt müsstet ihr in einer Kamera gespawnt sein, nun könnt ihr über die Pfeil tasten die Kamera hin und her bewegen.
      Durch ein Drücken werden die Koordinaten gespeichert und könnt die dann in das Scrip einfügen.


      Hoffe es hat alles funktioniert.
      Grüße RAinZz/Tobias

      Alles anzeigen
    • [LEAK/TUTORIAL] G-e-F Antihack (Old Version)

      • Noldy
      • 9. August 2015 um 02:56

      Das Urheberrecht dieses Beitrags liegt bei Hashcat, am 15. Juli 2015!

      Zitat von Hashcat



      In folgendem findet ihr eine alte Version des G-e-F Antihacks vom November 2014. Vielleicht kann jemand von euch etwas damit anfangen.


      README:

      Code
      [/b]Einen neuen Ordner in @life_server erstellen@life_server\addons\life_server\Functions\MISCDort die ganzen Dateien einfügen________________________________________________________________________________________________Als erstes geht in euren @life_serversucht die config.cpp ersetzt das________________________________________________________________________________________________    class Life_System    {        tag = "life";        class Wanted_Sys        {            file = "\life_server\Functions\WantedSystem";            class wantedFetch {};            class wantedPerson {};            class wantedBounty {};            class wantedTicket {};            class wantedPardon {};            class wantedRemove {};            class wantedAdd {};            class wantedPunish {};        };        class Misc        {            file = "\life_server\Functions\MISC";            class tabletFunc {};            class ClientAH {};            class ServerAH {};            class Anticheat {};            class Antihack2 {};            class Antihack3 {};            class Antihack4 {};            class Antihack5 {};            class Antihack6 {};            class Ban {};            class initSafeCode {postInit=1;};        };        class Jail_Sys        {            file = "\life_server\Functions\Jail";            class jailSys {};        };        class Client_Code        {            file = "\life_server\Functions\Client";        };    };________________________________________________________________________________________________In eurer Missiondatei in den Core Ordner gehen und dort die init.sqf öffnenüber Zeile 15 einfügen    waitUntil {(!isNil {fnc_setupFuncs})};    _handle = [] spawn fnc_setupFuncs;    waitUntil {scriptDone _handle;};[b]


      fn_Anticheat.sqf

      Code
      [/b]#include <macro.h>_Enabled = true;_Use_Life_fnc_MP = true;_DetectedFiles = ["420\init.sqf","JM3.paa","JM3.sqf","LystoArma3\start.sqf","scr\start.sqf","vet@folder\[email protected]","Wookie_Bete\start.sqf","wookie_wuat\RUN.sqf",    "WookieMenu.sqf","WookieMenuFinal.sqf","WookieMenuV5.sqf","jestersMENU\infiSTAR\setup\startup.sqf","wuat\screen.sqf","scripts\defaultmenu.sqf",     "menu\initmenu.sqf","scr\exec.sqf","scripts\exec.sqf","menu\exec.sqf","\monkified.sqf","civ_clothing\oki.sqf","\mhm.sqf","wuat\exec.sqf",    "crinkly\keymenu.sqf","scripts\ajmenu.sqf","startup.sqf","wookie_wuat\startup.sqf","Wookie_Beta\exec.sqf","Wookie\exec.sqf",    "Wookie\antiantihax.sqf","Wookie_Beta\antiantihax.sqf","@DevCon\DevCon.pbo","addons\@DevCon\DevCon.pbo","DevCon.pbo","@DevCon\addons\DevCon.pbo",    "ShadowyFaze\exec.sqf","monkified.sqf","\wuat\screen.sqf","\scripts\defaultmenu.sqf","\menu\initmenu.sqf","\scr\exec.sqf","\scripts\exec.sqf",    "\menu\exec.sqf","\wuat\exec.sqf","\crinkly\keymenu.sqf","\scripts\ajmenu.sqf","\startup.sqf","\wookie_wuat\startup.sqf","\Wookie_Beta\exec.sqf",    "\Wookie\exec.sqf","\Wookie\antiantihax.sqf","\Wookie_Beta\antiantihax.sqf","\@DevCon\DevCon.pbo","\addons\@DevCon\DevCon.pbo","\DevCon.pbo",    "\ShadowyFaze\exec.sqf","\scripts\defaultmenu.sqf","\menu\initmenu.sqf","\scr\exec.sqf","crinkly\keymenu.sqf","\menu\exec.sqf","\wuat\exec.sqf","\XMENU\script.dll",    "\crinkly\keymenu.sqf","\scripts\ajmenu.sqf","\startup.sqf","\exec.sqf","\wookie_wuat\startup.sqf","Wookie_Beta\exec.sqf","\Wookie\exec.sqf","\script.dll",    "\Wookie\antiantihax.sqf","\Wookie_Beta\antiantihax.sqf","\@DevCon\DevCon.pbo","\addons\@DevCon\DevCon.pbo","\DevCon.pbo","\shadowyFaze\exec.sqf","XMENU\init.sqf",    "\@civ_clothing\Addons\init.sqf"];//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////    _DetectedVariables = ["JxMxE_hide","JME_Keybinds","JME_has_yet_to_fuck_this_shit","JME_deleteC","JME_Tele","JME_ANAL_PLOW","JME_M_E_N_U_initMenu","JME_M_E_N_U_hax_toggled","W_O_O_K_I_E_FUD_Pro_RE","W_O_O_K_I_E_FUD_Car_RE","W_O_O_K_I_E_FUD_Car_RE",    "JxMxE_Veh_M","JxMxE_LifeCash500k","W_O_O_K_I_E_FUD_FuckUp_GunStore","W_O_O_K_I_E_FUD_M_E_N_U_initMenu","W_O_O_K_I_E_FuckUp_GunStore_a","JME_KillCursor","JME_OPTIONS","JME_M_E_N_U_fill_TROLLmenu","ASSPLUNGE","FOXBYPASS","POLICE_IN_HELICOPTA",    "JxMxE_EBRP","W_O_O_K_I_E_M_E_N_U_funcs_inited","Menu_Init_Lol","E_X_T_A_S_Y_Atm","W_O_O_K_I_E_Pro_RE","W_O_O_K_I_E_Debug_Mon","W_O_O_K_I_E_Debug_1337","Veh_S_P_A_W_N_Shitt","sfsefse","tw4etinitMenu","tw4etgetControl",    "JxMxEsp","JxMxE_GOD","JxMxE_Heal","efr4243234","sdfwesrfwesf233","sdgff4535hfgvcxghn","adadawer24_1337","lkjhgfuyhgfd","E_X_T_A_S_Y_M_E_N_U_funcs_inited","dayz_serverObjectMonitor","fsfgdggdzgfd","fsdddInfectLOL","Wookie_List",    "JxMxE_TP","Wookie_Pro_RE","Wookie_Car_RE","Wookie_Debug_Mon","faze_funcs_inited","advertising_banner_infiSTAR","atext_star_xa","Monky_hax_dbclick","qopfkqpofqk","debug_star_colorful","AntiAntiAntiAntiHax","antiantiantiantih4x",    "JxMxE_Infect","hub","scrollinit","gfYJV","Lystic_LMAOOOOOOOOOOOOOOOOOOO","Lystic_Re","Lysto_Lyst","E_X_T_A_S_Y_Keybinds","Menulocations","Lystic_Init","scroll_m_init_star","exstr1","pathtoscrdir3","Monky_funcs_inited",    "JxMxE_secret","Monky_initMenu","player_zombieCheck","E_X_T_A_S_Y_Recoil","godlol","playericons","abcdefGEH","wierdo","go_invisible_infiSTAR","serverObjectMonitor","enamearr","initarr3","locdb","sCode","infAmmoIndex",    "nukeDONEstar","Wookie_List","Wookie_Pro_RE","FUCKTONIC","E_X_T_A_S_Y_FuckUp_GunStore_a","E_X_T_A_S_Y_Cash_1k_t","E_X_T_A_S_Y_Cash_a","E_X_T_A_S_Y_LicenseDrive","E_X_T_A_S_Y_Menu_LOOOOOOOOOL","Metallica_vehicleg0dv3_infiSTAR",    "JJJJ_MMMM___EEEEEEE_INIT_MENU","JJJJ_MMMM___EEEEEEE_GAPER","JJJJ_MMMM___EEEEEEE_SMOKExWEEDxEVERYDAY_BUM_RAPE","JJJJ_MMMM___EEEEEEE_OPTIONS","JJJJ_MMMM___EEEEEEE_M_E_N_U_fill_Target","E3p",    "Jesus_MODE","ESP","MissileStrike","AL_Liscenses","NoIllegal","NoWeight","m0nkyaatp_sadksadxa","m0nkyaatp_RANDSTR","myvar23","player_adminlevel","TNK","I_like_turtles",    "BIGM","Does_Tonic_Like_to_take_Turtle_penis_in_the_ass_LODESTARS","Does_Tonic_Like_to_take_Turtle_penis_in_the_ass_LODESTAR1","GMod","No_No_No_Tonic_likes_A_Big_Fat_Sheep_Cock_Right_in_the_bum_G0d_Mode",    "Sload","T3le","life_no_injection","Tonic_has_a_gaping_vagina","my_anus_hurtz","aKFerm","aKMMenu","aKTitans","aKLikeaG0d","riasgremory_G0d_Mode","aKCarG0d","riasgremory_Car_Jesus","aKE5p","riasgremory_isseilol","aKPMark",    "riasgremory_Noobs","riasgremory_Bitches","riasgremory_Map_Markers","aKUnMmo","jenesuispasuncheateur_unamo","aKVoit","Loljesaispasquoiecriremdr","isseigremory","gremorysama","aKTaCu","aKCardetroy","aKGetKey","aKKillcursor",    "aKNoEscort","aKEscort","aKtroll","aKTPall","aKUnrestrain","aKNoEscortMe","aKNoTaze","aKJailplayer","aKLisense","riasgremory_titans_shit_reold","Tonic_merde","jaimepaslepoisin_HLEAL","TTTT_IIII___TTTTTTT_RAP_FR","TTTT_IIII___TTTTTTT_REPGA",    "TTTT_IIII___TTTTTTT_REPGAs","jaimepaslepoisin_HLEAL","Root_Main4","Root_Pistol4","Root_Rifle4","Root_Machinegun4","Root_Sniper4","Root_Launcher4","Root_Attachement4",    "pic","veh","wuat_fpsMonitor","unitList","list_wrecked","p","fffffffffff","markPos","pos","marker","TentS","VL","MV",    "mk2","i","j","fuckmegrandma","mehatingjews","scode","TTT5OptionNR","igodokxtt","omgwtfbbq","namePlayer","thingtoattachto","HaxSmokeOn","v",    "antiloop","ARGT_JUMP","selecteditem","moptions","delaymenu","gluemenu","spawnweapons1","abcd","skinmenu","playericons","changebackpack","keymenu",    "img","surrmenu","footSpeedIndex","ctrl_onKeyDown","plrshldblcklst","musekeys","dontAddToTheArray","morphtoanimals","playerDistanceScreen","pm",    "debugConsoleIndex","MY_KEYDOWN_FNC","TAG_onKeyDown","changestats","helpmenu","unitsmenu","xZombieBait","shnmenu","slag","xtags","tempslag",    "dayzRespawn2","dayzRespawn3","hangender","addgun","ESP","BIS_fnc_3dCredits_n","ViLayer","maphalf","activeITEMlist","activeITEMlistanzahl","xyzaa",    "iBeFlying","rem","DAYZ_CA1_Lollipops","bowonky","HMDIR","HDIR","Monky_funcs_inited","atext","boost","Ug8YtyGyvguGF","inv","rspwn","nd","qofjqpofq",    "invall","initarr","reinit","byebyezombies","keymenu2","hotkeymenu","letmeknow","Listw","mahcaq","mapm","weapFun","firstrun","take1","dwarden","bowonky",    "bowen","monky","pic","god","toggle_keyEH","drawic","mk2","i","j","ptags","abox1","dayz_godmode","testIndex","g0d","g0dmode","zeus","zeusmode","cargod",    "qopfkqpofqk","monkytp","pbx","playershield","zombieDistanceScreen","theKeyControl","plrshldblckls","zombieshield","pathtoscrdir","footSpeedKeys","wl",    "spawnitems1","lmzsjgnas","vm","Monky_hax_toggled","pu","nb","vspeed","godlol","aesp","godall","initarr3","initarr2","DEV_ConsoleOpen","LOKI_GUI_Key_Color",    "W_O_O_K_I_E_FUD_Pro_RE","W_O_O_K_I_E_FUD_Car_RE","W_O_O_K_I_E_FUD_Car_RE","W_O_O_K_I_E_FUD_FuckUp_GunStore","W_O_O_K_I_E_FUD_M_E_N_U_initMenu",    "W_O_O_K_I_E_FuckUp_GunStore_a","W_O_O_K_I_E_M_E_N_U_funcs_inited","Menu_Init_Lol","W_O_O_K_I_E_Pro_RE","W_O_O_K_I_E_Debug_Mon","W_O_O_K_I_E_Debug_1337",    "Veh_S_P_A_W_N_Shitt","sfsefse","tw4etinitMenu","tw4etgetControl","efr4243234","sdfwesrfwesf233","sdgff4535hfgvcxghn","adadawer24_1337","lkjhgfuyhgfd",    "dayz_serverObjectMonitor","fsfgdggdzgfd","fsdddInfectLOL","Wookie_List","Wookie_Pro_RE","Wookie_Car_RE","Wookie_Debug_Mon","faze_funcs_inited",    "advertising_banner_infiSTAR","atext_star_xa","Monky_hax_dbclick","debug_star_colorful","AntiAntiAntiAntiHax","antiantiantiantih4x","hub","scrollinit",    "gfYJV","Lystic_LMAOOOOOOOOOOOOOOOOOOO","Lystic_Re","Lysto_Lyst","Menulocations","Lystic_Init","scroll_m_init_star","exstr1","pathtoscrdir3",    "Monky_initMenu","player_zombieCheck","abcdefGEH","wierdo","go_invisible_infiSTAR","serverObjectMonitor","enamearr","locdb","infAmmoIndex","nukeDONEstar",    "g00d_Metallica","tphigh_choice_infistar","tphigh_menu_Metallica_menu","E_X_T_A_S_Y_Atm","E_X_T_A_S_Y_M_E_N_U_funcs_inited","E_X_T_A_S_Y_Keybinds",    "E_X_T_A_S_Y_Recoil","FUCKTONIC","E_X_T_A_S_Y_FuckUp_GunStore_a","E_X_T_A_S_Y_Cash_1k_t","E_X_T_A_S_Y_Cash_a","E_X_T_A_S_Y_LicenseDrive",    "E_X_T_A_S_Y_Menu_LOOOOOOOOOL","FOXBYPASS","Dayz_GUI_R","dayz_originalPlayer","zeus_star","_infiSTAR","ppe","ppe2","willschabppe33",    "j___m___e____i_masterbate_to_bum_rape___hovering","j___m___e____i_masterbate_to_bum_rape___BelieveIcanFly","JJJJ_MMMM___EEEEEEE_INIT_MENU","JJJJ_MMMM___EEEEEEE_fly",    "JJJJ_MMMM___EEEEEEE_NoRecoil","JJJJ_MMMM___EEEEEEE_CLIP","JJJJ_MMMM___EEEEEEE_Invisable","JJJJ_MMMM___EEEEEEE_GiantCock","JJJJ_MMMM___EEEEEEE_JetBus","JJJJ_MMMM___EEEEEEE_BoxQuad",    "JJJJ_MMMM___EEEEEEE_SpawnCrate","JJJJ_MMMM___EEEEEEE_JJJJ_MMMM___EEEEEEE_to_Swastika","JJJJ_MMMM___EEEEEEE_Cash_1mill","JJJJ_MMMM___EEEEEEE_Cash_5mill",    "JJJJ_MMMM___EEEEEEE_Cash_1mill_t","JJJJ_MMMM___EEEEEEE_Cash_5mill_t","JJJJ_MMMM___EEEEEEE_JesusMode_t","Does_Tonic_Like_to_take_Turtle_penis_in_the_ass_LODESTARS",    "JJJJ_MMMM___EEEEEEE_M_E_N_U_fill_All","JJJJ_MMMM___EEEEEEE_M_E_N_U_initMenu","JJJJ_MMMM___EEEEEEE_OPTIONS","JJJJ_MMMM___EEEEEEE_PLAYERLOL",    "No_No_No_Tonic_likes_A_Big_Fat_Sheep_Cock_Right_in_the_bum_G0d_Mode","HAAJASDOKAD_keyp","HAAJASDOKAD_keybinds","HAAJASDOKAD_targetkey","HAAJASDOKAD_escorttt",    "HAAJASDOKAD_tepe","HAAJASDOKAD_ladida","HAAJASDOKAD_RANDOM_VARIABLE_killAnnoying","HAAJASDOKAD_annoyingLock","HAAJASDOKAD_annoyingPlayer","HAAJASDOKAD_playersToGod",    "HAAJASDOKAD_countedPlayersGod","HAAJASDOKAD_ANUS_FINGER_BANG","HAAJASDOKAD_suicide","HAAJASDOKAD_destroyall","HAAJASDOKAD_destroyallsure","HAAJASDOKAD_healallsure","HAAJASDOKAD_teleportallsure",    "HAAJASDOKAD_healall","HAAJASDOKAD_tepall","HAAJASDOKAD_cashall","HAAJASDOKAD_turtlespawn","HAAJASDOKAD_HAAJASDOKAD_invisibleit","HAAJASDOKAD_kick","HAAJASDOKAD_invisible",    "HAAJASDOKAD_hakenkreuz","HAAJASDOKAD_e5p","HAAJASDOKAD_mape5p","HAAJASDOKAD_cash","HAAJASDOKAD_night","HAAJASDOKAD_alllicenses","HAAJASDOKAD_misseles",    "HAAJASDOKAD_jetbus","HAAJASDOKAD_fly","HAAJASDOKAD_nyan","HAAJASDOKAD_DAHUGETHINGG","HAAJASDOKAD_3Dtext","HAAJASDOKAD_boxquad","HAAJASDOKAD_erdbeben",    "HAAJASDOKAD_altilife","HAAJASDOKAD_spawnvehs","HAAJASDOKAD_troll","HAAJASDOKAD_main_menu","nuke_vars","TONIC_HAS_A_GAPER_NUKE_2",    "mdh_nuke_destruction_zone","mdh_nuke_camshake","mdh_nuke_ash","mdh_nuke_colorcorrection","mdh_nuke_removecorrection","mdh_nuke_removeash","nukepos",    "jaimepaslepoisin_HLEAL","Root_Main4","Root_Pistol4","Root_Rifle4","Root_Machinegun4","Root_Sniper4","Root_Launcher4","Root_Attachement4","fuckfest",    "JME_M_E_N_U_getControl","G_E_F___GLOBAL","G_E_F___BYPASS","G_E_F___ALTISLIFEH4X","G_E_F___OwnScripts"];_DetectedMenus = [3030];_toCompilableString = {    _code = _this select 0;    _string = "";    if(typename _code == "CODE") then {        _string = str(_code);        _arr = toArray(_string);        _arr set[0,32];        _arr set[count(_arr)-1,32];        _string = toString(_arr);    };    _string;};BIS_fnc_MP = compileFinal ([BIS_fnc_MP] call _toCompilableString);BIS_fnc_MPExec = compileFinal ([BIS_fnc_MPExec] call _toCompilableString);if(_Use_Life_fnc_MP) then {    Life_fnc_MP = compileFinal ([Life_fnc_MP] call _toCompilableString);    AH_fnc_MP = compileFinal ([Life_fnc_MP] call _toCompilableString);    life_fnc_tazed = compileFinal ([life_fnc_tazed] call _toCompilableString);} else {    AH_fnc_MP = compileFinal ([BIS_fnc_MP] call _toCompilableString);};if(isDedicated) then {    diag_log "<ANTICHEAT>: Initialized!";    Notify_Kick = compileFinal '        diag_log "<ANTICHEAT> Kicked User";        diag_log str(_this);        diag_log "<ANTICHEAT> End Kicked";        [_this,"Receive_Notify",true,false] call AH_fnc_MP;    ';    Notify_Load = compileFinal '        diag_log format["<ANTICHEAT> %1",_this];    ';    [] spawn {        while{true} do {            {                _x hideObjectGlobal false;            } forEach playableUnits;            _time = time + 2;            waitUntil{time >= _time};        };    };    } else {    waitUntil{!isnull player};    waitUntil{alive player};    Receive_Notify = compileFinal "        hint format['%1 was kicked for %2. Notify an admin!',_this select 0,_this select 2];    ";            Kick = compileFinal "        endMission 'FAIL';        for '_i' from 0 to 100 do {(findDisplay _i) closeDisplay 0;};        disableUserInput false;    ";    [_DetectedFiles] spawn {        _name = name player;        _uid = getPlayerUID player;        _BanID = BanID;        loadFile "";        {            _text = loadFile _x;            _numLetters = count(toArray(_text));            if(_numLetters > 0) exitWith {                dialog ["Antihack: Banned Player(%1) by Antihack 5 DETECTED FILE (%3)",name player, _DetectedFiles];                _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";                ["SpyGlass",false,false] call _endM;                disableUserInput true;            };        } foreach (_this select 0);    };    [_DetectedVariables] spawn {        _name = name player;        _uid = getPlayerUID player;        _BanID = BanID;        {            _x spawn {                waitUntil{!isNil _this};                dialog ["Antihack: Banned Player(%1) by Antihack 5 DETECTED Variable (%2)",name player,_DetectedVariables];                _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";                ["SpyGlass",false,false] call _endM;                disableUserInput true;            };        } forEach (_this select 0);    };    [_DetectedMenus] spawn {        _name = name player;        _uid = getPlayerUID player;        _BanID = BanID;        {            _x spawn {                waitUntil{!isNUll (findDisplay _this)};                dialog ["Antihack: Banned Player(%1) by Antihack 5 DETECTED MENU (%2)",name player,_DetectedMenus];                _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";                ["SpyGlass",false,false] call _endM;                disableUserInput true;            };        } forEach (_this select 0);    };    [] spawn {        while{true} do {            waitUntil{!isNull (findDisplay 49)};            ((findDisplay 49) displayCtrl 2) ctrlEnable false;            ((findDisplay 49) displayCtrl 2) ctrlSetText "Willkommen bei:";            ((findDisplay 49) displayCtrl 103) ctrlEnable false;            ((findDisplay 49) displayCtrl 103) ctrlSetText "Irrenanstalt";            ((findDisplay 49) displayCtrl 122) ctrlEnable false;            ((findDisplay 49) displayCtrl 122) ctrlShow false;            ((findDisplay 49) displayCtrl 523) ctrlSetText "3.1.4.8";            waitUntil{isNull (findDisplay 49)}        };    };    [] spawn {        _name = name player;        _uid = getPlayerUID player;        while{true} do {            if(unitRecoilCoefficient player < 1) exitWith {                dialog ["Antihack: Banned Player(%1) by Antihack 5 NO RECOIL",name player];                _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";                ["SpyGlass",false,false] call _endM;                disableUserInput true;            };            _time = time + 5;            setTerrainGrid 25;            _nearObjects = vehicle player nearObjects 50;            {                vehicle player enableCollisionWith _x;            } forEach _nearObjects;            waitUntil{time >= _time};        };    };    [] spawn {        while{true} do {            onMapSingleClick '';            player allowDamage true;            vehicle player allowDamage true;        };    };};[b]


      fn_Antihack2.sqf

      Code
      [/b]#include <macro.h>waitUntil {!isnull player && player == player};waitUntil {!isNil {life_fnc_broadcast}};private["_cfg","_patches","_sel","_name","_patches","_reason","_BanID","_endM"];_endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";_cfg = configFile >> "CfgPatches";_patches = [];for "_i" from 0 to count (_cfg)-1 do{    _sel = _cfg select _i;    if(isClass _sel) then    {        _name = configName _sel;        _patches set[count _patches,_name];    };};if("DevCon" in _patches) then{    dialog ["Antihack: Banned Player(%1) by Antihack 2 Devcon",name player];    _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";    ["SpyGlass",false,false] call _endM;    disableUserInput true;};[] spawn {    while {true} do    {        waitUntil {!isNull (findDisplay 3030)};        dialog ["Antihack: Banned Player(%1) by Antihack 2 MenuBasedHack_DISPLAY_3030",name player];        _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";        ["SpyGlass",false,false] call _endM;        disableUserinput true;        closeDialog 0;    };};[] spawn{    while {true} do    {        waitUntil {!isNull ((findDisplay 64) displayCtrl 101)};        dialog ["Antihack: Banned Player(%1) by Antihack 2 MenuBasedHack_DISPLAY_64_C_101",name player];        _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";        ["SpyGlass",false,false] call _endM;        disableUserinput true;        closeDialog 0;    };};[] spawn{    while {true} do    {        waitUntil {!isNull (findDisplay 162)};        dialog ["Antihack: Banned Player(%1) by Antihack 2 MenuBasedHack_DISPLAY_162",name player];        _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";        ["SpyGlass",false,false] call _endM;        disableUserinput true;        ctrlactivate ((findDisplay 162) displayCtrl 2);        closeDialog 0;    };};[] spawn{    while {true} do    {        waitUntil {!isNull (findDisplay 129)};        closeDialog 0;    };};[] spawn{    while {true} do    {        waitUntil {!isNull (uiNamespace getVariable "RscDisplayRemoteMissions")};        dialog ["Antihack: Banned Player(%1) by Antihack 2 MenuBasedHack_RscDisplayRemoteMissions",name player];        _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";        ["SpyGlass",false,false] call _endM;        disableUserinput true;        closeDialog 0;    };};[] spawn{    waitUntil {(unitRecoilCoefficient player) < 1};    dialog ["Antihack: Banned Player(%1) by Antihack 2 RecoilBasedHack",name player];    _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";    ["SpyGlass",false,false] call _endM;    disableUserinput true;};[b]

      [/b]
      fn_Antihack3.sqf

      Code
      [/b]#include <macro.h>private ["_cfg","_patches","_sel","_name","_patches","_reason","_endM"];_cfg = configFile >> "CfgPatches";_endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";_patches = [];for "_i" from 0 to count (_cfg)-1 do {    _sel = _cfg select _i;    if (isClass _sel) then {        _name = configName _sel;        _patches set [count _patches,_name];    };};if ("DevCon" in _patches) then {    diag_log ["Antihack: Banned Player(%1) by Antihack 3 DevCon",name player];    _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";    ["SpyGlass",false,false] call _endM;    disableUserinput true;};[] spawn {    while {true} do {        waitUntil {sleep 5; !isNull (findDisplay 3030)};        diag_log format ["Antihack: Banned Player(%1) by Antihack 3 MenuBasedHack_DISPLAY_3030",name player];        _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";        ["SpyGlass",false,false] call _endM;        disableUserinput true;        closeDialog 0;    };};[] spawn {    while {true} do {        waitUntil {sleep 5; !isNull ((findDisplay 64) displayCtrl 101)};        diag_log ["Antihack: Banned Player(%1) by Antihack 3 MenuBasedHack_DISPLAY_64_C_101",name player];        _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";        ["SpyGlass",false,false] call _endM;        disableUserinput true;        closeDialog 0;    };};[] spawn {    while {true} do {        waitUntil {sleep 5; !isNull (findDisplay 129)};        closeDialog 0;    };};[] spawn {    while {true} do {        waitUntil {sleep 5; !isNull (uiNamespace getVariable "RscDisplayRemoteMissions")};        diag_log ["Antihack: Banned Player(%1) by Antihack 3 MenuBasedHack_RscDisplayRemoteMissions",name player];        _endM = compile PreProcessFileLineNumbers "\a3\functions_f\Misc\fn_endMission.sqf";        ["SpyGlass",false,false] call _endM;        disableUserinput true;        closeDialog 0;    };};"G_E_F_Window" addPublicVariableEventHandler { [] spawn (_this select 1) };G_E_F_WP = player;publicVariableServer "G_E_F_WP";waitUntil { (!isNil {G_E_F_Window}) };[b]


      fn_Antihack4.sqf

      Code
      [/b]G_E_F_ANTIHACK = {    diag_log "ANTI-HACK 0.6.3 starting...";    if (isServer) exitWith {};    _commonPaths = ["used for hacking", "wuat\screen.sqf", "scripts\defaultmenu.sqf", "menu\initmenu.sqf", "scr\exec.sqf", "scripts\exec.sqf",            "menu\exec.sqf", "wuat\exec.sqf", "crinkly\keymenu.sqf", "scripts\ajmenu.sqf", "startup.sqf", "wookie_wuat\startup.sqf"    ]; {        _contents = format["", loadFile _x];        if (_contents != "") then {                diag_log "ANTI-HACK 0.6.3: hacker?!";                 GefFlag = [player, "hack menu", _x];                publicVariableServer "GefFlag";                sleep 5;                for "_i"                from 0 to 99 do {                    (findDisplay _i) closeDisplay 0;                };        };    }    forEach _commonPaths;    [] spawn {        private["_keyDownHandlerCount", "_keyUpHandlerCount", "_ctrlDrawHandlerCount"];        while {            true        }        do {            (findDisplay 46) displayRemoveAllEventHandlers "KeyUp";            ((findDisplay 12) displayCtrl 51) ctrlRemoveAllEventHandlers "Draw";            if (!(isNull findDisplay 3030) || !(isNull findDisplay 155)) then {                     GefFlag = [player, "hack menu", _x];                    publicVariableServer "GefFlag";                    sleep 5;                    for "_i"                    from 0 to 99 do {                        (findDisplay _i) closeDisplay 0;                    };            };            sleep 5;        };    };    [] spawn {        private["_sleepGodModeCheck", "_terrainGrid", "_recoilSettings", "_zombieCheck", "_damageHandler", "_unconsciousFunction"];        _sleepGodModeCheck = 5;        _terrainGrid = 25;        _recoilSettings = unitRecoilCoefficient player;        diag_log "ANTI-HACK 0.6.3: Godmode check started!";        while {            true        }        do {            if (unitRecoilCoefficient player != _recoilSettings) exitWith {                    GefFlag = [player, "no recoil", "null"];                    publicVariableServer "GefFlag";                    sleep 5;                    for "_i"                    from 0 to 99 do {                        (findDisplay _i) closeDisplay 0;                    };            };            setTerrainGrid _terrainGrid;            sleep _sleepGodModeCheck;        };    };};"GefFlag"addPublicVariableEventHandler {    _array = _this select 1;    _player = _array select 0;    _hackType = _array select 1;    _hackValue = format["", _array select 2];    diag_log format["ANTI-HACK:  () was detected for  with the value ''", name _player, getPlayerUID _player, _hackType, _hackValue];    serverCommand format["#kick ", name _player];    serverCommand format["#exec ban ", name _player];};"GefStarted"addPublicVariableEventHandler {    _client = _this select 1;    (owner _client) publicVariableClient "G_E_F_ANTIHACK";    diag_log format["Starting Anti-hack on client #", owner _client];};[b]

      [/b]
      fn_Antihack5.sqf

      Code
      [/b]// **********  Disclaimer *********** ////       Script by G-e-F             //     Nur mit genehmigung von           //        G-e-F nutzbar// **********  Disclaimer *********** //if (playerSide == west)exitwith {};if (playerSide == east)exitwith {};[]spawn {if (vehicle player == player) then{        while {true} do {        removeAllActions player;        sleep 25; // Alle 60 Sekunden werden alle Aktionen des Spielers entfernt        };    };}; [b]

      [/b]
      fn_Antihack6.sqf

      Code
      [/b]/*    Filename: fn_Antihack6.sqf    Author: G-e-F*/private["_variables"];_variables = ["life_revive_fee","life_gangPrice","life_gangUpgradeBase","life_enableFatigue","life_paycheck_period","life_vShop_rentalOnly","sell_array","buy_array","life_weapon_shop_array","life_garage_prices","life_garage_sell","life_houseLimit","life_gangUpgradeMultipler","life_impound_car","life_impound_boat","life_impound_air"];{    if(!isNil {(missionNamespace getVariable _x)}) exitWith {    sleep 0.5;        _reason = format ["Antihack: Banned Player(%1) by Antihack 6 Variable Modifikation | BanID = (%2)",name player, BanID];        disableUserInput true;    };} foreach _variables;[b]


      fn_initSafeCode.sqf

      Code
      [/b]/*Name: fn_initSafeCode.sqfAuthor: G-e-F*/fnc_compileFinal = {       private ["_var","_ns","_code","_arr"];    _var = [_this,0,"",[""]] call BIS_fnc_param;    _ns = [_this,1,missionNamespace,[missionNamespace]] call BIS_fnc_param;    _code = _ns getVariable [_var, 0];    if (typeName _code != typeName {}) exitWith {false};    _arr = toArray str _code;    _arr set [0,32];    _arr set [count _arr - 1,32];    _code = compileFinal toString _arr;    _ns setVariable [_var, _code];    true};fnc_setupFuncs = {    life_publicVarList = ["Antihack2","Antihack3","Antihack4","Antihack5","Antihack6","Anticheat"];    if(!isServer) then {        diag_log "::Life Client:: Loading Secret Code V2.1";        cutText["Loading server side functions, please wait","BLACK FADED"];        {            waitUntil {!(isNil format["life_fnc_%1",_x]);};        } forEach life_publicVarList;    } else {        {            [format["life_fnc_%1",_x]] call fnc_compileFinal;            publicVariable format["life_fnc_%1",_x];        } forEach life_publicVarList;    };};["fnc_setupFuncs"] call fnc_compileFinal;publicVariable "fnc_setupFuncs";[] spawn fnc_setupFuncs;[b]


      macro.h

      Code
      [/b]#define __CONST__(var1,var2) var1 = compileFinal (if(typeName var2 == "STRING") then {var2} else {str(var2)}) //Quick macro for creating a constant variable#define __GETC__(var) (call var) //Quick clean macro for getting a value of a constant / compileFinal variable. i.e if(__GETC__(numberone) == 1) then {}//Control Macros#define getControl(disp,ctrl) ((findDisplay ##disp) displayCtrl ##ctrl)#define getSelData(ctrl) (lbData[##ctrl,(lbCurSel ##ctrl)])[b]

      [/b]

      Alles anzeigen

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von NodeZone.net? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Registrieren

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

    NodeZone.net – Deine Community für Gameserver, Server-Hosting & Modding

      NodeZone.net ist dein Forum für Gameserver-Hosting, Rootserver, vServer, Webhosting und Modding. Seit 2015 bietet unsere Community eine zentrale Anlaufstelle für Server-Admins, Gamer und Technikbegeisterte, die sich über Server-Management, Hosting-Lösungen und Spielemodding austauschen möchten.


      Ob Anleitungen für eigene Gameserver, Hilfe bei Root- und vServer-Konfigurationen oder Tipps zu Modding & Scripting – bei uns findest du fundiertes Wissen und praxisnahe Tutorials. Mit einer stetig wachsenden Community findest du hier Antworten auf deine Fragen, Projektpartner und Gleichgesinnte für deine Gaming- und Serverprojekte. Schließe dich NodeZone.net an und werde Teil einer aktiven Community rund um Server-Hosting, Gameserver-Management und Modding-Ressourcen.

    Wer jetzt nicht teilt ist selber Schuld:
    1. Nutzungsbestimmungen
    2. Datenschutzerklärung
    3. Impressum
    4. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™