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
Di: 08 Juli 2025
  • Anmelden oder registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • 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. Forum
    3. Gameserver & Hosting
    4. ArmA Series - ArmA 3 / Reforger
    5. Hilfeforum

    Autos weiter übern Boden Spawnen?

    • BattleSheep
    • 1. September 2017 um 05:22
    • Erledigt
    • BattleSheep
      Schüler
      Reaktionen
      2
      Trophäen
      8
      Beiträge
      105
      • 1. September 2017 um 05:22
      • #1

      Hey Leute,

      Also mal wieder ein Weiteres Problem bei unserem neuen Krankenhaus Spawnen die Autos aus der Garage oder Shop unterm Boden.

      Nun gibt es ja z.b. in der fn_vehicleShopBuy (standard)

      Code
      if((life_veh_shop select 0) == "med_air_hs") then {
          if(count(nearestObjects[(getMarkerPos _spawnPoints),["Air"],35]) == 0) exitWith {_spawnPoint = _spawnPoints};
      } else {
          //Check if there is multiple spawn points and find a suitable spawnpoint.
          if(typeName _spawnPoints == typeName []) then {
              //Find an available spawn point.
              {if(count(nearestObjects[(getMarkerPos _x),["Car","Ship","Air"],5]) == 0) exitWith {_spawnPoint = _x};} foreach _spawnPoints;
          } else {
              if(count(nearestObjects[(getMarkerPos _spawnPoints),["Car","Ship","Air"],5]) == 0) exitWith {_spawnPoint = _spawnPoints};
          };
      };
      Alles anzeigen

      Das der Heli aufm Dach vom Krankenhaus gespawnt wird.

      Ich habe jetzt folgendes Probiert da das immer nur in unserem Krankenhaus passiert ne ne if bedingung einzufügen.

      Code
      if ((life_veh_shop select 0) == "med_air_hs") then {
          if (nearestObjects[(getMarkerPos _spawnPoints),["Air"],35] isEqualTo []) exitWith {_spawnPoint = _spawnPoints};
      } 
      else 
      {
          if ((life_veh_shop select 0) == "med_shop_g") then 
          {
              if (nearestObjects[(getMarkerPos _spawnPoints),["Car"],8] isEqualTo []) exitWith {_spawnPoint = _spawnPoints};
          }
          else
          {
          //Check if there is multiple spawn points and find a suitable spawnpoint.
          if (_spawnPoints isEqualType []) then 
          {
              //Find an available spawn point.
              {
                  if ((nearestObjects[(getMarkerPos _x),["Car","Ship","Air"],5]) isEqualTo []) exitWith {_spawnPoint = _x};
                  true
              } count _spawnPoints;
          } else 
          {
              if (nearestObjects[(getMarkerPos _spawnPoints),["Car","Ship","Air"],5] isEqualTo []) exitWith {_spawnPoint = _spawnPoints};
          };
          };
          };
      Alles anzeigen

      Nur leider erscheinen jetzt im Shop keine Fahrzeuge mehr.


      Init des Shops:

      Code
      this enableSimulation false; this allowDamage false; this addAction[format ["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> "mAir" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mAir" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mAir",0,false,false,"",' !license_med_mAir && playerSide isEqualTo independent ']; this addAction[localize"STR_MAR_EMS_Item_Shop",life_fnc_weaponShopMenu,"med_basic"]; this addAction[localize"STR_MAR_EMS_Clothing_Shop",life_fnc_clothingMenu,"med_clothing"]; this addAction[localize"STR_MAR_W_E_Vehicle Shop",life_fnc_vehicleShopMenu,["med_shop_g",independent,"med_car_1","med","Kavala Hospital"]]; this addAction[localize"STR_MAR_Helicopter_Shop", life_fnc_vehicleShopMenu,["med_air_hs",independent,"med_air_1","med","Kavala Hospital"]]; this addAction[localize"STR_MAR_W_Car_Garage",  {   if (life_HC_isActive) then {    [getPlayerUID player,playerSide,"Car",player] remoteExecCall ["HC_fnc_getVehicles",HC_Life]; } else { [getPlayerUID player,playerSide,"Car",player] remoteExecCall ["TON_fnc_getVehicles",2];};  createDialog "Life_impound_menu";  disableSerialization;  ctrlSetText[2802,"Fetching Vehicles...."];  life_garage_sp = "med_car_1"; life_garage_type = "Car"; },"",0,false,false,"",'playerSide isEqualTo independent']; this addAction[localize"STR_MAR_Helicopter_Garage",  {   if (life_HC_isActive) then {    [getPlayerUID player,playerSide,"Air",player] remoteExecCall ["HC_fnc_getVehicles",HC_Life]; } else { [getPlayerUID player,playerSide,"Air",player] remoteExecCall ["TON_fnc_getVehicles",2];};  createDialog "Life_impound_menu";  disableSerialization;  ctrlSetText[2802,"Fetching Vehicles...."];  life_garage_sp = "med_air_1"; life_garage_type = "Air"; },"",0,false,false,"",'playerSide isEqualTo independent ']; this addAction[localize"STR_MAR_Store_vehicle_in_Garage",life_fnc_storeVehicle,"",0,false,false,"",'!life_garage_store']; this addAction[localize"STR_Shops_Market",life_fnc_virt_menu,"med_market",1.5,false,false,"",' isNull objectParent player && player distance _target < 5 && playerSide isEqualTo independent ']; this setObjectTextureGlobal [0,"textures\medic_uniform.jpg"];

      Kann mir wer sagen woran das liegt oder mir sagen wie ich es sonst hinbekommen könnte? ^^

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 1. September 2017 um 09:14
      • #2

      Moin,

      muss ebenfalls in der VehicleShopBuy geändert werden, da man die Marker nicht über den Boden legen kann habe ich das so implementiert ;)

      C
      if ((life_veh_shop select 0) == "med_air_hs") then {
          _vehicle = createVehicle [_className,[0,0,999],[], 0, "NONE"];
          waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
          _vehicle allowDamage false;
          _hs = nearestObjects[getMarkerPos _spawnPoint,["Land_Hospital_side2_F"],50] select 0;
          if (_spawnPoint isEqualTo "air_g_med_pyrgos" || _spawnPoint isEqualTo "air_med") then { //falls der Spawnpunkt nicht auf dem Krankenhaus sein soll, sondern auf dem Boden
                  _hs = getMarkerPos _spawnPoint;
                  _vehicle setDir (markerDir _spawnPoint);
                  _vehicle setPos _hs;
          } else {    
              _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
          };
          sleep 0.6;
      } else {
          _pos = getMarkerPos _spawnPoint; // Auslesen des Spawnpunktes
          if (_spawnPoint isEqualTo "dein_spawnmarker") then { //Bitte hier deinen Spawnmarker eintragen
                  _pos = [_pos select 0,_pos select 1,6.0]; //Höhe kann man im Editor mit einen Schild ermitteln, einfach setzen und bei den Attributen den Z-Wert übernehmen. Hier ist die Höhenänderung. In diesem Fall 6 Meter über dem Boden.
          };
          _vehicle = createVehicle [_className, (getMarkerPos _spawnPoint), [], 0, "NONE"];
          waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
          _vehicle allowDamage false; //Temp disable damage handling..
          _vehicle setPos _pos; //Hier wird die _pos übernommen, inklusive der Höhe
          _vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint));
          _vehicle setDir (markerDir _spawnPoint);
      };
      Alles anzeigen

      So ich habe Dir jetzt mal die Änderungen der VehicleShopBuy komplett eingebaut. Bitte die Spawnpunkte in den if-Abfragen auf deine Definition ändern. Es sind auch die Spawns für die Medics mit dabei! Wie ich das in dem anderem Thread schon gepostet habe!

      Gruß,

      moeck

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • BattleSheep
      Schüler
      Reaktionen
      2
      Trophäen
      8
      Beiträge
      105
      • 1. September 2017 um 18:30
      • #3

      Ist mein Ansatz sonst so richtig gewesen? :)

      Sehe bei dir aber nur

      1x if

      else

      und danach noch ein: else

      soll das so oder ist das nen flüchtigkeitsfehler?

      Zitat von moeck
      Code
      if ((life_veh_shop select 0) == "med_air_hs") then {
       _vehicle = createVehicle [_className,[0,0,999],[], 0, "NONE"];
       waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
       _vehicle allowDamage false;
       _hs = nearestObjects[getMarkerPos _spawnPoint,["Land_Hospital_side2_F"],50] select 0;
          if (_spawnPoint isEqualTo "air_g_med_pyrgos" || _spawnPoint isEqualTo "air_med") then { //falls der Spawnpunkt nicht auf dem Krankenhaus sein soll, sondern auf dem Boden
       _hs = getMarkerPos _spawnPoint;
       _vehicle setDir (markerDir _spawnPoint);
       _vehicle setPos _hs;
       } else { 
       _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
       };
       sleep 0.6;
      } else {
          _pos = getMarkerPos _spawnPoint; // Auslesen des Spawnpunktes
          if (_spawnPoint isEqualTo "dein_spawnmarker") then { //Bitte hier deinen Spawnmarker eintragen
       _pos = [_pos select 0,_pos select 1,6.0]; //Höhe kann man im Editor mit einen Schild ermitteln, einfach setzen und bei den Attributen den Z-Wert übernehmen. Hier ist die Höhenänderung. In diesem Fall 6 Meter über dem Boden.
       };
       _vehicle = createVehicle [_className, (getMarkerPos _spawnPoint), [], 0, "NONE"];
       waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
       _vehicle allowDamage false; //Temp disable damage handling..
       _vehicle setPos _pos; //Hier wird die _pos übernommen, inklusive der Höhe
       _vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint));
       _vehicle setDir (markerDir _spawnPoint);
      };
      Alles anzeigen
    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 1. September 2017 um 19:09
      • #4

      so hier noch mal ein wenig anders formatiert

      C
      if ((life_veh_shop select 0) == "med_air_hs") then {
           _vehicle = createVehicle [_className,[0,0,999],[], 0, "NONE"];
           waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
           _vehicle allowDamage false;
           _hs = nearestObjects[getMarkerPos _spawnPoint,["Land_Hospital_side2_F"],50] select 0;
           if (_spawnPoint isEqualTo "air_g_med_pyrgos" || _spawnPoint isEqualTo "air_med") then { //falls der Spawnpunkt nicht auf dem Krankenhaus sein soll, sondern auf dem Boden
               _hs = getMarkerPos _spawnPoint;
               _vehicle setDir (markerDir _spawnPoint);
               _vehicle setPos _hs;
           } else { 
               _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
           };
           sleep 0.6;
      } else {
          _pos = getMarkerPos _spawnPoint; // Auslesen des Spawnpunktes
          if (_spawnPoint isEqualTo "dein_spawnmarker") then { //Bitte hier deinen Spawnmarker eintragen
               _pos = [_pos select 0,_pos select 1,6.0]; //Höhe kann man im Editor mit einen Schild ermitteln, einfach setzen und bei den Attributen den Z-Wert übernehmen. Hier ist die Höhenänderung. In diesem Fall 6 Meter über dem Boden.
          };
           _vehicle = createVehicle [_className, (getMarkerPos _spawnPoint), [], 0, "NONE"];
           waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
           _vehicle allowDamage false; //Temp disable damage handling..
           _vehicle setPos _pos; //Hier wird die _pos übernommen, inklusive der Höhe
           _vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint));
           _vehicle setDir (markerDir _spawnPoint);
      };
      Alles anzeigen

      das fehlende if ist in zeile 6

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • BattleSheep
      Schüler
      Reaktionen
      2
      Trophäen
      8
      Beiträge
      105
      • 1. September 2017 um 19:14
      • #5

      So ich poste nochmal die Kompletten datein denn bei dem von moeck verstehe ich das mit dem Hospital nicht, der aufbau unsere fn_vehicleShopBuy.sqf ist doch minimal anders.

      Hier die fn_vehicleShopBuy.sqf (unbearbeitet)

      C
      #include "..\..\script_macros.hpp"
      /*
          File: fn_vehicleShopBuy.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Does something with vehicle purchasing.
      */
      
      params [["_mode",true,[true]]];
      
      if ((lbCurSel 2302) isEqualTo -1) exitWith {hint localize "STR_Shop_Veh_DidntPick";closeDialog 0;};
      
      private _className = lbData[2302,(lbCurSel 2302)];
      private _vIndex = lbValue[2302,(lbCurSel 2302)];
      private _vehicleList = M_CONFIG(getArray,"CarShops",(life_veh_shop select 0),"vehicles");
      private _shopSide = M_CONFIG(getText,"CarShops",(life_veh_shop select 0),"side");
      
      
      private _initalPrice = M_CONFIG(getNumber,"LifeCfgVehicles",_className,"price");
      
      private "_buyMultiplier";
      private "_rentMultiplier";
      
      switch (playerSide) do {
          case civilian: {
              _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN");
              _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_CIVILIAN");
          };
          case west: {
              _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP");
              _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_COP");
          };
          case independent: {
              _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC");
              _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_MEDIC");
          };
          case east: {
              _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR");
              _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_OPFOR");
          };
      };
      
      private "_purchasePrice";
      
      if (_mode) then {
          _purchasePrice = round(_initalPrice * _buyMultiplier);
      } else {
          _purchasePrice = round(_initalPrice * _rentMultiplier);
      };
      
      private _conditions = M_CONFIG(getText,"LifeCfgVehicles",_className,"conditions");
      
      if !([_conditions] call life_fnc_levelCheck) exitWith {hint localize "STR_Shop_Veh_NoLicense";};
      
      private _colorIndex = lbValue[2304,(lbCurSel 2304)];
      
      if (_purchasePrice < 0) exitWith {closeDialog 0;}; //Bad price entry
      if (CASH < _purchasePrice) exitWith {hint format [localize "STR_Shop_Veh_NotEnough",[_purchasePrice - CASH] call life_fnc_numberText];closeDialog 0;};
      
      private _spawnPoints = life_veh_shop select 1;
      private _spawnPoint = "";
      
      if ((life_veh_shop select 0) == "med_air_hs") then {
          if (nearestObjects[(getMarkerPos _spawnPoints),["Air"],35] isEqualTo []) exitWith {_spawnPoint = _spawnPoints};
      } else {
          //Check if there is multiple spawn points and find a suitable spawnpoint.
          if (_spawnPoints isEqualType []) then {
              //Find an available spawn point.
              {
                  if ((nearestObjects[(getMarkerPos _x),["Car","Ship","Air"],5]) isEqualTo []) exitWith {_spawnPoint = _x};
                  true
              } count _spawnPoints;
          } else {
              if (nearestObjects[(getMarkerPos _spawnPoints),["Car","Ship","Air"],5] isEqualTo []) exitWith {_spawnPoint = _spawnPoints};
          };
      };
      
      
      if (_spawnPoint isEqualTo "") exitWith {hint localize "STR_Shop_Veh_Block"; closeDialog 0;};
      CASH = CASH - _purchasePrice;
      [0] call SOCK_fnc_updatePartial;
      hint format [localize "STR_Shop_Veh_Bought",getText(configFile >> "CfgVehicles" >> _className >> "displayName"),[_purchasePrice] call life_fnc_numberText];
      
      //Spawn the vehicle and prep it.
      
      private "_vehicle";
      
      if ((life_veh_shop select 0) == "med_air_hs") then {
          _vehicle = createVehicle [_className,[0,0,999],[], 0, "NONE"];
          waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
          _vehicle allowDamage false;
          _hs = nearestObjects[getMarkerPos _spawnPoint,["Land_Hospital_side2_F"],50] select 0;
          _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
          sleep 0.6;
      } else {
          _vehicle = createVehicle [_className, (getMarkerPos _spawnPoint), [], 0, "NONE"];
          waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
          _vehicle allowDamage false; //Temp disable damage handling..
          _vehicle setPos (getMarkerPos _spawnPoint);
          _vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint));
          _vehicle setDir (markerDir _spawnPoint);
      };
      
      _vehicle lock 2;
      
      [_vehicle,_colorIndex] call life_fnc_colorVehicle;
      [_vehicle] call life_fnc_clearVehicleAmmo;
      [_vehicle,"trunk_in_use",false,true] remoteExecCall ["TON_fnc_setObjVar",RSERV];
      [_vehicle,"vehicle_info_owners",[[getPlayerUID player,profileName]],true] remoteExecCall ["TON_fnc_setObjVar",RSERV];
      
      _vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
      
      //Side Specific actions.
      switch (playerSide) do {
          case west: {
              [_vehicle,"cop_offroad",true] spawn life_fnc_vehicleAnimate;
          };
          case civilian: {
              if ((life_veh_shop select 2) isEqualTo "civ" && {_className == "B_Heli_Light_01_F"}) then {
                  [_vehicle,"civ_littlebird",true] spawn life_fnc_vehicleAnimate;
              };
          };
          case independent: {
              [_vehicle,"med_offroad",true] spawn life_fnc_vehicleAnimate;
          };
      };
      
      _vehicle allowDamage true;
      
      life_vehicles pushBack _vehicle;
      
      //Always handle key management by the server
      [getPlayerUID player,playerSide,_vehicle,1] remoteExecCall ["TON_fnc_keyManagement",RSERV];
      
      if (_mode) then {
          if !(_className in LIFE_SETTINGS(getArray,"vehicleShop_rentalOnly")) then {
              if (life_HC_isActive) then {
                  [(getPlayerUID player),playerSide,_vehicle,_colorIndex] remoteExecCall ["HC_fnc_vehicleCreate",HC_Life];
              } else {
                  [(getPlayerUID player),playerSide,_vehicle,_colorIndex] remoteExecCall ["TON_fnc_vehicleCreate",RSERV];
              };
          };
      };
      
      if (LIFE_SETTINGS(getNumber,"player_advancedLog") isEqualTo 1) then {
          if (LIFE_SETTINGS(getNumber,"battlEye_friendlyLogging") isEqualTo 1) then {
              advanced_log = format [localize "STR_DL_AL_boughtVehicle_BEF",_className,[_purchasePrice] call life_fnc_numberText,[CASH] call life_fnc_numberText,[BANK] call life_fnc_numberText];
          } else {
              advanced_log = format [localize "STR_DL_AL_boughtVehicle",profileName,(getPlayerUID player),_className,[_purchasePrice] call life_fnc_numberText,[CASH] call life_fnc_numberText,[BANK] call life_fnc_numberText];
          };
          publicVariableServer "advanced_log";
      };
      
      closeDialog 0; //Exit the menu.
      true;
      Alles anzeigen


      Und die Init des NPC's (unbearbeitet):

      C
      this enableSimulation false; this allowDamage false; this addAction[format ["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> "mAir" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "mAir" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"mAir",0,false,false,"",' !license_med_mAir && playerSide isEqualTo independent ']; this addAction[localize"STR_MAR_EMS_Item_Shop",life_fnc_weaponShopMenu,"med_basic"]; this addAction[localize"STR_MAR_EMS_Clothing_Shop",life_fnc_clothingMenu,"med_clothing"]; this addAction[localize"STR_MAR_W_E_Vehicle Shop",life_fnc_vehicleShopMenu,["med_shop",independent,"med_car_1","med","Kavala Hospital"]]; this addAction[localize"STR_MAR_Helicopter_Shop", life_fnc_vehicleShopMenu,["med_air_hs",independent,"med_air_1","med","Kavala Hospital"]]; this addAction[localize"STR_MAR_W_Car_Garage",  {   if (life_HC_isActive) then {    [getPlayerUID player,playerSide,"Car",player] remoteExecCall ["HC_fnc_getVehicles",HC_Life]; } else { [getPlayerUID player,playerSide,"Car",player] remoteExecCall ["TON_fnc_getVehicles",2];};  createDialog "Life_impound_menu";  disableSerialization;  ctrlSetText[2802,"Fetching Vehicles...."];  life_garage_sp = "med_car_1"; life_garage_type = "Car"; },"",0,false,false,"",'playerSide isEqualTo independent']; this addAction[localize"STR_MAR_Helicopter_Garage",  {   if (life_HC_isActive) then {    [getPlayerUID player,playerSide,"Air",player] remoteExecCall ["HC_fnc_getVehicles",HC_Life]; } else { [getPlayerUID player,playerSide,"Air",player] remoteExecCall ["TON_fnc_getVehicles",2];};  createDialog "Life_impound_menu";  disableSerialization;  ctrlSetText[2802,"Fetching Vehicles...."];  life_garage_sp = "med_air_1"; life_garage_type = "Air"; },"",0,false,false,"",'playerSide isEqualTo independent ']; this addAction[localize"STR_MAR_Store_vehicle_in_Garage",life_fnc_storeVehicle,"",0,false,false,"",'!life_garage_store']; this addAction[localize"STR_Shops_Market",life_fnc_virt_menu,"med_market",1.5,false,false,"",' isNull objectParent player && player distance _target < 5 && playerSide isEqualTo independent ']; this setObjectTextureGlobal [0,"textures\medic_uniform.jpg"];


      Ah sorry hab es eben erst gesehen ^^

    • BattleSheep
      Schüler
      Reaktionen
      2
      Trophäen
      8
      Beiträge
      105
      • 1. September 2017 um 19:21
      • #6

      Also Problem ist wenn ich meinen ich meinen shop von med_shop auf med_shop_g (g für ground) ändere dann habe ich keine Fahrzeuge in meinem Shop genauso müsste ich ja dann auch den Spawn der Garage irgendwie noch höher legen.

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 1. September 2017 um 19:25
      • #7

      so hier nochmal deine komplette Datei inklusive der Änderung!

      C
      #include "..\..\script_macros.hpp"
      /*
       File: fn_vehicleShopBuy.sqf
       Author: Bryan "Tonic" Boardwine
      
       Description:
       Does something with vehicle purchasing.
      */
      
      params [["_mode",true,[true]]];
      
      if ((lbCurSel 2302) isEqualTo -1) exitWith {hint localize "STR_Shop_Veh_DidntPick";closeDialog 0;};
      
      private _className = lbData[2302,(lbCurSel 2302)];
      private _vIndex = lbValue[2302,(lbCurSel 2302)];
      private _vehicleList = M_CONFIG(getArray,"CarShops",(life_veh_shop select 0),"vehicles");
      private _shopSide = M_CONFIG(getText,"CarShops",(life_veh_shop select 0),"side");
      
      
      private _initalPrice = M_CONFIG(getNumber,"LifeCfgVehicles",_className,"price");
      
      private "_buyMultiplier";
      private "_rentMultiplier";
      
      switch (playerSide) do {
       case civilian: {
       _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN");
       _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_CIVILIAN");
       };
       case west: {
       _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP");
       _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_COP");
       };
       case independent: {
       _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC");
       _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_MEDIC");
       };
       case east: {
       _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR");
       _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_OPFOR");
       };
      };
      
      private "_purchasePrice";
      
      if (_mode) then {
          _purchasePrice = round(_initalPrice * _buyMultiplier);
      } else {
          _purchasePrice = round(_initalPrice * _rentMultiplier);
      };
      
      private _conditions = M_CONFIG(getText,"LifeCfgVehicles",_className,"conditions");
      
      if !([_conditions] call life_fnc_levelCheck) exitWith {hint localize "STR_Shop_Veh_NoLicense";};
      
      private _colorIndex = lbValue[2304,(lbCurSel 2304)];
      
      if (_purchasePrice < 0) exitWith {closeDialog 0;}; //Bad price entry
      if (CASH < _purchasePrice) exitWith {hint format [localize "STR_Shop_Veh_NotEnough",[_purchasePrice - CASH] call life_fnc_numberText];closeDialog 0;};
      
      private _spawnPoints = life_veh_shop select 1;
      private _spawnPoint = "";
      
      if ((life_veh_shop select 0) == "med_air_hs") then {
       if (nearestObjects[(getMarkerPos _spawnPoints),["Air"],35] isEqualTo []) exitWith {_spawnPoint = _spawnPoints};
      } else {
       //Check if there is multiple spawn points and find a suitable spawnpoint.
       if (_spawnPoints isEqualType []) then {
       //Find an available spawn point.
       {
       if ((nearestObjects[(getMarkerPos _x),["Car","Ship","Air"],5]) isEqualTo []) exitWith {_spawnPoint = _x};
       true
       } count _spawnPoints;
       } else {
       if (nearestObjects[(getMarkerPos _spawnPoints),["Car","Ship","Air"],5] isEqualTo []) exitWith {_spawnPoint = _spawnPoints};
       };
      };
      
      
      if (_spawnPoint isEqualTo "") exitWith {hint localize "STR_Shop_Veh_Block"; closeDialog 0;};
      CASH = CASH - _purchasePrice;
      [0] call SOCK_fnc_updatePartial;
      hint format [localize "STR_Shop_Veh_Bought",getText(configFile >> "CfgVehicles" >> _className >> "displayName"),[_purchasePrice] call life_fnc_numberText];
      
      //Spawn the vehicle and prep it.
      
      private "_vehicle";
      /* -------------------- Orginal ----------------------------------------------------------
      if ((life_veh_shop select 0) == "med_air_hs") then {
          _vehicle = createVehicle [_className,[0,0,999],[], 0, "NONE"];
          waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
          _vehicle allowDamage false;
          _hs = nearestObjects[getMarkerPos _spawnPoint,["Land_Hospital_side2_F"],50] select 0;
          _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
          sleep 0.6;
      } else {
          _vehicle = createVehicle [_className, (getMarkerPos _spawnPoint), [], 0, "NONE"];
          waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
          _vehicle allowDamage false; //Temp disable damage handling..
          _vehicle setPos (getMarkerPos _spawnPoint);
          _vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint));
          _vehicle setDir (markerDir _spawnPoint);
      };
      */
      // moeck's Ersatz Anfang
      if ((life_veh_shop select 0) == "med_air_hs") then {
          _vehicle = createVehicle [_className,[0,0,999],[], 0, "NONE"];
          waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
          _vehicle allowDamage false;
          _hs = nearestObjects[getMarkerPos _spawnPoint,["Land_Hospital_side2_F"],50] select 0;
          if (_spawnPoint isEqualTo "air_g_med_pyrgos" || _spawnPoint isEqualTo "air_med") then { //falls der Spawnpunkt nicht auf dem Krankenhaus sein soll, sondern auf dem Boden
              _hs = getMarkerPos _spawnPoint;
              _vehicle setDir (markerDir _spawnPoint);
              _vehicle setPos _hs;
          } else { 
              _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
          };
          sleep 0.6;
      } else {
          _pos = getMarkerPos _spawnPoint; // Auslesen des Spawnpunktes
          //-------------- Nur interessant, wenn man einen Ziv Spawn in der Höhe verschieben möchte
          /*if (_spawnPoint isEqualTo "dein_spawnmarker") then { //Bitte hier deinen Spawnmarker eintragen
              _pos = [_pos select 0,_pos select 1,6.0]; //Höhe kann man im Editor mit einen Schild ermitteln, einfach setzen und bei den Attributen den Z-Wert übernehmen. Hier ist die Höhenänderung. In diesem Fall 6 Meter über dem Boden.
          };*/
          // -------------- das einfach auskommentieren
          _vehicle = createVehicle [_className, (getMarkerPos _spawnPoint), [], 0, "NONE"];
          waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
          _vehicle allowDamage false; //Temp disable damage handling..
          _vehicle setPos _pos; //Hier wird die _pos übernommen, inklusive der Höhe
          _vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint));
          _vehicle setDir (markerDir _spawnPoint);
      };
      //moeck's Ersatz Ende
      
      
      _vehicle lock 2;
      
      [_vehicle,_colorIndex] call life_fnc_colorVehicle;
      [_vehicle] call life_fnc_clearVehicleAmmo;
      [_vehicle,"trunk_in_use",false,true] remoteExecCall ["TON_fnc_setObjVar",RSERV];
      [_vehicle,"vehicle_info_owners",[[getPlayerUID player,profileName]],true] remoteExecCall ["TON_fnc_setObjVar",RSERV];
      
      _vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
      
      //Side Specific actions.
      switch (playerSide) do {
       case west: {
       [_vehicle,"cop_offroad",true] spawn life_fnc_vehicleAnimate;
       };
       case civilian: {
       if ((life_veh_shop select 2) isEqualTo "civ" && {_className == "B_Heli_Light_01_F"}) then {
       [_vehicle,"civ_littlebird",true] spawn life_fnc_vehicleAnimate;
       };
       };
       case independent: {
       [_vehicle,"med_offroad",true] spawn life_fnc_vehicleAnimate;
       };
      };
      
      _vehicle allowDamage true;
      
      life_vehicles pushBack _vehicle;
      
      //Always handle key management by the server
      [getPlayerUID player,playerSide,_vehicle,1] remoteExecCall ["TON_fnc_keyManagement",RSERV];
      
      if (_mode) then {
       if !(_className in LIFE_SETTINGS(getArray,"vehicleShop_rentalOnly")) then {
       if (life_HC_isActive) then {
       [(getPlayerUID player),playerSide,_vehicle,_colorIndex] remoteExecCall ["HC_fnc_vehicleCreate",HC_Life];
       } else {
       [(getPlayerUID player),playerSide,_vehicle,_colorIndex] remoteExecCall ["TON_fnc_vehicleCreate",RSERV];
       };
       };
      };
      
      if (LIFE_SETTINGS(getNumber,"player_advancedLog") isEqualTo 1) then {
       if (LIFE_SETTINGS(getNumber,"battlEye_friendlyLogging") isEqualTo 1) then {
       advanced_log = format [localize "STR_DL_AL_boughtVehicle_BEF",_className,[_purchasePrice] call life_fnc_numberText,[CASH] call life_fnc_numberText,[BANK] call life_fnc_numberText];
       } else {
       advanced_log = format [localize "STR_DL_AL_boughtVehicle",profileName,(getPlayerUID player),_className,[_purchasePrice] call life_fnc_numberText,[CASH] call life_fnc_numberText,[BANK] call life_fnc_numberText];
       };
       publicVariableServer "advanced_log";
      };
      
      closeDialog 0; //Exit the menu.
      true;
      Alles anzeigen

      Die Änderung ist in Zeile 105 -133! Ich hoffe das ist nun verständlich

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • BattleSheep
      Schüler
      Reaktionen
      2
      Trophäen
      8
      Beiträge
      105
      • 1. September 2017 um 19:53
      • #8

      Beim Kaufen geht es nun beim Ausparken aus der Garage nicht :/

      und könnte man das:

      Code
      _spawnPoint isEqualTo "air_g_med_pyrgos" ||

      rausnehmen?`

      Und wofür ist:

      Code
      if (_spawnPoint isEqualTo "air_g_med_pyrgos" || _spawnPoint isEqualTo "air_med") then { //falls der Spawnpunkt nicht auf dem Krankenhaus sein soll, sondern auf dem Boden
       _hs = getMarkerPos _spawnPoint;
       _vehicle setDir (markerDir _spawnPoint);
       _vehicle setPos _hs;
       }

      jetzt genau? sollte der Spawnpunkt "air_med" sein auf welche höhe würde er dann spawnen?

      2 Mal editiert, zuletzt von BattleSheep (1. September 2017 um 20:04)

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 1. September 2017 um 20:14
      • #9

      Also "air_g_med_pyrgos" und "air_med" sind 2 karten marker. Die musst du natürlich ersetzen wenn deine Spawnpunkte anders heissen. Beide spawnen auf dem boden. Falls du die Höhe ein stellen möchtest dann geht das wie folgt.

      Code
      if (_spawnPoint isEqualTo "air_med") then { //falls der Spawnpunkt nicht auf dem Krankenhaus sein soll, sondern auf dem Boden
       _hs = getMarkerPos _spawnPoint;
      _hs = [_hs select 0,_hs select 1,6.0]; //6 steht für die höhe
       _vehicle setDir (markerDir _spawnPoint);
       _vehicle setPos _hs;
       } else {

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • BattleSheep
      Schüler
      Reaktionen
      2
      Trophäen
      8
      Beiträge
      105
      • 1. September 2017 um 20:15
      • #10

      Ne idee was den Spawn an der Garage angeht?

      Gleicher Spawn beim Kaufen steht er perfekt, beim Ausparken weiterhin unter der erde.

    Registrieren oder Einloggen

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

    Registrieren

    Benutzer online in diesem Thema

    • 1 Besucher

    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™