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
Fr: 04 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. Tutorials & Releases

    ACE 3 Items kaufbar machen

      • Altis Life
    • Azoni
    • 15. April 2016 um 20:43
    • Minotot
      Frischling
      Trophäen
      9
      Beiträge
      2
      • 14. Juli 2017 um 02:00
      • #41

      Jopp auch noch mal von mir, großes großes DANKE!

      Funktioniert in der 5.0 super!

    • Harti2000
      Kenner
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      319
      Bilder
      74
      • 7. Oktober 2017 um 04:06
      • #42

      Hay, ich habe jetzt nach ca 1 H endlich ace zum Laufen bekommen,


      wer es immer noch nicht hin bekommen hat,

      der kann dies alles übernehmen.


      fn_handleItem.sqf

      #include "..\..\script_macros.hpp"

      /*

      File: fn_handleItem.sqf

      Author: Bryan "Tonic" Boardwine

      Description

      Main gear handling functionality.

      */

      private ["_item","_details","_bool","_ispack","_items","_isgun","_ongun","_override","_toUniform","_toVest","_preview","_acecheck"];

      _item = [_this,0,"",[""]] call BIS_fnc_param;

      _bool = [_this,1,false,[false]] call BIS_fnc_param;

      _ispack = [_this,2,false,[false]] call BIS_fnc_param;

      _ongun = [_this,3,false,[false]] call BIS_fnc_param;

      _override = [_this,4,false,[false]] call BIS_fnc_param;

      _toUniform = [_this,5,false,[false]] call BIS_fnc_param; //Manual override to send items specifically to a uniform.

      _toVest = [_this,6,false,[false]] call BIS_fnc_param; //Manual override to send items specifically to a vest

      _preview = [_this,7,false,[false]] call BIS_fnc_param;

      _acecheck = ["ACE_atropine","ACE_morphine","ACE_epinephrine","ACE_EarPlugs","ACE_fieldDressing","ACE_elasticBandage","ACE_quikclot","ACE_packingBandage","ACE_salineIV_250","ACE_salineIV_500","ACE_tourniquet","ACE_personalAidKit","ACE_bloodIV_250","ACE_bloodIV_500","ACE_plasmaIV_250","ACE_plasmaIV_500","ACE_surgicalKit"];

      //Some checks

      if (_item isEqualTo "") exitWith {};

      _isgun = false;

      _details = [_item] call life_fnc_fetchCfgDetails;

      if (count _details isEqualTo 0) exitWith {};

      if (_bool) then {

      switch (_details select 6) do {

      case "CfgGlasses": {

      if (_toUniform) exitWith {player addItemToUniform _item;};

      if (_toVest) exitWith {player addItemToVest _item;};

      if (_ispack) then {

      player addItemToBackpack _item;

      } else {

      if (_override) then {

      player addItem _item;

      } else {

      if (!(goggles player isEqualTo "")) then {

      removeGoggles player;

      };

      player addGoggles _item;

      };

      };

      };

      case "CfgVehicles": {

      if (!(backpack player isEqualTo "")) then {

      _items = (backpackItems player);

      removeBackpack player;

      };

      player addBackpack _item;

      clearAllItemsFromBackpack player;

      if (!isNil "_items") then {

      {[_x,true,true,false,true] call life_fnc_handleItem; } forEach _items;

      };

      };

      case "CfgMagazines": {

      if (_toUniform) exitWith {player addItemToUniform _item;};

      if (_toVest) exitWith {player addItemToVest _item;};

      if (_ispack) exitWith {player addItemToBackpack _item;};

      if(_item in _acecheck) then{player addItem _item;};

      player addMagazine _item;

      };

      case "CfgWeapons": {

      //New addition

      if (_toUniform) exitWith {player addItemToUniform _item;};

      if (_toVest) exitWith {player addItemToVest _item;};

      if (_ispack) exitWith {player addItemToBackpack _item;};

      if(_item in _acecheck) then {player addItem _item;};

      if ((_details select 4) in [1,2,4,5,4096]) then {

      if ((_details select 4) isEqualTo 4096) then {

      if ((_details select 5) isEqualTo -1) then {

      _isgun = true;

      };

      } else {

      _isgun = true;

      };

      };

      if (_isgun) then {

      if (!_ispack && _override) exitWith {}; //It was in the vest/uniform, try to close to prevent it overriding stuff... (Actual weapon and not an item)

      if (_item isEqualTo "MineDetector") then {

      player addItem _item;

      } else {

      player addWeapon _item;

      };

      } else {

      switch (_details select 5) do {

      case 0: {

      if (_ispack) then {

      player addItemToBackpack _item;

      } else {

      if (_override) then {

      player addItem _item;

      } else {

      if (_item in (assignedItems player)) then {

      player addItem _item;

      } else {

      player linkItem _item;

      };

      };

      };

      };

      case 605: {

      if (_ispack) then{

      player addItemToBackpack _item;

      } else {

      if (_override) then {

      player addItem _item;

      } else {

      if (headgear player isEqualTo _item && {!_preview}) then {

      player addItem _item;

      } else {

      if (!(headgear player isEqualTo "")) then {removeHeadGear player;};

      player addHeadGear _item;

      };

      };

      };

      };

      case 801: {

      if (_ispack) then {

      player addItemToBackpack _item;

      } else {

      if (_override) then {

      player addItem _item;

      } else {

      if (player isKindOf "Civilian") then {

      if (uniform player isEqualTo _item && {!_preview}) then {

      player addItem _item;

      } else {

      if (!(uniform player isEqualTo "")) then {

      _items = uniformItems player;

      removeUniform player;

      };

      player addUniform _item;

      if (!isNil "_items") then {

      {player addItemToUniform _x} forEach _items;

      };

      };

      } else {

      if (!(uniform player isEqualTo "")) then {

      _items = uniformItems player;

      removeUniform player;

      };

      if (!(player isUniformAllowed _item)) then {

      player forceAddUniform _item;

      } else {

      player addUniform _item;

      };

      if (!isNil "_items") then {

      {player addItemToUniform _x} forEach _items;

      };

      };

      };

      };

      };

      case 701: {

      if (_ispack) then {

      player addItemToBackpack _item;

      } else {

      if (_override) then{

      player addItem _item;

      } else {

      if (vest player isEqualTo _item && {!_preview}) then {

      player addItem _item;

      } else {

      if (!(vest player isEqualTo "")) then {

      _items = vestItems player;

      removeVest player;

      };

      player addVest _item;

      if (!isNil "_items") then {

      {[_x,true,false,false,true] spawn life_fnc_handleItem;} forEach _items;

      };

      };

      };

      };

      };

      case 201: {

      if (_ispack) then {

      player addItemToBackpack _item;

      } else {

      private "_type";

      _type = [_item,201] call life_fnc_accType;

      if (_ongun) then {

      switch (_type) do {

      case 1: { player addPrimaryWeaponItem _item; };

      case 2: { player addSecondaryWeaponItem _item; };

      case 3: { player addHandgunItem _item; };

      };

      } else {

      if (_override) then {

      player addItem _item;

      } else {

      private ["_wepItems","_action","_slotTaken"];

      _wepItems = switch (_type) do {case 1:{primaryWeaponItems player}; case 2:{secondaryWeaponItems player}; case 3:{handgunItems player}; default {["","",""]};};

      _slotTaken = false;

      if (!((_wepItems select 2) isEqualTo "")) then {_slotTaken = true;};

      if (_slotTaken) then {

      _action = [localize "STR_MISC_AttachmentMSG",localize "STR_MISC_Attachment",localize "STR_MISC_Weapon",localize "STR_MISC_Inventory"] call BIS_fnc_guiMessage;

      if (_action) then {

      switch (_type) do {

      case 1: {player addPrimaryWeaponItem _item;};

      case 2: {player addSecondaryWeaponItem _item;};

      case 3: {player addHandgunItem _item;};

      default {player addItem _item;};

      };

      } else {

      player addItem _item; //Add it to any available container

      };

      } else {

      switch (_type) do {

      case 1: {player addPrimaryWeaponItem _item;};

      case 2: {player addSecondaryWeaponItem _item;};

      case 3: {player addHandgunItem _item;};

      default {player addItem _item;};

      };

      };

      };

      };

      };

      };

      case 301: {

      if (_ispack) then {

      player addItemToBackpack _item;

      } else {

      private "_type";

      _type = [_item,301] call life_fnc_accType;

      if (_ongun) then {

      switch (_type) do {

      case 1: { player addPrimaryWeaponItem _item; };

      case 2: { player addSecondaryWeaponItem _item; };

      case 3: { player addHandgunItem _item; };

      };

      } else {

      if (_override) then {

      player addItem _item;

      } else {

      private ["_wepItems","_action","_slotTaken"];

      _wepItems = switch (_type) do {case 1:{primaryWeaponItems player}; case 2:{secondaryWeaponItems player}; case 3:{handgunItems player}; default {["","",""]};};

      _slotTaken = false;

      if (!((_wepItems select 1) isEqualTo "")) then {_slotTaken = true;};

      if (_slotTaken) then {

      _action = [localize "STR_MISC_AttachmentMSG",localize "STR_MISC_Attachment",localize "STR_MISC_Weapon",localize "STR_MISC_Inventory"] call BIS_fnc_guiMessage;

      if (_action) then {

      switch (_type) do {

      case 1: {player addPrimaryWeaponItem _item;};

      case 2: {player addSecondaryWeaponItem _item;};

      case 3: {player addHandgunItem _item;};

      default {player addItem _item;};

      };

      } else {

      player addItem _item; //Add it to any available container

      };

      } else {

      switch (_type) do {

      case 1: {player addPrimaryWeaponItem _item;};

      case 2: {player addSecondaryWeaponItem _item;};

      case 3: {player addHandgunItem _item;};

      default {player addItem _item;};

      };

      };

      };

      };

      };

      };

      case 101:{

      if (_ispack) then {

      player addItemToBackpack _item;

      } else {

      private "_type";

      _type = [_item,101] call life_fnc_accType;

      if (_ongun) then {

      switch (_type) do {

      case 1: { player addPrimaryWeaponItem _item; };

      case 2: { player addSecondaryWeaponItem _item; };

      case 3: { player addHandgunItem _item; };

      };

      } else {

      if (_override) then {

      player addItem _item;

      } else {

      private ["_wepItems","_action","_slotTaken"];

      _wepItems = switch (_type) do {case 1:{primaryWeaponItems player}; case 2:{secondaryWeaponItems player}; case 3:{handgunItems player}; default {["","",""]};};

      _slotTaken = false;

      if (!((_wepItems select 0) isEqualTo "")) then {_slotTaken = true;};

      if (_slotTaken) then {

      _action = [localize "STR_MISC_AttachmentMSG",localize "STR_MISC_Attachment",localize "STR_MISC_Weapon",localize "STR_MISC_Inventory"] call BIS_fnc_guiMessage;

      if (_action) then {

      switch (_type) do {

      case 1: {player addPrimaryWeaponItem _item;};

      case 2: {player addSecondaryWeaponItem _item;};

      case 3: {player addHandgunItem _item;};

      default {player addItem _item;};

      };

      } else {

      player addItem _item; //Add it to any available container

      };

      } else {

      switch (_type) do {

      case 1: {player addPrimaryWeaponItem _item;};

      case 2: {player addSecondaryWeaponItem _item;};

      case 3: {player addHandgunItem _item;};

      default {player addItem _item;};

      };

      };

      };

      };

      };

      };

      case 621: {

      if (_ispack) then {

      player addItemToBackpack _item;

      } else {

      if (_override) then {

      player addItem _item;

      } else {

      player linkItem _item;

      };

      };

      };

      case 616: {

      if (_ispack) then {

      player addItemToBackpack _item;

      } else {

      if (_override) then {

      player addItem _item;

      } else {

      player linkItem _item;

      };

      };

      };

      default {

      if (_ispack) then {

      player addItemToBackpack _item;

      } else {

      player addItem _item;

      };

      };

      };

      };

      };

      };

      } else {

      switch (_details select 6) do {

      case "CfgVehicles": {

      removeBackpack player;

      };

      case "CfgMagazines": {

      player removeMagazine _item;

      };

      case "CfgGlasses": {

      if (_item isEqualTo goggles player) then {

      removeGoggles player;

      } else {

      player removeItem _item;

      };

      };

      case "CfgWeapons": {

      if ((_details select 4) in [1,2,4,5,4096]) then {

      if ((_details select 4) isEqualTo 4096) then {

      if ((_details select 5) isEqualTo 1) then {

      _isgun = true;

      };

      } else {

      _isgun = true;

      };

      };


      if (_isgun) then {

      switch (true) do {

      case (primaryWeapon player isEqualTo _item) : {_ispack = false;};

      case (secondaryWeapon player isEqualTo _item) : {_ispack = false;};

      case (handgunWeapon player isEqualTo _item) : {_ispack = false;};

      case (_item in assignedItems player) : {_ispack = false;};

      default {_ispack = true;};

      };

      if (_item isEqualTo "MineDetector") then {

      player removeItem _item;

      } else {

      //Lovely code provided by [OCB]Dash

      private "_tmpfunction";

      _tmpfunction = {

      private ["_tWeapons","_tWeaponCount"];

      switch (true) do {

      case (_this in (uniformItems player)): {

      _tWeapons = (getWeaponCargo (uniformContainer player)) select 0;

      _tWeaponCount = (getWeaponCargo (uniformContainer player)) select 1;

      clearWeaponCargo (uniformContainer player);

      {

      _numVestWeps = _tWeaponCount select _forEachIndex;

      if (_x == _this) then

      {

      _numVestWeps = _numVestWeps - 1;

      };

      (uniformContainer player) addWeaponCargo [ _x,_numVestWeps];

      }forEach _tWeapons;

      };

      case (_this in (vestItems player)): {

      _tWeapons = (getWeaponCargo (vestContainer player)) select 0;

      _tWeaponCount = (getWeaponCargo (vestContainer player)) select 1;

      clearWeaponCargo (vestContainer player);

      {

      _numVestWeps = _tWeaponCount select _forEachIndex;

      if (_x == _this) then

      {

      _numVestWeps = _numVestWeps - 1;

      };

      (vestContainer player) addWeaponCargo [ _x,_numVestWeps];

      }forEach _tWeapons;

      };

      case (_this in (backpackItems player)): {

      _tWeapons = (getWeaponCargo (backpackContainer player)) select 0;

      _tWeaponCount = (getWeaponCargo (backpackContainer player)) select 1;

      clearWeaponCargo (backpackContainer player);

      {

      _numVestWeps = _tWeaponCount select _forEachIndex;

      if (_x == _this) then

      {

      _numVestWeps = _numVestWeps - 1;

      };

      (backpackContainer player) addWeaponCargo [ _x,_numVestWeps];

      }forEach _tWeapons;

      };

      };

      };

      if (_ispack) then {

      _item call _tmpfunction;

      } else {

      switch (true) do {

      case (_item in (uniformItems player)): {_item call _tmpfunction;};

      case (_item in (vestItems player)) : {_item call _tmpfunction;};

      case (_item in (backpackItems player)) : {_item call _tmpfunction;};

      default {player removeWeapon _item;};

      };

      };

      };

      } else {

      switch (_details select 5) do {

      case 0: {player unassignItem _item; player removeItem _item;};

      case 605: {if (headgear player isEqualTo _item) then {removeHeadgear player} else {player removeItem _item};};

      case 801: {if (uniform player isEqualTo _item) then {removeUniform player} else {player removeItem _item};};

      case 701: {if (vest player isEqualTo _item) then {removeVest player} else {player removeItem _item};};

      case 621: {player unassignItem _item; player removeItem _item;};

      case 616: {player unassignItem _item; player removeItem _item;};

      default {

      switch (true) do {

      case (_item in primaryWeaponItems player) : {player removePrimaryWeaponItem _item;};

      case (_item in handgunItems player) : {player removeHandgunItem _item;};

      default {player removeItem _item;};

      };

      };

      };

      };

      };

      };

      };


      fn_weaponShopBuySell.sqf

      #include "..\..\script_macros.hpp"

      /*

      File: fn_weaponShopBuySell.sqf

      Author: Bryan "Tonic" Boardwine

      Description:

      Master handling of the weapon shop for buying / selling an item.

      */

      disableSerialization;

      private ["_price","_item","_itemInfo","_bad"];

      if ((lbCurSel 38403) isEqualTo -1) exitWith {hint localize "STR_Shop_Weapon_NoSelect"};

      _price = lbValue[38403,(lbCurSel 38403)]; if (isNil "_price") then {_price = 0;};

      _item = lbData[38403,(lbCurSel 38403)];

      _itemInfo = [_item] call life_fnc_fetchCfgDetails;

      _bad = "";

      if ((_itemInfo select 6) != "CfgVehicles") then {

      if ((_itemInfo select 4) in [4096,131072]) then {

      if (!(player canAdd _item) && (uiNamespace getVariable ["Weapon_Shop_Filter",0]) != 1) exitWith {_bad = (localize "STR_NOTF_NoRoom")};

      };

      };

      if (_bad != "") exitWith {hint _bad};

      if ((uiNamespace getVariable ["Weapon_Shop_Filter",0]) isEqualTo 1) then {

      CASH = CASH + _price;

      [_item,false] call life_fnc_handleItem;

      hint parseText format [localize "STR_Shop_Weapon_Sold",_itemInfo select 1,[_price] call life_fnc_numberText];

      [nil,(uiNamespace getVariable ["Weapon_Shop_Filter",0])] call life_fnc_weaponShopFilter; //Update the menu.

      } else {

      private _altisArray = ["Land_u_Barracks_V2_F","Land_i_Barracks_V2_F"];

      private _tanoaArray = ["Land_School_01_F","Land_Warehouse_03_F","Land_House_Small_02_F"];

      private _hideoutObjs = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;

      private _hideout = (nearestObjects[getPosATL player,_hideoutObjs,25]) select 0;

      if (!isNil "_hideout" && {!isNil {group player getVariable "gang_bank"}} && {(group player getVariable "gang_bank") >= _price}) then {

      _action = [

      format [(localize "STR_Shop_Virt_Gang_FundsMSG")+ "<br/><br/>" +(localize "STR_Shop_Virt_Gang_Funds")+ " <t color='#8cff9b'>$%1</t><br/>" +(localize "STR_Shop_Virt_YourFunds")+ " <t color='#8cff9b'>$%2</t>",

      [(group player getVariable "gang_bank")] call life_fnc_numberText,

      [CASH] call life_fnc_numberText

      ],

      localize "STR_Shop_Virt_YourorGang",

      localize "STR_Shop_Virt_UI_GangFunds",

      localize "STR_Shop_Virt_UI_YourCash"

      ] call BIS_fnc_guiMessage;

      if (_action) then {

      hint parseText format [localize "STR_Shop_Weapon_BoughtGang",_itemInfo select 1,[_price] call life_fnc_numberText];

      _funds = group player getVariable "gang_bank";

      _funds = _funds - _price;

      group player setVariable ["gang_bank",_funds,true];

      [_item,true] spawn life_fnc_handleItem;

      if (life_HC_isActive) then {

      [1,group player] remoteExecCall ["HC_fnc_updateGang",HC_Life];

      } else {

      [1,group player] remoteExecCall ["TON_fnc_updateGang",RSERV];

      };


      } else {

      if (_price > CASH) exitWith {hint localize "STR_NOTF_NotEnoughMoney"};

      hint parseText format [localize "STR_Shop_Weapon_BoughtItem",_itemInfo select 1,[_price] call life_fnc_numberText];

      CASH = CASH - _price;

      [_item,true] spawn life_fnc_handleItem;

      };

      } else {

      if (_price > CASH) exitWith {hint localize "STR_NOTF_NotEnoughMoney"};

      hint parseText format [localize "STR_Shop_Weapon_BoughtItem",_itemInfo select 1,[_price] call life_fnc_numberText];

      CASH = CASH - _price;

      [_item,true] spawn life_fnc_handleItem;

      };

      };

      [0] call SOCK_fnc_updatePartial;

      [] call life_fnc_saveGear;

      Danach läuft es , ich bitte euch, mach trotzdem ein Backup bevor ihr das Übernimmt

    • MixedOperator
      Schüler
      Reaktionen
      57
      Trophäen
      9
      Beiträge
      103
      Bilder
      6
      • 23. September 2018 um 20:23
      • #43

      Wir haben das Gleiche gemacht aber ergendwie wenn man Jetzt „Waffen“ beim Rebelen Kauft werden die nicht Hinzugefügt.. also nicht im Inventar sondern weg, someone Help about that ?

    • Harti2000
      Kenner
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      319
      Bilder
      74
      • 29. September 2018 um 03:21
      • #44

      könntest du uns die fn_weaponSHopBuySell.sqf an hängen und die
      fn_handleItem.sqf
      so wie die conif vom shop

      MixedOperator

    Registrieren oder Einloggen

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

    Registrieren

    Ähnliche Themen

    • [UPDATE] ACE 3 Items kaufbar machen | by Jay

      • Jay
      • 20. Juli 2017 um 18:51
      • Tutorials & Releases
    • Kann ACE 3 Items nicht kaufen

      • Roy Mustang
      • 19. August 2017 um 23:59
      • Hilfeforum
    • Ace Sachen Kaufbar Machen

      • Inge Burg
      • 16. August 2017 um 07:47
      • Hilfeforum
    • Ace Kabelbinder

      • DucMaster
      • 25. Juli 2017 um 21:11
      • Hilfeforum
    • ACE 3 Problem | Items verschwinden

      • Schorner
      • 3. Oktober 2016 um 04:58
      • Hilfeforum

    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™